4. 平台总体架构设计

医院物资与耗材管理平台连接的是临床科室、中心库房、二级库、供应商、财务与监管等多方角色,业务上同时存在“高频轻量”的扫码消耗与“低频重载”的采购结算。若采用单体架构,一次盘点高峰就可能拖慢全院领用。因此本平台总体架构采用微服务 + 分层的组合:纵向按职责分层收敛技术复杂度,横向按业务能力拆分服务实现独立伸缩与故障隔离。

一、分层架构:五层职责与依赖方向

平台自上而下划分为接入层、网关层、业务服务层、数据访问层与基础设施层,依赖方向严格单向向下,禁止跨层反向调用。

  • 接入层:面向 PC 管理端、移动 PDA、供应商门户、院内 HIS/HRP 系统,统一通过 HTTPS 接入,PDA 支持离线缓存后补传。
  • 网关层:承担路由、鉴权、限流、灰度与协议转换。所有外部请求必须携带 JWT,网关校验后透传科室编码与角色,业务服务不再重复解析身份。
  • 业务服务层:按领域拆分为物资主数据、采购、库存、消耗计费、供应商协同、报表分析等服务。
  • 数据访问层:封装分库分表、读写分离与缓存,业务代码不直接拼接 SQL。
  • 基础设施层:注册配置中心、消息队列、对象存储、日志与链路追踪。

二、微服务模块划分与集成边界

模块划分遵循“高内聚、低耦合、数据私有”原则,每个服务独占其数据库 schema,跨服务只通过 API 或事件交互,不允许跨库联表。核心服务与边界如下:

服务核心职责数据归属对外边界
物资主数据服务耗材编码、分类、UDI、证照效期material_db提供编码查询 API,被采购/库存订阅
采购服务请购、订单、到货、结算purchase_db向供应商门户开放订单接口
库存服务入库、出库、调拨、盘点、批次stock_db发布库存变更事件
消耗计费服务扫码消耗、科室成本归集consume_db向 HIS 回传计费明细
供应商协同服务资质、对账、配送预约supplier_db仅经网关对外暴露
报表分析服务消耗趋势、库存周转、效期预警只读副本/数仓只读,不写业务库

集成边界的关键约定:库存服务是“库存数量”的唯一权威来源,采购服务不得直接改写库存;消耗计费服务只消费库存扣减事件,不反向调用库存写接口。这样即使计费服务故障,扫码消耗仍可继续,事件在恢复后补消费。

三、高可用与可扩展性设计

高可用从“无单点、可降级、可恢复”三方面落地。网关与业务服务均部署至少 2 副本并跨可用区,注册中心集群化;数据库采用一主两从,主库故障由哨兵在 30 秒内切换。关键链路设置降级策略:当报表分析服务不可用时,管理端仅隐藏图表,不影响领用与入库。

可扩展性分两个维度。其一是水平扩展:库存服务无状态,可随 PDA 扫码并发增加副本;库存流水表按“库房编码 + 月份”分表,单表控制在千万级以内。其二是业务扩展:新增“高值耗材追溯”能力时,只需新增追溯服务并订阅既有库存事件,无需改动采购与计费代码。

容量估算示例(假设值,用于说明方法):某三甲医院日均扫码消耗 8000 次,峰值集中在 8:00–10:00,约占全天 40%,即峰值约 3200 次/小时 ≈ 0.9 次/秒。按单副本 50 QPS 处理能力,2 副本余量充足;若扩展至 5 个院区,按线性放大至约 4.5 次/秒,仍可通过增加副本应对。

四、架构关系总览

下图给出分层与微服务模块的对应关系,以及关键数据流方向:外部系统经网关进入业务服务,库存变更以事件方式广播给计费与分析服务。

医院物资与耗材管理平台总体架构 接入层 PC 管理端 移动 PDA 供应商门户 HIS / HRP 监管接口 网关层 路由 · JWT 鉴权 · 限流 · 灰度 · 协议转换 业务服务层(微服务) 物资主数据 material_db 采购服务 purchase_db 库存服务 stock_db 消耗计费 consume_db 供应商协同 supplier_db 报表分析服务(只读副本 / 数仓) 不写业务库 数据访问层 分库分表 · 读写分离 · 缓存 · 事务封装 基础设施层 注册配置中心 消息队列 对象存储 日志与链路追踪 库存变更事件 订阅 到货入库 计费明细回传

落地时建议先固化三条纪律:服务只访问自己的库;跨服务写操作通过事件最终一致;任何新模块上线前必须明确其数据归属与对外接口契约。做到这三点,架构才真正具备可演进的基础。