Application of Delphi in Software Analysis for 24 Hours' Dynamic ECG Monitoring System
Huang Min
(Institute of Medical Engineering Schoul of Life Science and Technology,Huazhong University of Science and Technology,Wuhan 430074)
Lu Songtao
(Institute of Medical Engineering Schoul of Life Science and Technology,Huazhong University of Science and Technology,Wuhan 430074)
Lin Jiarui
(Institute of Medical Engineering Schoul of Life Science and Technology,Huazhong University of Science and Technology,Wuhan 430074)
Li Zhimin
(Institute of Medical Engineering Schoul of Life Science and Technology,Huazhong University of Science and Technology,Wuhan 430074)
Abstract
Data processing and analysis is needed for playback of data of 24 hours dynamic ECG monitoring system.The system is required to implement detection,classification,arrhythmia analysis,ST segment,HRV analysis,and reports printing for ECG signal.In this paper is presented an application OPP/C(Oriented Object Programming/component)DELPHI and built-in BDE(Borland Database Engine)tools to achieve the above montiones functions.Also presented is an application of DELPHI in ECG signal wave browse control component,which is maile to be a browse componant for medical signal wave in biomedical virtual instrument.
Key words:Dynamic ECG monitoring, OOP/C, BDE, Virtual instrument, Wave browse component
0前言
在开发的三通道24小时动态心电监护系统中,由记录盒回放产生的心电数据多达50M Bytes,记录心搏数达十几万个,而波形出现异常的概率很小,必须使用计算机软件进行自动分析。Windows操作系统的普及与流行使得开发美观易操纵的界面成为必然,因此采用面向对象/控件的编程语言在Window98(95)环境下来开发系统的软件可使软件的功能强大,界面美观,操作方便。由于Delphi是以Object Pascal为基础,在软件中采用面向对象的程序设计,引入对象和类的概念,突出封装,继承和多态性的特征,结合大量的可视化控件和预先定义的对象以及使用方便的数据库引擎(BDE)和数据库桌面(DataBase Desktop),使得开发工作快捷,并方便地实现汉化。而且Delphi与硬件接口的功能强大且简单,在这一点上是其它开发语言所不能比拟的(VB很难与硬件接口,VC++虽可,但大部分要使用Windows的API函数,开发周期长),因而很适合应用于长程心电监护系统的快速软件开发[1~3]。
同时随着医疗仪器的计算机化,网络化,数字化和远程化,医学信号处理虚拟仪器逐渐发展起来,它充分利用PC机资源(特别是软件资源)的灵活性,使医学仪器的设计变得简单,更加模块化,易维护,可重复利用性好,省时经济,且增强了医学仪器的功能(如显示,分析,存储管理功能),同时仪器的用户界面更加美观,易操作。心电虚拟仪器的核心是心电数据采集控件,心电波形浏览控件,心电数据处理控件的研制,而Delphi不仅可用于编程,而且可提供在同一种环境下使用同一种语言创建用户控件的能力,我们可以方便地在继承系统已有的基础上生成我们需要的各种专用控件。有了这些控件,便可利用不同的编程语言和开发工具,研制出满足不同需求的医学信号处理虚拟仪器[4,5]。
1Delphi在系统软件组成中的应用
在设计中,我们根据系统的功能将软件分为登录,回放,系统数据管理,数据分析,报表打印五个功能模块。
1.1登录和回放
登录和回放与系统硬件有着密切的关系,前者负责实时显示一段时间的心电波形,检查电极的安放情况,调节记录增益和PC机与记录盒的通信;后者负责将记录盒中的数据回放至PC机中,由于Delphi开发语言自身支持与硬件接口的函数,因此很容易实现计算机与记录盒接口卡之间的通信,即首先利用CreatFile函数打开串行口,以确定本程序对串行口的占有权,然后通过GetCommState函数填充设备控制块,再调用SetCommState函数配置串行口的波特率,数据位,校验位和停止位,然后便可以用ReadFile函数在串行口上操纵数据的传输,最后利用CloseHandle函数关闭串行口。而且在登录时,将病人的有关信息进行注册存放在信息文件和病人的数据库中,产生序列号ID以便与数据库中对应的记录关联,ID也是软件中数据库管理和数据分析的主索引,负责查找对应病人的各种文件,回放时则产生相应的数据压缩文件,如:ID号为12的病人的三个通道的心电压缩数据文件分别为:Cecg0012.ch1,Cecg0012.ch2,Cecg0012.ch3。
1.2数据管理
在软件中,需要对众多病人的心电数据,分析结果,诊断报告等数据进行管理,因此,我们采用Delphi方便的数据库功能对之进行统一管理,即通过数据库中病人的ID号与各种类型的数据文件相关联,给软件提供一致的数据接口,针对不同类型的数据,采用了不同的管理方法,主要有下面三方面的数据管理(以ID号为12的病人为例):
(1)心电记录数据:它包括记录盒回放数据和解压后的三个通道的心电数据,它们对应的数据文件分别为:Cecg0012.ch1,Cecg0012.ch2,Cecg0012.ch3:ecg0012.ch1,ecg0012.ch2.ecg0012.ch3。其中解压后的数据文件(*ch*)的数据结构为:每一通道的数据作为一个文件,每个采样点(200Hz采样频率)的值以一个字节带符号整数的格式顺序存放,读取时,则采用Delphi中提供的无类型文件的块读方式(BlockRead)以五分钟数据段为单位每次读取60000个字节。
(2)分析结果数据:在心律失常分析,S-T段分析和心率变异分析中都会产生对应的结果数据,病人的各种分析结果数据文件分别为:ecg0012.ecg,ecg0012.cls,ecg0012.hrv。其中,心律失常分析结果数据文件(*.ecg)以每分钟信息作为一条记录的方式存放,在查询结果时,可快速根据时间定位(Seek),以分钟数为索引,用Delphi提供的记录文件的读取方式(Read)每次读取一条记录,每分钟信息记录结构如图1所示:
图1每条记录的结构示意图
(3)病人信息数据:病人在登录时会产生各种信息即:编号(ID),姓名,年龄,性别,医生,时间等,这些信息存放在专门管理病人档案的数据库文件中(*.db),并自动按顺序生成ID号。
整个数据库管理采用内置的数据库引擎(BDE)进行管理,我们在创建程序时,不必关心BDE的内容,它可以自动建立程序与数据库的连接,并为不同类型的数据库提供相应的驱动程序,在本系统中,我们采用关系数据库Paradox,通过数据源(DataSource)作为中间桥梁,将数据控制部件和数据集联系起来,而数据集(DataSet)则通过数据库引擎和数据库连通,而数据控制部件为用户提供可视化界面,用于显示(TDBGrid部件)和修改(TDBEdit)部件数据库文件中的数据信息。它们的关系如图2:
图2数据库部件的体系结构
当然,要完成上述管理,还必须首先完成数据库表的建立,这可以通过Delphi中的数据库桌面(DataBase Desktop)来生成关系型数据库表的结构,完成对各个域的定义。在病历管理中可进行记录的添加以及对原有记录进行修改,并经过数据集的投寄方法(Post)将变化映射到数据库表中。
1.3数据分析
对回放解压后的心电数据进行处理,得到ECG结果信息,以便提供诊断帮助,分析处理流程如图:
图3分析处理流程
其中的分析都是以每分钟心电数据为单位进行处理的,这也是为了与分析结果相联系,因为心率等参数均是以一分钟为单位计算的。QRS波的检测是采用整系数带通滤波器和基于曲度特征的R波增强算法,结合自适应域值技术实现的。QRS波分类则根据QRS波定位信息,用QRS波宽度,高度,R-R间期作为特征向量来进行分类,并形成QSR波类别序列。而心律失常分析则根据QSR波类别序列,R-R间期按模式匹配得到。S-T段分析则根据QRS波定位信<
