(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf_第1页
(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf_第2页
(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf_第3页
(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf_第4页
(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(控制理论与控制工程专业论文)基于HL7医疗信息管理系统的设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 摘摘 要要 医院信息系统是医学信息学的重要分支。 它的出现对于提高医院的服务水平有很 大的作用。而网络技术的快速发展,给医院信息系统的发展带来新的契机,同时也 带来了新的难点。其中信息的交换、存储都是医院信息系统必须要面对和解决的,特 别是其中的信息交换。 论文给出了医院管理系统的总体设计方案、采用的技术及各模块的设计,对所需 要采用的hl7标准进行了详细的剖析, 以完成hl7消息的构建与解析,对于xml在hl7 中的使用也做了一定的说明,hl7 标准作为国际上认可的医疗卫生行业间进行电子数 据交换的标准,其作用越来越重要而且其成效也得到广泛的验证。在接下来的章节 中,按照系统的三个层次,即呈现端、数据库和服务器端的分类,分别进行论述。首 先对医院管理系统的客户端进行了总体的概述,确定系统的用户类型,针对系统的多 用户特点,提出建立权限管理模块的方法,并以病人登记页面为例,介绍了医生管理 站的界面设计。其次根据医院特点,对医院数据进行分类建模处理,确定医院管理 系统的数据源和数据存储格式,实现医疗数据的存储。在本文的最后提出了医疗管 理系统的数据交换的实现方法hapi,一个开源的 java 开发引擎,在对 hapi 的各个 包都作了详细的说明后,给出 xml 的解析方法及其算法,给出了实现 hl7 的数据通信 功能的流程图。 本文经过详细的分析设计后,完成了系统的主体接口设计,及呈现端和数据库设 计。 关键词:医院信息系统 hl7 xml hapi 构建/解析 数据库 ii 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 abstract it is health information system (him), a branch of medical informatics, that improves the level of hospital service. meanwhile,followed the rapid development of network, many new difficulties come out, too. the exchange of information, the store of data and other questions are required to resolve. this thesis dissertates the overall scheme, technical route and module design of the his. the analysis to the hl7 has been carrying to meet the hl7 message parser and build. this standard as an international standard of the exchange of medical information is widely used and validated in the world. and the exception is given for the using of xml in hl7. in the following chapters (three layers of the system, the web user interface, the database and the server) are dissertated respectively. firstly, an overall plan is designed for the web user interface of the system. then the users of the system are classified. in the light of the classification, the method of the module of power management is provided. in the last of this chapter, the page of patient register is used as an example to introduce the design of the web user interface of the site of the doctor management. secondly, based on the special condition of the hospital, the data of the hospital has been classified to build the module. according to the classification, the source of the data is ascertained to store the medical data. finally, the implementation of the data exchange, hapi, a development platform which is a java open source, is proposed in the last part of the thesis. after the detail explanation of the package of hapi, the arithmetic to parser the xml is given. in the last, a flow chart to implement the commutation of the hl7 message is proposed. after the detail of the analysis and design, this thesis has finished the most the design of the system interface. the web user interface and the database are designed. keywords: hospital information system hl7 xml hapi construct/parser database 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集 体, 均已在文中以明确方式标明。 本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密, 在 年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1 绪论绪论 1.1 背景及必要性背景及必要性 本文旨在建立一个工作稳定、运行高效的医疗信息管理系统。医院信息系统 his (hospital information system)在国际学术界已公认为医学信息学(medical informatics) 15的重要分支之一。美国该领域的著名教授 morris collen 于 1968 年曾 著文为医院信息系统下了如下定义:利用电子计算机和通讯设备,为医院所属各部 门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换的能力, 并满足所有授权用户的功能需求。 完整的医院信息系统对信息的处理大体可分为三个不同的层次:数据的收集过 程;数据的集中加工、处理与分析过程和决策咨询与决策支持过程。一般来说,数 据的收集过程与基层科室的事务处理活动相联系,数据的集中处理与分析过程与中 层科室的工作任务相联系;决策、支持过程则与高层领导相联系。 一个完整的医院信息系统 ihis(integrated hospital information system)应该 既包括医院管理信息系统,又包括临床医疗信息系统. 医院管理信息系统 hmis (hospital management information system)的主要 目标是支持医院的行政管理与事务处理业务,减轻事务处理人员的劳动强度,辅助 医院管理,辅助高层领导决策,提高医院的工作效率,从而使医院能够以少的投入 获得更好的社会效益与经济效益,如财务系统、人事系统、住院病人管理系统、药 品库存管理系统等就属于 hmis 的范围。 临床信息系统 cis(clinical information system)的主要目标是支持医院医 护人员的临床活动,收集和处理病人的临床医疗信息,丰富和积累临床医学知识, 并提供临床咨询、辅助诊疗、辅助临床决策,提高医护人员的工作效率,为病人提 供更多、更快、更好的服务。像医嘱处理系统、病人床边系统、医生工作站系统、 实验室系统、药物咨询系统等就属于 cis 范围。 2 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1.2 国内外的现状国内外的现状 1.2.l 医疗信息标准的研究状态医疗信息标准的研究状态 现阶段, 在国际上常用的有三种医学标准, 它们分别是: dicom (digital imaging and communication in medicine) 、hl7(heath level 7) 、ihe(integrating healthcare enterprise)7 8。但是它们所侧重的方向各不相同。 1)dicom 这一标准最早是美国放射学会和国家电子制造商协会组织于 1993 年提出。当时 正处在开发研究医学图像管理系统 pacs(picture archiving and communication) 的初期,各个不同医学成像设备制造厂商的同类设备形成的图象,无法方便的互相 调阅,严重的影响 pacs 的发展。为此,dicom 委员会特建立了这个旨在为应用医 学数字图像的学科进行诊断和治疗的信息交换的国际性标准。最终期望在世界范围 的医疗卫生保健环境下,使成像系统与其他信息系统之间的资源存档保持一致性, 并改善系统的工作流程。 2)hl7 hl7 是一个医疗卫生 it 领域的国际性标准组织,始建于 1987 年,并于当年发布 了 hl7 标准 1.0 版。经过 20 年的发展,hl7 组织已经拥有 50 多个工作组和 20 多 个地区性分会。hl7 是医疗保健领域和医疗机构间进行电子数据交换的标准,是一 个基于国际标准化组织 iso 所公布的网络开放系统互连模型 osi 第七层(应用层) 的医学信息交换协议。hl7 的目的就是为了达成临床上跨平台的应用,支援医疗服 务和临床病患护理、管理,提供信息交换,管理和整合的标准,让各医疗信息系统 间的信息交换变得更加简单畅通。 3)ihe ihe 本身不是一个标准,它是“一体化医疗机构” (ihe)发起的一项为期五年的 倡议,即是一个计划的实施。它仅仅定义了一些已有标准的使用,如 dicom 标准用 于医学影像的管理,hl7 标准用于文本信息的管理,使医疗信息系统、放射信息系 统 ris(radiology information system)和医学图像管理系统之间进行无缝的连接。 上面介绍的三种标准或者说是倡议是现在医疗信息系统研究最多的三种, 它们包 3 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 括了医疗卫生管理中的方方面面的工作。从上面的介绍中,不难发现,dicom 的出 现就是为了便于医疗影像的传输,因而它的在影像传输方面有一定的优点。而考虑 到本系系统的主要侧重于电子病历的保存和传输,相对来说,文本性的东西较多, 因而我们采用 hl7 标准。下面再介绍一下国内外在 hl7 方面的研究成果与动向. 1.2.2 hl7 在国外的应用与研究在国外的应用与研究 1987 年,美国正式提出 hl7 标准9 10的概念,作为一种医疗信息系统的接口规 范,当时它还只是规定了基本的入院、出院、转院等方面的内容。各个开发商只对 自己的产品进行了接口的规范,而在系统内部依然采用自己的标准。这种方法只能 实现小规模的数据。随着 hl7 标准的发展,标准的制定领域逐步扩大。目前的 v2.4 就涉及病人管理、医嘱、查询、财务管理、观察报告、医疗纪录管理、病人转诊照 护管理等医疗信息产品中的各个方面。全面而且详细的规定使得许多医疗信息开发 商开始在自己的医疗信息产品中全面推行实现 hl7 标准。 目前,在美国 hl7 标准已经被绝大多厂商及医院支持与使用,全美 95%以上的 医疗机构都使用 hl7 标准。美国政府更是规定:2004 年 5 月以后,全部医院信息系 统都必须支持 hl7,hl7 已经成为美国政府强制执行的标准。 在欧洲,hl7 标准也已经被广泛使用。2001 年 3 月英国政府国家卫生机构 nhs (national health service)发布一份面向 21 世纪的医疗信息化白皮书,为英国医疗 信息化建设制定时间表, 并将 hl7 作为主要的通讯标准, 这标志着英国政府也将 hl7 指定为国家标准。同时,欧盟积极参与 hl7 标准的开发。现在已经发布的 v3.0 就是 他们合作的成果。 在亚洲,日本的本地化做得最早,他们已经建立起了他们自己的本地化 hl7 标 准。此外新加坡和韩国的 hl7 的应用也比较深入。 1.2.3 hl7 在国内的应用与研究在国内的应用与研究 hl7 在我国的台湾发展的比较迅速11。 其迅猛的发展, 主要得益于以下几个方面: (1)官方政策支持。台湾卫生署、经济部、行政院等机构积极引进医学标准, 并积极参与本地化工作。鼓励医疗院所与产业界投入,由相关的研究活动推进。并 预定与修正相关的法案医疗法 ,从法律上保证标准的推进。 4 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 (2)医疗院所的配合。台湾以区域医院为主的纵向结盟模型,为 hl7 的推进创 造了条件 (3)台湾厂商的积极配合也是 hl7 标准迅速得以推广的一个原因。 到目前为止,已经有不少实际应用进入运行阶段,如行政院国军退役官兵辅导 委员会的荣民医疗网、国防部军医局的“国军”医疗信息网、高雄市卫生局的高雄 市医疗信息网等。这些系统主要应用对原有信息系统评估、改造,对所传递信息依 据 hl7 标准定义。 相对来说,在我国大陆的 hl7 的研究起步较晚12,还处在推广的阶段。目前在大 陆,针对 hl7 的研究方向主要有两种,它们也是在 his 中引入 hl7 的两种不同的方 法: 一是在设计或改造医院信息系统的时候,考虑未来发展的需要或整个架构完全 符合 hl7 标准,或按 hl7 的要求设计数据对象、数据结构,可以直接通过中间件, 便利地与其它符合标准的 his 或者相关软件进行信息交换。但因为 hl7 标准产生于 美国,需要本地化才能使用。因而在直接使用的时候,存在一些问题。但这种方式 是以后推广和研究的主要形式。 二是不对现有系统进行改造,只是通过外挂程序来负责编码和解析 hl7 信息, 以此与外界进行数据交换。现阶段我国存在比较大的 his 厂商就有几十家,各个厂 商对于数据存储、信息编码都有比较成熟的做法,如果重新按照 hl7 的标准重新建 立,这样工作量比较剧大。而且目前许多医院已经建立了自己的 his 系统,如果要 他们放弃现有的系统,重新建立新系统,这对于他们来说是一个巨大的浪费。因而 如果只是通过一个外挂程序来负责编码和解析 hl7 信息,这不管是对于厂商还是医 院来说,都是保护已有投资的一种不错的选择。许多厂家已经开发这一类产品。但 这种方式有一个致命的缺陷就是:只能转移小规模的数据。因而只能做为 hl7 推广 过程中的一个过渡过程。 1.3 研究内容与设计目标研究内容与设计目标 1.3.1 本文研究内容本文研究内容 本文以丹江口市第一人民医院为研究对象,运用数据库、java、计算机网络等技 5 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 术,来解决现今医院管理中遇到的信息交换、存储等问题。丹江口第一人民医院信息 管理系统一共分为两期:目前已经完成了第一期的工作,在第一期的工作中,主要满 足医院行政管理的要求,作为第一部分,系统已经进入实际运行,且反应良好。在第二 期中,我们的设计目标主要放在病人信息的管理。根据需要,在设计的系统中,要满 足医疗数据在不同的机构系统交换,且同时在数据传送有一定的安全性。 根据系统要求,本文制定了如下的研究内容: 1)web 界面的设计。在 web 客户端中,首先要解决的一个问题就是用户的权限 的问题,用以保证数据交互的安全性。 2)数据库的设计。医疗行业数据量大,而且各种检测的项目极多,数据库的稳 定与完备是这一部分要研究的。 3)服务器的研究设计。信息交换是项目第二期的主要内容之一。在这一部分中, 我们必须要解决消息的构建/解析、xml 的解析等许多在实际交互中必须要面对的问 题 1.3.2 系统的设计目标系统的设计目标 在理论研究的基础上,设计并实现一个基于 hl7 标准的医院管理系统,并力争 使之具有以下几个方面特性: (1)用户可扩充性 对于管理系统而言,随着时间发展,用户越来越多,特别是不断的有新的其它 的相关的医疗行业部门的加入。此时良好的扩展性是必不可少。 (2)信息可交换性 在医疗行业,不同的部门有不同的管理系统,因而系统间存在异构性。因而数 据在异构系统间的交换就显得尤其重要了。 (3)数据库系统的完备性与合理性 在一个医院里,每天都有成百上千的病人,同时还有许多其它的机构与医疗, 因而数据量可能极大。同时,对于医疗行业,各种不同医疗指标、检测数据,也极 大的加大了数据库的复杂性。此时数据库的数据的完备与合理就显得极为重要了。 6 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1.4 内容安排 内容安排 第一章分析了现阶段医疗信息系统的发展, 介绍了国内外对于医疗信息化的研究 状态及现今主要应用的三种标准,并详细介绍了 hl7 在国内外的发展状态。 在第二章介绍了 hl7 标准,包括它的发展及 hl7 的内容。其中重点介绍了 hl7 的 消息组成及传递机制。 第三章为总体方案设计,讲述系统的体系结构,开发平台的选择,数据库的设计 等。 第四章为 web 呈现端的设计,这其中主要包括权限管理的设计等。 第五章为数据库的设计。 将医疗的数据类型予以分类, 再给出不同类型的 pdm 图。 第六章为服务器端的设计。以 hapi 为开发引擎,给出了 xml 的消息解析及 hl7 消息交换的算法实现。 7 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2 hl7 标准的研究标准的研究 2.1 hl7 标准简介标准简介 hl7 组织参考国际标准组织 iso13(international standards organizations)开放 式系统互联 osi(open system interconnection)标准的通讯模式,将 hl7 作为最高 的一层,也就是就应用层.其数据交换的内容包括就诊者入院、出院、转院通知、医 嘱、账单、观察报告等信息。 hl7 是受到了国际标准化组织 iso 开放系统互联模型 osi/rm(open system interconnection reference model)协议分层的影响,osi/rm 将系统互联协议划分为 七个层次,以简化异种网络互连兼容标准的复杂性。七层协议包括了物理层、数据链 路层、网络层、传输层、会话层、表示层和应用层。处于最高的第七层是关于应用程 序服务协议的标准。hl7 研究范围正是定位在卫生活动信息交换和共享在应用层面的 标准,因而称之为“hl7” ,直译成关于卫生领域的应用层协议标准。hl7 同时也是美 国国家标准学会 ansi(american national standards institute)认可的标准开发组织 sdos(standards development organizations) 。与大多数的 sdos 一样,hl7 是一个 非营利性的自愿组织。它的会员 hl7 标准版本众多,其发展历程可参考表 2.114 表 2.1 hl7 标准的版本历程。 版本 发布日期 说明 version 1.0 1987 年 未被实际应用 version 2.0 1988 年 未被实际应用 version 2.1 1990 年 开始被广泛应用 version 2.2 1994 年 version 2.3 1997 年 得到 ansi 认证(免费) version 2.3.1 1999 年 得到 ansi 认证(免费) version 2.4 2000 年 得到 ansi 认证(限成员) version 2.5 2003 年 得到 ansi 认证(限成员) version 3.0 ballot8 部分通过 ansi 认证 8 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 到目前为止,hl7 的组织会员超过 2200 个,主要由对开发和促进卫生领域的临 床和管理标准感兴趣的医疗保健提供者、供应商、支付者、咨询者,政府协会和其 他爱好者组成。其中,团体会员已经超过 500 个,囊括的领域遍布全球。其国际会 员包括多个国家和地区,包括:中国、美国、德国、英国、荷兰、日本、韩国、印度、 土耳其、阿根廷、巴西、西班牙、澳大利亚、加拿大、丹麦、芬兰、瑞士、捷克、 克罗地亚、立陶宛、希腊、爱尔兰、南非、墨西哥、新西兰。 中国在 2000 年由卫生部医院管理研究所派代表加入了组织15, 成为了一个地区 性分会,并开始在国内宣传普及标准。但由于初期各方重视和投入程度不够,而且 标准没有经过本地化也很难实际应用,其结果就是国内从事医疗卫生领域的人都知 道,但对 hl7 的了解不够深入,把标准当成一个纯粹的“舶来品” ,认为没有多大实 际用处。卫生部医院管理研究所在 2006 年组织了 2 次关于标准的学术招待会,邀请 国外专家介绍 hl7 标准的部分内容。为了进一步开展更多活动,在卫生部信息化工 作领导小组办公室、卫生部统计信息中心、国际总部和国内外厂商、国内医院的支 持下,hl7 中国委员会在 2007 正式组建,并开始吸收企业会员加入,以推动 hl7 标准在中国的普及应用。 现在 hl7 的最新版本为 v3.0,但它还只是一个投票版,没有正试通过论证。在 这里,我们还是以 v2.x 作为本系统的使用标准版本。下面以 v2.3.1 为例,介绍一 下各章节的内容。 在 v2.3.1 中16,hl7 对协议中的各个部分加以定义,它们覆盖了医疗卫生系统 的方方面面.按章节分,它们分别是:介绍(introduce) 、控制(control) 、病人管理 (patient administration) 、医嘱(order entry) 、查询(query) 、财务管理(financial management) 、观察报告(observation reporting) 、主文件(master files) 、医疗纪 录/信息管理(medical records/information management) 、计划(scheduling) 、病 人转诊(patient referral) 、病人看护(patient care) 、临床试验室自动化(clinical laboratory automation) 、应用程序管理(application management) 、个人管理 (personnel management) ,以及四个附录: 数据定义表(data definition tables) 、 底层协议(lower layer protocols) 、消息描述(version 2.4 bnf message descriptions 9 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2.4bnf)和术语表(glossary) 。 2.2 基于基于 hl7 标准数据交换的基本原理标准数据交换的基本原理 hl7 规范是基于国际标准化组织 iso 所公布的网络开放系统互连模型 osi 应用 层的医学信息交换协议并制定的关键数据交换的格式。其基本原理17 18是:对于不 同格式的应用程序数据,首先按照 hl7 标准的语法规则转换成各个系统都可以识别 的标准数据格式-消息,然后按照一定的网络传输协议,如通过 ftp、tcp/ip 等 协议传送到接收方,接收系统在应用层上进行相应的应答并进行一定的有效性验证, 消息通过有效性验证后送到应用程序,再按照 hl7 标准进行解析,将消息转换为应 用程序数据,从而实现异构信息系统之间的数据交换,其实现原理如图 2.1 所示: 从实现原理上可以看出,所有的信息交换都是将数据转换为标准的数据格式, 即 hl7 消息,进行传输和识别,消息是传递数据的基本单元。一般来说 hl7 消息与 应用程序数据之间的转换有两种常用的方法: (1)建立映射表,把 hl7 语义字段与映射数据表的属性值对应起来。 (2)利用 xml 描述电子病历信息的优势,通过转换机制把系统 a 的 xml 语 句转换为 hl7 消息,经过传送后,系统 b 接到 hl7 消息并转换为 xml 语句,从而 ftp、tcp/ip 协议 应用程序数据 hl7 标准 消息 应用程序数据 hl7 标准 消息 系统 a 系统 b 原始数据 语法 数据格式 数据传输 图 2.1 基于 hl7 标准的数据交换原理 10 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 实现不同医疗机构或系统间的信息交换。 2.3 hl7 的编码标准的编码标准 2.3.1 hl7 中的事件构成中的事件构成 在实际的生活中,护士需要对病人进行医疗看护,那么就产生了一种对于建立 了一种对病人以往健康及医嘱数据的需要。基于这种实际的需要,hl7 建立了触发 事件(trigger events) 。这些事件由系统间传递的消息构成,在一个系统中消息是数 据传递的最小单元。从结构上来看,消息是一组消息段按定义顺序的逻辑组合,而 每个消息段又可以分为若干个字段,这些字段又可以进一步分解为成分和子成分。 所有的这些则构成了 hl7 的事件19 20。其结构图如图 2.2 所示: 2.3.2 消息的构建消息的构建 1)消息的组成21 22 对于消息,hl7 标准给出详细的定义,下面分别进行说明。 消息段 1 消息 1消息 2 事件 消息段 n 字符 id 字符分隔符 字段 1字段分隔符字段 n字段分隔符 成分分隔符成分 1 成分分隔符 成分 n 子成分 1 子成分分隔符子成分分隔符 子成分 n 图 2.2 事件的构成 11 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 现有的 hl7 消息编码标准由消息(message) 、片段(segment) 、字段(field) 以及组分(component) 、子组分(sub component)组成,以下为它们的定义: 消息(message) :消息是系统间数据传输的最小单位,由一组有规定次序的段 组成,每个消息都是用一个消息类型来表示其用途,包含在每个消息内的一个三字 符的代码标识它的类型。每个事件对应一个消息。 消息段(segment) :一是数据字段的一个逻辑组合,每个段都用一个唯一的三 字符代码所标识,这个代码称为段标识。以某个病人住院对应于 adt(patient administration)消息为例,它可能由以下消息段共同组成:消息头 msh(message segment header)、事件类型 evn(event segment)、病人基本信息 pid(patient identification segment)、 病人就诊信息 pv1(patient visit)、 保险 in1(insurance segment)。msh 作为消息头,是所有 hl7 消息所具有的。 字段(field) :字段是消息段的基本组成成分,字段之间通过字段分隔符分隔。 在消息段中,每个字段都有它自己的性质,如:位置(规定该字段在消息段中的位 置) 、id 号(用来标识该字段的号码) 、字段名、可选性(用以表示该字段是必选的、 可选的或是有条件的) 。 组分(component) :组分是字段的基本组成成分,一个字段可以是一个组分, 也可由多个组分组成。组分之间通过组分分隔符分隔。有的组分可分隔为多个子组 分,子组分之间通过子组分分隔符分隔 消息分隔符(message delimiter) :在构建消息时,某些特殊的字符将被使用。 它们是片段终止符,字段分割符、组分隔符、子组分分隔符、重复分隔符和换码符。 下面是一个完整的 hl7 消息示例23: msh| 另外一部分则 为系统间的数据的交换,也就是我们要详细介绍的基于 hl7 的数据交换部分。 6.1 本地数据的处理本地数据的处理 这一部分相对来说比较简单,因为不涉及到太多的数据交换, web 端的数据过 来后,系统只是根据 hl7 的对数据的一些存储规定进行处理即可,可以说这一部分 大部分集中在 spring 层和 hibernate 层。而 spring 和 hibernate 的许多工作可以由开 发工具来完成,因而对于程序员来说,大量的工作集中在 struts 的处理部分上。 对于以往的 struts 而言,每一个 jsp 页面就对应一个 action。这样,在服务器端, 结构极其臃肿和繁杂。特别是对于一些数据表较多的数据库系统,其大量的 action 类程序员的开发量。在本系统中,我们采用最新的 struts 版本中 1.2 提供的 basedispatchaction 方法。 相对于以往的action方法, 采用1.2版本中basedispatchaction, 可以在一个action 中设置多个处理方法。这样大大的减少了 action 类的数量,增加了系统的可读性。 在以往的 struts 版本而言,每个 jsp 页面对应一个 form 类,在 form 类中实现 jsp 中所有量即可, form 类再将这个值传到相应的 action 中。 但在新的 struts 中, form 类中不光要实现 jsp 页面中的全部变量,还要实现整个 action 中所涉及到的所有变 量。 通常, 我们在一个 form 类中, 实现一个数据库的数据表全部变量。 同时在 action 中,我们可以采用下面的方法读取需要处理的数据。 patient pa = new patient(); beanutils.copyproperties(pa, form); 41 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 6.2 系统信息交换的实现系统信息交换的实现 对于医疗信息的交换,我们采用现在比较流行的一个开发工具 hapi。 6.2.1 hapi 的研究 的研究 hapi35 40是由大学健康网络(位于加拿大多伦多的一个大型综合网门的教学医 院)组织开发的开放性源码,后由各网友不断加于补充开发。是面向对象 hl7 标准 的 2.x 的解析器语言。它试着写出一些符合标准的软件。 hapi 大体上可以分为二个包,分别为:hl7v2 和 log,所有与 hl7 相关的东西全 部防备在第一个包内,log 包用来记录和调试用。下面我们针对包 hl7v2 进行详细的 解说。 hl7v2 中有 app、conf、11p、volidation、model、soucegen、protocol、parser 和 util 这九个包,这九个包之间的关系如图 6.1 所示: app conf11pvolidation protocolparser model sourcegen util 图 6.1 hapi 中的 hl7v2 包图 42 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 app:这个包主要用于处理底层的网络联接。当系统接收到远程系统的联接信息 后,返回一个接收到申请的应答信息,并建立一个 tcp/ip 联接。 在这个包中,比较常用的几个类有 acceptapplication、connection、hl7service 等。 acceptapplication 接收到申请后,返回一个确认信号。connection 类则用于建立 tcp/ip 联接与远程的 hl7 服务器。而 hl7service 则是在建立 tcp/ip 联接之后,建 立一个可以用来 hl7 通信的服务。 conf: 当系统完成了 tcp/ip 联接之后,接下来的工作则转入到 conf 包中的类来 完成。 这个包又为 check、class、praser、spec 和 store 这五个子包。check 包主要是用 来验证接收到信息的合法性,以保证接收到的信息能符合 hl7 语法标准。class 类则 是根据接收到的信息和实际需要进行配置一些文件, 如其中 antgenerator.java 产生一 个用于 ant 的 build.xml 文件。 11p:包 11p 依赖于 conf 包。 这个包有两个 ingerface 类和四个基本类。其两个接口类为:hl7reader 和 hl7writer。从类的名称可以看出,这两个接口主要用来处理 hl7 信息的读写。包中 所包含的四个类,则是用来保证读写 hl7 信息时,能够被正确进行。从某种意义上 讲,这四个类属于验证性,为可选。 model:这个包属于 hapi 中的核心包。所要发送的信息和接收的信息,都要在 这里建立相应的模型。 考虑到不同的 hl7 版本,这里提供了多个版本的模型。它可以分为下面几个子 包,分别为:primitive、v21.datatype、v22.datatype、v23.datatype、v24.datatype 和 v25.datatype。根据不同的版本我们选择其中一个就可以。同时,在 model 包,还提 供了许多接口和抽象类,这些接口和抽象类是建立 hl7 模型的基础,如 group、 message、segment 和 type 等。 primitive 包,从包名中可以看出,这个包主要是对模型的一种比较简单的设立, 如设立时间等。这个包中包含了下面的几个主要类:dt.java , id.java, is.java, 43 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 和 tm.jav 这样的四个类。 dt 类表示一个 hl7 的日期类型(date datetype) ,并在其中提供了提供和设置时 间的方法,如 setyearmonthdayprecision(int yr, int month, int dy)等。至之对应 的还有一个 tm 类,这个类则是具体到时刻,它表示一个 hl7 的时刻类型(time datetype) 。 对于 datetype 包,我们以 v2.4 版本为例进行说明。在 datetype 包中,同样包含 了 primitive 的四个类, 再加上 tscomponentone 这样一个类。 datetype 中的 dt 类继 承了 primitive 中 dt 类,dateytpe.dt.java 类加入了 hl7 v2.4 版本中对时间的规定。 在 v2.4 中,hl7 规定日期的格式为 yyyymmdd,而在先前的版本中,日期的 格式为 yyyymmdd. sourcegen 包:这个包主要用来建立一些模型服务,如产生 datetype、group、 segment 等。 这个包中的类大体上可以分为两类,一种为创建类,另一种为基本信息类。 所谓创建类, 就是指诸如 groupgenerator、 datatypegenerator、 messagegenerator、 segmentgenerator 和 sourcegenerator 之样的类。这些类为相应的类创建一些资源。 如在 datatypegenerator 中为查找相应的资源,就有下面的代码: rs = stmt.executequery ( select data_structure from hl7datastructures , hl7versions where ( + data_type_code = cf or + data_type_code = ck or + data_type_code = cm or + data_type_code = cn or + data_type_code = cq) and + hl7versions.version_id=hl7datastructures.version_id and hlversions.hl7_version =”+version+”); 用来查找相应的时间数据。 另一种则是基本信息类。这里所说的基本信息类是指上面的创建类在进行创建 时,所必须的一些数据。如 groupdef 为 groupgenerator 类提供所需要的信息,如 44 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 segment 等。 parser:信息解析包 信息交换是hl7的核心, 这其中就包含了将hl7消息转化为普通字符串和xml 的解析。而且在 hl7 v2.3 加入了 xml 之后,新的 v3.0 更是以 xml 作为整个数据 交换的基础。因而,随着进一步的发展,对 xml 文件的处理将会越来越频繁。 这个包中,作者提供一个工厂接口类:modelclassfactory。在这个类中一共有四 种方法。它们分别是:getgroupclass() 、getmessageclass() 、getsegmentclass() 和 gettypeclass() 。从这里,可以看出这个类提供了 hl7 消息解析所需要的全部要 素。 除了上面的一个工厂类的解析方式外,开发者还在这个包中提供了其它的一些 解析类。如用于 xml 解析的:defaultxmlparser.java 和 xmlparser.java 类。 用于 hl7 消息解析的 parser.java 类,在这个类中,可以将接收到 hl7 的信息串 转化为 hl7 信息模型,也可以将系统中存在的 hl7 模型转化为 hl7 消息传送到相 应的系统。 until 包:这一个包主要对一些消息体的基本操作方法。 正如文件一样,我们需要对文件进行查找、存储。hl7 消息也一样,我们也需 要对它们进行拷贝、查找和存储等操作。但与文件系统不现的是,hl7 消息具有它 自己的独特性。例如在消息的查询。在这个包中,提供了一个名为 messagequery 类 来处理消息的查询。它查询方式也是在一种类似于 sql 系统中进行,并且它还支持 “as”这样的语句。例: select /.msh-7 as msg_date 从这个例子中,很明显的感觉到,它里带有明显的 sql 语句的痕迹。当然查询 只是该包提供的众多操作方法中的一种。这一类的还有 deepcopy.java 类,它用来将 一个消息中的要素按照我们的需要拷贝到另一个消息中去。 protocol:hl7 中规定了许多规则。在 protocol 中,这些规则被 java 语言表述 出来。开发的时候,我们不需要过多的考虑那些文字标准,因为包 protocol 会替我们 规范它们。减少了开发量。 45 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 6.2.2 hl7 消息的构建消息的构建/解析的实现解析的实现 在本系统中,hl7 消息41 43是以 xml 格式为基础的。构建/解析 xml 的 hl7 消息的过程就是生成/解析 xml 文档的过程。 因而, 按照要求需要先建立 dtd 文档, 然后按照该 dtd 规定的 hl7 消息的格式建立 xml 文档,从而实现 hl7 消息的构 建/解析。hapi 虽然提供了一个 xmlparser 的解析器。在这里,我们没有使用它, 使用的是 w3c 发布的 dom(document object model) level 2 来解析 xml。 。 下面以消息的解析过程为例进行说明。其解析步骤如下: (1)定义一个 dom 解析器 parser。在这里我们使用 domparser 类。 (2)解析 xml 文档,得到一个 document 类,用来存放解析文件。 document dom=parser.getdocument(); (3)取得节点的属性值。 private static void printnode(node anode) system.out.println(anode.getnodename()+“.”+anode.getnodevalue() ); (4)遍历 dom 树中的节点。其遍历算法如下: private static vo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论