劉新龍++譚獻海
摘 要:針對糖尿病患者自我管理的需求,提出基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)設(shè)計方案。結(jié)合移動互聯(lián)網(wǎng)中信息交互的特點,探討移動互聯(lián)網(wǎng)中糖尿病醫(yī)療輔助系統(tǒng)的開發(fā)方法。介紹了系統(tǒng)架構(gòu)設(shè)計與客戶端設(shè)計,然后采用Java技術(shù)開發(fā)出Web服務(wù)器端、Android客戶端以及PC客戶端軟件。基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)已經(jīng)完成,結(jié)果表明解決問題的措施可行,系統(tǒng)為用戶提供了便利。
關(guān)鍵詞:糖尿病醫(yī)療;移動互聯(lián)網(wǎng);信息交互技術(shù);Android平臺
中圖分類號:TN915 文獻標(biāo)識碼:A 文章編號:2095-1302(2015)05-00-03
0 引 言
糖尿病是一種常見的慢性疾病,截止2009年,中國已經(jīng)成為僅次于印度的糖尿病第二大國,糖尿病患者達到4 315萬。在糖尿病防治過程中,需要自我檢測、用藥、飲食、運動以及醫(yī)患互動五個方面的密切配合才能達到良好效果。伴隨著無線通信技術(shù)的發(fā)展,基于移動互聯(lián)網(wǎng)的遠(yuǎn)程醫(yī)療技術(shù)得到快速發(fā)展,在慢性病防治領(lǐng)域發(fā)揮著重要作用[1-3]。
在移動醫(yī)療系統(tǒng)中,客戶端可以采用智能手機、平板電腦等移動設(shè)備,使用的操作系統(tǒng)包括Android、iOS和WindowsPhone,其中Android系統(tǒng)基于Linux系統(tǒng)內(nèi)核,是最具有移植性的移動設(shè)備操作系統(tǒng),得到了眾多開發(fā)廠商的支持。目前針對用戶需求和糖尿病防治的特點,研究基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療應(yīng)用的文章較少,糖尿病移動終端應(yīng)用多集中在提高糖尿病的認(rèn)知和糖尿病的管控上,沒有科學(xué)的糖尿病管理流程,沒有形成高效的管理模式??傮w來看糖尿病移動醫(yī)療技術(shù)還不成熟,還處在摸索階段[4-5]。
1 系統(tǒng)目標(biāo)及需求分析
本文從糖尿病預(yù)防特性入手,研究基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)及相關(guān)開發(fā)技術(shù),旨在提高醫(yī)療效率,使醫(yī)療服務(wù)流程標(biāo)準(zhǔn)化;降低基礎(chǔ)醫(yī)療服務(wù)門檻,將稀缺的醫(yī)護資源利用最大化;加強醫(yī)患溝通,滿足用戶在需要幫助時可隨時得到專業(yè)指導(dǎo)的心理。根據(jù)用戶需求,對系統(tǒng)進行分析,由以下工作組成:
(1)數(shù)據(jù)管理:注冊用戶可以向服務(wù)器端上傳個人的生理數(shù)據(jù)、查看個人電子病歷。
(2)統(tǒng)計分析:直觀顯示血壓、血糖等數(shù)據(jù),并且能對數(shù)據(jù)進行相關(guān)分析。
(3)教育指導(dǎo):系統(tǒng)可以向用戶提供具有針對性的診療信息。
(4)信息交互:醫(yī)護人員可以與患者進行實時的信息交互。
(5)信息反饋:社區(qū)醫(yī)生可以通過PC客戶端對病人進行初步篩選,制定相應(yīng)的隨訪計劃并給出針對性的診療方案。
2 系統(tǒng)的架構(gòu)設(shè)計
系統(tǒng)主要用戶由醫(yī)生和病人組成,這里的醫(yī)生與病人只是指人員身份,并非指病人成員一定患有糖尿病。未患糖尿病的人為了預(yù)防糖尿病也可以注冊,這類似于實際狀況中的病人去醫(yī)院就診,所以他的角色定義為病人。
系統(tǒng)整體架構(gòu)設(shè)計如圖1所示?;谝苿踊ヂ?lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)由服務(wù)器部分與客戶端部分組成。系統(tǒng)采用Tomcat作為Web服務(wù)器,響應(yīng)來自客戶端的各種請求,服務(wù)器端采用具有可擴展性的三層模式,即控制器層+業(yè)務(wù)邏輯層+DAO層結(jié)構(gòu)。服務(wù)器端控制器組件中的Servlet類負(fù)責(zé)與Android客戶端進行信息交互。客戶端軟件包括面向病人的移動客戶端和面向醫(yī)生的PC客戶端;移動客戶端基于Android平臺開發(fā);PC客戶端基于B/S模式開發(fā),醫(yī)生可以通過瀏覽器訪問系統(tǒng),并進行相應(yīng)操作。系統(tǒng)采用SQLServer2005數(shù)據(jù)庫存儲數(shù)據(jù)。
圖1 糖尿病醫(yī)療輔助系統(tǒng)總體架構(gòu)設(shè)計圖
系統(tǒng)開發(fā)框架如圖2所示。PC客戶端采用MVC模式開發(fā),Android客戶端通過Layout布局和Activity類實現(xiàn)用戶界面,通過HttpClient組件訪問服務(wù)器。服務(wù)器端的Servlet類負(fù)責(zé)接收客戶端請求,并返回處理結(jié)果。DAO層通過JDBC實現(xiàn)數(shù)據(jù)庫的更新與查詢操作。
圖2 系統(tǒng)開發(fā)框架
客戶端軟件由Android客戶端與PC客戶端組成,它功能結(jié)構(gòu)如圖3所示。
圖3 軟件功能結(jié)構(gòu)圖
3 系統(tǒng)核心功能的實現(xiàn)
3.1 XML文件在Android客戶端的應(yīng)用
醫(yī)護人員預(yù)先設(shè)定針對不同體征、不同年齡、不同病情人群的膳食、運動處方。由于XML文件獨立于軟硬件,可移植性強,因此采用XML文件存儲這些處方信息。Android客戶端只需要解析這些XML文件就可以獲取膳食、運動處方。病人可以根據(jù)醫(yī)生給出的診療信息選擇適合自己的膳食、運動處方。在Android系統(tǒng)中,常見的XML解析器有DOM解析器、SAX解析器、PULL解析器。其中PULL方式最優(yōu)。它小巧輕便、解析速度快、簡單實用,非常適合在Android移動設(shè)備中使用。PULL解析技術(shù)是第三方開發(fā)的開源技術(shù),Android系統(tǒng)中和PULL方式相關(guān)的包是org.xmlpull.v1,這個包提供給PULL解析器的工廠類XmlPullParseFactory和PULL解析器XmlPullParse[6]。系統(tǒng)中的ReadXML類負(fù)責(zé)解析XML文件,通過判斷XML文件中的標(biāo)簽執(zhí)行不同的邏輯,將解析得到的信息存儲到List容器中供其他類調(diào)用。ShowFoodActivity類與FoodDetilActivty類負(fù)責(zé)將List容器中的膳食處方信息呈現(xiàn)在ListView控件。在實際開發(fā)過程中發(fā)現(xiàn)PULL方法簡潔有效,可以很方便的將XML文件中的信息呈現(xiàn)在ListView控件上。
3.2 Web技術(shù)在Android客戶端的應(yīng)用
3.2.1 信息交互功能
糖尿病是一種慢性疾病,需要長期的觀察和治療,每天都要進行身體指標(biāo)的測量,時間碎片化。因此考慮對患者用戶建立個人電子病歷記錄。對用戶的醫(yī)療數(shù)據(jù)進行科學(xué)的存儲與處理?;颊咝枰蟼鞯臄?shù)據(jù)包括血糖值、血壓值、體檢表和回訪記錄表,由于它們的實現(xiàn)方法相同,因此主要介紹血糖值上傳到服務(wù)器端的過程。JSON是一種輕量級的數(shù)據(jù)交換格式,同 XML 和 HTML文件相比,它更加簡捷和靈活。所以選擇JSON作為交互數(shù)據(jù)的格式。JSON主要有兩種數(shù)據(jù)格式,分別為JSONArrary(數(shù)組形式,數(shù)據(jù)元素可以是對象)和JSONObject(對象形式),它們之間可以相互轉(zhuǎn)換,解析JSON的相關(guān)類位于org.json包中[7]。BloodSugarActivity類負(fù)責(zé)錄入用戶每天測量到的血糖數(shù)據(jù),然后通過Http協(xié)議將封裝成JSONObject格式的數(shù)據(jù)發(fā)送到Web服務(wù)器端,服務(wù)器端的AndroidBloodSugarServlet類負(fù)責(zé)接收數(shù)據(jù),并將解析好的數(shù)據(jù)交由DAO層的BloodSugarDao類處理,最后將數(shù)據(jù)存入SQLServer2005數(shù)據(jù)庫中。
數(shù)據(jù)處理中心模塊還提供了數(shù)據(jù)查詢功能,采用HttpClient組件訪問Web端 Servlet類,并將要查詢的參數(shù)post到服務(wù)器端,服務(wù)器端做相應(yīng)的邏輯處理后把查詢得到的Java對象封裝成JSONObject形式返回給客戶端,客戶端解析JSONObject對象,然后通過ListView控件呈現(xiàn)給用戶,實現(xiàn)查詢功能。
3.2.2 統(tǒng)計分析功能
糖尿病的長期治療更貼切的是長期管理,糖尿病數(shù)據(jù)具有連續(xù)性,可以根據(jù)特定條件對數(shù)據(jù)進行提取、統(tǒng)計,這樣用戶就可以通過一種直觀的方式了解血糖變化。
Android客戶端采用對數(shù)據(jù)與頁面布局進行分別處理的方法實現(xiàn)對血糖數(shù)據(jù)的統(tǒng)計。首先是數(shù)據(jù)的獲取問題,由于HttpClient組件具有易用性和靈活性,所以采用HttpClient組件向服務(wù)器端發(fā)送請求、獲取數(shù)據(jù)。然后是頁面布局問題,在HTML文件中調(diào)用開源圖形組件Ichartjs在手機上實現(xiàn)復(fù)雜的布局效果。最后采用WebView組件做數(shù)據(jù)與頁面布局間溝通的橋梁。最終在Android客戶端實現(xiàn)數(shù)據(jù)統(tǒng)計功能。具體步驟如下:
(1)在Layout中定義布局文件并添加WebView組件;
(2)在Activity類中加載Layout布局文件,同時開啟javascript支持;
(3)在AndroidManifest.xml文件中添加允許網(wǎng)絡(luò)訪問的權(quán)限,聯(lián)網(wǎng)獲取服務(wù)端的數(shù)據(jù)。
(4)將來自服務(wù)器端的數(shù)據(jù)封裝成JSONArray對象。
(5)調(diào)用javascript方法將數(shù)據(jù)傳遞給HTML界面,實現(xiàn)數(shù)據(jù)更新。
(6) Activity類通過調(diào)用WebView中的loadUrl方法獲取HTML界面,最終實現(xiàn)數(shù)據(jù)統(tǒng)計功能。
3.3 Socket通信技術(shù)的應(yīng)用與實現(xiàn)
對于糖尿病這種慢性疾病,患者迫切希望就疾病、診療等問題得到實時的答疑解惑,醫(yī)生也需要對患者的病情狀態(tài)及身體狀況進行隨訪調(diào)查,以便后續(xù)的診療指導(dǎo)。糖尿病醫(yī)療輔助設(shè)計了互動溝通功能模塊,注冊用戶可以和社區(qū)醫(yī)生進行實時的信息交互。
Android操作系統(tǒng)提供了兩種通信方式:分別是Http通信和Socket通信。Http連接基于“請求-響應(yīng)”模式,只有在用戶請求時才會建立連接通道,即客戶端向服務(wù)器發(fā)送請求后,服務(wù)器端才向客戶端返回數(shù)據(jù)。Socket通信首先建立起兩者的連接,然后可以直接進行數(shù)據(jù)傳輸,這種方式雙方都可以主動發(fā)送信息。為了保證字節(jié)流的可靠性[8],系統(tǒng)選擇面向連接的TCP Socket方式傳輸信息。即時通信模塊服務(wù)器端的開發(fā)步驟大致如下:
(1)在服務(wù)器端指定端口,實例化一個Server Socket,自動對客戶端傳入的端口號進行監(jiān)聽。
(2) 收到請求后調(diào)用Server Socket的accept()方法,然后返回一個對應(yīng)于該客戶端的Socket對象。
(3) 獲取位于該層的Socket流并進行讀寫操作。
(4) 將數(shù)據(jù)封裝成流。
(5) 對Socket進行讀寫。
(6) 關(guān)閉打開的流。
客戶端的應(yīng)用開發(fā)步驟大致如下:
(1) 通過IP地址和端口實例化Socket,請求連接服務(wù)器。
(2) 獲取Socket上的流并進行讀寫。
(3) 把流包裝進BufferReader/PrintWriter對象。
(4) 對Socket進行讀寫。
(5) 關(guān)閉打開的流。
即時通信模塊由兩部分組成:PC服務(wù)器端和Android客戶端,PC服務(wù)器端負(fù)責(zé)客戶端命令的接收與響應(yīng)以及信息的轉(zhuǎn)發(fā),客戶端主要完成通信信息的發(fā)送與接收。利用Socket方式交換數(shù)據(jù),數(shù)據(jù)流量小,響應(yīng)速度快。
3.4 診療功能的實現(xiàn)
醫(yī)生用戶可以通過PC客戶端錄入診療信息,診療模塊的設(shè)計遵循MVC模式(JSP+Servlet+JavaBean),具體實現(xiàn)步驟如下:
(1)創(chuàng)建診斷信息錄入界面diagnoseinfo.jsp,此頁面用于放置診療信息的表單,錄入診療信息,表單的提交地址為diagnoseinfoServlet。
(2)創(chuàng)建控制層對象DiagnoseinfoServlet,它是一個Servlet類,此類通過doPost()方法對添加診療信息請求進行處理。
(3)創(chuàng)建模式層用到的JavaBean組件,分別為Diagnoseinfo類與DiagnoseinfoDao類,其中Diagnoseinfo類用于封裝診療信息,DiagnoseinfoDao類用于封裝診療信息對象的數(shù)據(jù)庫操作。
數(shù)據(jù)庫服務(wù)器為SQLServer2005,Web服務(wù)器采用Tomcat7.0,移動客戶端使用Android真機測試,主頁面如圖4所示。通過在瀏覽器中輸入URL地址訪問PC客戶端,進行測試。
圖4 Android客戶端主界面
4 結(jié) 語
針對糖尿病醫(yī)療管理需求,結(jié)合移動互聯(lián)網(wǎng)技術(shù),本文設(shè)計并實現(xiàn)了基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)。系統(tǒng)采用服務(wù)器/客戶端模式。測試后發(fā)現(xiàn)整個系統(tǒng)運行流暢,功能完善。在實際應(yīng)用過程中可以有效的改善患者與醫(yī)生的感受,有益于糖尿病這種慢性疾病的防治。
參考文獻
[1] World Health Organization .The world health report 1998 :Life in the 21st century: A vision for all [M]. Geneva: World Health Organization, 1998.
[2]張亞妮. 家庭支持對糖尿病患者居家治療依從性的影響[J]. 西部醫(yī)學(xué),2015,27(2):301-303.
[3]鄭穎,楊燁,鄭世良. 遠(yuǎn)程醫(yī)療信息系統(tǒng)的設(shè)計與實現(xiàn)技術(shù)研究[J]. 科技管理研究,2010 (15):184-187.
[4] 文軍,張思峰,李濤柱. 移動互聯(lián)網(wǎng)技術(shù)發(fā)展現(xiàn)狀及趨勢綜述[J]. 通信技術(shù),2014,47(9):977-980.
[5] 徐倩,趙文龍. 國內(nèi)外移動醫(yī)療應(yīng)用現(xiàn)狀及啟示[J]. 檢驗醫(yī)學(xué)與臨床,2014,11(9):1295-1296.
[6] 李瑞花. 基于Android的XML解析技術(shù)的分析[J]. 計算機時代,2010 (12):31-33.
[7] 龔成瑩,邢敬宏,胡銀保. 基于JSON的Android移動終端與PHP及MySQL數(shù)據(jù)通信[J]. 工業(yè)儀表與自動化裝置, 2013 (1):63-65.
[8] 陳文,郭依正. 深入理解Android網(wǎng)絡(luò)編程技術(shù)詳解與最佳實踐[M]. 北京:機械工業(yè)出版社, 2013.