基于云计算的智能健康监测系统设计与实现
2019-07-15李润川冯盼盼王淑红王海燕张行进王宗敏
李润川 冯盼盼 王淑红 王海燕 张行进 陈 刚 王宗敏*
1(郑州大学产业技术研究院 河南 郑州 450000)2(郑州大学互联网医疗与健康服务河南省协同创新中心 河南 郑州 450000)3(郑州大学远程教育学院 河南 郑州 450000)
0 引 言
随着现今生活方式的转变,人类的健康状况及疾病模式也发生着转变,慢性病患者的人数也在急剧增加。慢性病主要是指心脑血管疾病、糖尿病、慢性呼吸系统疾病等起病隐匿、潜伏期长、病程长、无明确“治愈”指征的疾病总称[1]。2015年我国卫生部《中国居民营养与慢性病状况报告》指出每年以心血管疾病和糖尿病为首的慢性病,致死人数占据了所有死亡人数的85%,且慢性病在我国疾病负担中所占比例超过70%[2]。慢性疾病由于患病人数多、病情延续时间长、病因复杂、治疗累积费用高,具有频繁的医患交流,一开始就成为互联网医疗聚焦的热点。慢性病的挑战无疑给智慧医疗带来了巨大机会。智慧医疗得到迅速发展,借助互联网、云计算、医疗大数据等新一代信息技术,搭建智能化的医疗设备系统及平台,通过智能终端上传个人生理健康数据,快速得到医生远程指导,将传统医疗服务延伸至社区和家庭来进行健康管理和慢病预防[3-6]。
目前,国内外推出了许多远程智能医疗监护设备。国外在远程医疗系统构建的实施发展速度较快,在远程咨询、远程会诊和一些医学数据远距离传输等方面取得了不错成果[7-10]。Vaidehi等人[11]设计实现了一种可监测血压、脉搏率和呼吸频率、体温等生命体征的Agent系统,依附于无线传感器。马锡坤[12]设计实现了远程视频医疗诊断系统,依附于物联网技术现实医生的医疗诊断过程,具有在线问诊、视频会话等多功能模式。陈海金等[13]设计开发了一款心电监护仪且搭配带Android系统的智能终端实现远程监护。然而,现有的智能健康监测系统,由于终端用户数量的不断增加和上传数据的加大,会出现服务后台数据一致性无法保证、实时性较差以及数据利用率低等问题[14]。在此背景下,我们设计了一款智能健康监测系统,可实时、连续、长时间地监测人体的生命体征参数,且配套开发了一款便携式心电监护仪用于实时监测分析人体心电信号,改进了现有健康监测平台心电信号的非实时传输性。
本文设计的智能健康监测平台可长时间地实时连续监测人体生命体征参数,并将数据实时传送给云平台和手机APP,医生可对云平台的数据进行监测并将结果及时反馈到用户的智能手机APP上进行显示和保存,用户可通过手机上的APP查看自己的健康历史数据。当用户的某一项生命特征参数出现异常时,云平台和手机APP能够进行实时预警,以便用户能得到及时的救治,这对于慢病患者长期监测具有重大的历史意义。
1 相关技术
本系统使用简单高效的NATS消息机制来传输心电数据、支持分布式架构通信的RPC协议进行远程服务器之间的调用、使用允许服务端主动向客户端推送数据的Websocket协议获取实时心电曲线、使用功能强大又高效的MongoDB数据库存储最终的心电事件和支持XML的有可图形化用户界面的SQLServer数据库存储用户在互联网医院的体检监测数据。
NATS消息机制是基于EventMachine支持微服务架构、使用“发布-订阅”机制的轻量级消息中间件[15]。NATS消息机制有分布式队列的基础,当有超过一个的服务器发送请求时那就形成一个队列组,那么NATS消息机制将随机选择一个服务器来接收消息,这样就保证了不同服务器间调取ECG数据的顺序性。 NATS消息机制具有可伸缩性,每秒钟可以传送百万条消息,可用来连接微服务和IOT设备,实现高吞吐量的消息分散和特定应用实例、设备或用户的寻址。
远程过程调用(Remote Procedure Call,RPC)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC现在被广泛应用于分布式系统中进行封装通信。 RPC的用法是客户端直接调用服务端的函数,把数据传给服务端,服务器端处理完以后返回给客户端,能够实现数据同步,这在ECG数据传输中具有重要的意义。
WebSocket协议可以实现浏览器与服务器之间高效、有状态的双向通信,而且减少了Internet通信开销。Websocket只需要一次HTTP握手,整个通信过程是建立在一次连接状态中,服务器端会一直知道你的信息,直到关闭请求。服务器有信息的时候就会发送,即服务器端自动推送数据到客户端,这对ECG实时波形的显示具有重要意义,一旦心脏出现问题,客户端就会及时发现波形的异常从而采取行动避免更坏的情况发生。
MongoDB是一个介于关系数据库和非关系数据库之间的数据库系统,是一个高性能、开源、模式自由的文档型数据库。数据以文档的形式保存,文档实际上就是一个个JSON字符串,主流的计算机语言如Java、Python都对JSON有很好的支持,数据从MongoDB数据库中读取出来后,无需转换可直接使用,极大提升程序员的开发效率。MongoDB 还提供了数据冗余、故障转移、自动分片等功能。MongoDB支持分布式系统,随着数据量的不断增加便于扩展和集群,为Web应用提供可扩展的高性能数据存储解决方案。
计算机应用系统中的数据库设计相当重要, 它涉及到系统的效率,影响到整个系统的质量。Microsoft SQL Server具备完全Web支持,也具有在Internet上和防火墙外进行查询的能力。本系统主要通过Microsoft SQL Server存储用户在互联网医院经过自助体检、血常规检验和生化检查后的各项体检数据。Microsoft SQL Server支持数据交换的通用传输语法XML,提供备份、还原、复制和并发控制等通用服务,这样用户的XML数据不必“分解”成关系结构,也不会失去查询XML结构的能力。
2 系统设计
系统构建的整体架构如图1所示。受检者在互联网/社区医院进行各种体检化验后的数据如身高、体重、血氧和血常规等检验数据,和本文设计的可穿戴式心电监测设备所测得的心电数据统一传输至中间件设备上,中间件进行所有体征数据的整合并通过无线传输协议转发至云平台和手机APP端,云平台上的数据供医生诊断并提出健康建议,用户及授权的亲属可通过智能手机APP端查看自己和亲属的检验结果。
图1 智能健康监测云平台整体架构
Node中间件介于医疗设备资源与应用程序之间,完成设备与应用程序之间的数据转发工作。中间件进行接口转发,在转发的过程中进行数据处理,而不用担心数据返回的问题。浏览器端和Java端使用node.js作为中间件,Node调用Java后端发布的接口,同时Node可以发布HTTP接口给浏览器端调用。前后端分离,本地前端开发调用接口会有跨域问题。用node.js搭建本地HTTP服务器,并且判断访问接口URL时进行转发,完美解决本地开发时候的跨域问题。中间件系统位于各类医疗硬件设备之上,能够管理多个医疗设备,并负责协调设备资源的调度。同时中间件系统位于应用程序之下,可同时响应多个应用程序的调用请求,实现调用方对医疗设备的操作与健康监测数据的实时获取,并且通过http/https通信技术的访问方式可让应用程序不受平台的限制,能够兼容各主流平台如Windows和Android等。
2.1 实时心电监测仪硬件设计
由于心电信号具有近场检测的特点,并且心电信号比较微弱属于低频信号,要想得到实时准确的心电数据,需要研究出更高效的硬件设备。本文设计了一种可穿戴式心电监测设备实现对心电信号的实时数据的长连接检测。考虑到多导联的临床意义及动态心电图在心血管疾病诊断中的应用治疗方面,我们设计了六导联实时心电监测仪,其采样率为500 Hz。
该可穿戴式心电监测仪电路框图如图2所示,包括相互电性连接的信号采集模组(1)以及无线模组(2)。信号采集模组包括信号处理单元(3)、信号输入接口(4)以及信号输出接口(5),其中信号处理单元包括EMI滤波器(6)、放大器(7)、调制器(8)以及低通数字滤波器(9)。无线模组包括MCU(10),其只读存储器ROM(11)、静态随机存储器SRAM(12)、蓝牙模块(13)、低功耗蓝牙模块(14)、供电模块(15)。这款可穿戴式心电监测仪的开发用于捕获心电图信号,通过EMI滤波器对信号输入接口输入的心电信号进行滤波处理,有效提高了信号处理单元采集到的心电信号的准确性,便于信号处理单元将采集到的心电信号精细处理,也便于在无线模组中与微控制单元(Micro Control Unit,MCU)相连的蓝牙模块接入无线网络,并且同时配有心电监测云平台。
图2 实时心电监测仪硬件电路框图
图3是当用户佩戴上心电监测仪后信号采集模块原理示意图,搭配ADS1293模块和MCU微处理单元,通过BT/BLE协议的方式对采集到的心电信号进行实时传输。ADS1293 特有3个能够以高达 25.6 ksps 的速率工作的高分辨率通道,可单独针对每个通道编程特定的采样率和带宽,从而使用户能够针对性能和功耗来优化配置。芯片内置抗电磁干扰(EMI) 输入设计,极大扩展了采集心电数据的物理环境。ADS1293 包含便携式、低功耗医疗和体育运动心电图(ECG) 应用中通常所需要的全部特性。基于云存储的远程心电事件监护平台,便于心电监护设备将心电数据及用户信息实时进行远程传输和管理。
图3 心电信号采集模块原理示意图
2.2 云平台软件功能流程设计
本系统设计使用多服务器的分布式架构,各节点松耦合,对底层产品的可靠性、可用性依赖降低,可扩展性更好。尤其是随着应用规模的扩大,边际成本将更低。为解决热部署资源浪费,灵活性差等的缺点,我们使用可扩展热部署的方法,可以在不中断Web服务器运行的情况下进行部署,极大提高了开发效率。本文设计的智能监护系统的主要功能有:实时接收监护数据、动态显示数据、分析校验数据的合法性、查询历史数据等功能模块,并且可以根据正常范围内的生命体征数据的标准参考值,对不同数据的测量结果给出一个综合的健康状况检测报告。智能健康监测系统构建的流程图如图4所示。
图4 智能健康监测系统程序流程图
3 云平台体系架构设计
该基于云计算的实时监护平台架构如图5所示。该体系结构建立在微服务和RPC思想之上,由10余个核心服务器组成,并主要使用go语言实现。云计算平台体系结构主要由以下服务器组成:Load Balancecing,所有服务器必须首先连接到该服务器,并接受该服务器分派管理;System Monitor,监控系统运行状态和各服务器调度;ECGAnalyzeGateway,进行ECG监护并存储派发结果;ECGDataBaseGateway,采用大数据云平台技术搭建的心电数据库中心,提供CURD API(创建、更新、读取、删除四种操作的API);UserDataBaseGateway,用户信息数据库中心,管理用户信息、监护记录等;WebServer,为信息视图和ECG监护交互提供用户网页端前端请求;APPServer,为信息视图和ECG监护交互提供用户APP端前端请求;ECGPipeGateway,在前端实时显示ECG波形;ECGDeviceGateway,接收心电设备的数据并进行派发,根据心电监护结果,按照预定的处理流程,处理相应的心电事件;ECGDataRouter,负责将心电数据派发给具体服务器,并将处理结果返回至请求者;APPGateway,Web网页端和手机UI端请求的入口,接收用户在前端提出的请求;MultipleLifeParameterCenter:存储用户在互联网医院进行各项体征检查的数据。
图5 云平台体系架构
受检者在互联网医院进行体检、生化检查和血常规检查后,这些多维生命体征数据通过HTTP/HTTPS协议存储在云平台上的多生命参数中心。受检者佩戴上可穿戴式心电监测仪后,心电信号可实时采集并通过蓝牙传输至受检者的手机端,之后通过RPC实时传送到后台服务器ECGDeviceGateway进行心电数据的接收和派发。心电数据通过NATS消息中间件订阅-发布到ECGDataRouter服务器进行ECG数据的转发,ECGAnalyzeGateway通过RPC的消息应答模式请求心电数据到ECGAnalyzServer进行心电监护分析,同时将分析后的结果进行反馈并提供给其他服务器使用。经过分析后的ECG数据通过NATS消息中间件到ECGPipeGateway服务器并通过WebSocket协议进行前端界面实时心电监护结果的显示。分析后的数据也通过NATS消息中间件到ECGDataBaseGateway服务器存储心电分析的结果。同时ECGDataBaseGateway和UserDataBaseGateway通过NATS消息中间件从APPGateway服务器订阅用户的前端操作。受检者在网页端和手机用户端可进行查询历史数据、查看结果以及查看健康体检报告等操作,这些在前端的请求操作都是通过HTTP/HTTPS协议分别发送至WebServer服务器和APPServer服务器,这些操作又都通过该协议发送至APPGateway服务器,在这里统一处理受检者在前端的用户请求并返回结果。
4 云平台系统实现
系统设计完成后,对Web网页平台端和Android患者平台端进行开发与调试,通过不断验证测试来优化完善平台功能并分析其表现。可穿戴式无线心电监测仪能够将采集到的心电信号实时通过蓝牙协议传输至智能手机端和云平台服务器端。该系统具有实时的心电数据采集和多生命体征数据信息化存储及管理功能,能够进行实时心电监护、自主体检、生化检查、血常规检查等多维度生命体征数据监护。通过无线传输协议将这些采集到的体征数据传输至云平台服务器,利用大数据云平台技术存储、分析、查询,为用户提供全面的智能检测结果,为医护人员评估用户的健康状况、发现疾病的早期症状提供强有力的依据。
4.1 Web网页平台端
本平台基于物联网思想构建,接入端采用蓝牙和HTTP/HTTPS协议接入服务器集群,后端采用RPC+MQ模式构建数据传递服务集群,数据的持久化存储采用MongoDB分布式数据库集群与Microsoft SQL Server存储相结合的方式,对心电数据的分析采用RPC+MongoDB的模式,Web网页端是基于HTML5技术和WebSocket协议构建,支持实时和历史心电数据查询和波形显示,以及结果的实时显示和历史查询。受检者佩戴便携式无线心电监测仪后,心电信号会上传至云平台,所有功能都按预期设计的架构运作。该心电监测仪采集与云平台监测系统同步,波形准确收集并平滑显示,可持续24小时将心电数据传输到云平台,能够保证无线传输的实时性和可靠性,Web网页端的实时心电监护如图6所示。
图6 Web网页端心电实时监护页面
4.2 Android患者平台端
基于Java的Android APP端研发需要安装 Java开发工具包JDK并进行相关环境配置,使用跨平台的开发工具Eclipse和 Android SDK以及Android开发工具 ADT插件来完成整个APP的开发与测试。Android端研发结果示例如图7-图11所示。
对心脏患者来说,便携式心电监护设备的数据传输至云平台,进而连接到三甲医院的医生,可对患者的情况及时做出处理,使患者足不出户就可得到正确且高效的治疗水平,并且节省治疗成本;对不宜频繁去医院就诊的患者,更加凸显便携式心电监护设备的优势所在;对综合性医院来说,不同研究水平的心脏疾病专家得到最大的利用效率,并且将心电疾病的诊疗分成“预防、治疗、康复”几个阶段,最大化医院资源的利用率。
图7 Android端生理参数历史记录图
图8 Android端生理参数历史记录样例图(血压、体重)
图9 Android端体检结果与健康指导示例图
图10 Android端心电实时监护图
本文设计的基于云平台的智能监测系统,实现了对慢性病监护流程的复现,实现了数据的集中和共享,减少了过去由于信息不能共享造成的院内、院际重复检查、重复用药等问题,直接减少了卫生资源的浪费,减少了患者进医院看病的次数和时间,减轻了医生的工作负担,也在一定程度上减少了医院的负荷。降低了社区-卫生服务中心开展心电检查项目的成本,借助大医院的专家资源,增加了社区卫生服务中心的医疗收入。促使了慢性病逐步成为医生诊疗过程中不可缺少的一步,极大提高患者和医生对慢病的接受度。
5 结 语
本文所设计的基于云计算的智能健康监测系统完成了对用户的血压、血氧、基础代谢率、心电信号等生命体征数据的采集管理,尤其是对心电信号长时间实时采集,之后对该平台上的生理体征数据进行分析评估,并结合智能算法给出相应的健康指导。该专业的“便携式心电监测仪+检化智能终端无线传输+云计算平台”模式使得该系统能够进一步走向家庭,对人体进行全方位健康监护。未来可以在目前研究的基础上,通过长期数据的采集和积累,研究开发一种与潜在患病事件相关因素的风险预测功能,进一步扩大智能健康监测系统的应用领域,为慢性病防治提供科学有效的依据。