基于移動互聯(lián)網(wǎng)的糖尿病醫(yī)療輔助系統(tǒng)設(shè)計與實現(xiàn)
掃描二維碼
隨時隨地手機(jī)看文章
引 言
糖尿病是一種常見的慢性疾病,截止 2009 年,中國已經(jīng)成為僅次于印度的糖尿病第二大國,糖尿病患者達(dá)到 4 315 萬。在糖尿病防治過程中,需要自我檢測、用藥、飲食、運動以及醫(yī)患互動五個方面的密切配合才能達(dá)到良好效果。伴隨著無線通信技術(shù)的發(fā)展,基于移動互聯(lián)網(wǎng)的遠(yuǎn)程醫(yī)療技術(shù)得到快速發(fā)展,在慢性病防治領(lǐng)域發(fā)揮著重要作用[1-3]。
在移動醫(yī)療系統(tǒng)中, 客戶端可以采用智能手機(jī)、平板電腦等移動設(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ī)護(hù)資源利用最大化 ;加強(qiáng)醫(yī)患溝通,滿足用戶在需要幫助時可 隨時得到專業(yè)指導(dǎo)的心理。根據(jù)用戶需求,對系統(tǒng)進(jìn)行分析, 由以下工作組成 :
(1)數(shù)據(jù)管理 :注冊用戶可以向服務(wù)器端上傳個人的生 理數(shù)據(jù)、查看個人電子病歷。
(2)統(tǒng)計分析 :直觀顯示血壓、血糖等數(shù)據(jù),并且能對 數(shù)據(jù)進(jìn)行相關(guān)分析。
(3)教育指導(dǎo) :系統(tǒng)可以向用戶提供具有針對性的診療 信息。
(4)信息交互:醫(yī)護(hù)人員可以與患者進(jìn)行實時的信息交互。
(5)信息反饋:社區(qū)醫(yī)生可以通過 PC 客戶端對病人進(jìn)行 初步篩選,制定相應(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ù)器端采用具有可擴(kuò)展性的三層模式,即控制器層+ 業(yè)務(wù)邏輯層+DAO 層結(jié)構(gòu)。服務(wù)器端控制器組件中的Servlet 類負(fù)責(zé)與Android 客戶端進(jìn)行信息交互??蛻舳塑浖嫦虿∪说囊苿涌蛻舳撕兔嫦蜥t(yī)生的PC 客戶端 ;移動客戶端基于 Android 平臺開發(fā) ;PC 客戶端基于B/S 模式開發(fā),醫(yī)生可以通過瀏覽器訪問系統(tǒng),并進(jìn)行相應(yīng)操作。系統(tǒng)采用SQLServer2005 數(shù)據(jù)庫存儲數(shù)據(jù)。
系統(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ù)庫的更新與查詢操作。
客戶端軟件由Android 客戶端與PC 客戶端組成,它功能結(jié)構(gòu)如圖 3 所示。
3 系統(tǒng)核心功能的實現(xiàn)
3.1 XML文件在 Android客戶端的應(yīng)用
醫(yī)護(hù)人員預(yù)先設(shè)定針對不同體征、不同年齡、不同病情人群的膳食、運動處方。由于 XML文件獨立于軟硬件,可移植性強(qiáng),因此采用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 信息交互功能
糖尿病是一種慢性疾病,需要長期的觀察和治療,每天都要進(jìn)行身體指標(biāo)的測量,時間碎片化。因此考慮對患者用戶建立個人電子病歷記錄。對用戶的醫(yī)療數(shù)據(jù)進(jìn)行科學(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ù)進(jìn)行提取、統(tǒng)計,這樣用戶就可以通過一種直觀的方式了解血糖變化。
Android 客戶端采用對數(shù)據(jù)與頁面布局進(jìn)行分別處理的方法實現(xiàn)對血糖數(shù)據(jù)的統(tǒng)計。首先是數(shù)據(jù)的獲取問題,由于HttpClient 組件具有易用性和靈活性,所以采用HttpClient 組件向服務(wù)器端發(fā)送請求、獲取數(shù)據(jù)。然后是頁面布局問題,在HTML 文件中調(diào)用開源圖形組件Ichartjs 在手機(jī)上實現(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)及身體狀況進(jìn)行隨訪調(diào)查,以便后續(xù)的診療指導(dǎo)。糖尿病醫(yī)療輔助設(shè)計了互動溝通功能模塊,注冊用戶可以和社區(qū)醫(yī)生進(jìn)行實時的信息交互。
Android操作系統(tǒng)提供了兩種通信方式 :分別是 Http通信和 Socket通信。Http連接基于“請求 - 響應(yīng)”模式,只有在用戶請求時才會建立連接通道,即客戶端向服務(wù)器發(fā)送請求后,服務(wù)器端才向客戶端返回數(shù)據(jù)。Socket通信首先建立起兩者的連接,然后可以直接進(jìn)行數(shù)據(jù)傳輸,這種方式雙方都可以主動發(fā)送信息。為了保證字節(jié)流的可靠性 [8],系統(tǒng)選擇面向連接的 TCPSocket方式傳輸信息。即時通信模塊服務(wù)器端的開發(fā)步驟大致如下:
(1)在服務(wù)器端指定端口,實例化一個 Server Socket, 自動對客戶端傳入的端口號進(jìn)行監(jiān)聽。
(2)收到請求后調(diào)用 Server Socket 的 accept()方法, 然后返回一個對應(yīng)于該客戶端的 Socket 對象。
(3)獲取位于該層的 Socket 流并進(jìn)行讀寫操作。
(4)將數(shù)據(jù)封裝成流。
(5)對 Socket 進(jìn)行讀寫。
(6)關(guān)閉打開的流。
客戶端的應(yīng)用開發(fā)步驟大致如下:
(1)通過 IP 地址和端口實例化 Socket,請求連接服務(wù)器。
(2)獲取 Socket上的流并進(jìn)行讀寫。
(3)把流包裝進(jìn) BufferReader/PrintWriter 對象。
(4)對 Socket 進(jìn)行讀寫。
(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()方法對添加診療信息請求進(jìn)行處理。
(3) 創(chuàng) 建 模 式 層 用 到 的 JavaBean組 件, 分 別 為Diagnoseinfo類與DiagnoseinfoDao類,其中Diagnoseinfo類用于封裝診療信息,DiagnoseinfoDao類用于封裝診療信息對象的數(shù)據(jù)庫操作。
數(shù) 據(jù)庫服務(wù) 器為 SQLServer2005,Web 服務(wù) 器采用Tomcat7.0,移動客戶端使用Android 真機(jī)測試,主頁面如圖 4 所示。通過在瀏覽器中輸入URL 地址訪問PC 客戶端,進(jìn)行測試。
結(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ī)生的感受, 有益于糖尿病這種慢性疾病的防治。