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