前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MIMIC数据库提取教程-提取某种疾病下的患者人口统计学指标

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

原创
作者头像
科研收录
发布2023-11-17 15:31:38
2250
发布2023-11-17 15:31:38
举报
文章被收录于专栏:mimic数据库mimic数据库

在上一篇数据库提取教程中,小编教大家提取了“肺栓塞”患者的实验室指标,具体步骤可以参考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    )

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

图片
图片

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档