劉繼忠,徐文斌,謝毓順,劉鴻,鄭莉萍
(南昌大學南昌市醫(yī)工結(jié)合技術(shù)研究重點實驗室,江西 南昌 330031)
隨著計算機技術(shù)與通訊技術(shù)的不斷發(fā)展,遠程醫(yī)療技術(shù)也應運而生,并在醫(yī)療健康領(lǐng)域得到了廣泛的應用與發(fā)展[1],遠程醫(yī)療概念及其應用成果不斷涌現(xiàn)[2]。遠程醫(yī)療即應用遠程通訊技術(shù)來交互式傳遞信息,以開展遠距離醫(yī)療服務,是一種現(xiàn)代醫(yī)學、計算機技術(shù)和通訊技術(shù)緊密結(jié)合的新型醫(yī)療服務模式[3]。遠程醫(yī)療系統(tǒng)通訊技術(shù)主要有公共交換電話網(wǎng)絡[4]、移動自組織網(wǎng)絡[5]、衛(wèi)星通信[6]和蜂窩移動通信網(wǎng)絡[7]等,但這些通訊技術(shù)有著各自的不足之處,例如公共電話網(wǎng)絡已基本淘汰;蜂窩移動通信網(wǎng)絡噪聲和干擾嚴重[8];移動自組織網(wǎng)絡無法保證數(shù)據(jù)傳輸穩(wěn)定性、可靠性[9];衛(wèi)星通信存在通信容量小、不可靠等問題[10]。
因此針對生理參數(shù)數(shù)據(jù)遠程實時傳輸過程中數(shù)據(jù)丟失、抗干擾能力不強、時延較大等問題,本文重點研究數(shù)據(jù)傳輸過程中的可靠性和安全性問題,提出基于云通訊平臺的遠程數(shù)據(jù)傳輸策略,實現(xiàn)多生理參數(shù)數(shù)據(jù)點對點的傳輸,提高了數(shù)據(jù)遠程傳輸?shù)男?,從而使健康監(jiān)護系統(tǒng)更加可靠和有效。
遠程監(jiān)護系統(tǒng)主要包括監(jiān)護端、云通訊平臺和遠程監(jiān)護端3部分[11],其結(jié)構(gòu)如圖1所示。監(jiān)護端由PC(上位機)、硬件監(jiān)測模塊組成,實現(xiàn)多生理參數(shù)的采集顯示以及網(wǎng)絡傳輸。云通訊平臺是監(jiān)護端與遠程監(jiān)護端的通訊橋梁[12],監(jiān)護系統(tǒng)通過云通訊技術(shù)實現(xiàn)實時數(shù)據(jù)的安全、準確、穩(wěn)定傳輸。遠程監(jiān)護端是用戶端,用戶通過平臺可遠程實時監(jiān)護患者的生理指標參數(shù)。遠程監(jiān)護系統(tǒng)數(shù)據(jù)傳輸包括2部分:1) 硬件監(jiān)測模塊與上位機的單向數(shù)據(jù)傳輸。2) 上位機到遠程監(jiān)護端的雙向數(shù)據(jù)傳輸。本文探討的數(shù)據(jù)傳輸策略是應用在上位機到遠程監(jiān)護平臺之間的雙向遠程數(shù)據(jù)傳輸,監(jiān)測模塊到上位機之間的近距離數(shù)據(jù)傳輸不予討論。
上位機和遠程監(jiān)護端是系統(tǒng)的2個客戶機,傳統(tǒng)的客戶機之間數(shù)據(jù)傳輸是通過服務器中轉(zhuǎn)傳輸,效率低下而且數(shù)據(jù)傳輸時耗大,不能滿足遠程監(jiān)護系統(tǒng)實時數(shù)據(jù)傳輸要求。針對數(shù)據(jù)實時傳輸問題,本文引入云通訊平臺作為數(shù)據(jù)傳輸?shù)拿浇閬韺崿F(xiàn)監(jiān)護系統(tǒng)的監(jiān)護端與遠程監(jiān)護端的數(shù)據(jù)通信[13]。云通訊技術(shù)改變傳統(tǒng)通過后臺服務器傳遞數(shù)據(jù)的方式,利用用戶設備中的socket直接連接傳輸,服務器保持通信雙方之間的套接字連接即可。生理參數(shù)數(shù)據(jù)通過socket直接點對點傳輸,減少數(shù)據(jù)中轉(zhuǎn)傳輸環(huán)節(jié),確保了數(shù)據(jù)傳輸?shù)臏蚀_性、實時性,提高了傳輸效率,可有效避免數(shù)據(jù)丟失、混亂問題,將傳輸時間損耗降到最低。同時,云通訊平臺采用HTTPS底層傳輸和私有二進制通訊協(xié)議及加密算法數(shù)據(jù)傳輸全程加密,數(shù)據(jù)傳輸更加安全,實時傳輸技術(shù)架構(gòu)圖如圖2。
傳輸機制是遠程數(shù)據(jù)傳輸策略的核心部分。本文基于云通訊技術(shù),設計并實現(xiàn)了一套穩(wěn)定可靠的遠程數(shù)據(jù)傳輸機制,為監(jiān)護系統(tǒng)多生理參數(shù)數(shù)據(jù)遠程實時傳輸保駕護航。
1.3.1 數(shù)據(jù)傳輸通訊協(xié)議
根據(jù)云通訊平臺和生理參數(shù)信號傳輸?shù)奶攸c,設計遠程數(shù)據(jù)傳輸通訊協(xié)議時,需要考慮數(shù)據(jù)傳輸?shù)膶崟r性、連續(xù)性[14]、正確性和完整性。為提高遠程通信雙方的數(shù)據(jù)傳輸量和傳輸效率,降低網(wǎng)絡的負載,通訊協(xié)議應盡可能地傳輸有效數(shù)據(jù)[15]。
協(xié)議的通訊報文類型主要有5種:上位機至遠程監(jiān)護端方向的請求報文、數(shù)據(jù)報文和結(jié)束報文,遠程監(jiān)護端至上位機方向的響應報文、反饋報文[16]。報文格式如圖3所示。
報文類型標識符數(shù)據(jù)發(fā)送方通訊名數(shù)據(jù)接收方通訊名
(a) 請求報文
(b) 數(shù)據(jù)報文
(c) 響應報文
(d) 結(jié)束報文
請求報文用于確定遠程監(jiān)護端是否在線。當上位機發(fā)送請求報文至遠程監(jiān)護端后收到回應,那么說明遠程監(jiān)護端在線,可以建立通訊。請求報文只會在建立通訊時發(fā)送一次,在數(shù)據(jù)實時傳輸期間不會再次發(fā)送。請求報文由報文類型標識符、數(shù)據(jù)發(fā)送方通訊名、數(shù)據(jù)接收方通訊名組成,其中數(shù)據(jù)發(fā)送方通訊名與數(shù)據(jù)接收方通訊名是用于客戶端之間身份確認,防止誤請求,增加數(shù)據(jù)傳輸安全性。報文類型標識符如表1所示。
表1 報文類型標識符Tab.1 Message type identifier
數(shù)據(jù)報文是多生理參數(shù)數(shù)據(jù)傳輸時的載體,報文結(jié)構(gòu)分為5部分:報文類型標識符、數(shù)據(jù)類型標識符、數(shù)據(jù)報文ID、數(shù)據(jù)包、校驗值,其中數(shù)字報文ID是具有特定規(guī)律的連續(xù)字符串。數(shù)據(jù)報文采用數(shù)據(jù)定量的格式,即采集的生理數(shù)據(jù)個數(shù)達設定目標個數(shù)時就打包成生理數(shù)據(jù)包發(fā)送,監(jiān)護結(jié)束時,未發(fā)送數(shù)據(jù)一次性打包發(fā)送,避免每采集一次就向遠程監(jiān)護端發(fā)送一次數(shù)據(jù),提高效率和降低網(wǎng)絡負載。數(shù)據(jù)類型標識符如表2所示。
表2 數(shù)據(jù)類型標識符Tab.2 Data type identifier
響應報文是遠程監(jiān)護端在線時,接收到上位機的請求報文后作出回應,表示平臺在線。響應報文由報文類型標識符、8位隨機數(shù)組成,其中8位隨機數(shù)是臨時隨機產(chǎn)生的,由通信雙發(fā)共同保存使用。
結(jié)束報文是監(jiān)護結(jié)束后監(jiān)護端發(fā)送的報文。當遠程監(jiān)護端接收到結(jié)束報文后,結(jié)束數(shù)據(jù)接收顯示,做好下一次接收請求報文準備。結(jié)束報文由報文類型標識符、數(shù)據(jù)發(fā)送方通訊名、數(shù)據(jù)接收方通訊名組成,通訊名用于確認客戶端身份,防止誤結(jié)束。
反饋報文是為了保證數(shù)據(jù)完整性而設計的遠程監(jiān)護端請求,由報文類型標識符、補發(fā)重發(fā)標識符、數(shù)據(jù)報文ID以及發(fā)送次數(shù)組成。數(shù)據(jù)報文校驗值校驗不通過,遠程監(jiān)護端就會向上位機請求重發(fā);數(shù)據(jù)報文丟失,遠程監(jiān)護端就會向上位機補發(fā)重發(fā),反饋標識符如表3所示。
表3 反饋標識符Tab.3 Feedback identifier
1.3.2 數(shù)據(jù)加密校驗機制
健康監(jiān)護系統(tǒng)中,生理數(shù)據(jù)是監(jiān)護對象的個人隱私,因此數(shù)據(jù)傳輸?shù)陌踩院涂煽啃杂葹橹匾T谶h程數(shù)據(jù)傳輸過程中,生理數(shù)據(jù)通過云通訊技術(shù)實現(xiàn)遠距離的傳輸,相對安全可靠,但究其本質(zhì)還是通過互聯(lián)網(wǎng)線路傳輸,因此有必要對數(shù)據(jù)再加上一層保護。根據(jù)云通訊平臺和監(jiān)護系統(tǒng)的特點,在通訊過程中對數(shù)據(jù)報文進行必要的加密、校驗來確保數(shù)據(jù)的安全性。
本文采用安全哈希算法(secure hash algorithm,SHA1)得到數(shù)據(jù)報文的數(shù)據(jù)摘要作為數(shù)據(jù)報文校驗值。安全哈希算法的原理是對于任意長度小于264位的字符串數(shù)據(jù),產(chǎn)生一個可用來驗證數(shù)據(jù)正確性的160位數(shù)據(jù)摘要。在遠程傳輸過程中,若是數(shù)據(jù)發(fā)生了變化,那么算法產(chǎn)生的數(shù)據(jù)摘要也會不一樣。報文添加校驗值之后,數(shù)據(jù)發(fā)送單元采用GZipStream算法無損壓縮數(shù)據(jù)報文,讓數(shù)據(jù)報文盡量緊湊,既保證了數(shù)據(jù)安全,又提高數(shù)據(jù)傳輸效率。
本文選擇高級加密標準(advanced encryption standard,AES)對稱加密算法對數(shù)據(jù)報文進行加密,AES算法的原理是基于排列和置換運算,排列是將數(shù)據(jù)重排, 置換是將某個數(shù)據(jù)單元替換成另外的單元[17]。同時,傳輸策略采用動態(tài)密鑰技術(shù),即系統(tǒng)臨時隨機生成AES需要的密鑰,進一步加強數(shù)據(jù)傳輸?shù)目煽啃裕岣吡藬?shù)據(jù)在傳輸過程中的被破解難度,數(shù)據(jù)加密校驗機制流程圖如圖4所示。
1.3.3 反饋機制
為防止數(shù)據(jù)傳輸過程中因網(wǎng)絡狀況造成數(shù)據(jù)丟失或者數(shù)據(jù)被破壞,本文提出反饋機制,校驗數(shù)據(jù)并向數(shù)據(jù)發(fā)送單元反饋,保證數(shù)據(jù)的完整性。
當遠程監(jiān)護端收到數(shù)據(jù)報文后,首先校對數(shù)據(jù)報文ID,當報文ID不連續(xù)時,即出現(xiàn)數(shù)據(jù)丟包的情況,遠程監(jiān)護端請求上位機補發(fā)缺失報文ID的數(shù)據(jù)報文,接收后再次校驗,若報文ID連續(xù),說明未出現(xiàn)數(shù)據(jù)丟包,則檢驗數(shù)據(jù)報文的校驗值。校驗值與重新計算的數(shù)據(jù)摘要一致,則接收該條數(shù)據(jù)報文,否則說明數(shù)據(jù)在傳輸過程中發(fā)生了改變,丟棄數(shù)據(jù)報文,請求上位機重新發(fā)送該報文ID的數(shù)據(jù),接收后同樣再次校驗。若同一條數(shù)據(jù)報文未能通過校驗次數(shù)達到設定值,那么通訊異常處理,反饋機制流程圖如圖5。
1.3.4 超時處理機制
本文設計了超時處理機制,防止通信過程中某一方因異常問題掉線,而另一方仍等待數(shù)據(jù)傳輸,占用系統(tǒng)設備和網(wǎng)絡資源,提高通信效率。超時處理機制規(guī)定:從建立通訊到通訊結(jié)束的過程中,通信雙方在最長時限1 min后,未收到數(shù)據(jù)響應,則通信雙方進入超時處理,自行處理數(shù)據(jù)或結(jié)束通訊,例如上位機1 min內(nèi)未收的到丟包反饋則可以刪除1 min前緩存的數(shù)據(jù);上位機發(fā)送請求報文后,等待1 min,未收到響應報文,則通訊結(jié)束;遠程監(jiān)護端在數(shù)據(jù)接收過程中,若1 min內(nèi)未收到數(shù)據(jù),則通訊結(jié)束。
1.3.5 多隊列數(shù)據(jù)緩存機制
遠程監(jiān)護系統(tǒng)數(shù)據(jù)傳輸?shù)奶攸c是數(shù)據(jù)發(fā)送和接收數(shù)據(jù)的速率不一致,導致生理數(shù)據(jù)顯示不具有連續(xù)性,本文設計并實現(xiàn)了多隊列數(shù)據(jù)緩存機制,最大限度地保證了生理數(shù)據(jù)顯示的連續(xù)性。
多隊列數(shù)據(jù)緩存機制是基于生產(chǎn)者-消費者模式設計的。監(jiān)護端生產(chǎn)數(shù)據(jù),遠程監(jiān)護平臺消費數(shù)據(jù),生產(chǎn)者和消費者之間需設置一個緩沖區(qū),作為一個中介。監(jiān)護端把數(shù)據(jù)存入緩沖區(qū),而遠程監(jiān)護端再以均勻的時間間隔從緩沖區(qū)取出數(shù)據(jù)進行顯示分析,這樣就保證了數(shù)據(jù)顯示的連續(xù)性。同時考慮到生理數(shù)據(jù)種類較多,因此采用多緩存隊列模式,同一類型數(shù)據(jù)存入同一隊列,數(shù)據(jù)按照先進先出的原則,保證次序不混亂。
多隊列緩存機制根據(jù)報文的緊急性劃分等級,實現(xiàn)數(shù)據(jù)傳輸?shù)亩鄡?yōu)先級隊列設置[18],對于補發(fā)、重發(fā)數(shù)據(jù)報文與反饋報文這類緊急消息可直接改變隊列的數(shù)據(jù)位置保證數(shù)據(jù)的連續(xù)性和傳輸效率[19]。
多隊列緩存機制能夠有效防止通訊雙方收發(fā)速率不匹配造成的數(shù)據(jù)顯示不連續(xù)、混亂問題。而且遠程監(jiān)護端可以直接從相應的緩存隊列中讀取特定類型的數(shù)據(jù),提升數(shù)據(jù)“消費”能力,降低時延。緩存機制設置了2個通訊報文隊列和多個生理數(shù)據(jù)報文隊列,數(shù)據(jù)隊列結(jié)構(gòu)如圖6。
上位機接入云通訊平臺后,將上位機通訊名和目標通訊名生成請求報文,發(fā)送給遠程監(jiān)護端驗證,等待遠程監(jiān)護端回應響應報文,若接收到響應報文,則分離出響應報文中的8位隨機數(shù)作為加密算法的密鑰。當上位機接收到硬件監(jiān)測模塊的生理數(shù)據(jù)個數(shù)達設定值,生成“報文類型標識符+數(shù)據(jù)類型標識符+數(shù)據(jù)報文ID+生理數(shù)據(jù)包”不完整的數(shù)據(jù),采用安全哈希算法得到報文的160位數(shù)據(jù)摘要,作為數(shù)據(jù)報文校驗值,形成完整的數(shù)據(jù)報文,然后采用GZipStream算法無損壓縮數(shù)據(jù)報文,節(jié)約空間,最后采用AES對稱加密算法,使用8位隨機數(shù)對報文加密發(fā)送。
經(jīng)過添加校驗位、壓縮、加密后的數(shù)據(jù)報文,通過云通訊技術(shù)發(fā)送給遠程監(jiān)護端,若是上位機未收到反饋報文,說明傳輸過程中數(shù)據(jù)未收到破壞或丟失,遠程監(jiān)護端接收成功,否則需要根據(jù)反饋報文的數(shù)據(jù)報文ID,從緩存隊列中找到數(shù)據(jù)報文重新發(fā)送。發(fā)送數(shù)據(jù)流程圖如圖7所示。
遠程監(jiān)護端接入云通訊平臺后,接收到上位機的請求報文,分離出請求報文中雙方的通訊名進行身份驗證,防止誤接收。身份驗證通過后,隨機生成8位隨機數(shù)形成響應報文回應上位機,同時8位隨機數(shù)作為數(shù)據(jù)報文的解密密鑰保存。遠程監(jiān)護端接收到數(shù)據(jù)報文,首先對數(shù)據(jù)報文進行解密、解壓,然后將數(shù)據(jù)報文ID、生理數(shù)據(jù)包、校驗值分離,校對數(shù)據(jù)報文ID是否連續(xù)、校對數(shù)據(jù)摘要是否一致。若校驗通過,說明生理數(shù)據(jù)在傳輸過程中保持完整,然后根據(jù)報文類型標識符,將數(shù)據(jù)存入相應的緩存隊列中,否則將該條數(shù)據(jù)報文ID與反饋標識符、發(fā)送次數(shù)形成反饋報文,發(fā)給上位機,要求重發(fā)數(shù)據(jù)報文。如果該條數(shù)據(jù)報文ID發(fā)送次數(shù)達到3次,那么作通訊異常處理,遠程監(jiān)護端界面顯示錯誤信息,提示用戶。
同時,為實現(xiàn)生理參數(shù)數(shù)據(jù)的實時連續(xù)顯示,遠程監(jiān)護端需要一個“工作者”實時監(jiān)控緩存隊列中的數(shù)據(jù),當隊列中緩存了數(shù)據(jù)時,“工作者”定時讀取數(shù)據(jù)、刷新界面顯示數(shù)據(jù),這個“工作者”就是線程。遠程監(jiān)護端中有2類線程:用戶界面線程和工作者線程,工作者線程是輔助線程,負責完成后臺任務[20-21]。系統(tǒng)采用多線程技術(shù),創(chuàng)建一個工作者線程,定時循環(huán)監(jiān)控緩存隊列中的數(shù)據(jù)。遠程監(jiān)護端接收數(shù)據(jù)流程圖如圖8所示。
為驗證本文提出的遠程數(shù)據(jù)傳輸策略的有效性,將策略方法應用于遠程監(jiān)護系統(tǒng),多次進行實例測試,檢驗數(shù)據(jù)傳輸?shù)目煽啃院蛯崟r性。廣域網(wǎng)環(huán)境下,以心電信號數(shù)據(jù)傳輸為例,選擇2臺PC,一臺作為上位機,另一臺作為遠程監(jiān)護端,分別接入云通訊平臺,在各種條件下,對硬件監(jiān)測模塊采集的心電信號數(shù)據(jù)進行遠程實時數(shù)據(jù)傳輸測試。如圖9是某次試驗同一時刻截取的監(jiān)護系統(tǒng)軟件界面,其中圖9(a)是上位機采集顯示心電數(shù)據(jù),并且同步向遠程監(jiān)護端發(fā)送數(shù)據(jù)的界面,圖9(b)是遠程監(jiān)護端接收心電數(shù)據(jù)顯示的界面,對比發(fā)現(xiàn):在截取圖片時間存在誤差的情況下,圖9(a)和(b)中的心電數(shù)據(jù)波形一致,波形平滑連續(xù),無基漂,得到的心率數(shù)值也相等,數(shù)據(jù)延時較小,大概延遲半個心電波形。圖10顯示了數(shù)據(jù)在發(fā)送過程中的產(chǎn)生的時間延遲,數(shù)據(jù)包發(fā)送時延在100 ms上下浮動。
實驗測試結(jié)果表明,網(wǎng)絡狀況良好的情況下,本文提出基于云通訊技術(shù)的傳輸策略在遠程數(shù)據(jù)傳輸?shù)臏蚀_性、完整性、連續(xù)性和實時性方面,都滿足了多生理參數(shù)遠程監(jiān)護系統(tǒng)的要求,傳輸方法安全穩(wěn)定。
本文研究了遠程監(jiān)護系統(tǒng)在數(shù)據(jù)傳輸方面的問題,以實時傳輸和真實再現(xiàn)生理數(shù)據(jù)為目的,提出并實現(xiàn)了一種新的基于云通訊平臺的監(jiān)護系統(tǒng)多生理參數(shù)實時傳輸策略,重點研制了數(shù)據(jù)傳輸通訊協(xié)議、加密校驗機制、反饋機制、多隊列數(shù)據(jù)緩存機制等多種傳輸機制,提高了遠程數(shù)據(jù)傳輸?shù)陌踩浴蚀_性、完整性和實時性。策略方法經(jīng)過遠程監(jiān)護系統(tǒng)一系列的實例測試,數(shù)據(jù)遠程傳輸穩(wěn)定、準確,論證了該方法滿足監(jiān)護系統(tǒng)多生理參數(shù)監(jiān)護要求,提高了監(jiān)護系統(tǒng)的穩(wěn)定性和健壯性,在遠程監(jiān)護系統(tǒng)領(lǐng)域的發(fā)展前景遠大。