基于QT5实现的心率变异与心率减速力分析软件

目录

前言

1.软件演示

1.1程序登录界面:

1.2病历信息显示功能:

1.3心电图显示功能:

1.4心率变异分析功能:

1.5病历心率减速力、加速力分析功能:

2.总体技术方案说明及主要关键技术问题解决情况

2.1数据库管理

2.2MIT-BIT心电数据库使用规范

扫描二维码关注公众号,回复: 11934474 查看本文章

2.3QT5技术说明

2.4关键技术说明

3系统模块设计

3.1数据库模块

3.2文件协议模块

3.3心率变异分析模块

3.4心率减速力分析模块

3.5绘图模块

3.6按钮功能及菜单设计

4源代码

参考文献


前言

本文所开发的心率变异与心率减速力分析软件,是基于Windows开发平台,使用Qt进行UI界面设计,采用C/C++语言进行编程设计,通过对麻省理工大学的MIT-BIH心电数据库的心电文件进行分析,实现心电信号的显示和心率变异与心率减速力的分析,从而提供给用户一个可供参考的结果。当用户打开数据文件后,系统自动进行hea,dat,atr三种文件的分析和提取,并自动显示RR间期的波形、HRV分析波形以及DC、AC的波形,通过对已经得到的HRV分析值、DC、AC值以及心电波形与指标正常范围对比,帮助用户了解当前所打开文件的心率状况,实现可以利用计算机进行心率变异性和心率减速力的定量化分析和测定,对筛选与预警猝死高危人群提供了一款无创心电监测系统。

1.软件演示

1.1程序登录界面:

运行程序,显示初始界面:

心率变异与心率减速力分析软件登录界面

1.2病历信息显示功能:

双击文件,打开患者病历,可发现在患者信息显示窗口出现患者信息:

病历信息显示界面

1.3心电图显示功能:

点击心电图右侧开始按钮,显示心电图波形:

心电图显示界面

1.4心率变异分析功能:

1.4.1点击RR间期趋势图右上方开始按钮,显示RR间期趋势图:

RR间期趋势图显示界面

 

1.4.2点击RR间期趋势图右上方分析按钮,显示出RR散点图、RR差值散点图、RR直方图、RR差值直方图,并计算心率变异性分析指标,显示在右侧:

HRV分析图显示界面

1.5病历心率减速力、加速力分析功能:

点击DC图表右侧开始按钮,程序对得到的数据进行PRSA处理,计算DC、AC的值,显示结果并绘制DC、AC的图形:

DC、AC分析图显示界面

1.6视频演示

2.总体技术方案说明及主要关键技术问题解决情况

2.1数据库管理

软件采用SQLite数据库管理系统来存储心电文件,因文件整体较大,为了保持数据库的性能,数据库中主要存储心电数据在存储器中的绝对路径,用户选择文件时,通过路径将相应文件导入内存,再进行下一步分析。

2.2MIT-BIT心电数据库使用规范

MIT-BIH心电数据的数据文件主要分为三个部分:病历描述文件或头文件,文件后缀为hea;心电图数据文件,文件后缀为dat;专家标记文件,文件后缀为atr。在MIT-BIT数据库中,一个完整的心电记录都由这三部分组成:

1)头文件[.hea],文件中的数据以ASCII码的形式存储,文件中存储了病历中患者已知的基本信息,如年龄、性别等,还存储了用药情况以及一些心电数据文件的信号标准;

2)数据文件[.dat],文件中的数据以二进制形式存储,有80、310、212等8种格式类型。最常见的212格式为每三个字节存储两个数,分别表示两导波形在某一时间点的电压值,一个数12比特位,最高位为符号位。一个数据文件一般存储绘制两导波形的数据;

3)注释文件[.art],文件中的数据以二进制形式存储,表示在特定时间点处专家系统标注的诊断标记,主要用来提取RR间期,判断是否为正常的心动周期。

三个文件之间的关系如下图:

心电数据文件关系图

 

2.3QT5技术说明

Qt是一个开源的、跨平台的C++图形用户界面库,Qt同Windows平台上的MFC,OWL,VCL,ATL是同类型的东西,但其功能更加强大,使用起来更加便捷高效。它提供给应用程序开发者建立图形用户界面所需的所有功能,开发者可以做出十分美观的用户界面。Qt是完全面向对象的,所以很方便扩展其它功能,并且真正的允许组件编程。鉴于Qt这些良好的特性,所以该软件采用Qt作为软件界面的图像化工具。

Qt Charts是Qt5中一款强大的图表绘制组件,可以十分便捷的绘制柱状图、饼图、散点图、折线图、曲线图等图表。由于其采用了Qt Graphics View框架,因此图表可以容易地嵌入到前端的UI界面。本软件中的图表均采用Qt Charts模块绘制。

2.4关键技术说明

2.4.1心率变异时域分析实现方法

atr文件中有每一个出现的QRS中R点的时间位置,由此,后一数据与前一个数据的时间差(单位为毫秒)表示为RRn = Rn – Rn-1,计算文件中所有可得到的RR间期,并绘制RR趋势图、RR散点图、RR差值散点图、RR直方图以及RR差值直方图。

(1)RR趋势图绘制方法:以RR的顺序为X轴坐标,以RR的值作为Y轴坐标。

(2)RR散点图绘制方法:以前一个RR为X轴坐标,以当前RR为Y轴坐标。

(3)RR差值散点图绘制方法:以当前RR与前一个RR的差值为X轴坐标,以后一个RR与当前RR的差值为Y轴坐标。

(4)RR直方图绘制方法:以RR值为X轴坐标,以该RR值出现次数为Y轴坐标。

(5)RR差值直方图绘制方法:以RRn - RRn-1值为X轴坐标,以该值出现的次数为Y轴坐标。

HRV时域分析指标

指标名称

单位

定义

正常值

SDNN

ms

所有的窦性心搏R-R(N-N)间期的标准差

144±39

SDANN

ms

全程记录中每5min N-N间期平均值的标准差

127±35

RMSSD

ms

相邻N-N间期差值的均方根

24±12

SDSD

ms

相邻N-N间期差值的标准差

 

PNNn

%

N-N间期差值<n的个数除以整个N-N间期的个数的百分比

 

2.4.2心率减速力分析流程

心率减速力的分析过程主要可以分为以下几步:

(1)受访者二十四小时的动态心电图,并根据atr文件提取出患者的RR间期。

(2)遍历RR间期:首先清楚加速周期和减速周期的定义,当前心动周期比前一个心动周期延长,说明当前周期心跳减慢,故称为减速周期,反之,当前心动周期比前一个心动周期缩短,说明当前周期心跳加速,故称为加速周期。

将每一个心动周期的RR间期值与前一心动周期相减,结果为负数则该周期属于减速周期,为正数则该周期属于加速周期,可将加速周期标记为0,减速周期标记为1,并予以编号。为降低因人工伪差造成的影响,当测得的心动周期值与前一个心动周期值相比,变化率超过5%时,跳过该周期不计算。因此,通过对二十四小时记录的10万左右的心动周期进行分析,约有4到8万个周期将被标注为减速周期或加速周期。

(3)确定心率段的长短:一般取30个RR间期最为科学。当心率段数值确定为30个间期后,以选定的减速点为中心,向左右各取15个心动周期共同组成一个长度为31的心率段。

(4)各心率段的位相整序:以入选的减速点或加速点为中心,将不同心率段按序号排列并将各个心率信号按位置对齐。

(5)对对应位置的周期进行信号平均,计算对应周期的平均值:①X[0]:所有中心点的RR间期的平均值;②X[1]:中心点右邻的第一个点,该心动周期的平均值;③X[-1]:中心点左邻的第一个点,该心动周期的平均值;④X[-2]:中心点左邻的第二个点,该心动周期的平均值。

(6)计算:当得到X[-2]X[-1]X[0]X[1]的值后,再将结果代入公式计算AC、DC的值。

 

3系统模块设计

软件主要分为数据库模块、文件协议模块、绘图模块、心率变异性分析模块、DC分析模块和按钮功能及菜单设计六个部分。

3.1数据库模块

该模块主要功能是实现前台界面与后台SQLite数据库的连接,并导入心电数据。数据库中存储心电文件在存储空间的绝对路径。当用户点击相应文件时,数据库查询对应文件,并将路径传递给文件协议模块,来完成数据的后续操作。数据库文件结构如下表:

表2-2  数据库文件关系表

字段名称

含义

字段类型

约束

FID

数据编号

int

Primary key

FNAME

文件名称

char(100)

Not null

FPATH

文件路径

char(500)

Not null

FHEA

头文件名称

char(300)

Not null

FDAT

心电数据文件名称

char(300)

Not null

FATR

专家标记文件名称

char(300)

Not null

 

3.2文件协议模块

该模块主要功能是打开心电文件,并将文件中的数据通过编码格式解释为可用信号。本模块主要由C语言编写,主要分为三个功能函数:

(1)读取hea文件函数:

每条病历都对应唯一的头文件,头文件中包含了该心电数据中志愿者的一些基本信息,包括志愿者的姓名、性别、年龄、国籍等,以及采集信号时候的一些信号规范,比如存储格式、采样频率、导联编号、信号初始值、信号基值等有效信息。在软件中根据功能方面的要求读取文件提取需要的有效信息,并将信息存储到患者信息结构体中。主要过程如下:

①通过fopen函数以二进制的形式将文件导入内存;

②根据空格符和换行符对字符串进行分割;

③按照对应规则进行有效数据的提取,并将数据存入对应位置的患者信息结构体。

然后将患者的信息传递到UI界面,显示给用户。将采样频率、导联编号、信号数量、每信号采样数、采样开始时间等对解析dat文件有关系的信息传递给dat函数。

(2)读取dat文件函数:

MIT-BIH数据库中的心电图数据存储格式有Format 8、Format 16、Format 80、Format 212、Format 310等8种,根据头文件的数据格式说明,可以判断出dat文件使用了哪一种格式,在每一种格式中都是对来自两个或多个信号采样得到的数据进行交替存储的。这些数据文件格式中使用最多的是212格式的存储方式。212格式是对两个导联信号的数据库记录,系统对这两个信号(我们设定为信号a和信号b)的采样数据进行交替存储,每三个字节存储两个心电数据,这两个数据分别采样自信号a和信号b,每三个字节(24位)表示两个值,第一个字节表示信号a的低八位,第二个字节的低四位表示信号a的高四位,第二个字节的高四位表示信号b的高四位,第三个字节表示信号b的低八位,每个信号值的最高比特位表示该值的符号位。根据上述规则读出每一组数据值,并根据公式:信号幅值=读出的数据/信号的增益值,解码出心电图信号,并存储到内存中,向调用者返回该内存的头指针。详细过程如下:

①以二进制形式将文件导入内存;

②根据hea文件进行解码,将dat数据转换为double类型数据;

③释放dat文件申请的内存空间,并传递出幅值内存指针。

(3)读取atr文件函数:

注释文件记录了心电专家系统对正常心电信号的标记信息,由采集心电信号时,计算机自动完成,以二进制存储。主要有两种格式:MIT格式和AHA格式。MIT格式是一种紧簇型格式,多用于在线的注释文件;常用的是MIT格式的存储方式,每一注释单元一般用两个字节存储,16位中的最高6位表示了注释类型代码,低10位说明了该注释点的发生时间或为辅助信息。若注释信息为发生时间,则其值为该注释点到上一注释点的采样点个数(对于第一个注释点为从记录的开始到该点的采样点个数),结合采样频率,便可计算出时间间隔;若为辅助信息则表示附加信息的长度。

根据atr文件的协议读取出心电图中每一个心动周期的RR值,将有效的心动周期的RR值存储到内存,并向调用者返回该内存的头指针。详细过程如下:

①以二进制形式将文件导入内存;

②提取atr数据中的R波峰值;

③剔除不合格周期;

④释放atr文件申请的内存空间,并传递出RR间期内存指针。

3.3心率变异分析模块

该模块的主要功能是计算HRV的时域分析指标。将读取atr文件函数传递过来的心动周期的RR值遍历,根据数学公式计算所有窦性心博RR间期的SDDN、RMSSD、SDSD、pNNn(n=10,20,30,40,50,60,70)。详细过程如下:

①遍历所有RR间期,求RR间期的所有的和、RR间期差值的所有的和、判断RR间期差值的范围区间;

②求RR间期的平均值、RR间期差值的平均值;

③计算SDNN、RMSSD、SDSD。

3.4心率减速力分析模块

该模块的主要功能是根据心率减速力的分析流程分析DC。将读取atr文件函数传递过来的心动周期的RR值进行标记,心率加速周期标记为0,减速周期标记为1。取心率段长度为30,以入选的加速点或减速点为中心,进行不同心率段的有序排序,累加对应位置的数值,并取平均值,最后得到一个长度为31的平均信号。取出X[-2]X[-1]X[0]X[1],并根据公式:DC(AC)=(X[0]+X[1]-X[-2]-X[-1])/4

计算AC、DC值。详细过程如下:

①对各个周期进行加减速力标记;

②创建一个长度为31的double类型数组,遍历所有周期,用该数组存储31个心率值整序后的和;

③计算平均值,计算DC、AC值。

 

3.5绘图模块

该模块的主要功能是根据文件协议模块、心率变异分析模块、心率减速力分析模块传输出来的数据进行对应图表的绘制。主要绘制心电图、RR间期趋势图、RR散点图、RR差值散点图、RR直方图、RR差值直方图、DC分析图、AC分析图等八个图表。包括对各个图表的坐标轴、标注、背景格、背景颜色、题目、数据系列进行初始化设置。大致过程如下:

①构建曲线系列;

②构建图表;

③构建X坐标;

④构建Y坐标;

⑤为图表添加坐标;

⑥设置图表背景颜色;

⑦设置图表题目。

3.6按钮功能及菜单设计

该模块的主要功能是支持用户对程序界面演示格式的调整。

(1)心电图表与RR间期趋势图表:用户可对文字字体颜色、图表颜色、图表背景格、定标信号、曲线走速、曲线颜色、曲线宽度等进行调整。

(2)其他图表:用户可对文字字体颜色、图表颜色、图表背景格、定标信号等进行调整。

 

4源代码

请在主页下载。

 

参考文献

[1] 吉桂琴,李鑫,唐弢.基于Linux的心率减速力分析系统设计[J].科学技术创新,2016,33:176-177。

[2] 郭继鸿.心率减速力检测[J].临床心电学杂志,2009,18(1):59-68。

[3] 霍亚飞.《Qt Creator快速入门》.北京:北京航空航天大学出版社,2012:477-482。

[4] The MIT-BIH Normal Sinus Rhythm Database,http://physionet.org/physiobank/database/nsrdb,2000年6月13日。

[5] 百度百科,https://baike.baidu.com/item/MIT-BIH/3257174?fr=aladdin,2018年5月19日。

猜你喜欢

转载自blog.csdn.net/qq_40836442/article/details/106952460