王懷軍,高茜茜,付靜飛,李軍懷,王 侃
1(西安理工大學 計算機科學與工程學院,西安 710048)2(陜西省網(wǎng)絡計算與安全重點實驗室,西安 710048)
隨著我國人口老齡化的加速和亞健康人群的不斷增多,人們對自己及家人的健康狀況越來越重視,對健康監(jiān)測服務的需求也不斷增加.心率、血壓、血糖等生理數(shù)據(jù)中包含了人體健康狀況的重要病理信息,因此,需要通過健康監(jiān)護模式對這些生理指標進行長期跟蹤和監(jiān)護.可穿戴設備、健康管理軟件等為“互聯(lián)網(wǎng)+醫(yī)療”提供了全新的技術手段,通過監(jiān)測老年人生理數(shù)據(jù),可幫助用戶持續(xù)了解自身的健康狀況,做好疾病預防,降低醫(yī)療機構壓力.
歐美等發(fā)達國家早在上世紀七十年代就開始在健康監(jiān)測領域進行研究,各大企業(yè)和研究機構相繼推出健康監(jiān)測方面的產(chǎn)品.MIT Media Lab 的 LiveNet[1]系統(tǒng)通過對帕金森和癲癇病患者的心電圖、血壓、血氧等生理數(shù)據(jù)進行長期的實時監(jiān)測,使用建模和識別方法分析患者的健康狀態(tài),并及時將健康信息反饋給患者.LifeGuard[2]系統(tǒng)是21世紀初一個非常著名的健康監(jiān)測系統(tǒng).它主要使用可穿戴檢測設備,監(jiān)測船員生理健康數(shù)據(jù).LifeGuard系統(tǒng)可持續(xù)監(jiān)測并報告船員的血壓、心率、血氧飽和度及體溫等數(shù)據(jù),此外還可實時監(jiān)測和報告船員的身體姿勢和心電圖數(shù)據(jù).該系統(tǒng)使用藍牙方式將上述數(shù)據(jù)傳輸至固定的基站進行處理,若某項生理參數(shù)超過傳感器預設生理參數(shù)閾值,可通過報警方式及時告知船員.CodeBlue[3]系統(tǒng),設計并實現(xiàn)了硬件和軟件平臺,用于監(jiān)測和報告病人生理數(shù)據(jù).其監(jiān)測的生理數(shù)據(jù)包括血氧、心率、心電圖和肌電圖.MyHeart[4]系統(tǒng)是一個歐盟的綜合項目開發(fā)的,旨在預防和監(jiān)測心血管狀態(tài)的智能系統(tǒng).與MyHeart系統(tǒng)類似,Wealthy[5]項目、Mermoth[6]項目同樣將多種傳感器放入特質的衣物中,來監(jiān)測人體心電和呼吸數(shù)據(jù),用于常見的健康監(jiān)護.Miramontes R 等人[7]提出的PlaIMoS系統(tǒng),使用可穿戴設備監(jiān)測與慢性呼吸系統(tǒng)疾病相關的血氧飽和度、呼吸率、體溫等參數(shù),并通過藍牙方式將數(shù)據(jù)傳輸至網(wǎng)關,之后通過無線網(wǎng)將數(shù)據(jù)傳輸至數(shù)據(jù)服務器進行處理,最終在Windows系統(tǒng)和Android 系統(tǒng)中進行實時顯示.Serhani MA 等人[8]提出了一種端到端的移動監(jiān)測架構SME2EM,該架構利用定制的頭戴式設備采集生理數(shù)據(jù)實現(xiàn)對終生殘疾的患者的自動監(jiān)測和可視化監(jiān)控,并在數(shù)據(jù)集成、移動資源優(yōu)化以及數(shù)據(jù)可視化等方面進行了深入研究.
在網(wǎng)關方面,Emara KA[9]、Zhu Q 等人[10]提出了用不同協(xié)議(如ZigBee、藍牙和以太網(wǎng))將傳感器網(wǎng)絡連接到 Internet的網(wǎng)關.Rahmani AM 等人[11]提出了一種智能電子網(wǎng)關,該網(wǎng)關支持各種無線協(xié)議并負責設備間的通信,提供多個高級服務(如數(shù)據(jù)過濾、數(shù)據(jù)壓縮、數(shù)據(jù)融合、數(shù)據(jù)分析等).Mittek M等人[12]開發(fā)了Angelos網(wǎng)關,為快速支持網(wǎng)絡的應用程序開發(fā)提供了一個基于套接字的環(huán)境.
雖然在健康監(jiān)測領域已有較多研究,但應用在家庭健康監(jiān)測方面的研究較少.為實現(xiàn)對常見慢性病的長期監(jiān)護和跟蹤,并對監(jiān)護對象的生理數(shù)據(jù)進行便捷的采集、處理、傳輸,本文研究并實現(xiàn)了家庭健康監(jiān)測網(wǎng)關.本文章節(jié)安排如下:第一部分介紹了網(wǎng)關的總體設計.第二部分對系統(tǒng)進行實現(xiàn)與測試.最后對全文進行了總結.
家庭健康監(jiān)測網(wǎng)關可以通過藍牙心電儀、血壓計、血糖儀和血氧儀等便攜式生理檢測設備采集人體生理健康數(shù)據(jù).系統(tǒng)基于 Raspberry Pi硬件平臺,實現(xiàn)對生理數(shù)據(jù)的自動采集和對健康檢測設備的統(tǒng)一管理.
Raspberry Pi(簡稱 RPi,或者 RasPi/RPi)是一塊基于ARM芯片的微型計算機主板,它由以埃本·阿普頓(Eben Epton)為首的英國慈善組織“Raspberry Pi 基金會”開發(fā),并于2013年3月正式發(fā)售.由于其擁有與PC機相似的基本功能,且價格便宜、外形較小,能較好的滿足基本需求,因此本文基于Raspberry Pi開發(fā)家庭健康監(jiān)測網(wǎng)關.
家庭健康監(jiān)測網(wǎng)關主要功能包括:使用藍牙方式與便攜式生理檢測設備進行通信,獲取人體生理健康數(shù)據(jù);對生理檢測設備發(fā)送的數(shù)據(jù)包進行解析、處理;對生理數(shù)據(jù)進行封裝,使用TCP協(xié)議將數(shù)據(jù)發(fā)送至數(shù)據(jù)通信服務器,并將其存儲至數(shù)據(jù)庫.根據(jù)以上功能需求,設計家庭健康監(jiān)測網(wǎng)關總體結構如圖1所示.
圖1 健康監(jiān)測網(wǎng)關總體結構
由圖1可知,家庭健康監(jiān)測網(wǎng)關主要包含藍牙通信、數(shù)據(jù)解析、數(shù)據(jù)傳輸和存儲、以及網(wǎng)關主程序四個模塊.藍牙通信模塊主要負責與藍牙心電儀、血壓計、血糖儀和血氧儀等生理數(shù)據(jù)檢測設備進行通信,包括藍牙設備的掃描、配對,藍牙服務匹配以及數(shù)據(jù)的接收和發(fā)送等功能.數(shù)據(jù)解析模塊主要用于解析不同類型的生理數(shù)據(jù)和控制消息.由于不同的生理檢測設備使用的數(shù)據(jù)格式(協(xié)議)的差異(主要體現(xiàn)在其攜帶的具體的生理數(shù)據(jù)格式差異),因此需要對不同設備發(fā)送的數(shù)據(jù)包進行單獨解析.數(shù)據(jù)傳輸和存儲模塊主要負責將人體生理數(shù)據(jù)封裝成特定的數(shù)據(jù)傳輸協(xié)議格式,并使用TCP方式將數(shù)據(jù)發(fā)送至數(shù)據(jù)通信服務器進行處理.在此過程中,若家庭健康監(jiān)測網(wǎng)關未接入網(wǎng)絡,或數(shù)據(jù)傳輸過程發(fā)生錯誤,則會將封裝完成的數(shù)據(jù)包保存至本地緩存文件中,待設備接入網(wǎng)絡后進行傳輸.網(wǎng)關主程序模塊主要負責對上述功能模塊進行調(diào)度,以確保家庭健康監(jiān)測網(wǎng)關為監(jiān)護對象提供便捷的生理數(shù)據(jù)采集和傳輸服務.
下面對網(wǎng)關應用的主要技術進行介紹.
家庭健康監(jiān)測網(wǎng)關主程序模塊是整個網(wǎng)關應用程序的核心,負責使用藍牙通信模塊掃描生理檢測設備,接收監(jiān)護對象生理健康數(shù)據(jù).當生理數(shù)據(jù)解析完成后,使用事件管理器觸發(fā)數(shù)據(jù)傳輸模塊上傳生理健康數(shù)據(jù).
網(wǎng)關詳細流程圖,如圖2所示.
圖2 主程序模塊流程
當網(wǎng)關程序啟動后,首先,通過 binding_event()方法,將upload_data()方法注冊為數(shù)據(jù)上傳事件處理函數(shù),負責上傳生理健康數(shù)據(jù);之后,啟動藍牙服務線程,利用start_bt_srv()方法中掃描藍牙設備,發(fā)現(xiàn)藍牙服務,并獲取生理健康數(shù)據(jù);最后,當接收到監(jiān)護對象采集的生理健康數(shù)據(jù)后,使用send_event()方法觸發(fā)數(shù)據(jù)上傳事件,并上傳生理健康數(shù)據(jù).
藍牙通信模塊是整個家庭健康監(jiān)測網(wǎng)關最基礎的部分,主要負責使用藍牙方式與生理檢測設備進行數(shù)據(jù)通信.藍牙通信模塊包括設備配對、服務發(fā)現(xiàn)、數(shù)據(jù)傳輸?shù)?數(shù)據(jù)傳輸模塊詳細的流程圖如圖3所示.
圖3 藍牙模塊數(shù)據(jù)處理流程圖
上述過程中,生理檢測設備使用串行方式接入網(wǎng)關,主要依據(jù)是:4種藍牙設備當數(shù)據(jù)準備就緒后,若無網(wǎng)關接入,將等待 1 分鐘時間;同時,設備數(shù)據(jù)采集時間均大于等于30秒,而數(shù)據(jù)傳輸和上傳的總時間均小于 15 秒.因此,若 4 臺設備同時進行數(shù)據(jù)采集,則仍可在有效時間內(nèi)傳輸至網(wǎng)關設備.
在家庭健康監(jiān)測網(wǎng)關對接收到的用戶生理數(shù)據(jù)進行解析后,需將該數(shù)據(jù)上傳至數(shù)據(jù)通信服務器進行處理.數(shù)據(jù)傳輸模塊主要功能是按設計的數(shù)據(jù)傳輸協(xié)議,使用TCP方式傳輸生理數(shù)據(jù).此外,若網(wǎng)關設備未接入網(wǎng)絡,則需對數(shù)據(jù)進行本地存儲.
在數(shù)據(jù)傳輸模塊中,首先,會對生理數(shù)據(jù)按照與數(shù)據(jù)通信服務器約定的協(xié)議格式進行封裝.之后,判斷網(wǎng)絡狀態(tài),若當前網(wǎng)關設備未接入網(wǎng)絡,則會將封裝完整的數(shù)據(jù)包寫入本地緩存文件;若已接入網(wǎng)絡,則進入數(shù)據(jù)傳輸過程.
在進行數(shù)據(jù)傳輸時,會首先檢查本地文件是否有緩存數(shù)據(jù),若有數(shù)據(jù),則將優(yōu)先發(fā)送緩存數(shù)據(jù),之后傳輸當前數(shù)據(jù)包;若無緩存數(shù)據(jù),則直接對數(shù)據(jù)進行發(fā)送.在數(shù)據(jù)發(fā)送過程中,若發(fā)生錯誤導致傳輸過程終止,網(wǎng)關會將未發(fā)送的數(shù)據(jù)保存至文件中.最后,當數(shù)據(jù)上傳結束后,將等待一小段時間,以接收服務器的錯誤重傳消息,若接收到重傳請求,則將重新發(fā)送指定的數(shù)據(jù)記錄;若未接收到該消息,則斷開與服務器之間的TCP 連接.至此,整個傳輸過程結束.數(shù)據(jù)傳輸模塊處理示意圖如圖4所示.
圖4 數(shù)據(jù)處理模塊示意圖
數(shù)據(jù)傳輸模塊的實現(xiàn)主要分數(shù)據(jù)組裝、本地緩存和數(shù)據(jù)傳輸三個部分.
(1)數(shù)據(jù)組裝
數(shù)據(jù)組裝分為生理數(shù)據(jù)組裝和傳輸數(shù)據(jù)包組裝兩個過程.針對不同的生理數(shù)據(jù)類型,其組裝的格式也不同.以心電數(shù)據(jù)為例,生理數(shù)據(jù)組裝基本格式如圖5所示.
圖5 生理數(shù)據(jù)組裝格式
如圖5中,Type字段用于標識設備類型,該字段與藍牙通信協(xié)議格式中LQI字段對應.MAC字段為藍牙設備物理地址,系統(tǒng)使用該地址進行用戶識別.Length字段對數(shù)據(jù)長度進行標識,該長度僅表示數(shù)據(jù)體中包含多少個數(shù)據(jù)區(qū)域,用于數(shù)據(jù)通信服務器進行數(shù)據(jù)解析.Datetime字段用于記錄該條生理數(shù)據(jù)的采集時間.Data字段為真正的有效生理數(shù)據(jù)區(qū)域,該字段包含數(shù)據(jù)編號UUID和生理數(shù)據(jù)區(qū)域.UUID是36位唯一識別碼,用來標識每條數(shù)據(jù)記錄,該字段可用于在發(fā)生錯誤時進行數(shù)據(jù)重傳.生理數(shù)據(jù)區(qū)域針對不同類型的生理數(shù)據(jù),其表示格式不同,如血氧數(shù)據(jù)僅包含血氧飽和度一個字段,而心電數(shù)據(jù)包含心率和心電波形兩個字段.
當對生理數(shù)據(jù)部分組裝完成后,還需將數(shù)據(jù)組裝成與服務器約定的通信協(xié)議數(shù)據(jù)包格式,該部分協(xié)議格式主要由服務器端約定.
(2)本地緩存
該部分功能主要用于家庭健康監(jiān)測網(wǎng)關在未接入網(wǎng)絡的狀態(tài)實現(xiàn)對用戶生理數(shù)據(jù)的存儲.當需發(fā)送的數(shù)據(jù)包組裝完成后,首先判斷網(wǎng)關的網(wǎng)絡狀態(tài),若未接入網(wǎng)絡,則將數(shù)據(jù)包寫入本地文件中.當網(wǎng)關接入網(wǎng)絡并進行數(shù)據(jù)傳輸時,將首先檢查緩存文件有無待發(fā)送數(shù)據(jù),若有緩存數(shù)據(jù),則將優(yōu)先發(fā)送緩存數(shù)據(jù),再進行之后的數(shù)據(jù)傳輸.當緩存數(shù)據(jù)被讀取之后,該文件將會被置空.此外,在數(shù)據(jù)上傳過程中,若出現(xiàn)傳輸錯誤,未被發(fā)送的數(shù)據(jù)將寫回緩存文件中.
(3)數(shù)據(jù)傳輸
數(shù)據(jù)傳輸部分,使用TCP協(xié)議與服務器進行通信,上傳用戶生理數(shù)據(jù).當網(wǎng)關采集到用戶的生理數(shù)據(jù)并進行上傳時,需要與服務器建立新的TCP連接,之后再進行數(shù)據(jù)傳輸.在進行數(shù)據(jù)傳輸時,網(wǎng)關會首先發(fā)送“開始上傳”命令,之后進行生理數(shù)據(jù)傳輸;當生理數(shù)據(jù)傳輸結束后,會發(fā)送“上傳結束”命令,告知服務器數(shù)據(jù)傳輸完成.當數(shù)據(jù)傳輸結束后,網(wǎng)關設備將等待10秒,接收服務器發(fā)送數(shù)據(jù)重傳命令,若等待超時,網(wǎng)關設備將直接斷開與服務器的TCP連接.
網(wǎng)關使用Raspberry Pi的藍牙模塊與多種便攜式生理數(shù)據(jù)檢測設備進行數(shù)據(jù)通信,并使用有線/無線模塊與服務器進行數(shù)據(jù)傳輸,上傳生理檢測數(shù)據(jù).
(1)硬件環(huán)境
網(wǎng)關主要基于 Raspberry Pi硬件平臺,在Raspbian操作系統(tǒng)中使用Python語言進行開發(fā).為方便家庭健康監(jiān)測網(wǎng)關的開發(fā),本系統(tǒng)選擇使用藍牙方式進行數(shù)據(jù)傳輸?shù)纳頇z測設備,包括藍牙心電儀、血壓計、血糖儀和血氧儀等設備.網(wǎng)關及健康檢測設備實物如圖6所示.
圖6 Raspberry Pi健康網(wǎng)關及健康檢測設備
(2)軟件環(huán)境
家庭健康監(jiān)測網(wǎng)關設備應用程序開發(fā)所使用的軟件開發(fā)環(huán)境如表1所示.
表1 健康監(jiān)測網(wǎng)關軟件開發(fā)環(huán)境
由于健康監(jiān)測與服務系統(tǒng)功能較多,本部分將以監(jiān)護對象的心電數(shù)據(jù)采集、傳輸及展示過程為例,對系統(tǒng)整體進行功能性測試.
(1)家庭健康監(jiān)測網(wǎng)關
該系統(tǒng)的測試過程如圖7~圖10.首先保證各部分連線正確,同時藍牙模塊正常工作.打開藍牙心電儀,雙手持卡,倒計時6秒后開始測量,采集過程中保持自然呼吸.采集結束后啟動家庭健康監(jiān)測網(wǎng)關,進行自動搜索設備,如圖7所示.
圖7 設備搜索
網(wǎng)關搜索到設備后,自動接收數(shù)據(jù)并進行解析,如圖8所示.
圖8 獲取數(shù)據(jù)
解析結束后,在界面上顯示用戶生理數(shù)據(jù)測量結果,同時,網(wǎng)關自動將用戶的測量結果上傳至通信服務器,如圖9、圖10所示.
圖9 測量結果
圖10 數(shù)據(jù)上傳
(2)健康監(jiān)測與服務應用軟件系統(tǒng)
應用軟件系統(tǒng)分為Web應用和Android APP兩個部分,本次功能性測試將以監(jiān)護對象使用APP,健康醫(yī)生使用Web應用系統(tǒng)分別查詢采集的心電數(shù)據(jù).其中APP部分測試界面如圖11(a)、圖11(b)所示.
Web部分測試界面如圖12所示.
經(jīng)測試,Web應用和 Android APP應用程序中數(shù)據(jù)的查詢、統(tǒng)計分析等功能都可正常響應.
圖11 Android APP 運行截圖
圖12 Web 運行截圖
本文主要實現(xiàn)了家庭健康監(jiān)測網(wǎng)關.該網(wǎng)關使用藍牙協(xié)議與監(jiān)測設備進行通信,實現(xiàn)了對監(jiān)護設備的集中管理和對生理數(shù)據(jù)的自動采集,使監(jiān)測過程更加便捷.實驗表明,該網(wǎng)關可以正常完成數(shù)據(jù)采集和數(shù)據(jù)通訊等工作,為“互聯(lián)網(wǎng)+醫(yī)療”應用至千家萬戶提供了必要的終端支持,在關注獨居老人健康、減輕社會醫(yī)療壓力等方面具有重要的意義.