医疗数据之数据仓库的创建

在之前开篇及数据仓库的方案中,我都提及到数据仓库对于管理型的数据(或对于BI系统)是至关重要的,所以这篇就分享一下我在实际工作中怎么创建数据仓库的,如有不足之处,请指正。

首先,我们要理解一下数据库与数据仓库的区别:

数据库:是一种逻辑概念,是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合;

数据仓库:是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合,是出于分析性报告和决策支持目的而创建。数据仓库的特征在于面向主题、集成性、稳定性和时变性。

它们两的主要区别在于:数据库是面向事务的设计,数据仓库是面向主题设计的;数据库一般存储在线交易数据,数据仓库存储的一般是历史数据(一般情况下数据仓库的数据原则上是不可修改);数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,而数据仓库在设计是有意引入冗余,采用反范式的方式来设计;数据库是为捕获数据而设计,数据仓库是为分析数据而设计。通过下面的表格对比两个概念的区别:

                            数据库与数据仓库的主要区别

从上面的分析可以看出,虽然都是存储数据,但是两者面对的对象与作用是不一样的,所以在项目上,数据仓库的创建,我是从“主题”这个方面来展开。

首先,要确定主题域(主题域是对某个主题进行分析后确定的主题边界),主题域的确定我是从人、财、物三个方面考虑。人:可以分为患者跟职员两部分,患者又可以细分为住院患者、门诊患者、体检人员、工作量、流程监控优化等;财:可以从收入、支出两大部分去细分;物:主要是针对固定资产、设备效益分析、耗材闭环管理、处方、病历等。

                                                                  主题分析

其次,主题域确定好后,需要对每一个域进一步分解、细化,结合业务流程或管理层的需求,最终形成具体的分析主题。我在实际设计过程中,形成的主要分析主题列表(部分)如下图:

                                                                                           主题列表

当主题定义好之后,数据仓库中的逻辑模型也就基本成形了。接下来就是要确定每个主题的具体内容,即向主题里面增加所需要的信息和能充分代表主题的属性组,其实就是定义主题的每个字段,我以“门诊挂号主题”为例,根据实际需求,设计的字段如下表:

                                                                                                 挂号主题

每个主题设计好字段后,就形成了初步的数据仓库了,接下来的一步,就是往这些主题填充数据,也就是ETL(抽取、转换、加载)的过程,在项目上,所有主题的ETL代码是自己完成的,当然如果有第三方公司的数据导入数据仓库中,一般处理方案是让第三方公司提供原始的明细数据(可以webServer、视图等方式提供数据),然后通过Kettle工具把每天的数据定时加载到数据仓库中,这个属于另外一个流程或知识点了,此处就不详细展开讲,如有必要,后面再写一篇文章分享第三方公司数据加载到数据仓库的方案。下图为本项目ETL代码:

                                                                                         主题数据导入ETL代码

数据仓库填满数据后,通过BI工具,进行数据分析或数据的可视化开发,这一个知识点也不在此篇文章展开细说,后面我再写一篇关于做界面展示的相关内容。整体的一个数据仓库创建流程如下图所示:

                                                              数据仓库创建流程

说明:

1、生产库:业务厂商的生产数据库;

2、接口设计:根据医院的需求,各厂商根据自身系统的情况,提供数据接口(可以是视图、表、Excel文档等形式);

3、ETL工具:编写ETL代码,或是借助成熟的ELT工具,例如:Kettle,然后按新的数据协议,将有价值的数据保存在数据仓库中;

4、决策支持系统:通过BI工具,进行数据分析或数据的可视化开发,最后通过“决策支持系统”展现给管理者。

发布了4 篇原创文章 · 获赞 37 · 访问量 2279

猜你喜欢

转载自blog.csdn.net/zeng_sily/article/details/105335215