时间:2024-05-04
阙佳凯
(复旦大学附属中山医院厦门医院,厦门 361015)
医院值班工作是保障医院正常、有序运转不可或缺的重要环节。由于行业特殊性,医院除了法定工作时间以外还需要安排大量医务人员值班以应对各种突发状况。值班人员通常要处理医疗应急、资源协调、指示接收、通知下达等一系列重要事务。因此医院值班工作的是确保医院医疗服务平稳、有序进行的重要保证,而科学、合理的值班安排则是值班工作高效完成的前提[1-2]。传统医院值班计划是先由科室内部安排,然后统一上报汇总,随着医院的发展,职工数量的增加,这种方式显然存在诸多问题,上报流程繁琐,数据易丢失或出现差错,查询不方便,无法电子化做进一步处理[3-4]。随着医院信息化水平的提升,对值班排班信息化、智能化的需求与日俱增,智能化值班管理系统能够满足复杂值班排班的需要,实时查询值班排计划,实现排班数据跨部门、跨系统共享,是提升医院精细化运营能力的重要手段[5]。
值班管理系统的用户为全院员工,日常使用院内办公电脑登录,移动端使用阿里钉钉应用。系统采用B/S架构设计,聚焦于值班管理这一核心需求,深入挖掘用户配置、模板设置、值班查询、值班提醒等功能需求,采用MVC三层架构理念,运用模块化思想设计,使用敏捷开发策略,并借鉴了多款优秀的开源框架进行开发,界面美观,功能丰富,扩展灵活,维护方便。系统整体架构设计如图1所示。
图1 系统架构设计图
根据需求划分了四大功能模块,包括基础配置、值班管理、值班查询、报表统计,具体如图2所示。
图2 系统功能设计
字典管理:维护系统中各类字典,例如值班类型、人员类型等,通过读取字典映射,减少了代码的改动。
部门管理:医院部门信息维护,包括创建、删除、修改以及查询。
用户管理:员工账号维护,包括创建、删除、修改、查询以及和用户角色的关联。可以通过关联用户与角色进行用户权限的配置。
角色管理:用户角色维护,包括创建、删除、修改、查询以及角色对应菜单权限的配置。比如信息科账号关联超级管理员角色,拥有系统所有权限,医务部管理员账号关联值班管理员角色,拥有关于值班管理的所有权限,而每个科室只有本科室值班数据的增删改查权限,普通账号只有查询的权限。
菜单管理:系统侧边栏菜单目录以及页面按钮管理。可配置菜单或按钮的名称、属性、链接以及所需的权限等。
增删改查:点击添加按钮,可以选择部门、人员、日期、值班类型然后添加完成一条值班录入。拥有修改权限的用户可以删除和修改明天后值班数据,而历史包含当日排班数据只有管理员才可以修改。
模板管理:为了方便批量生成排班计划,免去人工多次录入的耗时操作,系统提供了模板配置功能,用户只需要先在系统中创建周一至周日的值班模板,同时预置值班人员、类型,即可使用模板快速生成指定时间范围内的值班计划。
消息管理:院职工使用阿里钉钉应用移动办公,值班管理系统将根据系统中配置的推送时间把值班计划通过钉钉移动应用推送至指定值班人员,提醒员工关注值班安排,避免遗忘而导致缺勤。
条件查询:通过输入值班日期、部门、姓名、工号等条件可以查询符合条件的值班信息,查询将返回值班日期、值班科室、值班人员、人员工号、值班类型、联系电话以及备注。
值班日历:为了用户使用方便,系统提供了值班日历视图,将值班计划嵌入日历中在页面上呈现,简明直观,一目了然。
数据导出:可以将查询出的值班数据导出Excel下载到本地,便于数据统计。
页面打印:系统提供了页面打印功能,可以直接从网页上预览和打印值班安排表。
个人统计:汇总个人值班情况,可以按天、月、年度进行统,便于考勤和绩效考评。
部门统计:汇总部门排班情况,可以按天、月、年度进行统,方便统计部门工作量。
日志统计:汇总操作日志,可以用作问题定位、回溯。
值班管理系统使用Java开发,采用MVC三层架构设计,即持久层、视图层、逻辑控制层,具体见图3。其中视图层使用的框架主要有Bootstrap、Bootstrap-table、layer、select2、laydate、jQuery。Bootstrap-table 为表格框架,layer为模态组件,select2为下拉框组件,laydate为日历组件,jQuery提供了JavaScript特效以及AJAX异步请求等函数。逻辑控制层使用的框架主要有Spring-boot、shiro、logback、spring-framework、thymeleaf、quartz以及dingtalk-sdk等。其中spring-boot作为核心框架集成系统所需的一系列开源组件,shiro提供了权限配置模块,logback为日志框架,thymeleaf为页面渲染引擎,quartz是一个任务作业调度框架主要用于执行一些定时任务,而dingtalk-sdk则是阿里钉钉服务的开发套件,实现值班信息推送等功能。持久层使用的框架主要有MyBatis和druid,druid是一款广受欢迎且性能强大的数据库连接池框架,MyBatis同样也是一个使用广泛的持久化框架。
图3 系统技术框架
以下是系统中使用的几个主要框架:
Spring-boot:Spring-boot项目始于 2013 年,是 Pivotal团队开发的一个全新开源的轻量级框架。它不仅集成spring框架的优秀特性,同时大大简化了配置,使得开发环境的搭建和开发过程变得简单高效。Springboot程序可以独立作为一个体运行,支持jar或war打包,支持内嵌Tomcat服务器,无需额外部署Tomcat即可运行Web程序。因此,值班管理系统选择基于Spring-boot框架进行开发,利用Spring-boot组件丰富,开发简单,部署方便的优点,快速完成项目开发并部署上线。
Bootstrap:Bootstrap是一款功能强悍的前端开发框架,包含了丰富的web组件和js特效,例如系统中用到的Bootstrap-table表格框架以及bootstrap-datepicker日历选择框架等,利用这些组件可以快速组合的开发出一个美观且功能强大的前端系统。不仅如此,Bootstrap还支持响应式网页设计,能够自动识别设备屏幕分辨从而优化页面布局,在PC浏览器、手机、平板电脑上都能有较好的用户体验。值班系统前端框架主要基于Bootstrap进行开发,同时也使用了layer、select2等一些优秀的开源组件,目的是为用户提供一个风格统一、简洁美观的用户界面。
Apache-shiro:Shiro是一个轻量级的安全框架,可以实现用户验证、授权、密码和会话管理。Shiro包含Subject、SecurityManager和 Realm几个组件。其中Subject可当成是与应用交互的用户,而SecurityManager则是Shiro的核心,通过SecurityManager实现各种安全管理功能,Realm则是应用程序与安全数据之前间的“桥梁”或“连接器”,用于用户认证和授权验证。通过配置ShiroConfig类,在类中实现SessionManager、SecurityManager、ShiroFilter EhCacheManager等类完成Shiro的配置。在接口处添加注解@RequiresPermissions为了接口配置权限,减少了冗余代码。以下是项目中使用注解@RequiresPermissions配置接口使用权限的示例:
值班系统部署架构如图4,服务器系统为Windows Server 2016,数据库使用SQL Server 2016。系统部署于院内网区域,与院内办公机网络、服务器网络互通,但与公共网络完全隔离,与院外网DMZ区域有防火墙隔离。为了满足院内员工能同时使用办公机和手机访问,并且可以通过阿里钉钉应用推送值班消息提醒,在院外网DMZ区域部署了一台Nginx代理前置机,配置防火墙IP端口规则放通这台Nginx服务器的外向访问阿里钉钉服务以及内向访问内网值班管理系统,并且对外开放一个使用手机查询值班的端口。在保证服务器数据安全的前提下,实现所有设计的功能。
值班管理页面是值班配置的主要页面,如图5所示。页面左边栏是导航菜单,点击菜单可以进入对应功能页面,管理员可以为不同用户配置对应的菜单访问权限。值班管理页面设计分为上中下三个部分,上部是搜索栏,包括值班科室、人员姓名、人员工号、值班类型、联系电话以及日期范围。中部是一组按钮,包括创建、删除、删除和导出,提供值班管理的基本操作。下部为查询得到的值班记录列表,包括了值班日期、值班科室、值班人员、人员工号、值班类型、联系电话以及备注。
图4 系统部署架构
图5 值班管理页面
为了更加简明直观地展示值班计划,值班日历页面参照了传统日历格式进行设计,将值班信息嵌入到日历当中。如图6所示,用户可以根据科室,值班类型,值班月份查询值班计划,返回的值班信息将会嵌入日历中显示,并且支持页面打印功能。
图6 值班日历页面
智能化医院值班管理系统的上线应用,是智慧医院建设的又一重要成果,成为医院信息系统的重要组成部分,在促进医院效能提升方面有着重要意义。系统不仅实现了智能化排班功能,而且提供了丰富多样的值班视图,同时利用互联网接入阿里钉钉应用实现了值班智能提醒功能。在提高部门排班效率的同时,为医院科学合理调配资源、高效运营决策提供了数据和系统支持。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!