孫 杰,何征嶺,張鵬飛,王辰碩,夏 攀,方 震
(1.中國科學院空天信息創新研究院傳感技術國家重點實驗室,北京 100190;2.中國科學院大學,北京 100049)
慢性阻塞性肺疾?。ㄒ韵潞喎Q“慢阻肺”)是一種常見的、可預防和可治療的疾病,目前是世界上第四大致死原因[1]。慢阻肺病癥有不完全可逆性,只能通過藥物或者治療緩解癥狀[2],同時慢阻肺患者的癥狀和肺功能會周期性惡化加重,持續數天[3],稱為急性加重,因此慢阻肺患者需要進行長期自我管理[4]。但慢阻肺患者無法主觀分辨日常病程變化,需要通過測量自身的肺功能參數實現自我管理。目前肺活量測量法是醫護人員對慢阻肺病情評定的主要方法[1],但是肺活量測量僅能測量患者疾病的嚴重程度,并不能得到患者的綜合健康狀況[5],故僅用肺活量測量法是遠遠不夠的[6]。
目前Pinto 等[5]使用肺活量測量法判定患者慢阻肺等級,并通過慢阻肺全球倡議(globalinitiativefor chronic obstructive lung disease,GOLD)等級評定方法為患者分級,但是其使用的為FEV1/FEV6(1 s 呼氣容積/6 s 呼氣容積)作為判定標準,未使用GOLD 最新規定的判定標準FEV1/FVC(1 s 呼氣容積/用力肺活量),并且僅對患者進行分類測量及預警,并未給出相關診療意見。Merone 等[7]遠程收集患者的心率、血氧數據以及問卷調查數據,通過內部決策支持系統為患者進行急性加重預警,但該系統并未對患者慢阻肺等級進行分類,僅對患者癥狀進行判斷并給出相應的預警信息,無法對患者進行獨立的病情診斷并給出治療意見。鑒于此,本文設計并實現了一種基于Android 的集診斷、自我管理以及遠程監護于一體的慢阻肺管理系統。
慢阻肺管理系統由便攜式多參數肺功能儀[8]、患者Android 端、醫生Android 端以及服務器組成,如圖1所示。本系統針對不同應用場景有不同的功能,例如在家時可以幫助患者進行自我管理,在社區時可以幫助測量用戶的患病等級,在醫院時可以輔助醫生進行遠程監護等。

圖1 慢阻肺管理系統總體結構圖
慢阻肺管理系統使用便攜式多參數肺功能儀來獲取患者的肺功能參數、血氧值以及呼氣末二氧化碳體積分數等相關呼吸參數,通過低功耗藍牙(bluetooth low energy,BLE)傳遞至患者Android 端,之后通過問卷調查界面獲取患者的病癥數據以及急性加重風險,使用GOLD 標準評估患者的綜合慢阻肺等級,并將所有數據存儲至Android 端,實現幫助患者診斷以及自我管理的目的。同時所有的患者數據上傳至服務器,方便醫生通過醫生Android 端軟件查詢患者數據,實現醫生對患者的遠程監護功能。
慢阻肺管理系統本地數據存儲主要采用SharedPreferences 以及SQLite 2 種數據庫,分別針對不同數據類型進行存儲操作,其中SharedPreferences 用于存儲系統配置信息,SQLite 用于存儲患者的測量數據。Android 端進行數據上傳時先將數據轉為JSON格式并使用自定義API 接口打包,通過Okhttp 框架搭建軟件客戶端并使用Retrofit 協議發送至服務器。
本系統Android 端采用Android Studio 平臺,通過Java 語言編程搭建,采用MVP(Model-View-Presenter)設計模式,具有耦合性低的優點。系統功能結構圖如圖2 所示,其中患者端分為4 個模塊,分別為天氣信息模塊、呼氣測試模塊、問卷調查模塊和歷史記錄模塊。

圖2 慢阻肺管理系統功能架構圖
由于Android 6.0 系統加入了危險權限管理功能,故在使用一些涉及到用戶隱私方面的操作時,需要獲取用戶的授權才能使用。因此本系統在首次運行時需要對以下權限進行申請:
(1)授權用于定位模塊的權限:

(2)授權用于藍牙模塊的權限:

(3)授權用于網絡通信的權限:

(4)授權用于讀寫緩存的權限:

為了實現遠程監護,醫生需要實時了解患者的相關參數。當醫生端發起一個查詢指令時,醫生端在Retrofit 協議中封裝檢索條件后發送至服務器,當服務器收到Retrofit 協議中的檢索信息后,通過RequestBody 返回患者數據。醫生端通過GeneralResponse 解析患者數據后通過ListView 和Dialog 界面進行顯示,如圖3 所示。

圖3 醫生端應用界面
2.2.1 天氣信息模塊
慢阻肺患者對于天氣狀態極其敏感,為了給予慢阻肺患者更好的出行建議,本系統采用基于高德地圖定位的SDK 包設計天氣信息模塊。天氣信息模塊采用GPS+基站定位+Wi-Fi 定位的混合定位模式,使用Jar 包來實現相關功能。在使用高德地圖SDK 包之前需要先通過本系統的SHA1 安全碼以及Package Name 向高德地圖的API 控制臺申請高德地圖定位API key,并在AndroidManifest.xml 的metadata 進行API 說明,從而獲取高德地圖的定位功能。
當項目導入高德地圖的Jar 包后首先初始化Android SDK,SDK 會產生LocationClient。通過對LocationClient 設置LocationListener 監聽器來對系統終端進行定位,并將監聽獲得的數據進行解析,將解析后的定位數據通過超文本傳輸協議(hypertext transport protocol,HTTP)發送至天氣信息服務器API 端口。該端口也需要通過Package Name 申請Webkey,并通過在HTTP 中封裝Webkey 獲取天氣信息數據包,之后對數據包進行解析并將解析的出行建議顯示在界面中,如圖4 所示??梢酝ㄟ^上下滑動操作來詳細瀏覽所有的天氣信息以及出行建議信息,也可以通過下拉操作刷新界面更新最新的天氣信息等。

圖4 天氣信息模塊應用界面
2.2.2 呼氣測試模塊
呼氣測試模塊包括測量肺功能參數、測量血氧、測量脈率、測量呼氣末二氧化碳、測量呼吸率、綜合評估慢阻肺等級、存儲并上傳患者數據、急性加重預警等功能。
2.2.2.1 數據接收
慢阻肺患者日常生活中肺功能狀態的變化不容易通過主觀察覺,因此需要通過相關肺功能檢查來確定病情變化情況。本系統的肺功能參數主要通過便攜式多參數肺功能儀測量,測量原理如圖5 所示。通過人體吹氣的氣流信號帶動渦輪轉動,渦輪轉動引起光敏發光二極管的脈沖信號,測量脈沖信號變化就可獲得肺功能參數[9];通過其指夾式血氧儀接口和呼氣末二氧化碳接口獲取對應的呼氣參數。參數獲取完成后便攜式多參數肺功能儀通過藍牙將參數傳輸至Android 端。由于本系統傳輸的參數較多,而BLE 協議規定單次最多發送20 個8 bit 的數據,因此數據需分2 次發送,本系統設定的傳輸協議如圖6 所示。

圖5 肺功能參數采集原理
通過使用該數據協議可以實現患者關鍵呼吸參數的傳輸。但在實際測試中發現使用BLE 連接時標志位的不穩定性會導致數據讀取錯誤,故本系統采用重發送的解決方案,即將包含標志位的數據連續發送2 遍,后經檢測未發現數據錯誤。

圖6 藍牙數據協議
為保證數據實時顯示,本模塊采用Android 平臺中的Server 組件。藍牙連接成功后,后臺啟動Server組件并使用BleManager 對數據接收進行監聽,當接收到數據后通過上述協議解析并將其發送至顯示界面。根據文獻[5],當本系統監測到FEV1 值低于預計值的50%,則推薦患者進行血氧檢測;若監測到患者當前血氧值低于92%,系統將發出警報并推薦患者及時去醫院就診,實現急性加重預警功能。
藍牙數據接收界面如圖7 所示,用戶通過點擊藍牙圖標進入藍牙搜索界面,進行藍牙連接,連接后當使用便攜式多參數肺功能儀測量肺功能參數時將會實時在Android 端界面更新。

圖7 藍牙數據接收界面
2.2.2.2 數據處理
根據GOLD 標準,慢阻肺綜合評估標準主要分為3 種:氣流受限程度評估、病癥狀態評估以及急性加重風險評估。
(1)氣流受限程度評估。
目前判斷氣流受限程度的主要客觀指標就是進行肺功能檢查。肺功能檢查是讓被測試患者吸入支氣管擴張劑后測量FEV1 以及FVC,當被測試患者的FEV1/FVC<70%,則確認患者患有慢阻肺?;颊邭饬魇芟蕹潭扰袛鄻藴试斠姳?。
使用便攜式多參數肺功能儀測量患者的肺功能參數并通過藍牙傳輸至Android 端后,患者輸入自身的生理數據獲取FEV1 預測值等信息,最終通過相關算法獲得患者的氣流受限狀態等級。
(2)病癥狀態評估。
采用慢阻肺評估測試(COPD assessment text,CAT)和改良版英國醫學委員會(Modified Medical Research Council,MMRC)呼吸問卷對患者的癥狀進行評估。同時本系統額外增加一個慢阻肺急性加重(acute exacerbation of chronic obstructive pulmonary disease,AECOPD)問卷用于記錄患者近1 a 的急性加重次數和住院次數。

表1 慢阻肺患者氣流受限程度判斷標準
(3)急性加重風險評估。
慢阻肺患者的急性加重主要是指患者在短期內病情急劇惡化,從而導致癥狀惡化以及肺功能惡化。癥狀惡化主要表現為患者咳嗽增多、咳痰增多、呼吸急促等,肺功能惡化主要表現為氣流受限程度增加。對慢阻肺患者急性加重風險的主要評估方法是評估患者近1 a 急性加重的次數以及入院的次數。根據GOLD 標準,慢阻肺綜合評估標準詳見表2。

表2 慢阻肺綜合評估標準
因為上述3 種評估標準為當前醫學通用的慢阻肺評估標準,故通過結合上述3 種評估標準建立本系統慢阻肺綜合評估模型。該模型首先判斷患者近1 a 急性加重的次數,通過該參數判斷患者急性加重的風險,若患者急性加重次數<1 次或者≥2 次時,直接通過調查問卷的評分判斷患者的病癥狀態,從而得到患者的綜合評估等級。當患者近1 a 因急性加重住院1 次時,該模型通過患者的氣流受限等級輔助判斷患者的急性加重風險以及癥狀;當患者氣流受限等級為GOLD1 和GOLD2 級時,認為患者具有低風險,當患者為GOLD3 和GOLD4 級時,認為患者具有高風險。
患者病情等級判斷界面如圖8 所示,當用戶測量完自身的肺功能參數并填寫癥狀數據后可以獲得自身的肺功能綜合評估等級以及急性加重預警信息。
2.2.3 問卷調查模塊

圖8 患者病情等級判斷界面
慢阻肺患者不僅需要對自身肺功能狀態進行測量與記錄,還需要對自身的癥狀信息進行記錄,但大多患者無法進行科學記錄。本文通過3 種問卷調查幫助患者科學、合理地記錄自身癥狀變化。本模塊通過Button.OnClick 函數觸發不同問卷的Activity,采用Intent實現患者對應問卷之間的切換,如圖9 所示?;颊咄ㄟ^點擊按鈕進入對應的問卷界面,根據自身的實際病情點擊相應的選項,最后完成問卷調查的填寫及保存。

圖9 問卷調查模塊應用界面
2.2.4 歷史記錄模塊
慢阻肺患者不但需要記錄自身相關的病情數據,也需要對歷史記錄的病情數據進行實時查詢以及對誤操作或者錯誤的歷史數據進行刪除。為避免影響后續測量評估,設計歷史記錄模塊管理歷史病情數據。使用DatePicker 獲取查詢時間數據,通過時間數據檢索數據庫并使用ListView 中的MySimple Adapter 適配器通過Dialog 顯示詳細數據,應用界面如圖10 所示。

圖10 歷史記錄模塊應用界面
采用Nginx 作為本系統的反向服務器,用戶可以直接訪問Nginx 或將數據直接發送至Nginx,之后通過Gunicorn 服務器轉為并行進程。通過該框架可以實現并發用戶的并行數據請求,通過并行數據請求可以直接訪問服務器數據庫。由于服務器可能會處理多個并發數據,故服務器端設置多個并行進程,每個進程單獨幫助存儲或讀取患者數據,具體框架圖如圖11 所示。

圖11 服務器框架圖
在硬件方面,本系統使用的便攜式多參數肺功能儀功能全面、體積小巧,通過對408 名患者進行FVC、FEV1 等參數的測量,并與標準肺功能儀進行數據對比,得到FVC、FEV1、FEV1/FVC 的相關系數分別為0.99、0.99、0.97,呈顯著相關,具有很好的一致性。診斷氣流受限患者的敏感度和特異度都很高,分別為92.95%和94.80%。在軟件方面,算法評估模型完全符合GOLD 標準,具有權威性。并且軟件整體結構采用企業級的MVP 結構,具有極低的耦合性。通過測試,系統運行時平均占用內存較低(2 583 MiB),可以作為常用軟件。另外服務器端采用分布式服務器布局,具有高性能及高并發性。
隨著慢阻肺患者數量的逐年增加,慢阻肺治療的相關醫療資源負擔將越來越大。移動醫療是解決當前醫療資源不足問題較為便捷的方法,本文研發的基于Android 的慢阻肺管理系統結合了肺功能測量、病情管理、數據存儲及上傳、數據處理等慢阻肺治療管理相關功能,可以幫助慢阻肺患者在家中進行自我管理、輔助醫療工作人員在社區進行肺功能測量診斷工作、輔助醫生在醫院進行遠程監護,應用前景較大,有較強的實用意義。但本系統服務器端僅作為存儲和傳輸端口,并未進行數據處理,相關模型算法處理均在Android 端實現,數據量較大時對Android 端要求較高,因此后續將進一步優化,使模型算法轉向服務器端處理。