2. 纵向EHR数据工程基础
纵向EHR(Electronic Health Record,电子健康记录)与组学联合分析的第一步,不是建模,而是把“人—时间—事件—值”这条主线在工程上立稳。EHR本质上是以患者为主键、以时间戳为轴、以事件为记录单元的稀疏纵向数据集合。它不像组学矩阵那样天然对齐,而是由门诊、住院、检验、用药、影像报告、护理记录等多源系统在不同时间点写入,格式、粒度、编码体系各不相同。本节围绕数据来源、结构类型、时间戳处理、缺失模式与隐私合规五个工程要点展开,并给出可落地的处理约定。
一、数据来源与结构类型
纵向EHR的常见来源可分为四类:业务系统库(HIS、LIS、RIS/PACS、药房系统)、临床文档(入院记录、病程、出院小结)、登记与随访(专病库、随访表)、外部链接(医保结算、死亡登记)。它们进入分析层时通常被整理为三种结构:
- 事件表(长表):一行一个观测,字段为 patient_id、event_time、item_code、value、unit、source。适合纵向建模,是联合分析的主表。
- 宽表(时间窗矩阵):一行一个患者,列为“指标_时间窗”,如 HbA1c_0_90d。便于与组学样本对齐,但会放大缺失。
- 序列/区间表:用于用药、住院等有起止时间的记录,字段含 start_time、end_time,可推导暴露窗口。
工程上建议以事件表为“事实层”,宽表为“特征层”按需生成,避免在源头就做不可逆的宽化。编码层面需统一到标准词表:检验项对齐LOINC,诊断对齐ICD-10/SNOMED,药品对齐RxNorm或ATC,单位统一到UCUM,否则后续跨中心联合分析无法对齐。
二、时间戳处理
时间戳是纵向EHR的“坐标系”,必须先定义参照再计算。常用约定:所有时间统一为UTC存储,展示时再转本地时区;时间精度按来源保留(检验常到分钟,护理可到秒);对仅有日期无时刻的记录,标记为 date_only=true,避免与精确时间混算。
关键处理包括:去重与合并(同一检验因复测产生多条,按最近值或均值规则保留)、时间窗对齐(以组学采样日为锚点T0,向前取基线窗、向后取随访窗)、相对时间计算(offset_days = event_time − T0,负值为基线前,正值为随访后)。示例:某患者T0为2023-05-10,肌酐记录于2023-04-28,则 offset_days = −12,落入“基线前30天”窗。若同一指标在窗内多次出现,需明确聚合规则(如取最接近T0的值),并在元数据中记录,保证可复现。
三、缺失模式
纵向EHR的缺失不是随机噪声,而是有结构的。常见模式有三类:MCAR(完全随机缺失,如设备偶发故障)、MAR(与可观测变量相关,如轻症患者少做检查)、MNAR(与缺失值本身相关,如病情太重未测某项)。工程上先做缺失画像:按指标统计缺失率、按时间窗统计缺失分布、按患者统计记录密度。对缺失率高于阈值(示例取60%)的指标,建议不进入主特征,仅保留缺失指示变量;对MAR可考虑多重插补,但必须记录插补前后版本,禁止在原始事实层直接覆盖。
missing_flag 与 source_system 两个字段。前者用于建模时区分“未测”与“测了但为空”,后者用于追溯数据来源,排查系统性缺失。四、隐私合规要求
EHR与组学联合分析涉及敏感健康信息,合规是硬约束。核心动作包括:去标识化(移除姓名、身份证、电话、住址等18类标识符)、假名化(用研究ID替换患者主键,映射表单独加密保管)、最小必要(只提取分析所需字段)、时间扰动(对日期做±7天随机抖动,保留相对顺序)、访问审计(记录谁在何时访问了哪批数据)。若涉及跨机构联合,优先采用联邦学习或只交换汇总统计,避免原始个体数据出域。
五、可执行的数据处理约定(示例)
以下为一份可直接参考的字段与规则约定,用于把上述要点落到工程实现:
| 字段 | 含义 | 示例值 | 规则 |
|---|---|---|---|
| research_id | 研究假名ID | R000123 | 与患者主键映射表分离存储 |
| item_code | 标准编码 | LOINC:2160-0 | 检验对齐LOINC,诊断对齐ICD-10 |
| event_time | 事件时间(UTC) | 2023-04-28T09:12:00Z | 统一UTC,date_only单独标记 |
| offset_days | 相对T0天数 | −12 | 负值为基线前,正值为随访后 |
| value / unit | 数值与单位 | 88 / umol/L | 单位统一UCUM |
| missing_flag | 缺失指示 | 1 | 1表示该窗内未测 |
| source_system | 来源系统 | LIS | 用于追溯与偏差排查 |
按此约定,一条肌酐记录可整理为:R000123, LOINC:2160-0, 2023-04-28T09:12:00Z, offset_days=-12, 88, umol/L, missing_flag=0, LIS。当同一患者在基线窗内出现多次肌酐时,按“最接近T0”规则保留一条,其余进入历史明细表备查。这样既保证了特征层与组学样本的一一对应,又保留了事实层的可追溯性,为后续纵向EHR与组学联合建模打下干净、合规、可复现的数据底座。