3. 数字疗法系统总体架构设计

数字疗法(DTx)系统与普通健康 App 的根本差别,在于它同时承担两件事:一是持续采集患者的生理与行为数据,二是按临床方案对患者施加干预。这两件事的时序要求、可靠性要求、合规要求完全不同,因此总体架构设计的第一个决策就是:把数据流与干预流分开设计,再在受控的边界上让它们交汇。围绕这一原则,本节给出端-边-云协同的分层架构、模块划分、技术选型原则,以及可落地的架构决策记录(ADR)写法。

一、端-边-云三层职责划分

“端”指患者侧的可穿戴设备、家用医疗设备与手机 App;“边”指部署在患者家庭网关、社区站点或院内边缘服务器上的计算节点;“云”指中心化的数据平台与干预引擎。三层不是简单的数据中转,而是按时延、隐私、可用性三个维度分配职责。

端侧负责原始信号采集与本地即时反馈。例如一款用于慢性疼痛管理的 DTx,端侧以 25 Hz 采样肌电(sEMG)与三轴加速度,本地完成滤波、特征提取(RMS、中值频率)与阈值判断,一旦检测到异常肌张力持续超过 8 秒,立即触发 App 的呼吸引导动画。这类反馈必须在 200 ms 内完成,不能等云端往返。

边侧负责数据聚合、协议转换与断网续传。家庭网关把蓝牙、BLE、Wi-Fi 三种接入方式统一为 MQTT over TLS,做时间戳对齐与本地缓存(建议保留 72 小时),网络恢复后按序补传。边侧还承担轻量推理,例如用 5 分钟滑动窗口计算依从性评分,避免把原始波形全部上传。

云侧负责长期存储、模型训练、方案下发与合规审计。干预方案以版本化配置的形式下发,端侧只执行、不修改,保证临床方案的可追溯性。

端侧 · 患者侧 sEMG / IMU 传感器 25 Hz 采样 · 原始信号 本地滤波与特征提取 RMS · 中值频率 即时反馈引擎 阈值触发 · <200 ms 患者 App 交互层 引导动画 · 依从提醒 本地安全存储 加密 · 最小化留存 职责:采集 · 即时反馈 · 隐私前置 边侧 · 网关/站点 协议转换与接入 BLE/Wi-Fi → MQTT/TLS 时间戳对齐与缓存 断网续传 · 保留 72 h 轻量推理 5 min 窗口依从性评分 干预指令执行器 方案版本校验 · 幂等 本地审计日志 操作留痕 · 可回溯 职责:聚合 · 转换 · 断网自治 云侧 · 中心平台 时序数据库 长期存储 · 分区归档 模型训练与评估 离线训练 · 版本管理 干预方案编排 版本化配置 · 灰度下发 临床决策支持 趋势分析 · 预警 合规与审计中心 权限 · 脱敏 · 留痕 职责:存储 · 训练 · 方案下发 数据流 数据流 干预流 干预流 数据流上行(蓝)与干预流下行(橙)物理分离

二、数据流与干预流分离的实现要点

分离不等于两条互不相干的通道,而是通道独立、语义受控。数据流是“上行、高吞吐、可容忍秒级延迟、可批量补传”;干预流是“下行、低吞吐、必须可靠送达、必须幂等”。工程上建议:

  • 数据流走 MQTT 的 QoS 1,主题形如 dtx/{tenant}/{patientId}/telemetry,允许重复与乱序,由云端按时间戳去重排序。
  • 干预流走 MQTT 的 QoS 2 或 HTTPS 长轮询,主题形如 dtx/{tenant}/{patientId}/intervention,每条指令带 planVersion 与 commandId,端侧按 commandId 去重,保证“至少一次”送达后不重复执行。
  • 两条流在边侧交汇:边侧把干预执行结果(是否完成、完成时长、异常码)作为一条特殊遥测回传,形成闭环,但这条回传仍走数据流通道,不占用干预通道。
判断分离是否成功的简单标准:当云端干预服务重启时,端侧采集与本地即时反馈不应中断;当网络中断时,已下发的干预方案应能在边侧继续执行至少 72 小时。

三、模块划分

按职责边界,系统可划分为六个模块:设备接入模块(协议适配、设备注册、证书管理)、信号处理模块(滤波、特征、事件检测)、干预执行模块(方案解析、指令调度、幂等控制)、数据管理模块(时序存储、脱敏、归档)、临床逻辑模块(规则引擎、模型推理、预警)、运维与合规模块(监控、日志、权限、审计)。模块之间通过明确定义的接口通信,禁止跨层直接访问数据库。

四、技术选型原则

选型不追求“最新”,而追求可验证、可替换、可审计。三条原则:

  1. 医疗安全优先:任何影响干预执行的组件必须有降级路径。例如云端不可用时,边侧使用最近一次有效方案继续运行,并在恢复后上报“降级运行”事件。
  2. 数据最小化:端侧只上传特征与事件,原始波形默认本地留存 7 天后删除;确需上传时须单独授权并脱敏。
  3. 接口标准化:设备接入优先采用 HL7 FHIR 或 IEEE 11073 语义,避免私有协议锁定;干预指令采用 JSON Schema 约束,便于校验与版本演进。

五、架构决策记录(ADR)示例

架构决策记录用于把“为什么这样选”固化下来,避免后续维护者反复推翻。每条 ADR 至少包含:编号、标题、状态、背景、决策、理由、后果。以下是一条可直接参考的示例。

ADR-003:干预指令采用 QoS 2 + commandId 幂等
状态:已接受
背景:早期版本使用 QoS 0 下发干预,弱网下出现指令丢失;
      改用 QoS 1 后出现重复执行,患者收到两次引导任务。
决策:干预通道使用 MQTT QoS 2;每条指令携带全局唯一 commandId,
      端侧维护最近 100 条 commandId 的已执行集合,重复指令直接丢弃。
理由:QoS 2 保证恰好一次传输;commandId 幂等保证即使传输层
      异常重发,业务层也不会重复执行。
后果:端侧需增加约 4 KB 内存用于去重集合;指令下发延迟
      增加约 30 ms,可接受。
ADR 不是一次性文档。每次架构变更都应新增一条 ADR 并标注被替代的旧编号,而不是直接修改历史记录,这样才能保留完整的决策链路,满足医疗器械软件的可追溯性要求。

综上,端-边-云协同的核心不是“三层都放服务器”,而是按实时性、隐私与可用性把职责切干净;数据流与干预流分离的核心不是“两条线”,而是让上行可批量、下行可幂等;模块划分与技术选型则服务于同一个目标——让系统在断网、重启、弱网等真实条件下仍能安全地完成干预。把这些决策写进 ADR,架构才真正可维护、可审计、可演进。