摘 要 可扩展标志语言(简称XML) 在实现信息标准化、信息统一、信息的交换和共享上有其独特的技术优势。利用这些优势可以将XML技术运用到电子病历系统中。为了解决电子病历交换传输中的数据一致性、安全性等问题,本文提出了一种解决方案,方案由XML Schema验证、数据加密组成。本文通过实例重点讨论了加密处理过程。文章最后给出在Visual Studio.Net 2003环境下实现XML Schema验证、加密的部分程序代码。
关键词 电子病历(EMR);XML Schema;加密;.NET
一、引言
现代信息技术的迅猛发展给社会各个领域带来了巨大的革新,在医学领域也不例外,以计算机技术和网络技术为主的医院信息系统(HIS)也应运而生。实现电子病历(EMR)是医院信息系统的一个核心,也是它的一个重要研究课题。可扩展标记语言(XML)有很多优点,将它应用于电子病历能解决很多难以解决的问题。
XML应用到电子病历中后,如果将传统的加密技术简单运用于XML文档,也就是将XML文档作为一个整体字节流输入,得到加密的结果,这只能满足部分的需求,无法体现XML文档加密的粒度。因此很多情况下要对XML文档的元素进行粒度的加密。比如对于电子病历中的病人的基本信息,像姓名、家庭住址、联系电话以及一些重要的病情信息,都需要加密传输,防止第三者截获破译。本文根据以上情况,采用XML进行数据交换,探讨了一种针对电子病历的加密技术。
二、电子病历概述
电子病历(Electronic Medical Record ,简称EMR)是指将传统的纸病历完全电子化,并超越纸病历的管理模式,提供电子贮存、查询、统计、数据交换等。它的内容不仅包括纸张病历的所有信息,而且包括声像图文等多媒体信息,具有传统病历无法比拟的资料完整性,非常适合现代医疗卫生事业迅速发展的需要。
XML(eXtensible Markup Language 可扩展的标记语言)是由W3C组织在1998发布的一种标准,它具有三个主要的优势:结构化的语言、可扩展性、数据存储与数据显示的分离。
XML技术运用于电子病历领域,具有以下优点:
XML是一种元语言,它采用层次化结构的、面向对象的方法描述数据对象的结构,通过XML的标记来定义电子病历的数据对象,非常适合描述含有复杂内容的病历文档;
XML具有平台无关性,适合在不同平台下进行病历数据的交换,在不同环境下进行系统开发;
XML对于机器和人来说,都具有很强的可读性,即使没有表现样式,用户也能够大致明白病历文档的内容;
XML结构化的电子病历与非结构化的电子病历相比有显著的优点,但是还是存在一些安全问题,比如数据的真实性、完整性、保密性、不可抵赖性,使用者身份的合法性,特别是在传输过程中数据不被篡改。
三、电 子病历XML文档的说明
1. 病历的XML Schema描述
XML Schema1是关于XML标记的语法规则,它详细描述了XML文档的结构。一个Schema文件严格地规定了以它为标准的所有XML文档的树状层次结构的全部细节。当某一XML文档引用该Schema文件时,它必须通过有效性检验。
病历的信息交换是电子病历的一个重要目标。信息交换的前提是标准化,要使交换的病历的内容能为双方理解和处理,必须建立有关病历信息的文档类型定义-Schema标准。电子病历文档的Schema描述了XML文档中的元素和属性以及它们次序、个数、数据类型和取值范围,保证了病历文档书写的正确性。下面给出部分电子病历的Schema描述:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EMR">
<xs:complexType>
<xs:sequence>
<xs:element ref="Patient"/>
<xs:element name="Symptom"/>
<xs:element name="History"/>
<xs:element ref="Record" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="EMRID" type="xs:integer"/>
<xs:attribute name="Type" type="xs:string"/>
<xs:attribute name="Date" type="DateLength"/>
</xs:complexType>
</xs:element>
……
</xs:schema>
通过XML Schema的描述,可以清楚的表示XML文档的结构,先定义文档的根结点<EMR>,接下来定义子元素< Patient >、< Symptom >、< History >、< Record >,其中< Record >元素可以出现多次,然后定义<EMR>元素的属性:< EMRID >,< Type >,< Date >,最后再定义子元素、属性、数据结构。通过图1可以清楚的看到树状的XML文档结构。
图1 <EMR>的属性与子元素
|