2. 医疗系统典型架构与故障域分析
医疗信息系统的稳定性不是由某一个软件决定的,而是由一整套分层协作的架构共同支撑。要识别单点故障与级联失效,必须先看清各系统在架构中的位置、依赖方向以及故障传播路径。本节以 HIS、EMR、LIS、PACS、集成平台、数据库、中间件、网络与终端为主线,梳理典型分层架构,并给出可操作的故障域分析方法。
一、典型分层架构:从终端到数据底座
医疗系统通常可划分为五层,自下而上依次为:基础设施层(机房、供电、网络、虚拟化)、数据层(数据库、存储、缓存)、中间件与集成层(消息队列、ESB/集成平台、API 网关)、业务应用层(HIS、EMR、LIS、PACS 等)、接入与终端层(医生站、护士站、自助机、移动护理、影像工作站)。
依赖方向总体是自下而上:终端调用业务应用,业务应用通过集成平台或中间件访问数据层,数据层依赖基础设施。但实际调用中常出现横向依赖,例如 HIS 调用 LIS 获取检验状态、EMR 调用 PACS 调阅影像、集成平台反向推送结果到多个系统。这些横向依赖正是级联失效的高发区。
二、单点故障的识别方法
单点故障(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 秒,这就是典型的级联放大。
依赖清单应至少包含:源系统、目标系统、接口名称、协议、调用方向、超时时间、重试策略、失败降级行为、负责人。清单不是一次性文档,每次系统升级、接口变更或网络调整后都应更新,并在演练前核对。只有依赖关系清晰,故障域划分和级联场景设计才有可靠依据。