用途:PyHealth 提供电子健康记录(EHR)机器学习的端到端流水线,覆盖数据加载、医疗编码处理、患者级数据集构建、模型训练与评估,面向临床结局预测建模。
主要能力:原生支持 MIMIC-III、MIMIC-IV、eICU-CRD 与 OMOP-CDM 结构化数据库;将 ICD-9、ICD-10、ATC、NDC、SNOMED 等医疗编码组织为层级编码体系,支持编码级嵌入与跨本体映射;内置死亡率预测、药物推荐、再入院、住院时长、诊断编码预测等任务,也可按标准接口自定义任务;提供 Transformer、RETAIN、GAMENet、MedBERT 等模型及 Trainer 评估流程,支持 AUROC、AUPRC、F1、Jaccard 等指标。数据按 Patient → Visit → 医疗编码 的层级组织。
使用方式:安装命令为 pip install pyhealth torch pandas scikit-learn。使用前需准备 MIMIC-III/IV CSV 文件(MIMIC 访问需在 physionet.org 申请,免费,需 CITI 培训,约 1 周)、eICU 或 OMOP-CDM 数据库。典型流程:用 MIMIC3Dataset/MIMIC4Dataset/eICUDataset 加载数据并指定 tables 与 code_mapping,用 SampleDataset 结合任务函数构建数据集,用 split_by_patient 划分训练/验证/测试集并配合 get_dataloader 取批,再用模型与 Trainer 完成训练与评估。开发阶段可设 dev=True 仅加载约 1% 数据加速调试。
适用场景:从 MIMIC-III/IV 训练临床结局预测模型;基于 ATC 编码层级构建药物推荐或药物相互作用预测模型;处理机构 EHR 的 OMOP-CDM 数据;以预训练临床模型(RETAIN、GRASP、MedBERT)作为基准;构建带时间结构的患者就诊序列用于 RNN/Transformer;以合适指标评估临床预测模型。
限制:MIMIC 数据需 PhysioNet 授权;应始终使用 split_by_patient 而非随机划分以避免同一患者跨集泄漏;临床数据类别不平衡,建议同时查看 PR-AUC 与 ROC-AUC;若只需纯 EHR 预处理而无机器学习可用 FIDDLE,临床文本 NLP 可用 clinical-longformer。其他更细的参数默认值与取值范围、收费与价格信息暂未提供。