目录
前言
1.软件演示
1.1程序登录界面:
1.2病历信息显示功能:
1.3心电图显示功能:
1.4心率变异分析功能:
1.5病历心率减速力、加速力分析功能:
2.总体技术方案说明及主要关键技术问题解决情况
2.1数据库管理
2.2MIT-BIT心电数据库使用规范
2.3QT5技术说明
2.4关键技术说明
3系统模块设计
3.1数据库模块
3.2文件协议模块
3.3心率变异分析模块
3.4心率减速力分析模块
3.5绘图模块
3.6按钮功能及菜单设计
4源代码
参考文献
前言
1.软件演示
1.1程序登录界面:
运行程序,显示初始界面:
1.2病历信息显示功能:
双击文件,打开患者病历,可发现在患者信息显示窗口出现患者信息:
1.3心电图显示功能:
点击心电图右侧开始按钮,显示心电图波形:
1.4心率变异分析功能:
1.4.1点击RR间期趋势图右上方开始按钮,显示RR间期趋势图:
1.4.2点击RR间期趋势图右上方分析按钮,显示出RR散点图、RR差值散点图、RR直方图、RR差值直方图,并计算心率变异性分析指标,显示在右侧:
1.5病历心率减速力、加速力分析功能:
点击DC图表右侧开始按钮,程序对得到的数据进行PRSA处理,计算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/3257174r=aladdin,2018年5月19日。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!