基于XML的电子病历开发初探
南昌大学计算中心 钟伯刚 高 剑
1.问题提出:
以前各个医院使用的系统不一样,对于病人在其他医院的数据无法在本地看到。使用电子病历系统能解决这个问题。对于符合因特网或XML标准的病历描述,浏览器可作为病历的天然阅读器。微软公司的浏览器IE版本5已经实现了对XML的支持。借助于因特网的广泛普及,病历从而实现了在医生家里、在世界上的任一个地方都可以获得,而无须在前端安装特定的应用程序。电子病历的传播和利用也因此变得非常容易。 在这种应用模式下,前端的应用程序不必再开发,开发的焦点集中在后台病历XML描述的生成、内容的组织及病历表现形式的描述上。
对于电子病历的XML描述生成就是归结到形成电子病历的文档类型定义(DTD)或者XML模式(Scheme)上。规范的XML文档都必须有良好的格式。但其数据结构可以被规定,也可以不被规定。如果被规定,那么该文档就是有效的(Valid),否则是无效的(Invalid)。下面将介绍一种比较灵活的利用XML实现电子病历系统的方法。
2.实现方法:
电子病历系统由一些独立的模块组成,这些模块虽然是独立的,但它们仍然通过对一批的XML文档进行访问控制而达到互相联系。其中主要的模块就是数据的录入及浏览模块,而在这一个模块中最主要的问题就在于如何将XML文档的这种标记语言转换成一种对于用户来说是透明的、易懂的界面。这些用户当然包括医生、护士和病人,他们要了解的数据的内容,而不是数据的格式化信息。XML系统的这种透明性可以通过一个组件实现,这个组件可以称之为文档管理器。文档管理器能够将XML文档转化为相应的HTML表单并提供给用户。文档管理器的这个功能使得它必须同时了解 XML文档和HTML表单的结构。为了达到实用的目的,把这两种结构的构造信息集合到一个简单的XML文档中去,而这个文档被称为模板。这样,文档管理器通过模板不仅可以完成从XML文档转化成HTML表单(用户界面),而且可以完成XML文档的产生(即把用户输入的数据以XML存放)。显然,当电子病历的文档类型定义(DTD)发生变化时,可以仅仅通过增加或者是修改一个模板使得文档管理器自动完成前台显示和后台数据的同步。而在传统意义中的His系统中,如果数据库结构发生变化,程序将几乎要全部修改。这样实现电子病历的重点就集中到XML模板的产生,也就是说问题从传统的逻辑和算法问题转化为结构和模型化的问题。这样的结果使得无论什么时候用户提出来的需求变化,都能很快地使系统得到相应的变化,即给用户提供了一种非常灵活的数据结构。通过下面的这个例子也许能够发现XML技术实现的电子病历系统的这个优点。
在XML模板中包括XML的具体元素(比如像病人、诊断、处方),这些元素必须是医疗领域上有明确意义的标记,而通过建立这些元素之间的嵌套关系来形成原本这些对象的联系。建立电子病历系统的文档类型定义(DTD),这里包括一部分:
<! ELEMENT PATIENT_RECORD (personal, diagnosis, prescription)
<! ELEMENT PERSONAL (name, nation, address, birthday, related*)>
<! ATTLIST PERSONAL SEX (MALE|FEMALE) CDATA #REQUIRED>
<! ELEMENT name (#PCDATA)>
<! ELEMENT nation (#PCDATA)>
<! ELEMENT address (#PCDATA)>
<! ELEMENT BIRTHDAY EMPTY>
<! ATTLIST BIRTHDAY
YEAR CDATA #REQUIRED
MONTH CDATA #REQUIRED
DAY CDATA #REQUIRED >
<! ELEMENT RELATED EMPTY>
<! ATTLIST RELATED
NAME CDATA #REQUIRED
RELATION CDATA #REQUIRED>
在这个DTD中,"ATIENT_RECORD"代表的是这个电子病历的根结点,这个根结点必须包括个人信息(PERSONAL)、诊断(DIAGNOSIS)、处方(RESCRIPTION)三个子结点,这三个结点都是元素,而这些子结点下面又具体包括一些元素或者属性。比如说在"ERSONAL"这个子结点中包括姓名(NAME)、性别(SEX)、民族(NATION)、家庭住址(ADDRESS)、工作单位(WORK)等属性,同时也包括出生年月(BIRTHDAY)、亲人(RELATED)等元素。诊断、处方、出生年月、亲人这些元素中同样也是由元素和属性组成的;这里仅简单列出出生年月和亲人这两个元素的组成。元素中的属性构成元素的具体意义,属性在元素中出现的次数也可以各不相同,比如在PERSONAL中有RELATED这个属性,而这个属性就可以出现零次或多次,也就是说这个个人信息中可以填写亲人信息,也可以不填。
完成DTD定义之后,关键的工作就是建立模板,模板完成XML文档与HTML页面之间的转换功能。对于模板的建立主要是通过XSL语言完成XML文档到HTML页面的转换,图1是显示在用户面前的部分html界面,它所对应的部分原始XML文档为:
图 1