找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 2298|回复: 1

基于XML的电子病历开发初探

[复制链接]
发表于 2003-2-7 10:35:10 | 显示全部楼层 |阅读模式
基于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


<ERSONAL SEX = "男">
<NAME >张三</NAME>
<NATION>汉</NATION>
<BIRTHDAY>
<YEAR>1970</YEAR>
<MONTH>4</MONTH>
<DAY>1</DAY>
</BIRTHDAY>
<ADDRESS>南昌大学</ADDRESS>
</PERSONAL>
    模板所要做的工作就是完成从这个XML文档变换到HTML页面,这里仅列出个人信息元素中姓名元素的转换语句:
< Xsl: template match = "PERSONAL\\NAME">
姓 名:< xsl: value-of select = "NAME">
    这里可以根据用户的需要加上对字体样式、大小等的确定。对于其他的元素及元素中的属性也可以通过类似的XSL语句转化成对应的HTML语言,完成从XML文档到HTML页面的转化。
    模板元素中的属性可以根据需要进行修订和扩充,如果需要添加元素或者是属性,那么只要在DTD中添加定义,然后在模板上也添加对这个元素或属性匹配的XSL语句就可以使得添加的信息显示在用户的面前;甚至可以添加一个URL的属性,通过这个属性来指定远程的数据库服务器,这样文档管理器就可以通过这个属性从远程的数据库服务器中检索或者合并现有的数据。而对于HTML表单则是最终显示在用户面前的人机界面,根据用户的具体要求,通过XSL语言把XML模板中的各个元素及元素中的属性对应到HTML表单中的某种元素,这样的话具有统一格式的XML文档经过文档管理器的统一处理之后就可以在用户面前展现一个统一的页面。对于用户在HTML表单中填入的数据转存为XML文档,这是文档管理器的另一个功能。通过提供相应的XSLT样式单(这个样式单描述如何把HTML表单的内容如何映射到XML文档)给文档管理器,它就能完成从原始信息到最终目的信息的转化。
3.结论:
    这种方法的灵活性在于能够非常简单地适应文档和程序的最新要求。由于医疗卫生领域本身就具有动态性,实现该领域中的系统无疑需要一定的灵活性。具有严格结构和数据定义的程序在此方面遇到严峻的挑战,而上述的方法使得程序员能够非常简单地满足对程序的最新要求,程序员所需要做的就是稍稍修改XML模板和文档管理器。XML正在逐渐走向市场,在考虑XML存储格式的同时也要考虑如何将这种格式转化成用户界面,上述方法在这方面也同样能够较好的实现,所以这种能够灵活地应用在电子病历的XML方法应该是值得探讨和研究的。

(完)
钟伯刚 高 剑  南昌大学计算中心
摘自:http://www.da-tong.net/magazine/magazine_58/sub_1/inf/article2001-2-1.htm
发表于 2005-8-30 16:17:03 | 显示全部楼层

基于XML的电子病历开发初探

正在学XML,这是网络的趋势,呵呵
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表