基于Android系统的心电分析软件的设计
2017-10-17郭庆李豪杰苏海涛
郭庆 李豪杰 苏海涛
摘 要: 针对传统心电分析系统一般运行在电脑客户端这一局限性,提出一种基于Android平台的心电分析系统。根据实际需求,系统采用C/S模式,結合Android平台的特点,完成对客户端软件系统的开发,同时阐述系统实现过程中的一些主要算法,如R波检测、心律失常诊断和心电滤波器的设计等。通过对麻省理工学院心电数据库MIT?BIH中数据的分析,验证了算法的正确性。测试结果表明,该系统能满足医疗终端的应用需求。
关键词: Android; 心电分析; R波检测; 心电滤波; MIT?BIH
中图分类号: TN99?34; TP311 文献标识码: A 文章编号: 1004?373X(2017)20?0052?04
Abstract: In view of the limitation for ECG analysis system runing generally on the PC clients, a kind of ECG analysis system based on Android platform is proposed. C / S mode is adopted in the system according to the actual demands. The client software system was developed in combination with the characteristics of the Android platform. Some main algorithms in the processes of system implementation (such as R wave detection, arrhythmia diagnosis, ECG filter design, etc) are elaborated. By analyzing the data in MIT?BIH arrhythmia database of Massachusetts Institute of Technology, the correctness of the algorithm was verified. The test results show that the system can meet the application requirements of medical devices.
Keywords: Android; ECG analysis; R wave detection; ECG filtering; MIT?BIH
0 引 言
在临床医学里,心电信号直观地体现了心脏跳动的整个过程,因此实时监测心电信号具有十分重要的意义。世界卫生组织发表报告称,心血管疾病已经成为威胁人生命的主要杀手,根据最新的医学研究报告显示,其发病率呈上升之势。而传统的医疗体系存在一些不足,如医疗诊治方式比较固化和老套、医疗信息的存储孤立,无法共享等。随着科技的发展,传统的只能运行在PC端的心电分析系统已经不能满足患者和医师实时监控生理参数的需求。本文介绍一种基于移动平台的心电分析系统,主要包括用户信息管理、心电信号特征值提取、心律失常判别、诊断报告生成及异常报警等部分。
Android和IOS是当下最火爆的两款手机操作系统,但IOS系统只能运行在苹果公司旗下的iPhone手机上,价格昂贵,Android系统可以运行在不同厂商的手机上,便于移植,价格便宜。谷歌公司给开发者提供了统一的API,并且支持更多的第三方库,促使Android系统迅猛发展,并且应用范围越来越广,用户越来越多,市场占有率稳居第一。因此,本文将以Android平台作为心电分析软件的设计与实现平台。
1 软件需求分析与系统方案设计
1.1 功能需求
心电分析软件首先应该能够显示动态的心电图,其次当设备采集到心电信号并发送给手机客户端后,软件系统对数据进行简单分析并把数据打包和封装,然后发送给中心服务器,便于医师进一步诊断。
1.2 非功能需求
根据实时性要求,要使软件做到实时反应,必须保证结构设计合理,避免耗时的操作在主线程里。由于面对的人群比较广泛,必须拥有友好的用户交互功能。Android智能手机的屏幕尺寸较小,需通过优化各个模块的布局以达到良好的显示效果。
1.3 系统框架
系统采用客户机与服务器的模式,方便实现数据和视图的分离,简化整个系统的复杂度。客户机和服务器之间采用发展成熟的HTTP协议通信,减少设计通信协议的麻烦。系统框图如图1所示。
2 客户端设计与实现
客户端在Android平台上运行,主要由Java语言和XML语言编写,开发环境为Eclipse[1]。
2.1 功能设计
系统需要完成用户管理、数据查看、心电分析、诊断报告四部分功能。其中用户管理部分包括用户的创建、修改、切换和删除四部分功能;数据查看部分包含心电图回放功能和分析报告查看功能;心电分析是核心部分,涉及到各种算法的调用;诊断报告主要完成对分析报告的生成和发出异常报警信息。
2.2 心电滤波器设计
心电信号的特点是:低频性、微弱性、随机性。随机性主要是指心电信号极易受到呼吸状态等生理因素的影响,同时又容易受到50 Hz工频信号的干扰。因此,需要设计合适的滤波器对心电信号进行滤波处理。
数字滤波器中,较为常见的是FIR滤波器和IIR滤波器。IIR滤波器计算量小、使用较为方便简单,FIR滤波器有严格的相位特性。为了结合这两种滤波器的优点,Van Gerwan.etal提出了一种新型的整系数滤波器结构[2],如图2所示。endprint
整系数滤波器具有计算量小和严格线性相位的优点。此外,它最突出的优点是所有系数均为0或2的整次幂。
整系数滤波器有上述那些优点,相应的也有自身的局限性。就谐振器而言,如果出现[Z=ejθ] 和[Z=e-jθ]在单位圆上,则相应的滤波器传递函数的分母项为:
为了保持系数为0或2的整数次幂,[θ]只能取值为 0°,60°,90°,120°,180°。其中出现在z平面实轴上极点的角度有 180°和 0°,可把它划归为高通滤波器和低通滤波器,剩下60°,90°和120°这3个角度,可以分别得到 [fs6,fs4]和[fs3]这三种中心频率的整系数带通滤波器。
2.3 QRS波检测
QRS波群形态最为复杂,包含了大量的心脏活动信息,同时是P波和T波的检测基础。对于QRS波的提取,算法的设计是关键,既需要满足较高的准确度,又需要满足软件性能的需求。针对QRS波的提取,目前常用的有小波变换法[3]、差分阈值检测算法、模板匹配法、神经网络法等方法。其中差分阈值法计算量较小,实现起来相对容易,但检测准确率有待提高。自適应差分阈值法是在差分阈值法的基础上通过自适应改变阈值的大小,计算量略有增大,但检测率有了较为明显的提高。小波变换法是近年来热门的算法,具有较高的检测率,但计算量偏大,且需要专门的DSP芯片来实现。模板匹配法是一种基于统计识别的检测算法,比较稳定,但是重复执行效率高,耗费时间比较长。考虑到移动设备的处理能力,系统采用计算量适中且具有较高检测率的自适应差分阈值法作为R波的检测方法。
自适应差分阈值法的基本原理是,R波幅值最大,QRS波群变化极快,具有极高的能量,相应波形的斜率比U波和T波大很多。设原始心电信号为[xn,]n=1,2,…,k,k为信号的长度,对[xn]作四点平滑移动处理,解析式如下:
2.4 心律失常分类
心律失常依据起因可分为:激动形成异常和激动传导异常。每类又可细分为不同种类的小类,常见的心律失常有几十种。随着计算机在医疗系统中的应用,国内外学者研究出了多种心律失常分类算法。
心律失常分类是诊断心血管疾病的必要手段,其本质是把心电波形的特征进行分类处理。常用分类方法有如下几种:多变量统计分类(贝叶斯定律)、模板匹配、Fuzzy[6]理论、神经元网络等方法。近年来,随着计算机计算能力的迅猛提高,新设计的心电分类算法通常会综合两种或两种以上的识别方法以达到提高算法准确率的目的,如综合FCM,PCA[7]等心律失常判别算法。鉴于移动设备的处理能力较弱,系统采用一般特征值逻辑分支法作为心律失常的分类方法。利用上文介绍的自适应差分阈值算法,提取出QRS波的特征如R波幅值、RR间期、QRS波宽等,结合文献[8]的方法进行快速心律失常分类。
2.5 心电数据的存储
Android系统有多种存储方式,每种方式都有自身的特点。考虑到Android手机存储空间的大小,本系统把相应的心电数据存储在中心服务器里。系统采用MIT?BIH数据库[9]里的心电数据代替模拟前端采集到的数据,因此可以把数据库中的数据存储在中心服务器端。测量记录和分析报告等信息则存储在Android系统自带的轻量级SQLite3数据库里,方便用户快速查看过往心电情况。心电数据的传输采用HTTP协议,在Android客户端使用Apache的HTTP库,通过get和post方式向服务器发起请求,得到数据库的响应,用handler去更新UI。测量记录表和分析结果表的具体设计如表1和表2所示。测量记录表为存储测量记录信息。
3 中心服务器的设计
中心服务器是一个初步设计的智能医疗服务器,通过Apache+PHP+MySQL框架来实现。该服务器包括数据库服务器和Web服务器两部分。数据库服务器是整个系统的数据存储核心,用来存储病人的历史信息,如病人历史生理参数、病人档案及病历处理结果等。同时能够提供数据库管理、病人档案管理等各种数据的添加、删除和修改。
通常情况下,客户端和服务器端运行在不同的平台上,因而数据的格式可能会存在不同。网络数据的传输通常要考虑到网络数据的大小、网络数据安全性、编码复杂度以及协议通用性等方面。当今网络传输常用的数据格式有XML和JSON两种,而XML的有效数据载荷太低,封装和解析效率也比较低,JSON具有封装简单,有效载荷高,读写时消耗的资源较少等优点。因此,本系统采用JSON数据格式传输网络数据。
在计算机上Java应用程序可以通过JDBC方便地连接远程MySQL服务器。但JDBC本身并不是为移动设备量身设计的,JDBC直接连接MySQL服务器不仅效率低下,且耗费系统资源。本系统采用PHP作为中转的方式去实现Android手机与MySQL服务器之间的通信,采用JSON格式将数据封装后传输[10],采用无所缓冲队列和数据预取技术提高心电数据的读取效率[11]。这种中转方式结构清晰、易于理解,且能满足本系统的设计要求,服务器框图如图3所示。
4 系统测试
本软件完成了各个模块的设计并对各个模块进行了测试,测试工具包括Android手机和笔记本电脑。利用Tomcat技术将PC机虚拟为中心服务器,在Android手机上运行客户端软件,用户登录后可以进行相关的操作,登录界面如图4所示。
用户登录后,选择服务器里100.dat文件的部分数据进行分析并生成诊断报告,诊断报告如图5所示。在分析数据时存在短暂延时,但延时在可以接受的范围内,用户并不会感到明显的不适。
当检测出心率有问题时,系统会向其注册时填写的另一个手机号发送短信,告知其状况以便于及时进行治疗。当用户使用心电回放功能时,选择相应的文件后,系统会动态地绘制相应的波形,效果如图6所示。
5 结 语endprint