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

2023-11-17 15:31:38 浏览数 (2)

在上一篇数据库提取教程中,小编教大家提取了“肺栓塞”患者的实验室指标,具体步骤可以参考MIMIC数据库提取教程-提取某种疾病下的实验室指标。

在本期数据库提取教程,小编依旧以“肺栓塞”患者为例,教大家如何提取患者的人口统计学指标。

在mimiciv数据库中,患者的人口统计学信息主要分为两部分。

第一部分为患者的“语言”,“种族”,“婚姻状态”这几种信息,这些信息直接记录在了hosp模块的admissions表中,大家直接提取即可。

第二部分为患者的“年龄”,“身高”,“体重”这几个信息,这几个信息都不可以直接从表中直接提取,而是要经过计算才能获取患者正确的指标。

本期小编就教大家如何在mimiciv数据库中获取患者的“年龄”,“身高”,“体重”这几个很重要的指标。

一,获取患者的真实年龄

mimiciv数据库为了保护患者的隐私,并没有直接记录患者的真实年龄,patients表中记录了两个关于年龄的字段:

anchor_age:患者相对anchor_year的相对年龄。

anchor_year:计算患者年龄的基准年份。

anchor_age并不是患者的入院时的真实年龄,而是根据anchor_year做了偏移,真实年龄的计算公式是:

患者的真实年龄=anchor_age 患者的入院时间-anchor_year

上图中的ROUND函数是将年龄转为2位小数。

上图小编使用到了DATETIME_DIFF函数,该函数为mimiciv官方函数,作用是求两个时间的差,这个函数小编是安装在mimiciv_derived模块中,如果大家不是安装在这个模块中,请把函数前缀替换成自己的模块名哈。

代码语言:javascript复制
SELECT    ad.subject_id,    -- 患者表中记录的是年龄是脱敏数据,是一个相对年龄,必须经过转换才可得出患者的真实年龄    -- 年龄计算公式为 患者相对年龄 患者入院时间年份-偏移年份    MAX(ROUND(pa.anchor_age   mimiciv_derived.DATETIME_DIFF(ad.admittime,     mimiciv_derived.DATETIME(pa.anchor_year, 1, 1, 0, 0, 0), 'YEAR'),2)) AS age    FROM admissions ad, patients pa    WHERE ad.subject_id = pa.subject_id    GROUP BY    ad.subject_id

二,获取患者的身高

mimiciv数据库中患者的身高数据存放在icu模块的chartevents表中,并且身高会使用两种单位进行记录,分别是英寸跟厘米,为了数值的正确,必须将单位统一,这里小编会将使用英寸的测量数据转成厘米。

代码语言:javascript复制
-- MIMIC中测量身高有两种单位,分别是英寸跟厘米,两种都要统计,最终单位统一转成厘米base_ht AS (    SELECT        c.subject_id        -- 单位统一转成厘米,取最大值        ,MAX(          CASE WHEN c.itemid = 226707 THEN ROUND(CAST(c.valuenum * 2.54 AS NUMERIC), 2)          ELSE ROUND(CAST(c.valuenum AS NUMERIC), 2) END) as height    FROM mimiciv_icu.chartevents c    WHERE c.valuenum IS NOT NULL        -- 226707身高测试使用的是英寸,226730使用的是厘米        AND c.itemid in(226707,226730)    GROUP BY c.subject_id)

三,获取患者的体重

mimiciv数据库中患者的体重数据也存放在icu模块的chartevents表中,患者的体重数据有两种类型,分别是入院时测量的体重跟医院每天的测量体重。小编这里取的是患者两种体重的平均值。

代码语言:javascript复制
-- 测量体重,测量体重有两种类型,一种是患者入院时测量,另一种是在ICU中每日的测量值,-- 我们直接取平均值base_wt AS (    SELECT    c.subject_id,    ROUND(CAST(AVG(c.valuenum) AS NUMERIC),2) AS weight    FROM mimiciv_icu.chartevents c    WHERE c.valuenum IS NOT NULL        AND c.itemid IN(226512, 224639)        AND c.valuenum > 0    GROUP BY c.subject_id    )

最终提取出来的“肺栓塞”患者的人口统计学信息如下,小编为了大家学习的连贯性,直接把人口统计学指标加在了原有的指标上面。

0 人点赞