3. 平台总体架构设计

医疗设备数据平台的总体架构,本质上是在“设备侧的高频、异构、强实时数据”与“临床、科研、运维侧的稳定、可追溯、可复用数据服务”之间,建立一条职责清晰、边界明确、可演进的分层通道。分层不是为了画图好看,而是为了让每一层只解决一类问题:采集层解决“怎么把设备数据完整、准确地拿到”,传输层解决“怎么可靠、有序、可追溯地送到平台”,存储层解决“不同形态的数据放在哪里、保留多久”,计算层解决“怎么把原始信号变成有临床或工程意义的指标”,服务层解决“怎么以稳定接口把能力交付给上层应用”,治理层则贯穿全程,解决“数据是否可信、是否合规、是否可被找到和复用”。

下面这张图给出的是本节推荐的分层架构与接口边界示意。它强调的不是部署拓扑,而是各层之间的数据形态变化与职责切分:越往下越接近设备与原始信号,越往上越接近业务语义与服务契约。

数据形态 原始信号 ↓ 标准化报文 ↓ 持久化记录 ↓ 指标/事件 ↓ 服务契约 ↓ 可信资产 设计原则 不丢数 可追溯 时间对齐 冷热分层 幂等计算 接口契约 最小必要 血缘可查 版本管理 可回放 权限隔离 采集层 · Acquisition 设备驱动 / 协议适配(HL7、DICOM、MQTT、Modbus、私有串口) · 采样率与时间戳打标 · 断点续传缓存 输出:带设备ID与采集时间的原始帧 传输层 · Transport 消息队列(Kafka / Pulsar) · 主题分区与顺序保证 · 加密通道 TLS · 背压与重试策略 输出:有序、可重放的消息流 存储层 · Storage 时序库(波形/生命体征) · 对象存储(影像/文件) · 关系库(患者/设备/事件) · 冷热分层与生命周期 输出:可查询、可保留的持久化数据 计算层 · Compute 流式计算(实时告警/滤波) · 批处理(趋势统计/质控) · 算法服务(QRS检测、SpO₂ 计算) · 结果回写 输出:指标、事件、告警、特征 服务层 · Service REST / gRPC 接口 · 订阅推送 · 权限校验 · 限流熔断 · 服务契约与版本管理 输出:稳定、可复用的数据服务 治理层 · Governance(贯穿全层) 元数据与血缘 · 数据质量规则 · 隐私脱敏与审计 · 主数据管理 · 生命周期与合规策略 质量规则与审计反馈 接口边界:层间只通过约定格式交互,禁止跨层直连;治理层以旁路方式采集元数据与质量指标

从图中可以看到,六层并非简单的上下堆叠,而是存在明确的“接口边界”。采集层与传输层之间的边界是“原始帧 + 设备标识 + 采集时间戳”;传输层与存储层之间的边界是“带主题与分区键的消息”;存储层与计算层之间的边界是“可查询的数据集或流”;计算层与服务层之间的边界是“指标、事件、告警等语义化结果”;服务层与上层应用之间的边界是“带版本号的接口契约”。治理层不单独占一个数据阶段,而是以旁路方式贯穿所有层,采集元数据、质量指标、血缘关系和审计日志。

各层的职责可以进一步落到具体设计决策上。采集层的关键不是“能连上设备”,而是“连上之后不丢数、不乱序、时间戳可信”。以一台多参数监护仪为例,假设它通过串口每 1 秒输出一帧包含心率、血氧、呼吸率的数据,采集服务需要为每帧打上设备本地时间与平台接收时间两个时间戳,并在网络中断时把数据写入本地环形缓存,恢复后按序补传。传输层则要为每类数据定义主题,例如 device.vitals.raw、device.waveform.raw,用设备 ID 作为分区键,保证同一台设备的数据在同一分区内有序。存储层要根据数据特征选择介质:波形数据写入时序库并设置 90 天热存储、1 年冷存储;影像文件写入对象存储并保留 DICOM 元数据索引;患者与设备主数据写入关系库并做唯一性约束。计算层要区分流式与批量:实时告警走流式计算,窗口设为 5 秒滑动;趋势统计走批处理,每天凌晨对前一日数据做聚合。服务层要对外暴露稳定接口,例如 GET /v1/patients/{id}/vitals?from=&to=,并明确返回字段、单位、时间格式和错误码。治理层则要回答“这条数据从哪台设备来、经过了哪些处理、当前质量如何、谁看过、是否脱敏”。

在关键设计原则上,有几条需要特别强调。第一,时间对齐优先:医疗设备数据常来自不同时钟源,平台必须统一到同一时间基准,否则心率与血氧的联合分析会失真。第二,接口契约化:层与层之间只通过约定格式交互,禁止跨层直连,例如计算层不得直接读取采集层缓存。第三,冷热分层与生命周期:不是所有数据都值得长期高成本保存,原始波形可降采样归档,指标与事件长期保留。第四,幂等与可回放:计算任务重复执行不应产生重复结果,消息队列应支持按时间偏移重放,便于故障恢复和算法验证。第五,最小必要与权限隔离:服务层对外只暴露必要字段,敏感数据在治理层完成脱敏后再进入科研或运营视图。

分层架构的验收标准不是“图画得整齐”,而是:任意一条数据都能说清从哪台设备、经哪条链路、在哪个时间点、被哪个计算任务处理、最终以哪个接口暴露给谁。若其中任一环节无法回答,说明该层的接口边界或治理能力仍有缺口。

实际落地时,建议先用一张“层间接口清单”把边界固定下来,再逐层实现。清单至少包含:接口名称、数据形态、格式示例、时间戳字段、分区键、保留策略、责任团队。例如采集到传输的接口可定义为“原始帧消息”,格式为 JSON 或 Protobuf,必含 deviceId、collectTime、payload;传输到存储的接口可定义为“主题消息”,必含 topic、partitionKey、offset。这样,后续无论更换消息中间件还是调整存储介质,只要接口契约不变,上层计算与服务就不需要跟着改。分层架构的价值,最终体现在“局部可替换、整体可演进”上。