|
[摘要]在线教育网为您提供教育新闻 家庭教育 大学教育 成人教育 出国留学 英语天地 教案中心 经典题库 论文格式 教育规章 课件下载,教学软件下载等栏目的内容,通过这些栏目希望能给广大网上朋友提供好的学习参考资料,感谢每一位来访者对我们的支持和厚爱!下面进入文章正文>>>
基于Web Services的Struts框架在数字医院信息系统中的应用
基于Web Services的Struts框架在数字医院信息系统中的应用
摘要 分析了建立数字医院信息服务系统的必要性,阐明了国内外的研究现状,在分析传统解决方案不足的基础上提出了Web服务解决方案,论证了基于J2EE平台实现系统开发的可行性及优越性,设计了一种基于J2EE架构、MVC设计模式、面向web服务的数字医院信息系统集成框架。
关键词 J2EE;Web服务;Web服务描述语言;简单对象访问协议;XML
1 引言 随着信息技术的日新月异,传统的就医方式已经不能适应人们日益提高的要求,所以需要一种方便、快捷和安全的就医方式,而且依据医院的角度,管理者希望把医院的运营状态和相关的数据以电子数据的形式记录下来,方便统计与管理。同时我国的医疗卫生建设在技术和设备上都有了长足的进步,但是与之相对应的医疗信息化建设却长期得不到重视,一直使用陈旧的管理方法与体制,造成了医疗单位的管理混乱、效率低下等诸多弊病。那么,如何才能有效的提高医院运行效率和管理水平,满足病人高质量、高效率、个性化的医疗服务需要呢?在医院范围内建立一整套从信息采集、信息处理到信息传递与共享的数字医院信息系统便成为一种有效的解决方案。而信息技术提供的核心价值正在经历一个以产品和技术为核心价值到以服务为核心价值的转变,面向服务的信息系统便背受青睐。 2 设计模式 2.1 CORBA、J2EE、MVC、Web Services技术比较 CORBA(Common Object Request Broker Architecture,简称CORBA)技术允许客户端调用网络上任意地方的对象,支持对异构平台的访问,屏蔽了编程语言之间的差异性,具备厂商无关性、平台无关性和语言无关性,但是它采用的是专用的对象访问协议,过程复杂,缺乏一个开放的标准,在Internet环境下CORBA 数据包很难穿过防火墙,并且它是紧密耦合的。 J2EE技术不仅给分布式应用提供了一个简单而统一的标准,而且它还提供了JDBC API技术,以实现对异种数据库的访问,以及提供RMI-IIOP、Java IDL技术等,实现了与CORBA的无缝集成。而且与.NET相比,J2EE既可以跨平台访问,也可以跨平台部署。 MVC是用来控制变化的一种设计模式,对于生成有组织的模块化应用程序,是一种方便有效的方法。MVC设计模式很清楚的划定了程序员与设计者之间的界限,从商业逻辑上拆解了数据,减弱了业务逻辑接口与数据接口之间的耦合,使代码易懂且更易重用。 Web Services技术是通过一系列标准和协议来保证程序之间的动态连接。它将软件模块看成是一种Internet/Intranet上的服务单元,借助XML和广泛应用的WEB协议,实现分布式的计算和异构平台的信息集成,具有开放性、完好封装性、松散耦合性、高度集成性等优点。 所以,开发数字医院信息系统所采用的平台以基于Web Services技术、运用MVC设计模式的J2EE架构为首选。 2.2 Struts框架 Struts是MVC最著名的体现之一,它是一个开发源码的组件,具有组件模块化、灵活性和重用性的优点,同时极大的简化了基于MVC的Web应用程序的开发。
图1 Struts组件结构图(略) Struts提供自己的控制器组件,由ActionServlet实现,它主要负责接收浏览器的请求,决定执行哪一种业务逻辑功能;对于视图,由JSP技术实现,它不提供业务逻辑,仅仅提供模型的表示,是应用程序的外观;Struts的模型能与任何标准的数据访问技术相结合,一般由JavaBean或EJB组件实现,它封装了具体业务的实现。Struts结构清晰的分离了业务逻辑和视图,既可以很容易的改变业务逻辑,也可以很容易的改变页面的链接。 2.3 Web服务模式 Web服务是一个或者一组应用程序,向外界提供一个能够通过Web进行调用的API。Web服务的主要目标是在现有的各种异构平台的基础上构筑一个通用的与平台无关、语言无关的技术层,多种不同平台上的应用依靠这个技术层来实施彼此的连接和集成。Web服务体系架构模型如图3所示:
图2 Web服务体系架构模型(略)
在这个框架中,有三个基本角色:(1)服务提供者:创建Web服务实体,为能实现一组特定任务的软件提供服务接口;(2)服务请求者:发现和调用软件服务,请求者一般会调用服务提供者发布的远程方法,把参数数据发送给提供者并接收相应结果;(3)服务注册表:管理和发布服务。当服务请求者需要调用服务时,它首先到UDDI注册中心搜索该服务,得到如何调用该服务的信息,然后根据这些信息去调用服务提供者发布的服务。在Web Service服务体系中,使用WSDL来描述服务,UDDI来发布、查找服务,而SOAP用来执行服务调用。 4 系统的设计与实现 4.1 设计概要 本系统设计的主要目标是对现代医院信息进行整合,按照人们长久以来的看病就医习惯对就医看病的过程进行定义,使它们分别对应不同的子系统,从而将整个就医的过程数字化,再应用工作流引擎对就医流程中的数据流向进行自动控制,使医生只需专注于看病,病人也不用拿着大把的单据在医院中到处乱撞,而是由计算机自动完成。同时该系统通过三重措施来保证信息安全。第一,对信息的正文部分用对称密钥加密,保证即使信息被院外人员捕获也无法解读其信息的内容。第二,对信息正文部分使用的对称密钥用非对称密钥加密,既兼顾了系统运行的效率又保证了信息的安全。第三,对传输的数据采用MD5进行数据校验,保证数据的完整性和正确性。 4.2 系统的框架设计 本系统的实现基于J2EE平台,采用把AXIS集成到Tomcat中,通过Tomcat服务器来发布Apache AXIS Web应用,数据库服务器为SqlServer。框架如: 图3 信息服务系统集成框架(略) 系统通过Tomcat服务器接受来自医院内部或外部因特网透过防火墙的请求服务。Struts框架在应用程序中为每个表单均创建一个ActionForm Bean,对于每个在struts-config.xml中定义的Bean,框架在调用Action类的execute()的方法时,ActionForm Bean对象会传送给Action类,Action类负责处理浏览器的请求,在收到请求后,ActionServlet会根据根据配置文件(struts-config.xml)为这个请求选择适当的Action处理类并调用的execute()方法,同时在execute()方法中调用Web服务库中的Web服务。对于Web服务的开发,SOAP服务器起到了服务注册的作用,医院开发的Web服务在SOAP服务器注册过以后才能响应医院内部或外部的Web服务查询请求;XML解析服务器负责检查XML文件格式和解析XML文件内容;Web服务库中存放着医院开发的Web服务,它就是服务提供者,负责对医院内部或外部的Web服务请求做出响应,它可以通过JDBC或者其它多种连接方式从医院的数据库服务器中读取数据或存放数据。流程控制器的作用就是接收Web服务库做出的响应,按照既定的工作流执行相关的操作,这些操作可以是信息查询、信息更新、信息删除等以及异常情况处理,处理完成后的结果封装到SOAP消息中,返回到服务的请求者。Web服务的数据源来自医院的数据库,系统可以直接调用Web服务。 4.3 系统的设计 基于以上需求分析,将该数字医院信息系统划分为六个子系统:挂号与分诊子系统、门诊子系统、收费子系统、药房子系统、系统设置子系统和信息服务子系统。 4.3.1 挂号与分诊子系统 根据病人的ID和需求为病人提供挂号的服务,并且可以分诊,将病人尽量的平均分配以提高效率;管理病历,以便给医生诊治提供更多的有效信息;提供专家系统的功能,实时地显示专家门诊的情况;查询各科室、挂号员或号别的各种类型病人的人数及挂号费用。 4.3.2 门诊子系统 从挂号与分诊子系统接收挂号单和病历,生成等待队列。通过自动叫号,实时显示病人的病历,并对病人进行诊断、为病人开药方,传递给收费子系统,同时存入数据库。可以查询各科室或各位医生在的门诊人数、各种疾病的出现人数等。 4.3.3 收费子系统 根据医生开设的处方获取患者诊疗信息,包括患者姓名、病历号、医疗类别、临床诊断、医生编号,开处方科室名称、药品/诊疗项目名称、数量等,实现划价、找零、打印报销凭证。同时能查询各个指定时间段各收费员、各科室、各种收费类型病人的收费情况。 4.3.4 药房子系统 获取患者收费信息,完成门诊病人的取药以及药品的请领、入库、退库、报损等工作,同时对药品的入出药房情况提供有针对性的查询和统计功能。 4.3.5 信息服务子系统 信息服务子系统为用户提供信息查询服务,用户可以通过查询该子系统了解医院的详细信息。既可以提供互动性的信息交互平台,也可以提供实时地信息服务,允许用户在各种终端浏览各种信息,包括医院简介、技术信息、医疗信息、科室信息、公告信息、医院新闻、就医导航信息等。还可以通过远程访问、解析XML文件获取数据,完成与其他医院信息的交互。其主要特征有:(1)根据其它医院的需要,展示Web服务,以供调用,实现了医院的开放性、彼此协作性;(2)提供Web接口,通过XML文件使得各医院之间,可以根据权限来查询所需信息。 4.3.6 系统设置子系统 该子系统主要完成对系统用户的管理,包括权限的管理、接口的管理、数据库的管理等。在权限管理中,系统管理员可以通过增加新用户、设置用户权限和职位权限,来提高系统的安全性。接口管理是系统的延伸和扩展,用于提供信息系统与其它医院交互的接口,协助用户查看、分析信息。数据库的管理主要实现对数据库的重要操作的跟踪和记录;进行数据加密、数据库加密、自动备份与恢复等。 4.4 系统的部分实现 该部分通过查询医院部门信息为例来简单介绍创建和调用基于RPC的Web服务的过程。其主要步骤如下: (1)创建提供Web服务的Java类: Package com.services; import java.sql.*; import com.hospital.table.Message; public class SelectDepartmentMessage{ String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=SYSC"; Connection conn = null; PreparedStatement pstmt = null; public Connection open() throws Exception{ try{ Class.forName(dbDriver).newInstance(); conn = java.sql.DriverManager.getConnection(dbUrl, “sa”,”sa”); return conn; }catch(Exception e){ e.printStackTrace(); }} public String findByKey(String userid) throws Exception{ try{ pstmt = conn.open().prepareStatement("Select * from Department where userID=?"); pstmt.setString(1, userid); ResultSet rs = pstmt.executeQuery(); Department dept = new Department(); while (rs.next()){ dept.setUserID(rs.getString("userID")); dept.setDepartmentID(rs.getString("departmentID")); dept.setDepartmentName(rs.getString("departmentName")); } String xmls = xstream.toXML(dept); Return xmls; }catch(Exception e){ e.printStackTrace(); }}} (2)定制部署Web服务: 为了用AXIS的定制部署特性,需要生成Web服务部署描述符文件,即WSDD文件。 <deployment xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java=http://xml.apache.org/axis/wsdd/providers/java > <service name=”DepartmentMessage” provider=”java:RPC”> <parameter name=”classname” value=”com.services.SelectDepartmentMessage”/> <parameter name=”methodName” value=”findByKey”/> </service> </deployment> 发布Web服务时,只要指定wsdd文件即可。命令如下: java org.apache.axis.client.AdminClient.DepartmentMessageService.wsdd (2)创建客户端应用程序: //ActionForm的实现; package com.hospital.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionMapping; public class DepartmentForm extends ActionForm { private String userID; public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) { return null; } public void reset(ActionMapping mapping, HttpServletRequest request) { userid = null; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } } //Action的实现; package com.hospital.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.axis.client.Call; public class DepartmentAction extends Action { public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { DepartmentForm departmentForm = (DepartmentForm) form; try{ SetService setService = new SetService(); String endpoint="http://localhost:8080/axis/services/ SelectDepartmentMessage "; Call call = setService.setServiceInfo(endpoint,"findByKey"); String xmls=(String)call.invoke(newObject[]{request.getSession(“userid”)}); Department dept = (Department)xstream.fromXML(xmls); request.getSession().setAttribute("department",dept); return mapping.findForward("success"); }catch(Exception e){ e.printStackTrace(); return mapping.findForward("failed"); }}} 上面流程如图4所示: 图4(略) 5 结束语 Web服务以开放的标准为基础, 屏蔽了底层的应用平台,具有良好的平台无关性。Web服务成为了开发信息系统的热点。本系统基于Web Services实现了数字医院信息系统的开发,使得用户更加快速、灵活、安全的浏览、查询、变更、发布信息。
《基于Web Services的Struts框架在数字医院信息系统中的应用》一文由在线教育网收录整理。除署名文章外,本站文章均来源于网络,或网友提供。为此特别声明如下:(1)凡本站署名文章,其版权属本站及作者所有,未经同意不得转载,授权转载者须注明文章来源《在线教育网》及作者!(2)本站未署名文章来源于网络,或网友提供。均用于公益性传播,如有侵权请于两周内与本站联系,我们将及时将其删除!
更多相关文章请返回在线教育网首页,进入《理工论文》栏目>>>
|