基于Hadoop的智能醫(yī)療分析系統(tǒng)的設(shè)計研究
引言
當(dāng)今的醫(yī)療系統(tǒng)有醫(yī)院強大的治療康復(fù)系統(tǒng)支撐。大型醫(yī)院有著種類繁多和復(fù)雜的病癥分類和科室劃分,它們?yōu)椴∪颂峁┝嗽敿?xì)專業(yè)的治療方案、醫(yī)療設(shè)備和康復(fù)場所。但是,完善的醫(yī)療系統(tǒng)還需求具有智能分析病情的能力,這是智能醫(yī)療希望達到的。隨著物聯(lián)網(wǎng)、云計算和其他相關(guān)技術(shù)的不斷發(fā)展,提供具有這些能力的系統(tǒng)平臺已經(jīng)成為可能。
基于上述智能醫(yī)療系統(tǒng)的需求問題,本文設(shè)計了這樣的一個醫(yī)療信息化分析系統(tǒng):不論是在醫(yī)院還是在家中,患者都可以通過移動智能終端或傳感設(shè)備和儀器,將身體狀況和相關(guān)信息通過互聯(lián)網(wǎng)傳輸?shù)竭h(yuǎn)程服務(wù)器。這些信息在實現(xiàn)了云計算功能的Hadoop集群中處理,得出分析結(jié)果存入數(shù)據(jù)庫。相關(guān)的醫(yī)護人員可以隨時隨地了解病人的各種信息,并對患者的醫(yī)療方案作出調(diào)整和更新。患者也可以登陸系統(tǒng)了解自己的健康狀況。
1系統(tǒng)設(shè)計思路
本系統(tǒng)從功能上可分為三大部分,分別是收集患者信息的數(shù)據(jù)收集部分、處理數(shù)據(jù)的分布式集群部分和用戶交互部分。
系統(tǒng)不僅要求能在醫(yī)院里收集患者的生理數(shù)據(jù),還需要能在患者家中收集數(shù)據(jù)。隨著醫(yī)療技術(shù)的快速發(fā)展,各種智能醫(yī)療設(shè)備層出不窮。如使用RFID技術(shù)的智能手腕、智能臂腕提供了血壓、體溫、脈搏、葡萄糖含量等多項人體生理指標(biāo)的檢測功能。本系統(tǒng)的設(shè)計思路是:利用智能醫(yī)療設(shè)備收集信息然后通過無線網(wǎng)絡(luò)上傳到服務(wù)器?,F(xiàn)如今的家庭中,Wi-Fi普及相當(dāng)?shù)母撸虼?,不論是在醫(yī)院還是在家中,都可以對患者身體狀況信息進行收集。
在分布式集群中,通過對患者生理數(shù)據(jù)的分析得出智能分析結(jié)果,給醫(yī)護人員提供病因參考。需要在搜集大量的患者的各項生理數(shù)據(jù)后作出最準(zhǔn)確的分析。本系統(tǒng)使用Hadoop集群分析處理數(shù)據(jù)。Hadoop是適合大數(shù)據(jù)的分布式存儲與計算平臺,應(yīng)用于各大IT電商網(wǎng)站的海量數(shù)據(jù)處理系統(tǒng),被證明是非常成功的框架平臺。處理完的數(shù)據(jù)結(jié)果將存入傳統(tǒng)數(shù)據(jù)庫中。
本系統(tǒng)用戶端使用B/S架構(gòu)(瀏覽器/服務(wù)器)開發(fā)。對于B/S架構(gòu)來說,只要是有網(wǎng)絡(luò)的地方,就可以通過計算機、智能手機和其他終端隨時掌握患者的信息。圖1所示是本系統(tǒng)的整個模型圖。
基于系統(tǒng)模型可對系統(tǒng)進一步細(xì)分。在醫(yī)院,系統(tǒng)具有錄入患者、收集病房患者信息,并將信息反映給醫(yī)生護士以作出相應(yīng)治療方案的功能。其中信息采集部分,使用基于物聯(lián)網(wǎng)技術(shù)的傳感器和各種智能醫(yī)療設(shè)備作為主要的收集設(shè)備,傳感器將收集到的數(shù)據(jù)通過網(wǎng)絡(luò)上傳到數(shù)據(jù)庫。根據(jù)實際的需求,可以對傳感器收集的數(shù)據(jù)進行細(xì)致的安排,例如記錄患者體溫特征的時間、頻次,監(jiān)測患者的用藥量。遠(yuǎn)端的服務(wù)器集群對收集到的數(shù)據(jù)進行處理,其中用來分析處理數(shù)據(jù)的是Hadoop集群,數(shù)據(jù)在集群上處理之后回傳給數(shù)據(jù)庫以便于呈現(xiàn)給用戶。對于在家治療康復(fù)的患者,可使用智能手腕等智能醫(yī)療設(shè)備獲取身體狀況,并通過家庭Wi-Fi網(wǎng)絡(luò)將數(shù)據(jù)上傳給系統(tǒng)服務(wù)器。這樣,患者登陸系統(tǒng),就可以查詢自己的病況、智能病因分析和醫(yī)囑等信息。
根據(jù)系統(tǒng)需求可以設(shè)計出系統(tǒng)網(wǎng)絡(luò)架構(gòu),圖2所示是系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖。
2相關(guān)核心技術(shù)
2.1智能醫(yī)療
智能醫(yī)療是物聯(lián)網(wǎng)的重要研究領(lǐng)域,通過打造健康檔案區(qū)域醫(yī)療信息平臺,就可以利用最先進的物聯(lián)網(wǎng)技術(shù),實現(xiàn)患者與醫(yī)務(wù)人員、醫(yī)療機構(gòu)、醫(yī)療設(shè)備之間的互動,逐步達到信息化。通過電子醫(yī)療和RFID物聯(lián)網(wǎng)技術(shù)能夠使大量的醫(yī)療監(jiān)護工作實施無線化,而遠(yuǎn)程醫(yī)療和自助醫(yī)療信息則可及時采集和高度共享,并可緩解資源短缺、資源分配不均的窘境,降低公眾的醫(yī)療成本。
2.2物聯(lián)網(wǎng)
物聯(lián)網(wǎng)的英文全稱是“TheInternetofthings”,顧名思義,物聯(lián)網(wǎng)是物物相連的互聯(lián)網(wǎng),它是一個基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)的信息承載體。國際電信聯(lián)盟(ITU)對物聯(lián)網(wǎng)做了如下定義:通過二維碼識讀設(shè)備、射頻識別(RFID)裝置、紅外感應(yīng)器、全球定位系統(tǒng)和激光掃描器等信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相連接,進行信息交換和通信,以實現(xiàn)智能化識別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)。
2.3云計算和Hadoop
云計算是一種商業(yè)計算模式,它將計算任務(wù)分布在大量計算構(gòu)成的資源池上,使用戶能夠按需獲取計算力、存儲空間和信息服務(wù)。云計算是網(wǎng)格計算、分布式計算、并行計算等關(guān)鍵技術(shù)日趨成熟后催生的一種新的服務(wù)模式,非常適合海量數(shù)據(jù)的分析處理。
目前應(yīng)用最廣泛的云計算平臺是Hadoop。Hadoop來源于Google公司的分布式文件系統(tǒng)和計算模型的開源實現(xiàn),是Apache開源組織的一個分布式計算框架,可以在大量廉價的硬件設(shè)備組成的集群上運行應(yīng)用程序。Hadoop的核心是HDFS和MapReduce。HDFS是Hadoop的分布式文件系統(tǒng),用來存儲數(shù)據(jù);MapReduce是一種并行計算框架,提供有處理海量數(shù)據(jù)的并行模型。MapReduce能夠把應(yīng)用程序分割成許多小的工作單元,并把這些單元放到任何集群節(jié)點上執(zhí)行。并具有可擴展、經(jīng)濟、可靠、高效等特點。
3 系統(tǒng)具體設(shè)計研究
3.1 系統(tǒng)設(shè)計
負(fù)責(zé)數(shù)據(jù)信息收集的部分,可使用傳感器等設(shè)備收集,并將數(shù)據(jù)通過網(wǎng)絡(luò)上傳到數(shù)據(jù)庫服務(wù)器進行存儲 ;給醫(yī)護人員提供處理平臺的部分可使用 B/S 架構(gòu)建立的前端到后臺到數(shù)據(jù)庫的信息管理系統(tǒng) ;患者同樣能夠使用計算機或智能手機登陸該系統(tǒng)來查詢自己的健康狀況。
醫(yī)生或護士等相關(guān)醫(yī)護人員也可通過使用瀏覽器登陸管理系統(tǒng),對患者的個人信息、用藥情況、醫(yī)療費用、實時狀態(tài)等信息進行處理。根據(jù)職務(wù)的不同,相應(yīng)人員能完成的操作也有所不同。表 1 示列是其各職位的職員所能完成的主要功能和事務(wù)。
本系統(tǒng)中,不同的職務(wù)擁有不同的權(quán)限,需要通過后臺 代碼實現(xiàn)事務(wù)區(qū)分?;颊咄瑯涌梢缘卿浽撓到y(tǒng),來查看目前自 己的身體健康等級、智能診斷結(jié)果、醫(yī)囑和預(yù)約看病等。
3.2系統(tǒng)框架設(shè)計研究
系統(tǒng)的核心是后臺 SSH (Struts2+Hibernate+Spring)框 架部分和數(shù)據(jù)分析的設(shè)計實現(xiàn)?;赟SH框架的信息管理部 分分為數(shù)據(jù)庫、前臺頁面和后臺代碼三部分。
3.2.1數(shù)據(jù)庫的設(shè)計
在系統(tǒng)的開發(fā)階段,使用MySQL關(guān)系型數(shù)據(jù)庫作為系 統(tǒng)數(shù)據(jù)庫。MySQL具有的體積小、速度快、開源、使用成本 低等特點,可以很好地支持企業(yè)級系統(tǒng)的開發(fā)。
針對信息分析系統(tǒng)的特點,根據(jù)用戶職務(wù)、病人和終端的 分類,設(shè)計了一系列的關(guān)系數(shù)據(jù)表。每個實體類都對應(yīng)數(shù)據(jù)庫 中的一張表,且各表都有一定的關(guān)聯(lián)關(guān)系,例如,病人表中主 治醫(yī)生的ID號是來自于醫(yī)生表中的醫(yī)生ID號,病床表的病 房號來自病床表的ID號。圖3給出了幾張主要表的數(shù)據(jù)關(guān)系 模型圖。其中生理數(shù)據(jù)等表中的數(shù)據(jù)將被傳入Hadoop集群進 行分析處理,并得出智能分析結(jié)果。
3.2.2后臺服務(wù)器的代碼設(shè)計
系統(tǒng)后臺服務(wù)器使用Tomcat作為Web服務(wù)器。Tomcat 是一個開源的Web應(yīng)用服務(wù)器,其運行時占用的系統(tǒng)資源小, 擴展性好,能支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的 功能。
針對系統(tǒng)的需求和SSH框架標(biāo)準(zhǔn),將系統(tǒng)后臺代碼可分 為下面8個包:
filter : session 檢測
action :業(yè)務(wù)控制
action.authority :權(quán)限控制
dao :持久層接口
dao.impl:持久層的實現(xiàn)
service :業(yè)務(wù)邏輯層接口 service.impl:業(yè)務(wù)邏輯層的實現(xiàn) model:領(lǐng)域?qū)ο髮?
系統(tǒng)的基礎(chǔ)配置在XML文件中進行。代碼具體實現(xiàn)一 般先從領(lǐng)域?qū)ο髮又郑来蜗蛏暇帉懲瓿筛鲗拥拇a,這 樣有利提高開發(fā)效率。
后臺代碼中,最重要的就是權(quán)限控制,這可使用Struts 框架的攔截器機制實現(xiàn)。其核心代碼如下:
ActionContext ctx = ActionContext.getContext ();
String usrNo = (String) (ctx.getSession () .get ("usrNo") +""):
String acces =( String)(ctx.getSession() .get("acces") +"");
if (usrNo!= null&&acces.equals (LOGED))
{return invocation.invoke();}
return Action.LOGIN ;
3.3基于Hadoop的數(shù)據(jù)分析的設(shè)計研究
系統(tǒng)的另一個核心部分是數(shù)據(jù)分析研究。設(shè)計思路是將 數(shù)據(jù)上傳到Hadopp集群,通過MapReduce分析計算,得出 處理后數(shù)據(jù),并存入數(shù)據(jù)庫中。
在系統(tǒng)中,數(shù)據(jù)通過傳感器和智能醫(yī)療設(shè)備收集,然后 通過網(wǎng)絡(luò)上傳到數(shù)據(jù)庫服務(wù)器。在對患者做出智能分析時, 系統(tǒng)將選取指定的某項生理數(shù)據(jù),導(dǎo)人Hadoop集群,并對數(shù) 據(jù)進行分析,得出結(jié)果。整個流程如圖4所示。
在這個過程中,MapReduce是任務(wù)的核心。MapReduce 處理數(shù)據(jù)采用分而治之的思想,分布處理取得結(jié)果再將結(jié)果 匯總得出最終結(jié)果,即“過程的分解和結(jié)果的匯總”這個過程被高度抽象為兩個函數(shù):map和reduce,其中map負(fù)責(zé)把任務(wù)分解成多個任務(wù),reduce負(fù)責(zé)把分解后的多任務(wù)處理的結(jié)果匯總起來。
在本系統(tǒng)中,通過實現(xiàn)不同的MapReduce模型可達到 各種智能分析需求?,F(xiàn)以推測血糖是否超標(biāo)的智能分析為例, 血糖數(shù)據(jù)在經(jīng)過MapReduce的初步分片處理后作為參數(shù)后傳 入Map函數(shù),Map函數(shù)將血糖數(shù)據(jù)與正常標(biāo)準(zhǔn)進行對比,并 將超標(biāo)數(shù)據(jù)和對應(yīng)時間信息組成<Key, Value>對。其偽代碼 表示如下:
從分完片的參數(shù)中取出血糖數(shù)據(jù)存入數(shù)組B;
for (循環(huán)數(shù)組中的每個血糖數(shù)據(jù)b) {
if (血糖數(shù)據(jù)b >標(biāo)準(zhǔn)數(shù)值){
通過血糖數(shù)據(jù)b找到對應(yīng)的測量時間t ;
把測量時間t作為Key,血糖數(shù)據(jù)b作為Value,組
成<k, v>對;
將<k, v>存儲在context容器中;
}
}
經(jīng)過Map函數(shù)處理的數(shù)據(jù)將被輸送給Reduce函數(shù)做匯 總處理。在這個過程中,數(shù)據(jù)可以根據(jù)指定的方式進行排序 輸入到Reduce函數(shù),也可以根據(jù)自定的規(guī)則進行分區(qū)以決 定由幾個Reduce函數(shù)進行處理。從Map端輸入的血糖數(shù)據(jù) <k,v>對以時間先后作為排序標(biāo)準(zhǔn),輸入一個Reduce函數(shù)。 其偽代碼表示如下:
for (遍歷每個輸入的<k, v>對){
累加得到總的非正常血糖數(shù)據(jù)sum ;
}
計算得到總的時間跨度time ;
把time和sum作為一組新的<k, v>存入context容器;
Reduce處理后的數(shù)據(jù)即是最終需求的數(shù)據(jù),默認(rèn)以文檔 的形式輸出到HDFS文件系統(tǒng)中。借助Sqoop框架工具將數(shù) 據(jù)從HDFS中導(dǎo)出到傳統(tǒng)關(guān)系型數(shù)據(jù)庫中。用戶通過Web端 查看處理后的數(shù)據(jù),同操作一般B/S架構(gòu)系統(tǒng)一樣,不會感 受到差異。
使用MapReduce進行智能分析,具有自定義、擴展性強、 能處理海量數(shù)據(jù)等特點。針對不同生理數(shù)據(jù),通過編寫各異 的MapReduce程序,即可達到分析目的。當(dāng)患者的數(shù)量達到一定規(guī)模,而且需要處理的數(shù)據(jù)量很大時,系統(tǒng)將動態(tài)地向 Hadoop集群中增加節(jié)點以提高集群的處理能力。
4 結(jié) 語
智能醫(yī)療分析系統(tǒng)是目前醫(yī)療發(fā)展的一個重要內(nèi)容。本 文通過物聯(lián)網(wǎng)應(yīng)用,引入了多種智能終端,使用更有優(yōu)勢的 B/S架構(gòu)做開發(fā)。在后臺Web服務(wù)器的開發(fā)上則使用成熟的 SSH框架,為系統(tǒng)與用戶交互提供高效穩(wěn)定的保證。在系統(tǒng) 的核心智能診斷方面,使用了基于Hadoop的數(shù)據(jù)分析框架, 繼承了 Hadoop的高可靠、高擴展和高效特點,將來自患者的 各式生理數(shù)據(jù)并行地在分布式系統(tǒng)上進行處理,得出智能分 析結(jié)果。根據(jù)具體的病情,系統(tǒng)還能夠進行針對性的參數(shù)調(diào)整。 據(jù)此得出智能診斷結(jié)果能夠為醫(yī)護人員提供治療參考,也能為 患者提供康復(fù)建議。
20211222_61c2085632aee__基于Hadoop的智能醫(yī)療分析系統(tǒng)的設(shè)計研究