白鲸鱼🐳
发布于

MIMIC数据库, 如何统计特定年龄以上具有两个特定icd代码的患者记录数?

注意是:具有两个特定icd代码(即两种疾病)

 

上篇文章我们讲了MIMIC数据库, 如何统计特定icd代码超过特定年龄的患者住院记录数?

这里很类似, 不同的是需要查询两个特定icd代码(即两种疾病)

 

其实前面都一样,不同的是我们需要再增加一个子查询(虚拟表)

-- Count the number of patients with two specific icd9 codes above a certain age
-- 统计特定年龄以上具有两个特定icd代码的患者记录数
WITH agetbl AS 
	(
	SELECT ad.subject_id,
	-- 患者表中记录的是年龄是脱敏数据,是一个相对年龄,必须经过转换才可得出患者的真实年龄
    -- 年龄计算公式为 患者相对年龄+患者入院时间年份-偏移年份
    MAX(ROUND(p.anchor_age + mimiciv_derived.DATETIME_DIFF(ad.admittime, 
    mimiciv_derived.DATETIME(p.anchor_year, 1, 1, 0, 0, 0), 'YEAR'),2)) AS age 
	FROM mimiciv_hosp.admissions ad 
	INNER JOIN mimiciv_hosp.patients p 
	ON ad.subject_id = p.subject_id 
	GROUP BY ad.subject_id
	), tbl01 as (

SELECT dia.subject_id, age
from mimiciv_hosp.diagnoses_icd dia
INNER JOIN agetbl dt ON dia.subject_id = dt.subject_id
WHERE dia.icd_code
-- 278% relates to obesity 与肥胖症相关
LIKE '278%'
AND age > 40
GROUP BY dia.subject_id, dt.age)

SELECT dib.subject_id, COUNT(DISTINCT dib.hadm_id) AS "Obesity_vs_Hypertension_Age_40+", tbl01.age
from tbl01 INNER JOIN mimiciv_hosp.diagnoses_icd dib ON tbl01.subject_id = dib.subject_id
-- 401% relates to hypertension 与高血压有关
WHERE dib.icd_code LIKE '401%'
AND age > 40
GROUP BY dib.subject_id, tbl01.age

我们来看看代码解释:

这段代码的功能是统计年龄大于40岁且同时患有肥胖症(ICD代码以'278%'开头)和高血压(ICD代码以'401%'开头)的患者记录数。

首先,通过使用两个公共表达式(CTE)agetrbltbl01来创建必要的数据集。agetrbl用于计算患者的真实年龄,其中包括患者的相对年龄和入院时间。tbl01则用来筛选出年龄大于40岁且患有肥胖症的患者。

在主查询中,通过将tbl01与诊断表diagnoses_icd连接,筛选出同时患有高血压的患者。最后,利用COUNT(DISTINCT dib.hadm_id)来计算符合条件的患者数量,并按照患者ID和年龄进行分组统计。

  1. WITH agetbl AS: 使用WITH语句创建一个公共表达式(CTE)agetrbl,用于存储计算患者真实年龄所需的数据。
  2. MAX(ROUND(p.anchor_age + mimiciv_derived.DATETIME_DIFF(ad.admittime, mimiciv_derived.DATETIME(p.anchor_year, 1, 1, 0, 0, 0), 'YEAR'),2)) AS age: 计算患者的真实年龄,通过患者的相对年龄、入院时间和偏移年份的差异来计算。
  3. INNER JOIN mimiciv_hosp.patients p ON ad.subject_id = p.subject_id: 通过患者ID将admissions表和patients表进行内连接,以获取患者的信息。
  4. GROUP BY ad.subject_id: 将结果按照患者ID进行分组,以便后续统计每位患者的年龄信息。
  5. tbl01 as (SELECT dia.subject_id, age from mimiciv_hosp.diagnoses_icd dia INNER JOIN agetbl dt ON dia.subject_id = dt.subject_id WHERE dia.icd_code LIKE '278%' AND age > 40 GROUP BY dia.subject_id, dt.age): 创建名为tbl01的临时表,筛选出年龄大于40岁且患有肥胖症的患者信息。
  6. SELECT dib.subject_id, COUNT(DISTINCT dib.hadm_id) AS "Obesity_vs_Hypertension_Age_40+", tbl01.age from tbl01 INNER JOIN mimiciv_hosp.diagnoses_icd dib ON tbl01.subject_id = dib.subject_id: 从临时表tbl01diagnoses_icd表中选择患者ID、满足条件的患者入院ID数量以及患者年龄信息。
  7. WHERE dib.icd_code LIKE '401%' AND age > 40: 筛选出患有高血压(ICD代码以'401%'开头)且年龄大于40岁的患者。
  8. GROUP BY dib.subject_id, tbl01.age: 将结果按照患者ID和年龄进行分组,以统计符合条件的患者数量。

 

mimic数据库使用介绍:

MIMIC-IV,重症医学数据库介绍和使用说明

MIMIC数据库下载权限申请保姆级教程(上)

MIMIC数据库下载权限申请保姆级教程(下)

CITI 课程考试补充答案

​CITI 课程考试补充答案(二)

 

MIMIC数据库安装保姆级教程(上)

MIMIC数据库安装保姆级教程(下)

安装常见问题(一)

安装常见问题(二)

MIMIC-IV数据库安装常见问题(三)

MIMIC-IV数据库安装常见问题(四)

 

MIMIC数据库,常用查询指令SQL基础(一)

MIMIC数据库,常用查询SQL基础(二)

MIMIC数据库提取教程-提取某种疾病下的实验室指标

MIMIC数据库提取教程-提取某种疾病下的患者人口统计学指标

MIMIC数据库官方函数的安装与使用

手把手教会你认识跟安装MIMIC-IV物化视图

【重要】 MIMIC数据集直接下载!

Python连接MIMIC-IV数据库并图表可视化

MIMIC-IV数据库衍生表格mimic_derived配置和使用

MIMIC-IV 数据查询加速教程

MIMIC数据提取教程 - 如何提取外科患者信息

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

MIMIC数据提取教程 - 官方提供的时间函数(一)

MIMIC-IV数据分析 - 使用Python进行心脏病案例分析

MIMIC-IV数据分析 - 使用Python进行心脏病案例分析(二)

MIMIC-IV数据分析 - 使用R语言探索icustay_detail视图

MIMIC数据提取教程 - 如何提取患者入ICU后第一个WBC和SpO2值

MIMIC数据提取教程 - 如何提取患有肥胖症疾病的患者?

MIMIC数据提取教程 - 提取入住ICU第一天生命体征(血氧饱和度、血压、呼吸、体温)

MIMIC数据提取教程 - 提取血管紧张素受体阻滞剂(ARB)药物

MIMIC-IV数据库,如何提取器官衰竭AKI的尿量指标?

MIMIC-IV-ED适合科研小白的安装方法(提供数据集下载)

MIMIC-IV-ED数据集介绍

MIMIC数据库, 使用Python研究万古霉素的剂量 (一)

MIMIC-IV数据库, 如何提取患者ICU生存时间?

MIMIC-IV官方视图解析 - cardiac_marker心脏标记表

MIMIC-IV官方视图解析-序贯器官衰竭评分(SOFA)

MIMIC-IV官方视图解析-格拉斯哥昏迷评分(GCS)

浏览 (258)
点赞 (1)
收藏
评论