2. 智慧医院业务全景与领域建模

智慧医院不是把HIS、LIS、PACS、EMR等系统简单堆叠在一起,而是围绕“患者就医旅程”和“医院运营闭环”两条主线,把业务拆成可治理、可复用、可演进的领域。业务全景回答“医院到底在做什么”,领域建模回答“这些事在软件里如何被稳定表达”。二者缺一不可:没有全景,领域边界容易拍脑袋;没有建模,全景只能停留在PPT上。

一、业务域划分:从就医旅程到运营闭环

门急诊域覆盖挂号、分诊、候诊、接诊、开单、缴费、取药、留观等环节,核心对象是患者、就诊、医嘱、处方、申请单。住院域围绕入院登记、床位分配、医嘱执行、护理记录、手术、出院结算展开,核心对象是住院就诊、床位、医嘱执行记录、护理计划。医技域承接检查、检验、影像、病理、心电等申请与报告,核心对象是申请单、标本、检查项目、报告。药事域管理处方审核、调配、发药、用药监护与库存,核心对象是处方、药品、批次、库存、用药事件。运营管理域覆盖财务、人事、物资、绩效、质控与决策分析,核心对象是成本、收入、资源、指标。

划分业务域时,建议同时看三个维度:业务能力(医院必须具备什么能力)、数据所有权(谁产生、谁维护、谁消费)、变更频率(哪些规则经常变、哪些相对稳定)。例如“处方审核”能力属于药事域,但审核规则会随药政政策频繁变化,适合做成可配置规则服务;而“患者主索引”属于全院共享基础能力,应由主数据域统一管理,避免各域各自维护患者信息。

二、业务能力地图:把“做什么”结构化

业务能力地图是业务全景的骨架,通常按“一级能力—二级能力—三级能力”展开。以门急诊为例:一级能力“患者接诊”,二级能力包括“分诊”“叫号”“接诊记录”,三级能力可细到“生命体征采集”“诊断录入”“医嘱开立”。能力地图不描述流程顺序,而描述医院具备哪些稳定能力,因此它比流程图更适合做系统规划与领域划分的输入。

绘制能力地图时,建议用“动词+名词”命名,避免用部门名称代替能力。例如“门诊药房发药”是能力,“门诊药房”是组织单元。能力地图还应标注能力成熟度与数字化程度,便于识别哪些能力需要优先建设。下表给出一个简化示例,用于说明能力地图的字段结构:

一级能力二级能力核心对象主要数据所有者典型系统
患者服务挂号、分诊、缴费患者、就诊、费用患者主索引域HIS、自助机
临床诊疗接诊、医嘱、病历医嘱、诊断、病历临床域EMR、CPOE
医技执行检查、检验、报告申请单、标本、报告医技域LIS、PACS、RIS
药事管理审方、调配、发药处方、药品、库存药事域药房系统、审方系统
运营管理结算、成本、绩效收入、成本、指标运营域HRP、BI

三、领域驱动设计在医疗业务建模中的应用

领域驱动设计(DDD)强调用限界上下文划分业务边界,用聚合保证一致性,用领域事件驱动跨域协作。在医疗场景中,一个“就诊”在门急诊域是挂号就诊,在住院域是住院就诊,在医技域是检查申请,在药事域是处方。它们共享患者标识,但业务规则、生命周期和状态机完全不同,因此应划分为不同限界上下文,而不是强行做成一张大表。

以“开立处方”为例:医生在临床域开立处方,处方聚合根包含处方明细、用法用量、诊断关联;药事域接收处方后执行审核,审核通过生成“处方审核通过”领域事件;药房系统订阅该事件进行调配,生成“药品已调配”事件;护理域订阅后执行给药,生成“给药执行”事件。整个过程通过事件串联,各域只依赖事件契约,不直接读取对方数据库,从而降低耦合。

聚合设计要抓住一致性边界。例如“处方”与“处方明细”必须强一致,应放在同一聚合;“库存扣减”与“处方审核”可以最终一致,通过事件异步处理。医疗业务对一致性要求高,但并非所有操作都需要强事务。例如预约挂号需要强一致防止号源超卖,而报表统计可以接受分钟级延迟。

建模时先问三个问题:这个业务对象谁负责创建?谁负责修改?谁负责消费?答案往往就是限界上下文的边界。

四、从业务全景到落地:一张可执行的领域关系图

下面这张图把门急诊、住院、医技、药事、运营五个业务域放在同一张全景中,并标出核心对象、主要事件流与共享主数据。图中实线表示同步调用或强一致关系,虚线表示领域事件驱动的异步协作,箭头方向表示数据或控制流向。该图可直接作为领域划分讨论的起点:如果某个箭头跨越了不该跨越的边界,就说明上下文划分需要调整。

智慧医院业务域全景与领域事件协作 门急诊域 患者 / 就诊 / 医嘱 挂号 · 分诊 · 接诊 处方开立 · 申请单 住院域 住院就诊 / 床位 医嘱执行 · 护理记录 手术 · 出院结算 医技域 申请单 / 标本 / 报告 检查 · 检验 · 影像 报告发布 药事域 处方 / 药品 / 库存 审方 · 调配 · 发药 用药监护 运营管理域 收入 / 成本 / 绩效 物资 · 人力 · 质控 指标分析 共享主数据 患者主索引 机构 / 人员 / 药品字典 术语 / 值集 入院登记 检查申请 处方开立事件 发药完成事件 医嘱执行事件 主数据同步 报告发布事件 图例与建模要点 同步调用 / 强一致关系 领域事件 / 异步协作 主数据同步 每个业务域拥有独立限界上下文;跨域只通过事件契约或主数据服务交互,不直接访问对方数据库。

从这张图可以读出三条落地原则。第一,主数据必须独立:患者主索引、药品字典、机构人员等由共享主数据域统一维护,各业务域只引用不复制,否则同一患者在门急诊和住院会出现两个ID。第二,跨域协作优先用事件:处方开立后,药事域不需要同步调用临床域接口,而是订阅“处方开立”事件,这样药事域升级不会影响临床域。第三,聚合边界要匹配业务一致性:处方与处方明细同聚合,库存扣减与处方审核分属不同聚合,通过事件最终一致。

五、建模落地时的常见判断

实际项目中,领域划分最容易出现两种偏差:一是按现有系统划分,把HIS当成一个域,导致边界过粗;二是按部门划分,把“门诊部”“住院部”当成域,导致组织变化时系统跟着大改。正确做法是回到业务能力和数据所有权:谁产生这个数据,谁就对它的生命周期负责;谁消费这个数据,谁就通过契约获取。

另一个关键判断是事件粒度。事件太粗,消费者拿不到足够信息;事件太细,系统间调用次数爆炸。建议事件携带“聚合根ID+关键状态+时间戳+版本号”,例如“处方审核通过”事件包含处方号、患者ID、审核结果、审核时间、处方版本。消费者根据版本号做幂等处理,避免重复消费导致重复发药。

领域建模不是一次性设计。建议每季度结合业务能力地图复盘一次限界上下文:如果某个上下文频繁修改同一批规则,或两个上下文总是一起变更,就应考虑合并或重新划分边界。

总结来说,智慧医院业务全景提供“地图”,领域建模提供“坐标系”。先划分门急诊、住院、医技、药事、运营等业务域,再用能力地图把能力结构化,最后用DDD的限界上下文、聚合和领域事件把业务规则固化到软件边界中。这样建出来的平台,才能既支撑当前业务,又能在政策、流程和技术变化时保持稳定演进。