从MIMIC学习组织自己的数据

news2024/11/22 23:13:12

从MIMIC学习组织自己的数据

相对于SEER数据库(我们得到的是几乎可以直接进行分析的数据),MIMIC 数据库在数据采集后虽然经过了一定的处理,但是保留了数据库原始的样貌,所以我们除了对MIMIC数据进行分析外,还可以从MIMIC数据库中学习怎样设计数据库,怎样组织数据,用在我们构建自己的数据库的过程中。
在这里插入图片描述

存储数据的组织形式:星状设计、长表和宽表

  • MIMIC数据库属于关系型数据库,是星状结构(star schema)设计,MIMIC数据库中admission 表格是核心,是中心表格,包含了可供分析的信息,其余表格为附属表格,包含的信息是对主表格信息的注释、分类和描述,可以用来分组、过滤主表格信息。主附表格通过共同的ID将相关得数据联系在一起。
    • 这是我们可以借鉴的信息。我们可以将数据库设计为星状结构,来组织我们的数据。
    • 查询:使用SQL的join命令将分散在多个表格中的相关的数据拼接在一起,其中的一种变化是with临时表形成过渡表格,对某一个表格中的数据进行初步的处理,然后在主查询中对数据进行二次处理(用join语句拼接)。以MIMIC数据库为例,假设我们想要查询每个住院患者的年龄、性别、入院类型、入院诊断和死亡时间(如果有的话)。我们需要从多个表格中获取这些数据,如patients, admissions, icustays等。我们可以用以下SQL语句来实现:
 --创建一个临时表格,计算每个患者的年龄
with age as (
  select
    p.subject_id,
    p.gender,
    a.hadm_id,
    a.admittime,
    a.dischtime,
    a.deathtime,
    a.admission_type,
    a.diagnosis,
    -- 计算年龄
    round((cast(a.admittime as date) - cast(p.dob as date))/365.242, 2) as age
  from patients p
  inner join admissions a
  on p.subject_id = a.subject_id
)

-- 主查询,使用join语句拼接临时表格和其他表格
select
  a.subject_id,
  a.gender,
  a.hadm_id,
  a.admittime,
  a.dischtime,
  a.deathtime,
  a.admission_type,
  a.diagnosis,
  -- 处理年龄异常值
  case
    when a.age > 89 then '>89'
    else cast(a.age as varchar)
  end as age,
  i.first_careunit as icu
from age a
left join icustays i
on a.hadm_id = i.hadm_id
order by a.subject_id, a.hadm_id;
  • 有的表属于纵向结构,代表记录条目的ID列是有重复的。每个表格内的变量的组织也是有主有次,往往有且只有一个变量是核心变量,其他是都是符号关键变量的注释或者解释,这种结构组织的数据,便于录入,但是不便于分析。有些临床数据可以使用这种形式来进行组织。比如MIMIC数据库中有多个长表格,例如:

    • chartevents: 包含患者在ICU期间的各种生理测量和护理记录
    • labevents: 包含患者在住院期间的各种实验室检查结果
    • microbiologyevents: 包含患者在住院期间的各种微生物检查结果
    • outputevents: 包含患者在ICU期间的各种出液记录
    • inputevents_cv: 包含使用CareVue系统的患者在ICU期间的各种入液记录
    • inputevents_mv: 包含使用MetaVision系统的患者在ICU期间的各种入液记录
    • procedureevents_mv: 包含使用MetaVision系统的患者在ICU期间的各种操作记录
    • 如何查询,需要将多条变量变成一条变量,通过取mean,max等。以MIMIC数据库为例,假设我们想要从chartevents表中提取以下信息:每个患者在ICU期间的平均心率(心率的item_id为211);每个患者在ICU期间的平均血压(血压的item_id为220045);每个患者在ICU期间的平均体温(体温的item_id为223761);每个患者的性别(性别在patients表中).我们可以用以下SQL语句来实现:
-- 创建一个临时表格,筛选出心率、血压和体温的数据
with vital_signs as (
  select
    subject_id,
    itemid,
    valuenum
  from chartevents
  where itemid in (211, 220045, 223761)
)

-- 主查询,使用join语句连接临时表格和patients表,使用aggregate函数计算平均值
select
  v.subject_id,
  p.gender,
  -- 计算平均心率
  avg(case when v.itemid = 211 then v.valuenum else null end) as avg_hr,
  -- 计算平均血压
  avg(case when v.itemid = 220045 then v.valuenum else null end) as avg_bp,
  -- 计算平均体温
  avg(case when v.itemid = 223761 then v.valuenum else null end) as avg_temp
from vital_signs v
inner join patients p
on v.subject_id = p.subject_id
group by v.subject_id, p.gender
order by v.subject_id;
  • 有的表属于宽表,代表记录条目的ID列是唯一的,也是我们组织自己数据的一种形式。从宽表格中提取数据相对简单。MIMIC数据库中的宽表格有以下几个:admissions: 包含了每个患者的入院信息,如入院时间、出院时间、入院类型、死亡标志等;patients: 包含了每个患者的基本信息,如性别、出生日期、死亡日期等;transfers: 包含了每个患者在医院内部的转移信息,如转移时间、转移前后的位置、转移类型等;icustays: 包含了每个患者在重症监护病房的停留信息,如停留时间、停留时长、停留位置等;services: 包含了每个患者在重症监护病房的服务信息,如服务类型、服务开始时间、服务结束时间等;prescriptions: 包含了每个患者在重症监护病房的药物处方信息,如药物名称、药物剂量、药物开始时间、药物结束时间等。以MIMIC数据库为例,假设我们想要从admissions表中提取以下信息:每个患者的入院次数;每个患者的平均住院天数;每个患者的死亡率;我们可以用以下SQL语句来实现:
-- 主查询,使用aggregate函数计算入院次数、平均住院天数和死亡率
select
  subject_id,
  -- 计算入院次数
  count(*) as admission_count,
  -- 计算平均住院天数
  avg(datediff(day, admittime, dischtime)) as avg_los,
  -- 计算死亡率
  sum(case when hospital_expire_flag = 1 then 1 else 0 end) * 1.0 / count(*) as mortality_rate
from admissions
group by subject_id
order by subject_id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐算法之DeepFM

论文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction Github:https://github.com/ChenglongChen/tensorflow-DeepFM https://github.com/shenweichen/DeepCTR IJCAI2017 本文将深度神经网络dnn和因式分解机Factorization-M…

程序中各种异常报错,对于JVM调优记录

一:GC overhead limit exceeded 数据量过大:当应用程序处理大量的数据时,会占用大量的内存和计算资源。如果内存资源不足,则可能会在垃圾回收过程中出现 GC overhead limit exceeded 错误 程序代码有问题:如果 应用程…

Vmware虚拟机问题解决方案

Vmware虚拟机问题解决方案 1. 运行虚拟机系统蓝屏 可能的原因有两个: 1). 虚拟机所在磁盘的空间不足 ; -------> 清理磁盘空间 。 2). 操作系统版本高, 需要适配新版本的Vmware ; ------> 卸载Vmware15版本, 安装Vmware16版本 。 2. 卸载Vmware步骤 1). 卸载已经安…

商用密码产品认证中的随机数(一)

1 商密认证中的随机数介绍 如果说密钥的安全是密码产品的基石,那随机数的安全就是密钥安全的基石。密码产品设计和商用密码产品认证中,随机数的合规性也是需要重点关注的环节。 随机数的合规性主要包括: 随机数的来源合规。如果是自行设计的…

一点通路由模拟实验8

首先先设置hostA和hostB和hostC的ip 其次设置路由接口的各个ip 路由A 像这样的,再设置路由B 唯一要记住的是,时钟只要设置一个就行 就是clock rate 6400,之后开启路由:ip routing 然后就是查看路由表了(路由A&#…

Lecture 12(Preparation):Reinforcement Learning

目录 What is RL? (Three steps in ML) Policy Gradient Actor-Critic Reward Shaping No Reward: Learning from Demonstration It is challenging to label data in some tasks. 例如下围棋时,下一步下在哪个位置最好是不太好确定的,此时可以考虑…

无线传感器网络路由优化中的能量均衡LEACH改进算法(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 由于簇的规模和簇头选择对WSN总能耗影响较大:一方面,当簇的规模较小时,易导致WSN能量消耗不…

2021年NOC大赛编程马拉松赛道图形化中高组模拟卷,包含答案

目录 单选题: 判断题: 下载文档打印做题: 2021年NOC大赛编程马拉松赛道图形化中高组模拟卷 单选题: 1.雪球不小心误入了图灵学院旁边山林中的一个洞穴,一直都没有出来,禾木、桃子和小核桃打算进去找她,洞穴里漆黑一片,三人走着走着,不知怎么也走散了。如下图所示,…

加速开放计算产业化,OCTC五大原则瞄准需求痛点

回顾计算产业过去十余载的历程,开放计算始终是一个绕不开的核心焦点。 始于2011年Facebook发起的数据中心硬件开源项目--开放计算项目(简称:OCP),开放计算犹如星星之火,不仅迅速形成燎原之势,更…

windows安装GO语言环境

GO语言版本 Windows 平台和 Mac 平台推荐下载可执行文件版,Linux 平台下载压缩文件版。 版本:1.16.8 出现上面这个界面就说明已经安装好了 查看GO版本 可以打开终端窗口,输入go version命令,查看安装的 Go 版本 C:\Users\8617…

python数据可视化开发(5):webAPI百度地图轻量驾车路线规划距离与直线距离计算

webAPI百度地图轻量驾车路线规划规划 一、驾车路线规划说明1.接口说明API服务地址请求参数返回参数 二、python核心代码1.轻量路线规划代码封装2.批量读取起始点信息 三、直线距离计算 轻量级路线规划服务(又名DirectionLite API )是一套REST风格的Web服…

带你玩转数据结构-单链表(适合初学者的文章,讲解的很仔细哦)

前言: 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:讲解数据结构中链表的知识,;链表的分类,c语言实现单链…

界面控件Telerik UI for WinForms使用指南 - 数据绑定 填充(二)

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 Telerik UI for WinForms组件为可视化任何类…

使用【SD-WEBUI】插件生成同一张图包含多个人物:分区域的提示词

文章目录 (零)前言(一)潜变量成对(Latent Couple)(1.1)可自组LoRA(Composable LoRA) (二)分区扩散(Multi Diffusion&#…

测试用例常见设计方法

1.基于需求的设计方法 主要从以下方面进行思考: 2.等价类法 将输入的数据等价划分成几个类,从每个类里面选出一个测试用例,如果这个测试用例通过,说明这一个类的测试用例都通过 有效等价类:满足输入数据要求的类 无…

rosbag相关进阶操作

一些很好用的网站 时间戳在线转换网页 旋转矩阵、四元数、绕轴旋转、欧拉角在线转换网页 四元数、欧拉角可视化在线转换网页 一、按时间截取bag 使用如下代码&#xff1a; rosbag filter 原始包名.bag 截取后的包名.bag "t.to_sec() > 开始时间 and t.to_sec() <…

如何导出windows平台下cloudflare warp内部存的私钥和token

结论&#xff1a;管理员身份运行 mimikatz&#xff1a;https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20220919 然后输入&#xff1a; privilege::debug &#xff08;提升权限到&#xff1a;NT-AUTHORITY\SYSTEM&#xff09;以及sekurlsa::credman 就能看到&…

免费使用GPT4.0?搭载多模态的全新New Bing开放使用教程(文末送书)

目录 1 微软发布新必应2 支持文本生成图像3 支持多模态回答4 历史记录和回答导出5 支持插件化导入本期图书推广 1 微软发布新必应 5月4日&#xff0c;微软基于ChatGPT的搜索引擎New Bing发布了一次大规模更新&#xff0c;并宣布已开放给所有用户&#xff0c;现在无需再排队等待…

前端技术搭建弹珠小游戏(内附源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了小人逃脱&#xff0c;当然很多伙伴再评论区提出了想法&#xff0c;后续我们会考虑实现的&#xff0c;今天还是继续按照我们原定的节…

sentinel 随笔 3-降级处理

0. 像喝点东西&#xff0c;但不知道喝什么 先来段源码&#xff0c;看一下 我们在dashboard 录入的降级规则&#xff0c;都映射到哪些字段上 package com.alibaba.csp.sentinel.slots.block.degrade;public class DegradeRule extends AbstractRule {public DegradeRule(String…