王丹丹,張海英,王云峰
(1. 中國科學院微電子研究所 新一代通信射頻芯片技術,北京 100029;2. 中國科學院微電子研究所 健康電子研發中心,北京 100029; 3.中國科學院大學 微電子學院,北京 100049)
?
基于Android的醫療管理與干預系統的設計與實現
王丹丹1,2,3,張海英2,王云峰2
(1. 中國科學院微電子研究所 新一代通信射頻芯片技術,北京 100029;
2. 中國科學院微電子研究所 健康電子研發中心,北京 100029; 3.中國科學院大學 微電子學院,北京 100049)
現代移動醫療越來越受到人們的重視,市場上也出現很多的醫療終端軟件,主要有電子檔案管理、免費咨詢以及掛號預約等功能,醫生則根據用戶所說的相關癥狀分析其健康問題,但是在一些情況下也不可避免會發生誤診事件。針對這種現象,為減少誤診事件的發生,客戶端通過藍牙連接設備,獲取設備采集的各項健康數據發送至服務器,并在服務器端和移動端繪制折線圖將其可視化。這樣醫生可以在分析用戶病例記錄的同時結合其各項健康數據折線圖,準確地判斷病癥原因,從而提出更加實用的健康指導。
客戶端;服務器;藍牙連接;數據可視化
智能手機是現代人們日常生活的隨身攜帶的方便物品,市場上基于Android系統的移動終端占有很大比例。Android系統是基于Linux平臺的開源移動操作系統[1-2]。本文基于Android的醫療管理與干預系統的設計,利用Android系統的廣泛應用,在移動終端上實現快捷傳輸體征數據以及可視化用戶體征數據折線圖等功能,避免用戶單項描述癥狀而帶來不必要的誤診,實時準確監測用戶健康狀況,從而預防疾病的發生。
本系統主要會從可行性分析和需求分析兩個角度論述該系統的可靠性和系統實現的功能以及具體實現流程。
1.1 可行性分析
Android是一種以Linux為基礎操作系統,是目前開放性最強的移動設備綜合平臺,使得運營商、手機商以及產業鏈各環節能夠更好、更快地將產品推向市場,同時降低產品成本。
現在市場上出現的移動醫療終端主要實現健康問答、免費咨詢以及預約掛號等常用功能。其一,這種情況是在醫生不了解患者的病例史前提下;其二,不能實時監測用戶的相關健康檢測數據,這些都會導致醫生誤診的風險。針對這些情況,本設計中Web服務器可以查看用戶的病例史記錄,而且用戶端通過藍牙傳輸的方式將健康檢測設別測量的數據上傳至服務器,并繪制各項歷史健康數據折線圖,方便醫生直觀查看,提高準確性。
1.2 需求分析
系統角色說明具體如下,根據該系統的使用范圍將角色主要分為用戶移動端和醫生Web服務器端。
1.2.1 用戶移動端

圖1 用戶移動端的功能及設計流程
用戶第一次使用時,通過手機號或者郵箱注冊,并通過SharedPreference[3]保存賬戶和密碼來實現自動登錄的功能,避免頻繁進入登錄界面。開啟軟件選擇功能模塊,該軟件有消息、醫生、體征以及我的四個功能模塊,具體功能及設計流程如圖1所示。
1.2.2 醫生Web服務器端

圖2 醫生Web服務器端的功能及設計流程
醫生注冊后進入服務器慢病管理功能界面,該界面包含會員列表和健康測評兩個功能單元,各單元具體功能及設計流程如圖2所示。
服務器將用戶ID、名字等信息數據保存在關系型數據庫MySQL[4]中,并在我的會員模塊中使用pulltorefresh框架的PullToRefreshListView組件將用戶信息顯示,再通過增、刪、改、查等操作管理數據庫各表的用戶信息[4],同時靈活地使用表的連接、合并等函數滿足本系統查詢的條件。
2.1 醫生Web端實現
該系統醫生Web服務器端主要使用Spring MVC框架[5-6],分離控制器、模型對象、分派器以及處理程序對象,讓它們更容易進行控制。客戶端發出的HTTP請求發送給Web服務器,服務器對其進行解析后,若匹配DispatcherServlet的請求映射路徑成功,將請求轉交給DispatcherServlet,然后找到處理請求的處理器Handler。再通過接口回調將ModelAndView對象發送給DispatcherServlet,然后轉化為視圖View返回給客戶端。其中服務器使用MySQL數據庫存儲,并使用Hibernate持久層框架,負責與數據庫有關的操作。
在該系統服務器端使用JFreeChart組件繪制動態心電等數據折線圖。首先在Web.xml文件中,配置讀取圖片的Servlet[7]。自定義繪圖工具類ChartUtil,在該類中分別編寫用于創建數據集和創建制圖對象的方法createDataSet()和createChart(),根據點擊事件將相應的健康數據和創建數據集合對象綁定。再創建Servlet的類ChartServlet,通過doGet()方法處理制圖請求,最后在程序的首頁編寫index.jsp,提供查看樣式的超鏈接。其中Web健康測評功能模塊中的體征數據單元,可以繪制各項健康數據折線圖,如圖3所示。

圖3 血氧的折線圖
2.2 用戶終端的具體實現
患者需要注冊/登錄該軟件后,進入基礎平臺功能模塊。該模塊由四部分子功能模塊組成,如圖4所示。

圖4 用戶端基本功能平臺
2.2.1 消息模塊
該模塊包含問答和預警兩個功能單元。問答和預警單元都是按照接口協議,使用開源框架android-async-http[8]建立AsyncHttpClient[9]對象mClient,并調用自定義post方法向服務器發送請求,代碼核心如下。
mClient.post(uri,null,new AsyncHttpResponseHandler(){
@override
public void onSuccess(byte[] data){
Gson localGson=new Gson();
Type loclaType=new TypeToken
AllResult localAllResult = (AllResult)localGson.fromJson(new String(paramAnonymous2ArrayOfByte), localType);
//將獲得的結果在顯示在listview組件上
}
@override
public void onFailure(Throwable e ,byte[] data){
Log.e(“Throwable”, “拋出異常”);
}
});
分別接收醫患交流的信息記錄以及數據異常時返回的健康預警,并顯示在listview組件上。
2.2.2 醫生模塊
在醫生模塊中使用開源框架pulltorefresh更新醫生listview,通過setOnRefreshListener()方法監聽其下拉刷新事件,很好地實現下拉刷新庫[10]。核心代碼如下。
public void onRefresh(PullToRefreshBase
if(!isRefreshing){
isRefreshing=true;
updateList(true);
}else{
Listview.onRefreshComplete();
}
}
通過onItemClick方法監聽listview的每個item,并跳轉到類ManageCom,調用隱示Intent.ACTION_SENDTO實現向醫生發送消息;調用隱示Intent.ACTION_DIAL使用撥號面板,再調用隱示Intent.ACTION_CALL實現撥打電話的功能。
2.2.3 體征模塊
該模塊包含體征數據采集和歷史體征數據折線圖兩個功能單元。
體征數據采集功能單元使用藍牙獲取設備測量的各體征數據,以血糖采集為例,如圖5所示。客戶端獲取藍牙適配器BluetoothAdapter[11]對象mBA,通過isEnabled()方法查詢藍牙設備開啟狀態。監聽數據按鈕時,會默認藍牙傳輸數據。本文中系統首先使用BluetoothAdapter對象的getBondedDevices()方法得到配對設備BluetoothDevice的結果集并顯示,這樣可以避免對已經配過對的設備再次搜索的麻煩,其代碼如下。
public List
List
Set
If(pairedDevices.size()>0){
for(BluetoothDevice device:pairedDevices){
devices.add(device);
}
}
return devices;
}

圖5 血糖采集功能實現界面
歷史體征折線圖:客戶端通過接口向服務器請求獲取各項數據結果集,避免將大量的數據存儲在客戶端浪費內存的問題。
客戶端使用AChartengine[12]圖表庫,創建XYMutipleSeriesRenderer的實例renderer,用來給繪制的圖形做渲染的句柄,包括曲線的樣式和屬性等。創建放置曲線點的集合series,再創建一個數據集XYMultipleSeriesDataset的實例mDataset,將點集添加到mDataset中。在新添數據時通過update()更新折線圖,這里先將新產生的點加入到點集series中,然后在循環體中將向右移動一位變換后的一系列點重新加入到點集中,最后更新視圖,具體代碼如下。
series.add(addX , addY);
for(int k=0;k series.add(x[k] , y[k]); } mDataset.addSeries(series); chart.Invalidate(); 2.2.4 我的模塊 該模塊有記一下和修改密碼兩個單元。 其中,用戶可以選定時間后記錄自己的健康數據、身體體質以及一些待問醫生的疑惑信息等,并可以選擇部分問題提交到服務器上以便醫生更加了解用戶的身體狀況,從而實現適時監測用戶的身體健康。 監聽“病例記錄”即可看見自己的歷史病例記錄,其界面如圖6所示。 圖6 病例記錄功能模塊 定義TAB頁面以及四行七列的GridView布局,創建星期、月份以及對應天數的各數組。獲取當前Date,計算再GridView中的位置,再將其他位置填寫數字。然后監聽GridView,獲取選中Date數據以及新紀錄數據,并使用框架android-async-http向服務器發送數據。 在本文中通過監聽手指左右移動事件,來監聽月份的增加以及減少,在判斷年份text的變化,再重新填寫GridView中Date,這樣就使得TAB頁面被重復利用,減少布局文件所占資源,代碼會更加清晰易懂。核心代碼如下。 if(beginX-endX>minMove&&Math.abs(velocityX)>minVelocity){ if(month!=12) month++; else month=1; }else if(endX-beginX>minMove&&Math.abs(velocityX)>minVelocity){ if(month!=1) month--; else month-=1; } tabs.add(tab); init(tabs); 現在人們越來越關注醫療健康的話題,本文設計了基于Android的醫療管理與預測系統。在該系統中移動端復用了TAB頁面,實現了在醫生Web服務器端利用藍牙通信獲取用戶端設備采集的健康數據并可視化以及其他功能。在該系統中很好地結合了健康數據采集設備和移動終端以及Web服務器的支持,使其具有很強的實用性。隨著智能終端的普及,該系統將會被廣泛推廣。 該系統尚存在需要優化的地方,可以開發供IOS系統使用的APP,用戶端可以通過掃描二維碼的方式,選擇下載相應系統下的APP,這樣就會較少使用該系統的移動端系統限制。 [1] 張建源. Android開發技術的學習及應用[J]. 現代工業經濟和信息化,2014,3(12):62-64. [2] 趙曉偉. Android開發環境在Linux平臺上的搭建[J]. 計算機與數字工程,2016,44(8):1615-1618,1624. [3] 陳俊龍.Android平臺的數據傳輸與同步的設計與實現[D].北京:北京郵電大學,2015. [4] 李華明.基于PHP和MySQL的網上購物系統設計與實現[D].成都:電子科技大學,2014. [5] 薛峰,梁鋒,徐書勛,等. 基于Spring MVC框架的Web研究與應用[J]. 合肥工業大學學報(自然科學版),2012,56(3):337-340. [6] 劉彬. 基于Spring MVC框架的茶樓管理系統的設計與實現[D].長春:吉林大學,2015. [7] 李萍. 基于JSP+Servlet技術的在線考試系統的設計與實現[J]. 數字技術與應用,2015,32(7):168. [8] 陳蔚,周蘭江,王紅斌,等. 基于Android的旅行翻譯語音情景助手APP設計與實現[J].微型電腦應用,2016,32(4):30-33,39. [9] 徐朋.基于SOCKET的跨平臺通訊系統的研究與設計[D].大連:大連理工大學,2015. [10] 劉曉杰. 基于Android的移動學習平臺的設計與實驗[D].北京:北京工業大學,2015. [11] 陳鈺琨. 基于Android系統的藍牙遠程控制的研究 [D].北京:北京理工大學,2015. [12] 王晶. Android圖形繪制在汽車實時信息展示系統中的研究[D].廣州:中山大學,2014. The design and implementation of medical management and prediction system based on Android Wang Dandan1,2,3, Zhang Haiying2, Wang Yunfeng2 (1. New Generation of RF Communications Chip Technology, Institute of Microelectronics of Chinese Academy of Sciences, Beijing 100029, China;2. Health Electronic R & D Center, Institute of Microelectronics of Chinese Academy of Sciences, Beijing 100029, China;3. Academy of Microelectronics, University of Chinese Academy of Sciences School of Electronic, Beijing 100049, China) More people pay attention to modern mobile medical treatment . And there are many kinds of medical terminal software in the market, which have the functions sach as electronic file management, free consultation and registered appointment and so on. The doctors analyze their health problems according to the related symptoms mentioned by the users. In some cases, misdiagnosis can not be avoided. In this paper, in order to reduce the incidence of misdiagnosis, the client connects the device through Bluetooth acquiring the data of ECG and blood oxygen and so on.At the same time ,the client sends those data to the server.We draw the line chart to visualize it in the server and client. Doctors can analyze the user′s case records, combined with their health data, so that determine the cause of the disease accurately and put forward more practical health guidance. client; server; Bluetooth connection; data visualization TP3 A 10.19358/j.issn.1674- 7720.2017.12.030 王丹丹,張海英,王云峰.基于Android的醫療管理與干預系統的設計與實現[J].微型機與應用,2017,36(12):102-105. 2016-12-25) 王丹丹(1990-),女,碩士研究生,主要研究方向:醫療電子。 張海英(1964-),女,博士,研究員,主要研究方向:射頻集成電路設計、健康電子醫療。 王云峰(1981-),男,博士,副研究員,主要研究方向:射頻集成電路設計、便攜式醫療電子設計。
3 結論