基于J2EE的电子病历交互系统的研究
【摘要】 目的 改善医疗信息不便于查询及相互交互的问题,突破地域限制,优化医疗信息的管理。方法 应用Web开发技术,以Struts作为表现层框架、Hibernate为数据持久层框架,设计一种基于J2EE的交互系统。结果 消除了空间时间差异,运用web技术可有效的消除空间时间差异,实现地区和全球性医疗资源共享。结论 消除空间时间差异,共享医疗资料。
【关键词】 J2EE 电子病历 Struts;Hibernate
Abstract:Objective To improve the status which medical information is difficult to be searched and communicated and make the medical information can be interchanged without the restriction of the space.Methods Design and implement a CPR interactive system, use Struts in viewer layer,use Hibernate in the operation of data persistence layer.Results The regional and time difference was eliminated.Conclusion By applying this method,the medical treatment organization can share the medical information.
Key words:J2EE;CPR;Struts;Hibernate
1 引言
电子病历[1]是记录有关病人健康和医护状况的终身电子信息载体,它由医务人员客观、完整、连续地记录了病人的病情变化及诊疗经过,是临床进行诊断的基础资料。在设计电子病历交互系统的过程中,系统的整体架构非常重要:如何进行系统的框架设计才能更有利于模块化的设计、编码与今后功能的扩展以及系统快速有效的维护。为了提高开发的效率,考虑到应用系统的灵活性、安全性、实用性等,需要有一种好的设计模式,一个好的可复用的B/S架构的框架设计作为一种可行的方案来解决上述问题。
MVC[2]模式是国外用的比较多的一种设计模式,很多的开源项目,就是利用这一设计思想,将其做成了WEB框架。WEB框架有很多,例如Turbine,Jetspeed,Tapestry,Struts.它们各有优点,而且功能强弱也不同,本文只对一个广泛使用的Struts框架进行研究讨论。
Struts框架是个在不断升级中的开源项目,新的版本会不断的增加功能,越来越强大,它的最新发布版本Struts1.2.6己经开始在国内外许多的大型B/S项目中得到应用。
Hibernate[3]是一个面向Java环境的对象/关系数据库的映射工具。它不仅仅管理Java类数据库表的映射,还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
本文在J2EE[4]的B/S应用架构下,以Struts作为表现层框架、Hibernate作为数据持久层框架,以临床文档结构为标准,设计了一个电子病历交互系统。
2 电子病历交互系统的分析与设计
2.1 系统分析
电子病历交互系统从功能上分为两个部分:前台在线诊断系统和后台管理子系统,其中每个子系统又进一步划分为更小的模块。在线诊断系统为患者提供就医的入口。患者可以通过登陆网站,浏览医生的信息,并向选中的医生进行病情咨询。
在远程问诊的过程中有一个重要步骤就是有关病历资料的传送。在没有电子病历前,通常情况是由会诊请求方事先将原始病历资料经过处理输入机,如文字资料以文本文件方式、图形资料以图形文件方式存储,然后将其传送给各位专家预诊。本文中设计的病历子系统将根据病人填写的对病情的自我描述以及以往的诊断信息或拍摄的X片、CT片,由医生作出对病人病情的诊断,填写医嘱,并根据以上信息生成电子病历。
表示层:负责接收客户端发送来的请求,再将请求转发给业务层处理,并将业务层处理结果发回到客户端。表示层的功能包括控制转发请求和产生新的Web页面以显示业务层的处理结果。在表示层,控制器的功能由ActionServlet和Action来完成,ActionServlet接收来自客户端的请求,每个ActionMapping实现一个请求与一个具体的Action之间的映射。视图由JSP页面结合Taglib来实现。Action对象调用业务逻辑模块的接口,并把响应提交到合适的View组件,ActionForm组件对象实现对客户端表单数据的良好封装,实现视图和模型之间的相互支持。
业务层:在基于J2EE体系结构的应用系统中,业务操作和对数据库的操作都集中在业务逻辑层。这种方式需要在程序中实现大量的访问数据库和控制事务的代码,如果业务发生变化,这种方式非常不利于修改。本系统则将对数据库操作的部分分离出来,构成一个独立的数据持久层,业务层则只承担实现业务逻辑的任务。本系统使用Java类来封装业务逻辑,这些业务逻辑类从表示层接受数据进行处理,必要时调用数据持久层的数据访问类访问数据库,检索数据,处理结果将回送到表示层,或是存储到数据库中。
持久层:管理Java类到数据库表的映射,提供数据查询和获取数据的方法关系表记录完整地映射到持久对象的关系上来,主要使用Hibernate[5]框架。Hibernate是对象关系映射框架,它对JDBC进行了轻量级的对象封装,它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。Hibernate创建持久类的方法是通过创建无格式普通java对象,Hibernate设置类的唯一约束是每个类必须有一个公用默认的构造者,每个持久字段要求有get()和set()方法,但不必一定设置为public属性。通过这些类,就可以把它们映射到数据库模式。Hibernate映射类到数据库模式需要创建一个映射文件。映射文件被定义在简单XML文件中。在该文件中,class是需要持久化系统的目标在系统的应用开发中利用Struts构架把界面和业务逻辑分离,并在数据持久层融入Hibernate来进行数据操作,最后对于病人的病历文档进行xml结构化,并使其满足CDA文档要求以便达到不同或不同系统间病历交互的目的。系统的总体框架如图1。
2.2 系统的实现
系统主要包含以下模块:
注册模块:分为用户注册与医生注册。对用户提供录入信息的界面,检查信息的有效性,并将注册用户信息保存在相应数据库的数据库表中。医生的注册信息由管理员在数据库后台进行处理。
登录模块:依据数据库中已注册用户的信息进行用户身份验证。
消息通信模块:实现用户与医生之间消息的发送与接收。并将消息存入相应的存储空间。
病历通信模块:实现用户与医生之间的病历传送。
病历查询模块:包括用户病历查询和医生病例查询。对注册用户提供病历查阅的功能,即提供用户选择以往的病历标题信息,以及查看详细内容;对医生提供患者病历查阅的功能,医生可以查阅自己医疗过的患者病历详细内容。
医务人员管理:提供医生的就诊资格审核,以及医生个人信息的维护与修改。
统计功能模块:提供给医院的上层管理者的统计信息,如各个部门在某一时间段内所诊断病人的人数;病人对医生诊断的满意度。
系统后台组织管理:包括系统的架构组织,如医院各部门的组织;各个角色的权限管理等内容。
如图2所示为病历交互系统的用例图(Use Case图),该图用以描述系统所需要实现的具体需求,椭圆形表示一个一个的用例,图中“病人”“医生”“系统维护员”“上级医生”四个小人为本系统涉及的行为者。
3 结语
随着机技术的飞速,国际医学信息标准化、电子化推动,利用计算机进行医院病历化管理已是时代发展的必然趋势。电子病历的优势在于它不仅包含了纸质的所有信息,而且可以记录超声等影像图片。根据我国医疗信息化建设的需要,我们应用Web开发技术设计了一种基于J2EE的电子交互系统,并以Struts作为表现层框架、Hibernate为数据持久层框架。本设计由于采用了J2EE开发平台克服了传统的C/S模式应用开发难于升级,可伸展性差等问题。
【】
[1]Wright D.Telemedicine and Developing Countries:a Report of Study Group 2 of the ITU Development Sector[R/OL].Rapporteur,ITU-D Study Group2,Question6,2003.
[2]Ted Husted,Cedric Dumoulin,George Franciscus and David Winterfeldt.Struts in Action[M].Manning Publications Co.2003.1.
[3]宋汗增.利用Hibernate对象持久化服务简化Java数据库访问[J].计算机应用。2003,12.
[4]Deepak Alur,Dan Malks,John Crupi.Core J2EE Patterns:Best Practices and Design Strategics(2nd Edition)[M].Prentice Hall PTR,2003.
[5]Hibernate:Objectg/Relational Mapping and Object Persistence for Java.[EB/OL].http://hibernate.bluemars.net/.2003.