孫 杰,何征嶺,張鵬飛,王辰碩,夏 攀,方 震
(1.中國科學(xué)院空天信息創(chuàng)新研究院傳感技術(shù)國家重點實驗室,北京 100190;2.中國科學(xué)院大學(xué),北京 100049)
慢性阻塞性肺疾病(以下簡稱“慢阻肺”)是一種常見的、可預(yù)防和可治療的疾病,目前是世界上第四大致死原因[1]。慢阻肺病癥有不完全可逆性,只能通過藥物或者治療緩解癥狀[2],同時慢阻肺患者的癥狀和肺功能會周期性惡化加重,持續(xù)數(shù)天[3],稱為急性加重,因此慢阻肺患者需要進行長期自我管理[4]。但慢阻肺患者無法主觀分辨日常病程變化,需要通過測量自身的肺功能參數(shù)實現(xiàn)自我管理。目前肺活量測量法是醫(yī)護人員對慢阻肺病情評定的主要方法[1],但是肺活量測量僅能測量患者疾病的嚴(yán)重程度,并不能得到患者的綜合健康狀況[5],故僅用肺活量測量法是遠遠不夠的[6]。
目前Pinto 等[5]使用肺活量測量法判定患者慢阻肺等級,并通過慢阻肺全球倡議(globalinitiativefor chronic obstructive lung disease,GOLD)等級評定方法為患者分級,但是其使用的為FEV1/FEV6(1 s 呼氣容積/6 s 呼氣容積)作為判定標(biāo)準(zhǔn),未使用GOLD 最新規(guī)定的判定標(biāo)準(zhǔn)FEV1/FVC(1 s 呼氣容積/用力肺活量),并且僅對患者進行分類測量及預(yù)警,并未給出相關(guān)診療意見。Merone 等[7]遠程收集患者的心率、血氧數(shù)據(jù)以及問卷調(diào)查數(shù)據(jù),通過內(nèi)部決策支持系統(tǒng)為患者進行急性加重預(yù)警,但該系統(tǒng)并未對患者慢阻肺等級進行分類,僅對患者癥狀進行判斷并給出相應(yīng)的預(yù)警信息,無法對患者進行獨立的病情診斷并給出治療意見。鑒于此,本文設(shè)計并實現(xiàn)了一種基于Android 的集診斷、自我管理以及遠程監(jiān)護于一體的慢阻肺管理系統(tǒng)。
慢阻肺管理系統(tǒng)由便攜式多參數(shù)肺功能儀[8]、患者Android 端、醫(yī)生Android 端以及服務(wù)器組成,如圖1所示。本系統(tǒng)針對不同應(yīng)用場景有不同的功能,例如在家時可以幫助患者進行自我管理,在社區(qū)時可以幫助測量用戶的患病等級,在醫(yī)院時可以輔助醫(yī)生進行遠程監(jiān)護等。
圖1 慢阻肺管理系統(tǒng)總體結(jié)構(gòu)圖
慢阻肺管理系統(tǒng)使用便攜式多參數(shù)肺功能儀來獲取患者的肺功能參數(shù)、血氧值以及呼氣末二氧化碳體積分?jǐn)?shù)等相關(guān)呼吸參數(shù),通過低功耗藍牙(bluetooth low energy,BLE)傳遞至患者Android 端,之后通過問卷調(diào)查界面獲取患者的病癥數(shù)據(jù)以及急性加重風(fēng)險,使用GOLD 標(biāo)準(zhǔn)評估患者的綜合慢阻肺等級,并將所有數(shù)據(jù)存儲至Android 端,實現(xiàn)幫助患者診斷以及自我管理的目的。同時所有的患者數(shù)據(jù)上傳至服務(wù)器,方便醫(yī)生通過醫(yī)生Android 端軟件查詢患者數(shù)據(jù),實現(xiàn)醫(yī)生對患者的遠程監(jiān)護功能。
慢阻肺管理系統(tǒng)本地數(shù)據(jù)存儲主要采用SharedPreferences 以及SQLite 2 種數(shù)據(jù)庫,分別針對不同數(shù)據(jù)類型進行存儲操作,其中SharedPreferences 用于存儲系統(tǒng)配置信息,SQLite 用于存儲患者的測量數(shù)據(jù)。Android 端進行數(shù)據(jù)上傳時先將數(shù)據(jù)轉(zhuǎn)為JSON格式并使用自定義API 接口打包,通過Okhttp 框架搭建軟件客戶端并使用Retrofit 協(xié)議發(fā)送至服務(wù)器。
本系統(tǒng)Android 端采用Android Studio 平臺,通過Java 語言編程搭建,采用MVP(Model-View-Presenter)設(shè)計模式,具有耦合性低的優(yōu)點。系統(tǒng)功能結(jié)構(gòu)圖如圖2 所示,其中患者端分為4 個模塊,分別為天氣信息模塊、呼氣測試模塊、問卷調(diào)查模塊和歷史記錄模塊。
圖2 慢阻肺管理系統(tǒng)功能架構(gòu)圖
由于Android 6.0 系統(tǒng)加入了危險權(quán)限管理功能,故在使用一些涉及到用戶隱私方面的操作時,需要獲取用戶的授權(quán)才能使用。因此本系統(tǒng)在首次運行時需要對以下權(quán)限進行申請:
(1)授權(quán)用于定位模塊的權(quán)限:
(2)授權(quán)用于藍牙模塊的權(quán)限:
(3)授權(quán)用于網(wǎng)絡(luò)通信的權(quán)限:
(4)授權(quán)用于讀寫緩存的權(quán)限:
為了實現(xiàn)遠程監(jiān)護,醫(yī)生需要實時了解患者的相關(guān)參數(shù)。當(dāng)醫(yī)生端發(fā)起一個查詢指令時,醫(yī)生端在Retrofit 協(xié)議中封裝檢索條件后發(fā)送至服務(wù)器,當(dāng)服務(wù)器收到Retrofit 協(xié)議中的檢索信息后,通過RequestBody 返回患者數(shù)據(jù)。醫(yī)生端通過GeneralResponse 解析患者數(shù)據(jù)后通過ListView 和Dialog 界面進行顯示,如圖3 所示。
圖3 醫(yī)生端應(yīng)用界面
2.2.1 天氣信息模塊
慢阻肺患者對于天氣狀態(tài)極其敏感,為了給予慢阻肺患者更好的出行建議,本系統(tǒng)采用基于高德地圖定位的SDK 包設(shè)計天氣信息模塊。天氣信息模塊采用GPS+基站定位+Wi-Fi 定位的混合定位模式,使用Jar 包來實現(xiàn)相關(guān)功能。在使用高德地圖SDK 包之前需要先通過本系統(tǒng)的SHA1 安全碼以及Package Name 向高德地圖的API 控制臺申請高德地圖定位API key,并在AndroidManifest.xml 的metadata 進行API 說明,從而獲取高德地圖的定位功能。
當(dāng)項目導(dǎo)入高德地圖的Jar 包后首先初始化Android SDK,SDK 會產(chǎn)生LocationClient。通過對LocationClient 設(shè)置LocationListener 監(jiān)聽器來對系統(tǒng)終端進行定位,并將監(jiān)聽獲得的數(shù)據(jù)進行解析,將解析后的定位數(shù)據(jù)通過超文本傳輸協(xié)議(hypertext transport protocol,HTTP)發(fā)送至天氣信息服務(wù)器API 端口。該端口也需要通過Package Name 申請Webkey,并通過在HTTP 中封裝Webkey 獲取天氣信息數(shù)據(jù)包,之后對數(shù)據(jù)包進行解析并將解析的出行建議顯示在界面中,如圖4 所示??梢酝ㄟ^上下滑動操作來詳細瀏覽所有的天氣信息以及出行建議信息,也可以通過下拉操作刷新界面更新最新的天氣信息等。
圖4 天氣信息模塊應(yīng)用界面
2.2.2 呼氣測試模塊
呼氣測試模塊包括測量肺功能參數(shù)、測量血氧、測量脈率、測量呼氣末二氧化碳、測量呼吸率、綜合評估慢阻肺等級、存儲并上傳患者數(shù)據(jù)、急性加重預(yù)警等功能。
2.2.2.1 數(shù)據(jù)接收
慢阻肺患者日常生活中肺功能狀態(tài)的變化不容易通過主觀察覺,因此需要通過相關(guān)肺功能檢查來確定病情變化情況。本系統(tǒng)的肺功能參數(shù)主要通過便攜式多參數(shù)肺功能儀測量,測量原理如圖5 所示。通過人體吹氣的氣流信號帶動渦輪轉(zhuǎn)動,渦輪轉(zhuǎn)動引起光敏發(fā)光二極管的脈沖信號,測量脈沖信號變化就可獲得肺功能參數(shù)[9];通過其指夾式血氧儀接口和呼氣末二氧化碳接口獲取對應(yīng)的呼氣參數(shù)。參數(shù)獲取完成后便攜式多參數(shù)肺功能儀通過藍牙將參數(shù)傳輸至Android 端。由于本系統(tǒng)傳輸?shù)膮?shù)較多,而BLE 協(xié)議規(guī)定單次最多發(fā)送20 個8 bit 的數(shù)據(jù),因此數(shù)據(jù)需分2 次發(fā)送,本系統(tǒng)設(shè)定的傳輸協(xié)議如圖6 所示。
圖5 肺功能參數(shù)采集原理
通過使用該數(shù)據(jù)協(xié)議可以實現(xiàn)患者關(guān)鍵呼吸參數(shù)的傳輸。但在實際測試中發(fā)現(xiàn)使用BLE 連接時標(biāo)志位的不穩(wěn)定性會導(dǎo)致數(shù)據(jù)讀取錯誤,故本系統(tǒng)采用重發(fā)送的解決方案,即將包含標(biāo)志位的數(shù)據(jù)連續(xù)發(fā)送2 遍,后經(jīng)檢測未發(fā)現(xiàn)數(shù)據(jù)錯誤。
圖6 藍牙數(shù)據(jù)協(xié)議
為保證數(shù)據(jù)實時顯示,本模塊采用Android 平臺中的Server 組件。藍牙連接成功后,后臺啟動Server組件并使用BleManager 對數(shù)據(jù)接收進行監(jiān)聽,當(dāng)接收到數(shù)據(jù)后通過上述協(xié)議解析并將其發(fā)送至顯示界面。根據(jù)文獻[5],當(dāng)本系統(tǒng)監(jiān)測到FEV1 值低于預(yù)計值的50%,則推薦患者進行血氧檢測;若監(jiān)測到患者當(dāng)前血氧值低于92%,系統(tǒng)將發(fā)出警報并推薦患者及時去醫(yī)院就診,實現(xiàn)急性加重預(yù)警功能。
藍牙數(shù)據(jù)接收界面如圖7 所示,用戶通過點擊藍牙圖標(biāo)進入藍牙搜索界面,進行藍牙連接,連接后當(dāng)使用便攜式多參數(shù)肺功能儀測量肺功能參數(shù)時將會實時在Android 端界面更新。
圖7 藍牙數(shù)據(jù)接收界面
2.2.2.2 數(shù)據(jù)處理
根據(jù)GOLD 標(biāo)準(zhǔn),慢阻肺綜合評估標(biāo)準(zhǔn)主要分為3 種:氣流受限程度評估、病癥狀態(tài)評估以及急性加重風(fēng)險評估。
(1)氣流受限程度評估。
目前判斷氣流受限程度的主要客觀指標(biāo)就是進行肺功能檢查。肺功能檢查是讓被測試患者吸入支氣管擴張劑后測量FEV1 以及FVC,當(dāng)被測試患者的FEV1/FVC<70%,則確認(rèn)患者患有慢阻肺?;颊邭饬魇芟蕹潭扰袛鄻?biāo)準(zhǔn)詳見表1。
使用便攜式多參數(shù)肺功能儀測量患者的肺功能參數(shù)并通過藍牙傳輸至Android 端后,患者輸入自身的生理數(shù)據(jù)獲取FEV1 預(yù)測值等信息,最終通過相關(guān)算法獲得患者的氣流受限狀態(tài)等級。
(2)病癥狀態(tài)評估。
采用慢阻肺評估測試(COPD assessment text,CAT)和改良版英國醫(yī)學(xué)委員會(Modified Medical Research Council,MMRC)呼吸問卷對患者的癥狀進行評估。同時本系統(tǒng)額外增加一個慢阻肺急性加重(acute exacerbation of chronic obstructive pulmonary disease,AECOPD)問卷用于記錄患者近1 a 的急性加重次數(shù)和住院次數(shù)。
表1 慢阻肺患者氣流受限程度判斷標(biāo)準(zhǔn)
(3)急性加重風(fēng)險評估。
慢阻肺患者的急性加重主要是指患者在短期內(nèi)病情急劇惡化,從而導(dǎo)致癥狀惡化以及肺功能惡化。癥狀惡化主要表現(xiàn)為患者咳嗽增多、咳痰增多、呼吸急促等,肺功能惡化主要表現(xiàn)為氣流受限程度增加。對慢阻肺患者急性加重風(fēng)險的主要評估方法是評估患者近1 a 急性加重的次數(shù)以及入院的次數(shù)。根據(jù)GOLD 標(biāo)準(zhǔn),慢阻肺綜合評估標(biāo)準(zhǔn)詳見表2。
表2 慢阻肺綜合評估標(biāo)準(zhǔn)
因為上述3 種評估標(biāo)準(zhǔn)為當(dāng)前醫(yī)學(xué)通用的慢阻肺評估標(biāo)準(zhǔn),故通過結(jié)合上述3 種評估標(biāo)準(zhǔn)建立本系統(tǒng)慢阻肺綜合評估模型。該模型首先判斷患者近1 a 急性加重的次數(shù),通過該參數(shù)判斷患者急性加重的風(fēng)險,若患者急性加重次數(shù)<1 次或者≥2 次時,直接通過調(diào)查問卷的評分判斷患者的病癥狀態(tài),從而得到患者的綜合評估等級。當(dāng)患者近1 a 因急性加重住院1 次時,該模型通過患者的氣流受限等級輔助判斷患者的急性加重風(fēng)險以及癥狀;當(dāng)患者氣流受限等級為GOLD1 和GOLD2 級時,認(rèn)為患者具有低風(fēng)險,當(dāng)患者為GOLD3 和GOLD4 級時,認(rèn)為患者具有高風(fēng)險。
患者病情等級判斷界面如圖8 所示,當(dāng)用戶測量完自身的肺功能參數(shù)并填寫癥狀數(shù)據(jù)后可以獲得自身的肺功能綜合評估等級以及急性加重預(yù)警信息。
2.2.3 問卷調(diào)查模塊
圖8 患者病情等級判斷界面
慢阻肺患者不僅需要對自身肺功能狀態(tài)進行測量與記錄,還需要對自身的癥狀信息進行記錄,但大多患者無法進行科學(xué)記錄。本文通過3 種問卷調(diào)查幫助患者科學(xué)、合理地記錄自身癥狀變化。本模塊通過Button.OnClick 函數(shù)觸發(fā)不同問卷的Activity,采用Intent實現(xiàn)患者對應(yīng)問卷之間的切換,如圖9 所示?;颊咄ㄟ^點擊按鈕進入對應(yīng)的問卷界面,根據(jù)自身的實際病情點擊相應(yīng)的選項,最后完成問卷調(diào)查的填寫及保存。
圖9 問卷調(diào)查模塊應(yīng)用界面
2.2.4 歷史記錄模塊
慢阻肺患者不但需要記錄自身相關(guān)的病情數(shù)據(jù),也需要對歷史記錄的病情數(shù)據(jù)進行實時查詢以及對誤操作或者錯誤的歷史數(shù)據(jù)進行刪除。為避免影響后續(xù)測量評估,設(shè)計歷史記錄模塊管理歷史病情數(shù)據(jù)。使用DatePicker 獲取查詢時間數(shù)據(jù),通過時間數(shù)據(jù)檢索數(shù)據(jù)庫并使用ListView 中的MySimple Adapter 適配器通過Dialog 顯示詳細數(shù)據(jù),應(yīng)用界面如圖10 所示。
圖10 歷史記錄模塊應(yīng)用界面
采用Nginx 作為本系統(tǒng)的反向服務(wù)器,用戶可以直接訪問Nginx 或?qū)?shù)據(jù)直接發(fā)送至Nginx,之后通過Gunicorn 服務(wù)器轉(zhuǎn)為并行進程。通過該框架可以實現(xiàn)并發(fā)用戶的并行數(shù)據(jù)請求,通過并行數(shù)據(jù)請求可以直接訪問服務(wù)器數(shù)據(jù)庫。由于服務(wù)器可能會處理多個并發(fā)數(shù)據(jù),故服務(wù)器端設(shè)置多個并行進程,每個進程單獨幫助存儲或讀取患者數(shù)據(jù),具體框架圖如圖11 所示。
圖11 服務(wù)器框架圖
在硬件方面,本系統(tǒng)使用的便攜式多參數(shù)肺功能儀功能全面、體積小巧,通過對408 名患者進行FVC、FEV1 等參數(shù)的測量,并與標(biāo)準(zhǔn)肺功能儀進行數(shù)據(jù)對比,得到FVC、FEV1、FEV1/FVC 的相關(guān)系數(shù)分別為0.99、0.99、0.97,呈顯著相關(guān),具有很好的一致性。診斷氣流受限患者的敏感度和特異度都很高,分別為92.95%和94.80%。在軟件方面,算法評估模型完全符合GOLD 標(biāo)準(zhǔn),具有權(quán)威性。并且軟件整體結(jié)構(gòu)采用企業(yè)級的MVP 結(jié)構(gòu),具有極低的耦合性。通過測試,系統(tǒng)運行時平均占用內(nèi)存較低(2 583 MiB),可以作為常用軟件。另外服務(wù)器端采用分布式服務(wù)器布局,具有高性能及高并發(fā)性。
隨著慢阻肺患者數(shù)量的逐年增加,慢阻肺治療的相關(guān)醫(yī)療資源負擔(dān)將越來越大。移動醫(yī)療是解決當(dāng)前醫(yī)療資源不足問題較為便捷的方法,本文研發(fā)的基于Android 的慢阻肺管理系統(tǒng)結(jié)合了肺功能測量、病情管理、數(shù)據(jù)存儲及上傳、數(shù)據(jù)處理等慢阻肺治療管理相關(guān)功能,可以幫助慢阻肺患者在家中進行自我管理、輔助醫(yī)療工作人員在社區(qū)進行肺功能測量診斷工作、輔助醫(yī)生在醫(yī)院進行遠程監(jiān)護,應(yīng)用前景較大,有較強的實用意義。但本系統(tǒng)服務(wù)器端僅作為存儲和傳輸端口,并未進行數(shù)據(jù)處理,相關(guān)模型算法處理均在Android 端實現(xiàn),數(shù)據(jù)量較大時對Android 端要求較高,因此后續(xù)將進一步優(yōu)化,使模型算法轉(zhuǎn)向服務(wù)器端處理。