APP下载

基于微信公众号的医院预约挂号系统开发*

2022-01-22

湖州职业技术学院学报 2021年3期
关键词:号源挂号科室

万 杰

(湖州职业技术学院 物流与信息工程学院, 浙江 湖州 313000)

目前,医院的信息化业务正从传统的PC端向手机、PDA等移动终端发展。安卓和苹果等生态系统的APP,由于存在系统兼容性差、开发成本较高、用户获取较难、用户粘度较低等问题,较难在智慧医院建设中推广。微信是一款有10多亿用户群体的移动应用。而且,围绕着微信又有诸如订阅号、公众号、小程序等生态体系。其中的微信公众号主要面向企业级用户,以提供更加便捷的服务为主要目的,具有跨平台、用户粘度高、认知度高、易推广、二次开发生态环境较好等优点。因此,微信医疗信息化应该是智慧医院建设和发展的重点方向[1]111-115 [2]86-87 [3]273-275。

本研究拟开发一个基于微信公众号的医院预约挂号系统。该系统利用WebService技术和医院HIS系统数据进行通讯,采用PHP和Mysql语言编程,可满足三级甲等医院对预约挂号的需求,同时也可作为智慧医院建设的一部分技术和内容进行推广。

一、基于微信公众号的医院预约挂号系统的相关技术

基于微信公众号的医院预约挂号系统采用由数据层、业务层和表示层构成的三层架构设计,主要由微信客户端、微信开放平台服务器、医院外网服务器和应用开发后端服务器四部分组成。其中,应用开发后端服务器操作系统采用Centos,Web服务主要采用Apache,数据库采用MySQL。前端开发框架为Vue.js,后端开发框架为ThinkPHP。

(一)微信开放平台技术

微信开放平台技术是医院预约挂号系统的支撑技术,类似苹果IOS或Android的底层架构技术,主要包括Access_token技术、模板消息接口技术和基础消息能力技术,可提供基础性服务,如用户权限、发送消息接口、模板接口等。

1.Access_token技术 Access_token是微信公众号全局唯一的接口调用凭据,微信公众号在调用各接口时都需要使用Access_token,其有效时间为7 200 ms,主要作用是获取用户的微信账号信息,它可以为以后的推送服务提供保障。一般来讲,通过第三方用户唯一凭证Appid和第三方用户唯一凭证密钥Appsecret可获取Access_token,并最终获取Openid。Openid作为微信应用的全程唯一标识符,是微信公众号给用户分配的唯一且不重复的标识。

2.模板消息接口技术 模板消息接口技术在微信公众号中用于向用户发送重要服务通知,如挂号或退号成功、就诊时间提醒、就诊评价等与病人互动的服务,都需要通过模板消息服务来完成。认证后的微信公众号可以申请模板消息功能入口,但在模板消息调用时需要模板ID和模板中各参数的赋值内容。

3.基础消息能力技术 当用户通过微信公众号向服务方发送消息时,微信服务器会将数据包发送到开发者填写的URL上,开发者可以根据用户发送的消息内容,利用基础消息能力技术丰富应用内容。

(二)PHP和Mysql技术

PHP是一种解释性语言,也是一种容易学习和使用的开发语言,其语法特点类似于C语言,且加入了面向对象的概念,因此具有较强的实用性[4]50-51。相比Java,其主要优点是编程速度快、部署方便,其缺点是安全性不如Java高。Mysql是一种开源数据库技术,广泛应用于网站类项目。

在本项目的开发过程中,我们主要使用PHP和Mysql技术。其中的PHP框架,选择国内广泛使用的ThinkPHP 5。

(三)WebService技术

医院内部系统庞大而繁杂,其中的HIS系统是它的主要支撑系统。HIS系统在对外进行数据对接时使用WebService技术。WebService采用XML标准配置应用程序,以方便不同系统之间的信息交互。

二、基于微信公众号的医院预约挂号系统的功能设计

在智慧医院概念提出之前,医院挂号服务的主要方式有电话挂号、窗口挂号和网上挂号等几种。随着智能手机的普及和智慧医院的建设,网上挂号逐渐转移到手机,窗口挂号基本被自助机挂号替代。

通过微信公众号进行门诊挂号服务的优点是:(1)可以预约就诊时间,系统根据数据分析,可以将时间误差控制在10分钟之内,从而大大节省病人的候诊时间,减少病人在医院的滞留时间。(2)可以自助操作,不需要第三方人员帮助。(3)不需要单独安装APP[5]77-81。

以下是基于微信公众号的医院预约挂号系统的功能设计:

(一)系统安全性功能设计

安全性设计是该系统的重要组成部分。在微信开放平台上,该系统分为前台、中台和后台三部分。其中,前台面向用户,负责功能性业务;中台面向医院信息科,负责信息的抽取和转发;后台面向开发者,负责数据的逻辑性业务。通过微信公众号构建用户权限体系,可以确保数据信息的安全可靠性[6]68-70。

(二)系统扩展性功能设计

在智慧医院建设中,公立医院,尤其是大型的三甲医院应走在前列。考虑到国家有关政策的延续和变化,基于微信公众号的医院预约挂号系统的设计必须考虑功能扩展问题,通过二次开发技术,为其他厂商接入该系统提供便利。

(三)系统智能性功能设计

该系统能通过微信平台提供推送、回复服务。如:通过设置关键字,能主动回复用户在微信窗口的留言;通过利用定时器技术,能向用户定时推送号源提醒服务等。

(四)微信用户绑定功能设计

用户绑定就是利用WebService技术,建立个人微信账号与医院HIS系统中病人账号的关联。它是预约挂号系统的核心技术。该技术是微信平台与医院HIS系统之间实现信息共享的桥梁,主要内容包括绑定号源数据、绑定家庭账户等。其功能模块的流程如图所示(参见图1)。

图1 微信用户绑定功能模块流程图示

(五)接口功能设计

基于微信公众号的医院预约挂号系统需要通过WebService服务,才能与医院的HIS系统联通,因此需要有一套完整的接口来规范数据的交互[7]1 927-1 937 [8]152-157。由接口提供标准的对接方式,由医院提供WebService服务,以便系统调用,并通过前置服务部署至外网。接口文档应提供方法名、出入参数(参数的大小写、格式等)。数据传输格式统一采用XML,编码为UTF-8。根据预约挂号的实际需要,接口应具有相应的功能(参见图2)。

图2 预约挂号功能点设计图示

在设计接口文档时,应详细标明参数名称、参数类型、参数说明、是否可空等内容,以便与医院的HIS系统对接沟通。表1以预约挂号接口为例,展示了相应的部分内容,其他接口与之类似(参见表1)。

表1 预约挂号数据入参出参表

三、业务流程和主要功能模块编程的实现

基于微信公众号的医院预约挂号系统的业务流程如图所示(参见图3)。用户进入医院微信公众号后,首先要绑定用户,然后根据病情选择科室或医生,再选择就诊日期和就诊时间段(系统规定每人每天只能挂两个号源)。当就诊病人确定后,系统就会显示“挂号成功”。此时,在微信公众号中会收到系统“挂号成功”的通知。如果信息错误,则可以退号或重新挂号[9]53-55 [10]262-264。号源确定后,患者可于指定时间去医院就诊。患者到医院后,在导医台或自助机取号缴费。在得到具体的诊室信息后,整个预约挂号流程便自然结束。

(一)获取Access_token和OpenId模块的实现程序

$appid=$res[’appid’];

$appsecret=$res[’appsecret’];

$url = ’/cgi-bin/token?grant_type=client_credential&appid=’

$url_get =$url.$appid .’&secret=’ . $appsecret;

$json = json_decode ( $this->curlGet ( $url_get ) );

其中,appi和appsecret代表每一个公众号的唯一标识符。用以上代码访问微信开放平台,继而获取json。access_token值就在json中。

$code = request()->param(’code’); //通过code获得openid

$baseUrl = urlencode(’http://’.$_SERVER[’HTTP_HOST’].

$_SERVER[’REQUEST_URI’].$_SERVER[’QUERY_STRING’]);

$url = $this->__CreateOauthUrlForCode($baseUrl);

Header(“Location: $url”).

(二)挂号科室和科室子列表模块的实现程序

$dataBase = db(’Medical_dept’);

$array_dept = $dataBase->select();

$this -> assign(’array_dept’, $array_dept);

先将科室和科室子列表同步到本地数据库,再利用PHP代码获取科室信息,最后通过Vue.js技术将信息呈现到微信客户端,让患者进行选择。

(三)准备排班的数据程序

$ksdm = request()->post(’ksdm’);//科室代码选择该科室下可以挂号的医生

$begin_day=date(’Y-m-d’,strtotime($showtime . ’+1 day’));//从第二天开始挂号

$end_day=date(’Y-m-d’,strtotime($showtime . ’+7 day’));//最长可以挂7天后的号源

$parm = array (

’code’ => ’6’,

’mess’=> $this->ws_token.’@’.$this->ws_name.’@’.$begin_day.’@’.$end_day.’,

’ref_mess’=>’mess’,

).

(四)申请号源的程序

根据排班日期、科室代码、医生代码、科室名称和医生姓名,到系统中申请号源。申请号源的具体程序如下:

$pbrq = request()->param(’pbrq’);

$ksdm = request()->param(’ksdm’);

$ysdm = request()->param(’ysdm’);

$ksmc = request()->param(’ksmc’);

$ysmc = request()->param(’ysmc’).

(五)挂号模块的实现程序

病人先登录微信,进入医院微信公众号,选择相应的医生或科室,然后选择就诊时间。为方便预约,病人可以选择7天之内没有被预约挂满的医生。

病人发起请求后,系统会将医生信息、病人信息、就诊日期、就诊时间、所选科室等信息传送到服务器端程序;服务器端程序在对数据进行加密处理后,传给WebService服务器;然后由WebService服务器请求HIS系统,完成号源的确认。号源确认完成后,数据会再依次传递给用户。这样,整个挂号流程就完成了。

(六)挂号完成后的推送提醒程序

挂号完成后,系统会发送一条提醒信息。其中,$description代表用户接收到的信息,Access_token通过每间隔2小时完成一次调用来获取。Qrcode代表微信开放平台提供的接口技术,最终,调用开放平台的接口完成推送。实现程序如下:

$description =“您已成功预约[”.$pbrq.“][”.$haoyuan_time.“][”.$ksmc.”]

[“.$ysmc.”]第“.$xuhao.”号,预约流水号为:“.$sqxh.” 感谢您对挂号平台的支持! ”;

$access_token = $wxUser[’access_token’];

$qrcode_url=’https://api.weixin.qq.com/cgi-bin/message/custom/

send?access_token=’.$access_token;

$post=$this->api_notice_increment($qrcode_url,$data).

(七)退号模块的实现程序

病人进入预约挂号查询界面,选择想要退号的号源,点击退号确认按钮。系统发起的流程和挂号相似。但退号只需一个参数$sqxh,无需其他信息参数。实现程序如下:

$sqxh = request()->post(’sqxh’);

$id = request()->post(’id’);、

header ( ’Content-Type: text/html; charset=UTF-8’ );

$client = newSoapClient ($this->ws_url);

$parm = array (

’mess’ => $this->ws_token.’@’.$this->ws_name.’@’.$sqxh.’@微信退号’,

’ref_mess’=>’mess’,

).

总之,国家“十四五”规划明确提出要深入开展数字中国建设。在此背景下,智慧医院建设必将得到蓬勃发展。微信的优点及其使用的广泛性,使其在智慧医院建设中发挥重要作用。本研究以三级甲等医院为实施案例,开发了一个基于微信公众号的医院预约挂号系统,并从需求设计、功能设计和流程设计三个维度进行详细认证。该系统具有预约挂号和退号等功能,使用便捷,相信在未来的微信智慧医疗服务中会有较高的推广与应用价值。

猜你喜欢

号源挂号科室
科室层级护理质量控制网的实施与探讨
分析探讨自助挂号系统在门诊管理中的应用效果
门诊统一号源池预约系统设计
基于信息系统对门诊医生排班的管理实践应用
爱紧张的猫大夫
视歧——一位住错科室的患者
我会独自挂号
天津:不动产登记微信预约范围扩大 爽约或被处罚
“合作科室”为何被坏了名声
基于全预约模式的预约号源池系统设计