信息速览
MIMIC 系列最常被引用的是它的结构化表:诊断有 ICD 编码、用药有处方记录、检验有项目与数值。但真正决定一个患者该怎么治的很多信息,在这些表里根本没有位置——既往史里那句"十年前做过搭桥",过敏栏里那句"青霉素皮疹",还有病程末尾那段把影像、培养、心电图串起来讲的"有意义的检查结果"。它们只存在于出院小结的自由文本里。于是几乎每一个用 MIMIC 做临床问题的团队,都要自己写一遍正则、自己调一遍提示词、自己核一遍抽样,然后把这个脚本锁在自己的项目目录里。官方页面把这种状态直接称作"各自为政的碎片化预处理生态"。
MIMIC-Note-Extract(简称 MNE)是对这件事的一次性作答:把 MIMIC-IV-Note v2.2 里 331,793 份原始出院小结过滤到 300,720 次住院,识别出 24 个章节、去掉 8 个被上游去标识化抹掉的,留下 16 个章节,再用规则加大语言模型把这 16 个章节转成表。它给出的不是新的人群,也不是新的临床结局,而是一层新的可查询结构。它的代价同样清楚:抽取是机器做的,字段级准确率按章节在 92.2% 到 99.8% 之间;人群仍是 MIMIC 的单中心人群;访问要走认证、签 DUA、完成 CITI 培训。
一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | MIMIC-IV-Ext MIMIC Note Extract: A Large-Scale Structured Dataset Extracted from MIMIC-IV-Note Discharge Summaries |
| 简称 | MIMIC-Note-Extract(MNE) |
| 发布平台 | PhysioNet |
| 作者机构 | 慕尼黑工业大学(TUM)、TUM 大学医院(含创伤外科与放射诊断介入科)、哈索·普拉特纳研究所 |
| 首次发布 | 2026 年 10 月 21 日,版本 1.0 |
| 最近改动 | 无修订版本;版本列表仅 1.0 一项 |
| 父项目 | MIMIC-IV-Note: Deidentified free-text clinical notes v2.2 |
| 源库规模 | 331,793 份原始出院小结 |
| 住院次数 | 300,720 次 |
| 患者数 | 137,402 名 |
| 章节数 | 识别出 24 个,8 个被上游去标识化移除,保留 16 个 |
| 文件数 | 16 个 CSV(gzip 压缩) |
| 总行数 | 约 19.3 million 行(1930 万行) |
| 原文与结构 | 16 个章节保留逐字文本;其中 13 个另有结构化表,体格检查拆成两张,共 14 张结构化表 |
| 纯文本章节 | 现病史、简要住院病程、出院医嘱 |
| 主键 | hadm_id;(hadm_id, seq_num);(hadm_id, timepoint);(hadm_id, timepoint, system) |
| 文件格式 | gzip CSV;另附 PostgreSQL 建表与装载脚本、Croissant 1.1 元数据 |
| 抽取方式 | 规则(正则与字符串匹配)+ LLM(Gemini 2.5 Flash、Gemini 3.1 Flash-Lite) |
| 人工核验 | 三名医生;每章节随机抽 171 次住院;2,210 个病例级任务、13,744 个字段级判定 |
| 字段级准确率 | 92.2%–99.8%(按章节) |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 |
| 准入条件 | 认证用户+签署 DUA 1.5.0+CITI Data or Specimens Only Research 培训 |
| 典型用途 | 队列识别、用药核对、过敏与处方研究、风险校正、临床决策基准 |
§1 它要解决的具体麻烦
1.1 结构化表回答不了的三种问题
MIMIC 的结构化表是按"可计费、可编码、可计量"这三件事设计的。诊断进 ICD,操作进 ICD 与 CPT,用药进处方表,检验进实验室表。这套设计支撑了二十年的重症与急诊研究,但它对下面三类问题天然无能为力。
第一类问题是"病史"。一个患者十年前放过支架、五年前切过胆囊、父亲五十岁死于心梗,这些内容在 ICD 编码里只能看到"陈旧性心梗"这种粗粒度代理,看不出时间、看不出亲属、看不出是否还在随访。
第二类问题是"过敏"。过敏是一句自述加上一次观察,临床意义重大但没有稳定的编码位置。它在 MIMIC 的表格里几乎没有落点,只在出院小结里被写下来。
第三类问题是"有意义的检查结果"。出院小结里那段 Pertinent Results 是医生替读者做的摘要:培养阴性、CT 未见出血、动态心电图未见长间歇。它不是原始数据,是已经过一次临床判断的结论。这种结论在结构化表里无处存放。
三类问题有一个共同点:答案在文本里,但每个研究者都要自己把它搬出来。搬运的过程天然重复,而且各家口径不同,导致同一批患者在不同论文里得到不同的"既往史变量"。
重复搬运的代价不只是时间。第一遍正则写完,往往要跑三到四轮修边界情况:表头写法有七八种变体、同一件事在不同科室的措辞不同、同一份小结里前后两处互相矛盾。修完之后,这份脚本只对这一次假设成立——换个结局变量,前一版正则几乎用不上。更要紧的是口径不可比:两个团队都声称"按既往心衰筛选队列",但一个把"陈旧性心衰"算进去、一个不算,两个队列的人数就对不上,而这一点在论文的方法节里通常只写成一句"从出院小结中提取"。
1.2 三条常见的错误期待
第一条,期待它是"MIMIC-IV 的替代品"。它不是。它只是出院小结这一路文本的转换结果,不含 ICU 波形、不含影像、不含护理记录,也不含 MIMIC-IV 主体的大部分结构化表。用它做研究时,结构化字段要从 MIMIC-IV 本体里去 join,靠 subject_id 与 hadm_id 对齐。
第二条,期待它是"金标准标注"。它是抽取结果,不是标注结果。官方页面把它定位为"信息转换"(information conversion)而不是"信息抽取"(information extraction):目标是保住原文的信息量并转成可查询形态,而不是产出一份供监督学习使用的完美标签。字段级准确率最高的章节是过敏 99.8%,最低的是有意义的检查结果 92.2%,两者都不是 100%。
第三条,期待它"补上了去标识化抹掉的信息"。恰恰相反,官方明确说明没有尝试恢复任何个人身份信息,只把 MIMIC 原有的遮蔽痕迹统一规范化成 [REDACTED]。剂量被遮蔽的地方,会有对应的 dose_redacted 布尔字段标记,而不是被猜出来。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 按既往史筛队列 | 既往史表的 concept_name+category+temporal_status+subject(本人或家属) |
够,且能区分现患与既往 |
| 用药核对(入院 vs 出院) | 两张用药表,字段完全同构,含剂量、途径、频次、时长、PRN 与 hold 标志 | 够,这是官方点名的用途之一 |
| 过敏与抗生素处方研究 | 过敏表带原始记录与标准化标签 title_std |
够做标签层研究,结局需回 MIMIC-IV 本体取 |
| 风险校正里的功能状态 | 出院状态表的活动能力、营养方式、意识水平等 16 个临床状态字段 | 够,字段粒度比编码细 |
| 体格检查的定量生命体征 | 生命体征表含体温(华氏与摄氏)、心率、血压、呼吸频率、血氧、体重、给氧方式与流量 | 够,但需注意遮蔽标志 |
| 影像检查的结构化清单 | 有意义检查结果表的 imaging_modalities 与 body_parts 枚举数组 |
够做检查类型清点,不含影像本身 |
| 现病史的细粒度拆分 | — | 不够,只给逐字原文 |
| 时间跨度与人群边界 | — | 项目页未给出,需查父项目 MIMIC-IV-Note v2.2 |
| 每个 CSV 的字节大小 | — | 未核验,文件目录对本环境不可见 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你要按"有青霉素过敏标签"筛队列,已经准备写正则 | 直接查过敏表的 title_std,省掉一遍抽取 |
先在 discharge_sections.csv 里抽查几十条原文对齐口径,再固定筛选条件 |
| 你在做用药核对,想看入院与出院用药的差异 | 两张用药表字段同构,可以逐字段做差异 | 用 (hadm_id, seq_num) 对齐,先按 name 归并再比剂量与频次 |
| 你在做风险校正,缺功能状态协变量 | 出院状态表把活动能力、营养、意识、疼痛、伤口、呼吸支持都枚举化了 | 把枚举当分类变量进模型,注意缺省值不代表"未评估" |
| 你要训一个临床抽取模型,缺大规模伪标签 | 1930 万行可作为训练信号 | 必须说明标签来自 LLM 抽取,不能当人工金标准写进方法节 |
| 你要做可溯源的抽取评测 | pertinent_results.csv 带 start_line 与 end_line,指回原文行 |
用它做溯源实验,行号从 0 开始计数 |
| 你只是想读原始出院小结 | discharge_sections.csv 已经是切好章节的原文,省掉自己切章节 |
用支持引号内换行的 CSV 阅读器 |
1.5 一句话判断
它卖的不是新数据,是"别人已经替你写过一遍的抽取脚本":把三十万份出院小结的十六个章节一次性转成可 join 的表,代价是字段级准确率在 92.2% 到 99.8% 之间,且永远停在单中心人群上。
1.6 不适合谁:四条边界
不适合当监督学习的金标准。 抽取值由规则与 LLM 产出,官方明确说临床医生对抽样结果的复核"支持抽取质量,但不能确立每一条记录的正确性"。把 1930 万行当金标准训练并宣称人工标注,是方法节里的硬伤。
不适合做跨中心泛化。 它继承 MIMIC-IV-Note 的单中心覆盖。用它训练出的抽取器或风险模型,换到别家医院的病历上,性能落差没有任何保证。
不适合拿缺失当阴性的研究。 官方把这一条写进了局限性:预定义模式无法覆盖原文全部信息,部分信息在模式设计阶段被有意省略,缺失内容不应被解读为某种情况或发现不存在。任何"没抽到就是没有"的口径都会系统性低估患病率。
不适合需要精确剂量的药学研究。 剂量字段在原文被遮蔽时,dose_value 为空而 dose_redacted 为真。把这类行当零剂量处理会得到错误的暴露量。
§2 数据构成与规格
2.1 十六个文件分三层
理解这份数据,先分清它的三层:第一层是枢纽表 admissions.csv,只有三个字段,把 MIMIC 的患者号、住院号与小结号对齐;第二层是原文层 discharge_sections.csv,十六个章节各占一个文本字段,是切好章节、尚未抽取的逐字内容;第三层是十四张结构化表,把十三个章节抽成字段。
三层的意义在于给了回退路径。任何一条结构化记录,都能通过 hadm_id 回到原文层核对,而原文层又能通过 note_id 回到 MIMIC-IV-Note 的原始小结。这在其他"只发布抽取结果"的数据集里是不常见的。
| 层 | 文件 | 数量 | 每行对应 |
|---|---|---|---|
| 枢纽 | admissions.csv |
1 | 一次住院 |
| 原文 | discharge_sections.csv |
1 | 一次住院,十六个文本字段 |
| 结构化 | 章节表(含体格检查的两张) | 14 | 一次住院的一条记录或一个时点 |
十六个文件里,admissions.csv 是唯一必需的连接件。其余十五张表都带 subject_id 与 hadm_id 两列,可以直接 join,也可以只靠 hadm_id。
2.2 十六个文件的字段字典
官方页面给出的是 PostgreSQL 载入模式下的类型,包括 integer、real、text、varchar、boolean、enum、数组与 jsonb。下表按文件列出字段数与主键粒度——这是判断一次 join 会不会把行数放大一倍的关键。
| 文件 | 字段数 | 主键 | 每行对应 | 抽取方式 |
|---|---|---|---|---|
admissions.csv |
3 | hadm_id |
一次住院 | 直接取自父项目 |
discharge_sections.csv |
18 | hadm_id |
一次住院的十六段原文 | 章节切分 |
gender.csv |
3 | hadm_id |
一次住院 | 规则 |
services.csv |
3 | hadm_id |
一次住院 | 规则 |
discharge_disposition.csv |
3 | hadm_id |
一次住院 | 规则 |
discharge_condition.csv |
18 | hadm_id |
一次住院 | 混合 |
allergies.csv |
5 | (hadm_id, seq_num) |
一条过敏记录 | 混合 |
chief_complaint.csv |
5 | (hadm_id, seq_num) |
一条主诉或就诊背景 | 混合 |
discharge_diagnosis.csv |
5 | (hadm_id, seq_num) |
一条出院诊断 | 混合 |
major_procedures.csv |
5 | (hadm_id, seq_num) |
一项主要操作 | 混合 |
past_medical_history.csv |
8 | (hadm_id, seq_num) |
一条既往史记录 | 仅 LLM |
medications_on_admission.csv |
17 | (hadm_id, seq_num) |
一种入院用药 | 仅 LLM |
discharge_medications.csv |
17 | (hadm_id, seq_num) |
一种出院带药 | 仅 LLM |
physical_exam_vitals.csv |
19 | (hadm_id, timepoint) |
一个时点的生命体征 | 仅 LLM |
physical_exam_systems.csv |
6 | (hadm_id, timepoint, system) |
一个时点的一个系统 | 仅 LLM |
pertinent_results.csv |
14 | (hadm_id, seq_num) |
一个结果块 | 仅 LLM |
六张表单次住院最多一行,键就是 hadm_id:admissions、discharge_sections、gender、services、discharge_disposition、discharge_condition。八张表单次住院多行,键是 (hadm_id, seq_num),其中 seq_num 保留记录在原文该章节里出现的先后顺序。体格检查的两张表按键 (hadm_id, timepoint) 与 (hadm_id, timepoint, system) 组织,timepoint 取入院、出院、住院期间或未知四值之一。
2.3 一次住院的完整解剖
以 admissions.csv 里的一行为起点。它给出 subject_id(MIMIC 患者号)、hadm_id(MIMIC 住院号,在本表唯一标识一行)、note_id(MIMIC-IV-Note 出院小结表里的原始小结标识,长度上限 25 的可变字符串)。这三列组成的连接关系,是整份数据集唯一的外键入口。
| 上游 | 键 | 下游去向 |
|---|---|---|
MIMIC-IV-Note discharge 表 |
note_id → subject_id+hadm_id |
admissions.csv |
admissions.csv |
hadm_id |
其余十五张表 |
discharge_sections.csv |
hadm_id+字段名 |
供人工核对与二次抽取 |
pertinent_results.csv |
start_line/end_line |
指回 discharge_sections.pertinent_results 的行区间 |
一次住院在这十六个文件里的形态差异很大:枢纽表与六张单行表各贡献一行,八张多行表各贡献若干行(数量取决于原文该章节写了多少条),体格检查的两张表按"时点×系统"展开。做 join 时最容易犯的错,是把两张多行表直接相乘——正确做法是各自聚到住院级再合并。
import pandas as pd
#-- 枢纽表只有三列,是全部 join 的起点
adm = pd.read_csv('admissions.csv.gz')
print(adm.columns.tolist()) #-- ['subject_id', 'hadm_id', 'note_id']
#-- 六张单行表可以安全地按 hadm_id 左连接,行数不变
one_row = ['gender.csv.gz', 'services.csv.gz',
'discharge_disposition.csv.gz', 'discharge_condition.csv.gz']
wide = adm.copy()
for f in one_row:
d = pd.read_csv(f)
wide = wide.merge(d.drop(columns=['subject_id']), on='hadm_id', how='left')
print(wide.shape)
#-- 多行表必须先聚合再接入,否则行数会相乘
pmh = pd.read_csv('past_medical_history.csv.gz')
agg = (pmh.groupby('hadm_id')
.agg(n_history=('seq_num', 'size'),
cats=('category', lambda s: '|'.join(sorted(set(s.dropna())))))
.reset_index())
wide = wide.merge(agg, on='hadm_id', how='left')
print(wide.shape, wide['n_history'].describe().loc[['mean', 'max']].to_dict())
最后一行打印的是聚合后的计数描述,属于使用者自行计算的统计量,方法节里若引用必须写明口径与版本。
2.4 主键与映射关系
| 键 | 用在哪些表 | 取值含义 | 使用注意 |
|---|---|---|---|
subject_id |
全部十六张 | MIMIC 患者标识 | 一名患者可有多条住院记录 |
hadm_id |
全部十六张 | MIMIC 住院标识 | admissions 里唯一;其余表可重复 |
note_id |
仅 admissions |
源小结标识 | 回父项目取全文的唯一入口 |
seq_num |
八张多行表 | 记录在原文该章节里的顺序,从 1 开始 | 顺序即原文顺序,可用于重建叙述次序 |
timepoint |
体格检查两张 | 入院/出院/住院期间/未知 | 未知值的存在意味着时点不可强假设 |
system |
physical_exam_systems |
十一个身体系统之一 | 与 timepoint 联合唯一 |
hadm_id 的重复使用是本数据集最大的结构性风险。一名患者在多张表里留下数十行,按住院随机划分数据集时,同一患者的多次住院会同时落在训练侧与测试侧。正确做法是用 subject_id 作分组键,道理与心电库里"按患者不按记录切分"完全一致。
2.5 与同类资源的字段差异
| 对比项 | MNE | MIMIC-IV-Note v2.2 | MIMIC-IV 药物抽取标签集 | MIMIC-III 表型标注集 |
|---|---|---|---|---|
| 形态 | 结构化 CSV | 自由文本 | 标注文本 | 标签矩阵 |
| 覆盖住院次数 | 300,720 | 331,793 份原始小结 | 数百份量级 | 数千份量级 |
| 是否保留原文 | 是,十六个章节逐字 | 是,整篇 | 是 | 否 |
| 是否有行号溯源 | 是(start_line/end_line) |
不适用 | 视标注而定 | 不适用 |
| 产出方式 | 规则+LLM+抽样医生核验 | 原始病历 | 人工标注 | 人工/半自动标注 |
| 规模与粒度的取舍 | 全量、粗到字段 | 全量、无结构 | 小量、细到实体 | 中量、细到表型 |
这张表要说清的只有一件事:MNE 在"覆盖量"这一列上几乎是同类中最大的,在"标注精度"这一列上不是。它和那些几百份人工标注的小集不是一个竞争关系——前者用来铺开做队列与训练信号,后者用来验证抽取对不对。
2.6 枚举词表的物理含义
本数据集的另一个特点是枚举词表多。它们不是装饰,而是把临床多样性压成可统计类别的手段,同时也是信息损失发生的地方。
| 词表 | 取值数 | 用在哪个字段 | 损失发生在哪里 |
|---|---|---|---|
| 出院科室 | 20 | services.service |
细分亚专科被合并 |
| 出院去向 | 4 | discharge_disposition |
具体机构类型不保留 |
| 身体系统 | 11 | physical_exam_systems.system |
系统内的部位细分不保留 |
| 结果块类型 | 6 | pertinent_results.content_type |
块内多类型靠数组承载 |
| 标本类型 | 9 | lab_sample_types |
少见标本并入未知 |
| 微生物类型 | 14 | microbiology_types |
具体菌种不保留 |
| 影像模态 | 16 | imaging_modalities |
检查参数与序列不保留 |
| 解剖部位 | 10 | body_parts |
精细定位不保留 |
| 电生理类型 | 9 | electrophysiology_types |
检查方案不保留 |
| 病理类型 | 5 | pathology_types |
具体诊断不保留 |
| 药物剂型 | 17 | presentation_form |
特殊剂型并入其他 |
| 计量单位 | 8 | dose_unit |
非常用单位并入其他 |
| 给药途径 | 13 | route |
少见途径并入其他 |
| 时间单位 | 6 | duration_unit |
同上 |
每一行的"损失"都是同一类:枚举把长尾压进 [OTHER] 或 UNKNOWN。使用者如果关心长尾,必须回 discharge_sections.csv 的原文重新抽,这也是原文层存在的理由。
还有一层更细的设计值得注意:部分枚举字段是数组而不是单值。pertinent_results.csv 里 lab_sample_types、microbiology_types、imaging_modalities、body_parts、electrophysiology_types、pathology_types 都是枚举数组,因为一个结果块可以同时是"胸部 CT"加"增强"加"纵隔与肺"。用单值字段承载这类多标签内容,必然丢信息;用数组承载,代价是下游查询要展开。装进 PostgreSQL 时这些列是原生数组,直接支持包含查询;装进 pandas 时会被读成字符串,需要自己解析。
§3 它是谁的数据
3.1 贡献者与机构
官方页面列出九位作者,机构集中在德国慕尼黑:慕尼黑工业大学(TUM)、TUM 大学医院(含创伤外科与诊断介入放射科)、以及哈索·普拉特纳数字工程研究所。通讯作者信息需登录查看。
这个机构构成解释了它的气质:作者群里有影像学、创伤外科与机器学习方法三个方向,第一作者与多位合作者来自 TUM 的医学人工智能方向,最后两位是医疗影像与临床人工智能的长期研究者。这不是一个纯 NLP 组做的抽取工具,而是一个以"下游能不能直接用"为验收标准的临床 AI 组做的数据工程。
3.2 时间线
| 时间 | 事件 | 意义 |
|---|---|---|
| 2023 年 | 父项目 MIMIC-IV 与 MIMIC-IV-Note v2.2 分别发布 | 提供来源数据 |
| 2026-10-21 | MNE 版本 1.0 在 PhysioNet 上线 | 首次公开,无更早版本 |
| 2026-10-21 | 同时给出版本 DOI 10.13026/cq50-rd11 与最新 DOI | 引用路径确定 |
版本列表里只有 1.0 一项,发布说明也只有"初始发布"一句话。这意味着没有历史版本可供差分,也就没有"新版本修了旧版本的哪些抽取错误"这类记录。引用时必须写清版本号。
3.3 采集场景:一座医院的出院小结
数据来源是 MIMIC-IV-Note v2.2 的出院小结。MIMIC 系列来自美国波士顿一家学术医疗中心的重症与住院系统,出院小结是住院结束时由主管医生或记录在案的医生书写的总结性文本,写给接收患者的下一级医生看。它的读者预设决定了它的内容结构:先讲为什么来,再讲住了几天发生了什么,最后讲回家要注意什么。
这个读者预设也决定了它的缺陷:它是回顾性的、按需书写的、模板化程度高的文本。不同科室、不同书写者、不同年份的模板不同,内容详略差异极大。官方页面把这一点写进了方法节——"有意义的检查结果"这一章,短则一行阴性培养报告,长则数页微生物面板与纵向影像发现。正是这种跨度,让三个章节(现病史、简要住院病程、出院医嘱)最终放弃字段拆分,只保留原文。
3.4 数据来源的三个层次
| 层 | 内容 | 是否公开 | 决定了什么 |
|---|---|---|---|
| 原始病历 | MIMIC-IV-Note v2.2 的 331,793 份小结 | 是(认证访问) | 内容上限与模板多样性 |
| 过滤后的队列 | 300,720 次住院、137,402 名患者 | 是(本数据集) | 可用的规模 |
| 抽取结果 | 十六个 CSV、1930 万行 | 是(本数据集) | 可直接查询的变量 |
过滤这一步值得单独说。官方说明质量过滤移除了非出院小结类型的记录、格式异常值(例如某些外部口述系统的模板)、以及章节顺序混乱或严重不完整的报告。这意味着本数据集不是 MIMIC-IV-Note 的完整映射,而是一个"更容易被结构化"的子集。任何以 MIMIC-IV-Note 全量做分母的研究,换到本数据集上都要重新说明分母变了。
§4 它最独特的东西
4.1 从信息抽取到信息转换
官方在背景部分给出了一个明确的立场区分:社区里已有的大量工作做的是"信息抽取"(information extraction),即为某一个具体项目抽出它需要的少数变量;作者们认为真正缺的是"信息转换"(information conversion)——保住原始数据的信息量,同时把它变成易查询的结构化形态。
这个区分有实操后果。做抽取的项目,模式是围绕一个假设设计的:我要研究 A 药与 B 结局,那就抽 A 药。抽出来的字段高度贴合,换个假设就得重抽。做转换的项目,模式是围绕"原文里有什么"设计的:出院小结写了过敏,那就把过敏建成表,不管下游想拿它做什么。MNE 属于后者,代价是字段会显得"该有的没有、不该有的有",好处是同一个抽取结果能支撑多种假设。
模式设计的难处在于平衡两端:字段太粗,临床深度不够;字段太细,绝大多数住院在该字段上留空,既浪费存储又没法人工核验。官方把这一条写得很直白——模式必须抓住必要的临床深度,又不能引入在多数住院里始终为空的超特定字段,同时还要简洁到能被人工核对。这句话解释了为什么十六个章节里只有十三个进了结构化:另外三个不是不值得做,是做不出一个既不空又不粗的模式。
4.2 三档抽取策略
| 档位 | 章节 | 理由 | 是否进人工核验 |
|---|---|---|---|
| 规则(正则与字符串匹配) | 性别、出院科室、出院去向 | 取值空间小且写法稳定 | 否,代码可审计 |
| 混合 | 主诉、过敏、主要操作、出院诊断、出院状态 | 部分可正则、部分需语境 | 是 |
| 仅 LLM | 既往史、入院用药、体格检查、有意义检查结果、出院带药 | 叙述复杂,需语境理解 | 是 |
规则档被排除在人工核验之外,理由是确定性代码可以从已发布的代码仓库直接审计。这个决定是合理的,但也意味着这三张表的准确率数字在官方表格里查不到——只有进核验的十个章节有字段级准确率。
LLM 档用的是 Gemini 2.5 Flash 与 Gemini 3.1 Flash-Lite,通过 Google Cloud Vertex AI API 调用,零数据保留,以符合 PhysioNet 对 MIMIC 数据用于在线服务的要求。完整的提示词与生成参数在代码仓库里;少样本示例文件与整理好的过敏标准化映射放在 extraction_resources/ 目录,因含敏感临床文本而未进代码仓库。
4.3 可溯源:行号回溯
pertinent_results.csv 有两个别处少见的字段:start_line 与 end_line,给出该结果块在 discharge_sections.pertinent_results 原文里的起止行号,从 0 开始计数,两端都包含。
这条设计的价值在于把"抽取结果"变成了"可回查的抽取结果"。任何一个结果块,都能按行号切回原文做人工核对、做提示词调试、做溯源展示。对做临床大模型评测的人来说,这相当于免费拿到了一套证据定位标注;对做抽取的人来说,这是调试集。
import pandas as pd
#-- 读原文层:注意含引号内换行,必须交给能处理多行字段的解析器
sec = pd.read_csv('discharge_sections.csv.gz')
res = pd.read_csv('pertinent_results.csv.gz')
row = res.iloc[0]
lines = sec.loc[sec.hadm_id == row.hadm_id, 'pertinent_results'].iloc[0].split('\n')
print(row.content_type, row.start_line, row.end_line)
print('\n'.join(lines[int(row.start_line): int(row.end_line) + 1]))
行号从 0 起算以及两端闭区间这两点,是本数据集里少数几个"不看说明就会差一行"的地方。
4.4 核验的粒度:字段级而不是整条对错
人工核验的设计值得细看。三名医生对照原文逐条核对,标注在字段级(item level)进行——这样能把"一个字段错了"与"整条样本都错了"区分开。每个章节随机抽 171 次住院,其中 121 次单人标注、50 次双人标注;重叠部分由三位医生中的两位独立完成,用于测评分者间一致度。
| 指标 | 值 | 出处 |
|---|---|---|
| 每章节抽样住院数 | 171 | 官方方法节 |
| 单人标注/双人标注 | 121/50 | 官方方法节 |
| 病例级任务数 | 2,210 | 官方方法节 |
| 字段级判定数 | 13,744 | 官方方法节 |
| 一致度指标 | Gwet’s AC1 | 官方方法节 |
| 字段级准确率区间 | 92.2%–99.8% | 官方表 1 |
下表按章节列出官方给出的准确率与一致度。规则档的三个章节不在表里。
| 章节 | 字段级准确率(%) | Gwet’s AC1 |
|---|---|---|
| 过敏 | 99.8 | 99.8 |
| 主诉 | 97.6 | 98.0 |
| 出院状态 | 97.4 | 98.0 |
| 出院诊断 | 97.1 | 95.8 |
| 主要操作 | 98.3 | 98.0 |
| 既往史 | 95.2 | 90.1 |
| 体格检查 | 95.2 | 90.4 |
| 有意义的检查结果 | 92.2 | 88.4 |
| 出院带药 | 97.2 | 97.1 |
| 入院用药 | 99.3 | 97.2 |
这两列要放在一起读。准确率最低的"有意义的检查结果"(92.2%)同时也是一致度最低的(88.4%),最高的过敏(99.8%)也是一致度最高的(99.8%)。这个同步关系说明一件事:抽取难的章节,人也难判。换句话说,低准确率不完全是模型的问题,也反映了原文那一章本身的歧义程度。
4.5 边界条件:什么情况下它不再适用
| 条件 | 是否适用 | 判断依据 |
|---|---|---|
| 大规模队列筛查 | 适用,这是它最主要的价值 | 三十万次住院的字段化病史 |
| 用药核对与依从性研究 | 适用,官方点名 | 入院与出院两张用药表同构 |
| 需要精确到毫克的暴露量计算 | 不适用 | 剂量可能被遮蔽,有 dose_redacted 标志 |
| 临床抽取模型的金标准测试 | 不适用 | 标签本身来自 LLM |
| 现病史的细粒度分析 | 不适用 | 该章节只给原文 |
| 跨中心泛化验证 | 不适用 | 继承单中心来源 |
| 多模态研究 | 不适用 | 无影像、无波形、无护理记录 |
| 需要时间跨度的人群定义 | 需另查 | 项目页未给出,见父项目 |
这张表最容易被忽略的是最后一行。本数据集的官方页面没有给出覆盖年份、年龄范围或科室构成这类边界数字,它们要回到 MIMIC-IV-Note 与 MIMIC-IV 的页面上去取。写在方法节里的时间跨度若来自别处,出处要标清楚。
§5 怎么拿到
5.1 目录结构与下载面
本数据集是认证访问资源:只有完成 CITI “Data or Specimens Only Research” 培训、签署 PhysioNet Credentialed Health Data Use Agreement 1.5.0、并通过审核的用户才能取文件。许可为 PhysioNet Credentialed Health Data License 1.5.0。文件以 gzip 压缩的 CSV 发布。
官方页面同时给出了三种消费方式:原始 gzip CSV、PostgreSQL 脚本(create.sql 定义模式、load.sql 装载数据,提供带类型的列、枚举、主键与指向 admissions 的外键)、以及 Croissant 1.1 元数据(描述文件、列类型、键、外键与受控词表,可直接配合已发布的 gzip 文件使用)。
需要说明的是,文件目录对未授权区域不可见,因此各 CSV 的字节大小未获核验。下表以"每行对应什么"替代体积描述。
| 文件 | 每行对应 | 是否含长文本 |
|---|---|---|
admissions.csv.gz |
一次住院 | 否 |
discharge_sections.csv.gz |
一次住院的十六段原文 | 是,含引号内换行 |
gender.csv.gz |
一次住院 | 否 |
services.csv.gz |
一次住院 | 否 |
discharge_disposition.csv.gz |
一次住院 | 否 |
discharge_condition.csv.gz |
一次住院 | 否 |
allergies.csv.gz |
一条过敏记录 | 短文本 |
chief_complaint.csv.gz |
一条主诉 | 短文本 |
discharge_diagnosis.csv.gz |
一条出院诊断 | 短文本 |
major_procedures.csv.gz |
一项操作 | 短文本 |
past_medical_history.csv.gz |
一条既往史记录 | 短文本 |
medications_on_admission.csv.gz |
一种入院用药 | 否,含 JSON 列 |
discharge_medications.csv.gz |
一种出院带药 | 否,含 JSON 列 |
physical_exam_vitals.csv.gz |
一个时点体征 | 否,含警告数组 |
physical_exam_systems.csv.gz |
一个时点一个系统 | 短文本数组 |
pertinent_results.csv.gz |
一个结果块 | 短文本 |
5.2 批量下载
#-- PhysioNet 认证资源需先配置账号:把用户名与口令写进 ~/.netrc
#-- 再递归拉取整个版本目录(含 SHA256 校验文件)
wget -r -N -c -np --user="$PHYSIONET_USER" --ask-password \
https://physionet.org/files/mimic-iv-ext-note-extract/1.0/
#-- 只取结构化表,跳过体积最大的原文层
wget -r -N -c -np -A "*.csv.gz,*.sql,*.json" \
--user="$PHYSIONET_USER" --ask-password \
https://physionet.org/files/mimic-iv-ext-note-extract/1.0/
第一段会把十六个 CSV 全部拉下。若磁盘紧张,第二段配合 -A 白名单可以只取需要的表——discharge_sections.csv.gz 因为是逐字原文,通常是十六个文件里最大的一个,先跳过它能省下大部分空间。
5.3 读进来:CSV 与 PostgreSQL 两条路
import pandas as pd
#-- 关键参数:原文层含引号内换行,engine 与 quoting 必须放开
sec = pd.read_csv('discharge_sections.csv.gz',
dtype={'hadm_id': 'int64', 'subject_id': 'int64'},
engine='python') #-- python 引擎能正确处理多行字段
#-- JSON 列(strength / frequency)默认会被读成字符串
med = pd.read_csv('discharge_medications.csv.gz')
import json
s = json.loads(med.loc[0, 'strength'])
print(s.get('type'), s.get('numerator_values'), s.get('numerator_units'))
print(s.get('denominator_value'), s.get('denominator_unit'))
strength 与 frequency 两列是 jsonb。强度对象的 type 取单值、区间或复方三种之一,分子值与单位各是一个数组,分母值与分母单位可以为 JSON 空值。频次对象的 type 取每周期次数、每间隔、特定时点、特定星期几或其他五种之一,对应的附加字段各不相同,[OTHER] 类型不带任何附加字段。
两条路各有适用场景。CSV 加 pandas 适合探索性分析与建模,改起来快;PostgreSQL 是官方推荐路径,优势是枚举取值、主键与指向 admissions 的外键都由数据库约束保证,写错取值会直接报错而不是静默通过。做多人协作或长期维护的项目,第二条的收益会随表数量增长而放大——十六张表、十几个枚举词表,靠肉眼查取值是不现实的。
装载到数据库的顺序是固定的:先建模式,再装数据。
#-- 解压后按官方脚本建库与装载,顺序不能反
gunzip -k *.csv.gz
psql -d mimic_note -f create.sql #-- 先定义模式:类型、枚举、主键、外键
psql -d mimic_note -f load.sql #-- 再装载数据
5.4 转成下游要的表
import pandas as pd
adm = pd.read_csv('admissions.csv.gz')
cond = pd.read_csv('discharge_condition.csv.gz')
vit = pd.read_csv('physical_exam_vitals.csv.gz')
#-- 六张单行表可以放心左连接,行数不变
base = adm.merge(cond.drop(columns=['subject_id']), on='hadm_id', how='left')
#-- 体格检查按 timepoint 展开成宽表:先挑入院时点,再去重
adm_vit = (vit[vit.timepoint == 'ADMISSION']
.drop_duplicates(subset=['hadm_id'])
.add_prefix('adm_')
.rename(columns={'adm_hadm_id': 'hadm_id'}))
base = base.merge(adm_vit, on='hadm_id', how='left')
#-- 遮蔽标志必须跟着走,否则会把 [REDACTED] 当成真实零值
keep = [c for c in base.columns if c.endswith('_redacted')]
print(len(keep), keep[:5])
去重这一步是必要的:同一时点在同一住院里理论上只有一行,但 timepoint 存在 UNKNOWN 取值,直接按 hadm_id 合并多行表会把行数放大。挑时点时显式写明口径,比事后发现行数对不上要省事。
5.5 用药表的 JSON 与枚举映射
| 结构 | 字段 | 取值 | 含义 |
|---|---|---|---|
| 强度 | type |
SINGLE/RANGE/COMBINATION |
单值、区间、复方 |
| 强度 | numerator_values |
数字或字符串数组 | 被遮蔽时写作 [REDACTED] |
| 强度 | numerator_units |
字符串数组 | 取自计量词表 |
| 强度 | denominator_value / _unit |
数字、字符串或空 | 未给分母时为 JSON 空值 |
| 频次 | type |
times_per_period |
每周期次数,附 times 与 period_unit |
| 频次 | type |
every_period |
每间隔一次,附 value 与 unit |
| 频次 | type |
specific_time |
特定时点,附 time |
| 频次 | type |
specific_day |
特定星期几,附 days 数组 |
| 频次 | type |
[OTHER] |
无附加字段 |
用药表里还有三个布尔字段容易被当成冗余:dose_redacted(剂量被遮蔽)、prn(按需服用,默认假)、hold(暂停或需满足暂停条件,默认假)。prn_condition 与 hold_condition 分别记录按需指征与暂停条件。做剂量相关分析时,这三个标志必须与 dose_value 一起看。
5.6 五个最容易出错的地方
| 位置 | 错误写法 | 后果 | 正确做法 |
|---|---|---|---|
| 读原文层 | 用朴素 csv.reader 或 sep='\n' 切分 |
引号内换行被当成新行,字段错位 | 交给能处理多行字段的解析器 |
| 合并多行表 | 两张多行表直接 merge |
行数相乘 | 先聚到住院级再合并 |
| 处理遮蔽值 | 把空 dose_value 当 0 |
暴露量被系统性低估 | 同时读 dose_redacted |
| 划分数据集 | 按 hadm_id 随机划分 |
同一患者跨两侧 | 用 subject_id 分组 |
| 引用准确率 | 只写"92% 以上" | 掩盖 92.2%–99.8% 的章节差异 | 按用到的章节写具体区间 |
§6 与库内条目的关系
6.1 关系图谱
MNE 在文本类资源里的位置,可以用"覆盖量 × 结构深度"两个轴摆出来。
| 库内资源 | 覆盖量 | 结构深度 | 与 MNE 的关系 |
|---|---|---|---|
| MIMIC-IV-Note | 331,793 份小结 | 无结构 | 父项目,MNE 的来源 |
| MIMIC-IV 本体 | 数十万患者 | 高度结构化 | 互补:MNE 靠 hadm_id 与之 join |
| MIMIC-IV 药物抽取标签集 | 数百份 | 实体级标注 | 对照:验证 MNE 用药表抽取对不对 |
| MIMIC-III 表型标注集 | 数千份 | 表型标签矩阵 | 对照:同为出院小结派生,粒度不同 |
| MIMIC-IV-Ext-BHC 简要住院病程标注集 | 标注集量级 | 段落级 | 对照:MNE 放弃结构化的三个章节之一 |
| MIMIC-IV-Ext-EntityCoding | 四百份 | 实体级 | 对照:小规模精标的另一条路 |
| EHRNoteQA 系列 | 评测集量级 | 问答对 | 下游:用 MNE 的字段可以构造同类问题 |
这条关系线的意义在于:MNE 站在"全量但机器抽"这一端,库里其余出院小结派生资源大多站在"少量但人工标"那一端。两者不是替代关系,而是同一条流水线上的上下游——用少量精标验证全量抽取,用全量抽取铺开队列。
6.2 检索路径
| 你要找的东西 | 检索词 | 会落到哪里 |
|---|---|---|
| 原始出院小结全文 | mimic-iv-note、discharge |
父项目,note_id 是入口 |
| 结构化表本体 | mimic-iv、clinical database |
MIMIC-IV 本体,hadm_id join |
| 用药抽取的人工标签 | medication labels、mimic-note |
§6.1 的对照表 |
| 段落级标注 | hospital course、BHC |
§6.1 的对照表 |
| 实体级标注 | entitycoding |
§6.1 的对照表 |
| 问答类评测 | ehrnote、notes qa |
§6.1 的下游 |
| 表型标签 | phenotype annotations |
§2.5 与 §6.1 |
6.3 与其他库的分工判据
| 任务 | 主粮仓该用什么 | MNE 的位置 | 原因 |
|---|---|---|---|
| 按病史筛大型队列 | MNE | 主力 | 三十万次住院的字段化病史 |
| 入院与出院用药差异 | MNE | 主力 | 两张同构用药表 |
| 抽取算法的金标准评测 | 小规模人工标注集 | 不适用 | 标签本身来自 LLM |
| 抽取算法的大规模训练 | MNE | 主力(须注明来源) | 量够,但要写明非人工 |
| 现病史的细粒度研究 | MIMIC-IV-Note 原文 | 只提供原文 | 该章节未结构化 |
| 影像或波形相关 | 影像与波形专库 | 不适用 | 不含影像与波形 |
| 临床决策大模型评测 | 决策类基准集 | 辅助:可用字段构造病例 | 官方点名的用途之一 |
这张表最实际的两行是第一行与第三行。第一行说明它确实解决了"筛队列要自己写正则"这个具体麻烦;第三行说明它不能当裁判——裁判只能是人工标注的小集。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个常见误判:把"字段级准确率 92.2%“读成"这份数据八分之一是错的”。这个读法有三重错误。
第一,92.2% 是最低章节的分数,不是全库平均分;最高的过敏章节是 99.8%。第二,它是字段级(item level)而不是样本级:一条住院记录有十几个字段,单个字段错不等于整条不可用。第三,它是对随机抽样结果的复核,官方明确说复核"支持抽取质量,但不能确立每一条记录的正确性"——换句话说,未抽到的记录没有被任何人看过。
校正之后,正确的用法是把这些数字当成"数量级参考":知道哪些章节可信度高(过敏、入院用药、主要操作),哪些章节要回原文核(有意义的检查结果、既往史、体格检查),而不是把它们当成数据集的合格率。
7.1 五维评分
按数据可用性的常用维度打分,每项 1–5 分,分数针对"作为电子病历研究的结构化数据源"这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 5 | 300,720 次住院、137,402 名患者、1930 万行 |
| 标注质量 | 3 | 字段级准确率 92.2%–99.8%,且未覆盖全部记录 |
| 任务适配 | 5 | 十六个章节全部覆盖,原文与结构双轨 |
| 文档完整 | 5 | 逐文件数据字典、枚举词表、JSON 结构、载入脚本齐备 |
| 可获取性 | 2 | 认证访问,需 CITI 培训与 DUA,文件目录对未授权区域不可见 |
五项合计 20 分(满分 25)。这个分数结构说明它的强项在规模与文档,短板在可获取性与标注可信度——后者是任何 LLM 抽取数据集共有的,前者是 MIMIC 系列固有的。
7.2 质量的两层
第一层是规则档的可审计性。性别、出院科室、出院去向三张表由正则与字符串匹配产出,代码在仓库里可查,官方因此把它们排除在人工核验之外。这层的质量由代码保证,风险是模式设计本身的偏差——如果某个写法没被正则覆盖,它会静默地落空。
第二层是LLM 档的抽样可信度。十个章节进了人工核验,抽样设计(171 次住院、121 单人加 50 双人、2210 个病例级任务、13744 个字段级判定)足以支撑"数量级大致如此"的结论,不足以支撑"某一条具体记录是对的"的结论。这层的风险是系统性的:同一个提示词造成的偏差会在全库一致地出现,抽样复核容易发现随机错误,不容易发现这类一致偏差。
| 用途 | 需要哪一层保证 | 建议 |
|---|---|---|
| 队列筛查 | 第二层的数量级即可 | 可直接使用,方法节写明准确率区间 |
| 单病例分析 | 两层都不够 | 必须回 discharge_sections.csv 核对原文 |
| 训练抽取模型 | 两层都不够 | 用小规模人工标注集做验证 |
| 构造评测病例 | 第二层加人工复核 | 抽样人工过一遍再进评测集 |
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 队列筛选偏差 | 移除格式异常与章节不完整的报告 | 分母不是 MIMIC-IV-Note 全量 |
| 模式不完备 | 预定义模式无法覆盖原文全部信息 | 缺失不等于不存在 |
| 原文质量依赖 | 继承来源病历的书写不全与不准确 | 抽取再准也补不出没写的内容 |
| 去标识化损失 | 部分临床相关信息随遮蔽一起消失 | 剂量、日期等字段出现遮蔽标志 |
| 单中心来源 | 一家机构的书写习惯与人群构成 | 换中心泛化无保证 |
| LLM 一致偏差 | 同一提示词在全库造成同向错误 | 抽样复核不易发现 |
| 章节切分残差 | 5,461 例歧义表头需人工处理 | 说明自动切分并非全覆盖 |
最后一行值得单独说。官方在方法节里明确:识别出 24 个章节,8 个被上游去标识化移除,剩 16 个;章节切分受部分遮蔽的表头干扰(例如 “Discharge ___” 可能是 Discharge Condition 也可能是 Discharge Disposition),算法通过表头变体映射与章节相对顺序推断,仍有 5,461 例无法自动判定而人工处理。这个数字既是透明度的体现,也是一节提醒:切分不是无损的。
7.4 外部验证矩阵
本数据集于 2026 年 10 月 21 日发布,版本列表只有 1.0 一项。截至核验时,没有检索到针对它的独立复现或第三方评测研究,因此下表按"可预见的验证角色"而非"已有研究"给出。
| 验证角色 | 做法 | 讲得通的地方 | 风险 |
|---|---|---|---|
| 与人工标注集对照 | 用药物抽取标签集等小集核对用药表 | 能测出字段级误差的具体形态 | 小集自身也有标注口径问题 |
| 与父项目对照 | 按 note_id 回原文复核抽样 |
溯源链路完整 | 人力有限,覆盖面小 |
| 跨 MIMIC 版本一致性 | 与 MIMIC-IV 本体的编码字段比对 | 能发现系统性不一致 | 编码与叙述本来就不同源 |
| 下游任务增益 | 在风险校正模型里加入病史字段看改善 | 直接检验实用价值 | 改善可能来自信息泄漏而非抽取质量 |
外部验证缺失这件事本身不构成质量问题,只说明它的成熟度处于"刚发布"阶段。引用时不宜说"已被广泛验证"。
7.5 它为何值得持续关注
因为它解决的是一个会反复出现的麻烦。只要结构化表与叙述文本之间的裂缝还在,每个新项目就要重写一遍抽取。MNE 把这件事做成了公共品:一次抽取、十六张表、可溯源、有枚举词表、有载入脚本。后续的价值不取决于它有多准,而取决于社区是否把它当成共同的基线——如果大家都按同一套字段定义队列,不同论文之间的可比性会立刻改善。
§8 生态位与历史
8.1 历史沿革
MNE 是 MIMIC-IV-Ext 系列的一员。这个系列的命名规则很直白:MIMIC-IV-Ext-<名字> 表示它是 MIMIC-IV 或其模块的派生数据集,由不同团队各自贡献,共享同一套认证访问体系与 DUA。系列里已有的成员覆盖重症数据格式转换(CLIF)、临床事件知识图谱(CEKG)、指令微调语料、入排问答等不同方向。
MNE 在这个系列里的位置是"文本侧的结构化层"。它填补的是 MIMIC-IV-Note 自 2023 年发布以来一直存在的空缺:那批去标识化自由文本被大量使用,但每个使用者都在重复同一段预处理。
8.2 与 MIMIC-IV-Ext 系列的对照
| 维度 | MNE | 系列内其他派生物的共同点 |
|---|---|---|
| 来源 | MIMIC-IV-Note v2.2 | 多为 MIMIC-IV 或其模块 |
| 形态 | 结构化 CSV 表 | 各异:格式转换、图谱、问答、标注 |
| 规模 | 300,720 次住院 | 从数百到数十万不等 |
| 产出方式 | 规则+LLM | 多为脚本转换,少数含人工标注 |
| 访问 | 认证+DUA | 一致 |
| 引用要求 | 须同时引用父项目 | 一致 |
最后一行是使用时的硬要求。官方在"Parent Projects"栏里明确写出本数据集派生自 MIMIC-IV-Note v2.2,并要求使用时一并引用。漏引父项目是这类派生数据集最常见的引用错误。
8.3 生态位:公共抽取层
| 角色 | 原始文本 | 项目内私有脚本 | 公共抽取层 |
|---|---|---|---|
| 典型代表 | MIMIC-IV-Note | 各课题组自用代码 | 本数据集 |
| 优点 | 信息完整 | 贴合假设 | 可复用、可比 |
| 缺点 | 不可直接查询 | 不可复现、口径各异 | 精度受限、模式固定 |
| 失败模式 | 每个项目重复造轮子 | 结果无法跨研究比较 | 把抽取结果当金标准 |
MNE 坐在右边这一列。把公共抽取层当金标准用,会立刻遇到 §7 的精度问题;把它当"别人替你写好的第一版脚本"用,才是它的设计意图。
8.4 谁会用它,用来做什么
官方在使用说明里点名了五类用途,按实现难度从低到高排列:队列识别(按记载的病史、发现或治疗筛住院)、用药核对(比较入院前与出院时用药和住院医嘱)、过敏相关处方研究(过敏标签、抗生素处方与临床结局的关联)、风险校正(把记载的病史与功能状态纳入结局分析)、临床决策基准(构造病例用于开发与评估诊断模型和智能体)。
前三类是"查表就能做"的,第四类需要统计建模,第五类需要额外的评测设计。按这个顺序上手,能最快验证这份数据对自己有没有用。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 真实世界证据研究者 | 读 admissions.csv 与既往史表,确认队列口径 |
用 subject_id 分组建基线,把枚举当协变量 |
缺失不等于不存在(§1.6) |
| 临床 NLP 研究者 | 对照 discharge_sections.csv 抽查几十条 |
用行号溯源做错误分析,定位提示词问题 | 标签来自 LLM,不能当金标准 |
| 医疗大模型评测者 | 用字段构造病例与问题 | 加人工复核,形成评测集 | 抽样人工过一遍再进评测集 |
9.2 一条最短的可用流程
#-- 1. 完成 CITI 培训并签署 DUA,配置 ~/.netrc 后才能取文件
#-- 2. 只取枢纽表与既往史表,先验证口径再拉全量
wget -r -N -c -np -A "admissions.csv.gz,past_medical_history.csv.gz" \
--user="$PHYSIONET_USER" --ask-password \
https://physionet.org/files/mimic-iv-ext-note-extract/1.0/
import pandas as pd
adm = pd.read_csv('admissions.csv.gz')
pmh = pd.read_csv('past_medical_history.csv.gz')
#-- 按本人既往史筛队列:category 为 CONDITION 且 temporal_status 为 CURRENT
cond = pmh[(pmh.subject == 'PATIENT') &
(pmh.category == 'CONDITION') &
(pmh.temporal_status == 'CURRENT')]
#-- 关键:按 subject_id 去重,而不是按 hadm_id,否则同一患者被重复计数
cohort = cond[['subject_id']].drop_duplicates().merge(
adm[['subject_id']].drop_duplicates(), on='subject_id', how='left')
print(len(cohort))
上面这段代码的输出是使用者自行计算的结果,若写进论文必须连同版本号、筛选口径与去重键一起写明。
9.3 引用方式
| 引用对象 | 内容 |
|---|---|
| 本数据集 | Kuntzer, J., Schwethelm, K., Ketzer, C., Wende, E., Schlager, M., Rueckert, D., Kaissis, G., Jungmann, F., & Hager, P. (2026). MIMIC-IV-Ext MIMIC Note Extract(version 1.0). PhysioNet. https://doi.org/10.13026/cq50-rd11 |
| 父项目 | MIMIC-IV-Note: Deidentified free-text clinical notes v2.2(官方要求一并引用) |
| 平台 | PhysioNet 平台综述论文,按官方页面 Cite 按钮生成 |
写论文时建议同时注明:使用的版本号(1.0)、引用的是哪几张表、以及是否把抽取值当作金标准。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方页面(版本 1.0) |
| 文件核验 | 项目页与版本页经直接访问确认;文件目录对未授权区域不可见 |
| 不一致说明 | 各 CSV 的字节大小未获核验,已在 §5.1 标注 |
| 论文信息 | 未检索到独立的第三方评测文献,§7.4 按可预见角色给出 |
| 未核验内容 | 每个 CSV 的体积、覆盖年份、年龄与科室构成、逐条记录的正确性 |
| 图像 | 无配图;封面为生成式提示词,不含真实病历内容 |
| 免责 | 本文不构成临床建议;数据使用须遵守 PhysioNet 认证许可与 DUA 1.5.0 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它就是 MIMIC-IV-Note」 | 它是派生数据集,父项目是 MIMIC-IV-Note v2.2 | 官方 Parent Projects 栏 |
| 「十六个文件等于十六个章节」 | 十六个文件是 1 枢纽+1 原文+14 结构化表;章节数是 16 | 官方 Data Description |
| 「十三个章节结构化,所以十三张表」 | 十四张,体格检查拆成生命体征与系统两张 | 官方 Data Description |
| 「准确率 92% 意味着八个点全错」 | 92.2% 是最低章节的字段级分数,最高 99.8% | 官方表 1 |
| 「拿到文件就能直接用,不需要权限」 | 认证访问,需 CITI 培训并签 DUA 1.5.0 | 官方 Access 栏 |
| 「任何 CSV 阅读器都能读原文层」 | 原文层含引号内换行,需支持多行字段的解析器 | 官方 Usage Notes |
| 「字段为空就是没有这个情况」 | 官方明确:缺失不应解读为不存在 | 官方 Potential limitations |
| 「它恢复了被去标识化抹掉的信息」 | 官方明确未尝试恢复,只归一成 [REDACTED] |
官方 Privacy 段 |
| 「剂量字段是数字,可以算暴露量」 | 可能被遮蔽,有 dose_redacted 标志 |
官方数据字典 |
| 「它是多中心数据」 | 继承 MIMIC-IV-Note 的单中心覆盖 | 官方 Potential limitations |
| 「三档抽取全都进过人工核验」 | 规则档三张表(性别、科室、去向)被排除在核验外 | 官方 Quality validation |
FAQ
Q1:MNE 和 MIMIC-IV-Note 是什么关系?能不能只下它一个?
它是 MIMIC-IV-Note v2.2 的派生数据集,覆盖源库 331,793 份原始小结中过滤后的 300,720 次住院。可以只下它来做文本侧研究,但它不含 MIMIC-IV 本体的结构化表、影像与波形;要做结局分析通常还得回本体 join。官方同时要求引用父项目。
Q2:字段级准确率 92.2% 到 99.8%,我该怎么理解?
这是按章节给出的字段级(item level)数字,最低的是"有意义的检查结果"92.2%,最高的是过敏 99.8%。它是字段级而非样本级:一个字段错不等于整条记录不可用。同时它来自随机抽样复核,官方明确不能据此推断每一条记录的正确性。
Q3:为什么不把十六个章节全部结构化?
三个章节——现病史、简要住院病程、出院医嘱——在不同病例之间差异太大,找不到可靠的字段分解方式,官方选择保留逐字原文。这不是偷懒,是把不可靠的结构化换成可靠的原文。
Q4:能拿它训练临床信息抽取模型吗?
能,量足够大。但方法节必须写明标签来自规则与 LLM 抽取、字段级准确率区间是多少、以及是否做过人工复核。把它写成"人工标注的金标准"是硬伤。验证环节仍需小规模人工标注集。
Q5:怎么看某一条抽取值对不对?
discharge_sections.csv 保留了十六个章节的逐字原文,按 hadm_id 即可回查。pertinent_results.csv 更进一步给出 start_line 与 end_line,可以直接切出结果块在原文里的行区间,行号从 0 开始、两端闭区间。
Q6:数据集该怎么划分训练与测试?
用 subject_id 分组,不用 hadm_id。一名患者可以有多条住院记录,按住院随机划分会把同一患者同时放进两侧,导致结果偏乐观。
Q7:时间跨度、年龄范围这些边界数字在哪?
官方项目页没有给出这几项,需要回到父项目 MIMIC-IV-Note v2.2 与 MIMIC-IV 的页面上去取。引用时出处要标清楚,不要写成本数据集的属性。
Q8:为什么要给 Croissant 元数据?
Croissant 1.1 是描述机器学习数据集的元数据规范。官方提供的元数据描述了文件、列类型、键、指向 admissions 的外键以及受控词表,可以直接配合已发布的 gzip 文件使用,省掉自己写加载配置的一步。
术语表
| 术语 | 解释 |
|---|---|
| 出院小结 | 住院结束时书写的总结性文本,交代入院原因、住院经过与出院安排 |
| 信息转换 | 保住原文信息量的同时转成可查询结构,与"为单一假设抽少数变量"的抽取相对 |
| 字段级准确率 | 以单个字段为判定单位的准确率,区别于整条样本对或错 |
| Gwet’s AC1 | 一种机会校正后的评分者间一致度指标 |
| item level | 字段级;与之相对的是 case level(病例级) |
hadm_id |
MIMIC 的住院标识,本数据集的核心连接键 |
subject_id |
MIMIC 的患者标识,划分数据集时的分组键 |
note_id |
MIMIC-IV-Note 出院小结表里的原始小结标识 |
seq_num |
记录在原文该章节里的顺序号,从 1 开始 |
timepoint |
体格检查的时点:入院、出院、住院期间或未知 |
| 受控词表 / 枚举 | 取值被限定在有限集合内的字段类型 |
jsonb |
PostgreSQL 的二进制 JSON 类型,本数据集用于药物强度与频次 |
| PRN | 按需服用,与固定 schedule 相对 |
| Croissant | MLCommons 的数据集元数据规范,本数据集用 1.1 版 |
| DUA | 数据使用协议,本数据集为 PhysioNet Credentialed Health Data Use Agreement 1.5.0 |
| CITI 培训 | 人体研究伦理与合规在线培训,本数据集要求 Data or Specimens Only Research |
| 去标识化 | 移除或遮蔽可识别个人身份的信息的过程 |
[REDACTED] |
本数据集统一使用的遮蔽标记 |
| 认证访问 | 需审核身份与用途后才能下载,区别于开放访问 |
| Vertex AI | Google Cloud 的机器学习平台,本数据集的 LLM 调用走其 API 并零数据保留 |
附录 A:核心数字核对表
| 项 | 值 | 出处 |
|---|---|---|
| 源库原始小结数 | 331,793 | 官方 Methods/Cohort construction |
| 住院次数 | 300,720 | 官方 Abstract 与 Data Description |
| 患者数 | 137,402 | 官方 Data Description |
| CSV 文件数 | 16 | 官方 Data Description |
| 总行数 | 19.3 million | 官方 Data Description |
| 识别出的章节数 | 24 | 官方 Methods/Splitting into Sections |
| 被去标识化移除的章节数 | 8 | 官方 Methods |
| 保留的章节数 | 16 | 官方 Data Description |
| 结构化章节数 / 结构化表数 | 13 / 14 | 官方 Data Description |
| 纯文本章节数 | 3(现病史、简要住院病程、出院医嘱) | 官方 Data Description |
| 人工处理的歧义表头 | 5,461 | 官方 Methods |
| 参与核验的医生数 | 3 | 官方 Abstract 与 Methods |
| 每章节抽样住院数 | 171(121 单人+50 双人) | 官方 Quality validation |
| 病例级任务数 | 2,210 | 官方 Quality validation |
| 字段级判定数 | 13,744 | 官方 Quality validation |
| 字段级准确率区间 | 92.2%–99.8% | 官方表 1 |
| 一致度区间(Gwet’s AC1) | 88.4–99.8 | 官方表 1 |
单行表数量(键为 hadm_id) |
6 | 官方 Structure and Keys |
多行表数量(键含 seq_num) |
8 | 官方 Structure and Keys |
| 体格检查表键 | (hadm_id, timepoint) 与 (hadm_id, timepoint, system) |
官方 Structure and Keys |
| 出院科室枚举取值数 | 20 | 官方数据字典 |
| 出院去向枚举取值数 | 4 | 官方数据字典 |
| 身体系统枚举取值数 | 11 | 官方数据字典 |
| 使用的 LLM | Gemini 2.5 Flash、Gemini 3.1 Flash-Lite | 官方 Methods/Adaptive extraction |
| 版本与发布日期 | 1.0,2026-10-21 | 官方 Versions |
| DOI(v1.0) | 10.13026/cq50-rd11 | 官方 Discovery |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 | 官方 Access |
| 各 CSV 字节大小 | 未核验 | 文件目录对未授权区域不可见 |
附录 B:数字的来源分层
第一层:官方项目页(版本 1.0)。 住院次数、患者数、文件数、总行数、章节数、结构化表数、抽样与核验规模、字段级准确率与一致度、枚举取值数、许可与准入条件、发布日期与 DOI。这些数字直接来自项目主页的摘要、方法节、数据描述节与数据字典。
第二层:官方文件的结构推断。 各文件的字段数与主键粒度由数据字典逐条清点得出,属于结构计数而非统计量。
第三层:未核实。 每个 CSV 的字节大小、覆盖年份、年龄与科室构成、逐条记录的正确性、以及各枚举取值在实际数据中的出现情况。这些需要下载全量后统计或查阅父项目页面,本文按要求只写规模、结构、边界三类数字,未做自行计算。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | MIMIC-IV-Ext MIMIC Note Extract v1.0 | https://physionet.org/content/mimic-iv-ext-note-extract/1.0/ | 本文全部规模、结构、边界数字的来源 |
| 2 | MIMIC-IV-Note v2.2(父项目) | https://physionet.org/content/mimic-iv-note/2.2/ | 来源数据与时间跨度的出处 |
| 3 | MIMIC-IV v2.2 | https://doi.org/10.13026/6mm1-ek67 | 结构化表本体的对照 |
| 4 | PhysioNet 平台综述(2026,Nature Health) | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 5 | Gwet, K. L. (2008) 一致度指标原始论文 | https://doi.org/10.1348/000711006X126600 | AC1 的定义 |
| 6 | PhysioNet 关于 MIMIC 数据用于 LLM 与在线服务的要求 | https://physionet.org/news/post/llm-responsible-use/ | 隐私与合规做法 |
| 7 | mimic-note-extract 代码仓库 | https://github.com/kschwethelm/mimic-note-extract/ | 提示词、生成参数与载入脚本 |
| 8 | MLCommons Croissant 规范 | https://docs.mlcommons.org/croissant/docs/croissant-spec.html | 元数据格式 |
附录 D:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 300,720 次住院、137,402 名患者、16 个 CSV、1930 万行 | 这四个数字定义了它的量级与可用性 |
| 2 | 十六个章节给原文,十三个另有结构化表(体格检查拆两张) | 原文与结构双轨,是它最实用的设计 |
| 3 | 字段级准确率 92.2%–99.8%,按章节差异很大 | 决定哪些章节可以直接用、哪些要回原文核 |
| 4 | 缺失不等于不存在 | 官方明确写进局限性,是最容易犯的推断错误 |
| 5 | 认证访问,需 CITI 培训与 DUA,且要引用父项目 | 漏引父项目是派生数据集最常见的引用错误 |
需要更高工程化程度或合规出域的商业版本?
当前展示的公开版本适用于学术研究与原型验证。千方医数集依托三甲医院直采网络,提供经专家标注、符合伦理合规的专病数据集交易服务。
前往商城查看可交易产品 →
