医院挂号系统设计与实现
2019-05-21何志华
刘 磊 何志华
(广东开放大学 广州 510091) (广州市妇女儿童医疗中心 广州 510000)
1 引言
医院预约挂号系统是指利用网站、手机、短信、电话等渠道开通预约挂号服务,方便患者预约看病所使用的系统。医院预约挂号服务有利于患者提前安排就医计划,方便就医,也有助于医院提高工作效率,对提高医疗服务水平具有重大意义。当前已有许多医院实现网上预约挂号服务,基本分为两类:一类是基于浏览器/服务器(Browser/Server,B/S)架构的挂号网站,用户通过PC端浏览器可查找医生、预约挂号,优点是无需安装任何软件,只需浏览器即可,但需要在PC端登录,不能随身、随时使用;另一类是开发成手机APP,利用移动互联网随时随地预约挂号,优点是方便快捷,但用户需要额外在手机安装APP,升级维护比较麻烦[1-2]。微信作为移动互联网时代大众交流的工具,已拥有庞大的用户群,微信公众号作为新型的服务平台,能够为各种团体提供服务接入,开发基于微信公众号的预约挂号系统,以此作为入口,跳转到使用HTML5开发的响应式Web界面,用户在微信内置的浏览器上就可以完成整个预约挂号过程,既保证便捷性,也极易升级维护[3-4]。
2 微信公众号优势
微信公众号是基于微信平台、面向公众的功能模块,其信息传播方式是一对多,通过关注微信公众号可以将文字、图片、语音等信息直接推送到用户手机,用户通过公众号入口可以方便使用提供的功能,传播覆盖能力较其他网络平台有明显优势。第一,微信是天然的用户接口。关注微信公众号,系统可轻松获取用户位置、时间、账号,支持文字、图片、二维码、音视频、近距离无线通信(Near Field Communication,NFC)等各种信息交互,随时随地对接任何系统,信息传达效率高。第二,轻前端,重后端。使用HTML5技术开发的轻量级前端能够带来更好的用户体验,重后端是基于微信公众平台提供的大量应用程序接口(Application Program Interface,API),可以轻松开发出功能丰富的应用接口。第三,不干扰用户。不同于微博的信息传播方式,微信不会产生爆炸式信息,信息均在较私密的环境下传达,用户自由度较高,自主选择用户订阅、推送功能,具有设置功能。第四,易于生活服务产品推广。一对多传播方式特别适合于政府机关、医疗卫生、商业公司等向用户提供业务服务。
3 系统设计与实现
3.1 业务流程
系统通过微信公众号提供预约挂号服务,患者用户首次使用需关注公众号,成功后进入公众号,点击预约挂号菜单跳转到授权认证中心,获取并绑定用户账号,成功后进入正式预约界面。用户可选择按科室、日期、医生3种方式进入出诊医生列表页面,选择预约医生、日期、时段,选择或添加就医人员信息,确认预约。预约成功后可在用户中心查看预约信息或取消预约,同时系统向用户手机发送提示短信[5-9]。用户预约挂号流程,见图1。
图1 用户预约挂号流程
3.2 功能结构
系统包含两个模块:一是用户使用的基于微信公众号的预约挂号模块;二是医生和管理人员使用的集成在医院信息系统(Hospital Information System,HIS)中的挂号管理模块。预约挂号模块提供预约挂号入口、微信公众平台账号绑定、预约医生、就医评价等功能,其中预约医生是核心,医生列表页面显示医生个人简介,提供预约按钮,预约页面展示医生出诊时间表,用户可选择预约日期、时段。系统允许用户添加多个患者信息,每位患者使用社保卡号、诊疗卡号、身份证号唯一确定身份;预约成功后用户可查看预约记录,也可进行取消;就医后用户可为问诊医生添加评价。用户在个人中心可以查看所有预约记录、管理个人及其他患者信息。挂号管理模块集成在HIS,医生及管理人员在工作站登录后可以进行操作。系统功能结构,见图2。
图2 系统功能结构
3.3 数据库模型
通过分析系统参与角色可以得到几个基本实体:用户、患者和医生。用户是关注微信公众号的使用者,每个微信用户都有唯一的账号信息,通过绑定微信账号可以确定用户身份,通常可使用手机号码标识用户。患者是实际就医人员,用户可添加多个患者信息,为其预约挂号。患者基本信息包括姓名、身份证号、社保卡号、诊疗卡号、与用户关系,其中关系包括本人、子女、父母、夫妻、朋友、同事等。用户可通过一定条件查询医生,查找条件可以是所属科室、疾病关键字、出诊日期等。科室实体定义科室、诊治疾病信息,一个科室包括多名医生,科室与医生的关系是一对多。医生实体定义姓名、级别、简介、所属科室等信息。该模型最重要的两个表是预约记录表和出诊时间表,用户查找医生,预约日期和时段,添加患者,将患者与医生关联,产生的记录存储成预约记录表;管理员选择医生、出诊日期和时段,将医生和出诊时间关联,生成出诊时间表。管理员拥有最高权限,可以管理预约记录表和出诊时间表,也可管理用户和医生信息。系统数据库模型,见图3。
图3 系统数据库模型
3.4 技术框架
本系统采用业界常用的技术组合,后端逻辑层服务器操作系统采用Linux,Web服务采用Tomcat/Nginx;数据访问层数据库采用MySQL,缓存组件采用Redis;前端表示层使用微信公众号作为入口,跳转到使用HTML5技术开发的响应式页面。后端开发框架为SSM,前端开发框架为Bootstrap。第一,SSM。即SpringMVC、Spring、Mybatis 3大框架的完美组合,主流的J2EE企业级开发框架,具有轻量级、代码侵入性低、技术成熟的特点,支持典型的3层架构:数据层、业务层、表示层[11]。Mybatis是数据层框架,支持定制SQL语句,传参自由、灵活,结果集自动赋值,接口设计和SQL语句的分离方便代码再次查看评审。Spring提供统一托管对象的容器工厂,允许通过一致的访问接口访问工厂里的任意实例,也就是对象控制反转(Inversion of Control,IOC);Spring还支持声明式事务,对于高并发应用,带事务的方法往往是瓶颈所在,很可能导致数据库访问延迟,使用声明式事务比较方便。SpringMVC是Web层框架,支持restful风格的统一资源定位器(Uniform Resource Locator,URL)和模型视图控制器(Model View Controller,MVC)开发模式。第二,Bootstrap。简洁、直观、强大的前端开发框架,基于HTML5、CSS3、JQuery技术构建,提供导航、分页、面板等可复用的静态组件以及下拉菜单、标签页、弹出框等动态插件,灵活的栅格布局系统,使用Bootstrap可以快速、高效地开发较好的响应式静态页面[12]。第三,MySQL。最流行的用于Web开发的关系型数据库,支持事务和锁机制,可以单点、主从复制、集群多种规模运行[13-14]。系统技术架构,见图4。
图4 系统技术架构
3.5 实现效果
用户关注公众号后,系统记录用户唯一ID,再次进入公众号,如有预约显示预约记录,若没有预约则可以按科室、日期、医生3种方式查找要预约的医生,医生界面展示姓名、职称和详细信息,点击预约按钮则进入正式预约界面,能够看到该医生的出诊时间和被预约情况,用户选择可约日期和时间段,点击确定后可选择一名或多名就诊人,确认预约,显示预约结果。预约成功后显示用户预约记录,用户可取消预约或查看历史预约。
4 结语
由于网络服务的便捷、自由、无地域限制,越来越多的人选择使用网络自助挂号;而微信公众号作为大众化移动媒介平台,具有使用无限制、范围广、方便患者挂号就医等优势。将微信公众号与网上自助预约挂号系统结合起来,以微信公众号作为访问入口,提供自由、自助的预约挂号服务,将成为网上自助预约挂号服务中的发展方向。