在心电图完成采集后,除了纸质的报告,一般对于需要接入医院信息系统如HIS、PACS等,需要按一定的格式存储,但长期以来均没有出现统一的格式标准,各心电厂家一般采用不同的格式做为存储。下面介绍一些常见的心电数据格式,主要有SCP-ECG、HL7 aECG、DICOM3.0、MFER、EDF/EDF+、GDF、ISHNE等,其他一些厂家自己的数据格式,如飞利浦的PhilipsXML,GE的MUSE-XML等,其中SCP-ECG、HL7 aECG、DICOM3.0、MFER获得标准开发组织(standard development organization)的支持,应用比较广泛。
1.SCP-ECG
SCP-ECG由欧洲标准会员会制定,为二进制格式存储,由于存储时可以采用Huffman编码,生成的SCP文件相对较小。文档可参照《Standard communications protocol for computer-assisted electrocardiography》[1],SCP数据结构如下图所示,包含了一个2字节的CRC校验、一个4字节的数据长度和0到11共12个section。其中Mandatory是必填的,Optional是可选的。关于section序号,0到11是定义好的;12到127,以及1024之后的是预留备用;128到1023,厂家可以根据自己的需求定义,格式没有要求,但建议与其他section的格式保持一致。
SCP-ECG结构(来自[1])
SCP-ECG实现还没有专门的工具,不过标准写的很详细,参照标准填写相应的内容即可,一般来说也不是很难,网上有一些心电图显示工具(如EcgViewer,ECGtoolkit等),也可以用来测试生成的SCP文件是否正确。SCP-ECG包含的信息较为全面,而且由于采用了Huffman压缩算法,在非QRS波区域外还可以采用低通滤波及抽样,所以文件相对较小,但只能用于静态心电图中,动态和运动等其他心电图无法使用。另外由于采用二进制格式,导致文件的可读性较差。
2. HL7 aECG
HL7 aECG,也叫FDA-XML,由美国FDA和HL7合作推出的一种心电数据存储格式,采用基于XML的形式,将相应的内容填写到对应的标签里,具体实现可以参照文件《HL7 aECG Implementation Guide》[2],文件里面有详细的解释和示例。每个XML以标签<AnnotatedECG>开始,文档的标签带有"required"说明生成文件必须包含该项,带有"optional"表示标签填写可选。
HL7 aECG结构(来自[3])
HL7 aECG的实现也没有专门的工具,不过基于XML和参照文件的详细解释也可以自己手动编写实现,一个比较好的方法是找一个示例文件,对比写入相应的标签。AMPS公司的网站(www.amps-llc.com)上,有专业的校验格式工具,可以检验你生成的文件是否正确。HL7 aECG采用了XML形式,可读性较强,而且相应内容查找起来也比较方便,但带来的缺点是文件大小比较大。
3. DICOM-ECG
DICOM标准由美国ACR和NEMA联合制定,在1993年的3.0版本上,支持心电数据的写入。关于心电部分的描述,主要在第3部分《Digital Imaging and Communications in Medicine(DICOM) Part 3: Information Object Definitions》[4]的附录A.34中,其中A.34.3为12导联心电图定义,A34.4为通用心电图的定义,A34.5为动态心电图的定义。一个12导联定义的模型如图所示,其中M是必填项,U是用户选填项。
DICOM ECG 12导联结构(来自[4])
DICOM格式可以通过工具DCMTK实现,可以从offis公司网站上(https://www.dcmtk.org/)下载源码编译,生成库进行编写。当然,如果不嫌麻烦或是对应的平台不支持,也可以直接自己编写代码实现,建议找一份DCM示例,利用matlab的dicominfo读取内容,根据相应的标签填写内容。然后通过工具(EcgViewer,ECGtoolkit,CharruaSoft的DICOM-ECG Viewer等)查看生成的文件是否正确。DICOM的心电数据格式同SCP一样,是二进制形式,因而导致可读性差,而且由于DICOM标准涵盖内容多,导致格式较为复杂,实现相对较难。但由于标准成熟,且得益于DICOM相对较为庞大的社区,在与医院信息系统对接中较为方便。
4. MFER
MFER由日本IS&C委员会于1997年提出的医学波形编码规则(Medical waveform Format Encoding Rules)。MFER在2001年发布第一版,在2007年正式成为ISO标准(ISO/TS 11073-92001)。MFER标准的描述主要参照三个文档,《ISO 22077-1:2015 Health informatics — Medical waveform format — Part 1: Encoding rules》[5],《ISO/TS 22077-2:2015 Health informatics — Medical waveform format — Part 2: Electrocardiography》[6],《ISO/TS 22077-3:2015 Health informatics — Medical waveform format — Part 3: Long term electrocardiography》[7]。“part 1”文档主要介绍编码规则,“part 2”和“part 3”分别对应静态和动态心电信号。
MFER结构(来自[8])
MFER格式可以从其官网 (http://www.mfer.org/en/index.htm)下载相应的示例及查看器,参照示例和标准文档进行实现。由于采用二进制格式,其实现基本是通过TLV(Tag-Length-Value)的方式,与SCP的section 1实现类似。MFER格式仅用于医学波形的编码,而且由于支持的厂商并不是很多,导致实际应用中没有HL7 aECG等其他三个广泛。
5. EDF/EDF+/GDF
EDF(The European Data Format)最开始应用于分析睡眠数据,EDF+是EDF的延伸。EDF记录信号必须是连续的,不适用于ECG,但EDF+可包含间断信号、注释信息等,可用于ECG的记录。可从官网(https://www.edfplus.info/)查看和下载相应文档进行实现。
GDF(General Data Format)最初的提出是为了克服EDF的缺点,采用固定256字节头加TLV的形式。具体可从网站BioSig(http://biosig.sourceforge.net/index.html)查看和下载相关的文档,其中还包含Matlab、C/C++、Java、Python等语言的解析和实现代码。
EDF/EDF+/GDF均是生物医学信号的存储格式,对心电的信号并未做特别详细的描述,有一些心电的信息可能找不到对应的标签,实际的应用也比较少。
6. ISHNE
ISHNE(International Society for Holter and Noninvasive Electrocardiology)格式主要运用在动态心电图(Holter)上,格式文档介绍可参照《The ISHNE Holter Standard Output File Format》[9]。与SCP-ECG格式类似,采用二进制的形式,包含头信息、CRC-CCITT校验、数据信息等。也可查看网站(http://thew-project.org/THEWFileFormat.htm),上面有部分示例,以及Matlab和c++编写的解析代码。
7. 其他
除了以上介绍的心电格式外,部分厂家由于产品应用较为广泛,其心电格式也常被提及。比如飞利浦的PhilipsXML和GE的MUSE-XML。
这两家的均采用基于XML的格式,自定义存储的标签,同时对数据部分采用压缩编码的方式,保留其他信息直接可读的同时对数据进行压缩,使得到的文件较小。
总结
总的来说,心电的数据格式主要包含两类:一个是以SCP-ECG和DICOM为代表的二进制格式,另一类是以HL7 aECG为代表的XML格式。二进制格式的生成文件相对较小,XML由于额外应用较多信息导致文件较大。但在当前存储空间和传输带宽逐渐得到改善的情况下,XML的劣势再逐渐减小,而且相对二进制可读性强,应用前景应该较广。
最后
在之前的工作中,完成了SCP-ECG、DICOM、HL7 aECG(FAD-XML)和MFER格式的解析和生成,同时解析过飞利浦和GE的数据格式。个人感觉对于心电的数据格式,各个标准基本都是相通的,标准的内容差异也不是很大,只是实现的方法有所不同。最好的方式是找到一个标准的文件,同时对比文档查看,解析和实现起来应该会快很多。
参考文献
[1]. 《Standard communications protocol for computer-assisted electrocardiography》.
[2]. 《HL7 aECG Implementation Guide》.
[3]. 《FDA XML Data Format Design Specification》(DRAFT, Revision C).
[4]. 《Digital Imaging and Communications in Medicine(DICOM) Part 3: Information Object Definitions》.
[5]. 《ISO 22077-1:2015 Health informatics — Medical waveform format — Part 1: Encoding rules》.
[6]. 《ISO/TS 22077-2:2015 Health informatics — Medical waveform format — Part 2: Electrocardiography》.
[7]. 《ISO/TS 22077-3:2015 Health informatics — Medical waveform format — Part 3: Long term electrocardiography》.
[8]. 《Medical waveform description Format Encoding Rules MFER Part I, Version 1.01 - 2003》.
[9]. 《The ISHNE Holter Standard Output File Format》.