陸姍姍+謝龍龍+唐聰+趙子彰+林濤+石潤(rùn)華
摘要:遠(yuǎn)程醫(yī)療技術(shù)給人們的生活帶來(lái)巨大的便利,保護(hù)病患的隱私變得愈來(lái)愈重要。該文構(gòu)建了一套保護(hù)數(shù)據(jù)隱私的遠(yuǎn)程醫(yī)療查詢(xún)系統(tǒng),病患通過(guò)移動(dòng)終端將人體體征數(shù)據(jù)發(fā)送給遠(yuǎn)程服務(wù)器,醫(yī)生在獲取相應(yīng)的權(quán)限后,可通過(guò)web頁(yè)面查看到患者傳送的數(shù)據(jù)并將診斷結(jié)果反饋給移動(dòng)終端。病患敏感數(shù)據(jù)在傳輸和存儲(chǔ)過(guò)程中是以密文形式存在的,從而保證了數(shù)據(jù)的機(jī)密性。
關(guān)鍵詞:遠(yuǎn)程醫(yī)療:查詢(xún):隱私保護(hù)
近幾年,遠(yuǎn)程醫(yī)療技術(shù)隨著醫(yī)療市場(chǎng)的需求的增長(zhǎng)和信息技術(shù)的發(fā)展而蓬勃發(fā)展。遠(yuǎn)程醫(yī)療技術(shù)不僅不需要病患親自去醫(yī)院就診,并且輔助治療的同時(shí)可以在患者病情突然惡化時(shí)報(bào)警。另外,遠(yuǎn)程醫(yī)療可以用于日常對(duì)健康狀況的評(píng)估,及時(shí)發(fā)現(xiàn)疾病的早期癥狀,從而達(dá)到保健和預(yù)防疾病的目的。
1系統(tǒng)功能
保護(hù)隱私的遠(yuǎn)程醫(yī)療查詢(xún)系統(tǒng)分為手機(jī)端和Web(服務(wù))端。界面美觀,操作便捷。醫(yī)生和患者使用時(shí)都需要經(jīng)過(guò)身份驗(yàn)證,獲取自己的賬號(hào)后才能登錄系統(tǒng)。服務(wù)端對(duì)從患者那里接收到的數(shù)據(jù)進(jìn)行分析處理并通過(guò)Web頁(yè)面展示給醫(yī)生,最后把醫(yī)生所診斷的結(jié)果再傳輸?shù)揭苿?dòng)終端App供患者參考。
Android端主要是患者使用??梢詫?shí)現(xiàn)登錄、一鍵撥號(hào)、查詢(xún)天氣、定位、好友列表、從本地查看數(shù)據(jù)和從服務(wù)器查詢(xún)數(shù)據(jù)等功能,患者可以自主選擇是否上傳自己的個(gè)人信息(包括性別、年齡、心率、血壓等)。這些數(shù)據(jù)上傳至服務(wù)端,都會(huì)經(jīng)過(guò)可靠算法進(jìn)行加密。
Web服務(wù)器與后臺(tái)數(shù)據(jù)庫(kù)的搭建,以及實(shí)現(xiàn)數(shù)據(jù)共享。服務(wù)端經(jīng)過(guò)信息過(guò)濾將患者的生理數(shù)據(jù)等信息展示給合法登入Web端系統(tǒng)的醫(yī)生。醫(yī)生可通過(guò)Web頁(yè)面查看患者上傳的信息,根據(jù)相應(yīng)情況作出診斷后將結(jié)果反饋患者。醫(yī)生在注冊(cè)賬號(hào)前需要先完成對(duì)其身份的驗(yàn)證過(guò)程,通過(guò)身份驗(yàn)證后才可以注冊(cè)賬號(hào),登錄賬號(hào)后可以查看公告,和患者之間成為好友關(guān)系后,可以從好友列表中選擇該患者并與其進(jìn)行交流。
數(shù)據(jù)在發(fā)送前先對(duì)其加密,服務(wù)器接收到密文數(shù)據(jù)后,需要對(duì)數(shù)據(jù)進(jìn)行解密,才可以對(duì)數(shù)據(jù)內(nèi)容進(jìn)行進(jìn)一步的解析過(guò)程。數(shù)據(jù)庫(kù)中數(shù)據(jù)也是以密文形式存放的。攻擊者即使獲取了數(shù)據(jù)庫(kù)或者傳輸過(guò)程中的密文數(shù)據(jù),也無(wú)法解析其中內(nèi)容。
2系統(tǒng)設(shè)計(jì)
本系統(tǒng)使用JAVA程序開(kāi)發(fā),后臺(tái)用數(shù)據(jù)庫(kù)MySQL,采用基于MVC(即模型(model)一視圖(view)一控制器(controller))模式的查詢(xún)系統(tǒng),適合在WINDOWS操作系統(tǒng)中運(yùn)行。MVC的視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。
系統(tǒng)界面設(shè)計(jì)滿足醫(yī)生及病人進(jìn)入系統(tǒng)后,只需按步驟操作,就會(huì)使用此系統(tǒng),無(wú)需培訓(xùn)。系統(tǒng)設(shè)計(jì)共分為Android端設(shè)計(jì)、web端設(shè)計(jì)、服務(wù)器設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)以及加密算法設(shè)計(jì)五個(gè)模塊的設(shè)計(jì)。
2.1Android端設(shè)計(jì)
Android移動(dòng)終端結(jié)合了當(dāng)今移動(dòng)互聯(lián)時(shí)代的特征:移動(dòng)化,個(gè)性化,差異化,給用戶(hù)提供了諸多便捷,方便了用戶(hù)使用的同時(shí),還提高了傳統(tǒng)方式難以解決的效率問(wèn)題?;颊呖梢栽谧约旱腁ndroid手機(jī)上安裝此APP,將收集到的人體生理數(shù)據(jù)傳送給服務(wù)器,和醫(yī)生完成雙方互選后可以進(jìn)行對(duì)話并接收醫(yī)生反饋的診斷結(jié)果,患者可以從本地或者服務(wù)器端查詢(xún)數(shù)據(jù),另外還有天氣查詢(xún)、一鍵撥號(hào)、健康資訊等功能。詳細(xì)如圖1所示。
2.2 Web端設(shè)計(jì)
Web端主要用于醫(yī)生對(duì)遠(yuǎn)程的患者身體情況的監(jiān)測(cè),并及時(shí)將診斷結(jié)果反饋給移動(dòng)終端。web頁(yè)面采用jsp設(shè)計(jì)方式,頁(yè)面主要語(yǔ)言包括Html、Css、JavaScript和Java。其中Html構(gòu)造頁(yè)面結(jié)構(gòu),Css構(gòu)造頁(yè)面UI,JavaScript提交AJAX請(qǐng)求,處理頁(yè)面基本信息,一部分邏輯代碼使用Java實(shí)現(xiàn)。輔助性工具使用Jquery和EL表達(dá)式。
web端和服務(wù)器交互包括:1)提交表單,標(biāo)簽;2)超鏈接,主要用于標(biāo)簽;3)AJAX技術(shù),主要用于事件的觸發(fā)。
2.3服務(wù)器設(shè)計(jì)
在系統(tǒng)試運(yùn)行的時(shí)候使用的是Tomcat本地服務(wù)器。服務(wù)器端開(kāi)發(fā)語(yǔ)言是Java。和移動(dòng)端與Web端交互運(yùn)用的是Http協(xié)議,通過(guò)Request和Reponse進(jìn)行交互。其中Request:請(qǐng)求頭,封裝了請(qǐng)求的信息;Response:響應(yīng)頭,封裝了響應(yīng)的信息。
控制器有Servlet:主要控制器,攔截請(qǐng)求進(jìn)行邏輯處理,與數(shù)據(jù)庫(kù)進(jìn)行交互,是代碼實(shí)現(xiàn)的主要地方。Filter:能做到serv-let所能做的一切事情,主要用來(lái)統(tǒng)一全站編碼,請(qǐng)求攔截。Lis-tefler:監(jiān)聽(tīng)各種事件,主要用來(lái)進(jìn)行在線人數(shù)統(tǒng)計(jì)。
2.4數(shù)據(jù)庫(kù)設(shè)計(jì)
醫(yī)療查詢(xún)系統(tǒng)對(duì)數(shù)據(jù)庫(kù)服務(wù)器的性能要求很高,我們選用MySQL數(shù)據(jù)庫(kù)作為后臺(tái)數(shù)據(jù)庫(kù)開(kāi)發(fā)平臺(tái)。類(lèi)型為關(guān)系型數(shù)據(jù)庫(kù)。
設(shè)計(jì)的數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表:
分別是:公告列表,醫(yī)生賬號(hào)信息表,醫(yī)生基本信息表,好友關(guān)系表,留言消息表,病人賬號(hào)信息表,病人基本信息表,病人身體信息表,test,time測(cè)試用可以不寫(xiě)。
2.5加密算法設(shè)計(jì)
本項(xiàng)目的主要數(shù)據(jù)流向?yàn)椋篜S(個(gè)人服務(wù)器)端將收集到的人體生理數(shù)據(jù)加密~PS端將加密的數(shù)據(jù)傳輸?shù)組S端(遠(yuǎn)程醫(yī)療服務(wù)器)→MS端將數(shù)據(jù)解密→MS端將數(shù)據(jù)保存→PS端向申請(qǐng)MS端申請(qǐng)數(shù)據(jù)→MS端將數(shù)據(jù)加密→MS端將數(shù)據(jù)傳給PS端→PS端將數(shù)據(jù)解密。
該方案具有以下安全特性:
不可抵賴(lài)性:該方案中每一端都使用了自己的密鑰對(duì)散列值進(jìn)行了加密,當(dāng)有一方否認(rèn)自己進(jìn)行了數(shù)據(jù)傳輸可直接通過(guò)那一方的公鑰對(duì)密文進(jìn)行解密,再將得到的散列值與消息的散列值進(jìn)行對(duì)比,若一致則必為那一方進(jìn)行的傳輸。
強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的,在實(shí)現(xiàn)上是不可行的。
數(shù)據(jù)機(jī)密性:本方案采用的加密方式為RSA加密算法,其中PS端的密鑰只有PS自己知道,在自己私鑰不丟失的情況下,加密數(shù)據(jù)被破解理論上不可行。
數(shù)據(jù)完整性:通過(guò)使用MD5消息摘要算法能夠保證數(shù)據(jù)完整性,當(dāng)原始數(shù)據(jù)進(jìn)行哪怕1bit的改動(dòng),生成的消息摘要也會(huì)有非常大的差距。
3系統(tǒng)實(shí)現(xiàn)
系統(tǒng)支持醫(yī)生和患者遠(yuǎn)程操作,實(shí)現(xiàn)賬號(hào)注冊(cè)、身份驗(yàn)證、病人信息管理、醫(yī)生信息管理、醫(yī)生和患者建立好友關(guān)系、患者和醫(yī)生實(shí)時(shí)查詢(xún)生理數(shù)據(jù)信息、醫(yī)生實(shí)時(shí)反饋信息等功能。隱私保護(hù)及遠(yuǎn)程查詢(xún)是整個(gè)系統(tǒng)的兩大核心。由于系統(tǒng)中交互的數(shù)據(jù)涉及個(gè)人隱私,所以在通信過(guò)程中要實(shí)現(xiàn)隱私保護(hù)的目的。服務(wù)端對(duì)從患者那里接收到的數(shù)據(jù)進(jìn)行分析處理通過(guò)web頁(yè)面展示給醫(yī)生,最后把醫(yī)生所診斷的結(jié)果再傳輸?shù)揭苿?dòng)終端app供患者參考,讓人們可以時(shí)刻了解自身身體狀況,從而實(shí)現(xiàn)疾病預(yù)防和及時(shí)就醫(yī)的效果。
1)查詢(xún)功能實(shí)現(xiàn)
用戶(hù)查詢(xún)之前,會(huì)發(fā)生數(shù)據(jù)生成與數(shù)據(jù)實(shí)現(xiàn)過(guò)程。生成過(guò)程部分主要解釋存儲(chǔ)。生成的數(shù)據(jù)以Json的形式存人緩存,在App端展示數(shù)據(jù)時(shí),會(huì)解析Json數(shù)據(jù),得到具體某一項(xiàng)的數(shù)組,數(shù)組傳人折線圖控件會(huì)把數(shù)據(jù)展示出來(lái)。發(fā)送的時(shí)候直接發(fā)送Json即可。
經(jīng)過(guò)多次發(fā)送和生成數(shù)據(jù)后,APP端進(jìn)行清理,無(wú)法查看太久的數(shù)據(jù)。此時(shí)發(fā)送查詢(xún)請(qǐng)求,服務(wù)器返回同樣格式的Json數(shù)據(jù),進(jìn)行解析顯示結(jié)果即可。本地?cái)?shù)據(jù)(血壓數(shù)據(jù)、血糖數(shù)據(jù)、心率數(shù)據(jù))查詢(xún)實(shí)現(xiàn)界面如圖3所示。從遠(yuǎn)程服務(wù)器端查詢(xún)10天血糖和血壓結(jié)果數(shù)據(jù)如圖4所示。
21數(shù)據(jù)加密實(shí)現(xiàn)
系統(tǒng)使用RSA公鑰加密算法對(duì)傳輸數(shù)據(jù)進(jìn)行加密,服務(wù)器端用病患的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,病患端用私鑰解密密文數(shù)據(jù)。
4結(jié)束語(yǔ)
本項(xiàng)目搭建的這一套保護(hù)隱私的遠(yuǎn)程醫(yī)療查詢(xún)系統(tǒng)將病人的實(shí)時(shí)生理數(shù)據(jù)發(fā)送給醫(yī)療機(jī)構(gòu),接受專(zhuān)業(yè)醫(yī)師的專(zhuān)業(yè)分析,足不出戶(hù)就能享受專(zhuān)業(yè)的體檢服務(wù),既節(jié)約了時(shí)間又收獲了健康,同時(shí)嚴(yán)格對(duì)用戶(hù)的隱私信息進(jìn)行保密。