韩 岗,孙丛艳,吕雪峰*
(1. 军委后勤保障部信息中心,北京 100842;2. 解放军总医院专家协调中心,北京 100842)
近年来,我军对疗养信息化工作重视程度越来越高,在疗养院数字化和信息系统建设方面已经取得不少成果[1-2]。在疗养计划管理中,信息化水平还相对不足,计划制定和下发的效率、计划落实率等指标还不太高,迫切需要引入一套集中式的疗养计划管理系统。在该系统之前,疗养工作采用基于VBA+Access开发的单机版管理系统进行计划管理和疗养证发放。在过去十多年里,该单机版系统发挥重要的作用,保障疗养工作顺利进行。然而,该系统受当时网络环境限制,未采用集中式部署方式,导致数据分散在各级保健部门,难以有效分析利用,疗养计划执行情况也很难得到有效的监管。针对这些问题,开发基于B/S模式的疗养计划管理系统,迄今已全军推广使用两年,受到广大用户的一致好评。
1.1 功能需求疗养计划管理系统提供疗养计划制定和下发、疗养证发放、疗养申请、疗养员入(出)院、疗养质量效果评价、疗养信息数据汇总等功能,并维护全军疗养机构保障能力、各单位保障人数等信息,实现贯通军队各级疗养管理部门及疗养机构的闭环式疗养计划管理,实现疗养信息互联共享、疗养业务在线处理和疗养计划执行情况的实时监督检查。
1.2 架构设计如图1所示,系统主要包含三层:数据层、应用支撑层和门户层。此外,系统还需对安全机制进行专门设计,在进行业务设计时,要参考军队发布的相关政策、规范。
本系统全部数据采用集中式部署方式,统一存放于服务器端数据库中,构成本系统数据层。数据层包括疗养院数据、部队单位数据、疗养证数据、疗养计划数据、疗养人员数据和凭证数据,实现疗养业务的数据汇聚和凭证存档,为数据分析利用及业务审计工作提供数据支撑。
应用支撑层负责实现本系统的主要业务逻辑,包括基础信息管理、疗养计划管理、疗养证管理和检查监督与统计四个模块。基础信息管理模块实现部队信息、疗养院信息及用户信息的维护管理;疗养计划管理模块提供疗养计划(含总体计划和详细计划)制定和下发功能,疗养计划下发同时生成疗养证;疗养证管理模块提供疗养证发放、撤回及退回上级功能,提供持证入院功能;检查监督与统计模块提供各项指标的统计查询功能,如疗养计划落实率、疗养证发放情况统计、疗养院入住率等。
门户层是本系统提供用户访问的操作界面,是本软件全部功能的访问入口,向用户提供保健疗养、专项疗养、康复疗养、基础信息管理和消息公告等功能。
图1 疗养证计划管理系统总体架构
1.3 安全设计在安全设计方面,本系统考虑身份认证和权限管理两方面,采用开源框架Shiro实现基于用户名口令的身份认证和基于角色/权限的访问控制。在具体设计时,采用前后端协同的安全设计,前端菜单及按钮仅对具有相应权限的用户可见,同时,后端对用户请求进行鉴权,拦截越权访问的请求。
1.4 系统特点该系统采用集中式部署方式,逻辑上只需部署一份,全网均可访问,实现数据的集中。用户通过浏览器即可访问本系统,省去客户端安装、升级等琐碎工作。系统提供检查监督功能,决策部门可随时查看各单位疗养计划执行情况,并根据执行情况调整未来的疗养计划,使计划趋于合理。
2.1 技术环境本系统采用基于Web的B/S软件开发架构,为用户提供便捷的浏览器访问方式。如图2所示,软件将部署在Tomcat应用服务器中。部署部分包括CSS、JS、图片、字体等静态文件和可执行代码。代码部分基于Spring容器实现,集成Apache Shiro、Spring MVC、MyBatis等技术,程序结构包括控制器层(Controller)、服务层(Service)和数据访问层(DAO)三层。
图2 疗养证计划管理系统技术架构
环境配置如下。服务器端操作系统:Windows 2012 Server;数据库:MySQL 5.7;客户端浏览器:Chrome、Firefox、IE 11+等。软件采用Java语言,基于Java EE平台开发。
2.2 前后端交互流程如图2所示,前端请求到达后端应用服务器后,首先被Shiro过滤器拦截,对当前用户进行身份认证和鉴权操作。如果当前用户未登录,则令其重新定向至登录页面;如果当前用户越权访问,则返回异常状态码。用户的合法请求会由Spring MVC的DispatcherServlet模块处理,并根据其URL和请求方法(POST、GET、PUT、DELETE等)找到一个Controller层的方法,该方法负责具体的请求解析、处理和准备响应数据。一般情况下,该方法将调用Service层的业务逻辑函数,再由该函数通过DAO层进行数据库访问操作。Controller层的方法可以将返回的对象直接交给Spring MVC,并由相应的消息转换器序列化为JSON或XML格式,构造响应报文,回传给前端。Controller层的方法也可以将视图名和查询到的数据一起交给视图解析器,由视图解析器找到相应的JSP文件,并渲染生成前端可解析的HTML格式,最终回传至前端。
2.3 主要技术
2.3.1 Web技术 包括Web客户端技术和Web服务端技术,也称前端技术和后端技术。当前,主流前端技术主要包括HTML、CSS和JavaScript。HTML和CSS是前端页面内容和样式风格的主要载体,JavaScript则为前端带来更好的动态性和交互体验[3]。前端技术按渲染方式可分为浏览器端渲染和服务器端渲染。前者指开发的代码为纯前端代码,无需后端再次处理;后者指在开发的前端代码中包含浏览器无法识别的标签,需后端处理后才能输出HTML文件,如PHP、JSP等技术。后端技术一般按照所采用的语言划分,常见的有PHP,C#,Java等。后端的主要任务是解析和响应前端请求,完成相应的业务逻辑等。
本系统前端采用JSP技术,后端采用Java语言开发,后端架构采用MVC思想(Model-View-Controller,模型-视图-控制器)。控制器完成前端请求的解析处理,准备好相关数据,并利用这些数据生成相应的视图,返回至前端。控制器在准备数据时,一般需要通过持久化层访问数据库。主流的持久化层技术有Hibernate、MyBatis等,本系统采用比较易于上手的MyBatis[4]。
2.3.2 B/S结构 B/S结构(Browser/Server,浏览器/服务器模式)与传统的C/S结构(Client/Server,客户端/服务器模式)相对应,是伴随Web前端技术的兴起而产生的一种网络应用访问模式。B/S结构无需安装客户端,免除客户端安装升级等繁琐工作,而且只要遵循一定标准,只需开发一个前端版本,即可实现跨系统的全面兼容。
本系统采用B/S结构进行开发部署,前端支持IE 11以上版本及主流的现代浏览器。
2.3.3 Apache Shiro技术 Apache Shiro是一个用于Java应用程序的开源安全框架,提供身份认证和权限管理功能,由于Shiro功能完整,简单易用,且方便与Spring集成,因此Shiro在管理信息系统中的应用极为广泛。Shiro为身份鉴定和鉴权提供灵活的接口,使用者可以平滑地从原有系统迁移到Shiro。而且,Shiro对权限的管理也十分灵活,既可以集中式地在配置文件中完成权限管理,也可以以注解方式对每个方法设定访问权限[5]。此外,Shiro还提供会话管理功能来维护当前用户的登录状态,提供缓存功能来缓存用户的用户信息、角色、权限等。
本系统采用Shiro安全框架,实现基于用户名/口令的身份认证,实现基于菜单的资源访问控制,实现按钮级的用户权限管理。系统包含5类角色,提供9个一级功能和24个二级功能,Shiro通过各功能URL与角色的映射实现系统的访问权限管理。
2.4 外部接口本系统要与军队人员管理系统和疗养院信息系统发生数据交换,需要设计相应的外部接口。业务需求上,在疗养员入院登记时,疗养院将通过军队人员管理系统核实疗养员的身份、职级等信息,确保不出现冒名顶替和越级疗养等情况;入院登记完毕后,需要将疗养员信息发送至疗养院信息系统,疗养员出院时,则要将疗养院信息系统中的疗案首页等信息回传至本系统,以支撑疗养工作监督和评估,实现疗养工作的闭环管理。
在技术实现上,本系统提供基于WebService的外部调用接口,疗养院信息系统通过调用该接口获取疗养员及其家属的相关信息。本系统则通过调用军队人员管理系统的人员信息查询接口进行疗养员身份、职级等信息的核查;通过调用疗养院信息系统的疗养信息查询接口获取疗养员疗案首页等信息。
基于B/S模式的疗养计划管理系统实现集中部署、全网访问,改变以往疗养计划落实情况不透明、监管效果差、数据分散无法有效利用的状况,弥补疗养计划管理环节中的漏洞。本系统严格按照疗养工作相关规定进行设计,对疗养员身份、职级进行有效确认核实,对随员数量、疗养频次按照相关规定统一管控,保证疗养资源利用的规范性和公平性。下一步工作将对本系统积累的疗养数据进行深入分析挖掘,进一步发现疗养工作的内在规律,提高疗养计划的针对性,同时,积极探索与在用疗养院信息管理系统的对接方法和途径,推动疗养数据共享共用,为构建全军健康大数据管理平台奠定坚实的基础。