MIMIC-IV v3.1 · beginner-friendly walkthrough

先看真实数据长什么样,再谈分析

这不是 toy schema,而是基于你本地 MIMIC-IV v3.1 文件整理出的 demo。 页面按“模块导览 → 骨架表 → 单患者旅程 → 事件表 → 最小 join → caveat”展开, 帮你建立对真实临床数据的第一层直觉。

Step 1

先建立入口感:只有两大模块,但大表真的很大

MIMIC-IV 在物理上首先是两个目录:hosp/icu/。 真实交付是压缩 CSV,而不是已经帮你建好的数据库。

hosp/:住院侧数据

包括骨架表、检验、诊断、处方等 hospital provenance 数据。

    icu/:ICU 侧数据

    包括 ICU stay、床旁 chart、输入输出、procedure 等 ICU provenance 数据。

      patients 2.7 MB

      静态病人信息,最适合作为入口。

      admissions 19 MB

      住院级骨架,帮助你看见一次次 hospital encounter。

      icustays 3.2 MB

      ICU stay 粒度,比 admission 更细。

      labevents 2.4 GB

      事件表,不能靠“直接打开文件”来理解全貌。

      chartevents 3.3 GB

      高频 ICU 记录,建议数据库/筛选子集查看。

      注意:这里展示的 MB / GB 是文件大小,不是行数。它们的作用是帮助你建立规模感,而不是给出 row count。

      Step 2

      先看 3 张骨架表,把 3 层 ID 讲清楚

      如果只记住一件事,就记住这三个层级:subject_idhadm_idstay_id

      病人级subject_id
      住院级hadm_id
      ICU 级stay_id

      Step 3

      用一个真实患者把全链路串起来

      网站主线只围绕一个真实样例展开:subject_id=10000032。 这样新手能先理解“一个病人如何穿过多张表”,而不是在几十张表里迷路。

      主线患者卡

      subject_id
      10000032
      gender
      F
      anchor_age
      52
      anchor_year_group
      2014 - 2016
      dod
      2180-09-09

      叙事顺序

      1. patients先认识病人本身
      2. admissions看到同一个病人可有多次住院
      3. icustays只在某次住院内进入 ICU
      4. labevents实验室事件是长表,一行一条结果
      5. chartevents床旁 chart 更高频、更像时间序列
      主线护栏: labevents 的演示样例优先固定到 hadm_id=29079034。 同一 subject_id 下如果出现空 hadm_id 的 lab 行,不能直接并入这次住院 / ICU 时间线。

      Step 4

      两类事件表:都很大,但粒度和来源不同

      不要一次性看完整张大表。这里每次只展示少量真实样例行,帮助你先看懂“行的形状”。

      labevents:住院检验事件

      一行代表某次检验结果。主线样例显式过滤到 hadm_id=29079034

      2.4 GB
      主线 hadm_id:29079034 最小语义锚点:50931 → Glucose

      chartevents:ICU 床旁 chart

      更高频,天然更像 ICU 内部的时间序列记录。

      3.3 GB
      主线 stay_id:39553978 最小语义锚点:220048 → Heart Rhythm

      共同点

      • 都属于“长表”,一行一条事件。
      • 都比骨架表更有“真实临床数据”的味道。
      • 都不适合一开始就全表浏览。

      差异

      • labevents 更偏检验结果,通常与住院上下文关联。
      • chartevents 更偏 ICU 床旁记录,频率更高。
      • 教学主线里,chart 更适合展示 ICU stay 内部事件流。

      Step 5

      主线只保留 3 个 join,不让新手被 SQL 吓跑

      第一轮 demo 只讲“为什么要这样连”,而不是讲复杂 SQL 技巧。

      附录补充: admissions.hadm_id = labevents.hadm_id 可以帮助你把 lab 挂回某次住院, 但它不应该抢走主线解释权。

      Step 6

      如果你想从“看懂结构”过渡到“自己查数据”,DuckDB 是最轻量的下一步

      这一节不是完整数据库工程,而是一个最小 DuckDB / SQL 练习台: 先把本地 .csv.gz 文件映射成只读视图,再围绕主线患者跑几条最关键的查询。

      为什么这里推荐 DuckDB

      • 不需要先搭一整套数据库服务,适合做本地 exploration。
      • 可以直接从 CSV 文件起步,适合 MIMIC-IV 这种“先看结构、后建分析流”的场景。
      • 很适合把页面里的“骨架表 / 单患者 / 事件表 / 字典映射”变成可执行 SQL。

      Step 7

      Caveat、官方 grounding 与可复现验证

      这部分不是“补充说明”,而是防止误解的安全护栏:版本边界、单患者时间线的局限、以及如何用命令复现页面中的关键结论。

      Caveat / 记忆卡片
      • 本地数据是 MIMIC-IV v3.1,部分表和 itemid 在版本迭代中发生过修正。
      • 单患者时间线只用于帮助理解个体内部顺序,不适合直接做跨患者比较。
      • itemid 需要字典表解释;这里只放最小语义锚点,不把全部字典表塞进主线。
      • 事件表体量很大,正式分析更适合放进 SQLite / DuckDB / BigQuery 等关系型查询环境。
      Official grounding
      • full database:按 hosp / icu 模块组织,并以 CSV 导出。
      • 官方 demo:100 个患者,但结构与正式库保持同构,适合作为教学子集。
      • patient-level tables 在官方 demo 中按 subject_id 过滤,d_ 字典表保持完整。
      • 本页面中的字段解释、截图、查询结果一律以本地 v3.1 文件为准。

      可复现验证命令

      这些命令与页面里的核心结论一一对应,可直接在当前目录执行。