HIS 微服务完整拆分方案(行业通用标准)

微服务拆分

第一层:基础中台公共服务(全院通用,不直接面向业务)

    1. 用户权限中心 user-service
       
      医护账号、角色、科室权限、登录鉴权、租户管理(多院区 / 多诊所)
    2. 患者主索引 EMPI-service
       
      统一患者档案、身份证 / 医保卡唯一标识,门诊住院共用患者数据
    3. 字典基础服务 dict-service
       
      收费项目、药品分类、诊断编码、科室、职称、医保码等基础字典
    4. 文件存储服务 file-service
       
      电子病历附件、检查报告、票据影像、处方存证
    5. 消息通知服务 msg-service
       
      候诊提醒、取药通知、住院缴费推送、院内消息推送
 

第二层:门诊域核心服务(高并发、独立扩容)

    1. 预约挂号门诊 outpatient-service
       
      线上预约、现场挂号、分诊、候诊、医生叫号、门诊排班
    2. 门诊收费结算 charge-service
       
      诊间收费、退费、发票打印、医保实时结算、自费对账
    3. 门诊医生站 emr-out-service
       
      门诊病历、处方开具、检查检验申请、合理用药审核
    4. 药房药品服务 drug-service
       
      药品采购、库存、门诊发药、退药、效期预警、药品盘点
 

第三层:住院域核心服务

    1. 住院管理 inpatient-service
       
      入院登记、床位管理、转科、出院结算、押金管理
    2. 住院医嘱 order-service
       
      长期 / 临时医嘱、护士执行、医嘱核对、停嘱、摆药申请
    3. 住院护理 nursing-service
       
      体温单、护理记录、巡视记录、生命体征采集
 

第四层:医技与第三方集成服务

    1. 检验 LIS 集成 lis-service
       
      开检验单、标本接收、检验结果回写、报告打印
    2. 影像 PACS 集成 pacs-service
       
      影像申请、胶片调取、报告同步
    3. 医保统一医保 medical-insurance-service
       
      各地医保接口适配、异地医保、医保对账、违规校验
    4. 财务统计 finance-service
       
      日结、月结账、营收报表、科室成本、收费统计
 

第五层:互联网患者端服务(线上业务)

    1. 患者门户 patient-h5-service
       
      小程序 / 公众号:预约、报告查询、在线缴费、电子票据
 

HIS 微服务配套微服务组件

1. 注册配置中心:Nacos

  • 所有 HIS 服务启动注册,收费、挂号服务通过@FeignClient(name = "charge-service")调用结算服务;
  • 统一管理医保接口地址、挂号限流阈值、超时参数,动态刷新不用重启服务。

2. 远程调用:OpenFeign(医疗场景高频使用)

示例:门诊开处方后调用药品服务校验库存
@FeignClient(name = "drug-service", contextId = "drugFeign")
public interface DrugFeign {
    @PostMapping("/drug/stock/check")
    R<StockVO> checkStock(@RequestBody DrugDTO dto);
}
 
 
医疗场景特殊坑:
  • 门诊早高峰大量 Feign 调用,极易出现RetryableException
  • 处方、结算属于写操作,必须关闭 Feign 自动重试,防止重复扣费、重复发药。

3. 网关:Spring Cloud Gateway

统一入口,对内 C/S 医生站、对外患者小程序统一路由:
  • 统一鉴权、接口限流(挂号高峰限流保护);
  • 统一跨域、日志采集、请求报文脱敏(患者身份证、病历隐私)。

4. 熔断降级:Sentinel(医疗刚需)

核心场景:
  • 医保服务宕机 → 触发降级,先支持自费结算,不阻断门诊;
  • 药房服务卡顿 → 提示 “药房繁忙,请稍后取药”,不卡死医生工作站;
  • 防止下游服务雪崩导致全院停诊,医疗行业叫业务熔断隔离

5. 分布式事务:Seata(HIS 核心难点)

典型跨服务事务场景:
  1. 门诊收费(charge-service)扣患者余额 + 药品服务(drug-service)扣库存;
  2. 出院结算、医保扣款、财务记账多服务数据一致性;
     
    单体 HIS 本地事务简单,微服务必须靠 Seata AT 模式保证不出现 “扣钱不发药、发药不扣钱” 医疗事故。

6. 日志与链路追踪:SkyWalking + ELK

一次就诊链路:网关→挂号→收费→处方→药房→LIS
 
全链路 TraceId 串联所有服务日志,快速定位:
  • 收费超时、医保接口报错、Feign 调用RetryableException
  • Feign 日志采用AOP+RequestInterceptor双方案,脱敏病历、身份证隐私数据,符合医疗等保规范。

7. 异步解耦:RabbitMQ

非实时流程全部异步,减轻同步调用压力:
  • 处方推送药房、检验标本通知、每日财务日结、病历归档、消息推送;
  • 减少 Feign 同步调用次数,降低超时风险。

 

HIS 微服务对比传统单体的医疗行业专属优势

  1. 故障隔离,杜绝全院停诊
     
    挂号服务崩了,住院、药房、收费照常运行,医院不用停诊;传统单体一处故障全部瘫痪,医患纠纷风险极高。
  2. 按需弹性扩容,适配门诊潮汐流量
     
    早 7-9 点挂号、收费并发暴涨,单独扩容outpatient-servicecharge-service;夜间低峰缩容,节省服务器资源。
  3. 迭代不影响全院接诊
     
    医保政策更新、线上小程序改版,只发布medical-insurance-servicepatient-h5-service,其他业务不停机。
  4. 多院区、连锁诊所统一云部署
     
    一套微服务底座,多租户隔离,社区医院、分院共用技术底座,单独扩容单家医院服务集群。
  5. 标准化对接 LIS/PACS/ 第三方系统
     
    统一网关 + 标准化 FHIR 接口,不用点对点开发接口,减少集成工作量。
  6. 满足等保、医疗数据合规
     
    服务拆分后权限隔离、日志独立采集、接口统一脱敏,更容易过医院信息安全等保测评。

 

HIS 微服务落地两大主流路线

路线 1:全新云 HIS(新建医院 / 新建系统,推荐)

完全基于 Spring Cloud Alibaba 从零微服务拆分,容器 K8s 部署,天然分布式架构。

路线 2:传统单体 HIS 渐进微服务改造(老三甲存量系统)

不能一次性重构,采用蚕食式拆分
  1. 先剥离高并发、易故障模块:挂号、收费、医保;
  2. 抽离公共中台:患者中心、权限、字典;
  3. 新旧系统通过消息队列 / 网关打通,逐步替换剩余单体模块;
  4. 最终完全替换为微服务集群。

HIS 微服务独有的难点(区别普通电商微服务)

  1. 数据一致性要求极高,零容错
     
    收费、库存、医保数据不能错,分布式事务必须严谨,不能出现账务错乱;
  2. 隐私数据严格脱敏
     
    患者病历、身份证、诊断信息所有 Feign 日志、接口返回必须脱敏,符合《医疗卫生数据安全规范》;
  3. 高可用硬性要求
     
    医院 7×24 小时不能停机,必须双活集群、服务多实例、熔断降级兜底;
  4. 混合 C/S+B/S 架构
     
    医生工作站、药房窗口用 C/S 客户端,患者端 B/S,网关需要同时兼容两种接入方式;
  5. 老旧第三方系统兼容
     
    老 LIS、PACS 只支持 WebService,微服务需要做协议转换适配

总结

  1. HIS 行业有完整、成熟的微服务落地思路,是现在智慧医院、云 HIS 的标准架构;
  2. 拆分核心逻辑:按医院业务领域 DDD 限界上下文拆分门诊、住院、药品、医保、患者等独立服务;
  3. 技术栈完全复用你之前学习的 SpringCloud Alibaba 全套组件:Nacos、OpenFeign、Gateway、Sentinel、Seata;
  4. 核心价值:解决传统单体 HIS 全院瘫痪、升级停机、无法弹性扩容的医疗业务痛点;
  5. 和普通电商微服务最大区别:强数据一致性、医疗隐私合规、7×24 高可用、C/S+B/S 混合接入
posted @ 2026-06-24 16:35  七彩鱼丸  阅读(19)  评论(0)    收藏  举报