龙源期刊网 http://www.qikan.com.cn
基于微信公众平台的医院预约挂号服务系统实现
作者:于浩佳 陈波
来源:《软件》2015年第10期
摘要:为方便患者挂号就医并缓解医院排队挂号的拥挤问题,设计并实现了基于微信平台的医院信息动态查询与挂号系统。介绍了基于微信平台的网页开发,基于PHP实现的动态网页生成和网页信息抓取和以Web代理为核心的网页移植技术。建立了一个微信公众号开放给患者进行方便的查询和挂号等操作,同时考虑到移动端设备的多样性将系统设计成响应式布局。该服务系统具有灵活性高、适应性强、时效性强等特点。 关键词:微信平台;Web代理;挂号预约;动态网页
中图分类号:TP319 文献标识码:A DOI: 10.3969/j.issn.1003-6970.2015.10.025 引言
手机即时通讯应用“微信”给我们带来了一种全新的“微生活”方式。2012年8月推出的微信公众平台,由于提供多媒体信息大规模推送、定向推送(可按性别、地区、分组等指标定向推送)、一对一互动、多样化开发和智能回复等功能,成为继微博之后又一重要的运营平台。当前,微信公众平台有3万认证账号,其中超过七成的账号为企业账号,主要服务于媒体、营销、客服、公共服务等应用。目前国内也有许多学者和企业在进行微信方面的研究和开发。 随着移动设备的普及,近年来移动医疗产业也日渐发达,市场规模已从2012年的不到2亿元发展到了如今的28亿元,甚至有望在2017年突破125亿元,移动医疗具有广阔的发展前景。基于微信实现移动医疗服务,能够拓展微信平台应用领域,使其服务大众、便利大众。 南京12320卫生网2012年开始提供网上在线预约挂号服务,本文工作是基于微信官方为公众号提供的相关接口和服务,设计与开发面向移动端用户的医院预约挂号系统,使用户可以在移动端通过关注微信号就能便捷的实现预约挂号等操作,并通过微信公众号的群发功能为用户推送最新的可预约专家信息以及第一手健康咨询。
接下来本文首先介绍预约挂号服务与功能设计,然后再详细介绍各个功能模块实现的技术细节。 1 系统设计
我们首先进行了调研分析,确定用户挂号流程。南京卫生网站www.nj12320.org提供的挂号方式比较灵活,用户可以从网站上医院、科室、医生等任一浏览位置开始选择挂号。但这种
龙源期刊网 http://www.qikan.com.cn
方式并不便捷,而且也不符合移动端用户的操作习惯,因此我们决定采用一种适用于移动端的固定挂号流程:让用户首先选择医院,然后选择该医院的具体科室,再选择医生,最后再选择看病具体时间,用户在最终决定选择预约挂号后才需要登录完成整个预约挂号操作。 由此确定系统功能模块如图1所示。在公众号中有两个菜单选项,预约挂号和用户管理。在预约挂号功能下,共有6个核心功能模块。索引模块提供不同页面的索引,作为主页;选择医院、科室、医生模块分别是进行对应项的选择,全部选择完毕后进入登录模块进行登录,登录成功后确认预约,完成全部操作。在用户管理菜单中,可以查询预约结果,或者取消已完成的预约,其中具体取消规则要按照卫生网相关协议进行。
如图2所示,预约挂号服务系统由4部分构成,分别是用户微信客户端、微信公众平台服务器、南京卫生网服务器和预约挂号服务系统所在服务器。4部分之间按照箭头关系分别进行消息交互。用户发出的信息请求部分交由微信官方服务器处理,例如用户发送的文字信息会通过微信官方服务器传输,经过上传部署好的本服务系统代码进行处理进行相应的自动回复;还有部分信息直接交由本预约服务系统处理,例如用户选择预约服务菜单发出的请求。本服务系统提供给用户的所有信息都来自于南京12320卫生网,从而确保用户获取信息的实时性。另外,整个预约挂号服务过程中的消息交互对用户都是透明的。
本服务系统各模块之间的工作流程如图3所示。用户通过点击菜单向微信服务器发起访问请求,微信服务器把请求转交给系统服务器,系统服务器把请求网页返回给用户,用户在网页上进行相关查询操作,系统服务器则动态响应这些操作,从卫生网服务器请求用户所需信息并予以返回。最后,用户确认预约请求,卫生网服务器接受到请求后如预约成功,则直接向用户手机发送短信进行通知。 2 系统开发 2.1 系统开发环境 (1)硬件环境
服务器端:英特尔酷睿I5处理器,WIN7专业版64位,4G内存,500G硬盘。 客户端设备:装有微信5.0以上版本的智能手机。 (2)软件环境
服务器端:装有IIS的Windows操作系统;装有PHP5。 客户端:装有微信5.0以上版本。 2.2 微信公众平台对用户文字消息的处理
龙源期刊网 http://www.qikan.com.cn
为了把挂号系统移植到微信平台,首先要注册一个微信公众号。微信提供了服务号、订阅号、企业号和测试号给用户使用,其中测试号可以免费试用所有的接口和功能,本文为了叙述清晰和开发过程重现,选择注册微信测试号。注册完成后会需要填写URL和Token,验证开发者是否拥有自己的服务器资源,并进行Token的验证,此处填写的URL需要正确响应微信发送的Token验证。具体操作是从微信官方网站下载wx_sample.php文件,用Dreamweaver打开编辑,将代码中的define(”TOKEN”,”weixin”);中的”weixm”改成白定义Token值,要注意在“修改”一“页面设置”中将代码的编码改为UTF-8,勾选“不包括BOM”,否则Token无法验证。代码修改完成后将其部署到SAE,把代码部署位置的路径填写到URL处,并点击进行验证。
完成上述操作后,首先编写代码实现基本文字消息的处理。接口配置已经完成,对刚才使用的验证代码进行修改,来实现一些简单的消息回复功能。
将“$wechatObj->valid();改成$wechatObj->responseMsg();”然后对responseMsg()函数进行修改。在“$msgType=”text”;”后添加一个switch语句,通过对$keyword的匹配来进行关键词回复。例如: case”你好”;
$contentStr=”你好!”; break:
除此之外,微信公众号还能自动回复类型丰富的消息类型,例如:图片消息、语音消息、视频消息、音乐消息、图文消息等等。微信的官方文档为不同的消息类型提供了对应格式,按照官方格式在代码中修改$textTpl变量即可回复对应消息类型。 2.3 用户端菜单设计与实现
除了各种类型消息的处理,本系统要求公众号必须拥有白定义菜单来为用户提供进入系统的方便的入口。
根据微信官方提供的文档,目前自定义菜单最多包括三个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出部分将以”……”代替。创建白定义菜单后,微信客户端将延迟一段时间后才展现出来。用户创建自定义菜单时,用注册帐号时系统分配的appID和appsecret同微信服务器以POST方式发送一个HTTP请求,从而获得一个ACCESS—TOKEN值,获得这个值后就能根据官方文档提供的创建自定义菜单的格式创建属于自己的白定义菜单了。发起第一次请求的代码如下: $ch=curl_init();