醫療數據之數據倉庫的創建

在之前開篇及數據倉庫的方案中,我都提及到數據倉庫對於管理型的數據(或對於BI系統)是至關重要的,所以這篇就分享一下我在實際工作中怎麼創建數據倉庫的,如有不足之處,請指正。

首先,我們要理解一下數據庫與數據倉庫的區別:

數據庫:是一種邏輯概念,是“按照數據結構來組織、存儲和管理數據的倉庫”。是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合;

數據倉庫:是爲企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合,是出於分析性報告和決策支持目的而創建。數據倉庫的特徵在於面向主題、集成性、穩定性和時變性。

它們兩的主要區別在於:數據庫是面向事務的設計,數據倉庫是面向主題設計的;數據庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據(一般情況下數據倉庫的數據原則上是不可修改);數據庫設計是儘量避免冗餘,一般採用符合範式的規則來設計,而數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計;數據庫是爲捕獲數據而設計,數據倉庫是爲分析數據而設計。通過下面的表格對比兩個概念的區別:

                            數據庫與數據倉庫的主要區別

從上面的分析可以看出,雖然都是存儲數據,但是兩者面對的對象與作用是不一樣的,所以在項目上,數據倉庫的創建,我是從“主題”這個方面來展開。

首先,要確定主題域(主題域是對某個主題進行分析後確定的主題邊界),主題域的確定我是從人、財、物三個方面考慮。人:可以分爲患者跟職員兩部分,患者又可以細分爲住院患者、門診患者、體檢人員、工作量、流程監控優化等;財:可以從收入、支出兩大部分去細分;物:主要是針對固定資產、設備效益分析、耗材閉環管理、處方、病歷等。

                                                                  主題分析

其次,主題域確定好後,需要對每一個域進一步分解、細化,結合業務流程或管理層的需求,最終形成具體的分析主題。我在實際設計過程中,形成的主要分析主題列表(部分)如下圖:

                                                                                           主題列表

當主題定義好之後,數據倉庫中的邏輯模型也就基本成形了。接下來就是要確定每個主題的具體內容,即向主題裏面增加所需要的信息和能充分代表主題的屬性組,其實就是定義主題的每個字段,我以“門診掛號主題”爲例,根據實際需求,設計的字段如下表:

                                                                                                 掛號主題

每個主題設計好字段後,就形成了初步的數據倉庫了,接下來的一步,就是往這些主題填充數據,也就是ETL(抽取、轉換、加載)的過程,在項目上,所有主題的ETL代碼是自己完成的,當然如果有第三方公司的數據導入數據倉庫中,一般處理方案是讓第三方公司提供原始的明細數據(可以webServer、視圖等方式提供數據),然後通過Kettle工具把每天的數據定時加載到數據倉庫中,這個屬於另外一個流程或知識點了,此處就不詳細展開講,如有必要,後面再寫一篇文章分享第三方公司數據加載到數據倉庫的方案。下圖爲本項目ETL代碼:

                                                                                         主題數據導入ETL代碼

數據倉庫填滿數據後,通過BI工具,進行數據分析或數據的可視化開發,這一個知識點也不在此篇文章展開細說,後面我再寫一篇關於做界面展示的相關內容。整體的一個數據倉庫創建流程如下圖所示:

                                                              數據倉庫創建流程

說明:

1、生產庫:業務廠商的生產數據庫;

2、接口設計:根據醫院的需求,各廠商根據自身系統的情況,提供數據接口(可以是視圖、表、Excel文檔等形式);

3、ETL工具:編寫ETL代碼,或是藉助成熟的ELT工具,例如:Kettle,然後按新的數據協議,將有價值的數據保存在數據倉庫中;

4、決策支持系統:通過BI工具,進行數據分析或數據的可視化開發,最後通過“決策支持系統”展現給管理者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章