李鵬泉 黃碧香 陳粵寧
(中國人民解放軍聯(lián)勤保障部隊第九二三醫(yī)院信息科 南寧 530021)
近年來隨著醫(yī)療信息化快速發(fā)展,醫(yī)療數據日益復雜多樣,醫(yī)療服務質量要求不斷提升。醫(yī)院信息系統(tǒng)之間缺乏互聯(lián)互通、數據共享,導致醫(yī)院醫(yī)療質量管控效果不佳。海量醫(yī)療數據亟需大數據技術支撐,挖掘潛在價值,提升醫(yī)療管理質量。隨著大數據技術引入醫(yī)學領域,通過模型分析和數據分析發(fā)現(xiàn)醫(yī)療決策中的規(guī)律[1],為醫(yī)院決策者和醫(yī)務人員提供重要數據支持[2]。呂道明[3]通過Hadoop平臺將醫(yī)院臨床數據整合實現(xiàn)各數據互連互通。朱甜甜[4]運用Hadoop平臺與數據挖掘技術對腫瘤數據進行分析挖掘,獲得肺癌與致病因素的關系。馬驍[5]通過Hadoop技術在集群上分析醫(yī)療數據生命周期,有效提升存儲設備的存儲能力。本文從提升醫(yī)院醫(yī)療質量管控角度出發(fā),設計基于Hadoop架構的醫(yī)療管控系統(tǒng)。
醫(yī)療數據具有體量大、多樣性等特征,其數據分析沒有得到充分利用[6]。例如醫(yī)院的藥占比、收入情況、病種分布情況等得不到及時查詢,主要原因是缺少一套能夠實時查詢科室、治療過程關鍵數據并能進行數據分析的系統(tǒng),無法迅速做出調整。只能使用結構化查詢語言(Structured Query Language,SQL)查詢提供簡單報表,其時效性不高且數據分析質量存在不足[7]。需要構建醫(yī)院大數據平臺并在一定程度上實現(xiàn)數據整合、統(tǒng)計分析及報表導出功能[8]。
Hadoop是分布式系統(tǒng)的一種基礎架構[9],是大數據分析平臺常用開源架構,其特點是對海量數據進行分布式管理與存儲。Hadoop技術已成為頂級公司的分布式系統(tǒng)架構首選。Hadoop具有以下優(yōu)點[10]:高可靠性[11]、高可擴展性、高效性;成本低,可以采用普通PC機構建集群,不需要購買小型機、刀片服務器等較昂貴的設備。系統(tǒng)開發(fā)使用Java語言、J2EE技術,結合SSM(Spring+SpringMVC+Mybatis)開發(fā)模式,確保良好兼容性。
利用大數據及智能設備技術將醫(yī)療數據轉換成管理人員需要的醫(yī)療指標,提供線上線下相結合的公眾健康服務,為領導層、醫(yī)生等提供輔助決策,滿足相關人員多層次、多方位的需求。將現(xiàn)有和歷史醫(yī)療數據盤活,開展有價值的數據分析。系統(tǒng)應集成數據中心,提供高并發(fā)、高并行的讀寫和計算能力[12]。每日產生新增數據,數據中心對歷史數據進行采集[13]。充分利用醫(yī)院現(xiàn)有數據,融合既往指標,開展醫(yī)院精細化管理[14]。
3.1.1 數據層 主要是通過Sqoop采集相關數據,將醫(yī)院信息系統(tǒng)(Hospital Information System,HIS)歷史數據導入,采用分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)對HIS數據進行分布式存儲[15]。HIS數據可分為兩類:一類是常年積累的歷史數據,一類是業(yè)務查詢數據。
3.1.2 控制層 主要是利用MapReduce對離線數據進行預處理、分析、離線計算?;颊哚t(yī)療費用數據分析和挖掘通常在Map函數和Reduce函數中執(zhí)行,最終執(zhí)行結果供應用層使用。
3.1.3 應用層 對數據整理結果進行可視化呈現(xiàn)。要做好接口工作、前后端數據交互,使用可視化工具Echarts,系統(tǒng)結合SSM框架,采用模型-視圖-控制器(Model View Controller,MVC)開發(fā)模式,實現(xiàn)數據信息的傳輸和查詢,見圖1。
圖1 數據處理框架
3.2.1 數據采集 通過Sqoop組件對HIS數據庫中患者費用、醫(yī)囑等相關數據進行采集。Sqoop第1次為全量采集,之后每天01:00定時導入增量數據并將其存放在HDFS中。
3.2.2 數據預處理 通過Sqoop導入的HIS數據存在不完整、不一致情況,為提高醫(yī)療數據分析質量,保證后續(xù)處理數據格式統(tǒng)一,獲得規(guī)則的結構化數據,必須進行數據預處理。本系統(tǒng)使用MapReduce對元數據進行預處理,具有以下優(yōu)勢:一是MapReduce應用Java語言開發(fā),熟悉度較高;二是MapReduce的分布式計算方式并發(fā)處理效率高。
3.2.3 數據入庫 將預處理好的結構化數據導入數據倉庫Hive。使用MapReduce進行數據分析效率不高,且寫代碼工作量巨大,因此使用HiveQL對相關數據進行分析。數據入庫主要步驟如下:從數據源導入數據到數據倉庫的操作數據存儲(Operational Data Store,ODS)層(源數據),數據經過提取、轉換、加載(Extract-Transform-Load,ETL)到數據倉庫(Data Warehouse,DW)層并確定分析主題,基于主題尋找相關聯(lián)事實表數據,根據業(yè)務需求確定分析維度,對數據進行采集、預處理,再把數據填充到數據倉庫創(chuàng)建好的事實表中并映射成功,展開后續(xù)分析工作。
3.2.4 數據分析 將數據映射成Hive當中的表,根據業(yè)務需求、業(yè)務指標編寫相關HiveQL,分析計算出需要的指標和結果。所編寫HiveQL分析語句被Hive編譯成MapReduce任務提交到Hadoop的YARN上運行。數據分析是根據業(yè)務需求分析提供的指標在系統(tǒng)中不斷更新、維護的過程,根據需求編寫HiveQL。
3.2.5 數據可視化 使用圖形表格的形式將分析結果和規(guī)律進行展示,也可稱為數據報表。HiveQL分析結果通過Sqoop導出到HIS的Oracle數據庫,數據導出到持久層,使用前端可視化工具Echarts對分析結果做報表。Echarts屬于前端技術開發(fā)的基于Javascript的可視化工具。根據數據分析的需求選擇創(chuàng)建折線圖、餅狀圖、柱狀圖等多圖表混合展示。
使用Maven的Tomcat插件啟動項目,將導出在Oracle的數據按照需要的格式查詢返回給前端。當用戶使用瀏覽器訪問頁面發(fā)起請求,請求被表現(xiàn)層接收,再調用業(yè)務層,對具體業(yè)務進行操作,持久層對數據進行增刪改查,確保業(yè)務落實在數據庫中。醫(yī)院的Oracle數據創(chuàng)建好相應數據庫表,數據倉庫Hive將數據分析結果通過Sqoop導入Oracle存儲。DAO層即可訪問Oracle中的數據分析結果,返回給業(yè)務層,業(yè)務層對相關數據進行轉換調整返回給表現(xiàn)層,最后展示在瀏覽器。在表現(xiàn)層使用SpringMVC,業(yè)務層使用Spring及其生態(tài)圈,持久層使用Mybatis,見圖2。
圖2 后端Web架構設計
3.4.1 整體架構 基于Hadoop的醫(yī)院管控系統(tǒng)主要分為4個功能模塊,見圖3。
圖3 系統(tǒng)結構
3.4.2 功能分析 (1)藥占比分析。查看全院上周、上月、上季度、上一年的藥占比趨勢;查詢目前全院、某個科室藥品使用比例;能夠按時間粒度查詢;查詢個人藥品總費用、西藥和中藥占比;能夠下載打印報表。(2)材料占比分析。查看全院上周、上月、上季度、上一年耗材占比趨勢;查詢目前全院、某個科室、個人耗材使用占比;能夠按時間粒度查詢,比較今年與去年的耗材占比;能夠下載打印報表。(3)平均住院日分析。查看全院和各臨床科室平均住院日,對科室今年趨勢與去年同一時期比較,可設置目標平均住院日。(4)抗菌藥物使用率分析。查看全院以及所有科室抗菌藥物使用率,今年跟去年同一時期趨勢比較;能夠按住院號、藥物名稱、日期時間檢索;查看在院和出院情況;查看抗菌藥物使用率、醫(yī)生排名和藥物排名。(5)收入結構分析。查看全院和各科室總收入情況,科室今年趨勢與去年同一時期比較,收入匯總包括總收入、純收入、住院總收入、門診總收入。(6)手術等級結構分析。查看全院和各科室手術等級結構,包括手術例數、1級手術例數、2級手術例數、3級手術例數、4級手術例數、3級以上手術率。(7)病種結構分布分析。查看單病種患者在各科室分布情況,統(tǒng)計全院病種總例數,統(tǒng)計病種名稱分布。(8)出院例數分析。查看全院和各臨床科室出院例數情況,科室今年趨勢與去年同一時期比較。(9)手術例數分析。查看全院周次手術例數變化和上周、上月、上季度手術例數,同比和環(huán)比變化。(10)床位使用率分析。查看全院或臨床科室床位使用率情況,信息包括床位使用率、床位周轉數、實際床位工作日、實際平均床位工作日。
系統(tǒng)數據分析模塊應用Hadoop技術,搭建環(huán)境為醫(yī)院網絡中心,數據源基于醫(yī)院HIS平臺Oracle數據庫。醫(yī)院中心機房已實現(xiàn)虛擬化管理,光纖交換機和存儲等設備已相互連接,只需使用管理集群虛擬化軟件Vmvare vCenter Server分配資源、創(chuàng)建服務器即可。
安裝3臺虛擬機Linux CentOS7操作系統(tǒng),主服務器1臺作為Namenode主節(jié)點,兩臺Datanode為從節(jié)點,見表1。安裝JDK8u161、Hadoop 2.7.4、Hive 2.1.1、Sqoop等關鍵組件,開啟服務,對HIS數據庫數據抽取測試。Oracle數據庫與HDFS、Hive之間導入導出主要通過Sqoop組件完成。
表1 集群配置信息
在系統(tǒng)首頁導航中可以清晰看到全院住院藥占比、耗材比、抗菌藥物使用率、床位使用率、當天手術例數、出院人數、平均住院日、總收入等關鍵數據。
用戶可以選擇以周、季度、年為時間單位查看全院各臨床科室藥占比趨勢分析。過度醫(yī)療或者高額醫(yī)療費用通常都是在用藥部分占較大比例,應合理管控各住院科室藥占比,避免出現(xiàn)天價藥費情況。同時對藥占比較為突出的科室進行整頓或者經濟處罰,使管理層有據可依、獎罰分明。
可對比分析今年和去年抗菌藥物使用率。濫用抗菌藥物會引發(fā)患者產生耐藥性、菌群失調、身體不良反應等危害。系統(tǒng)對濫用抗菌藥物提供數據支撐[16],幫助醫(yī)院嚴格管控抗菌藥物使用。
近年來開始實施按病種收付費用,效果并不理想,符合病種付費標準的患者費用差異較大。病種分布餅狀圖和條形圖幫助管理者了解各病種患者數量和病種的占比率,圖形顯示包括疾病名稱、患者例數、病種百分比。
床位使用率=實際使用床位數/實際床數。床位使用率分析界面反映的是床位使用情況和負荷情況。顯示內容包括科室名稱、床位使用率、床位周轉次數、實際床位工作日、實際平均床位工作日。
傳統(tǒng)方式主要依靠統(tǒng)計人員經驗或簡單的查詢系統(tǒng)統(tǒng)計臨床指標,針對多個部門需要做不同報表,時效性難以保證,難以得到滿意的結果。大數據醫(yī)療質量管控平臺硬件投資成本較低,多層次處理和自動負載均衡,自動收集、清洗、轉換所需數據保存到大數據平臺數據倉庫中。提供完整的數據信息鏈處理和深度數據挖掘,智能化信息交互和工作協(xié)同體系,操作便捷快速,可檢索所需的結果、打印報表。同時大數據醫(yī)療質量管控平臺能夠將所有醫(yī)療指標分類排列,根據不同角色人員靈活分配所需數據指標,還能夠在系統(tǒng)中對所選指標窗口自由布局,滿足不同用戶瀏覽習慣。醫(yī)療管控平臺充分整合和挖掘醫(yī)院歷史數據,從多個角度對運營指標進行全方位、精細化管控,改變傳統(tǒng)、簡單的管控模式,美觀、高質量的數據圖表有效輔助醫(yī)院管理決策,加強了醫(yī)療質量管控。
醫(yī)療質量管控系統(tǒng)應用能夠及時監(jiān)控醫(yī)院藥占比、耗材占比、抗菌藥物使用率等關鍵數據。對病種結構、平均住院日、床位使用率、出院例數、手術例數分析等能夠輔助醫(yī)院管理層做決策。系統(tǒng)能夠滿足醫(yī)院醫(yī)療質量管理需求。隨著大數據技術日益成熟,基于Hadoop架構難以充分滿足數據檢索查詢速度需要,而基于Spark內存的批處理模式要比MapReduce更加高效,今后將引入Spark框架提升系統(tǒng)運行效率。