HIS 微服务完整拆分方案(行业通用标准)
微服务拆分
第一层:基础中台公共服务(全院通用,不直接面向业务)
- 用户权限中心 user-service
医护账号、角色、科室权限、登录鉴权、租户管理(多院区 / 多诊所)
- 患者主索引 EMPI-service
统一患者档案、身份证 / 医保卡唯一标识,门诊住院共用患者数据
- 字典基础服务 dict-service
收费项目、药品分类、诊断编码、科室、职称、医保码等基础字典
- 文件存储服务 file-service
电子病历附件、检查报告、票据影像、处方存证
- 消息通知服务 msg-service
候诊提醒、取药通知、住院缴费推送、院内消息推送
第二层:门诊域核心服务(高并发、独立扩容)
- 预约挂号门诊 outpatient-service
线上预约、现场挂号、分诊、候诊、医生叫号、门诊排班
- 门诊收费结算 charge-service
诊间收费、退费、发票打印、医保实时结算、自费对账
- 门诊医生站 emr-out-service
门诊病历、处方开具、检查检验申请、合理用药审核
- 药房药品服务 drug-service
药品采购、库存、门诊发药、退药、效期预警、药品盘点
第三层:住院域核心服务
- 住院管理 inpatient-service
入院登记、床位管理、转科、出院结算、押金管理
- 住院医嘱 order-service
长期 / 临时医嘱、护士执行、医嘱核对、停嘱、摆药申请
- 住院护理 nursing-service
体温单、护理记录、巡视记录、生命体征采集
第四层:医技与第三方集成服务
- 检验 LIS 集成 lis-service
开检验单、标本接收、检验结果回写、报告打印
- 影像 PACS 集成 pacs-service
影像申请、胶片调取、报告同步
- 医保统一医保 medical-insurance-service
各地医保接口适配、异地医保、医保对账、违规校验
- 财务统计 finance-service
日结、月结账、营收报表、科室成本、收费统计
第五层:互联网患者端服务(线上业务)
- 患者门户 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 核心难点)
典型跨服务事务场景:
- 门诊收费(charge-service)扣患者余额 + 药品服务(drug-service)扣库存;
- 出院结算、医保扣款、财务记账多服务数据一致性;
单体 HIS 本地事务简单,微服务必须靠 Seata AT 模式保证不出现 “扣钱不发药、发药不扣钱” 医疗事故。
6. 日志与链路追踪:SkyWalking + ELK
一次就诊链路:网关→挂号→收费→处方→药房→LIS
全链路 TraceId 串联所有服务日志,快速定位:
- 收费超时、医保接口报错、Feign 调用
RetryableException; - Feign 日志采用AOP+RequestInterceptor双方案,脱敏病历、身份证隐私数据,符合医疗等保规范。
7. 异步解耦:RabbitMQ
非实时流程全部异步,减轻同步调用压力:
- 处方推送药房、检验标本通知、每日财务日结、病历归档、消息推送;
- 减少 Feign 同步调用次数,降低超时风险。
HIS 微服务对比传统单体的医疗行业专属优势
- 故障隔离,杜绝全院停诊
挂号服务崩了,住院、药房、收费照常运行,医院不用停诊;传统单体一处故障全部瘫痪,医患纠纷风险极高。
- 按需弹性扩容,适配门诊潮汐流量
早 7-9 点挂号、收费并发暴涨,单独扩容
outpatient-service、charge-service;夜间低峰缩容,节省服务器资源。 - 迭代不影响全院接诊
医保政策更新、线上小程序改版,只发布
medical-insurance-service、patient-h5-service,其他业务不停机。 - 多院区、连锁诊所统一云部署
一套微服务底座,多租户隔离,社区医院、分院共用技术底座,单独扩容单家医院服务集群。
- 标准化对接 LIS/PACS/ 第三方系统
统一网关 + 标准化 FHIR 接口,不用点对点开发接口,减少集成工作量。
- 满足等保、医疗数据合规
服务拆分后权限隔离、日志独立采集、接口统一脱敏,更容易过医院信息安全等保测评。
HIS 微服务落地两大主流路线
路线 1:全新云 HIS(新建医院 / 新建系统,推荐)
完全基于 Spring Cloud Alibaba 从零微服务拆分,容器 K8s 部署,天然分布式架构。
路线 2:传统单体 HIS 渐进微服务改造(老三甲存量系统)
不能一次性重构,采用蚕食式拆分:
- 先剥离高并发、易故障模块:挂号、收费、医保;
- 抽离公共中台:患者中心、权限、字典;
- 新旧系统通过消息队列 / 网关打通,逐步替换剩余单体模块;
- 最终完全替换为微服务集群。
HIS 微服务独有的难点(区别普通电商微服务)
- 数据一致性要求极高,零容错
收费、库存、医保数据不能错,分布式事务必须严谨,不能出现账务错乱;
- 隐私数据严格脱敏
患者病历、身份证、诊断信息所有 Feign 日志、接口返回必须脱敏,符合《医疗卫生数据安全规范》;
- 高可用硬性要求
医院 7×24 小时不能停机,必须双活集群、服务多实例、熔断降级兜底;
- 混合 C/S+B/S 架构
医生工作站、药房窗口用 C/S 客户端,患者端 B/S,网关需要同时兼容两种接入方式;
- 老旧第三方系统兼容
老 LIS、PACS 只支持 WebService,微服务需要做协议转换适配
总结
- HIS 行业有完整、成熟的微服务落地思路,是现在智慧医院、云 HIS 的标准架构;
- 拆分核心逻辑:按医院业务领域 DDD 限界上下文拆分门诊、住院、药品、医保、患者等独立服务;
- 技术栈完全复用你之前学习的 SpringCloud Alibaba 全套组件:Nacos、OpenFeign、Gateway、Sentinel、Seata;
- 核心价值:解决传统单体 HIS 全院瘫痪、升级停机、无法弹性扩容的医疗业务痛点;
- 和普通电商微服务最大区别:强数据一致性、医疗隐私合规、7×24 高可用、C/S+B/S 混合接入。


浙公网安备 33010602011771号