一、数仓建模实超案例
(一)前言
医疗业务系统比较复杂,有HIS:医院信息管理系统( Hospital Information System)、CIS:临床信息系统(Clinical Information System)、LIS:实验室信息管理系统(Laboratory Information Management System)、EMR:电子病历(EMR,Electronic Medical Record)、PACS:影像归档和通信系统、RIS:放射科信息系统(Radiology Information System)、GMIS:区域信息系统、HRP:医院资源管理系统(Hospital Resource Planning )等,每个模块又包含很多其子系统。
在进行数仓模型建设的时候,先从整体来看,划分业务模块,再根据大的业务模块划分小的业务模块,然后再根据业务系统进行划分,梳理出整个业务划分情况,再梳理出每个系统的划分情况和依赖情况。
(二)本次建模情况介绍
本次建模只针对问诊、住院业务模块进行数仓建模。
1、问诊、住院系统涉及到的系统和表结构
一个业务系统里面,不仅仅有业务表,还有一些数据统计的表,我们要区分出来哪些业务表,而且后面做指标计算的时候,也可以根据业务数据统计表去验证我们的指标体系设计是否正确和合理。
本次模型设计,是用了天津的一个HIS系统厂商的门诊系统的数据结构。其中系统中表有324张,从业务角度和表信息了解来看,大概分为预约、挂号、叫号、诊断、开方、缴费、检查、检验、开药、煎药、拿药、复诊、退费、评价14个业务过程。
涉及维度有医院、医生、科室、药品、耗材、诊疗、时间、地区、患者、疾病、手术、检查检验项目12个大维度。
his系统表结构请私聊。因his系统涉及保密性,不能对外展示。但是医院的业务基本差不多,涉及维度基本一致,(无则添加)因此不影响最终模型的应用。(业务系统的任何一个业务操作都应该设计时间字段)
2、数据域划分
数仓数据域就是公司业务中联系较为密切的的数据主题的集合,一般可以根据业务过程、业务部门、业务系统来划分(比如医疗服务域、费用域、用户域),一个数据域包含多个主题。
数据域,通常根据业务部门、业务系统、业务过程划分数据域。一般情况下,每个公司的部分划分可能不同,而且公司调整架构业务部门会进行划分,但是业务过程差别不会特别大,且部门调整不会影响业务过程,因此此次划分主题域按照业务过程进行划分。
需要注意的是一个业务过程只能属于一个数据域。
数据域的划分要谨慎划分,一旦确定下来避免频繁变动,虽然数仓建设是迭代建设的,不能保证一次性初始化好,但我们的数据域划分和主题划分要尽可能地涵盖企业的所有业务,以及在新业务进来时能够无影响地被包含进来和可扩展数据域。
数据域 | 业务过程 |
---|---|
挂号域 | 预约、挂号、取号、叫号、退号、过号 |
医疗过程域(医疗服务域) | 诊断、开方、检查、检验、手术、麻醉、输血、护理 |
费用域 | 缴费、退费 |
用户域 | 注册、登录 |
互动域 | 评价、收藏 |
工具域 | 优惠卷领取、优惠卷使用(下单)、优惠卷使用(支付) |
业务总线矩阵
业务总线矩阵中包含维度模型所需的所有事实(业务过程)以及维度,以及各业务过程与各维度的关系。矩阵的行是一个个业务过程,矩阵的列是一个个的维度,行列的交点表示业务过程与维度的关系。
3、主题划分
主题域是对实体的逻辑分组,我们以上帝视角去看企业的业务系统,梳理企业的业务实体,实体与实体之间的关系,将企业中的数据进行逻辑划分。相同主题域中的数据联系紧密,不同主题域之间的数据相互独立。所以主题域的划分没有任何的技术含义,只是一种概念,能帮助数据使用者快速找到数据的一种分类方法。就像图书馆的图书分类一样,图书分类共分为22个大类:分为军事、文学、艺术等,比如文学又包含:小说、散文、诗歌、戏剧等。这些就是图书的主题域。
数仓主题就是在较高层次上将企业生产上的各个系统中某一分析对象的数据进行整合(比如医生主题、药品主题、患者主题)、归纳并分析的一种范围,一个主题就是一个实体对象。
比如用户主题域包含医生主题、护士主题、行政人员主题、患者主题。
药品主题域包含西药主题、中药主题、中草药主题、中药饮片主题。
主题域 | 主题 |
---|---|
用户主题域 | 医生、护士、行政人员、患者 |
三目录主题域 | 药品、诊疗项目、医用材料 |
地点主题域 | 医院、科室、省份、城市、家庭住址 |
时间主题域 | 日期、时间 |
号源主题域 | 号源 |
4、业务表梳理
-
挂号域涉及到的业务表
app_register_record:预约业务表
outp_Register:挂号业务表
outp_RegLock:挂号锁号表
sys_QueueNo:叫号序列表
call_queue_list:叫号队列表
call_screen_config:叫号终端屏配置表 -
医疗过程域涉及到的业务表
outp_OutpatientDiag:门诊信息——诊断
outp_OutPatientDrug:门诊信息——用药
outp_OutPatientSymp:门诊信息——症状
outp_OutPatientTest:门诊信息——检查检验
outp_OperRecord:手术记录 -
费用域涉及到的业务表
outp_OutPatientFee:门诊信息——费用 -
用户域涉及到的业务表
yb_user:医保用户表 -
互动域涉及到的业务表
ys_evaluate:医生评价表
ys_holdings:医生收藏表 -
工具域涉及到的业务表
ts_coupon:特殊优惠卷使用表
4、维度提取
维度模型的设计参照上述得到的业务总线矩阵即可。事实表存储在DWD层,维度表存储在DIM层。
维度表包含:时间:时间、场:医院、科室、人:医生、护士、患者、行政人员、货:号源、三目录(药品、诊疗、医用材料)、疾病、手术、护理信息表(输液、灌肠、消毒等)、优惠卷。
5、事实表提取(业务梳理提取)
6、维度表设计
无法完全展示,有需要可以咨询附件。
7、事实表设计
挂号域-明细事实表
医疗过程域-明细事实表
费用域-明细事实表
用户域-明细事实表
互动域-明细事实表
工具域-明细事实表