3. 设备数据模型与语义映射

在医疗设备数据采集平台中,真正决定系统能否长期稳定运行的,往往不是采集通道本身,而是数据模型是否统一、语义映射是否清晰。同一台监护仪,厂商 A 把心率写成 HR,厂商 B 写成 HeartRate,厂商 C 可能写成 hr_bpm;单位有的用 bpm,有的用 1/min;时间戳有的来自设备本地时钟,有的来自采集网关。如果平台没有一套标准模型和映射规则,后续存储、查询、告警和科研分析都会陷入“同名不同义、同义不同名”的混乱。

本节围绕六类核心语义对象展开:设备属性、测量项、单位、时间戳、患者标识、设备标识。它们共同构成设备数据模型的“最小语义骨架”。

一、六类核心语义对象

设备属性描述设备本身的静态或准静态特征,例如厂商、型号、序列号、固件版本、采集协议、通道数量。它回答“这是什么设备、具备什么能力”。

测量项是设备输出的可观测生理或技术量,例如心率、血氧饱和度、无创血压收缩压、呼吸率、体温。每个测量项必须有稳定的标准编码,而不是依赖厂商私有字段名。

单位是测量项的物理量纲表达。单位不统一会导致数值比较和阈值判断失效,例如体温 37.0 °C 与 98.6 °F 必须能归一化到同一基准。

时间戳标记测量发生的时刻。需要区分设备时间、网关接收时间、平台入库时间,并明确时区和时钟同步策略。

患者标识把测量结果关联到具体患者,通常使用平台内部患者主索引(EMPI)或住院号、门诊号等业务标识的映射结果。

设备标识唯一确定数据来源设备,通常由厂商序列号、资产编号或平台分配的全局设备 ID 组成。

二、标准化建模:从私有字段到统一模型

标准化建模的目标是建立一层“语义中间层”,把不同厂商的私有数据映射到平台统一模型。推荐采用“设备—通道—测量项—观测值”的四层结构:设备层承载设备标识与属性;通道层描述物理接口或逻辑通道;测量项层定义标准编码、单位、量纲;观测值层保存数值、时间戳、质量标志。

标准编码建议参考行业通用术语体系,例如 LOINC 用于检验与临床观测,UCUM 用于单位表达,IEEE 11073 用于设备通信语义。平台内部可定义 measure_code、unit_code、device_id、patient_id、ts_utc 等标准字段,厂商私有字段只出现在映射配置中,不进入核心存储。

设备数据语义映射:私有字段 → 标准模型 厂商私有数据 监护仪 A HR / SpO2 / NIBP_SYS 单位: bpm, %, mmHg 呼吸机 B HeartRate / RR / TV 单位: 1/min, mL 体温计 C TEMP / temp_c 单位: °C, °F 输注泵 D FlowRate / VTBI 单位: mL/h, mL 字段名、单位、时间格式各异 语义映射层 字段名映射表 HR → 8867-4 (心率) 单位换算规则 °F → °C: (F-32)×5/9 时间戳归一化 本地时间 → UTC + 时区 标识映射 序列号 → 全局设备ID 患者标识关联 住院号 → EMPI 主索引 配置驱动,不修改采集代码 平台标准模型 设备标识 device_id (全局唯一) 厂商 / 型号 / 序列号 测量项 measure_code (LOINC) value + unit_code (UCUM) 时间戳 ts_utc (ISO 8601) ts_source (设备/网关) 患者标识 patient_id (EMPI) visit_id (就诊号) 统一编码、统一单位、统一时间 解析 输出

三、映射方法:配置驱动而非硬编码

映射应尽量做成配置驱动。以心率为例,厂商 A 的 HR、厂商 B 的 HeartRate 都映射到标准编码 8867-4,单位统一为 /min。映射配置通常包含:源字段名、目标标准编码、单位换算表达式、有效值范围、时间戳来源、设备标识来源、患者标识来源。

单位换算必须显式定义。例如华氏度转摄氏度:°C = (°F − 32) × 5 / 9。若设备输出 98.6 °F,映射后应为 37.0 °C。对于血压,需注意 mmHg 与 kPa 的换算:1 mmHg ≈ 0.133322 kPa。平台应保存原始值与标准值,便于追溯。

时间戳处理要区分三个时间:设备测量时间 ts_device、网关接收时间 ts_gateway、平台入库时间 ts_ingest。标准模型建议统一存 UTC,并保留原始时区偏移。若设备时钟与 NTP 偏差超过阈值(例如 5 秒),应打上 time_quality 标志,供后续分析过滤。

四、标识映射与患者安全

设备标识映射的核心是“一机一码”。厂商序列号可能重复或变更,平台应分配不可变的全局 device_id,并维护序列号、资产编号、MAC 地址等多源标识的对照表。患者标识映射则更敏感:住院号、门诊号、腕带号必须通过 EMPI 映射到唯一 patient_id,且映射过程要记录来源与置信度,避免把 A 患者的数据挂到 B 患者名下。

患者标识映射错误属于高风险事件。任何自动映射都应有校验环节,例如床旁设备与患者腕带绑定确认、时间窗一致性检查、异常告警人工复核。

五、一个可参考的映射配置示例

{
  "device_model": "Mindray_UM_Series",
  "device_id_source": "serial_number",
  "measurements": [
    {
      "source_field": "HR",
      "measure_code": "8867-4",
      "display_name": "心率",
      "source_unit": "bpm",
      "target_unit": "/min",
      "scale": 1.0,
      "offset": 0,
      "valid_range": [20, 300],
      "ts_source": "device_time",
      "patient_id_source": "gateway_binding"
    },
    {
      "source_field": "TEMP",
      "measure_code": "8310-5",
      "display_name": "体温",
      "source_unit": "Cel",
      "target_unit": "Cel",
      "scale": 1.0,
      "offset": 0,
      "valid_range": [30, 45],
      "ts_source": "device_time",
      "patient_id_source": "gateway_binding"
    }
  ]
}

该配置说明:源字段 HR 映射到 LOINC 8867-4,单位从 bpm 归一到 /min,有效范围 20–300,超出范围的数据应标记为可疑而非直接入库。体温映射到 8310-5,单位保持摄氏度。时间戳来源为设备时间,患者标识来自网关绑定关系。

六、落地检查要点

  • 每个测量项是否有唯一标准编码,且不与其它测量项冲突;
  • 单位是否统一到 UCUM 或平台约定单位,换算公式是否可追溯;
  • 时间戳是否统一 UTC,是否保留原始时区与时间质量标志;
  • 设备标识是否全局唯一,是否支持多源标识对照;
  • 患者标识是否经 EMPI 映射,是否有绑定校验与异常复核;
  • 映射配置是否版本化,变更后能否回放历史数据。

标准化建模与语义映射不是一次性工作,而是伴随设备接入持续演进的工程能力。把六类语义对象定义清楚、把映射规则配置化、把标识与时间戳处理严谨化,平台才能在多厂商、多协议、多科室的真实环境中保持数据的一致性与可信度。