2. 医疗系统典型架构与故障域分析

医疗信息系统的稳定性不是由某一个软件决定的,而是由一整套分层协作的架构共同支撑。要识别单点故障与级联失效,必须先看清各系统在架构中的位置、依赖方向以及故障传播路径。本节以 HIS、EMR、LIS、PACS、集成平台、数据库、中间件、网络与终端为主线,梳理典型分层架构,并给出可操作的故障域分析方法。

一、典型分层架构:从终端到数据底座

医疗系统通常可划分为五层,自下而上依次为:基础设施层(机房、供电、网络、虚拟化)、数据层(数据库、存储、缓存)、中间件与集成层(消息队列、ESB/集成平台、API 网关)、业务应用层(HIS、EMR、LIS、PACS 等)、接入与终端层(医生站、护士站、自助机、移动护理、影像工作站)。

依赖方向总体是自下而上:终端调用业务应用,业务应用通过集成平台或中间件访问数据层,数据层依赖基础设施。但实际调用中常出现横向依赖,例如 HIS 调用 LIS 获取检验状态、EMR 调用 PACS 调阅影像、集成平台反向推送结果到多个系统。这些横向依赖正是级联失效的高发区。

医疗系统分层架构与故障域示意 接入与终端层 医生站 护士站 影像工作站 自助机 移动护理 业务应用层 HIS EMR LIS PACS 其他专科 挂号/收费/医嘱 病历/护理文书 检验申请/结果 影像存储/调阅 中间件与集成层 集成平台 / ESB 消息队列 MQ API 网关 HL7/DICOM 接口 路由/转换/审计 异步解耦/削峰 鉴权/限流 协议适配 数据层 HIS 数据库 EMR 数据库 LIS 数据库 PACS 影像存储 主数据/事务 结构化病历 检验结果 DICOM 影像 基础设施层 机房/供电 核心网络 虚拟化/容器 存储/备份 HIS→LIS 状态查询 EMR→PACS 影像调阅 SPOF SPOF SPOF 纵向依赖 横向调用(级联风险) 单点故障(SPOF)

二、单点故障的识别方法

单点故障(SPOF)是指架构中某个组件失效后,没有冗余路径可替代,直接导致业务中断。识别 SPOF 不能只看设备清单,而要沿着“业务请求路径”逐段检查。以门诊开立检验医嘱为例,请求路径为:医生站 → HIS → 集成平台 → LIS → LIS 数据库 → 存储。这条链路上任何一段只有单实例且无故障转移,就是 SPOF。

常见 SPOF 包括:单台集成平台服务器、单实例数据库主库、单台核心交换机、单路市电、单台 PACS 归档服务器、单点登录认证服务。识别时可用以下判断条件:该组件是否有热备或集群?故障切换时间是否小于业务容忍中断时间?切换过程是否需要人工介入?若三个问题中有两个答案为“否”,应列为高风险 SPOF。

三、级联失效的典型场景

级联失效是指一个组件故障通过依赖关系放大,导致多个系统同时不可用。医疗系统中典型的级联场景有三类。

场景一:集成平台故障引发全院业务停滞。集成平台承担 HL7 消息路由与协议转换。若平台单点宕机,HIS 无法向 LIS 发送检验申请,LIS 无法回传结果,EMR 无法获取检验报告,PACS 无法接收检查申请。表面上是“平台故障”,实际影响覆盖门诊、住院、检验、影像多条业务线。判断依据是:平台消息队列积压量持续上升、各系统接口日志出现连接超时、业务端提示“接口无响应”。

场景二:数据库主库故障导致写入阻塞。HIS 数据库主库若发生磁盘满或锁等待,挂号、收费、医嘱写入全部阻塞。此时读操作可能仍可用,但业务上“能查不能写”同样构成中断。观察指标包括:数据库连接池活跃连接数达到上限、慢查询数量突增、应用日志出现“获取连接超时”。

场景三:核心网络抖动引发终端批量掉线。核心交换机或汇聚链路出现丢包时,终端与业务应用之间的 TCP 连接反复重连,表现为医生站频繁提示“网络异常”、PACS 影像加载缓慢或失败。此类故障的特点是影响面广但单点表现不一致,容易误判为“多个系统同时故障”。

四、故障域划分与演练重点

故障域是指一个故障能够影响的最大范围。按架构层次可划分为:终端故障域、应用故障域、集成故障域、数据故障域、基础设施故障域。划分故障域的目的是确定演练的“隔离边界”和“影响半径”。

故障域 典型故障对象 影响范围 演练观察重点
终端故障域 医生站、自助机、移动护理 单科室或单区域 是否有备用终端、手工流程是否可启动
应用故障域 HIS、EMR、LIS、PACS 单应用 对应业务线 降级页面是否可用、其他系统是否被拖累
集成故障域 集成平台、MQ、API 网关 跨系统消息链路 消息积压量、补偿机制、手工补录路径
数据故障域 数据库主库、存储、缓存 依赖该数据的全部应用 主备切换时间、数据一致性、只读降级
基础设施故障域 核心网络、供电、虚拟化平台 全院或院区 备用链路切换、UPS 续航、应急供电
演练设计时,建议先按故障域选择“单域故障”作为起点,例如只断开集成平台,观察各业务系统的表现和恢复动作;再逐步叠加“跨域故障”,例如数据库主库故障同时核心网络丢包,检验应急预案是否仍然有效。每次演练应记录故障注入时间、业务感知时间、切换完成时间、数据丢失量四个关键指标。

五、依赖关系梳理的实操要点

要准确识别级联失效,必须维护一份动态的依赖关系清单。梳理时从业务出发,而不是从设备出发。具体做法是:选取一条核心业务流(如“门诊就诊”),列出该流程涉及的每个系统、每个接口、每个数据表,标注调用方向、协议、超时设置和失败后的行为。例如 HIS 调用 LIS 查询检验状态,超时设置为 5 秒,失败后 HIS 应展示“检验状态暂不可查”而不是阻塞挂号流程。若实际配置为失败后重试 3 次且每次 30 秒,则一次 LIS 抖动就可能让 HIS 挂号窗口卡顿 90 秒,这就是典型的级联放大。

依赖清单应至少包含:源系统、目标系统、接口名称、协议、调用方向、超时时间、重试策略、失败降级行为、负责人。清单不是一次性文档,每次系统升级、接口变更或网络调整后都应更新,并在演练前核对。只有依赖关系清晰,故障域划分和级联场景设计才有可靠依据。

不要把“有备份”等同于“无单点故障”。备份恢复通常需要数十分钟到数小时,而门诊挂号、急诊医嘱等业务的中断容忍时间往往只有几分钟。判断 SPOF 时应以业务容忍中断时间为准,而不是以“是否有备份”为准。