在图1中显示的<Patient>下面还有子元素,详情见图2,其中<PersonalInfo>与<PhysicalExam>下的子元素,由于篇幅有限这里不再显示。
图2 <Patient>的子元素
在图1中显示的<Record>元素可能多于一个,但至少有一个,<Record>下面属性与子元素的定义见图3:
图3 <Record>的属性与子元素
2.病历的XML文档描述
通过上述的Schema描述,可以很容易的写出电子病历的XML文档描述,下面是一份“入院检查”的病历的XML文档:
<? xml version="1.0" encoding="UTF-8"?>
<EMRxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EMR.xsd" EMRID="300365" Type="入院检查" Date="2005-05-07">
<Patient>
<PersonalInfo>
<Name>LiMing</Name>
<Sex>male</Sex>
<Birthday>1981-03-05</Birthday>
<Nationality>HanZu</Nationality>
<IsMarried>No</IsMarried>
<Address>ChongQing</Address>
<InhospitalTime>2006-05-07</InhospitalTime>
</PersonalInfo>
<PhysicalExam>
<Temperature>39℃</Temperature>
<Sphygmus>82/min</Sphygmus>
<BloodPressure>699Kpa</BloodPressure>
<Stature>183cm</Stature>
<Avoirdupois>70kg</Avoirdupois>
</PhysicalExam>
</Patient>
<Symptom>腹痛、痉挛</Symptom>
<History>4小时前食用野菇</History>
<Record DoctorID="27149" Date="2006-05-08" Cinic="消化科">
<Advice>住院治疗</Advice>
<Diagnosis>毒伞肽中毒</Diagnosis>
<Medicine>阿托品</Medicine>
<Treatment>0.5~1毫克阿托品每15~30分钟肌内注射一次</Treatment>
</Record>
<Record DoctorID="27176" Date="2006-05-09" Clinic="胃肠科">
<Picture PictureID="597841" Name="胃镜" Type="放射" Format="bmp">
<Description>胃部不适</Description>
<Data>2006-05-08</Data>
</Picture>
</Record>
</EMR>
清单3-1 初始病历XML文档
四、XML加密
XML加密为加密结构化数据与以标准XML格式表示加密结果提供了一种标准的方法。XML加密允许您加密任何数据,这些数据既可以是一个完整的XML文档或者XML文档中的特定元素,也可以是从外部引用的任意非XML格式数据。加密结果最后被表示为一个XML加密元素<EncryptedDada>。
电子病历的加密意义在于将一些敏感的数据保护起来,而将不敏感的数据开放,而不是将整个文件加密,发送方使用接受访的公钥加密数据,只有接受方才能使用自己的私钥解密出数据,提高了数据的安全性。
W3C关于XML加密有详细的描述,可见正式出版的《XML Encryption Syntax and Processing》规范2,规范中规定了多达11种的加密算法,本文采用其中的3DES对称加密算法与RSA非对称算法。针对具体的应用,就是采用3DES算法来加密XML的数据,采用RSA算法来加密3DES算法的密钥,以达到速度与安全性两方面的优化组合。
|