基于J2EE技术的医院互联网管理系统的设计与实现
2020-09-02孙莎莎
孙莎莎
(北京老年医院,北京 100095)
0 引言
计算机技术的飞速发展及其在各个领域的广泛渗透,推动了医院管理模式向规范化、系统化发展[1]。目前,部分医院患者就医仍然存在挂号、排队检查时间较长、就诊时间短等问题;不同时段,医院内患者流量不均;患者获取检查报告仍然需要亲临医院获取等问题。为提高患者就诊体验感,使患者错峰就诊,减少患者院内无效等待时间、方便患者获取检查结果,提高就医满意度,基于电脑和移动设备的互联网医院系统成为越来越多医院和患者的实际需求[2]。为此,设计了一个基于J2EE技术的医院互联网管理系统,系统以JAVA为主要编程语言,以eclipse为开发工具,以开源的SSH为基本框架,使用MVC模式设计Struts架构,保证系统的数据处理能力,使用SQL作为后台数据库,保证数据的完整性和系统的存储效率。经过测试,系统达到了预期的要求,改变了传统的医院互联网管理模式,丰富了管理系统的维度。
1 需求分析
经过实际调研,确认需求分析:互联网医院系统应依托于医院现有的基础业务系统,如HIS(医院信息系统)、EMR(电子病历系统)、LIS(实验室信息系统)和PACS(医学影像存储与传输系统)等系统,使用接口与已有系统无缝连接,提供预约挂号、诊间支付、检查预约、检查查看、我的住院、我的病史、我的体检等功能,为患者提供“一站式”、“无纸化”电脑端和移动端(Android端)持续性医疗服务,提升医院服务水平,提高就医满意度。
2 系统设计
2.1 总体设计思想
由于医院信息服务系统面向的用户数众多、并发业务处理数量大、地理分布较广且分散,因此在考虑网络结构模型时应选择 B/S 结构的模式[3-4]。J2EE运用Java API技术保障系统数据的安全传输与访问,具有很高的安全性。J2EE为B/S提供中间件框架的开发环境如Enterprise JavaBeans,解决了系统性能以及安全保障问题;其应用系统对多种操作平台都有很好的适用性,对硬件的要求相对不高[5]。
互联网医院系统的技术架构主要包括3个部分:基础业务系统、移动服务平台和用户入口[2]。移动服务平台将在业务逻辑层整合医院内已有的多系统数据,一方面提供安全可靠的授权访问模式供患者通过入口查询个人医疗数据;另一方面具备高继承性和扩展性,为第三方应用提供便利接口,保证院内医疗数据的安全。该系统技术架构如图1所示。
图1 互联网医院系统技术架构
2.2 系统功能
该系统为患者提供“一站式”服务,提供从预约挂号、检查、体检、住院等网上医疗服务。并为了方便患者,本系统提供电脑网页版和移动版(Android系统),其系统功能如图2所示。
图2 互联网医院系统功能
该系统为患者如下几个方面提供服务:1)导诊。患者通过“预约挂号”于就诊前一周内选择科室、医生,进行预约挂号并管理自己的预约;2)诊疗。患者可在就诊后通过此功能查看病历、预约各项检查、支付检查费用并查看检查结果,缩短在医院内等待检查的时间;3)支付。患者结束诊疗期间和诊疗完成后支付诊疗费用、药费、检查费和体检费等各种费用,并提供各项账单以供查询;4)体检。患者可在此处预约体检、选择体检项目,并在体检后查询体检结果;5)信息。为患者提供医院简介、医院新闻、医生介绍和投诉建议等服务。
3 系统实现
3.1 B/S模式
软件研发中的软件体系结构及工作模式的设计是至关重要的环节,因此这也是该服务平台的研究中首先要考虑的地方。综合考虑之后,本系统的网络结构和技术平台分别采取 B/S 模式和J2EE。系统网页端使用MyEclipse开发,移动端使用Android Studio进行开发,Tomcat进行部署,MySQL做为数据库,使用SSH(struts2+spring+hibernate)框架B/S 模式,B/S 模式的结构如图3所示,SSH框架如图4所示。基于B/S 设计的软件具有较好的扩展性、稳定性、安全性,并且在运行和维护方面成本较低。
图3 B/S结构模型
图4 SSH框架
3.2 SOA架构
作为医院与患者联系的重要工具,门户网站的主要任务是提供信息服务,因此我们采用面向服务的分布式体系结构-SOA架构[6]。它可以有效整合现存的应用系统,这样就能实现系统项目模块单独开发,从而减少系统开发时间。SOA架构在结构上将其分为表现层、流程引擎、服务层、组件层和资源层[7]。表现层设有浏览器页面和功能窗口,流程引擎利用工作流引擎实现各部门之间的业务协作,资源层提供各种业务系统及数据库,具体结构如图5所示。
图5 SOA 架构
3.3 SQL Server数据库
作为数据库管理和开发的工具,SQL Server具备庞大的日志数据储量、强大的数据查询功能[8-9]。SQL Server Agent 能够自动地定时管理数据库,Server Service监督用户行为以保证数据库的完整性[10]。Microsoft SQL Server 2008能够提供有效的可扩展与分析的信息处理解决方案,并且支持WEB环境下管理系统系统的设计与开发,因此可以应用WEB 技术对其中的字段信息进行查询、删除、筛选、分析等基本操作[11-12]。
3.4 信息服务系统的应用结构设计
系统根据基于J2EE的SSH框架以及MVC模式进行设计与开发[13],系统的技术架构层次可以分为表现层、业务层和持久层及数据库层。对于系统各层次结构通过分层架构技术设计:表现层采用 Struts 框架实现各种动态 DHTML页面、表单处理等;业务层的各种容器和编程活动由 Spring 框架实现;持久层包含的各种结构由 Hibernate 框架实现。
为了统一管理并维护系统的正常运行,同时促进各部门的业务协作,实现各级的信息资源共享,医院互联网管理系统基于 SOA设计了应用架构体系。另外在系统中引进工作流技术,方便系统管理人员定义系统中业务处理流程和跟踪控制信息处理状态[14]。根据 SOA 架构的应用体系,本平台分为4层架构:
1)数据层位于最底层,包括系统数据库、网站存储及各单位的私有数据。
2)数据层的上方是支撑引擎层,支撑着各种逻辑处理业务,将数据层和访问层隔开,降低系统耦合度。
3)第三层为SOA服务总线,设有各功能的标准化接口和SOA服务[15]。
4)最后一层是平台的业务层,提供各种用户的业务入口。
4 高并发访问处理
本系统网页端为中型网站,实际运行中会遇到放号时段高并发访问的问题,主要采用以下方法优化网站,减轻服务器负荷,保证服务器正常运行。
4.1 数据库优化
1)用索引提高效率。
2)查询优化应用。如合理使用 EXISTS 子句,在子查询中,NOT IN 子句将执行一个内部的排序和合并,因为它对子查询中的表执行了一个全表遍历,因此NOT IN 都是低效的,采用 NOT EXISTS 代替 NOT IN 可以提高查询效率,同样可以使用 EXISTS 代替 IN[8]。
4.2 组合组件和元组件方法
尽管使用元组件模型,例如生成器的脚本模型,但应用程序开发的整个方法使用了组件方法和元组件方法。对于应用程序原型,尽管某些组件是从适当的元组件生成的,但它可以由其组件模型完全描述,不必必须生成所有组件,某些组件可以不在应用程序规范中定义其功能。生成器脚本模型的目标是尽可能简化应用程序规范,因此它必须仅包含生成器问题域内不同的特性。Java数据库管理应用程序示例的组件模型如图6所示。
图6 Java数据库管理应用程序组件模型
4.3 html静态化
为降低服务器负担,将新闻、医生信息、检查报告和体检报告生成静态html页面,患者访问此类静态页面,并不需要经过网站进行程序处理,减少页面解析的时间。静态html页面可以减少数据库数据读取量和逻辑运算工作量,另外,html静态化还能带来其他好处,如有利于搜索引擎的收入,提高网站的影响力;减少SQL注入攻击;增加安全性等[10-11]。
本网站使用httpclient实现Html静态化,导入httpclient的jar文件后,生成html静态页面的方法代码如下:
public static booleanHopStaticHtml(String basePath,String target,String path,String name,String extension) {
boolean result = true;
HttpClient client = new HttpClient();
GetMethodgetMethod = new GetMethod(basePath + "/" + target);
System.err.println(path);
try {
client.executeMethod(getMethod);
File hopfilePath = new File(path);
if (!hopfilePath.exists()) {
hopfilePath.mkdirs();
}
File file = new File(path + name + extension);
Writer w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
w.write(getMethod.getResponseBodyAsString());
w.flush();
w.close();
} catch (Exception e) {
e.printStackTrace();
result = false;
}
return result;
}
4.4 图片服务器分离
本系统运行时存在大量图片,如检查报告、检查图片、新闻图片、医生照片等。大量图片的存在,影响网站性能,为提高服务器的性能和稳定性,将耗费资源的图片服务分离出来,使用单独的图片服务器(ImageServer)并对图片服务器做更有针对性的性能优化,如使用高转数(15 000转)硬盘等方式,极大地提高了网站访问的效率。技术层面,图片上传后可以使用ftp同步到图片服务器[12]。
4.5 缓存
对被频繁访问的业务数据进行缓存。在应用系统中,通常会有一些业务数据被用户频繁访问,建立中间层数据缓存非常有用,可以减少与数据库的交互次数,从而改善系统的性能[13]。使用hibernate的一级缓存机制,将用户常访问数据放入内存中,避免频繁向数据库中读取数据,有效增加了服务器的抗压能力。
4.6 结果
以上措施有效降低Web服务器的系统压力,提高了访问速度和效率,满足目前访问需求,如随着时间的推移,业务量的加大,还可以考虑硬件提升、服务器集群、负载均衡等方式提升网站性能,应对高峰期访问等问题。
5 测试
5.1 功能测试
对本系统的功能测试主要使用黑盒测试的方法。黑盒测试主要测试软件的功能和界面。测试者不需要了解程序的内部情况,只从输入的合法性及正确性,规范性,范围性中监测系统的输入输出结果是否与预期的一致而进行的测试[14]。
5.1.1 人工测试
对设计的医院互联网管理系统进行人工测试,对每个模块的测试结果如表1所示。
表1 人工测试
通过使用多个测试账号对所有功能进行多次测试,测试时网站和Android软件运行良好,基本达到设定目标。
5.1.2 自动化测试
利用AutoRunner自动化测试工具进行了测试并通过[15]。测试结果表明,系统运行稳定,所有功能完备。
5.2 性能测试
5.2.1 网页端
系统测试是软件设计中必不可少的环节,它根据前期设定的原则和目标检测系统的功能和性能,防止系统存在运行错误和漏洞而影响系统的稳定性与安全性[16],在此可以事先设置测试的指标。测试前要准备环境,然后准备硬件设备,主要有数据库与WEB服务器各一台,测试电脑和用户电脑若干台以及路由器、交换机等其他设备。综合考虑,服务器无需过高的配置,具体参数如表2所示。
表2 医院互联网管理系统性能指标
随后确定测试所需的网络环境,其拓扑结构如图7所示。
图7 网络测试环境示意图
统计测试项目的数据结果,具体结果如表3。根据表中数据分析可知该信息服务系统在并发数为100的前提下系统的业务处理成功率达到了99%,基本上满足了性能测试的指标值,系统响应时间略大于测试目标指标值,已经很好地完成了系统测试提出的要求。从整体上来说该系统已经完成设计提出的目标,因此也就具有完整的系统功能以及稳定可靠的系统性能和较强的业务处理能力。
表3 测试结果列表
5.2.2 Android端
测试方法:通过Linux的资源监控命令来实现对Android平台的资源实时监控。
测试机器配置:CPU:高通骁龙980、RAM容量:8 GB。
测试内容:1.CPU%:CPU占用率2.RSS:实际占用的物理内存数,单位MB。
测试结果如图8、图9所示。
图8 CPU占用率测试结果
图9 内存占用测试结果
如图8、9所示,系统在运行时比较稳定,占用CPU不超过15%,内存占用不超过300 MB,测试机型为中端机型配置,该系统可以在绝大部分手机上正常运行。
6 结束语
我国现有的医院互联网管理系统存在呈现信息少、交互性低、利用率以及共享性差,业务办理窗口少、程序繁琐,部门协同处理不明显等问题,因此本文采用SOA、J2EE技术等技术,运用面向服务的设计架构,根据MVC的设计模式开发了统一管理、互动性强的门户网站,实现了医院信息服务的分级管理,提高了医院各部门之间协同业务办理的能力。该系统经过优化后尽心了详细测试,能平稳运行使用。投入使用后,极大地方便了患者,减少了患者在医院的无效等待时间,提升了医疗满意度。目前该系统还在开发完善中,后续将推出基于微信和IOS系统的互联网医院平台入口,更好地满足广大患者的需求。信息服务系统的应用可以使得医院信息资源得到有效整合,促进信息共享,再加上系统提供便捷的业务办理流程,这样就极大地提高医院各部门的工作效率。另外信息服务系统还为医院进行政策与信息公开提供了一个很好的平台,促进了医院工作的公开化和透明化进程。