基于Android 的慢阻肺管理系统的研发
2021-04-03何征岭张鹏飞王辰硕
孙 杰,何征岭,张鹏飞,王辰硕,夏 攀,方 震
(1.中国科学院空天信息创新研究院传感技术国家重点实验室,北京 100190;2.中国科学院大学,北京 100049)
0 引言
慢性阻塞性肺疾病(以下简称“慢阻肺”)是一种常见的、可预防和可治疗的疾病,目前是世界上第四大致死原因[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 的集诊断、自我管理以及远程监护于一体的慢阻肺管理系统。
1 系统设计
慢阻肺管理系统由便携式多参数肺功能仪[8]、患者Android 端、医生Android 端以及服务器组成,如图1所示。本系统针对不同应用场景有不同的功能,例如在家时可以帮助患者进行自我管理,在社区时可以帮助测量用户的患病等级,在医院时可以辅助医生进行远程监护等。
图1 慢阻肺管理系统总体结构图
慢阻肺管理系统使用便携式多参数肺功能仪来获取患者的肺功能参数、血氧值以及呼气末二氧化碳体积分数等相关呼吸参数,通过低功耗蓝牙(bluetooth low energy,BLE)传递至患者Android 端,之后通过问卷调查界面获取患者的病症数据以及急性加重风险,使用GOLD 标准评估患者的综合慢阻肺等级,并将所有数据存储至Android 端,实现帮助患者诊断以及自我管理的目的。同时所有的患者数据上传至服务器,方便医生通过医生Android 端软件查询患者数据,实现医生对患者的远程监护功能。
慢阻肺管理系统本地数据存储主要采用SharedPreferences 以及SQLite 2 种数据库,分别针对不同数据类型进行存储操作,其中SharedPreferences 用于存储系统配置信息,SQLite 用于存储患者的测量数据。Android 端进行数据上传时先将数据转为JSON格式并使用自定义API 接口打包,通过Okhttp 框架搭建软件客户端并使用Retrofit 协议发送至服务器。
2 系统实现
本系统Android 端采用Android Studio 平台,通过Java 语言编程搭建,采用MVP(Model-View-Presenter)设计模式,具有耦合性低的优点。系统功能结构图如图2 所示,其中患者端分为4 个模块,分别为天气信息模块、呼气测试模块、问卷调查模块和历史记录模块。
图2 慢阻肺管理系统功能架构图
由于Android 6.0 系统加入了危险权限管理功能,故在使用一些涉及到用户隐私方面的操作时,需要获取用户的授权才能使用。因此本系统在首次运行时需要对以下权限进行申请:
(1)授权用于定位模块的权限:
(2)授权用于蓝牙模块的权限:
(3)授权用于网络通信的权限:
(4)授权用于读写缓存的权限:
2.1 医生端实现
为了实现远程监护,医生需要实时了解患者的相关参数。当医生端发起一个查询指令时,医生端在Retrofit 协议中封装检索条件后发送至服务器,当服务器收到Retrofit 协议中的检索信息后,通过RequestBody 返回患者数据。医生端通过GeneralResponse 解析患者数据后通过ListView 和Dialog 界面进行显示,如图3 所示。
图3 医生端应用界面
2.2 患者端实现
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%,则确认患者患有慢阻肺。患者气流受限程度判断标准详见表1。
使用便携式多参数肺功能仪测量患者的肺功能参数并通过蓝牙传输至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 历史记录模块应用界面
2.3 服务器端实现
采用Nginx 作为本系统的反向服务器,用户可以直接访问Nginx 或将数据直接发送至Nginx,之后通过Gunicorn 服务器转为并行进程。通过该框架可以实现并发用户的并行数据请求,通过并行数据请求可以直接访问服务器数据库。由于服务器可能会处理多个并发数据,故服务器端设置多个并行进程,每个进程单独帮助存储或读取患者数据,具体框架图如图11 所示。
图11 服务器框架图
3 应用效果
在硬件方面,本系统使用的便携式多参数肺功能仪功能全面、体积小巧,通过对408 名患者进行FVC、FEV1 等参数的测量,并与标准肺功能仪进行数据对比,得到FVC、FEV1、FEV1/FVC 的相关系数分别为0.99、0.99、0.97,呈显著相关,具有很好的一致性。诊断气流受限患者的敏感度和特异度都很高,分别为92.95%和94.80%。在软件方面,算法评估模型完全符合GOLD 标准,具有权威性。并且软件整体结构采用企业级的MVP 结构,具有极低的耦合性。通过测试,系统运行时平均占用内存较低(2 583 MiB),可以作为常用软件。另外服务器端采用分布式服务器布局,具有高性能及高并发性。
4 结语
随着慢阻肺患者数量的逐年增加,慢阻肺治疗的相关医疗资源负担将越来越大。移动医疗是解决当前医疗资源不足问题较为便捷的方法,本文研发的基于Android 的慢阻肺管理系统结合了肺功能测量、病情管理、数据存储及上传、数据处理等慢阻肺治疗管理相关功能,可以帮助慢阻肺患者在家中进行自我管理、辅助医疗工作人员在社区进行肺功能测量诊断工作、辅助医生在医院进行远程监护,应用前景较大,有较强的实用意义。但本系统服务器端仅作为存储和传输端口,并未进行数据处理,相关模型算法处理均在Android 端实现,数据量较大时对Android 端要求较高,因此后续将进一步优化,使模型算法转向服务器端处理。