基于DCMTK的DICOM-ECG实现的研究

2013-12-05 09:38王祥吴剑马亚全彭诚
中国医疗器械杂志 2013年6期
关键词:心电导联波形

【作 者】王祥,吴剑,马亚全,彭诚

1 清华大学深圳研究生院 深圳市无损监测与微创医学技术重点实验室,深圳市,518055

2 深圳华清心仪医疗电子有限公司,深圳市,518054

作为一种对心脏疾病的无创检测和早期诊断方法,心电图反映了心脏激动的电学活动,对于各种心律失常和传导障碍的诊断具有决定性作用。近年来,随着网络化信息化的发展,对于医疗诊断的信息化智能化的需要越来越多,如何使心电数据与HIS(Hospital Information System,医院信息系统)、PACS(Picture Archiving and Communication System,医学影像存档与通信系统)等系统更好的交互成为人们迫切需要解决的问题。

很长一段时间以来,由于没有统一的工业标准,各个心电图机的生产厂家定义的心电数据格式大不一样,主要使用的数据格式有三种:SCP-ECG、HL7-aECG和DICOM-ECG[1]。SCP-ECG和HL7-aECG的数据格式虽然在其他方面有其优势,但均不能直接与医院信息系统直接通讯。而作为满足DICOM标准的DICOM-ECG格式,又由于其标准的复杂性等原因,直到2006年才有厂商声称支持采用DICOM标准作为诊断型心电图机的存储标准。

目前,虽然支持SCP-ECG和HL7-aECG心电存储格式的厂家与协会比较多,但当这些格式的数据与医院信息系统交互时,需要提供第三方软件或是工具,将数据转为符合DICOM标准的格式,才能实现数据上传及存储等功能[2]。本文通过对DICOM 3.0标准的心电波形部分解析,并借助工具包DCMTK(DICOM ToolKit)实现对DICOM-ECG文件的生成,使心电数据实现与HIS、PACS等系统的直接通讯。

1 DICOM简介

为了解决由于医疗设备的生产厂家不同带来的互操作困难,美国放射联合会(American College of Radiology,ACR)和美国国家电子制造商协会(National Electrical Manufacturers Association,NEMA)制定了DICOM(Digital Imaging and Communications in Medicine,医学数字影像和通讯)标准。从最初的1.0版本(ACR-NEMA-Standards Publications No.300-1985)到1988年推出的2.0版本(ACR-NEMA-Standards Publications No.300-1988),到1993年3.0版本,DICOM标准已经发展成为医学影像信息学领域的国际通用标准[3]。

DICOM数据文件可分为文件头和数据集两部分。

DICOM的文件头包括两个部分。文件头的第一部分是128 byte的保留部分,该部分通常全为00H,接下来是前缀部分,占4个byte,内容固定为大写字母的字符串”DICM”,该字符串可以作为判断一个文件是否为DICOM文件的依据。文件头的第二部分主要是用来存储元信息(meta information),包括传输语法、病人姓名、文件元信息版本、媒体存储SOP(服务对象类)UID(唯一标志符)和传输句法UID等。

DICOM数据集由多个数据元素组成[4]。数据元素主要包含四个部分:标签(Tag)、值表示类型(value representation,VR)、值长度(value length)和值域(value field),其中的值表示类型是可选的,如图1所示。

图1 DICOM数据集和数据元素构成Fig.1 DICOM data set and data element structures

2 DICOM-ECG

DICOM标准最初的目的是存储和传输医学影像,但2000年DICOM WS 30引入后,DICOM标准开始支持医学波形图像的存储,使DICOM作为心电图存储格式成为可能。使用DICOM-ECG作为心电数据存储格式有其优势:支持多种诊断设备、全球通用、标准的成熟、文件大小合理等[1]。相对于其他标准,DICOM-ECG也有自己独特的优势:通过DICOM,医生可以通过综合影像和波形对患者进行诊断,这是其他心电标准所不具有的[5]。

DICOM-ECG作为DICOM的一部分,其存储格式遵循DICOM的文件格式。DICOM使用信息对象模型来描述现实世界的对象信息,图2为ECG的DICOM信息对象定义(Information Object Definition,IOD)描述[6]。一个信息模型分为四个层次:Patient(患者)处于最顶层,表示一个DICOM文件只可能属于唯一的一个病人;Study(检查)处于下一层,“1,n”表示1对n的关系,即一个Patient可以有多个Study;接下来是Series(序列,即检查得到的序列)层,最后是Waveform(波形,包含在序列里)层。

依据该模型,DICOM WS 30给出了DICOMECG的组成[6],如表1所示(以12导联的心电为例,下同)。其中M是mandatory的缩写,表示该项必须填充;U是User option的缩写,表示用户自己选择是否需要填充;C是conditional的缩写,表示可有条件的填充,这里出现在Waveform Annotation(波形注释)里,表示若存在对波形的注释,应该将注释填充。

下面对表1的IE(信息实体)做一下解析:

(1)Patient(患者) Patient为DICOM波形IOD信息模型的最顶层,任何一个DICOM文件有且只有一个Patient。主要存储患者的信息,例如患者姓名、性别、ID、出生日期等。

图2 DICOM波形IOD信息模型Fig.2 DICOM Waveform IOD Information Model

表1 12导联心电 IOD模型Tab.1 12-Lead ECG IOD Modules

(2)Study(检查) 这里存储的是检查的一些基本信息,例如检查项目UID,检查日期、检查时间、检查ID和检查医生等。

(3)Series(序列) Series存储序列的基本信息,例如形态(Modality)、序列项目UID、序列号等。

(4)Frame of Reference(参考系) 主要是记录各导联数据采集时是否同步。

(5)Equipment (设备) Equipment存储的是仪器制造商的一些信息,例如制造商名称、设备型号、软件版本等。

(6)Waveform(波形) Waveform里存储所有与数据有关的信息,例如导联数目、采样率、数据采集时间、采集方式、采集得到的数据等。

将表1 Usage中标注为M部分的Module(模块)填充,即可生成一个12导联ECG的DICOM-ECG文件,但需要注意的是DICOM标准对12导联ECG一些标签的值域做了一定的限制[6]。例如,形态(Modality)必须写入“ECG”,每个导联样本数量(Number of Waveform Samples)的值不能超过16384,而采样率(Sampling Frequency)的值则限定在200到1000之间(即支持最低200 Hz,最高1000 Hz的采样率)等等,如果不按限制值来写入DICOM文件,有可能会导致文件出错。

3 DCMTK及DICOM-ECG的实现

3.1 DCMTK简介

DCMTK是由德国OFFIS公司提供的开源项目,已经实现了DICOM协议的大部分内容。该开发包提供所有的源代码、支持库和帮助文档,完全是由ANSIC和C++写成的,被广泛的应用于各公司和医院的开发平台中。

本文所用的程序包主要为dcmdata,它是一个DICOM数据编码/解码库,这个模块包含了一些类用来管理DICOM数据结构和文件。同时,它也提供了对DICOMDIR文件的支持以满足Dicom Storage Media(存储介质)的需要。

3.2 DICOM-ECG的实现

在OFFIS官网上下载相应版本的DCMTK工具包后,通过CMake生成lib和include文件,将它们拷贝到VC安装目录下的相应lib和include文件,打开VC软件即可编写代码(本文使用VS 2008)。

本文通过深圳华清心仪医疗电子有限公司提供的心电数据,在DCMTK提供的类DcmItem下的putAndInsertString()等函数对相应的Tag进行填充,再通过DcmFileFormat类下的saveFile()对生成的文件保存,得到一个基本的DICOM-ECG文件。

4 结果和讨论

4.1 结果

在得到DICOM-ECG文件后,关于文件是否正确生成,我们有两个问题需要验证:数据是否正确的存储以及文件是否能正确的与PACS等系统通讯。

对于第一个问题,我们通过如下方法验证,通过比较用Matlab打开的原始心电数据与用Charruasoft公司提供的DICOM-ECG Viewer打开所生成的文件,看波形是否正确。结果如图3所示(图示中只显示Lead II,重点比较波形走向和幅度)。

通过比较图3(a)、(b)两幅图,可知数据已经正确的存储,通过使用Matlab的自带函数dicominfo()对所生成的DICOM-ECG读取也得出了相同的结论。

图3 不同软件打开原始数据的比较Fig.3 Result of raw data by different software

对于第二个问题,由于实验条件的限制,我们不直接通过DICOM-ECG与PACS等系统的交互通讯来验证,而是通过工具DICOM Validation Toolkit(DVTk)来验证。DVTk是一个DICOM的有效性测试工具,用来测试产品的DICOM兼容性。通过DVTk提供的DCM Viewer and Validator,我们测试了生成的DICOMECG,兼容性满足DICOM要求,说明实验生成的DICOM-ECG能够正确地与PACS等系统通讯。

4.2 讨论

本文通过对DICOM WS 30关于心电部分的解读,利用工具包DCMTK实现了符合DICOM 3.0标准的DICOM-ECG文件,并且通过工具DVTk验证了文件的DICOM兼容性,由结果可知DICOM-ECG正确生成。

在本文生成的DICOM-ECG中,Module里的标签是作者按基本的需求来填充的,医院信息等其他信息并未填充,使用者可根据自己的需要对相应的标签进行填充。本例中只包含心电的原始数据,数据没经过自动诊断算法,因而波形注释(Waveform Annotation)的相关标签作者并未填充,使用者若需要波形注释,可依照DICOM标准的第16部分[7]将波形注释信息写入相应的标签里。

[1]Bond RR,Finlay DD,Nugent CD,et al.A review of ECG storage formats[J].Int J Med Inform,2011,80: 683-683.

[2]Hsieh JC,Yu KC,Lo HC,et al.DICOM-Based 12-lead ECG gateway and browser under the clinically-used information system:United States,US20090299771A1[P].2009-12-3.

[3]梁存升,冯骥.DICOM标准分析及其应用[J].中国医学装备,2006,2(3): 19-19.

[4]National Electrical Manufacturer Association (NEMA).Digital imaging and communications in medicine,PS3.5-2011[S].

[5]Hilbel T,Brown BD,Bie JD,et al.Innovation and advantage of the DICOM ECG standard for viewing,interchange and permanent archiving of the diagnostic electrocardiogram[J].Comput Cardiol,2007,34: 633-633.

[6]National Electrical Manufacturer Association(NEMA).Digital imaging and communications in medicine,PS3.3-2011[S].

[7]National Electrical Manufacturer Association(NEMA).Digital imaging and communications in medicine,PS3.16-2011[S].

猜你喜欢
心电导联波形
基于时域波形掩护的间歇采样干扰对抗研究
回旋支闭塞引起孤立Ⅰ、aVL导联ST段抬高型心肌梗死2例并文献复习
心电向量图诊断高血压病左心室异常的临床应用
基于Halbach阵列磁钢的PMSM气隙磁密波形优化
心电医联体建设需求分析及意义
基于非接触式电极的心电监测系统
穿戴式心电:发展历程、核心技术与未来挑战
用于SAR与通信一体化系统的滤波器组多载波波形
全新迈腾B7L车喷油器波形测试
急性心肌梗死冠脉造影与心电图相关性研究