解放军总医院:我们这样做微信公众号技术方案
中国数字医学季磊 刘敏超
解放军总医院在国内大型医院中较早开展互联网服务,医院官方微信公众号是其中一个典型互联网+医疗健康应用。提供了统一的互联网服务入口,建立了安全可信的网络链路,制定了标准的对外服务接口。经过不断技术积累和业务实践,形成了一套独立的解决方案。整个技术方案由医院自主定制和研发,信息流程制定合理,身份认证方式严谨,互联网用户和医疗数据统一可控。
解放军总医院在2018年初发布官方微信公众号“解放军总医院 301医院”,通过微信这个国内最大的互联网社交渠道,为患者提供就医服务,为工作人员提供办公服务,为医院提供信息发布服务。公众号发布后半年,逐步完成并开放了第一期功能,包括预约挂号、报告查询、门诊缴费、候诊排队等。官方微信公众号在没有外部推广的情况下,关注量日均新增超过3 000,挂号量占比达到30%,迅速成为医院在互联网渠道的第一大业务入口,今后将成为医院开展互联网+医疗健康的重要入口和支撑平台。
此微信公众号后台采用了医院自主设计和研发的对外服务平台(以下简称“系统”),该系统涵盖并扩充了医院原有的网络预约、“银医一卡通”、移动APP等服务模式,建立了互联网安全物理通道,支持多种第三方渠道,统一管控互联网用户。基于此系统构建的对外接口,将成为今后解放军总医院提供互联网医疗信息服务的统一入口。本文介绍该系统的设计思路、组成结构,描述了关键的业务流程。
通信链路
提供互联网服务必须有互联网出口,由于医院的网络安全限制,内部医疗网络不能直接接入外部互联网,如果采用隔离网闸等所谓安全数据交换方式,需搭配防火墙、入侵检测等软硬件设施,要求医院自身担负安全管控责任。该系统采用了一种间接连接的方式,由国有银行提供金融级别的网络保障能力,帮助医院安全接入互联网,见图1。互联网云服务作为互联网入口,负责公众号界面展现、前端业务逻辑,不存储任何患者个人信息和医院业务数据,云端与银行之间搭建专线网络连接,银行与医院之间通过已有的“银医一卡通”专线连接。云服务承担互联网入口防护责任,银行承担资金安全责任并辅助保障医疗业务数据安全,医院本身也建立了业务数据安全防护设施,三个系统之间限定访问地址和端口,在物理通信链路上形成了三级防护。
医院支持多个互联网服务入口,例如支付宝生活号、114等渠道可以自由选择合作银行,不同渠道通过专线接入银行网络,医院系统只与银行系统发生交互。
网络通信链路示意图
交互协议
医院、银行、云端系统之间采用HTTP短连接交互,所有请求均为HTTP POST方式,请求和响应报文内容为JSON格式。报文内容加密,医院和银行、银行和云端使用不同的密钥,不同的云端使用的密钥不同。因此,各个互联网渠道之间、任一云端和医院之间无法直接交互信息。报文内容分为通用字段和业务字段,通用字段包含应用标识、密钥、签名、令牌等,医院为各个互联网渠道统一授权。通过这种授权机制,医院识别出每个互联网应用请求,能够精细化管控各个渠道的业务访问范围。
关键业务
下面介绍系统方案中几个代表性的业务设计理念和实现方式。
用户管理
为了统一管理不同互联网渠道的用户,该系统提供了一套第三方用户认证方案,集中管控和记录用户行为。每个接入的第三方应用由医院颁发唯一标识和密钥,每个第三方用户(如微信用户)须注册并绑定到一个医院用户,通过实名认证(公安部身份验证、人脸识别等技术)后可获得报告、处方查询等高级功能。这套体系使医院系统成为所有接入平台的用户统一认证中心,医院可以直接管理到每一个互联网用户。
患者管理
一个医院用户可绑定多个就诊人,用于代办挂号、缴费业务。按照实名制就医的要求,在添加就诊人过程中区分复诊和初诊患者,复诊患者须通过医院内部信息认证,初诊患者创建档案时必须通过公安部实名认证。通过人脸识别等身份认证技术核定用户为本人后,允许查询检验、处方等隐私信息。
预约挂号
当前阶段,预约挂号仍然是实体医院向互联网提供的基础和首要医疗业务,智能导诊推荐、线上问诊等高级服务都基于或者最终导入到挂号入口。预约挂号流程并不复杂,针对线上挂号的不可预测性(用户行为、通信网络)带来的各种异常情况,本系统采取了以下措施:
①提供业务撤销接口,设定前端和后端支付超时时间,如果用户未在限定时间内完成支付,云端自动调用撤销操作。此外,医院内部设置后台监控程序,定期清理未支付完成的交易。即使出现前端系统恶意抢占号源、通信链路意外中断等情况,仍然能够保证及时释放医院资源。
②前端支付期间,如果因为医院系统故障、业务限制导致挂号失败,系统提供交易状态查询接口,确认业务失败后资金可立即返回用户账户;如果通信链路故障或者医院系统瘫痪,前端无法查询到交易状态,出现长款,通过后续的交易对账流程(下文描述),资金仍可以退还给用户。所以,在各种异常情况下系统能够确保交易资金安全,异常业务可追溯。
③号源和资金的回退不同步:退号和对应的原挂号交易在限定时间范围内发生,退回号源的同时资金可立即返还(交易撤销);如果在限定时间范围外,只退回号源,资金需要经过对账审核后才能返还。
支付和对账
挂号、缴费等业务均涉及资金往来,系统具备一套比较完备的支付和对账体系。微信与医院之间通过银行支付平台进行扣费与退费交易,所有的支付过程分为三个基本步骤:准备交易、支付、交易确认。公众号发出支付业务请求(准备交易),医院锁定业务资源并生成交易号(业务唯一标识),通过支付平台完成支付后,公众号向医院发起支付确认请求(交易确认),并传入订单号(支付唯一标识)。
医院、银行、公众号三方均存储业务交易和支付订单以及对应关系,为对账审核提供了依据。微信支付系统、银行支付系统、医院信息系统分别独立,为保证系统间交易金额的一致性,必须对各方的交易数据进行对账,一方面用于结算确认,另一方面用于在结算不匹配情况时提供交易回溯日志。该系统方案中,对账模块负责医院和银行之间的结算对账,以文件方式通过FTP交换交易信息。交易动作实时发生,交易对账以自然日(会计日期)为单位批量进行。对账分为支付、退费两种流程,由后台系统自动完成。
支付对账:一个自然日结束后,银行将资金转入医院账户,同时将“交易对账文件”上传至医院,文件中包括了该会计日期内的所有扣费交易明细,对账系统解析文件并与医院存储的交易数据进行比对,双方数据一致则自动结账,不一致则记录原因等待人工审核。退费对账:每笔退费交易对应一笔扣费交易,退费交易不是实时发生,而是由医院审核原扣费交易后,将符合条件的交易打包为“批扣文件”,每日定时发送至银行,此文件中包括所有会计日期内的退费交易明细,银行将指定金额退还给微信账户,并将退费结果生成“批扣反馈文件”再返给医院,系统查对无问题后做结账处理。
小结
解放军总医院依靠自身技术力量设计并研发的互联网服务平台,在官方微信公众号上得到了验证。随着医改深入和技术发展,各个医疗机构间互联互通成为必然趋势,通过网络能够使更多的老百姓、军人获得更便捷的医疗服务,这些互联网应用反过来也促进了网络安全改造、医院内部系统整合和业务流程优化,官方公众号的应用已经初步显现了技术和业务互相促进的效果。下一步的工作除了在精准分诊、就诊全流程覆盖等业务延伸,还将探索院内外数据利用、智能化应用等方面,互联网服务能力将得到进一步的体现。