MIMIC数据库数据提取教程-提取实验室或生命体征指标

视图安装好之后,我们利用blood_differentialchemistryenzyme等视图,配合常用的查询语句,便可以提取患者在每次入院时,整个住院过程中的实验室或者生命体征指标。但是如果我们所要提取的指标不在视图中,我们应该如何提取呢?

实验室测量指标都存在于mimic_hosp.labevents表中,表中需要注意的是specimen_id字段。specimen_id是每次收取的血液或者尿液样本等的唯一标识。(ps: 为了减少误差,对于同一个样本往往会测量多次,官方视图中是以多次测量中的最大值作为该样本的指标测量值。)

所以我们应该以specimen_id进行分组,再取每个分组中valuenum的最大值,因此,我们可以看到实验室指标的视图中,会出现大量的group by(分组)和max(取最大值)等函数。

下面我们用一个案例来进行说明:

如何提取患者血液样本中的lymphocytes

1. 首先通过lymphocytes来查询对应的itemid

这时我们要用到入门语句中的字符串匹配

select * from d_labitems where label ~* 'lymphocytes'

查询结果如下,我们根据需要,选择血液样本中的lymphocytes,对应的itemid5124451245

 

图片

2. 首先我们根据每个患者(subject_id),在每次入院(hadm_id)时同一时间收集的样本(charttime,specimen_id)进行分组,然后取每个分组中多次测量的最大值。

用SQL表示上述意思就是:使用group by,对subject_id,hadm_id,charttime,specimen_id进行分组,用max取每组中的最大值。

select subject_id,hadm_id,charttime,specimen_id,
max(valuenum) valuenum from 
mimic_hosp.labevents 
where itemid in (51244,51245) 
group by subject_id,hadm_id,charttime,specimen_id

注意:51244,51245的单位是相同的,因此我们可以直接max(valuenum)取最大值,如果需要提取的指标对应的多个itemid单位不同时,提取方法见后文。所以建议大家提取前先确认itemid对应的单位是否一致,是否需要换算!

这里可以看到小编在group by后写了多个字段,这是由于SQL语法规定:select中除聚合函数(maxavgmin等)中的字段,都必须在group by中出现。

换句话说就是如果我们要select subject_idhadm_idcharttimespecimen_id的话,就需要group by subject_idhadm_idcharttimespecimen_id

用如下简单的示意图来说明,当我们group by subject_idhadm_idcharttimespecimen_id时,只有这四个字段都相同的才会聚合,若specimen_id不相同时,就会被分到另外一组

 

图片

 上述SQL查询结果如下,我们可以看到查出了相同specimen_id下的最大值,也就是患者每次测量的lymphocytes

 

图片

 3. 当所提取指标对应的多个itemid的单位不同时,我们应该怎么提取?

比如Absolute Lymphocyte Count对应的itemid5113352769(用字符串匹配查询)

图片

我们可以通过以下代码查看itemid所对应的单位 

-- 只需要修改itemid即可
select itemid, valueuom from labevents where itemid in (51133,52769) and valueuom is not null GROUP BY itemid, valueuom;

图片

可以看到itemid52769时,对应的单位是个/ul,换算成K/ul时需要除以1000

然后我们使用case when语句,当itemid52769时值除以1000,当itemid51133时用原值

 

-- 对照上文中提取lymphocytes的SQL
-- 我们只是在max里加了一个case when语句
select subject_id,hadm_id,charttime,specimen_id,
max(
  CASE
      WHEN (itemid = 51133) THEN valuenum
      WHEN (itemid = 52769) THEN (valuenum / (1000.0))
  END) AS absolute_lymphocytes_count from 
mimic_hosp.labevents 
where itemid in (51133,52769) 
group by subject_id,hadm_id,charttime,specimen_id

查询结果如下

 

图片


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

 

 

### 如何从MIMIC-IV数据库提取冠心病相关数据 为了从 MIMIC-IV 数据库提取与冠心病相关的数据,需遵循特定的方法论并理解该数据库结构。MIMIC-IV 来自于 EHR 和 ICU 两个院内数据库系统,并被划分为 hosp 和 icu 两个主要模块[^1]。 #### 理解数据库架构 - **HOSP 模块**:包含了医院层面的数据,如患者的诊断、手术过程等。 - **ICU 模块**:专注于重症监护病房内的详细生理参数和其他治疗措施。 #### 提取冠心病相关数据的具体步骤 ##### 定义目标变量 首先定义哪些字段和表单中的信息能够代表冠心病状况。通常情况下,可以从以下几个方面入手: - 使用 ICD 编码识别患有冠状动脉疾病 (CAD) 的病人。国际疾病分类第十版 (ICD-10-CM) 中用于描述 CAD 的编码范围为 I20-I25。 ```sql SELECT subject_id, hadm_id, seq_num, icd_code, short_title FROM diagnoses_icd WHERE icd_code LIKE 'I2%' ; ``` 此 SQL 查询语句将返回所有带有指定 ICD 代码前缀的心脏病病例列表。 ##### 获取额外临床特征 除了基本的诊断外,还应考虑收集更多有助于全面了解病情的信息,比如实验室检测结果(例如肌钙蛋白水平)、影像学报告(如心脏超声波图像),以及其他可能影响预后的因素。 对于那些接受过心电图检查有肌钙蛋白测量值的患者,可以通过查询相应的子集来获取这些细节: ```sql WITH ekg_patients AS ( SELECT DISTINCT subject_id FROM procedures_icd WHERE icd_code IN ('89.5', '37.22') -- 假设这里使用的是ICD-9编码作为例子; 实际应用时应当转换成最新的标准. ), troponin_levels AS ( SELECT subject_id, charttime, value, valuenum FROM labevents WHERE itemid = 227464 -- 这里假设227464对应着血清肌钙蛋白T项目ID;实际环境中需要确认具体映射关系. ) SELECT * FROM ekg_patients ep JOIN troponin_levels tl ON ep.subject_id = tl.subject_id; ``` 上述脚本构建了一个临时视图表 `ekg_patients` ,它列出了曾经进行过心导管插入术其他形式心血管介入操作的所有个体。接着通过连接到另一个包含肌钙蛋白浓度读数的结果集中,最终得到一份综合性的记录集合。 ##### 考虑时间和空间维度的影响 考虑到患者可能会经历多次住院事件,在分析过程中也需要注意区分不同的就诊周期及其对应的医疗行为模式变化趋势。此外,如果研究目的是探讨某些特殊条件下冠心病的发展规律,则还需特别留意地理位置分布特性等因素所带来的潜在差异性表现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值