4. 医院运营数据模型设计

医院运营数据平台能否支撑管理决策,关键不在数据量有多大,而在于数据是否被组织成“可分析、可复用、可解释”的结构。维度建模正是承担这一职责的核心方法:它把分散在 HIS、EMR、LIS、PACS、HRP、财务系统、物资系统里的原始记录,重新组织为面向运营主题的事实表与维度表,让“门诊量为什么下降”“某科室成本为何偏高”“床位周转慢在哪一环”这类问题能够被快速回答。

一、为什么运营主题需要维度模型

医院业务系统大多按流程建表:挂号表、收费明细表、医嘱表、发药表、核算表,各自服务单一业务。若直接在这些表上做运营分析,会面临三个问题:一是口径不统一,同一“门诊人次”在不同系统含义不同;二是关联复杂,一次运营分析往往要跨十几张表;三是性能差,明细表动辄上亿行,聚合查询响应慢。维度模型通过“事实表记录业务事件、维度表描述分析视角”的方式,把复杂关联预先梳理清楚,使分析人员只需按维度切片、按指标聚合即可。

面向运营主题的维度模型通常按主题域划分。结合医院实际,建议至少覆盖五个主题域:患者主题域(就诊、住院、随访)、医疗主题域(诊疗活动、手术、检查检验)、财务主题域(收入、成本、结算)、人力主题域(人员、排班、绩效)、物资主题域(药品、耗材、设备)。每个主题域内部由若干事实表与共享维度表构成,维度表尽量跨主题复用,避免重复建设。

医院运营维度模型:主题域—事实表—共享维度 共享维度表(跨主题复用) 时间维度 科室维度 患者维度 人员维度 收费项目维度 医保/支付维度 患者主题域 就诊事实表 住院事实表 随访事实表 医疗主题域 诊疗事实表 手术事实表 检查检验事实表 财务主题域 收入事实表 成本事实表 结算事实表 人力主题域 排班事实表 工时事实表 绩效事实表 物资主题域 药品事实表 耗材事实表 设备事实表 指标模型(原子指标 → 派生指标 → 复合指标) 原子指标 门诊人次、出院人数、收入金额 派生指标 同比门诊量、人均费用、床日成本 复合指标 床位周转率、药占比、成本收入比 指标口径统一登记在指标字典中,事实表提供度量值,维度表提供切片视角

二、事实表设计:先定粒度,再定度量

事实表是维度模型的核心,设计第一步是确定粒度。粒度决定了“一行事实代表什么业务事件”。例如就诊事实表,粒度可定为“一次挂号就诊”,一行记录一次就诊;住院事实表粒度可定为“一次住院”,一行记录一次住院全过程。粒度越细,分析灵活性越高,但数据量和查询成本也越大。运营分析通常建议采用“明细粒度 + 轻度汇总”双层结构:明细层保留最细事件,汇总层按天、科室、患者类型预聚合,兼顾灵活性与性能。

确定粒度后,再选择度量。度量必须是可加或半可加的数值,如收入金额、药品数量、住院天数、手术台次。不可直接相加的比率类指标(如药占比、床位使用率)不放入事实表,而由指标模型基于原子度量计算得出。事实表还应包含指向各维度表的外键,如时间键、科室键、患者键、医生键,通过这些外键与共享维度关联。

以就诊事实表为例,其结构可设计为:

就诊事实表 fact_visit
  visit_id          就诊唯一标识
  time_key          时间维度外键(精确到日)
  dept_key          科室维度外键
  patient_key       患者维度外键
  doctor_key        医生维度外键
  pay_type_key      支付方式维度外键
  visit_type        门诊/急诊/住院标识
  visit_count       就诊人次(度量,值=1)
  total_fee         总费用(度量)
  drug_fee          药品费用(度量)
  exam_fee          检查费用(度量)
  treat_fee         治疗费用(度量)
  wait_minutes      候诊时长(度量)

其中 visit_count 恒为 1,是为了让“人次”可以直接 SUM 聚合;各费用字段均为可加度量,便于按任意维度汇总。wait_minutes 用于分析候诊效率,属于半可加度量,跨时间汇总时需注意口径。

三、维度表设计:描述分析视角

维度表回答“从哪个角度看数据”。医院运营中高频使用的维度包括:时间维度(年、季、月、周、日、工作日/节假日)、科室维度(临床科室、医技科室、职能科室、科室层级)、患者维度(年龄、性别、参保类型、地区)、人员维度(医生、护士、职称、所属科室)、收费项目维度(项目类别、医保类别、价格)、支付方式维度(自费、职工医保、居民医保、商保)。

维度表设计要处理两个关键问题。一是缓慢变化维:患者年龄会变、医生科室会调、科室名称会改。对需要保留历史口径的分析,应采用拉链式或版本式处理,保留生效时间与失效时间;对只关心当前状态的场景,可直接覆盖更新。二是一致性维度:同一“科室”在患者域、财务域、人力域必须使用同一套编码和层级,否则跨域分析会出现口径断裂。建议建立全院统一的科室主数据,维度表从主数据同步生成。

四、指标模型:从原子指标到复合指标

指标模型是维度模型面向管理语言的封装。它把事实表中的度量与维度组合,形成可被业务直接引用的指标。指标分三层:原子指标是不可再分的基础度量,如门诊人次、出院人数、收入金额;派生指标是原子指标加时间、维度限定后的结果,如“本月门诊人次”“某科室出院人数”“同比收入增长率”;复合指标由多个原子或派生指标运算得到,如床位周转率 = 出院人数 ÷ 平均开放床位数,药占比 = 药品收入 ÷ 医疗收入。

指标模型必须配套指标字典,明确每个指标的名称、口径、计算公式、数据来源、责任部门、更新频率。例如“床位周转率”需注明:分子为统计期内出院人数,分母为同期平均开放床位数,统计周期为月,数据来源为住院事实表与床位资源表。没有指标字典,维度模型再规范也无法保证全院口径一致。

五、落地要点与常见问题

实际建设中,建议按“主题域调研 → 确定粒度 → 设计事实表 → 抽取共享维度 → 定义指标 → 指标字典评审 → 物理建模与加载”的顺序推进。常见问题有三类:一是粒度定得过粗,导致无法下钻到科室或医生;二是维度不统一,财务和医疗各建一套科室编码;三是指标口径未评审就上线,导致同一指标在不同报表中数值不一致。规避方法是在建模阶段就让医务、财务、人事、信息部门共同参与口径确认,并把确认结果固化到指标字典和维度主数据中。

维度模型不是一次性设计,而是随运营管理需求持续演进的。建议每季度回顾一次指标使用情况,淘汰低价值指标,补充新管理场景所需的事实与维度,保持模型与业务同步。