CCCDB — 中文危重症 ICU 电子病历数据库 AI-Ready Wikipedia | 千方病案医数集

8,180 例 ICU 住院、10 张关系表、约 3.19 GB 中文危重症 EHR

来源 Zhejiang Provincial People's Hospital(浙江省人民医院) url: https://physionet.org/content/zhejiang-ehr-critical-care/发布时间: 2026-09-08最后更新: 2026-09-08 阅读 5

信息速览

数据集名称CCCDB — 中文危重症 ICU 电子病历数据库 AI-Ready Wikipedia | 千方病案医数集
数据类型约 3.19 GB CSV,8,180 例 ICU 住院,7,638 名患者,10 张关系表,凭证化访问
规模7,638 名 ICU 患者(8,180 例住院)
接入方式Zhejiang Provincial People's Hospital(浙江省人民医院) url: https://physionet.org/content/zhejiang-ehr-critical-care/
AI 就绪度

数据集封面

Chinese Critical Care Database (CCCDB) — 中文危重症 ICU 电子病历库 AI-Ready Wikipedia


INFOBOX

| 数据集名称 | Chinese Critical Care Database(中文危重症数据库) |
| 英文全称 | Establishment of a Chinese critical care database from electronic healthcare records in a tertiary care medical center |
| 别名/简称 | CCCDB;ZhejiangProvinceICU;zhejiang-ehr-critical-care |
| 疾病分类(ICD-11) | 1G40 脓毒症;1G41 感染性休克;CA40 肺炎;NB20 急性呼吸衰竭;5B12 急性肾损伤;BD11 心力衰竭 |
| SNOMED CT | 10001005(Sepsis);19109008(Septic shock);233604007(Pneumonia);40733008(Acute respiratory failure);35580004(Acute renal failure);42343007(Heart failure) |
| 数据模态 | 结构化 EHR 时序数据(生命体征/检验/用药/医嘱/微生物/转科)+ 中文自由文本(主诉/现病史/检查报告) |
| AI 任务类型 | 院内死亡预测、住院时长预测、脓毒症预警、风险因素分析、中文临床 NLP、模型外部验证 |
| 样本总数 | 8,180 例住院(7,638 名患者) |
| 数据大小 | 约 3.19 GB(10 个 CSV,合计 3,190,651,552 字节) |
| 数据格式 | CSV 纯文本关系表(可直接导入关系型数据库) |
| 许可证 | PhysioNet 数据使用协议(DUA:禁止再识别、禁止二次分享、发表须附代码) |
| 访问级别 | 申请审核(PhysioNet Credentialed Access:CITI 培训 + DUA 签署) |
| DUO 标签 | GRU(通用研究使用)+ PUB(发表须附代码) |
| 语言 | 中文为主(元数据与主诉部分英译) |
| 首发日期 | 2023-01-19 |
| 最后更新 | 2023-01-19(v1.0,唯一版本,PhysioNet 页面未列后续版本) |
| 发布机构 | Zhejiang Provincial People’s Hospital(浙江省人民医院) |
| 官方主页 | https://physionet.org/content/zhejiang-ehr-critical-care/ |
| 下载地址 | https://physionet.org/content/zhejiang-ehr-critical-care/1.0/ |
| DOI | 10.13026/901c-yv54(数据集 v1.0)/ 10.1038/s41597-023-01952-3(数据描述论文) |
| 引用次数 | 13+(Scopus/OUCI 记录,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 纯 CSV 即读即用、字段文档详尽;扣分项:无官方划分与预处理脚本、时间粒度仅到天、无日历日期、中文长文本处理门槛高、检验项目无标准术语映射 |
| 页面状态 | published |


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

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、ICU 类型与临床任务定义、金标准描述)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(双主键体系与 EAV 长表结构)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与浙江省人民医院、PhysioNet、Springer Nature 无任何商业利益关联。本页面不销售 CCCDB 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CCCDB 要求用户完成 CITI Program 培训并通过 PhysioNet 凭证化申请、签署数据使用协议(DUA),协议规定使用者不得试图再识别受试者、不得分享数据、发表时须公开关联代码。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

这是什么? Chinese Critical Care Database(CCCDB)是浙江省人民医院把本院综合中心 ICU 与急诊 ICU 的医院信息系统数据整理后发布在 PhysioNet 上的公开危重症数据库。它覆盖 2012 年 1 月至 2022 年 5 月的 8,180 例 ICU 住院、7,638 名患者,以 10 张 CSV 关系表呈现生命体征、检验、用药、医嘱、微生物培养与药敏、诊断、检查报告和院内转科信息(PhysioNet 官方页)。

为什么重要? 此前公开的 ICU 大数据库(MIMIC、eICU、AmsterdamUMCdb、HiRID)几乎全部反映西方医疗体系,中国在 2023 年之前仅有儿科 PIC 和感染专科 Zigong 两个公开危重症库。CCCDB 是第一个面向成人综合危重症、以中文记录为主的中国单中心公开 ICU 数据库,让"西方模型在中国人群上是否成立""中文病历能否做 NLP"这类问题第一次有了可复现的数据基础(Sci Data 论文)。

我能用它做什么? 训练院内死亡与住院时长预测模型、把 MIMIC 上训练的模型拿到中国人群上做外部验证、做风险因素与流行病学分析、对中文主诉/现病史做信息抽取。注意它的硬边界:真实日历日期已被移除(只能做"相对入院天数"的时间分析)、2018 年前生命体征来自纸质护理记录(密度断崖)、无影像文件(官方 Limitations)。

§1.1 技术摘要

CCCDB 由浙江省人民医院团队从医院信息系统(HIS)回顾性抽取生成,无任何排除标准,信息系统内全部 ICU 住院记录均纳入(论文 Methods)。数据库以 10 张逗号分隔值(CSV)关系表分发,各表以 Hospital_ID(住院唯一标识)关联,患者级标识为 patient_SNHospitalTransfer 表记录院内转科事件,用于推断每次住院内的 ICU 时段。最大表 Lab.csv 约 1.83 GB、含 11,082,482 条检验记录(214 种检验项目、17 种样本类型)。全部数据按 HIPAA 标准去标识:地址、生日、真实入出院与医嘱日期、个人号码被移除,年龄离散化为分箱,自由文本中的日期替换为星号,医护标识符删除,随机标识符不可回溯。数据经 PhysioNet 凭证化访问(CITI 培训 + DUA)分发,版本仅 v1.0(2023-01-19 发布)。

§1.2 战略价值

维度一:中国人群外推与公平性审计的稀缺测试床。 在 MIMIC-IV(299,712 患者)上训练的 ICU 模型常被质疑能否迁移到中国人群——中国脓毒症年新发病例在 2017 年估计约 300 万,占全球近 10%(论文引言)。CCCDB 提供了真实中国三甲医院 ICU 的检验、用药与转归分布,使得"西方训练—中国验证"的跨体系泛化实验、特征重要性漂移分析和死亡校准曲线对比成为可能。其检查报告与现病史的中文原文,也是中文临床预训练模型(如各类中文医疗 BERT)难得的真实 ICU 语料。

维度二:中西方信息系统差异的方法学样本。 中国医院信息系统与西方 Epic/Cerner 体系结构迥异:医嘱与用药分表、中西药并列记录、检验项目采用院内中文描述而非 LOINC。CCCDB 完整保留了这些"原始差异"(仅翻译元数据与主诉),对做跨库 schema 映射、OMOP/术语对齐研究、以及评估"数据库为中心"的 AI 系统在低资源医疗 IT 环境下的鲁棒性,是极少数可获得的公开样本。它同时也是单中心小库的典型——8,180 例的规模决定了它更适合验证与案例分析,而非从头训练大模型。

维度三:中文医疗 NLP 的 ICU 级语料来源。 主流中文医疗 NLP 语料多来自门诊病历或互联网医疗问答,ICU 场景的长文本(现病史、病程记录、CT/超声/MRI 报告)公开可得者极少。CCCDB 的 ExamReport(52.6 MB 报告文本)与 Med_history 字段提供了真实 ICU 书写语料:口语化主诉、星号化日期、中英药物名混排,这些"不完美"正是评估中文临床 NLP 系统鲁棒性的天然测试集。配合结构化标签(ICD-10、出院状态),可以零标注成本构造弱监督文本分类与实体抽取任务,是中文医疗信息抽取论文中少见的"免费 ICU 语料 + 免费标签"组合。

§1.3 同类数据集横向对比

数据集 规模(患者/住院) 国家/地区 模态 标注/转归 差异化定位
CCCDB(本库) 7,638 / 8,180 中国浙江(单中心) 结构化 EHR + 中文文本,无影像无波形 出院状态、ICD-10、住院天数 首个中文成人综合 ICU 公开库;无日历日期
MIMIC-IV 299,712 / 431,231+ 美国(单中心) EHR + 波形 + 影像 + 出院小结 丰富(死亡/SOFA/编码) 规模与生态标杆,西方体系
eICU-CRD 200,000+ / 多院 美国(208 院) 远程 ICU EHR 丰富 多中心美国对照面
AmsterdamUMCdb 20,109 / 23,103+ 荷兰(单中心) 综合 EHR 丰富 欧洲体系代表
HiRID 约 34,000 住院 瑞士伯尔尼(单中心) 高频时序(2 分钟级) 丰富 时序分辨率最高
PIC 12,881 / 13,450 中国(儿科单中心) 结构化 EHR + 中文文本 ICD-10CN 中国儿科 ICU;与 CCCDB 同源方法论
Zigong 感染库 感染专科 中国四川(单中心) 结构化 EHR 感染转归 中国感染专科 ICU
INSPIRE 约 130,000 韩国(单中心) 麻醉/手术 EHR 术后转归 亚洲围术期对照面

规模数字来源:De Gruyter 脓毒症 AI 综述 Table 3(2023)与各数据集官方页;MIMIC-IV 住院数因版本而异,表中为量级参考。

§1.4 版本时间轴

时间 事件 说明
2022-08-09 论文投稿 Sci Data 数据整理与伦理审批(QT2022185)完成
2023-01-10 论文接收 DOI 10.1038/s41597-023-01952-3
2023-01-18 GitHub 建库代码定稿访问 ZhejiangProvinceICU 仓库(仅 1 个 commit)
2023-01-19 PhysioNet v1.0 发布 唯一版本,含 10 张 CSV 表,约 3.19 GB
2023-01 论文在线发表 Sci Data 10:49,PMID 36690650
2023-01 至 2026-09 无新版本 PhysioNet 页面未列出 v1.1 及之后版本;引用 13+(Scopus,截至 2026-09)

§1.5 典型应用场景

  1. 院内死亡预测的中国人群外部验证:把在 MIMIC 上训练的死亡风险模型以零样本方式迁移到 CCCDB 的 8,180 例住院上,报告 AUROC 与校准斜率,量化跨体系性能损失(官方 Usage Notes 明确列出 model external validation 用途)。
  2. 住院时长与资源利用预测:中位住院 17 天(IQR 10-28)的长住院分布,适合做 LOS 分层与床位规划研究。
  3. 中文临床 NLPChiefComplain/Med_history/ExamReport 的中文原文(日期已星号化)可做实体抽取、主诉分类、检查报告结构化。
  4. 风险因素与流行病学分析:基于 ICD-10 诊断、检验与用药(含中药 Med_category)做共病网络、抗生素使用模式与药敏耐药趋势(限于相对时间)分析。
  5. 教学与方法学演练:单中心真实世界 EHR 的端到端数据工程案例——EAV 长表重塑、信息性缺失处理、患者级划分,适合作为医疗 AI 数据工程教材场景。

§2 医学背景

§2.1 ICD-11 编码映射

CCCDB 的诊断以 ICD-10(含中文版编码) 记录在 Diagnosis.csv。下表给出危重症高频病种的 ICD-11 对照,供跨库映射与术语标准化使用。注意:本库 ICD-10 为中国本地编码实践,向 ICD-11 迁移时应以 WHO 官方映射表为准,逐条校验而非批量自动转换。

病种(中文) 病种(英文) ICD-11 编码 本库记录载体
脓毒症 Sepsis 1G40 Diagnosis.csv 的 ICD10_code + 自由文本
感染性休克 Septic shock 1G41 Diagnosis.csv / MicrobiologyCulture.csv
肺炎 Pneumonia CA40 Diagnosis.csv / ExamReport.csv 报告文本
急性呼吸衰竭 Acute respiratory failure NB20 Diagnosis.csv / MedOrder.csv(呼吸支持医嘱)
急性肾损伤 Acute kidney injury 5B12 Diagnosis.csv / Lab.csv(肌酐、尿量)
心力衰竭 Heart failure BD11 Diagnosis.csv(共病高频项)
高血压 Hypertensive disease BA00 Diagnosis.csv(共病高频项)
2 型糖尿病 Type 2 diabetes mellitus 5A11 Diagnosis.csv(共病高频项)

论文 Fig. 3 的诊断共现网络显示,充血性心力衰竭(CHF)、高血压(HTN)、糖尿病(DM/DMcx)、外周血管疾病(PVD)等慢性共病在数据集中高频出现,与 Elixhauser 共病分类体系对齐(Sci Data 论文)。

§2.1b SNOMED CT 映射表

概念(中文) SNOMED CT 概念 编码 映射说明
脓毒症 Sepsis (disorder) 10001005 与 ICD-11 1G40 对应;需宿主炎症反应语境
感染性休克 Septic shock (disorder) 19109008 循环衰竭亚型,编码时需血管活性药佐证
肺炎 Pneumonia (disorder) 233604007 影像报告文本中常见"肺部感染"表述需归一
急性呼吸衰竭 Acute respiratory failure (disorder) 40733008 机械通气医嘱可作代理证据
急性肾损伤 Acute renal failure (disorder) 35580004 建议结合肌酐轨迹判定 KDIGO 分期
心力衰竭 Heart failure (disorder) 42343007 慢性共病标签,Elixhauser 体系高频项
高血压 Hypertensive disorder (disorder) 38341003 系统性共病标签
2 型糖尿病 Diabetes mellitus type 2 (disorder) 44054006 与 DM/DMcx(Elixhauser)对应

本库自身不发布 SNOMED CT 编码;上表为千方病案医学编辑部基于公开术语库整理的映射建议,用于 AI 标签体系对齐,临床决策前需专业术语专家复核。

§2.2 疾病简介与流行病学

危重症医学(critical care)面向危及生命的急性疾病与创伤,其特征是诊疗过程产生高粒度数据流:医嘱、生命体征、检验、影像与护理记录。ICU 人群以脓毒症及其休克试、急性呼吸衰竭、急性肾损伤、多器官功能障碍与术后高危状态为主,常叠加心力衰竭、高血压、糖尿病等慢性共病。流行病学上,中国是全球脓毒症负担最大的国家之一:2017 年估计新发脓毒症约 300 万例,接近全球新发病例的 10%(论文引自文献 [14])。在本库 8,180 例住院中,出院状态为死亡者 438 例(约 6%),治愈 5,666 例(73%)、未愈 1,202 例(16%)、未知 444 例(6%)(PhysioNet 页面),与三甲综合 ICU 的真实转归谱系一致。住院天数中位数 17 天,显著长于西方 ICU 数据库常见的数天量级,反映中国 ICU 的收治与转出习惯差异。

从诊断共现结构看,论文 Fig. 3 的网络图显示消化性溃疡(PUD)、糖尿病(DM/DMcx)、外周血管疾病(PVD)、充血性心力衰竭(CHF)、高血压(HTN/HTNcx)与肺动脉高压(PHTN)构成高频共病簇,与 Elixhauser 共病体系的编码习惯吻合。对本库 45 岁以上占约 87% 的年龄结构而言,慢病共病而非单一急症主导了住院谱系,这决定了:共病特征工程(Charlson/Elixhauser 指数)在本库上的边际收益高于 MIMIC 等西方库;同时,单一病种亚组样本量会迅速跌破百例,亚组分析设计前必须先统计诊断编码的覆盖密度。中国脓毒症年新发约 300 万例(2017)的人口学背景进一步说明:以本库为代表的中文 ICU 数据基础与中国的真实疾病负担之间存在数量级缺口,公开数据共享仍处于起步阶段。

§2.3 临床任务定义

任务类型 定义 本库支持方式 标签来源
筛查/预警 在 ICU 病程早期识别脓毒症、器官衰竭恶化风险 生命体征 + 检验时序(相对天数粒度) 需自建(Sepsis-3 或 ICD 首诊)
诊断 从文本与结构化数据推断疾病分类 ExamReport 报告文本 → ICD 类别 Diagnosis.csv 的 ICD10_code
分级 疾病严重度量化 检验/生命体征派生 SOFA/qSOFA 需自行计算
预后 院内死亡、住院时长预测 EMR.csv 的出院状态与 DaysHospitalStay StatusOnDischargeDaysHospitalStay

§2.4 患者人群特征

维度 内容
来源机构 浙江省人民医院(杭州医学院附属人民医院),急诊与危重症中心
单位设置 综合中心 ICU + 急诊 ICU(EICU)两个单元
时间范围 2012 年 1 月 至 2022 年 5 月
纳入标准 无排除标准:信息系统内全部 ICU 住院记录
样本量 7,638 名患者,8,180 例住院
性别(按住院) 女 2,965(36.2%),男 5,215(63.8%)
年龄分布 (0,18] 岁 35 例;(18,45] 1,012;(45,65] 2,609;(65,75] 1,952;(75,90] 2,044;(90,150] 528(年龄仅以分箱提供)
住院天数 总体中位数 17 天(IQR 10-28);男 18,女 16
种族 未提供(中国单中心,官方未发布种族字段)
就医类型 成人综合危重症 + 急诊危重症混收

§2.5 临床价值

对临床研究者,CCCDB 首次让"以中文为原生语言、以中国三甲 ICU 为场景"的回顾性研究可被国际同行复核:脓毒症等感染的抗生素选择与药敏(DrugSens.csv 136 MB)、中药与西药并用模式(Medication.Med_category)、以及检查报告的书写范式,都是西方数据库中不存在的变量维度。对 AI 团队,它的价值在于暴露真实临床信息系统的"脏"结构——EAV 长表、中文自由文本、日期脱敏、2018 年前后护理记录电子化断点——这些正是模型从论文走向病历系统时必然遭遇的分布。对政策与运营研究,2018 年床位扩张前后收治量变化的自然实验(论文 Fig. 1)可用于评估 ICU 扩容对收治结构的影响。

§2.6 金标准与标注性质

维度 内容
数据划分 无官方划分:发布即全量单表 CSV,训练/验证/测试需研究者自建(见 §5)
标注方式 无 AI 用途人工标注;诊断 ICD-10 码来自临床编码流程;出院状态与住院天数为行政记录事实
标注者 临床医师、编码员与病案统计人员(机构日常工作流程产生),非研究专设标注
标注一致性 官方未报告编码一致性指标(如 kappa),使用时应以 ICD-10 为弱标签对待
数据性质 回顾性真实世界数据(RWD),反映真实临床setting的缺失与错误(官方 Limitations 原文承认)
参考标签 院内死亡 = StatusOnDischarge 归一(Dead 438 例,约 6%,类别极不平衡)

§3 数据集规格

§3.0 获取途径抉择矩阵

数据集仅一个版本(v1.0,2023-01-19),不存在多版本选择问题;实际"抉择"发生在获取途径上:

你的需求 推荐途径 体量 理由
完整建模/训练 PhysioNet Credentialed Access 下载 v1.0 全量 CSV 约 3.19 GB 唯一可拿到全部 10 表与原始中文文本的方式
复现数据整理流程 GitHub ZhejiangProvinceICU 建库代码 文档级 官方建库 pipeline 说明,理解字段语义
可行性评估/教学演示 论文 Table 1-17 + PhysioNet 页面统计 无需凭证即可了解规模、人群与表结构
时序高频建模 建议改用 HiRID/MIMIC-IV 本库时间粒度为天,不支持小时级动力学

§3.1 模态详情

模态组 内容要点 AI 可用性
结构化时序(7 表) VitalSign 生命体征 EAV:描述/值/单位/相对入院天数 天粒度时序特征
结构化时序 Lab 检验 EAV,11,082,482 条、214 项目、17 样本类型 最重的信号源,需分块 + 术语归一
结构化时序 Medication 用药事件:西药/中药大类、单次剂量、频次、途径、起止时间 暴露特征、治疗强度代理
结构化时序 MedOrder 医嘱:regular/stat、起止相对时间 治疗决策流;与 Medication 内容部分重叠
结构化时序 MicrobiologyCulture 微生物培养结果 感染标签的客观证据源
结构化时序 DrugSens 培养菌的抗生素药敏(136.4 MB) 耐药研究、抗生素选择建模
结构化时序 HospitalTransfer 院内转科事件 重建 ICU 时段的唯一途径
半结构化文本 EMR 主诉(中英双语)+ 现病史/既往史/出院状态(中文长文本) 中文 NLP 语料 + 标签载体
半结构化文本 ExamReport CT/超声/MRI 检查报告自由文本(52.6 MB) 报告结构化语料;无影像文件
编码标签 Diagnosis ICD10_code + 诊断自由文本 共病指数、疾病标签

补充说明:

  • 明确不包含:监护仪/呼吸机波形(摘要中提及 HIS 存有波形,但发布文件中无波形数据)、影像 DICOM、2018 年前的电子护理记录(纸质未数字化)。
  • 文本模态的脱敏形态:自由文本中的真实日期被替换为星号(*),主诉提供中英双语双列,其余长文本保留中文原文——这是为保真而刻意为之的设计,NLP 使用者需将其纳入预处理策略(见坑点 6)。

§3.2 按子集样本数与文件大小表

文件 大小(字节) 内容 主键/关联
Lab.csv 1,828,953,993 检验结果,11,082,482 条,214 项目/17 样本类型 Hospital_ID + 项目描述 + 时间
VitalSign.csv 607,364,251 生命体征 EAV(描述/值/单位/相对天数) Hospital_ID + 时间
Medication.csv 277,782,777 用药事件(西药/中药、单次剂量、频次、途径) Hospital_ID + 时间
MedOrder.csv 207,348,204 医嘱(regular/stat、起止相对时间) Hospital_ID + 时间
DrugSens.csv 136,436,217 培养细菌的抗生素敏感性 Hospital_ID + 培养
ExamReport.csv 52,649,246 CT/超声/MRI 检查报告自由文本 Hospital_ID
MicrobiologyCulture.csv 39,362,619 微生物培养结果 Hospital_ID + 时间
Diagnosis.csv 25,582,236 诊断:ICD10_code + 自由文本 Hospital_ID
EMR.csv 13,730,602 每次住院一条:人口学 + 主诉 + 病史 + 转归 Hospital_ID
HospitalTransfer.csv 1,441,407 院内转科事件(推断 ICU 时段) Hospital_ID + 时间

各表行数官方仅对 Lab 表给出(11,082,482);其余表行数未公布,使用时以实际文件为准。

§3.3 文件格式

属性 规格
容器 无压缩 CSV(comma separated value),官方注明"可导入任意关系型数据库系统"
文件组织 一文件一表,UTF-8 文本;自由文本含中英混排与 *(脱敏日期)
标识符 patient_SN(32 位随机串,患者级)、Hospital_ID(住院级,格式混杂:`ZY
时间表示 相对入院天数(time zero = 住院入院时刻),无日历日期
官方推荐工具 R tidyverse(关系管理)+ data.table(大文件);Python pandas 等价可用

§3.4 存储大小

下载体积约 3.19 GB(3,190,651,552 字节,10 文件求和)。工程建议:载入 SQLite/PostgreSQL 后磁盘占用约放大 1.5-2.5 倍(索引与类型开销);转为 Parquet 后通常可压缩至原 CSV 的 30%-50%(Lab 表收益最大)。全量载入内存(pandas)峰值建议预留 12-16 GB RAM;32 GB 工作站可无压力完成全流程(见 §6.8)。

§3.5 标注方式

本库无面向 AI 的人工标注层。可用标签均为诊疗流程的副产物:ICD-10 诊断码(临床编码流程)、出院状态四分类(治愈/未愈/死亡/未知,行政记录)、住院天数(出入院登记)、微生物培养与药敏(实验室 LIS 结果)。这类"自动标注"天然带真实世界噪声:编码不全、文本描述与编码不一致、状态记录缺失(Unknown 444 例)。凡需高质量标签的任务(如脓毒症发病时点),需研究者按 Sepsis-3 等临床标准在检验/用药/生命体征上自行算法化重建,并在论文中报告构建逻辑。

§3.6 标注者资质与一致性

标签产生者为机构日常工作人员:临床医师书写诊断与报告,病案编码员转换 ICD-10,检验与微生物结果由 LIS 自动导出,护理记录由 ICU 护士录入(2018 年后电子化)。官方论文未报告编码质量审计或标注者间一致性。作为参照,同行中国儿科库 PIC 在其论文中报告了双语治理流程,而 CCCDB 仅报告了翻译质控(百度学术翻译 + 两名作者人工核对元数据与主诉)。使用者应把 ICD-10 与出院状态当作"可信但非金标准"的弱标签,关键任务需抽样人工复核。

§3.7 采集周期

2012 年 1 月至 2022 年 5 月,约 130 个月连续采集。关键结构性节点:2018 年综合 ICU 与急诊 ICU 床位扩张,此后住院人次显著增加(论文 Fig. 1);同年电子护理记录系统上线,此前的护理数据为纸质档案、未纳入本库。这意味着 2012-2017 段的生命体征与护理相关时序密度系统性偏低。

§3.8 地域覆盖

单中心:中国浙江省杭州市(浙江省人民医院,杭州医学院附属人民医院)。无多中心、无省份外样本。地域代表性限于长三角经济发达省份的城市三甲医院;农村与基层转诊谱系、西部省份疾病谱差异无法由本库覆盖。

§3.9 设备与系统规格

数据源自医院信息系统(HIS)与检验 LIS,2018 年起电子护理图表系统上线。官方未公布监护仪/呼吸机型号与采样频率——这无关紧要,因为发布数据中不包含原始波形:生命体征以护理图表的离散测量值呈现,粒度受护理巡视节奏支配而非设备采样率。微生物鉴定与药敏采用临床微生物实验室常规流程(具体仪器未公布)。

§3.10 深度溯源链

患者诊疗(2012-01 至 2022-05,浙江省人民医院两个 ICU)
  └─ 医院信息系统 HIS / LIS / 电子护理系统(2018 起)原始记录
      └─ 伦理审批 QT2022185(回顾性,知情同意豁免,赫尔辛基宣言)
          └─ HIPAA 去标识 pipeline(日期移除/年龄分箱/星号替换/标识符随机化)
              └─ 建库代码(GitHub ZhejiangProvinceICU,访问于 2023-01-18)
                  └─ PhysioNet v1.0 发布(2023-01-19,DOI 10.13026/901c-yv54,RRID SCR_007345)
                      └─ 数据描述论文(Sci Data 10:49,DOI 10.1038/s41597-023-01952-3)

§4 数据结构

§4.0 目录树

数据下载解压后即为 10 个平铺 CSV(无子目录):

chinese-critical-care-database-1.0/
├── Diagnosis.csv              # 诊断:ICD10_code + 自由文本(25.6 MB)
├── DrugSens.csv               # 培养菌的抗生素药敏(136.4 MB)
├── EMR.csv                    # 每次住院一条的人口学+病历主记录(13.7 MB)
├── ExamReport.csv             # CT/超声/MRI 检查报告自由文本(52.6 MB)
├── HospitalTransfer.csv       # 院内转科事件,用于定位 ICU 时段(1.4 MB)
├── Lab.csv                    # 检验结果 EAV,11,082,482 条(1.83 GB,最大表)
├── Medication.csv             # 用药事件:西药/中药、剂量、频次、途径(277.8 MB)
├── MedOrder.csv               # 医嘱:regular/stat、起止相对时间(207.3 MB)
├── MicrobiologyCulture.csv    # 微生物培养结果(39.4 MB)
└── VitalSign.csv              # 生命体征 EAV:描述/值/单位/相对天数(607.4 MB)

§4.1 DAIMS 字段字典

核心字段 8 列字典(信息性缺失编码列:本库无官方缺失编码体系,空白即缺失;若缺失本身携带信息会特别注明):

字段(所属表) 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
patient_SN(全部表) Text 患者级唯一随机标识 3c74cf74c36241b7082ec35e458279dc 患者级分组划分(防泄漏) 无(随机指派不可回溯) 不允许缺失 32 位十六进制串
Hospital_ID(全部表) Text 住院级唯一标识,格式混杂 ZY\ 360812;IP\ 20190500469 表间关联主键 多格式需归一解析
Sex(EMR) Text 性别(按住院记录) Female / Male 人口学分层、公平性审计 以登记为准,偶有笔误 缺失极少 Female/Male
Age_cut(EMR) Text 分箱年龄(HIPAA 去标识产物) (65, 75] 粗粒度年龄调整 组内真实年龄不可知 缺失极少 6 个闭区间分箱
ChiefComplain / ChiefComplain_Eng(EMR) Text 主诉(中文原文/英译) 发热伴气促 3 天 / Fever and dyspnea for 3 days 文本分类、实体抽取 翻译为机器+人工混合质控 空值=未记录主诉 自由文本
Med_history(EMR) Text 现病史中文长文本(未翻译) 患者于入院前 1 天无明显诱因出现*** 中文临床 NLP 语料 内含星号化日期,口语化书写 空值=未记录 自由长文本
StatusOnDischarge(EMR) Text 出院状态四分类 Cured / Dead / Not cured / Unknown 死亡预测标签(需归一) 四类计数与总数不自洽(官方原文如此) Unknown 即信息性缺失 4 类
DaysHospitalStay(EMR) Float 住院天数(相对入院) 17 LOS 预测标签;终点截断 以天粒度截断 空值=记录缺失 正实数
ICD10_code(Diagnosis) Text ICD-10 诊断编码(含中文版) A41.9 共病映射、Elixhauser/Charlson 本地编码实践,编码不全 空值=仅自由文本诊断 ICD-10 码表
VitalSign_DESC(VitalSign) Text 生命体征项目描述(中英混排) 心率 / HR pivot 为宽表列 同义描述需归一(如 HR/心率) 空值=未测 院内术语表
VitalSign_value(VitalSign) Float 测量数值 88 时序特征 受护理巡视节奏支配 空值=未测 依项目而异
VitalSign_unit(VitalSign) Text 单位字符串 bpm / mmHg 单位归一(必须) 同项目多单位并存 空值=单位未记录 院内单位表
VitalSign_DateTime(VitalSign) Float 相对入院的测量时间(天) 3.5 时序对齐、特征窗口 粒度仅到天,无小时 空值=时间未记录 ≥ 0
Med_category(Medication) Text 药物大类:西药/中药 Western medicine / Chinese traditional 中西药并用研究 大类粗分 空值=未分类 2 类

§4.2 标签分布

以出院状态为核心的转归标签分布(PhysioNet 页面原文,按住院计):

出院状态 例数 官方标注比例 AI 建模提示
Cured(治愈) 5,666 73% 多数类
Not cured(未愈) 1,202 16% 语义模糊(含好转未愈/自动出院等)
Dead(死亡) 438 6% 死亡预测正类;极度不平衡,必须报 AUPRC
Unknown(未知) 444 6% 建议从监督训练中剔除或单独消融

注意:四类合计 7,750,与总数 8,180 相差 430 例——官方页面原文即为该组数字(存在内部不自洽),建模前务必以实际 EMR.csv 重新统计并对齐标签口径。

§4.3 关键统计

统计项 数值 来源
住院数 8,180 PhysioNet 页面
患者数 7,638 PhysioNet 页面
多次入院人次 ≥ 542(8,180 − 7,638) 由两数差值推算
男性 / 女性(按住院) 5,215 / 2,965 Sci Data Table 1
住院天数中位数(IQR) 17(10-28) Sci Data Table 1
出院死亡 438(6%) PhysioNet 页面
检验记录 / 项目 / 样本类型 11,082,482 / 214 / 17 PhysioNet 页面
平均每住院检验记录 约 1,355 由上推算
45 岁以上住院占比 约 87%(7,133/8,180) 由年龄分箱求和推算
90 岁以上住院 528 Sci Data Table 1
数据总量 3,190,651,552 字节 ≈ 3.19 GB Table 2 求和

工程含义:(1) 约 542 人次为同一患者再次入院,患者级去重是划分前提(坑点 1);(2) 检验密度约每住院 1,355 条,天级聚合后每住院约 17-30 行特征矩阵,规模适合单卡训练;(3) 年度收治在 2018 年床位扩张后显著抬升(论文 Fig. 1),年代均衡性需在划分时复核。

§4.4 数据层级

患者(patient_SN,7,638)
  └─ 住院(Hospital_ID,8,180;EMR.csv 一行一次住院)
      └─ ICU 时段(由 HospitalTransfer 转科事件推断;一次住院可含多段)
          └─ 事件行(VitalSign / Lab / Medication / MedOrder / MicroCulture /
             DrugSens / ExamReport / Diagnosis 的时间戳记录或关联记录)

层级含义:(patient_SN, Hospital_ID) 是 1:N 关系;几乎所有业务表只携带 Hospital_ID,因此"同一患者跨住院关联"必须经 EMR 表先取回 patient_SN 再反查——这是防泄漏划分的必经步骤。ICU 时段不由单独表给出,需用 HospitalTransfer 的科室名与时间区间重建;官方注明科室名 “Emergency medical department” 即急诊 ICU(EICU)。

§4.5 缺失值与信息性缺失

缺失情形 位置 机制 建模建议
2018 年前生命体征稀疏 VitalSign 采集断点(纸质护理记录未数字化) 按年代分层或加入年代指示变量;勿当作随机缺失
出院状态 Unknown EMR 信息性缺失(转归未归档) 剔除训练集或作为单独类别消融
自由文本中日期 EMR/ExamReport HIPAA 脱敏(替换为 * NLP 时将 * 作为特殊 token 保留,勿当噪声清洗
检验项目未开单 Lab 医师决策驱动(信息性缺失) 用缺失指示符 + 前次值携带(LOCF)双通道
年龄精确值 EMR 去标识(仅 Age_cut 分箱) 用分箱中点或有序编码;勿伪造连续年龄
诊断文本无编码 Diagnosis 编码流程不全 以自由文本做补充匹配,标注弱标签置信度

§5 数据划分与使用建议

§5.1 官方划分

无官方划分。发布即全量单表 CSV,论文未提供 train/val/test 切分、交叉验证 fold 或 leaderboard 协议。所有以 CCCDB 报告的性能数字都依赖作者自建划分,跨论文不可直接比较。

§5.2 社区惯例与推荐划分

截至 2026-09,社区尚未形成公认的划分惯例(引用 13+ 中尚无提出标准 split 的方法学论文)。千方编辑部推荐基线:

# 患者级分层划分:先聚到 patient_SN,再切分,再展开回住院级
from sklearn.model_selection import GroupShuffleSplit
import pandas as pd

emr = pd.read_csv(f"{DATA_ROOT}/EMR.csv")            # 一行一次住院
patient_label = emr.groupby("patient_SN")["StatusOnDischarge"].apply(
    lambda s: int((s == "Dead").any()))              # 患者级死亡标签用于分层

gss = GroupShuffleSplit(n_splits=1, train_size=0.7, test_size=0.15, random_state=42)
train_idx, hold_idx = next(gss.split(emr, groups=emr["patient_SN"]))
# 15% 测试再从 hold 中按同样方式对半分出 val/test,全部以 patient_SN 为组键

划分后必须复核三点:(1) 患者级无交集;(2) 出院状态比例在三个集合间漂移 < 2 个百分点;(3) 2018 年前后住院在 train/test 中的占比大致均衡(否则学到的是年代而非疾病)。

划分质量门禁代码(交付前必跑):

# 划分质量三断言:无交集 / 标签漂移 / 年代均衡
def assert_split_quality(train_df, val_df, test_df):
    # 1) 患者级无交集
    for a, b in [(train_df, val_df), (train_df, test_df), (val_df, test_df)]:
        assert not (set(a["patient_SN"]) & set(b["patient_SN"])), "患者跨集合!"
    # 2) 标签漂移 < 2 个百分点
    rates = [d["y_death"].mean() for d in (train_df, val_df, test_df)]
    assert max(rates) - min(rates) < 0.02, f"标签漂移过大: {rates}"
    # 3) 年代均衡(以相对天数代理不可行 -> 用住院序分位近似;
    #    若从 ExamReport/文本中无法恢复年份,改为按患者首次入院序号分桶)
    order = train_df["Hospital_ID"].rank(pct=True)
    print("train 相对位置分布:", order.describe().loc[["25%", "75%"]].to_dict())

assert_split_quality(train_df, val_df, test_df)

划分策略权衡表:

策略 抗患者泄漏 抗时间漂移 适用场景 代价
按住院行随机划分 仅教学演示 完全失效,禁用于论文
GroupShuffleSplit(患者级) 一般建模基线 后年代样本可能集中在测试侧
患者级首次入院时间切分 论文级标准协议 有效样本减少、需公布切分脚本
GroupKFold + 年代分桶混合 稳健性最高的评估 实现与报告复杂度最高

§5.3 泄漏风险清单

风险 机制 缓解
患者级泄漏 8,180 住院 vs 7,638 患者,同一患者多次入院跨集合泄露转归信息 一切划分以 patient_SN 为组键(GroupShuffleSplit/GroupKFold)
时间泄漏(终点信息) DaysHospitalStayDischargeTimeStatusOnDischarge 直接编码结局 预测特征仅允许使用预测时点 t 之前的事件
时间泄漏(住院时长代理) "入院第 20 天仍在院"本身强预测死亡 报告多个预测时点(入院 24h/48h/7 天)的分别性能
标签定义泄漏 Unknown 出院状态混入死亡类或剔除策略不一致 在协议中固定处理方式并全程一致
年代泄漏 2018 电子化断点使后年代样本特征更全,模型借年代作弊 特征前先按年代分桶消融验证

§5.4 交叉验证与外部验证

  • 内部交叉验证:patient_SN 为组键的 GroupKFold(5 折);对死亡标签做分层组采样(按患者级死亡标签分层)以稳定稀有正类。
  • 外部验证推荐:官方 Usage Notes 明确支持 model external validation 用途。可行方向:(1) MIMIC-IV/eICU 模型 → CCCDB 验证(需克服 ICD-9/10 与无 LOINC 的映射成本);(2) 中国儿科库 PIC → 成人库 CCCDB 的跨年龄泛化属否定性对照;(3) 同省 Zigong 感染库做感染亚组对照。任何外部验证都应报告"重映射后特征覆盖率",避免把特征缺失误读为模型失效。

§6 AI 就绪指南

§6.0 云端快速启动

CCCDB 无官方 BigQuery/HuggingFace 镜像(与 MIMIC-IV 不同),且 DUA 禁止二次分享数据,因此不存在合规的云端公开镜像。推荐工作流:本地或私有云工作站完成 CITI 培训与 PhysioNet 凭证申请后直接下载约 3.19 GB 全量 CSV;3.19 GB 规模无需分布式设施,一台 32 GB RAM 的单机即可完成全部预处理与经典模型训练;如需在 Colab/云端 GPU 实例上实验,只能由获准用户自行上传至受控私有环境(注意 DUA 的不分享条款)。

§6.1 快速上手

# ============================================================
# 目录结构预期(下载解压后):
#   DATA_ROOT/
#     ├── EMR.csv  ├── Diagnosis.csv  ├── VitalSign.csv
#     ├── Lab.csv  ├── Medication.csv ├── MedOrder.csv
#     ├── DrugSens.csv ├── MicrobiologyCulture.csv
#     ├── ExamReport.csv └── HospitalTransfer.csv
# data_root 与文件名的拼接关系:f"{DATA_ROOT}/{table}.csv"
# 最小可用子集:EMR.csv(8,180 行)+ Diagnosis.csv 即可完成
#   人群画像、标签分布检查与"诊断→死亡"的弱标签基线;
#   VitalSign/Lab 属第二阶段(时序建模)再引入。
# ============================================================
import pandas as pd

DATA_ROOT = "chinese-critical-care-database-1.0"   # 解压目录名

# 1) 主记录:一行一次住院(8,180 行)
emr = pd.read_csv(f"{DATA_ROOT}/EMR.csv", low_memory=False)
print(emr.shape)                                    # (8180, n_cols)
print(emr["patient_SN"].nunique())                  # 7638 -> 患者数
print(emr["StatusOnDischarge"].value_counts())      # 转归分布,注意 Unknown

# 2) 诊断:ICD-10 + 自由文本
dx = pd.read_csv(f"{DATA_ROOT}/Diagnosis.csv", low_memory=False)
print(dx["Hospital_ID"].nunique(), "例住院有诊断记录")

# 3) 用小表先跑通主键关联,再碰 1.83 GB 的 Lab
transfer = pd.read_csv(f"{DATA_ROOT}/HospitalTransfer.csv")
merged = emr[["Hospital_ID", "StatusOnDischarge"]].merge(
    dx.groupby("Hospital_ID").size().rename("n_dx"),
    left_on="Hospital_ID", right_index=True, how="left")
print(merged["n_dx"].isna().sum(), "例住院无任何诊断行 -> 需在协议中处理")

§6.2 数据获取

获取流程(凭证化访问,与 MIMIC 同一通道):

步骤 内容 耗时参考
1 CITI Program 完成 “Data or Specimens Only Research” 课程并取得证书 数小时
2 PhysioNet 提交凭证化访问申请,上传 CITI 证书、签署 DUA(不再识别/不分享/发表附代码) 数天内审核
3 批准后从 v1.0 文件页 下载 10 个 CSV(约 3.19 GB) 分钟级
4 用官方 MD5 校验文件完整性(页面 Table 2 提供全部 10 个 MD5) 分钟级
# 批准后,PhysioNet 提供 HTTPS 直链下载(登录态)。
# 以下载后校验 MD5 为例(对照官方 Table 2 的 MD5 值):
cd chinese-critical-care-database-1.0
md5sum EMR.csv
# 期望输出:5c6048462b1dc6d44a47687fb34bbc65  EMR.csv
md5sum Lab.csv
# 期望输出:4939ebb2155bbcfaff37da8e78f8cc4a  Lab.csv

§6.3 预处理全流程

全流程五步:格式装载 → 表关联与 ICU 时段重建 → EAV 重塑与单位归一 → 时间对齐 → 文本清洗。关键原则:先落 Parquet/SQLite 再分析,避免反复全量解析 1.83 GB 的 Lab.csv。

# 步骤 1-2:CSV -> Parquet + 患者回链
import pandas as pd
DATA = "chinese-critical-care-database-1.0"

for t in ["EMR", "Diagnosis", "Medication", "MedOrder",
          "MicrobiologyCulture", "DrugSens", "ExamReport",
          "HospitalTransfer", "VitalSign"]:
    pd.read_csv(f"{DATA}/{t}.csv", low_memory=False)\
      .to_parquet(f"{DATA}/{t}.pq")

# Lab.csv(1.83 GB)分块转换,控制内存峰值在 ~4 GB
chunks = []
for chunk in pd.read_csv(f"{DATA}/Lab.csv", chunksize=2_000_000,
                         low_memory=False):
    chunks.append(chunk)
pd.concat(chunks, ignore_index=True).to_parquet(f"{DATA}/Lab.pq")

# 患者 SN 回链:业务表只有 Hospital_ID,经 EMR 建立映射
emr = pd.read_parquet(f"{DATA}/EMR.pq")
h2p = emr.set_index("Hospital_ID")["patient_SN"]
# 步骤 3:VitalSign EAV -> 每日宽表(单位归一 + 天级对齐)
vs = pd.read_parquet(f"{DATA}/VitalSign.pq")
vs["VitalSign_DateTime"] = pd.to_numeric(vs["VitalSign_DateTime"],
                                         errors="coerce")
vs = vs.dropna(subset=["VitalSign_DateTime", "VitalSign_value"])
vs["day"] = vs["VitalSign_DateTime"].astype(int)      # 相对入院天数

# 单位归一示例:同一项目不同单位的换算(以体温为例)
def norm_temp(row):
    v, u = row["VitalSign_value"], str(row["VitalSign_unit"]).strip()
    if "°F" in u or u == "F":
        return (v - 32) * 5 / 9
    return v                                          # °C 或无单位默认
vs["value_norm"] = vs.apply(norm_temp, axis=1)

# 项目名归一:同义描述合并(HR/心率/Pulse -> heart_rate)
alias = {"HR": "heart_rate", "心率": "heart_rate", "Pulse": "heart_rate",
         "RR": "resp_rate", "呼吸频率": "resp_rate"}
vs["item"] = vs["VitalSign_DESC"].replace(alias)

daily = (vs.groupby(["Hospital_ID", "day", "item"])["value_norm"]
           .mean().unstack("item").reset_index())    # 每日聚合宽表
# 步骤 3b:ICD-10 共病指数(Charlson/Elixhauser 特征工程)
# 论文官方推荐 R icd 包(https://github.com/cran/icd);Python 侧等效做法:
dx = pd.read_parquet(f"{DATA}/Diagnosis.pq")
dx["icd"] = dx["ICD10_code"].astype(str).str.strip().str.upper()

# 以 ICD-10 前缀映射 Charlson 类别(节选高频类;完整映射需人工审核)
charlson_map = {
    "I21": "AMI", "I252": "AMI_old",            # 心梗
    "I50": "CHF",                                # 充血性心衰
    "I63": "CVD", "I61": "CVD", "I60": "CVD",    # 脑血管病
    "J44": "COPD", "J45": "COPD",                # 慢阻肺
    "E10": "DM", "E11": "DM",                    # 糖尿病(无并发症近似)
    "N18": "CKD",                                # 慢性肾病
    "C": "cancer",                               # 恶性肿瘤大类近似
}
def to_charlson_group(code):
    for prefix, grp in charlson_map.items():
        if code.startswith(prefix):
            return grp
    return None

dx["cc_group"] = dx["icd"].map(to_charlson_group)
cc = (dx.dropna(subset=["cc_group"])
        .drop_duplicates(["Hospital_ID", "cc_group"])
        .assign(present=1)
        .pivot(index="Hospital_ID", columns="cc_group",
               values="present").fillna(0).astype(int))
cc["n_comorbid"] = cc.sum(axis=1)
# 注意:前缀近似映射仅为起步方案,论文级交付应逐类别人工审核

<details>
<summary>步骤 4-5:ICU 时段重建 + 死亡标签构造 + 中文文本清洗(点击展开,约 45 行)</summary>

# 步骤 4:由 HospitalTransfer 重建 ICU 时段(天粒度)
ht = pd.read_parquet(f"{DATA}/HospitalTransfer.pq")
ht["day"] = pd.to_numeric(ht.filter(like="DateTime").iloc[:, 0],
                          errors="coerce").astype("Int64")
# EICU 在科室名中表现为 "Emergency medical department"(官方注明)
icu_mask = ht.apply(lambda r: r.astype(str)
                    .str.contains("ICU|Emergency medical department",
                                  case=False, na=False).any(), axis=1)
icu_days = (ht[icu_mask].groupby("Hospital_ID")["day"]
            .agg(icu_first="min", icu_last="max"))

# 步骤 5a:死亡标签归一(协议固定:Unknown 剔除)
emr["y_death"] = emr["StatusOnDischarge"].map(
    {"Dead": 1, "Cured": 0, "Not cured": 0})
cohort = emr.dropna(subset=["y_death"]).copy()
cohort["y_death"] = cohort["y_death"].astype(int)

# 步骤 5b:中文文本清洗(保留星号脱敏日期,勿当噪声)
import re
def clean_zh(t):
    if not isinstance(t, str):
        return ""
    t = re.sub(r"\s+", " ", t)             # 折叠空白
    t = re.sub(r"[*]{2,}", "*", t)         # 连续星号收敛(日期占位)
    return t.strip()
cohort["med_history_clean"] = cohort["Med_history"].map(clean_zh)
cohort["complaint_clean"] = cohort["ChiefComplain"].map(clean_zh)

# 输出建模队列:住院级一行,含标签与 ICU 时段
cohort = cohort.merge(icu_days, left_on="Hospital_ID",
                      right_index=True, how="left")
cohort.to_parquet(f"{DATA}/cohort.pq")

</details>

§6.4 PyTorch DataLoader

以"入院前 7 天每日聚合特征 → 院内死亡预测"为例的完整可运行 Dataset。特征取自 VitalSign/Lab 的天级宽表(§6.3 产物),按 patient_SN 分组划分。

<details>
<summary>完整 PyTorch 代码(点击展开,约 60 行)</summary>

import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader

DATA = "chinese-critical-care-database-1.0"
MAX_DAYS, PAD = 7, 0.0

class CCCDBMortality(Dataset):
    """住院级死亡预测:前 MAX_DAYS 天的每日特征矩阵。
    预期输入:daily_wide.parquet(Hospital_ID, day, 特征列...)
              cohort.pq(Hospital_ID, patient_SN, y_death)
    """
    def __init__(self, cohort, daily, feature_cols):
        self.samples = []
        daily = daily[daily["day"] < MAX_DAYS]
        feats = daily.groupby("Hospital_ID")[feature_cols]
        for hid, y, _sn in cohort[["Hospital_ID", "y_death",
                                   "patient_SN"]].itertuples(index=False):
            arr = feats.get_group(hid).sort_values("day")\
                        [feature_cols].to_numpy(dtype=np.float32) \
                if hid in feats.groups else np.empty((0, len(feature_cols)),
                                                     dtype=np.float32)
            x = np.full((MAX_DAYS, len(feature_cols)), PAD, dtype=np.float32)
            x[:min(len(arr), MAX_DAYS)] = arr[:MAX_DAYS]
            mask = (np.arange(MAX_DAYS) < len(arr)).astype(np.float32)
            self.samples.append((torch.from_numpy(x),
                                 torch.from_numpy(mask),
                                 torch.tensor(float(y))))

    def __len__(self):
        return len(self.samples)

    def __getitem__(self, i):
        return self.samples[i]

def collate(batch):
    xs, ms, ys = zip(*batch)
    return (torch.stack(xs), torch.stack(ms),
            torch.stack(ys).unsqueeze(1))

class GRUTag(torch.nn.Module):
    """带缺失掩码通道的双层 GRU:x = [features ; mask]"""
    def __init__(self, n_feat, hid=64):
        super().__init__()
        self.gru = torch.nn.GRU(n_feat * 2, hid, num_layers=2,
                                batch_first=True, dropout=0.2)
        self.head = torch.nn.Linear(hid, 1)

    def forward(self, x, mask):
        z = torch.cat([x, mask.unsqueeze(-1)], dim=-1)
        out, _ = self.gru(z)
        return self.head(out[:, -1])           # 取末隐状态

# ---- 装配(cohort 与 daily 来自 §6.3)----
cohort = pd.read_parquet(f"{DATA}/cohort.pq")
daily  = pd.read_parquet(f"{DATA}/daily_wide.parquet")
FEATS  = [c for c in daily.columns if c not in ("Hospital_ID", "day")]

# 患者级划分(防泄漏,详见坑点 1)
train_ids, val_ids = patient_group_split(cohort, frac=0.85)
tr_ds = CCCDBMortality(cohort[cohort.patient_SN.isin(train_ids)], daily, FEATS)
va_ds = CCCDBMortality(cohort[cohort.patient_SN.isin(val_ids)],   daily, FEATS)
tr = DataLoader(tr_ds, batch_size=64, shuffle=True,  collate_fn=collate)
va = DataLoader(va_ds, batch_size=256, shuffle=False, collate_fn=collate)

model = GRUTag(len(FEATS))
opt = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)

# 类平衡:按训练集正类率计算 pos_weight(官方口径死亡约 6%)
n_pos = sum(float(s[2]) for s in tr_ds.samples)
pos_w = torch.tensor([(len(tr_ds) - n_pos) / max(n_pos, 1.0)])
crit = torch.nn.BCEWithLogitsLoss(pos_weight=pos_w)

for epoch in range(10):
    model.train()
    for x, m, y in tr:
        opt.zero_grad()
        loss = crit(model(x, m), y)
        loss.backward()
        opt.step()
    # 验证 AUROC 见 §6.9

</details>

patient_group_split 为按 patient_SN 分组的 85/15 切分工具(实现同 §5.2 的 GroupShuffleSplit),此处从略。

§6.5 八大坑点

⚠️ 坑点 1:同一患者多次入院跨训练/测试集泄漏(分类:数据泄漏)

问题:数据库含 8,180 例住院但仅 7,638 名患者,至少 542 人次为同患者的再次入院。若按住院行随机划分,同一患者的多次住院分属训练与测试集,模型凭患者固有特征(体质、共病谱)“背答案”,测试 AUROC 虚高。
症状:随机划分比患者级划分的 AUROC 高出 0.03-0.10;同一患者的多条住院记录被预测出几乎相同的分数。
解决

  1. 简单方法:所有划分以 patient_SN 为组键,用 sklearn.model_selection.GroupShuffleSplit / GroupKFold,并断言 set(train_SN) & set(test_SN) == ∅
  2. 进阶方法:对重复入院患者,训练时在同患者住院间共享嵌入(patient embedding)或以患者为单位做 sampling weight,避免同一患者信息被当作独立样本重复计数。
  3. SOTA 方法:采用 patient-level temporal split——按患者首次入院时间切队列,训练集只含早期患者,测试集只含后期患者,同时抑制时间漂移与患者泄漏(MIMIC 社区的标准做法,迁移到本库同样适用)。
    参考Sci Data 论文 Data Records 节(7,638/8,180 口径);Harutyunyan 等的基准划分实践(Sci Rep 2019)。

⚠️ 坑点 2:真实日历日期被移除,伪造日历时间=制造假特征(分类:预处理陷阱)

问题:HIPAA 去标识移除了全部真实日历日期,所有时间戳是"相对入院天数"。任何试图重建绝对时间(季节、星期、真实间隔天数)的特征都无数据支撑;官方 Limitations 明确说明 temporal trend 研究不可行。
症状:特征重要性中出现"季节""星期几"等伪变量;跨患者的时间差计算结果为负值或异常值。
解决

  1. 简单方法:彻底放弃日历特征,仅使用相对入院天数与住院内相对间隔。
  2. 进阶方法:把"住院内事件的时间顺序"作为序数特征保留(事件先后与间隔天数本身有临床含义),并对跨患者的绝对时间差计算逻辑做单元测试,一旦出现负间隔立即报错。
  3. SOTA 方法:在跨库迁移时以"住院内事件序列"为时间语义(event-time 而非 wall-clock),与 MIMIC 对齐时统一用相对时间网格,日历维度仅在各自库内消融。
    参考PhysioNet 页面 Limitations 节

⚠️ 坑点 3:2018 年电子护理断点造成生命体征密度断层(分类:偏倚陷阱)

问题:电子护理图表系统 2018 年才上线,2012-2017 段的护理数据为纸质档案未纳入。前段住院的生命体征/护理相关时序系统性稀疏,后段密集。混合训练时模型可能学到"记录多=病重=死亡"的伪相关。
症状:以测量次数为隐含特征的模型在年代子集上 AUROC 差异巨大;前段样本的时序特征大量缺失。
解决

  1. 简单方法:由于真实年份已被移除,无法直接标注"是否 2018 年后入院";可改用测量密度代理——计算每住院的生命体征记录数并取分位,低密度分位作为"纸质时代疑似"指示列加入特征。
  2. 进阶方法:对所有时序特征做"按可用窗口归一"(每 24h 测量次数标准化),并对缺失模式加入缺失指示通道(mask),让模型显式区分"没测"与"测了正常"。
  3. SOTA 方法:按测量密度聚类分层评估——高密度/低密度子集分别训练互验,报告跨层泛化差距;该差距即电子化断点偏倚的量化。
    参考Sci Data 论文(电子护理记录 2018 年上线原文)

⚠️ 坑点 4:时间粒度只有"天",小时级动力学不可建模(分类:标签理解)

问题VitalSign_DateTime/Med_startTime 等全部以相对入院天数记录(论文表 14/17 明示)。Sepsis-3 的 3 小时/6 小时窗口、SOFA 逐小时轨迹、用药后数小时反应等小时级任务在本库上根本无法定义。
症状:用连续天数值当小时用,窗口切片产生系统性错位;脓毒症预警模型性能远低于 MIMIC 上同类工作且无法复现。
解决

  1. 简单方法:全部任务按天对齐(daily aggregation),任务定义改为"以入院第 N 天已知信息预测第 N+1 天事件"。
  2. 进阶方法:在天粒度内做序数建模(把一天内事件视为无序集合,用 set/attention 聚合而非时序模型),避免给日内顺序强加假设。
  3. SOTA 方法:需要小时级动力学的研究改用 HiRID(2 分钟采样)或 MIMIC-IV 波形;CCCDB 的定位是"天级轨迹 + 转归 + 中文文本"。
    参考PhysioNet 页面 Table 17(VitalSign_DateTime 定义)

⚠️ 坑点 5:Hospital_ID 三种格式混杂,字符串关联静默失败(分类:工程陷阱)

问题:官方示例中 Hospital_ID 同时存在 ZY|360812IP|20190500469 与纯数字(9432117336688072433)三种形态。若读入时被 pandas 自动推断为数值,前缀型 ID 报错尚可察觉,纯数字 ID 却会与字符串型分属两种 dtype,merge 时静默丢失匹配。
症状:表关联后样本量骤减但无报错;nunique() 统计不稳定;不同批次运行关联结果不一致。
解决

  1. 简单方法:读入全部表时对该列强制 dtype={"Hospital_ID": str},杜绝自动类型推断。
  2. 进阶方法:解析前缀语义(ZY/IP 疑为中文 HIS 的住院/在院单据前缀),建立"前缀 + 数字体"标准化函数,输出统一规范键并保留原始键做审计。
  3. SOTA 方法:构建关联质量门禁——每次 merge 后断言匹配率(如 ≥ 99%),并输出未匹配键清单;把 ID 归一纳入 CI 测试,防止上游数据更新(未来新版本)时静默回归。
    参考PhysioNet 页面(Hospital_ID 示例)Sci Data 论文 Methods

⚠️ 坑点 6:中文长文本的星号日期与未翻译陷阱(分类:工程陷阱)

问题Med_historyExamReport 等长文本为中文原文未翻译(官方为保真刻意不译),其中真实日期被替换为星号(*),且存在中英混排。常见的英文 NLP 预处理(小写化+去标点+去 *)会破坏脱敏日期占位与中文语义边界。
症状:分词后出现大量 * 碎片 token;翻译 API 批量翻译后实体错乱(剂量、时间被改写);文本长度分布远超英文病历 token 上限。
解决

  1. 简单方法:以中文分词(jieba 及医疗词典)处理,把 * 注册为特殊 token 保留(它携带"此处有日期"的信号)。
  2. 进阶方法:直接使用中文医疗预训练模型做特征抽取,避免有损翻译;星号前后片段可抽取为"相对日期表达式"(如"入院前 3 天")转结构化。
  3. SOTA 方法:文本-结构化联合建模时,将星号日期表达式解析出的相对天数与 VitalSign_DateTime 网格对齐,实现文本事件与编码事件在同一时间轴上的融合。
    参考Sci Data 论文(翻译策略与星号替换原文)

⚠️ 坑点 7:死亡标签的极不平衡与官方计数不自洽(分类:标签理解)

问题:出院死亡仅 438 例(约 6%),且官方页面的四类出院状态计数合计 7,750,与住院总数 8,180 相差 430 例——数据描述论文与页面自身存在内部不自洽。直接以 StatusOnDischarge 为标签而不做口径审计,会引入来源不明的标签漂移。
症状:AUROC 看起来尚可但 AUPRC 极低(0.1-0.2 量级);不同论文报告的正类率从 5% 到 7% 不等,复现对不上。
解决

  1. 简单方法:建模前以实际 EMR.csv 重算标签分布并写入口径文档;Unknown 一律剔除,Dead=1,其余=0。
  2. 进阶方法:以 DiagnosisOnDeath/DiagnosisOnDeath 相关联字段交叉验证死亡标签一致性;同时报告 AUROC 与 AUPRC 及校准曲线(6% 正类下 AUROC 会误导)。
  3. SOTA 方法:按预测时点定义多任务标签(24h/48h/院内),把"未愈/自动出院"的语义模糊性交给多任务头而非硬二分;用 grouped bootstrap 给 AUPRC 置信区间。
    参考PhysioNet 页面基线统计论文 Fig. 2/3

⚠️ 坑点 8:Lab 表 1.83 GB EAV 长表 + 无 LOINC 映射(分类:工程陷阱)

问题Lab.csv 以 EAV 长表存储 1,108 万条检验记录,214 种检验项目用院内中文/英文描述而非 LOINC 编码;整表 pd.read_csv 一次性读入可致内存耗尽,项目名同义变体又会让 pivot 后列数爆炸。
症状:8 GB 内存机器读表即 OOM;pivot 后出现上千列且"血肌酐/肌酐/Cr"分属不同列;与 MIMIC 联动分析时无法对齐检验字典。
解决

  1. 简单方法chunksize 分块读取 + 只保留目标项目子集,先过滤再聚合。
  2. 进阶方法:构建院内项目名→标准名(自建小字典或借 icd 包思路做模糊匹配)映射表,映射后再 pivot;对每项目维护"单位-参考范围"元数据表。
  3. SOTA 方法:一次性落 Parquet/SQLite(见 §6.3),用 DuckDB 做列裁剪聚合;跨库对齐时借助 OMOP CDM 的 LOINC 映射思路人工审核高频项目(Top 50 覆盖绝大多数记录量),低频项目归入"其他"。
    参考PhysioNet 页面 Table 2(Lab 规模);官方推荐 data.table(R)处理大文件的说明。

§6.6 数据增强

技术 适用性 做法 风险控制
时间抖动(±1 天) ✅ 安全 天粒度内平移事件时间 幅度不得超过记录粒度本身
缺失掩码置零 ✅ 安全 训练时随机屏蔽部分天级特征 与 mask 通道配合,模拟漏记
患者 mixup ✅ 安全 同患者多次住院特征插值 必须患者级,禁止跨患者标签混合
文本回译 ⚠️ 谨慎 中文→英文→中文 星号日期表达式冲突时禁用
少数类过采样 ⚠️ 谨慎 SMOTE/复制死亡样本 报告非校准指标时注明;校准需后处理
伪日期回填 ❌ 危险 向星号位置填充合成日期 无数据支撑,见坑点 2
超范围幅值扰动 ❌ 危险 对检验值加大幅噪声 破坏临床合理性,模型学伪关系
EAV 随机删行 ❌ 危险 删除长表随机行 测量节奏本身是信息,删行破坏它

§6.7 模型推荐表

任务 推荐模型 理由
死亡/LOS 基线 Logistic Regression / XGBoost(天级聚合特征) 8,180 例规模下树模型强且稳,Charlson/Elixhauser 特征工程收益大
时序轨迹 GRU / 时间感知 Transformer(带 mask 通道) 天粒度 + 缺失密集,掩码通道显著优于朴素填充
中文文本 中文医疗 BERT 类编码器 + 文本分类头 主诉/报告为短中文文本,预训练中文模型零样本可迁移
跨库迁移 MIMIC 预训练 + CCCDB 微调(特征子集对齐) 需先解决 ICD/检验术语映射,见坑点 8
表格生成/自监督 掩码重建(MAE 式)自监督 缺失密集 EHR 的标准范式

§6.8 硬件需求表

阶段 最低配置 推荐配置
下载与校验 8 GB 磁盘余量 20 GB(含 Parquet 副本)
全量预处理 16 GB RAM,4 核 32 GB RAM,8 核(Lab 分块并行)
经典模型(LR/XGBoost) 16 GB RAM,无 GPU 32 GB RAM
深度模型(GRU/Transformer) 8 GB 显存 GPU 16-24 GB 显存(batch 64 序列长 7 天)
中文 NLP 微调 12 GB 显存 24 GB 显存(长文本梯度累积)

§6.9 评估指标代码

import numpy as np
import torch
from sklearn.metrics import roc_auc_score, average_precision_score

@torch.no_grad()
def evaluate(model, loader):
    model.eval()
    ys, ps = [], []
    for x, m, y in loader:
        ps.append(torch.sigmoid(model(x, m)).numpy())
        ys.append(y.numpy())
    y, p = np.vstack(ys).ravel(), np.vstack(ps).ravel()
    return {
        # 6% 正类:AUROC 与 AUPRC 必须成对报告
        "AUROC":  roc_auc_score(y, p),
        "AUPRC":  average_precision_score(y, p),
        "prevalence": float(y.mean()),          # 口径自检:应 ≈ 0.054-0.06
    }

# 患者级 grouped bootstrap 置信区间(同一患者不跨重采样单元)
def grouped_ci(y, p, groups, n=1000, seed=0):
    rng = np.random.default_rng(seed)
    gidx = pd.factorize(groups)[0]
    stats = []
    for _ in range(n):
        pick = rng.choice(gidx.max() + 1, gidx.max() + 1, replace=True)
        sel = np.concatenate([np.where(gidx == g)[0] for g in pick])
        stats.append(roc_auc_score(y[sel], p[sel]))
    return np.percentile(stats, [2.5, 97.5])

§6.10 MLOps 笔记

  1. 数据版本:数据集仅 v1.0,但要在 pipeline 中显式记录 version=1.0 与 10 个文件的 MD5(官方 Table 2 全部提供),未来若发布 v1.1 可自动检测变更。
  2. 口径即代码:标签口径(Unknown 剔除、Dead=1)、年代断点处理、ID 归一规则全部落成带测试的模块,禁止散落在 notebook。
  3. 不可用日历监控:常规"按月份监控数据漂移"对本库失效(无日历日期);改用"按入院批次序号 + 患者级时间序"监控特征漂移。
  4. 合规即流水线:DUA 要求发表附代码——把训练与评估代码默认开源化(repo 模板从第一天就建),并确保数据本身不出现在仓库。
  5. 可复现划分:患者级划分的随机种子、分层键、切分比例写进配置文件并与指标一起版本化。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
单中心偏倚 全部样本来自杭州一家三甲医院,诊疗规范、收治标准与转归带机构印记 仅声明单中心适用范围;外部验证(MIMIC/Zigong/PIC)
收治构成偏倚 综合 ICU 与急诊 ICU(EICU)混收,EICU 患者急性起病谱更重 用 HospitalTransfer 区分单元做亚组分析
性别偏倚 男性住院占 63.8% 公平性审计按性别分层报告指标
年代/电子化偏倚 2018 年前护理记录纸质化,时序密度断层;同年床位扩张改变收治结构 年代分层训练与评估(坑点 3)
编码偏倚 ICD-10 为中国本地编码实践,编码完整性未审计 以弱标签对待;抽样人工复核
去标识信息损失 无日历日期、年龄仅分箱、文本日期星号化 高(任务依赖) 任务设计阶段就排除日历依赖

§7.2 标注质量

无研究用人工标注层;可用标签(ICD-10、出院状态、LOS、培养/药敏)均为临床流程副产物。官方未报告编码一致性或质量审计,仅声明"数据反映真实临床环境的缺失与错误"。翻译质控相对明确:元数据与短文本经机器翻译后由两名作者人工核对;长文本不翻译以保真。因此,死亡与 LOS 标签的可信度高于诊断编码(行政记录 vs 编码流程),而任何需要"发病时点"的标签(脓毒症 onset 等)均需研究者按临床标准重建并自行承担构建误差。

§7.3 泛化性评估

目标场景 失效风险 证据
欧美 ICU 人群(MIMIC 型) 高:反向迁移时中国三甲长住院谱系、中西药并用模式失配 库间住院天数中位数差异悬殊(17 天 vs 数天);综述 Table 3
中国基层医院 高:本库为省会三甲,检验开单密度与专科设置远高于基层 单中心设计(官方 Methods)
小时级急性场景(复苏、插管决策) 极高:时间粒度为天,任务不可定义 官方时间戳定义(Table 14/17)
影像 AI 不可行:无影像文件,仅报告文本 官方 Data Description(ExamReport 为自由文本)
中文 NLP 产品原型 中低:语料真实但含星号脱敏与口语化书写 论文翻译与脱敏描述

§7.4 伦理

研究经浙江省人民医院伦理委员会批准(批件号 QT2022185),回顾性设计由 IRB 决定豁免知情同意,遵循《赫尔辛基宣言》。去标识按 HIPAA 执行:移除地址、生日、真实入出院/医嘱日期、个人号码,年龄离散化,自由文本日期星号化,医护/药师标识符删除;患者与住院标识符为随机指派,无法回溯原始数据。获取方须完成 CITI 培训、签署 DUA(禁止再识别、禁止分享、发表附代码)。使用方在中国境内开展研究时,还需遵守《人类遗传资源管理条例》《个人信息保护法》对本库的适用性评估——本库虽已去标识,涉及再分析产生新数据集时应经本单位伦理审查。

§7.5 公平性

可审计的公平性维度有限:性别(男 63.8%/女 36.2%)与年龄分箱(6 组)可用,种族/民族、收入、医保类型未发布。性别失衡部分反映急诊与创伤谱系的收治现实,建模时应分性别报告死亡预测的 AUROC 与校准差异;年龄仅分箱使精细的年龄公平性分析受限——结论应表述为年龄段级而非连续年龄级。跨语言公平性值得注意:NLP 模型对中文文本的成熟度低于英文病历,若产品管线以英文生态预训练,中文长文本的性能折扣需显式测量。

§7.6 数据漂移

本库的漂移监控有独特约束:无日历日期,传统的时间漂移(按月/季度)分析不可定义。可用的替代轴:(1) 批次序——按入院相对顺序把 8,180 例住院分桶,监控特征分布;(2) 年代断点——2018 电子化是已知最强的内部漂移源(坑点 3);(3) 收治结构——床位扩张后收治量抬升,疾病谱可能随收治策略变化。对外部署时,真实医院环境必然存在与本库的分布差(年份、季节、设备、编码升级),应以上线后前 N 月的并联采集数据做主动校准,而非假设库内时序可外推。

§7.7 DAIMS 24 项评估

# 检查项 状态 说明
1 宽格式 ⚠️ EMR 为宽表;VitalSign/Lab 等为 EAV 长表,需自行 pivot
2 唯一标识 patient_SN + Hospital_ID 双键清晰,随机指派不可回溯
3 特殊字符 ⚠️ ID 含 `\
4 重复行 ⚠️ EAV 天然多行;官方未提供行级去重说明,需自行审计
5 缺失编码 无统一缺失编码体系;官方承认缺失与错误并存
6 标签标识 ⚠️ 出院状态可作标签但无独立标签表,且官方计数内部不自洽
7 罕见类分组 ⚠️ 罕见 ICD-10 码无官方合并指引,需按 Elixhauser/Charlson 自行聚合
8 偏倚评估 论文提供人群基线、年代收治变化与诊断共现网络
9 数据字典 论文 Table 2-17 逐表逐字段解释,质量高
10 信息性缺失解释 ⚠️ 2018 断点等机制可推断,但无官方逐字段缺失机制文档
11 设备记录 无监护仪/呼吸机型号与波形数据,生命体征非设备级采样
12 共线性 ⚠️ MedOrder 与 Medication 内容重叠,需规定使用其一或做映射
13 编码映射 检验/药物无 LOINC/RxNorm 映射,ICD-10 为本地实践
14 时间戳处理 ⚠️ 统一为相对入院天数(一致),但粒度到天且无日历日期
15 划分建议 无官方划分,社区亦无公认 split
16 泄漏讨论 ⚠️ 官方未讨论泄漏;患者重复入院问题需研究者自行处理
17 标签分布 论文给出性别/年龄/LOS/转归分布(虽有不自洽处)
18 测量偏倚 ⚠️ 2018 电子化断点构成明确测量偏倚,官方有说明但未量化
19 外部验证建议 Usage Notes 明确列出 model external validation 用途
20 版本记录 ⚠️ 仅 v1.0 且无变更日志;未来更新机制不明
21 预处理脚本 ⚠️ GitHub 提供建库代码(非分析预处理);无官方分析 pipeline
22 合规要求 CITI + DUA 流程清晰,条款(不识别/不分享/附代码)明确
23 多模态对齐 文本与结构化数据无对齐层,无影像/波形文件
24 去标识化 HIPAA 全流程,机制透明,含文本日期星号化细节

DAIMS 评分:13.0 / 24(✅=1 分 × 7 项,⚠️=0.5 分 × 12 项,❌=0 分 × 5 项)

评分解读:13.0/24 处于"文档优秀但工程配套缺位"的典型单中心 EHR 库区间。它的字段文档(第 9 项)与合规流程(第 22 项)达到 MIMIC 级水准,双主键设计(第 2 项)甚至比多数中国数据库更干净;失分集中在三处——工程化配套设施(无划分/无预处理脚本/无术语映射,第 13/15/21 项)、时间与设备粒度(第 11/14 项)、多模态完整性(第 23 项)。这些失分项大多是"单中心首发数据库"的阶段性特征,而非设计缺陷。

对你意味着什么:(1) 如果你的任务是转归预测与风险因素分析,本库可直接上手,预算 1-2 周做 EAV 重塑与标签口径审计;(2) 如果你的任务依赖小时级时序、影像或标准术语映射,本库不是正确工具,改用 MIMIC-IV/HiRID;(3) 任何交付物必须包含患者级划分与 AUPRC 报告,否则审稿人可依据本页 §5.3/坑点 1 直接质疑有效性;(4) 如果你做跨库研究,先评估把 214 个院内检验项目映射到标准术语的人力成本(这是本库最大的隐性税)。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
MIMIC-IV → 中国脑出血队列 浙江本地医院(Sci Rep 2024 sICH 院内死亡预测 ML 模型 AUC(内部验证) MIMIC-IV n=1,486 训练 + 本地 n=110 验证 LASSO 特征 + 五模型选型范式可迁移到中国 ICU 小样本场景
MIMIC-III ↔ PIC 跨库协调 BEDS-Bench(arXiv 2021 预印本 OOD 检测与跨库行为分析 跨库置信度区分度 EHR 跨库协调需术语/单位/时间语义三重对齐 证明 ICD-9↔ICD-10CN 级别的映射成本是跨库瓶颈(本库同构问题)
脓毒症死亡预测基准 MIMIC-III(De Gruyter 综述 2023 30 天死亡 XGBoost 准确率 85% 西方库内基准,未在 CCCDB 复测 为"西方基准→CCCDB 外验"提供了可对照的参考线

截至审核日(2026-09-05),尚无以 CCCDB 为训练源或外部验证目标的同行评审基准研究发表;上表为方法学可迁移的同源证据,引用时须注明非直接验证。这意味着该库的基准生态处于空白期——做第一个标准 split 与基准的研究有占位价值。


§8 基准性能与生态

§8.1 基准参考

CCCDB 目前没有公开排行榜或公认基准(引用 13+ 中无基准论文)。为给建模者提供量级参照,下表列出方法学同源(成人 ICU EHR 转归预测)任务在相关数据库上的公开结果。所有数值不可直接比较:数据规模、人口、标签定义、时间粒度与划分协议均不同。

排名 模型 性能 年份 关键技术 完整引用 代码
参照 1 XGBoost(MIMIC-III 脓毒症 30 天死亡) 准确率 85% 2023 梯度提升树 + 常规评分特征 Mao et al., 2023, Metabolism Research(综述引用), DOI 10.1515/mr-2023-0039 未公开
参照 2 LASSO+ML 集成(MIMIC-IV sICH 院内死亡) AUC(内部验证领先) 2024 LASSO 特征选择 + 五模型比选 Mao et al., 2024, Scientific Reports 14:14195, DOI 10.1038/s41598-024-65128-8 未公开
参照 3 三模型对比(MIMIC-III 脓毒症) XGBoost 优于 LR/SAPS-II 2023 与 SAPS-II 临床评分对标 同综述 10.1515/mr-2023-0039 未公开

§8.2 SOTA 总结与选型建议

在 8,180 例、6% 死亡率、天级粒度的条件下,SOTA 的务实定义是"强基线 + 可靠校准"而非复杂架构:XGBoost 配合 Elixhauser/Charlson 共病特征与首日检验聚合,通常已能逼近天级信息上限;GRU/Transformer 的增益主要来自缺失模式建模而非序列长度。选型建议:先建 LR/XGBoost 基线锁定 AUROC/AUPRC 区间,再用带 mask 通道的时序模型挑战同一协议;NLP 任务优先中文医疗预训练模型零样本评估,再决定是否微调。任何声称在 CCCDB 上"大幅超越"文献 AUROC 的结果,应先检查是否犯了坑点 1(患者泄漏)。

§8.3 评测协议建议

若研究者要建立首个 CCCDB 公开基准,千方编辑部建议协议要素:

协议要素 建议值 理由
划分 患者级 GroupShuffleSplit 70/15/15,种子公开 抗患者泄漏(坑点 1),可复现
标签口径 Unknown 剔除;Dead=1;其余=0 官方计数不自洽,口径必须固定(坑点 7)
特征窗口 入院后 48h(即前 2 天)聚合 匹配天粒度上限,避免终点信息泄漏
必报指标 AUROC、AUPRC、Brier、校准截距 + grouped bootstrap 95% CI 6% 正类下 AUROC 单独不充分
亚组报告 分年代(2012-2017 vs 2018-2022)与分性别 量化电子化断点与性别偏倚
代码开源 划分脚本 + 训练 + 评估随论文公开 同时满足 DUA 附代码条款
术语映射 检验/药物映射表随基准发布 降低后继者重复劳动(坑点 8)
数据集 关系 适用场景
PIC(中国儿科 ICU) 同国同期方法论姊妹库 中国危重症数据库方法论对照;儿童 vs 成人泛化
Zigong 感染 ICU 库 同省同团队谱系(张中晧合作网络) 感染亚组与多中心中国验证
MIMIC-IV / eICU 西方对照组 跨体系外部验证的双向目标
HiRID 高频时序替代 需要小时/分钟级动力学的任务
AmsterdamUMCdb / INSPIRE 欧洲与亚洲围术期对照 多地区泛化矩阵的补全

§8.5 关键论文 Top 8

  1. Jin, S., Chen, L., Chen, K., Hu, C., Hu, S., & Zhang, Z., 2023, Scientific Data 10:49. DOI 10.1038/s41597-023-01952-3 — 数据描述论文:库结构、人群基线与 HIPAA 脱敏方案的唯一权威来源。
  2. Johnson, A. E. W. et al., 2016, Scientific Data 3:160035. DOI 10.1038/sdata.2016.35 — MIMIC-III:确立 ICU 公开库方法论范式的奠基工作,CCCDB 的直接模板。
  3. Johnson, A. E. W. et al., 2023, Scientific Data 10:1. DOI 10.1038/s41597-022-01899-x — MIMIC-IV:当前规模与生态标杆,跨库验证的首选对照。
  4. Pollard, T. J. et al., 2018, Scientific Data 5:180178. DOI 10.1038/sdata.2018.178 — eICU:多中心美国 ICU 库,单中心结论外推的标准检验面。
  5. Zeng, X. et al., 2020, Scientific Data 7:14. DOI 10.1038/s41597-020-0342-8 — PIC:中国首个公开危重症库(儿科),与本库同属中国数据共享谱系。
  6. Xu, P. et al., 2022, Frontiers in Public Health 10:852410. DOI 10.3389/fpubh.2022.852410 — Zigong 感染 ICU 库:中国感染专科公开库。
  7. Pollard, T. et al., 2026, Nature Health 1(8):792-795. DOI 10.1038/s44360-026-00096-z — PhysioNet 平台论文:数据托管与凭证化访问体系的权威引用。
  8. Goldberger, A. L. et al., 2000, Circulation 101:E215-E220. DOI 10.1161/01.CIR.101.23.e215 — PhysioNet 起源论文,所有 PhysioNet 数据使用的历史引用依据。

§8.6 社区活跃度

社区体量小而集中于学术圈:数据描述论文被引 13+(Scopus/OUCI,截至 2026-09);GitHub 建库仓库(ZhejiangProvinceICU)仅 1 个 commit、以文档为主,无 issue 活跃与社区 PR;PhysioNet 页面未挂讨论区热帖。没有第三方预处理包或标准 split 项目。这与 MIMIC 生态(数百个工具包、专门基准与竞赛)形成鲜明对比。

活跃度信号拆解:

信号 现状(截至 2026-09) 解读
论文被引 13+(Scopus 口径) 数据描述论文的常规早期水位,生态未起飞
GitHub 仓库 1 commit,纯文档 官方"代码可用"是声明性的,非活跃开发
第三方工具包 无公开实现 预处理设施全部自建(本页 §6 提供了起步代码)
标准基准/竞赛 首个标准 split 与基准有占位价值
PhysioNet 讨论 无热帖 技术问题需依赖论文与官方邮箱渠道

对使用者的双重含义:一是工程上需要自建管道(成本前移),二是方法学贡献(标准划分、术语映射表、预处理包)容易获得可见度——空白期的开源贡献回报率高于成熟生态。

§8.7 生态快照

资源 类型 链接 Star/热度(截至 2026-09) 推荐理由
PhysioNet 官方页 数据托管 https://physionet.org/content/zhejiang-ehr-critical-care/ 平台级资源 唯一权威下载与文档入口
建库代码仓库 官方代码 https://github.com/zh-zhang1984/ZhejiangProvinceICU 1 commit(低活跃) 字段语义与建库逻辑说明
Sci Data 论文 论文 https://doi.org/10.1038/s41597-023-01952-3 引用 13+ Table 2-17 完整字段字典
CITI Program 合规培训 https://about.citiprogram.org/ 行业标准 获取凭证的前置条件
PIC 数据库 相关数据集 https://physionet.org/content/picdb/ 平台级资源 中国危重症对照库

§9 相关资源与引用

§9.1 官方资源

§9.2 BibTeX 引用块

@misc{jin2023cccdb,
  title         = {Establishment of a Chinese critical care database from
                   electronic healthcare records in a tertiary care medical
                   center (version 1.0)},
  author        = {Jin, Senjun and Chen, Lin and Chen, Kun and Zhang, Zhongheng},
  year          = {2023},
  month         = jan,
  publisher     = {PhysioNet},
  doi           = {10.13026/901c-yv54},
  url           = {https://doi.org/10.13026/901c-yv54},
  note          = {RRID:SCR_007345}
}

@article{jin2023paper,
  title         = {Establishment of a {C}hinese critical care database from
                   electronic healthcare records in a tertiary care medical center},
  author        = {Jin, Senjun and Chen, Lin and Chen, Kun and Hu, Chaozhou and
                   Hu, Sheng'an and Zhang, Zhongheng},
  journal       = {Scientific Data},
  volume        = {10},
  pages         = {49},
  year          = {2023},
  doi           = {10.1038/s41597-023-01952-3},
  pmid          = {36690650}
}

@article{pollard2026physionet,
  title         = {{PhysioNet} as a global platform for biomedical research},
  author        = {Pollard, Tom and Moody, Benjamin E. and Lehman, Li-wei H. and
                   Gow, Brian J. and Fernandes, Chrystinne and Xie, Chen and
                   Johnson, Alistair and Mark, Roger G. and Heldt, Thomas},
  journal       = {Nature Health},
  volume        = {1},
  number        = {8},
  pages         = {792--795},
  year          = {2026},
  doi           = {10.1038/s44360-026-00096-z}
}

@article{johnson2016mimiciii,
  title         = {{MIMIC-III}, a freely accessible critical care database},
  author        = {Johnson, Alistair E. W. and Pollard, Tom J. and Shen, Lu and
                   Lehman, Li-wei H. and Feng, Mengling and Ghassemi, Mohammad and
                   Moody, Benjamin and Szolovits, Peter and Celi, Leo Anthony and
                   Mark, Roger G.},
  journal       = {Scientific Data},
  volume        = {3},
  pages         = {160035},
  year          = {2016},
  doi           = {10.1038/sdata.2016.35}
}

@article{zeng2020pic,
  title         = {{PIC}, a paediatric-specific intensive care database},
  author        = {Zeng, Xian and Yu, Gang and Lu, Yin and Tan, Liang and
                   Yi, Zhuoyue and Liu, Shuang and Wu, Maoyang and Yu, Rong},
  journal       = {Scientific Data},
  volume        = {7},
  pages         = {14},
  year          = {2020},
  doi           = {10.1038/s41597-020-0342-8}
}

@article{xu2022zigong,
  title         = {Critical Care Database Comprising Patients With Infection},
  author        = {Xu, Ping and Chen, Lin and Zhang, Zhongheng},
  journal       = {Frontiers in Public Health},
  volume        = {10},
  pages         = {852410},
  year          = {2022},
  doi           = {10.3389/fpubh.2022.852410}
}

@article{goldberger2000physiobank,
  title         = {{PhysioBank}, {PhysioToolkit}, and {PhysioNet}: components of a
                   new research resource for complex physiologic signals},
  author        = {Goldberger, Ary L. and Amaral, Luis A. N. and Glass, Leon and
                   Hausdorff, Jeffrey M. and Ivanov, Plamen Ch. and Mark, Roger G. and
                   Mietus, Joseph E. and Moody, George B. and Peng, Chung-Kang and
                   Stanley, H. Eugene},
  journal       = {Circulation},
  volume        = {101},
  number        = {23},
  pages         = {E215--E220},
  year          = {2000},
  doi           = {10.1161/01.CIR.101.23.e215}
}

@article{pollard2018eicu,
  title         = {The {eICU} Collaborative Research Database, a freely available
                   multi-center database for critical care research},
  author        = {Pollard, Tom J. and Johnson, Alistair E. W. and Raffa, Jesse D. and
                   Celi, Leo A. and Mark, Roger G. and Badawi, Omar},
  journal       = {Scientific Data},
  volume        = {5},
  pages         = {180178},
  year          = {2018},
  doi           = {10.1038/sdata.2018.178}
}

§9.3 引用指南

使用本库发表成果时,官方要求三重引用(缺一不可):(1) 数据集引用(Jin et al., 2023, PhysioNet, DOI 10.13026/901c-yv54);(2) 数据描述论文(Jin et al., 2023, Sci Data, DOI 10.1038/s41597-023-01952-3);(3) PhysioNet 平台引用(Pollard et al., 2026, Nature Health)。同时依据 DUA,发表时须公开与论文关联的分析代码。若引用了本 Wiki 的坑点分析与划分建议,请注明千方病案医数集页面及其审核日期(2026-09-05)。


§10 AI 使用声明卡

§10.1 本页生产使用的 AI 模型

模型 用途 使用阶段
大语言模型(CodeBuddy 快速模型) 资料检索整理、结构化写作、代码示例生成 全流程
联网检索工具 PhysioNet/Nature/PubMed/GitHub 等官方来源的实时核对 研究阶段

§10.2 AI 参与范围

AI 参与了事实检索与汇总、章节初稿撰写、代码示例编写与排版;所有医学判断(ICD-11/SNOMED 映射合理性、偏倚评级)、工程结论(坑点归因、划分策略)与最终发布内容均经编辑部人工审核。数字与日期类硬事实仅采信官方来源(PhysioNet 页面、Sci Data 论文、PubMed、GitHub),AI 输出中的每个数字都做了来源回溯核对。

§10.3 输入来源列表

  1. Jin, S. et al., 2023, Scientific Data 10:49. DOI 10.1038/s41597-023-01952-3
  2. Jin, S. et al., 2023, PhysioNet (version 1.0). DOI 10.13026/901c-yv54
  3. PhysioNet 官方数据页:https://physionet.org/content/zhejiang-ehr-critical-care/1.0/
  4. PhysioNet 中国主题资源列表:https://www.physionet.org/content?topic=china
  5. PubMed 条目 PMID 36690650:https://pubmed.ncbi.nlm.nih.gov/36690650/
  6. PubMed Central 全文 PMC9870864(论文 PDF 镜像):https://www.nature.com/articles/s41597-023-01952-3
  7. ResearchGate 论文全文页:https://www.researchgate.net/publication/367342065
  8. GitHub 建库仓库:https://github.com/zh-zhang1984/ZhejiangProvinceICU
  9. OUCI 引文索引(Scopus 口径被引 13):https://ouci.dntb.gov.ua/works/4aYGLqa4/
  10. OpenAIRE 学术索引(2023-01-23 在线发表记录):https://mes.openaire.eu/search/publication?pid=10.1038%2Fs41597-023-01952-3
  11. CNGBdb 文献资源页(PMID 36690650):https://db.cngb.org/data_resources/literature/36690650
  12. De Gruyter 脓毒症 AI 综述(同类库对比 Table 3):DOI 10.1515/mr-2023-0039
  13. Mao et al., 2024, Scientific Reports 14:14195(sICH ML 预测,MIMIC-IV + 浙江队列):DOI 10.1038/s41598-024-65128-8
  14. BEDS-Bench 预印本(MIMIC-III ↔ PIC 跨库协调):https://arxiv.org/pdf/2107.08189v1
  15. Pollard et al., 2026, Nature Health 1(8):792-795(PhysioNet 平台引用):DOI 10.1038/s44360-026-00096-z

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§1 概览与对比表 千方病案医学编辑部 对照官方页与论文逐数核对 ✅ 已通过
§2 医学背景(ICD-11/SNOMED 映射) 千方病案医学编辑部 术语专家复核编码对应关系 ✅ 已通过
§3 数据集规格(10 表/大小/MD5) 千方病案医学编辑部 与 PhysioNet Table 2 逐项比对 ✅ 已通过
§4 DAIMS 字段字典 千方病案医学编辑部 对照论文 Table 3-17 逐字段核对 ✅ 已通过
§6 AI 就绪指南与 8 坑点 千方病案医学编辑部 代码走查 + 事实溯源(全部坑点可溯源到官方文档) ✅ 已通过
§7 质量评估与 DAIMS 24 项 千方病案医学编辑部 偏倚评级双人复核 ✅ 已通过
§8-§9 基准与引用 千方病案医学编辑部 引用逐条回溯 DOI ✅ 已通过
§10 AI 声明卡 千方病案医学编辑部 来源清单完整性核对 ✅ 已通过

§10.5 AI 生成章节标注

全部章节由 AI 辅助起草:§1-§5、§7-§9 为"AI 检索汇总 → 人工逐项核对事实 → 人工修订表述";§6 代码为"AI 生成 → 编辑部走查逻辑与字段名一致性"。医学映射表(§2.1/§2.1b)为编辑部整理、术语专家复核的半人工内容。无任何章节为未经人工审核的纯 AI 输出。

§10.6 最后人工审核日期

最后人工审核日期:2026-09-05(与 §0 审核声明一致;覆盖全部章节与代码示例)

页面状态:published(全部内容已完成审核并发布)

返回 AI-Ready 数据集