2. 临床数据采集的源头系统
临床数据采集工程的第一步,不是写接口,而是搞清楚“数据从哪来、以什么形态存在、由谁产生、什么时候产生”。医院信息系统(HIS)、检验信息系统(LIS)、影像归档与通信系统(PACS)、电子病历系统(EMR)、护理系统、手术麻醉系统(手麻系统)是绝大多数医院的核心业务系统,它们各自承担不同的临床环节,也各自沉淀了结构、粒度、时序特征完全不同的数据。理解这些差异,直接决定了后续采集方式(数据库直连、视图、消息、接口服务、文件解析)的选择。
一、各源头系统的定位与数据特征
HIS(医院信息系统)是医院业务的“主干道”,覆盖挂号、门诊、住院、收费、医嘱、药品、结算等。它的数据以事务型、强结构化为主,典型表包括患者主索引(PATIENT)、就诊记录(VISIT/ENCOUNTER)、医嘱(ORDERS)、费用明细(BILL_DETAIL)。HIS 数据的特点是:主键体系完整、更新频繁、与费用强绑定,但临床语义相对粗(例如医嘱只记录“药品名+剂量+频次”,不记录执行结果)。采集 HIS 时最关键的字段是患者唯一标识(PatientID/EMPI)与就诊号(VisitID/EncounterID),它们是跨系统关联的锚点。
LIS(检验信息系统)管理标本流转与检验结果。数据分为两层:标本层(标本条码、采集时间、接收时间、检验项目组合)和结果层(检验项目代码、结果值、单位、参考区间、异常标志、审核状态)。LIS 数据是典型的“一对多”结构:一次标本对应多个检验项目,每个项目有独立的结果值和时间戳。采集时必须保留结果状态(初步/审核/危急值),否则会把未审核结果误当成最终结论。此外,LIS 的检验项目编码在不同医院、不同仪器间差异极大,需要建立本地字典映射。
PACS(影像归档与通信系统)存储影像与放射报告。它遵循 DICOM 标准,数据分为影像对象(DICOM 文件,含 Study/Series/Instance 三级 UID)和诊断报告(常以结构化报告或文本形式存在 RIS 中)。PACS 的数据特征是大文件、非结构化、以 UID 为索引。采集时通常不直接搬运影像像素,而是采集检查元数据(检查号、检查部位、检查时间、报告结论、报告医生),影像本体通过 DICOM 网关或对象存储引用。
EMR(电子病历系统)是临床文档的核心载体,包含入院记录、病程记录、手术记录、出院小结等。EMR 数据以半结构化/非结构化文本为主,部分医院已实现结构化病历(如元素化模板)。它的采集难点在于:同一份病历可能包含大量自由文本,需要自然语言处理或模板解析才能提取关键字段(如诊断、症状、用药)。EMR 还承担临床文档的版本管理,采集时要关注“最终版”与“草稿版”的区别。
护理系统记录生命体征、护理评估、出入量、给药执行等。它的数据特征是高频、时序性强、粒度细:体温、血压、心率可能每 4 小时甚至每小时记录一次,出入量按次记录。护理数据是临床时序分析(如早期预警评分 NEWS、脓毒症筛查)的关键输入。采集护理数据时,必须保留记录时间(RecordTime)与业务时间(EventTime)的区分,因为补录、修改会导致两者不一致。
手麻系统(手术麻醉信息系统)覆盖手术排班、麻醉记录、术中生命体征、用药与事件。它的数据特征是高密度时序信号 + 事件标记:麻醉机、监护仪以秒级或分钟级采集血压、心率、SpO₂、呼气末 CO₂ 等,同时记录插管、切皮、给药、输血等事件。手麻数据对时间精度要求极高,采集时通常需要时间同步机制(如 NTP),否则术中事件与生命体征曲线无法对齐。
二、数据特征如何决定采集方式
把六个系统的特征放在一起看,可以归纳出一条清晰的决策逻辑:结构化程度决定抽取方式,时序密度决定同步策略,标识体系决定关联能力。
- HIS、LIS:结构化程度高,优先采用数据库直连或只读视图抽取,按增量时间戳或自增主键做增量同步。LIS 需额外处理“结果审核状态”过滤。
- PACS:影像本体不搬,只采集元数据与报告;通过 DICOM 网关或 RIS 接口获取检查与报告信息,用 StudyUID 关联影像。
- EMR:文本为主,采集后需进入后结构化环节(模板解析或 NLP),并保留文档版本号,避免草稿覆盖终稿。
- 护理系统:高频时序,建议按“患者+时间窗”批量拉取,保留 RecordTime 与 EventTime 双时间戳。
- 手麻系统:秒级信号,需先做时间同步(NTP),再按手术号聚合生命体征曲线与事件标记。
三、一个可参考的采集优先级与字段清单
实际工程中不可能一次接入所有系统。建议按“临床价值 × 接入难度”排序,先接入标识体系清晰、结构化程度高的系统。下表给出一个示例性的首期接入清单,字段为最小必要集,实际以医院接口文档为准。
| 系统 | 首期采集对象 | 最小必要字段(示例) | 建议采集方式 |
|---|---|---|---|
| HIS | 患者、就诊、医嘱 | PatientID、VisitID、医嘱编码、开立时间、状态 | 只读视图 + 增量时间戳 |
| LIS | 检验结果 | 标本条码、项目编码、结果值、单位、审核状态 | 数据库直连 + 状态过滤 |
| PACS | 检查元数据与报告 | 检查号、StudyUID、检查部位、报告结论 | DICOM 网关 / RIS 接口 |
| 护理系统 | 生命体征 | 住院号、项目、值、RecordTime、EventTime | 按时间窗批量拉取 |
| 手麻系统 | 术中生命体征与事件 | 手术号、时间戳、参数值、事件类型 | NTP 同步 + 时序聚合 |
四、采集前必须确认的三件事
在动手写任何采集脚本之前,先确认三件事,可以避免后期大量返工。
- 标识映射是否可用:确认 HIS 的 PatientID 能否与 LIS、PACS、护理系统的患者标识建立稳定映射。若不能,先推动 EMPI 建设或建立临时映射表。
- 时间基准是否一致:各系统服务器时间是否同步到同一 NTP 源。手麻、护理这类时序数据,时间偏差超过 1 分钟就会导致事件与体征错位。
- 数据状态语义是否明确:LIS 的“审核状态”、EMR 的“文档版本”、HIS 的“医嘱状态”分别代表什么,采集时是否需要过滤。把状态字段一并采集,比事后猜测更可靠。
总结来看,HIS、LIS、PACS、EMR、护理系统、手麻系统并不是六个孤立的数据库,而是一条从“患者身份”到“就诊事件”再到“临床细节”的数据链。采集工程的核心任务,是识别每个系统在这条链上的位置,用正确的锚点把它们串起来,并根据各自的数据特征选择匹配的采集方式。这一步做扎实,后续的清洗、映射、整合才有稳定的基础。