MIMIC数据库, 如何检索成年患者的收缩压?
从mimiciv_icu.chartevents表获取收缩压
-- 检索成年患者的收缩压
-- Retrieves the systolic blood pressure for adult patients
WITH agetbl AS
(
SELECT ad.subject_id
FROM mimiciv_hosp.admissions ad
INNER JOIN mimiciv_hosp.patients p ON ad.subject_id = p.subject_id
INNER JOIN mimiciv_derived.age da ON ad.subject_id = da.subject_id
where
-- filter to only adults
-- 仅筛选到成年人
da.age > 15
-- group by subject_id to ensure there is only 1 subject_id per row
-- 按subject_id分组以确保每行只有1个subject_id
group by ad.subject_id
)
, sysbp as -- 收缩压
(
SELECT ce.subject_id, ce.valuenum
FROM mimiciv_icu.chartevents ce
INNER JOIN agetbl ON ce.subject_id = agetbl.subject_id
WHERE itemid IN
(
6 -- ABP [Systolic]ABP [收缩压]
, 51 -- Arterial BP [Systolic] 动脉血压 [收缩压]
, 455 -- NBP [Systolic] 非侵入式血压 [收缩压]
, 6701 -- Arterial BP #2 [Systolic]动脉血压 #2 [收缩压]
, 220050 -- Arterial Blood Pressure systolic 动脉收缩压
, 220179 -- Non Invasive Blood Pressure systolic) 无创血压(收缩压)
)
)
SELECT width_bucket(s.valuenum, 0, 300, 300) AS systolic_blood_pressure, COUNT(*) AS count
FROM sysbp s
GROUP BY systolic_blood_pressure
ORDER BY systolic_blood_pressure;
让我们逐行解释每部分代码:
- agtbl(成年患者表):这部分代码从不同的表中获取成年患者的信息。首先,从
admissions
表中获取入院信息,然后通过与patients
表和age
表的连接,筛选出年龄大于15岁的成年患者。最后,按照subject_id
进行分组,确保每行只有一个subject_id
。
SELECT ad.subject_id
: 选择admissions
表中的subject_id
字段。FROM mimiciv_hosp.admissions ad
: 从admissions
表中选择数据,并将其命名为ad
。INNER JOIN mimiciv_hosp.patients p ON ad.subject_id = p.subject_id
: 通过subject_id
字段将admissions
表和patients
表连接起来。INNER JOIN mimiciv_derived.age da ON ad.subject_id = da.subject_id
: 通过subject_id
字段将admissions
表和age
表连接起来。WHERE da.age > 15
: 筛选出年龄大于15岁的成年患者。GROUP BY ad.subject_id
: 按照subject_id
字段进行分组,确保每行只有一个subject_id
。
2. sysbp(收缩压表):这部分代码从chartevents
表中获取收缩压数据。通过与上一步筛选出的成年患者表agtbl
的连接,仅保留成年患者的收缩压数据。筛选条件是itemid
为指定的收缩压相关项,比如动脉血压、非侵入式血压等。
SELECT ce.subject_id, ce.valuenum
: 选择chartevents
表中的subject_id
和valuenum
字段。FROM mimiciv_icu.chartevents ce
: 从chartevents
表中选择数据,并将其命名为ce
。INNER JOIN agetbl ON ce.subject_id = agetbl.subject_id
: 通过subject_id
字段将chartevents
表和上一步得到的成年患者表agtbl
连接起来。WHERE itemid IN (...)
: 筛选出指定的收缩压相关项。
3. 最终查询:这部分代码对收缩压数据进行分组和计数。使用width_bucket
函数将收缩压值分成300个范围,然后计算每个范围内的记录数量。最后,按照收缩压值的范围排序输出结果。
SELECT width_bucket(s.valuenum, 0, 300, 300) AS systolic_blood_pressure
: 使用width_bucket
函数将收缩压值分成300个范围,并将结果命名为systolic_blood_pressure
。COUNT(*) AS count
: 计算每个范围内的记录数量,并将结果命名为count
。FROM sysbp s
: 从上一步得到的收缩压表sysbp
中选择数据,并将其命名为s
。GROUP BY systolic_blood_pressure
: 按照收缩压值的范围进行分组。ORDER BY systolic_blood_pressure
: 按照收缩压值的范围排序输出结果。
mimic数据库使用介绍:
MIMIC数据库提取教程-提取某种疾病下的患者人口统计学指标
MIMIC-IV数据库衍生表格mimic_derived配置和使用
MIMIC-IV数据分析 - 使用Python进行心脏病案例分析
MIMIC-IV数据分析 - 使用Python进行心脏病案例分析(二)
MIMIC-IV数据分析 - 使用R语言探索icustay_detail视图
MIMIC数据提取教程 - 如何提取患者入ICU后第一个WBC和SpO2值
MIMIC数据提取教程 - 提取入住ICU第一天生命体征(血氧饱和度、血压、呼吸、体温)
MIMIC数据提取教程 - 提取血管紧张素受体阻滞剂(ARB)药物
MIMIC-IV-ED适合科研小白的安装方法(提供数据集下载)
MIMIC数据库, 使用Python研究万古霉素的剂量 (一)
MIMIC-IV官方视图解析 - cardiac_marker心脏标记表