当前位置: 首页 > 期刊 > 《北京生物医学工程》 > 2000年第3期
编号:10257720
Delphi在24小时动态心电监护系统软件分析中的应用
http://www.100md.com 《北京生物医学工程》 2000年第3期
     作者:黄敏 卢松涛 林家瑞 李志敏

    单位:华中理工大学 生命科学与技术学院生物医学工程研究所 武汉 430074

    关键词:动态心电监护;面向对象/控件;数据库引擎;虚拟仪器;波形浏览控件

    北京生物医学工程000309 摘 要 在回放式24小时动态心电监护系统中,需要对大量的数据进行处理和分析,从而实现对心电信号的检测,分类,心律失常分析,心律变异分析,报表打印功能。本文介绍了利用面向对象的Delphi开发工具和其内置的数据库引擎(BDE)来实现上述功能,并介绍了利用Delphi来进行心电信号波形浏览控件研制,使之可成为生物医学虚拟仪器中的医学信号波形浏览控件。

    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]

    1 Delphi在系统软件组成中的应用

    在设计中,我们根据系统的功能将软件分为登录,回放,系统数据管理,数据分析,报表打印五个功能模块。

, http://www.100md.com     1.1 登录和回放

    登录和回放与系统硬件有着密切的关系,前者负责实时显示一段时间的心电波形,检查电极的安放情况,调节记录增益和PC机与记录盒的通信;后者负责将记录盒中的数据回放至PC机中,由于Delphi开发语言自身支持与硬件接口的函数,因此很容易实现计算机与记录盒接口卡之间的通信,即首先利用CreatFile函数打开串行口,以确定本程序对串行口的占有权,然后通过GetCommState函数填充设备控制块,再调用SetCommState函数配置串行口的波特率,数据位,校验位和停止位,然后便可以用ReadFile函数在串行口上操纵数据的传输,最后利用CloseHandle函数关闭串行口。而且在登录时,将病人的有关信息进行注册存放在信息文件和病人的数据库中,产生序列号ID以便与数据库中对应的记录关联,ID也是软件中数据库管理和数据分析的主索引,负责查找对应病人的各种文件,回放时则产生相应的数据压缩文件,如:ID号为12的病人的三个通道的心电压缩数据文件分别为:Cecg0012.ch1,Cecg0012.ch2,Cecg0012.ch3。
, http://www.100md.com
    1.2 数据管理

    在软件中,需要对众多病人的心电数据,分析结果,诊断报告等数据进行管理,因此,我们采用Delphi方便的数据库功能对之进行统一管理,即通过数据库中病人的ID号与各种类型的数据文件相关联,给软件提供一致的数据接口,针对不同类型的数据,采用了不同的管理方法,主要有下面三方面的数据管理(以ID号为12的病人为例):

    (1)心电记录数据:它包括记录盒回放数据和解压后的三个通道的心电数据,它们对应的数据文件分别为:Cecg0012.ch1,Cecg0012.ch2,Cecg0012.ch3:ecg0012.ch1,ecg0012.ch2.ecg0012.ch3。其中解压后的数据文件(*ch*)的数据结构为:每一通道的数据作为一个文件,每个采样点(200Hz采样频率)的值以一个字节带符号整数的格式顺序存放,读取时,则采用Delphi中提供的无类型文件的块读方式(BlockRead)以五分钟数据段为单位每次读取60000个字节。
, http://www.100md.com
    (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波定位信息,通过局部变换得到J点位置和S-T段电平与斜率。心率变异分析则包含时域和非线性两部分,分别给出各种时域指标和统计结果。分析的结果除了保存到相应的数据文件中外,还以在界面中输出报表,心电波形缩微图,详细浏览图,趋势图的形式展现给医生,这些都要用到Delphi的各种与图形有关的部件,而最关键的则是用到画布类Tcanvas和图表类Tchart的各种属性以实现各种图形的不同特征。
, 百拇医药
    1.4 报表打印

    为了解情况,需对各种分析结果以报表的形式打印给医生或病人。在设计病历表和统计报表打印时,我们只需将要打印的结果对应的数据文件中的数据转化为数据库表中的记录,然后采用Delphi的快速报表工具(Quick Report)和数据库表(Table)联系起来,再加上一些标签部件便可快速生成报表浏览和打印程序。而趋势图的打印则直接调用Tchart部件的打印方法即可。

    2 用Delphi制作波形浏览控件(TEcgBrowser)

    心电波形浏览控件是医学信号处理虚拟仪器的核心之一,而本软件在心律失常的结果显示图中显示心电波形是很重要的环节,因此,制作专门的心电波形浏览控件是很必要的。Delphi自身的类TPaintBox具有画布的属性,很适合用于画心电图,因此选择它作为波形浏览控件的父类,我们制作的波形浏览控件将继承父类的属性和方法,但由于在画心电图时需要显示各种分度和网格,因此,我们要添加新的属性和方法,具体如下(继承父类的属性和方法未列出,只需查找Delphi中的控件TPaintBox即可):
, http://www.100md.com
    (1)控件属性:

    FdisplayGrids:boolean 决定是否显示网格。

    FXPointPerDot:byte网格X方向每点所占据的象素点数。

    FXDotsPerLine:byte网格X方向每行的点数。

    FYPointPerDot:byte网格Y方向每点所占据的象素点数。

    FYDotsPerLine:byte网格Y方向每行的点数。

    Height:word整个网格高度。

    Width:word整个网格宽度。

    Filename:string待显示的数据文件名。
, http://www.100md.com
    FileByteStyle:byte数据文件存放格式字节数。

    (2)控件方法:

    Paint 清屏,重画网格。(覆盖了父类的方法)

    LoadFile(filename:string)将数据文件装入控件。

    CompressScale(scale:single)画心电波形时压缩的比例。

    DrawEcg(filename:string)画心电波形。

    图4 控件应用实例

    TEcgBrowser控件可在Delphi,C++ Builder,VC++,VB等多种开发环境中运用,与其它控件快速生成对数据文件的显示,处理,分析和打印的应用程序。该控件同时可用于对心电、脑电、胃电等多种信号的波形浏览,只要清楚数据文件的存放格式,将属性FileByteStyle设置成为相应的字节数即可。图4是利用控件TEcgBrowser显示心电波形及R点峰值检测的一个实例。
, 百拇医药
    3 结 论

    利用Delphi可以在很短时间内完成对24小时动态心电监护系统软件的设计,可集数据回放,心电信号分析及显示,结果显示及报表打印于一体。在软件运行中,心电图波形显示和异常波形搜索的速度都很快,克服了24小时心电数据量巨大而带来的处理速度慢的缺点。而利用Delphi的通用控件与生物医学信号处理专用控件(心电数据采集控件,心电波形浏览控件,心电数据处理控件)相结合,可在很短的时间内,开发出更经济,更好的医学信号处理仪器,用Delphi开发的控件和程序在其它开发工具中也可以很好地得到运用,实现了软件之间的共享。

    作者简介:黄敏:女,1972年9月生于四川。现为华中理工大学生命科学与技术学院97级硕士研究生,主要从事于生物医学信号处理,计算机应用及软件设计。

    4 参考文献

    [1] 林家瑞,等。动态心电分析系统与用户界面的研制。生物医学工程杂志,1993,17(6):341~344
, 百拇医药
    [2] [美]Todd Milwe & David Powell著,林君工作室译.Delphi 3开发使用手册,北京:机械工业出版社,1998

    [3] 王华清,等。24小时动态心电分析系统中数据管理的应用研究。中国医疗器械杂志,1995,15(3):214

    [4] [美]Paul Cilwa著,杨开成等译。用户控件的程序设计。北京:人民邮电出版社,1997,1~324

    [5] 刘森,成奇明,吕晓东,等。虚拟仪器的现状与发展。北京生物医学工程,1996,15(4):235~239

    (1999-08-19收稿,1999-10-11修回), 百拇医药