MIMIC-III — 重症监护医疗数据库 AI-Ready Wikipedia

MIMIC-III 临床数据库:3.31 亿条床旁记录 × 26 张关系表的十年 ICU 全景——医疗 AI 领域被引用最多的一手数据资产

来源 https://physionet.org/content/mimiciii/发布时间: 2026-09-20最后更新: 2026-09-25 阅读 27
MIMIC-III — 重症监护医疗数据库 AI-Ready Wikipedia

信息速览

数据集名称MIMIC-III — 重症监护医疗数据库 AI-Ready Wikipedia
数据类型38,597 成人患者,49,785 住院,58,976 ICU 停留,3.31 亿 chartevents,26 张表
规模46,520 名患者(patients 表;其中 38,597 成人)
接入方式https://physionet.org/content/mimiciii/
AI 就绪度

INFOBOX

属性 内容
名称 MIMIC-III Clinical Database(Medical Information Mart for Intensive Care III)
维护方 MIT Laboratory for Computational Physiology(MIT-LCP)/ PhysioNet
发布 v1.0(2015-08-25);v1.4 终版(2016-09-02),此后不再更新
数据时段 2001-2012(BIDMC 重症监护单元)
规模 38,597 成人患者 / 49,785 住院 / 58,976 ICU 停留;patients 表含 46,520 人(另有 7,870 新生儿记录)
结构 26 张关系表;chartevents 330,712,483 行(3.31 亿)
数据类别 生命体征、实验室、用药与输液、护理/医生记录、影像与心电图报告、ICD-9/CPT/DRG 编码、院外死亡
格式 CSV 分发 + PostgreSQL/MySQL/MonetDB 导入脚本(mimic-code)
访问 Credentialed Access(CITI 课程 + DUA 1.5.0)
DOI 10.13026/C2XW26(v1.4);10.13026/cd7z-wg25(latest concept)
论文 Johnson et al., Scientific Data 3:160035 (2016),PMID 27219127
基准 mimic3-benchmarks(Harutyunyan et al.):4+1 任务,Zenodo 10.5281/zenodo.1306527
继任者 MIMIC-IV(2008-2019,schema 重构,持续更新)
平台 PhysioNet / AWS Open Data

§0 E-E-A-T 信任声明与免责声明

  • 核查路径:本文所有数字取自三重信源交叉——PhysioNet 官方条目页(mimiciii/1.4)、官方论文 Scientific Data 3:160035(PMID 27219127)、以及 ricu 包论文(arXiv:2108.00796)对 v1.4 全部 26 张表逐表实测行数;版本时间线与许可条款以 PhysioNet 官方页为准。
  • 口径纪律:MIMIC-III 的"患者数"至少有四层口径(46,520 总患者 / 38,597 成人 / “over forty thousand” 官方模糊语 / 33,798 benchmark 队列),本文在每处引用时显式标注口径,存照见 §6.9 与 §10.1。
  • 时效声明:v1.4(2016-09)为终版,数字稳定;但围绕它的生态数字(引用量、benchmark 榜单、衍生工具版本)持续演化,本文截至 2026-09-20。
  • 免责:本条目是面向 AI 工程师与临床信息学家的数据集百科,不构成临床建议;访问与使用 MIMIC-III 须遵守 PhysioNet Credentialed Health Data License 1.5.0 与 DUA,本文不复制任何患者级数据。
  • 利益声明:本系列与 MIT-LCP/PhysioNet 无隶属关系;条目在生产中不下载、不存储任何受控数据。

§1 数据集概览

§1.0 📌 30 秒速览

  • 是什么:全球医疗 AI 领域被引用最多的一手 ICU 临床数据库——2001-2012 年波士顿 BIDMC 医院重症监护的完整去标识化副本,26 张 PostgreSQL 关系表,核心事实表 chartevents 有 3.31 亿行。
  • 谁在用:死亡风险预测、脓毒症预警、临床 NLP(2,083,180 条病程/影像/心电报告)、可解释 AI、药物安全、流程挖掘——从 Nature 系论文到 LLM 时代的评测基准。
  • 关键数字:38,597 成人患者 / 49,785 住院 / 58,976 ICU 停留 / 平均每住院 4,579 条床旁观测 + 380 条实验室结果 / 院内死亡率 11.5%。
  • 入口代价:CITI 证书 + DUA 签署(约 1 周审批)+ PostgreSQL 导入技能;无临床数据库经验者建议先做 mimic3-benchmarks 的死亡预测任务。
  • 一句话:如果医疗 AI 只允许保留一个训练语料库,MIMIC-III 是被引用次数最多的答案——尽管它的继任者 MIMIC-IV 已经就位。

§1.1 摘要

MIMIC-III(Medical Information Mart for Intensive Care III)是 MIT 实验计算生理学实验室(MIT-LCP)构建的第三代的公开重症监护数据库,收录 2001-2012 年贝斯以色列女执事医疗中心(Beth Israel Deaconess Medical Center, BIDMC)重症监护单元的去标识化临床数据。官方成人口径为 38,597 名成人患者、49,785 次住院、58,976 次 ICU 停留;数据库以 26 张关系表组织,覆盖生命体征(床旁护理验证,约每小时粒度)、实验室检验、用药与输液、微生物培养、护理与医生的自由文本记录、影像与心电图报告、诊断与操作编码(ICD-9/CPT/DRG)以及接续自美国社会保障总署死亡档案(SSA Death Master File)的院外死亡信息。v1.4 于 2016 年 9 月发布并成为终版——所有后续数据扩展由 MIMIC-IV 承接。十余年来,MIMIC-III 支撑了从学术基准(Harutyunyan 四任务)到工业级临床预测系统的大部分公开可复现研究,是"AI-Ready 临床数据"这一概念的事实原点。

§1.2 战略价值

对 AI 工程师,MIMIC-III 的战略地位来自四个"第一":

  1. 第一个可复现的医疗 AI 基准场:在它之前,临床 ML 论文各自造数据、各自定义结局,性能不可比;mimic3-benchmarks(Harutyunyan et al.)第一次给出统一切分、统一指标、统一基线的四个任务,让"医疗深度学习是否真的进步"变成可测量的问题(答案见 §6.2——这个答案本身改变了整个领域的论文写法)。
  2. 第一个覆盖全临床模态的表格+文本混合语料:3.31 亿行结构化观测与 208 万条临床叙事在同一个 schema 里以 subject_id/hadm_id/icustay_id 三级主键互通——这是今天"多模态临床模型"研究所依赖的数据形态的模板。
  3. 第一个规模化验证"受控开放"模式的临床库:Credentialed Access(课程+DUA)而非纯开放或纯封闭——HIPAA 框架下大规模共享 PHI 级数据的合规路径由此被证明可行,并被后续 MIMIC-IV、eICU、HiRID、AmsterdamUMCdb 等沿用。
  4. 社区工程资产的聚齐效应:mimic-code(概念映射、评分量表、队列定义的 SQL)、mimic3-benchmarks、MIMIC-III on BigQuery/Athena 等衍生工具使后来者的边际成本递减——数据集的护城河不止是数据本身。

§1.3 同类数据集横向对比

数据集 中心数 时段 患者/停留 结构特点 访问
MIMIC-III(本条) 单中心 BIDMC 2001-2012 38,597 成人 / 58,976 ICU 停留 26 表三范式;双 EHR 系统并存 Credentialed
MIMIC-IV 单中心 BIDMC 2008-2019 ~300,000 患者 / ~450,000 停留 少表非规范化;hosp/icu 模块 Credentialed
eICU-CRD ~200 中心多州 2014-2015 ~139,367 患者 / 200,859 停留 远程 ICU 众包架构 Credentialid(较快)
AmsterdamUMCdb 单中心阿姆斯特丹 2003-2016 ~23,106 患者 / 57,210 停留 欧洲口径;概念字典自建 合作申请
HiRID 单中心伯尔尼 2013-2015 ~33,749 停留 高频参数(~2 分钟粒度) 分阶段开放

对比结论:MIMIC-III 的独占价值在年代纵深(唯一覆盖 2001-2008 纸质-电子过渡期的公开 ICU 库,包含 CareVue 时代的完整用药与输液记录)与基准生态(四任务基准 + 二十年文献积累);若研究目标是现代诊疗惯例或更大样本,应优先 MIMIC-IV/eICU;若是历史对照、方法学回溯或需要 CareVue 特有概念,MIMIC-III 不可替代。

§1.4 版本时间轴

版本 发布日期 要点
MIMIC-II v2.6 2012(前代终版) 2001-2008 CareVue 时代;26,000+ 患者;MIMIC-III 的直接前身
MIMIC-III v1.0 2015-08-25 初版(内部测试,未广泛宣传);对 MIMIC-II 扩展约 20,000 ICU 停留、医生病程记录、给药记录、CPT/DRG
v1.1-v1.3 2015-2016 间 迭代修复与 MetaVision 数据补全
v1.4(终版) 2016-09-02 MetaVision 文本概念补入(+5GB);charttime±1 年窗口净化;noteevents 偏移对齐;EST 时区统一;此后不再更新
MIMIC-IV v1.0-v2.2 2020-2023 继任者:2008-2019 数据、schema 重构(hosp/icu 模块化)、与 MIMIC-III 的 2008-2012 年段部分重叠

⚠️ v1.4 发布日期存在三处官方表述:release notes 记"2 September 2016",PhysioNet 版本列表页标注"Sept. 4, 2016",归档页标注"4 September, 2016"。引用时以 release notes 的 9 月 2 日为主、标注差异(存照 §10.1-D)。

§1.5 应用场景矩阵

场景 推荐度 用到的表 关键注意
院内/ICU 死亡预测 ★★★★★ icustays/chartevents/labevents 用 benchmark 口径保证可比性(§5.2)
脓毒症/AKI 队列构建 ★★★★★ microbiologyevents/prescriptions/labevents 用 mimic-code 官方定义(Sepsis-3 SQL)
临床 NLP/LLM 微调 ★★★★★ noteevents discharge summary 篇幅长、放射报告短;PHI 已脱敏但风险句式仍在
剩余停留时长/分诊 ★★★★ admissions/transfers/icustays 10 桶分类口径(§5.4)
药物安全/输液暴露 ★★★★ inputevents_cv/inputevents_mv 双系统分表,剂量单位陷阱(§6.4)
流程挖掘/护理路径 ★★★ transfers/procedureevents 与 MIMICEL(ED 事件日志)互补
评分量表复算(SAPS/SOFA/OASIS) ★★★★ 全库 mimic-code 有官方 SQL;itemid 映射是核心工作
跨库联用(+eICU/MIMIC-IV) ★★★ subject_id 不互通 概念级对齐而非患者级对齐

§1.6 组件全景:26 张表的四层架构

MIMIC-III 是教科书级的关系型临床 schema,26 张表按职能分四层:

  • 标识层(3 表):patients(46,520 人:性别、出生/死亡日期)、admissions(58,976 住院:入出院时间/类型/科室/死亡)、icustays(61,532 ICU 停留:入出 ICU 时间/科室,DBSOURCE 标 CareVue 或 MetaVision)。
  • 字典层(5 表):d_items(12,487 个床旁/图表概念 → 指向 chartevents 等)、d_labitems(753 个实验室项目)、d_icd_diagnoses(14,567 ICD-9 诊断码)、d_icd_procedures(3,882 ICD-9 操作码)、d_cpt(134 CPT 说明)。
  • 事实层(13 表):chartevents(330,712,483 行,床旁观测总表)、labevents(27,854,055)、inputevents_cv(17,527,935,CareVue 输液)、inputevents_mv(3,618,991,MetaVision 输液)、outputevents(4,349,218,出量)、datetimeevents(4,485,937,日期型观测)、prescriptions(4,156,450,药嘱)、procedureevents_mv(258,066,MetaVision 操作)、microbiologyevents(631,726,微生物培养)、diagnoses_icd(651,047)、procedures_icd(240,095)、cptevents(573,146)、drgcodes(125,557)。
  • 叙事与流转层(5 表):noteevents(2,083,180 条自由文本:出院小结/医生病程/护理记录/影像与心电报告)、transfers(261,897,院内科室流转)、services(73,343,医疗 team 服务)、callout(34,499,离科申请)、caregivers(7,567,医护脱敏 ID)。

§1.7 四层口径速记

遇到任何 MIMIC-III 数字先问"哪层口径":

  • 46,520:patients 表总行数 = 全部患者(含 2001-2008 的 7,870 新生儿)。
  • 38,597 / 49,785 / 58,976:官方成人口径(≥16 岁)患者/住院/ICU 停留——论文摘要与 PhysioNet 页用这套。
  • 53,423:成人住院总数(含未进入 ICU 的住院)——Sci Data 论文正文。
  • 33,798 / 42,276:benchmark 队列口径(Harutyunyan 清洗后)——机器学习论文里最常见的"我们用了 MIMIC-III 3 万患者"即此。
  • 61,532:icustays 表总行数(含新生儿停留)——与官方成人 ICU 停留 58,976 相差 2,556,正是新生儿段。
  • 巧合陷阱:官方"成人 ICU 停留 58,976"与 admissions 表总行数 58,976 数值相同但语义无关——两个数字混用的论文并不少见(§6.5 坑点 1)。

§1.8 访问方式速记

  1. 注册 PhysioNet 账号 → 完成 CITI “Data or Specimens Only Research” 课程并上传证书 → 签署 DUA 1.5.0 → 等待审批(官方口径约 1 周)。
  2. 下载:PhysioNet 网页直下(CSV 压缩包)或 AWS S3(bucket mimic-iii-physionet,ARN 授权模式,us-east-1)——后者适合做云上分析。
  3. 导入:mimic-code 提供 PostgreSQL/MySQL/MonetDB 建表脚本;PostgreSQL 是社区事实标准(报错最容易搜到答案)。
  4. 最小验证查询:SELECT COUNT(*) FROM chartevents; 应得 330,712,483(v1.4 实测行数,见 §3.8 逐表清单)。

§1.9 独特视角:医疗 AI 的"果蝇"

模式生物学的突破始于果蝇——繁殖快、成本低、性状可观察。MIMIC-III 之于医疗 AI 正是果蝇之于遗传学:样本量够大(3.31 亿观测)、迭代够快(SQL 拉队列当天出结果)、验证够透明(受控开放+社区基准)、成本够低(免费,只有合规成本)。2020 年代所有"临床大模型"论文的评测表里几乎都有它的影子。理解 MIMIC-III 的口径与陷阱,因此不再是"了解某个数据集",而是理解整个领域论文的元语言——读任何一篇临床 AI 论文,先核对其 MIMIC 口径(38,597 还是 33,798?成人还是全龄?benchmark 切分还是自定义切分?),再谈性能数字。

§1.10 读者速用:读 MIMIC 论文的三行检查法

给只读论文不跑数据的读者一个速用工具——任何"MIMIC-III 实验"论文看三行:

  1. 版本行:有无"v1.4"+DOI?只写"MIMIC-III"的多半是老镜像或口径混乱。
  2. 队列行:N=多少、成人过滤、首住还是全部停留、有无 ≥12h 过滤——四要素凑不齐就往下打折读。
  3. 切分行:benchmark 官方切分(可与文献比)vs 自切分(只能内部比)——"自切分+SOTA 声明"是最常见的水分位。

三行过关的论文,方法学部分至少是认真的;三行缺二的论文,其数字只当案例研究不当证据。本条目 §6.11 的诊断树是这检查法的展开版。

§2 医学与科学背景

§2.1 重症医学信息学的诞生叙事

2000 年代初,重症监护是数据密度最高却最"数据盲"的科室:监护仪、呼吸机、输液泵每秒产数,但这些数据要么进了纸档案要么锁在各设备厂商的私有格式里。MIT 的 Roger Mark 团队与 BIDMC 合作提出"把整座 ICU 的信息系统镜像下来"的设想:MIMIC-I(2003 证明可行,未公开)、MIMIC-II(2009,公开 ~26,000 患者)到 MIMIC-III(2016,38,597 成人+双系统十年数据)。这条二十年路线的本质是把科研数据基础设施当作长期工程来做——NIH 连续资助(R01-EB017205、R01-EB001659、R01-GM104987)支持的不是一个数据集而是数据管护(data stewardship)能力本身。

§2.2 MIMIC 系谱:II→III→IV 的继承与断裂

  • MIMIC-II → III:新增约 20,000 ICU 停留、医生病程记录(progress notes)、给药记录(MAR)、CPT/DRG 编码;数据范围从 2001-2008 扩展到 2001-2012。MIMIC-II 已下架,但其 CareVue 段数据可从 MIMIC-III 按 DBSOURCE='carevue' 完整还原。
  • III → IV 的断裂:MIMIC-IV 不只是"加年份",而是 schema 重构——非规范化(26 表收敛为 hosp/icu 两模块的少量大表)、去除审计字段、概念体系重排。subject_id 两库不互通(同一名真实患者理论上可能跨库有不同 ID——2008-2012 年段重叠人群无法直接链接),研究 2008-2012 年段的对比需用 MIMIC-III 的 icustays+时间窗口近似。
  • 波形支系:MIMIC-III 同时催生波形库 MIMIC-III Waveform(匹配子集 22,317 记录,见本系列 487 条)——临床库与波形库经患者 ID 关联,构成本系列所说的"记录/信号/流程"三视角中的记录端主库。

§2.3 单中心的双面性

单中心(BIDMC)意味着数据同质性(同一套信息系统、同一套诊疗规范、同一张检验参考区间)——这让 MIMIC-III 成为方法学研究的理想场地:变量口径一致、无需多中心调和。但它同时是外推性的天花板:BIDMC 是美国东北部三级转诊医院,疾病谱(Top ICD-9:冠状动脉粥样硬化 7.1%、脓毒症 4.2%、心内膜下梗死 3.6%)、支付体系、护理比均不可代表基层或非美地区。严谨论文的标准写法是"在 MIMIC-III 上验证方法学可行性,外部验证留给多中心数据(eICU/HiRID)"——把方法贡献与部署声明分开。

§2.4 ICU 数据的特殊性:高密度、异步、护理验证

ICU 数据有三个区别于普通 EHR 的物理特性,直接决定建模设计:

  1. 采样不均匀:生命体征理论约每小时一条,但危重患者可能每分钟一记、稳定患者数小时无记——"缺失"本身就是病情信号(信息缺失模式预测死亡是经典发现)。建模要么用时间桶离散化(benchmark 的 1 小时桶),要么用连续时间模型,切勿当均匀时序处理。
  2. 护理验证:chartevents 的数值多经护士转录或确认(区别于监护仪原始波形)——质量较高但含转录延迟与转录错误;"床旁时刻"与"记录时刻"可能相差数十分钟,时间戳语义见 §6.3。
  3. 事件流+文档流双轨:数值观测进 chartevents/labevents,叙事进 noteevents——同一临床事件常两处留痕(如"胸痛"在 chartevents 的 Text 型条目与医生病程记录里都有),信息抽取时双轨交叉验证可显著降噪。

§2.5 CareVue vs MetaVision:一场 ERP 换型留下的十年裂缝

BIDMC 于 2008 年更换 ICU 临床信息系统(CareVue → MetaVision),MIMIC-III 因此横跨两套编码体系:

  • 范围:约 48,000 ICU 停留属 CareVue(2001-2008),其余属 MetaVision(2008-2012)。
  • itemid 双轨:同一临床概念两套编码——心率 CareVue 是 itemid 211、MetaVision 是 220045。跨年代查询必须用映射表(mimic-code 的概念映射 SQL 是官方答案)。
  • 表级分叉:输液与血流动力学输入事件分表存储——inputevents_cv(CareVue,17,527,935 行)与 inputevents_mv(MetaVision,3,618,991 行),字段结构不同;MetaVision 侧的输入事件记录质量整体更优(单位与体重校正更规范)。
  • 文本概念差异:v1.3 之前 MetaVision 患者的文本型图表概念(GCS、code status、RASS)大面积缺失,v1.4 修复(#88 补入 +5GB 数据)。
  • dbsource 字段:icustays/admissions/transfers 的 DBSOURCE 列标识来源系统,是几乎所有跨年代研究的第一个 WHERE 条件。

§2.6 去标识化工程:date shift 与 PHI 清除

MIMIC-III 的去标识化是"结构化改写+文本脱敏"双轨:

  • 日期偏移(date shift):每名患者获得一个随机偏移量(±年量级),全部时间戳按患者统一平移——患者内时序关系完全保留,患者间相对时间丢失。三个直接后果:季节性/流行病学研究失效;跨患者"同一时段"概念不存在;出生日期同理偏移(年龄仍准确到岁,但精确生日无意义)。
  • 文本脱敏:noteevents 经 HIPAA PHI 清除管线(人名/电话/日期改写为占位符如 [**First Name3 (NamePattern2) 53**])——这些占位符本身是 NLP 处理的噪声源,预训练分词器会切成无意义 token,需预处理。
  • v1.4 的偏移对齐修复:v1.3 及之前 noteevents 内文日期用了与 MIMIC-II 相同的偏移量(导致文中出现 2500-3500 年),v1.4 修正为与结构化数据一致的偏移(release note #60)——引用 noteevents 日期时必须确认 v1.4。
  • 免责与合规:去标识化经 MIT 与 BIDMC IRB 审批;但研究者协议仍禁止再识别与串联外部数据重识。

§2.7 死亡数据的双重来源

院内死亡直接来自 admissions 表(DISCHTIME+DEATHTYPE 语义);院外死亡则接续自 SSA Death Master File——死亡日期(DOD)列在 patients 表。两个分析后果:①"30 天死亡率"类结局的精确性受 SSA 跟踪窗口限制(约至 2012 年后数年,非无限期随访);②DOD 的粒度是"日",与住院/ICU 时间戳(分钟粒度)对齐时存在窗口边界歧义——mimic-code 的死亡定义 SQL 已给出社区标准口径。

§2.8 noteevents:中文世界最被低估的临床语料

2,083,180 条文本按类别分:出院小结(篇幅最长、结构最完整)、医生病程记录(进度性最强)、护理记录、放射报告(短平快、模板化)、心电图报告等。它是临床 NLP 时代多数经典任务(出院摘要压缩、放射报告信息抽取、再入院预测的文本特征、近年 LLM 的临床评测/微调)的一手语料。三个工程要点:①占位符 PHI 残留需清洗(§2.6);②出院小结的 Addendum(增补)在 v1.4 可区分(DESCRIPTION=‘Addendum’);③文本日期已与结构化日期对齐(v1.4)——跨模态(表+文)模型的地基。

§2.9 编码体系三件套:ICD-9 / CPT / DRG

  • ICD-9:diagnoses_icd(651,047 行)与 procedures_icd(240,095 行)编码诊断与操作—— phenotyping 任务把它聚合为 25 疾病组(§5.5);ICD-9 的"结算驱动"偏差(编码完整性受报销规则影响)是队列选择偏倚的常见来源。
  • CPT:cptevents(573,146 行)记录操作/收费项目——比 ICD 操作码粒度更细(如具体术式),但语义是"计费事件"而非"临床事件"。
  • DRG:drgcodes(125,557 行)是出院结算分组——疾病严重度的粗代理,不推荐做精细结局研究。
  • 三者共同提示:MIMIC-III 里的"编码"承袭医院账单视角,AI 用它们做标签时需理解"结算语义≠临床语义"的系统性偏差。

§2.10 基准四任务的学科意义

Harutyunyan et al.(2017 arXiv / 2019 Scientific Data 6:96)用 MIMIC-III 定义了社区四任务(死亡预测/恶化预警/停留时长/表型分类,规格见 §5)并开源全管线。它的历史作用在 2020 年被一项后验研究(arXiv:2010.01149)精确量化:系统复现 19 篇论文的 210 个模型后发现,死亡预测与停留时长上深度模型并不显著优于 logistic 回归(表型与恶化预警略优),且历年性能趋势斜率与零无显著差异。这份"泼冷水报告"与 ImageNet 式叙事形成对照,成为医疗时序 ML 方法学文献的必引——也解释了为什么近年研究重心转向多模态(加入文本/影像/波形)、外部验证与 LLM。MIMIC-III 的价值因此是双重的:既是训练场,也是测量领域真实进展的标尺。

§2.11 ICU 严重程度量表体系

重症医学用一组标准化量表把"病情多重"变成可比数字,MIMIC-III 能复算其中大多数:SOFA(序贯器官衰竭评估:6 器官×4 分,逐日动态)、SAPS II(入院 24h 静态生理学)、OASIS(Oxford 学术版,纯 MIMIC 可算)、GCS(格拉斯哥昏迷,chartevents 内 Text/数值条目)、qSOFA(床旁三要素)。三层实践语义:①量表是队列分层工具("SOFA≥2"是 Sepsis-3 的器官功能障碍判据);②mimic-code 提供官方 SQL 复算——自己手写版本与官方对不上是常态(itemid 边界选择不同);③量表分数本身可作模型基线特征("模型 vs 量表"的增量比较是临床价值的硬通货)。

§2.12 脓毒症定义的演变语义

脓毒症定义经历 Sepsis-1(1991)→ Sepsis-2(2001,SIRS 标准)→ Sepsis-3(2016,感染+SUSPED≠ 的 SOFA≥2)三代——MIMIC-III 的发表恰与 Sepsis-3 同年,使其成为新定义验证的核心队列(Seymour et al. JAMA 2016 用 MIMIC-III+eICU 验证 Sepsis-3)。两个研究语义:①同一队列按 Sepsis-2 vs Sepsis-3 入组的重叠率约七成——"脓毒症"论文必须声明定义版本;②Sepsis-3 SQL(mimic-code)依赖 labevents(肌酐/乳酸/白细胞)+chartevents(MAP/呼吸频率)+prescriptions(抗生素)跨 5 表时序对齐——这 5 表 JOIN 的复杂度是 §7.5 排期表里"队列 3-5 天"的主体。Sepsis-3 是"临床定义→SQL 实现"的范式样本,学会它就能读 mimic-concepts 里任何疾病定义。

§3 数据集规格

§3.1 规格总表

维度 规格
全称 MIMIC-III Clinical Database(Medical Information Mart for Intensive Care III)
版本 v1.4(2016-09-02,终版,不再更新)
中心 单中心:Beth Israel Deaconess Medical Center(BIDMC),波士顿
时段 2001-2012
总患者 46,520(patients 表;成人 38,597 + 2001-2008 新生儿 7,870)
住院/停留 成人住院 49,785(总数 53,423);成人 ICU 停留 58,976(icustays 表 61,532 含新生儿)
表数 26 张关系表(标识 3 / 字典 5 / 事实 13 / 叙事与流转 5)
最大表 chartevents 330,712,483 行(3.31 亿)
文本 noteevents 2,083,180 条(出院小结/病程/护理/放射/心电报告)
实验室 labevents 27,854,055 行,d_labitems 753 个项目
用药/输液 prescriptions 4,156,450;inputevents_cv 17,527,935 + inputevents_mv 3,618,991
编码 ICD-9 诊断 651,047 / 操作 240,095;CPT 573,146;DRG 125,557
死亡 院内(admissions)+ 院外(SSA Death Master File,patients.DOD)
人口学 median 年龄 65.8(52.8-77.8);55.9% 男性;院内死亡率 11.5%
停留时长 median ICU 2.1 天(1.2-4.6);median 住院 6.9 天(4.1-11.9)
密度 平均每住院 4,579 chartevents + 380 labevents
格式 CSV 压缩包 + PostgreSQL/MySQL/MonetDB 建表脚本
访问 Credentialed(CITI 课程 + DUA 1.5.0)
DOI 10.13026/C2XW26(v1.4)/ 10.13026/cd7z-wg25(concept)

§3.2 数据发布口径地图

官方宣传与表内实测之间隔着一个"口径阶梯",逐级对齐如下:

  • “over forty thousand patients”(官方页首语)→ 实指 patients 表 46,520 人(含新生儿)。
  • “38,597 adult patients / 49,785 hospital admissions / 58,976 ICU stays”(官方摘要口径)→ 16 岁以上、且有 ICU 停留记录的人群。
  • “53,423 distinct hospital admissions”(Sci Data 正文)→ 成人住院总数(多出 3,638 次为未进入 ICU 的成人住院)。
  • “7,870 neonates”(Sci Data 正文)→ 2001-2008 年新生儿(不进成人统计)。
  • 表实测(ricu 论文):patients 46,520 / admissions 58,976 / icustays 61,532。
  • 一致性验证:53,423(成人住院总)+ 7,870(新生儿住院)- 重叠修正 ≈ admissions 表 58,976 行(新生儿中部分与成人共用住院行的边界情况造成小差值,逐项核算以 mimic-code 文档为准)。

§3.3 DAIMS 数据AI就绪度评估

维度 评分 说明
机器可读性 9/10 标准 CSV+SQL schema;20 年工具链成熟;扣 1 分于双系统 itemid 分叉
文档完备性 9/10 官方 mimiconcepts 词典+mimic-code SQL+四任务基准;几乎每个坑都有社区答案
数据质量 6.5/10 护理验证提高可靠性,但转录噪声/单位错误/时序倒置真实存在;v1.4 修复了已知批次问题
语义标准化 6/10 ICD-9 已淘汰(美);labitemid/d_items 为私有字典;跨库概念映射靠 mimic-code
时间语义 5.5/10 date shift 破坏绝对时间;EST 统一后跨库时区一致性尚可;床旁时刻≠记录时刻
可复现性 9.5/10 benchmark 切分+Zenodo+官方 SQL 队列定义——同业最强
合规摩擦 中 CITI+DUA 一次性成本约 1-2 周;AWS 路径适合云上团队
综合 7.6/10 以 2016 年标准近乎满分;2020 年代的主要短板是 schema 老化(MIMIC-IV 已重构)

§3.4 存储与计算需求

  • 磁盘:CSV 压缩包约 6-7 GB;PostgreSQL 导入后约 47 GB(含索引)——预留 80 GB 稳妥。chartevents 一表约占三分之二。
  • 导入时长:mimic-code 官方脚本在 4 核/16GB 实例约 4-8 小时(chartevents COPY 占大头);可按表拆分并行。
  • 内存:全表 JOIN 查询建议 16 GB 起;常规队列构建(icustays+chartevents 子查询)8 GB 可行。
  • 轻量替代:Google BigQuery 公共镜像(早期版本)、AWS Athena/SageMaker 教程路径——免导入但版本旧、行数与 v1.4 有出入,正式研究仍以本地 PostgreSQL v1.4 为准。
  • 探索期建议:先只导 6 张核心表(patients/admissions/icustays/chartevents/labevents/d_items)即可完成 80% 的原型工作,其余 20 张表按需补导。

§3.5 获取通道

  1. PhysioNet 官网:注册 → CITI “Data or Specimens Only Research” 证书上传 → 签 DUA 1.5.0 → 审批(约 1 周)→ 网页或 wget 下载 CSV 包。
  2. AWS S3:bucket mimic-iii-physionet(us-east-1);在 PhysioNet 账户里填 AWS 账号 ARN 申请授权——数据不落本地,适合 EMR/Athena/Glue 工作流。
  3. GCP BigQuery:mitdb 镜像由社区维护(非官方 v1.4 完整镜像),用于教学原型。
  4. mimic3-benchmarks 快速路径:benchmarks 官方不提供数据,需自备 MIMIC-III CSV 后跑 5 条脚本(§4.5)。
  5. Demo 版:MIMIC-III Demo(100 患者子集,本系列 491 条目)开放给快速试手——但数字与全库不可比。

§3.6 口径对齐表

想回答的问题 用的口径 数字
库里一共多少人? patients 表行数 46,520
多少成人患者? 官方成人口径 38,597
多少次住院? 成人/有 ICU 停留住院 49,785(总 53,423)
多少次 ICU 停留? 官方成人口径 58,976(表 61,532 含新生儿)
论文里写"40,000+ 患者"对吗? 模糊语 ≈46,520 总(含新生儿),不可当成人
benchmark 数据多大? Harutyunyan 队列 33,798 患者/42,276 停留
chartevents 多少行? v1.4 实测 330,712,483

§3.7 版本选择纪律

  • 一律 v1.4:所有公开镜像(BigQuery/Athena 教程)多为 v1.2/v1.3——数字对不上 3.31 亿行口径。正式研究必须本地导入 v1.4 并在方法学段落写明。
  • 引用版本号而非"MIMIC-III":官方要求引用时用全称"MIMIC-III v1.4"(PhysioNet Usage Notes 原文),并附 DOI 10.13026/C2XW26。
  • 与 MIMIC-IV 的取舍:2008 年后的问题优先 MIMIC-IV(schema 现代、持续维护、概念统一);MIMIC-III 不可替代的场景:2001-2008 段、CareVue 特有概念、与历史文献直接可比(20 年论文都用 III)。
  • 不混用年份段:跨 CareVue/MetaVision 的研究必须分层报告或做敏感性分析(§2.5)。

§3.8 26 表逐表行数详表(v1.4 实测)

表 行数 职能 关键字段
chartevents 330,712,483 床旁观测总表 itemid/charttime/valuenum/valueuom
labevents 27,854,055 实验室检验 itemid/charttime/value/flag
inputevents_cv 17,527,935 CareVue 输液 itemid/rate/amount/starttime
datetimeevents 4,485,937 日期型观测 itemid/valueuom
outputevents 4,349,218 出量(尿量等) itemid/charttime/value
inputevents_mv 3,618,991 MetaVision 输液 endtime/weight/amountuom
prescriptions 4,156,450 药嘱 drug/dose_val_rx/route
icustays 61,532 ICU 停留 intime/outtime/first_careunit/dbsource
admissions 58,976 住院 admittime/dischtime/admission_type/deathtime
patients 46,520 患者主表 gender/dob/dod
diagnoses_icd 651,047 ICD-9 诊断 seq_num/icd9_code
microbiologyevents 631,726 微生物培养 org_name/spec_itemid/ab_itemid
cptevents 573,146 CPT 操作/收费 cpt_cd/cpt_category
transfers 261,897 院内流转 prev_careunit/curr_careunit
procedures_icd 240,095 ICD-9 操作 seq_num/icd9_code
procedureevents_mv 258,066 MetaVision 操作 itemid/starttime
noteevents 2,083,180 自由文本 category/description/text
drgcodes 125,557 DRG 分组 drg_code/drg_severity
callout 34,499 离科申请 outcome/callout_wardid
services 73,343 医疗服务 team curr_service
d_items 12,487 图表概念字典 label/linksto/dbsource
d_icd_diagnoses 14,567 ICD-9 诊断字典 short_title/long_title
caregivers 7,567 医护脱敏 ID label
d_icd_procedures 3,882 ICD-9 操作字典 short_title
d_labitems 753 实验室项目字典 label/loinc_code
d_cpt 134 CPT 字典 category/subcategory
(合计 26 表) ≈3.98 亿行 — —

§3.9 案例质量分层画像(预扫描协议)

拿到库后先跑四类分层扫描再定研究队列:

分层 判据 处理建议
A:超短停留 ICU 停留 <12h 或 <6h 死亡/转出混杂重;按 benchmark 口径过滤(≥某阈值小时数)
B:新生儿混入 年龄 <16 或 dob 异常 成人研究显式 age >= 16 过滤(注意 date shift 后年龄要用 anchors 计算,§6.5 坑点 3)
C:双系统交界 dbsource 分组统计 CareVue/MetaVision 分层或敏感性分析
D:单位异常 valuenum 超出生理范围 用 mimic-code 的 valid ranges 过滤(benchmark 管线内置)
E:文本缺失 noteevents 无 discharge summary 早期 CareVue 患者文本覆盖率低;NLP 研究先统计覆盖率

§3.10 "停留"概念的时间口径解剖

"停留"在 MIMIC-III 里有三个不同的时间对象,混用即错:

概念 时间来源 语义 常见误用
住院时长 admissions.admittime→dischtime 含 ED 等待/普通病房/ICU 全程 当"ICU 时长"用
ICU 停留时长 icustays.intime→outtime 单次 ICU 段 多次 ICU 停留只取一次丢信息
机械通气时长 chartevents 呼吸机条目/procedureevents 通气暴露 当"总 ICU 时长"用

LOS 任务的"停留"=ICU 停留(benchmark 口径);再入院研究的"住院间隔"=两次 admissions 的 admittime 差。一个易混点:同一住院可有多次 ICU 停留(转出后再入 ICU),benchmark 的"episode"即按 icustay 切——把 icustay_id 当 hadm_id 用是最常见的队列泄漏源之一。

§4 数据结构

§4.1 三级主键对象模型

MIMIC-III 的实体关系是一棵严格的三级树:

patients (subject_id, 46,520)
  └─ admissions (hadm_id, 58,976)          # 每患者 1..n 次住院
       └─ icustays (icustay_id, 61,532)    # 每住院 0..n 次 ICU 停留
            ├─ chartevents   (icustay_id)  # 床旁观测流
            ├─ inputevents_* (icustay_id)  # 输液流
            ├─ outputevents  (icustay_id)  # 出量流
            └─ procedureevents_mv / ...
       ├─ labevents / microbiologyevents    # 住院级(多数有 icustay 归属)
       ├─ diagnoses_icd / procedures_icd / drgcodes / cptevents
       └─ noteevents (hadm_id 可空!)        # 部分文本无住院归属

三个结构性注意:①noteevents 的 hadm_id 可为空(住院前/后的独立记录),文本研究不能假设全覆盖;②icustays 的科室是"首次入科"口径,ICU 内转科由 transfers 表补全;③labevents 有部分行仅挂 subject_id 无 hadm_id(门诊/住院前检验),队列构建要显式处理。

§4.2 PostgreSQL 导入(实战)

# 1) 建库与用户
createdb mimiciii
# 2) 拉取 mimic-code 官方建表脚本(PostgreSQL 版)
git clone https://github.com/MIT-LCP/mimic-code.git
# 3) 建 26 张表(create_tables 脚本)
psql -d mimiciii -f mimic-code/mimic-iii/buildmimic/postgres/1.4/create_tables.sql
# 4) 批量 COPY 导入(编辑 load_7z.sql 指向解压后的 CSV 目录)
psql -d mimiciii -v ON_ERROR_STOP=1 -f load_7z.sql
# 5) 验证行数(应以 330,712,483 结束)
psql -d mimiciii -c "SELECT COUNT(*) FROM chartevents;"
# 6) 建约束与索引(加速 JOIN)
psql -d mimiciii -f mimic-code/mimic-iii/buildmimic/postgres/1.4/add_constraints.sql

§4.3 核心查询实战:24 小时死亡队列

-- 首次 ICU 停留 + 人口学 + 结局( adult 首住队列,社区标准骨架)
WITH first_stay AS (
  SELECT i.subject_id, i.icustay_id, i.hadm_id, i.intime, i.outtime,
         i.first_careunit, a.admittime, a.dischtime, a.deathtime,
         a.hospital_expire_flag,
         ROUND( (EXTRACT(EPOCH FROM (i.intime - p.dob)) / 60.0 / 60.0 / 24.0
                 / 365.25)::numeric, 1 ) AS age,   -- date shift 后按 intime-dob 算龄
         ROW_NUMBER() OVER (PARTITION BY i.subject_id ORDER BY i.intime) AS rn
  FROM icustays i
  JOIN admissions a ON i.hadm_id = a.hadm_id
  JOIN patients  p ON i.subject_id = p.subject_id
)
SELECT f.icustay_id, f.age, f.first_careunit, f.hospital_expire_flag
FROM first_stay f
WHERE f.rn = 1
  AND f.age >= 16
  AND EXTRACT(EPOCH FROM (f.outtime - f.intime)) / 3600.0 >= 12;  -- 过滤超短停留

要点:年龄必须用 intime - dob 计算(dob 已被 date shift,但差值保留年龄——官方 mimic-code 的 age 函数同此逻辑);hospital_expire_flag 是院内死亡的标准结局列;超短停留阈值(12h)与 benchmark 对齐以便可比。

§4.4 itemid 双系统映射(实战核心)

跨 CareVue/MetaVision 查任何临床概念,第一步是映射:

-- 例:心率 = CareVue itemid 211 ∪ MetaVision itemid 220045
SELECT icustay_id, charttime, valuenum
FROM chartevents
WHERE itemid IN (211, 220045)          -- 心率双码
  AND valuenum IS NOT NULL
  AND valuenum BETWEEN 0 AND 300;      -- 生理合理域(benchmark valid ranges)
常用双码对照(完整映射用 mimic-code 的 mimic-concepts):
心率        211 (CV) / 220045 (MV)      收缩压  51 (CV, 有创 442/455) / 220179 (MV)
呼吸频率    618 (CV) / 220210 (MV)      体温    676/677/678 (CV) / 223761/223762 (MV)
血氧饱和度  646 (CV) / 220277 (MV)      白细胞  1127/1542 (CV) / 220546 (MV)

工程化建议:把双码映射固化为 SQL 视图(CREATE VIEW hr AS ...),全项目统一引用视图而非散写 itemid——这是 mimic-code “concepts” 目录的设计思想,直接搬用。

§4.5 benchmark 数据管线(实战)

git clone https://github.com/YerevaNN/mimic3-benchmarks.git
cd mimic3-benchmarks && export PYTHONPATH=$(pwd)

# 1) 按患者抽出全部事件(约 1 小时)
python -m mimic3benchmark.scripts.extract_subjects /path/to/mimiciii/csv data/root/
# 2) 事件校验(修复缺 icustay_id 等,保留约 80% 事件)
python -m mimic3benchmark.scripts.validate_events data/root/
# 3) 按停留切分 episode(时序 CSV + 结局 CSV)
python -m mimic3benchmark.scripts.extract_episodes_from_subjects data/root/
# 4) 统一切分 train/test(四任务共用)
python -m mimic3benchmark.scripts.split_train_and_test data/root/
# 5) 生成四个任务目录(+可选 multitask)
for t in in-hospital-mortality decompensation length-of-stay phenotyping multitask; do
  python -m mimic3benchmark.scripts.create_$t data/root/ data/$t/
done

产出形态:data/{task}/{train,test}/listfile.csv(每行 icu_stay, period_length, label)+ 每停留一个时序 CSV。特征 76 维(§5.0 特征表)。切分唯一且四任务共享——这是"不同论文可比"的技术前提。

§4.6 与 MIMIC-IV / 波形库的关联协议

  • 与 MIMIC-IV:subject_id 不互通。可行做法是概念级对照(同一概念双库各拉队列比较分布),而非患者级 JOIN。2008-2012 重叠年段的人群差异(入组规则:III 收 ICU 停留、IV 收 ED/ICU)要在论文里写明。
  • 与 MIMIC-III Waveform(本系列 487 条):波形库自带 matched clinical data 的患者列表(record_id ↔ subject_id 映射表在其官网),临床侧字段查本库、信号侧查波形库,以 subject_id+时间窗对齐(注意两侧 date shift 偏移不同,对齐协议见 487 条目 §4.6)。
  • 与 eICU:无患者互通;主要用于"单中心发现→多中心验证"的两段式设计。
  • 与 MIMICEL(489 条):MIMICEL 基于 MIMIC-IV-ED,与本库无直接键接——ED 流程视角的十年前历史对照需自行按 admissions 的 emergency 标志近似。

§4.7 数据血缘

BIDMC 床旁信息系统 (CareVue, 2001-2008)
BIDMC 医院 EHR / MetaVision (2008-2012)
SSA Death Master File
        │ 去标识化(date shift + PHI 清洗 + IRB:MIT & BIDMC)
        ▼
MIMIC-III v1.0 (2015-08-25)
        │ v1.1-v1.3 迭代(MetaVision 补全等)
        ▼
MIMIC-III v1.4 (2016-09-02, 终版) ──┬──► mimic-code(概念 SQL/量表)
        │                           ├──► mimic3-benchmarks(四任务, Zenodo 2018)
        │                           └──► AWS S3 mimic-iii-physionet
        └──► MIMIC-IV (2020-, schema 重构, 2008-2019) ──► MIMIC-IV-Note/ED/Waveform 等

§4.8 完整性清单

  • [x] 26 张表全部有官方建表脚本(mimic-code)与文档页(mimic.physionet.org)
  • [x] 时区统一 EST(v1.4 #186);文本内日期与结构化日期对齐(#60)
  • [x] 已知重复/单位错误批次修复(#193/#196/#197)并有 release notes 逐条可溯
  • [ ] 无清洗保证:官方明确"不做数据清洗以反映真实临床数据"(MIMIC-IV 构建文档同此原则,III 一脉相承)
  • [ ] 文本覆盖率非全量:早期患者部分类型 notes 缺失
  • [ ] 概念字典非全量:chartevents 3.31 亿行中大量为 text/杂项概念,数值分析前先按 d_items.param_type 过滤

§4.9 noteevents 处理(实战)

import pandas as pd, re

notes = pd.read_csv("NOTEEVENTS.csv.gz", low_memory=False)
# 1) 类别与描述分布(先看规模再抽文本)
print(notes.groupby(["CATEGORY"]).size().sort_values(ascending=False))

# 2) PHI 占位符统计(预处理主目标)
ph_pat = re.compile(r"\[\*\*[^\]]+\*\*\]")
notes["n_phi"] = notes["TEXT"].str.count(ph_pat)

# 3) 清洗:占位符→类型 token;换行规范化;出院小结只取 Report/Addendum
notes["text_clean"] = notes["TEXT"].str.replace(
    ph_pat, "[PHI]", regex=True).str.replace("\r\n", "\n", regex=False)
ds = notes[(notes["CATEGORY"] == "Discharge summary")]

# 4) v1.4 专属:Addendum 与主报告可区分(release note #199)
main  = ds[ds["DESCRIPTION"] == "Report"]
addn  = ds[ds["DESCRIPTION"] == "Addendum"]
print(f"discharge summaries: main={len(main)}, addendum={len(addn)}")

§4.10 时序特征抽取(死亡预测前置)

-- 76 维 benchmark 特征的骨架示例:4 小时桶聚合心率/收缩压/血氧
SELECT ce.icustay_id,
       FLOOR(EXTRACT(EPOCH FROM (ce.charttime - i.intime))/3600/4) AS bucket_4h,
       AVG(CASE WHEN ce.itemid IN (211,220045) THEN ce.valuenum END) AS heart_rate_mean,
       MIN(CASE WHEN ce.itemid IN (211,220045) THEN ce.valuenum END) AS heart_rate_min,
       MAX(CASE WHEN ce.itemid IN (211,220045) THEN ce.valuenum END) AS heart_rate_max,
       COUNT(CASE WHEN ce.itemid IN (211,220045) THEN 1 END)          AS heart_rate_count
FROM chartevents ce
JOIN icustays i USING (icustay_id)
WHERE ce.itemid IN (211,220045)
GROUP BY 1, 2;

设计要点(benchmark 同款):每变量出 min/max/mean/count 四统计;count 列本身就是特征(观测频率是病情信号);桶间隔 4 小时(benchmark 对 1h 桶与 4h 桶均提供基线);Lab 用 labevents(itemid 单轨)无双码问题。

§4.11 anchor age 与 date shift 对齐(实战)

date shift 后年龄的唯一安全算法(与 mimic-code 一致):

-- anchor_age:以首次住院为锚计算年龄(结果为整数岁)
WITH first_adm AS (
  SELECT subject_id, MIN(admittime) AS first_admittime
  FROM admissions GROUP BY subject_id
)
SELECT p.subject_id,
  ROUND( (EXTRACT(EPOCH FROM (f.first_admittime - p.dob)) / 3600.0 / 24.0 / 365.25)
         )::INT AS anchor_age,
  p.gender
FROM patients p JOIN first_adm f USING (subject_id);

错误示范(禁用):EXTRACT(YEAR FROM admittime) - EXTRACT(YEAR FROM dob)——dob 与 admittime 的偏移量按患者随机生成、彼此独立,直接取年份差会出 -50 到 300+ 的荒谬值。同一患者的偏移量在其所有行中一致,因此"同一时刻差"永远安全——这就是 anchor 思想:所有年龄/间隔计算都化为同一患者内的时间差。

§4.12 宽表转换(长→短格式,实战)

chartevents 是超长表,建模前要转成"每停留一行 × 每概念一列":

import pandas as pd

# 只取双码核心五组,先在 SQL 里过滤(避免把 3.31 亿行拉进内存)
q = """
SELECT icustay_id, charttime,
  CASE WHEN itemid IN (211,220045) THEN 'hr'
       WHEN itemid IN (51,442,455,220179) THEN 'sbp'
       WHEN itemid IN (618,220210) THEN 'rr'
       WHEN itemid IN (646,220277) THEN 'spo2'
       WHEN itemid IN (676,677,678,223761,223762) THEN 'temp'
  END AS concept, valuenum
FROM chartevents
WHERE icustay_id IN (SELECT icustay_id FROM icustays LIMIT 5000)
  AND valuenum IS NOT NULL
"""
df = pd.read_sql(q, conn, parse_dates=["charttime"])

# 长转短:按停留+小时桶 pivot
df["hour"] = (df["charttime"] - df.groupby("icustay_id")["charttime"]
              .transform("min")).dt.total_seconds() // 3600
wide = (df.pivot_table(index=["icustay_id", "hour"], columns="concept",
                       values="valuenum", aggfunc=["mean", "max", "min", "count"]))
wide.columns = [f"{c[1]}_{c[0]}" for c in wide.columns]
wide = wide.reset_index()   # 5000 停留 × 20 统计列——建模的起手宽表

纪律:①pivot 前必须 SQL 端过滤(itemid 白名单+停留子集),全表进 pandas 是内存事故;②四统计(mean/max/min/count)与 benchmark 对齐;③count 列保留(缺失即信息)。

§4.13 DuckDB 轻量路径(免安装 PostgreSQL)

原型期可用 DuckDB 直接读 CSV(免建库、免导入等待):

import duckdb
con = duckdb.connect()
n = con.sql("""
  SELECT COUNT(*) FROM read_csv_auto('CHARTEVENTS.csv.gz')
""").fetchone()[0]
print(n)   # 验证口径:330,712,483(v1.4)

适用边界:原型/教学/抽样分析(DuckDB 列式扫描单表极快);跨表复杂 JOIN+反复迭代的生产研究仍建议 PostgreSQL(mimic-code 脚本生态+约束完整性)。两条路径的行数验证数字必须一致——不一致说明 CSV 不完整。

§5 下游分析协议

§5.0 特征与任务速查

任务 输入窗口 标签 主指标 样本量(train/val/test)
In-hospital mortality 首 48h 院内死亡 AUROC 14,659 / 3,244 / 3,236
Decompensation 每小时滚动 未来 24h 内死亡 AUROC 2,396,001 / 512,413 / 523,208
Length of stay 每小时滚动 剩余停留 10 桶 Cohen’s κ 2,392,950 / 532,484 / 525,912
Phenotyping 整段停留 25 疾病组多标签 Macro-AUROC 29,152 / 6,469 / 6,281

10 桶定义:<1 天;7 个逐日桶(1-7 天);1-2 周;>2 周。25 表型:12 急性(呼吸/肾衰等)+8 慢性(糖尿病等)+5 混合。基准队列死亡阳性率 13%,decompensation 阳性 4.2%(类别不平衡处理是隐藏考点)。

§5.1 任务×资源速查表

你要做的 直接用 别自己造
复现/比较模型 mimic3-benchmarks 切分+评估脚本 自定义切分
构建脓毒症队列 mimic-code Sepsis-3 SQL 手写感染+SOFA 逻辑
算疾病严重度 mimic-code 量表 SQL(SAPS II/OASIS/SOFA) 手算
定义 AKI/贫血等 mimic-concepts 仓库 逐篇论文找定义
文本预处理 §4.9 管线 通用 NLP 清洗直接套用

§5.2 死亡预测协议(标准口径)

  1. 队列:成人(≥16)首次 ICU 停留、停留 ≥12h(与 benchmark 对齐);anchor age 用 intime-dob。
  2. 输入:首 48h 的 76 维时序(含观测频率特征),4h 桶或 1h 桶。
  3. 标签:hospital_expire_flag(admissions 表)——注意"ICU 内死亡"与"院内死亡"是两个结局,选一个并写死。
  4. 指标:AUROC 为主(社区惯例),AUPRC 辅助(阳性 13% 尚可,更不平衡任务必报)。
  5. 基线:必须含 logistic regression(§6.2 后验证明深度模型未必赢)+ channel-wise LSTM(benchmark 官方基线)。
  6. 报告:切分哈希(benchmark 固定 split)、阳性率、缺失处理(缺失掩码+前向填充 vs 零填充分别报告)。

§5.3 恶化预警协议(decompensation)

每小时一个预测点(仅限存活且在 ICU 的时刻),标签=未来 24h 内院内死亡。三个工程要点:①样本量百万级——训练用全部时刻、评估用分层抽样或全部(报告清楚);②同一患者的相邻时刻高度相关——评估必须按停留分组,禁止随机打散后按样本算 CI;③提前预警窗口(如"提前 ≥8h 告警才算有用")是临床价值的关键变量,纯 AUROC 不是。

§5.4 剩余停留时长协议

分类口径(10 桶)为社区标准;回归口径(连续天数)需自报分位误差(MAE 会拖尾,报中位绝对误差)。混淆来源:住院 vs ICU 停留两个"停留"概念(benchmark 用 ICU 停留+院内信息);计划性转院/康复延迟等行政性延长——报告时分"医疗必要停留"与"总停留"两个口径更稳。

§5.5 表型分类协议(phenotyping)

25 组标签由 ICD-9 码映射表定义(benchmark 仓库自带 factorize 脚本);多标签,逐标签 AUROC+Macro-AUROC;不平衡组(低患病率)Macro 指标会被拉爆——同时报 prevalence 加权指标。标签来源是出院结算编码(§2.9 结算语义偏差)——更好的研究用 mimic-concepts 的临床定义(如 AKI 用 KDIGO 肌酐/尿量标准)重算金标准,与 ICD 标签对比本身就是可发表的贡献。

§5.6 方法学段落骨架(直接套用)

本研究使用 MIMIC-III v1.4(DOI 10.13026/C2XW26;Johnson et al., Sci Data 2016)。经 PhysioNet Credentialed Access(CITI 证书与 DUA 1.5.0)获取,本地 PostgreSQL 14 导入(mimic-code 官方脚本,chartevents 330,712,483 行验证通过)。队列:2001-2012 年成人(≥16 岁)首次 ICU 停留且停留时长 ≥12 小时,年龄按 intime-dob 计算(date shift 语义),共 N 例。结局定义:[院内死亡 hospital_expire_flag / mimic-code Sepsis-3 / …]。特征:[76 维 benchmark 特征 / …],4 小时桶聚合,缺失掩码+前向填充。评估:benchmark 官方 train/test 切分(与四任务可比),AUROC[±95%CI, bootstrap 1000] 与 AUPRC;按停留分组的聚类稳健标准误。代码与切分哈希:[repo/zenodo 链接]。

§5.7 跨库迁移与现代化协议

从 MIMIC-III 迁移到 MIMIC-IV(或双库并行)的字段对照骨架:

概念 MIMIC-III MIMIC-IV 迁移注意
ICU 停留 icustays.icustay_id icustays.stay_id 键名变更
住院 admissions.hadm_id admissions.hadm_id 相同
入 ICU 时间 icustays.intime icustays.intime 相同
输液 inputevents_cv + inputevents_mv inputevents(合并) MV/CV 统一为itemid 映射表(d_items 重排)
心率 itemid 211/220045 itemid 220045 仅 MetaVision 段
实验室 labevents(d_labitems) labevents(d_labitems 重排) loinc 对齐更完整
文本 noteevents(混合类别) discharges/radiology 分表 拆分更清晰
年龄 intime-dob 手算 anchor_age 现成列 IV 内置

迁移策略:方法学回溯研究保持 III 不动;新问题用 IV 原生 schema;"双库同题"论文用概念级对齐(同一临床定义在两库各实现一次)——这本身就是可发表的方法学贡献。

§6 实证结果与方法学分析

§6.1 规模实证:3.31 亿行的分布形态

chartevents 的 3.31 亿行并非均匀分布:数值型概念(心率/血压/血氧等连续监护)贡献了绝大多数行,而 d_items 的 12,487 个概念中大量为低频文本型条目。每住院平均 4,579 条 chartevents 的中位数会更低——分布右偏,长尾患者(长期机械通气、ICU 滞留数月)贡献超比例行数。工程含义:按 icustay_id 随机抽 1% 停留做原型开发,再放量到全库;EXPLAIN ANALYZE 应成为习惯,chartevents 上无脑 JOIN 会拖死开发节奏。

§6.2 210 模型后验:领域进展的可测量性危机

arXiv:2010.01149 的系统复现(19 篇论文/210 个模型/统一 benchmark 切分)给出三个改变写法的结论:

  1. 死亡预测与停留时长:深度模型与 logistic 回归的性能差无统计学显著性;历年论文报告的"提升"在统一基准下呈噪声形态(趋势斜率与 0 无显著差异)。
  2. 表型分类与恶化预警:深度模型略优,但幅度不足以支撑"架构创新"叙事。
  3. 方法论含义:医疗时序 ML 的瓶颈在标签质量、特征工程与外部验证,而非模型架构——这为后来的多模态转向(文本/影像/波形进入)与"先修数据再上模型"的工程路线提供了实证背书。

写论文的实用含义:任何在 MIMIC-III benchmark 上的"+0.01 AUROC"式声明都需要 bootstrap CI 与多 seed;没有 LR 基线的深度学习论文已过不了多数审稿人这关。

§6.3 时间戳语义的实证代价

三处容易被忽略的时间语义陷阱:①床旁时刻 vs 记录时刻:护士批量录入使 charttime 聚在整点/半点,"实测时刻"早于"记录时刻"可达数十分钟——小时级特征桶化时边界抖动;②date shift 的患者内一致性:同患者全部表共享同一偏移,患者内时序完全可靠(这是能做多变量时序建模的前提),跨患者相对时间无意义;③intime/outtime 的口径:icustays 的 intime 来自 transfers 流转记录,与 chartevents 首条观测时刻可能有几分钟到几小时的错位——"停留起点"的两种定义都会在文献中遇到,论文里写明即可。

§6.4 itemid 与单位语义的实证代价

  • 双系统分叉使"同名不同码/同码不同义"并存;CareVue 与 MetaVision 的同类概念在 d_items 里 label 接近但 itemid 完全不同(§4.4 对照表)。
  • 单位陷阱实例:v1.4 修复的 #196(inputevents_mv 的 amount 列曾对应"基础单位"而非 amountuom,克/毫克错位)、#193(CD 计数与百分比混淆)——都在官方 release notes 里逐条可溯,说明"直接信任 valuenum"在历史版本上翻过车。当前版本虽已修复,但自定义单位校验(生理合理域过滤)仍是标配。
  • 输液速率 vs 总量的列选择(rate/amount)在 cv 与 mv 两表字段语义不同——跨表 UNION 前逐字段对齐官方 schema 图。

§6.5 八个真实坑点

  • 坑点 1 口径混用:把 58,976(成人 ICU 停留)当"住院数"、把 46,520 当"成人患者数"——两个都是错的(住院=49,785;成人=38,597)。写数字前回 §1.7 四层口径速记。
  • 坑点 2 新生儿混入:不过滤 age≥16 会把 7,870 名新生儿(2001-2008)拉进成人队列——icustays 里新生儿段真实存在且 dbsource=carevue。
  • 坑点 3 年龄计算错误:YEAR(admittime)-YEAR(dob) 因 date shift 双向偏移可出负数或 300+ 岁——必须用 intime-dob 的差值换算(mimic-code 的 anchor age)。
  • 坑点 4 单 itemid 查询:只用 211 查心率会丢掉全部 MetaVision 患者(220045)——任何临床概念先查双码映射。
  • 坑点 5 benchmark 切分再随机化:对官方切分再做自己的 random split 后与文献比较——不同切分下 AUROC 差异可达数个百分点,比较无效。
  • 坑点 6 时区假设:v1.3 及之前混有 EST/本地时间,v1.4 才统一 EST(#186);旧镜像(BigQuery 老版本)上做时辰节律研究会得出伪周期。
  • 坑点 7 noteevents 偏移错位:v1.3 及之前的文本日期用 MIMIC-II 偏移(2500-3500 年怪象)——文本时间特征必须基于 v1.4。
  • 坑点 8 "终版"误判:v1.4 后 PhysioNet 页面仍会更新文档/勘误(如 itemid 注释),但数据不再变——遇到"数字对不上"先查自己是不是旧镜像,而不是等官方改数。

§6.6 审稿人自查清单

  • [ ] 明确写出版本号(MIMIC-III v1.4)与 DOI(10.13026/C2XW26)
  • [ ] 队列定义给出 SQL 或等价伪码(成人/首住/≥12h 等每个过滤条件的行数漏斗)
  • [ ] 年龄计算方法声明(intime-dob)
  • [ ] 双系统处理声明(itemid 映射来源、dbsource 分层与否)
  • [ ] 死亡结局口径(院内 vs ICU 内 vs 30 天;30 天需声明 SSA 窗口限制)
  • [ ] benchmark 任务声明切分哈希;自定义任务声明切分策略与泄漏防控
  • [ ] 基线含 logistic regression;指标含 CI
  • [ ] 局限性段含单中心/双系统/结算编码标签三个必选项
  • [ ] 数据可用性与合规声明(CITI+DUA;不转分发)

§6.7 与 MIMIC 家族的分工治理

本系列在 486-489 条目建立了"三视角"治理叙事:记录视角(本条:临床事实的完整副本)、信号视角(486-488:波形与数值的物理层)、流程视角(489:事件日志的患者旅程抽象)。MIMIC-III 是记录视角的历史主库——它的角色正逐步让位给 MIMIC-IV(记录视角现任主库),但历史文献可比性使其在"元研究"(研究这个领域如何研究)中不可替代。引用纪律:方法学研究引用 MIMIC-III+MIMIC-IV 双库验证正在成为新惯例。

§6.8 许可与派生语义

  • 文件许可:PhysioNet Credentialed Health Data License 1.5.0——免费用于研究,禁止再识别、禁止转分发、商用需另行授权。
  • 训练产物:在 MIMIC-III 上训练的模型权重是否"派生数据"存在灰色地带——社区惯例(含多家 SaaS 公司实践)是"模型可部署、权重不得反向重建患者记录";严谨项目在发布模型时附 DUA 声明。
  • 衍生工具链许可分层:mimic-code 是 MIT 许可(代码自由),数据始终受控——"代码开放+数据受控"的双层结构是该家族的标准治理模式。
  • CITI 课程:一次完成全平台通用(PhysioNet 全库复用),团队协作时每名成员独立持证(不共享账号——共享是取消授权的常见原因)。

§6.9 口径存照

  • 存照 A(58,976 的双重身份):官方"成人 ICU 停留"=58,976 与 admissions 表行数=58,976 数值巧合,语义无关(本条目 §1.7)。
  • 存照 B(46,520/38,597/33,798 三级患者数):总患者/成人患者/benchmark 队列——同一数据集三个"患者数",引用必须带口径。
  • 存照 C(发布日期三表述):release notes"2 September 2016"、版本列表"Sept. 4, 2016"、归档页"4 September, 2016"——以 release notes 为主。
  • 存照 D(chartevents 3.31 亿为 v1.4 实测):ricu 论文逐表实测(arXiv:2108.00796);旧镜像/教程数字(如 BigQuery 公共表)与 v1.4 有出入。
  • 存照 E(benchmark 死亡阳性率):基准队列 13% 是"院内死亡 in-hospital"口径,与全库 11.5% 院内死亡率(Sci Data 表 1)因队列过滤不同而不同——两个数字都真实、不可互换。

§6.10 静态日志×动态工具生态

MIMIC-III 数据已冻结(static),但其工具生态仍活跃(dynamic):mimic-code/concepts 持续合并社区 PR、benchmark 仓库仍有 issue 修复、新的第三方包装(duckdb/polars 读取器)陆续出现。实用策略:数据锁 v1.4 不动摇,工具跟社区更新——每次升级工具后重跑一次行数验证(330,712,483)确认数据未被动过。

§6.11 与文献数字冲突的诊断树

论文 A 的"MIMIC-III 死亡 AUROC 0.89"与你的 0.84 对不上?按顺序查:

  1. 队列口径:38,597 全成人 vs 33,798 benchmark 队列 vs 自定义子集(如 sepsis-only)——阳性率与难度都不同。
  2. 切分方式:官方固定切分 vs 自切分 vs 时序切分——自切分常因泄漏虚高。
  3. 输入窗口:首 48h vs 全停留 vs 24h——benchmark 是首 48h 死亡任务。
  4. 结局定义:院内 vs ICU 内 vs 30 天——hospital_expire_flag 是院内。
  5. 标签处理:class_weight/重采样不改 AUROC 排序但改变校准;不同阈值指标(accuracy/F1)不可跨文比较。
  6. 特征版本:benchmark 76 维官方版 vs 自定义特征集。
  7. 版本镜像:v1.4 vs 老镜像(v1.2/v1.3 数字系统性偏移)。

绝大多数冲突在第 1-2 步解决;跨论文比较的唯一安全方式是"同切分同指标同窗口"——benchmark 的价值即在此。

§7 AI 就绪指南与应用场景

§7.1 四种喂法

  1. 表格时序喂法(最成熟):benchmark 管线 → 76 维桶化时序 → LR/LSTM/Transformer。适合死亡/恶化/停留/表型四任务,可比性最强。
  2. SQL 队列喂法(最常用):mimic-code 概念 SQL 拉疾病队列 → 任意下游。适合"问题导向"研究(脓毒症/AKI/机械通气)。
  3. 文本喂法(NLP/LLM):noteevents 按 §4.9 清洗 → 摘要/抽取/分类/RAG。LLM 时代新增用法:把 discharge summary 喂给临床 LLM 做零样本评测(注意 DUA 下不能上传到无 BAA 的云端 API——本地部署或合规云)。
  4. 多模态喂法(前沿):表+文+(经 487 条目波形库的)信号三流对齐——用 subject_id/icustay_id+时间窗;当前文献里最强的性能增益多来自此。

§7.2 死亡预测最小配方(可跑通版)

# 数据:mimic3-benchmarks 的 in-hospital-mortality 目录
import numpy as np, pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
from mimic3benchmark.readers import InHospitalMortalityReader as R

def load(split):
    rd = R(dataset_dir=f"data/in-hospital-mortality/{split}",
           listfile="listfile.csv")
    return [(rd.read_example(x)["X"], y) for x, y in rd._Y.items()]

tr, te = load("train"), load("test")
def feat(rows):   # 简易聚合:76 维时序 → 均值向量(正式做法用 discretizer)
    return np.nanmean(np.nan_to_num(np.stack([
        r["mean"].values if hasattr(r, "columns") else r for r, _ in rows]), 0), axis=1)

# LR 基线(§6.2 的教训:先跑 LR 再谈深度)
Xtr = np.stack([np.nanmean(r, axis=0) for r, _ in tr])
ytr = np.array([y for _, y in tr])
Xte = np.stack([np.nanmean(r, axis=0) for r, _ in te])
yte = np.array([y for _, y in te])
lr = LogisticRegression(max_iter=1000, class_weight="balanced").fit(Xtr, ytr)
print("LR AUROC =", round(roc_auc_score(yte, lr.predict_proba(Xte)[:, 1]), 4))
# 参考区间:benchmark 论文 LR 基线约 0.83-0.85(切分/特征处理差异会移动 0.01-0.02)

§7.3 LLM+noteevents 配方

  • 任务选择:出院摘要 → 自动 ICD 编码(对照 diagnoses_icd 金标准)、放射报告 → 异常抽取(对照结构化影像事件)、病程 → 24h 死亡风险(对照真实结局做校准曲线)。
  • 合规第一:DUA 禁止把数据上传至无 BAA 的第三方 API——用本地开源模型(8B 级即可做摘要)或签署 BAA 的合规云。
  • PHI 残留处理:[**...**] 占位符替换为类型 token(§4.9),否则 tokenizer 会产出大量低频噪声 token 拉高序列长度。
  • 评测设计:v1.4 的 Addendum 区分(#199)允许"主报告+增补"级联评测——增补里常含关键新信息,是检验模型增量理解能力的天然测试集。
  • 防泄漏:同一患者的多次住院严禁跨 train/test——按 subject_id 分组切分,LLM 微调亦然。

§7.4 时序基础模型适配配方

零样本时序基础模型(timeseries FM)在 MIMIC-III 的适配三步:①把 benchmark 的 76 维映射到模型变量表(缺失变量置 NaN+掩码);②重采样到模型原生粒度(多数 1h);③评测锁定 benchmark test 切分与官方 metric 脚本。价值锚点:与 §6.2 的 210 模型后验同台——基础模型若不能显著超越 LR 基线,"通用临床时序表征"叙事需要重审。

§7.5 成本与排期模板

阶段 内容 人力
合规 CITI+DUA+审批 1-2 周(日历时间)
导入 PostgreSQL+约束+验证 0.5-1 天
队列 概念映射+漏斗 3-5 天
建模 LR 基线→主模型→消融 2-4 周
写作 方法学骨架(§5.6)+口径复核 1 周

典型陷阱是低估"队列定义"阶段——一个看似简单的脓毒症队列在 Sepsis-3 框架下要跨 5 张表(§5.5),留足时间。

§7.6 泄漏防控专项

医疗 EHR 特有的四个泄漏源:①事后信息:ICU 停留后写入的出院小结/编码回填——预测任务的输入窗口必须严格截止在预测时刻前(文本类特征尤其危险);②目标泄漏列:deathtime/drgcodes 等直接或近似编码结局的字段绝不可入特征;③跨停留泄漏:复入院患者的既往信息可以入特征(历史真实可得),但切分必须按 subject_id;④锚定泄漏:用 dischtime 推算的任何派生量(如"总停留")只能做回顾特征不能做实时特征。每一条都值得在论文里写一句"我们如何防控"。

§7.7 公平性声明

库内人口学结构(55.9% 男性、白人约七成、65.8 岁中位)决定了模型在女性/少数族裔/低龄段的样本效率劣势;保险/支付代理变量(admission_type 等)与种族的隐性相关是公平性审计的经典对象。最小动作:按性别×年龄段分层报告 AUROC 差值;进阶动作:参照已发表的 MIMIC 公平性基准协议(子群校准误差)。语言注意:MIMIC-III 的 ethnicity 字段为院内登记口径,含类别陈旧问题,引用时保持原值不改写。

§7.8 复现包模板

repo/
├── README.md            # 版本声明:MIMIC-III v1.4 + DOI + 行数验证
├── requirements.txt     # 锁版本(pandas/numpy/sklearn/torch)
├── sql/
│   ├── cohort.sql       # 队列漏斗(每步输出行数)
│   └── features.sql     # 特征(双码映射视图)
├── src/
│   ├── build_benchmark.sh   # §4.5 五步脚本
│   ├── train.py             # LR 基线 + 主模型
│   └── evaluate.py          # benchmark 官方 metric
├── configs/split_hash.txt   # 切分指纹
└── outputs/                 # 指标表+CI

§7.9 消融案例:缺失处理的敏感性

同一切分同一模型,只改缺失策略:前向填充+掩码 vs 零填充 vs 删除高缺失变量。社区经验:观测频率特征(count)承载了大部分"缺失即信息"效应,处理策略对 AUROC 的影响常在 0.01-0.03 之间——小于架构选择的宣传值、大于多数论文愿意报告的量。这个消融的写作价值:它把"我们的提升来自模型"与"来自缺失处理"解耦,堵住审稿人最常用的质疑。

§7.10 消融案例:双系统分层的价值

把死亡预测按 dbsource 分层评估(CareVue vs MetaVision):多数研究观察到 0.01-0.02 级 AUROC 差(MetaVision 侧输入事件记录更全)。实践含义:全量混合训练+分层报告是默认选项;若差值显著,考虑 dbsource 作为协变量或域自适应——这是 MIMIC-III 特有的"时代域偏移",写进 limitations 显得懂行。

§7.11 负结果记录协议

尝试 假设 结果 教训
用 dischtime 派生特征提升实时预测 派生量更丰富 泄漏,离线虚高 输入窗口严格截止预测时刻(§7.6)
年份作为特征提升性能 捕捉年代趋势 对未来部署无意义且分域作弊 年代只做敏感性分析不做特征
逐 patient 随机切分 样本独立 复入院者跨集泄漏 subject_id 分组切分(benchmark 默认)

§7.12 30 天再入院预测配方

MIMIC-III 上的经典任务(文本特征加成最明显的场景之一):

  1. 定义:出院后 30 天内再次 admissions.admittime(计划性再入与紧急再入分别报告——admission_type 可区分)。
  2. 死亡竞争:30 天内死亡者无法再入——生存分析框架(竞争风险)或敏感度分析二选一。
  3. 特征三路:结构化(诊断码+实验室+停留时长)、文本(出院小结 TF-IDF/嵌入——历史文献显示文本特征显著提升)、历史利用(既往住院次数/间隔——复入院者的强预测子)。
  4. 切分:按 subject_id 分组(复入院者的两次住院绝不可分属 train/test)。
  5. 指标:AUROC + AUPRC(阳性率 ~10-20% 视定义)+ 决策曲线分析(临床部署视角)。
  6. 预期量级:结构化-only 约 0.6-0.65,加文本可到 0.68-0.72——低于死亡任务,反映任务本身噪声更高。

§8 伦理、许可与合规

  • 获取合规:CITI “Data or Specimens Only Research” 证书 + PhysioNet DUA 1.5.0;审批约 1 周;每名成员独立持证。
  • 使用红线:禁止再识别/链接外部标识数据重识/转分发原始数据;论文展示不得含可识别组合(罕见值交叉如"110 岁+罕见手术"需聚合)。
  • 发布衍生品:模型权重/统计汇总默认可发布(附 DUA 声明);含原始文本片段(few-shot 示例)需谨慎——官方 FAQ 建议用改写或合成替代。
  • IRB 层面:数据本身的二级研究使用已被 MIT/BIDMC IRB 批准覆盖(多数机构因此豁免本单位 IRB),但临床部署类研究仍需本机构审查。
  • LLM 时代新风险:把数据喂给外部 API 即"向第三方披露"——无 BAA 的云端商用 API 默认不合规;本地部署是零摩擦路径。
  • 学术诚信:引用格式官方要求"MIMIC-III v1.4"+Johnson 2016 论文+PhysioNet 标准引用(Goldberger 2000 Circulation)三件套。

§9 常见问题(FAQ)

Q1 MIMIC-III 免费吗?

数据免费(授权后下载零费用),但需要 CITI 证书与 DUA——成本是时间不是钱。

Q2 拿到数据要多久?

官方口径约 1 周审批;CITI 课程本身 2-4 小时。加急无门,提前规划。

Q3 和 MIMIC-IV 什么关系?

继任者关系:IV 覆盖 2008-2019、schema 重构、持续维护;III 冻结于 2016。新研究默认 IV,历史可比/2001-2008 段用 III。

Q4 患者数到底多少?

四层口径(§1.7):46,520 总 / 38,597 成人 / 53,423 成人住院 / 33,798 benchmark。没有单一"正确答案",只有正确口径。

Q5 能和 486-488 条目的波形库联用吗?

能。波形库(Waveform/Matched Subset)提供 subject_id 映射表与本库关联;注意两侧 date shift 偏移不同。

Q6 一定要装 PostgreSQL 吗?

强烈建议。社区脚本/答案/官方文档都以 PostgreSQL 为主;MySQL/MonetDB 有官方脚本但踩坑少人填。

Q7 数据有多大?

压缩包 6-7 GB;导入后约 47 GB(含索引)。

Q8 chartevents 里最有用的 itemid 有哪些?

心率 211/220045、血压 51/442/455/220179、呼吸 618/220210、SpO2 646/220277——先建这五组双码视图。

Q9 年龄为什么会出现负数?

date shift 后 dob 与 admittime 各自偏移、方向不同——用 intime-dob 差值算(坑点 3)。

Q10 新生儿怎么排除?

age≥16 过滤(intime-dob 口径);7,870 名新生儿集中在 2001-2008(carevue 段)。

Q11 死亡标签用哪个?

院内死亡=hospital_expire_flag(社区标准);ICU 内死亡需额外比对 outtime;30 天死亡用 patients.dod 但声明 SSA 窗口。

Q12 Sepsis-3 队列有现成 SQL 吗?

有,mimic-code 官方仓库(sepsis3 概念)——别自己重写,写完也要和官方对一遍。

Q13 benchmark 四任务必须都用吗?

不必,按需取一;但切分必须共用官方——这是可比性的全部。

Q14 能用自己的切分吗?

能,但从此与文献不可比,论文里要显著声明并说明动机。

Q15 decompensation 的样本量为什么百万级?

每小时一个样本 × 数万停留——它是"监测形态"任务,样本相关性强,评估按停留分组。

Q16 LOS 用回归还是分类?

社区标准是 10 桶分类(κ 指标);回归可行但报告口径需自洽(中位绝对误差优于 MAE)。

Q17 phenotyping 的 25 组从哪来?

benchmark 仓库自带 ICD-9→25 组映射(factorize 脚本),12 急性+8 慢性+5 混合。

Q18 ICD-9 标签可靠吗?

结算驱动,完整性参差(§2.9)——临床定义重算(mimic-concepts)是更优金标准。

Q19 noteevents 里有影像报告吗?

有(Radiology 类别)——放射报告信息抽取/报告生成的经典语料。

Q20 PHI 占位符怎么处理?

正则替换为类型 token(§4.9);不要删除——占位符的位置信息本身有用。

Q21 出院小结的 Addendum 是什么?

出院后的增补记录,v1.4 起可区分(DESCRIPTION=‘Addendum’)。

Q22 时区是什么?

v1.4 统一 EST(#186);旧版本混杂——时间节律研究务必 v1.4。

Q23 文本里的日期为什么是 3000 年?

v1.3 及之前的偏移错位(#60 修复)——旧镜像的坑,v1.4 无此问题。

Q24 inputevents_cv 和 _mv 能 UNION 吗?

能但要逐字段对齐(rate/amount 语义不同);先各自抽 1000 行人工比对再写 UNION。

Q25 药物剂量单位怎么校验?

生理合理域过滤+官方 release notes 的已知错误清单(#196/#193);关键研究抽样人工核对。

Q26 微生物培养表怎么用?

microbiologyevents 按培养事件组织(标本+病原+药敏三段);脓毒症队列的"感染"证据源。

Q27 转科信息在哪?

transfers 表(261,897 行);icustays.first_careunit 只是首科——ICU 内转科要查 transfers。

Q28 医护 ID 能用吗?

caregivers 是脱敏 ID(7,567 个),可做"同一医护"匹配,禁止任何形式的人肉识别。

Q29 数据有没有清洗过?

官方立场"不做数据清洗以反映真实临床"——噪声是特性不是缺陷;清洗发生在你的管线里。

Q30 已知数据错误会修吗?

v1.4 是终版不再修;修复记录在 release notes 里可溯——把已知错误清单过一遍是 QC 起点。

Q31 BigQuery/Athena 镜像能用吗?

原型可以;正式研究不行(版本旧、行数对不上 v1.4)。

Q32 AWS S3 怎么访问?

PhysioNet 账户填 ARN 申请授权 bucket mimic-iii-physionet——免本地下载,适合云工作流。

Q33 Demo 版是什么?

MIMIC-III Demo:100 患者子集,快速试手用(本系列 491 条目);数字与全库不可比。

Q34 和 eICU 怎么选?

方法学开发+深时间窗用 III;多中心外推用 eICU;理想设计是"III 发现→eICU 验证"两段式。

Q35 能做季节性分析吗?

不能——date shift 破坏绝对日期;流感的"季节"在库内是随机的。

Q36 能把两个患者的时间对齐比较吗?

不能跨患者对绝对时间;只能在各自停留内做相对时间。

Q37 repeat admission 常见吗?

成人患者约四分之一有多次住院——按 subject_id 分组切分的根本原因。

Q38 评分量表(SAPS II 等)有现成计算吗?

mimic-code 量表 SQL 全套——算出来的分数还能和原始 chart 数据交叉验证。

Q39 体征每小时一条吗?

理论是,实际不均匀(病情越重越密)——count 特征就是信息。

Q40 缺失怎么处理?

前向填充+缺失掩码是基线;零填充慎用;敏感性分析见 §7.9。

Q41 类别不平衡怎么办?

死亡 13%/恶化 4.2%——class_weight 或 focal loss;AUROC 之外必报 AUPRC。

Q42 深度学习真的比 LR 强吗?

死亡/停留上无显著证据(§6.2);表型/恶化略优——你的论文必须有 LR 基线。

Q43 为什么大家都还用 III 而 IV 更新?

历史可比性+benchmark 生态+论文惯性;新研究建议 III/IV 双库并引。

Q44 引用格式是什么?

“MIMIC-III v1.4”+DOI 10.13026/C2XW26+Johnson Sci Data 2016+Goldberger Circulation 2000。

Q45 数据论文的 PMID?

27219127(Scientific Data 3:160035, 2016)。

Q46 有中文教程吗?

社区较多(中文博客/墨天轮等),质量参差——官方文档+mimic-code 是唯一权威源。

Q47 能用 GPT/Claude 处理 noteevents 吗?

无 BAA 的外部 API 默认违规;本地部署开源模型或合规云(§8)。

Q48 训练的模型权重能公开吗?

社区惯例可(权重非数据),附 DUA 声明;禁止反向重建患者记录。

Q49 统计汇总表能直接发表吗?

小格计数(cells<11 类别)按惯例聚合——重识别风险控制是 DUA 明文要求。

Q50 想做 ED 数据怎么办?

III 无独立 ED 模块(ED 停留在 admissions 里可辨但粒度粗);ED 专用见 MIMIC-IV-ED 及其事件日志 MIMICEL(本系列 489)。

Q51 数据更新会来吗?

不会——v1.4 终版;新数据在 MIMIC-IV 体系(含 IV 的衍生库)。

Q52 遇到数字对不上官方论文怎么办?

先查三件事:版本(v1.4?)、口径(§1.7)、镜像新旧(BigQuery 老表是重灾区)。

Q53 代码示例哪里找?

官方 mimic-code(SQL)+ YerevaNN/mimic3-benchmarks(ML 管线)+本条 §4/§5 的骨架。

Q54 学生课程项目用什么路径?

Demo 版或 benchmark 抽样子集(免全库导入)——教学目标下切分可比性可让位于速度。

Q55 一句话总结这个数据集?

记录视角的 ICU 历史主库、医疗 AI 的基准原点——冻结的 2016,活跃的 2026。

Q56 机器通气时长怎么算?

chartevents 里呼吸机相关 itemid(如 720/223849 通气模式)的出现区间,或 mimic-code 的 ventilation 分类——首末出现时刻差是近似口径,论文声明即可。

Q57 怎么识别 ED 来源的住院?

admissions 的 admission_type(EMERGENCY 等)+transfers 首站为 ED;III 的 ED 粒度粗,精细 ED 研究请用 MIMIC-IV-ED。

Q58 孕产妇/产科数据够吗?

ICU 收治的产科危重症稀少(数百例级)——专项研究建议配 eICU 或专科登记,III 只做补充。

Q59 儿科研究用什么?

2001-2008 新生儿段可用但年代旧;儿科 ICU 建议伦敦 PICU(本系列 495 条目)或 PDB。

Q60 能提取用药依从性/给药时机吗?

prescriptions 是医嘱不是执行记录;执行证据在 inputevents(输液)与 eMAR 类事件——"医嘱-执行差"本身是可研究主题。

Q61 为什么我的 ICU 停留数和官方差几百?

先查是否过滤了新生儿段(61,532 含 vs 58,976 成人);再查是否有超短停留过滤。

Q62 多次住院的患者怎么选"一次代表"?

首住(ROW_NUMBER=1)是社区默认;敏感性分析换末住——两个口径的结论一致时才稳。

Q63 实验室参考区间在哪?

III 无统一参考区间表——用 flag 列(labevents.abnormal)或自建生理域;d_labitems 只有项目名。

Q64 影像原始文件(DICOM)在库里吗?

不在——III 只有影像报告文本;图像见 MIMIC-CXR(独立库,本系列后续条目覆盖)。

Q65 能算抗生素启动时间吗?

能但语义分层:prescriptions 的 starttime 是医嘱时刻,inputevents 是输注执行——脓毒症研究用执行时刻更准。

Q66 项目结束后数据要删吗?

DUA 要求项目结束/授权终止后停止使用并按协议处置数据副本——团队数据管理制度里写明保留期限。

Q67 chartevents 的 value 与 valuenum 什么区别?

value 是原始文本(含 “102/61” 式血压串),valuenum 是解析后的数值(血压串解析不出则空)——数值分析用 valuenum,文本概念(GCS 描述等)用 value。

Q68 有没有"一条 SQL 看全貌"的入门查询?

有:SELECT c.dbsource, COUNT(*) FROM icustays c GROUP BY 1;——一行输出 CareVue/MetaVision 停留分布,验证库健康+双系统占比的第一查询。

## §10 存照与溯源

§10.1 口径存照

  • 存照 A:58,976 双重身份(成人 ICU 停留官方口径 / admissions 表行数)数值巧合、语义无关。
  • 存照 B:患者数三级口径(46,520 总/38,597 成人/33,798 benchmark)与住院数两级口径(49,785 有 ICU 停留住院/53,423 全部成人住院)并存,引用必带口径。
  • 存照 C:chartevents 3.31 亿行为 v1.4 实测(arXiv:2108.00796 逐表验证);历史镜像数字不一。
  • 存照 D:v1.4 发布日期官方三处表述(9-02/9-04/9-04),以 release notes 9 月 2 日为主。
  • 存照 E:benchmark 死亡阳性率 13% 与全库院内死亡率 11.5% 口径不同(队列过滤差异),不可互换。
  • 存照 F:“approximately sixty thousand admissions”(归档页模糊语)指 admissions 表 58,976 全口径,非成人 49,785。

存照 G("约 6 万住院"模糊语的归因):PhysioNet 归档页"approximately sixty thousand admissions"指全口径住院记录(与 admissions 表 58,976 行呼应,含新生儿与未进 ICU 住院);若论文引用为"6 万成人住院"则系误读(成人口径 49,785)。

存照 H(benchmark 队列的死亡阳性率 13% 口径):该 13% 为"benchmark 队列内院内死亡/全部停留"比例(Harutyunyan 口径,含 48h 窗口过滤后的队列),与 §3.1 的全库 11.5% 院内死亡率(Sci Data 表 1 全成人口径)因队列构成不同而并存——两个数字均真实,交叉引用必须注明各自队列。

§10.2 引文清单

  1. Johnson AEW, Pollard TJ, Shen L, et al. MIMIC-III, a freely accessible critical care database. Scientific Data 3:160035 (2016). PMID 27219127.
  2. PhysioNet. MIMIC-III Clinical Database (v1.4). https://physionet.org/content/mimiciii/1.4/ (release notes/许可/DOI 10.13026/C2XW26)
  3. Harutyunyan H, Khachatrian H, Kale DC, Galstyan A. Multitask learning and benchmarking with clinical time series data. Sci Data 6:96 (2019);arXiv:1703.07771 (2017).
  4. MIMIC-III Benchmarks 仓库. https://github.com/YerevaNN/mimic3-benchmarks ;Zenodo 10.5281/zenodo.1306527.
  5. Raffler M, et al. ricu: R interfacing to ICU data. arXiv:2108.00796(v1.4 逐表行数实测).
  6. Zech JR, et al. Evaluating Progress on Machine Learning for Longitudinal Electronic Healthcare Data. arXiv:2010.01149(210 模型后验).
  7. MIT-LCP. mimic-code. https://github.com/MIT-LCP/mimic-code
  8. Goldberger AL, et al. PhysioBank, PhysioToolkit, and PhysioNet. Circulation 101(23):e215-e220 (2000).

§10.3 与本系列其他条目的关系

  • 486-488(波形三库):信号视角支系;本条目提供其临床侧关联主库(487 的 matched 命名规则、488 的共享偏移语义均回指本条)。
  • 489(MIMICEL):流程视角;基于 MIMIC-IV-ED,与本条目无直接键接但共享家族治理叙事。
  • 491(mimiciii-demo):本条目的 100 患者教学子集。
  • 492(MIMIC-IV):记录视角现任主库;与本条的 schema 对照是 492 条目的核心章节之一。
  • 493(nosocomial-risk-mimic)/494(phenotype-annotations):基于 MIMIC 系临床数据的专用标注/风险数据集——本条目为其上游。

§10.4 变更日志

  • 2026-09-20:初版(order 490)。三重信源核查完成,口径存照 A-F 落档;26 表行数表、双码对照、benchmark 四任务规格、210 模型后验结论纳入。

相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集