MIMIC数据库数据提取教程-提取患者首次入ICU信息

这篇博客介绍了如何利用SQL从MIMIC数据库的icustays表中提取患者首次进入ICU的信息。通过row_number()函数,对每个患者按入院时间intime排序并生成排名,然后选取stay_order为1的记录,从而得到患者首次入ICU的详细数据。这种方法使用了with子句创建临时表,方便进一步的数据关联查询。
摘要由CSDN通过智能技术生成

更多关于mimic数据库的知识,欢迎大家关注我的公众号:科研杂录

MIMIC数据库中,一个患者在住院期间往往会多次入ICU,那么如何提取患者首次入ICU的信息?

思路:患者入ICU信息存储在mimic_icu.icustays表中,intime为患者入ICU的时间。我们的思路是根据患者的subject_id分组,然后以intime升序排序,看每行记录对应的是该患者第几次入ICU,最后取第一次入ICU的,即为首次入ICU信息。

用示意图简单表示,比如233患者三次入ICU,我们需要根据入ICU时间intime从小到大生成排名,也就是入ICU顺序。

图片

为了实现这个思路,我们需要用到row_number()排名函数,用SQL实现如下 

 

select subject_id,hadm_id, stay_id, intime, 
row_number() over (PARTITION by subject_id ORDER BY intime) as stay_order 
from mimic_icu.icustays;

这个SQL的意思是:subject_id分组,每组以intime从小到大排序,生成排名,比如该subject_id下最小的intime所在的这一行,排名设为1。

查询结果如下:

图片

 

接着,我们需要从这个查询的结果中取stay_order=1的,那么如何从这些查询结果中再查询数据呢?有很多种方式都可以实现,比如将上述查询的结果创建成表、物化视图、或者用子查询,这里介绍一个比较优雅的常用的方案,with子句。

with可以将查询结果作为一个临时表,供后续查询复用该临时表,这样可以将复杂的大型查询分解为多次简单查询。

用SQL实现提取首次入ICU信息:

with stay_order_view as (
select subject_id,hadm_id, stay_id, intime, 
row_number() over (PARTITION by subject_id ORDER BY intime) as stay_order 
from mimic_icu.icustays
)
select * from stay_order_view where stay_order = 1

在这里,我们将前文中生成患者入ICU顺序的语句放到stay_order_view这个临时表中,然后从stay_order_view中获取in_order=1的所有数据,查询结果如下,可以看到提取出了患者首次入ICU的stay_id

然后如果要获取患者首次入ICU的其他信息,只需要用该查询结果中的stay_id或者hadm_id在其他表进行关联查询即可

图片


更多关于临床公共数据库挖掘相关知识可同时关注以下公众号 

 

 

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值