门诊统一号源池预约系统设计
2020-11-09李雅琼王丹凤夏令强
李雅琼,王丹凤,夏令强
(1.海军特色医学中心,上海 200052; 2.颐保医疗科技(上海)有限公司,上海 200052;3.海军特色医学中心信息科,上海 200052)
本文根据医院门诊预约挂号的实际情况,设计一个新的基于军字一号系统结构的门诊统一号源分配系统,从而达到优化就诊流程,提高医疗服务质量,改善预约诊疗效率,提高预约准确性,避免医疗资源浪费的目的,实现现场、电话、微信、诊间预约的统一号源分配。
1 号源池的生成
1.1 号源池的概念号源池,即把全部号源看作一个整体,多种预约挂号渠道共享一个号源集合[1]。现阶段,挂号方式已经不仅仅局限于门诊大厅挂号[2]。就本院而言有网站预约、电话预约、微信预约、诊间预约、医疗APP预约等方式。以往在医院的实际操作中,非窗口预约与窗口挂号使用不同的号源和接口,在某种方式预约人数较少时,容易造成号源的浪费。而将所有号类统一在一个集合中做增减调度,使医疗资源得到合理分配。网站预约、电话预约、微信预约、诊间预约、医疗APP预约挂号等锁号渠道均共享此号源池,患者可自由选择任意时点号源[3](图1)。
如何让不同途径预约挂号的数量——即号源池中号类的数量,在统一的调配下合理分配,如何平衡分配挂号时间及门诊量,如何在基于军字一号的数据结构条件下实现统一号源池预约,是本文探讨的重点。
图1 号源池
1.2 号源数量测算在分配号源数量之前,通过历史数据分析调查清楚医院门诊各科室单位时间的接诊量尤为重要。如果采用固定分配模式分配号源数量,例如规定周一某专家号微信网页APP等预约分配10个、电话预约5个,这样容易导致患者不清楚到院签到就诊的具体时间,并且容易与现场挂号的患者就诊形成拥堵,增加患者单位就诊时间,降低满意度。因此构建一个合理有效的门诊排班号源测算方式,显得尤为重要。
本系统排班模块采用小时为单位计算门诊号数量,这样一方面有助于医生掌握每个时段的工作量,另一方面使患者更加精确到诊时间,避免长时间候诊。以本院口腔科门诊为例,口腔科医务人员较少,单个患者治疗复诊时间长。口腔科某医生经近几年门诊日时间段接诊量统计分析,上午8点至10点之间,每小时最多可以接诊3个患者,10点至11点分配2名患者。根据该分析测算,将数据录入该医生号源数设定。该数据可以根据医生实际情况动态调整,直至达到患者与医疗资源平衡的状态。其他门诊科室同理在调查分析门诊量的基础上确定号源数量。此号源数设定是生成号源数量的基础。
图2是具体门诊号数量设定模块页面,可以根据医院各科室实际测定的数量来调整各时段门诊号的数量,也可以随时勾选启用或者停用的状态。
图2 门诊号数量设定模块
1.3 号源池的生成根据军字一号原有排班数据结构,新系统更加明确每个医生每周每天上午和下午的号别、出班情况和限号数,生成每周号源,每个号源都明确接诊医生及候诊时间,每日凌晨生成后续14天的号源数量。为防止重号问题,系统每一个号源生成一条数据库记录,每一号源都有唯一的编号,此编号按日期+号别+时段+号源数规则排列,例如20190518-门诊内科-SS08-0001表示2019年5月18日门诊内科普通号上午8点时段第一个号。以此规则形成预约挂号的号源池。
2 系统关键技术
2.1 WebService接口调用方式系统采用WebService的接口调用方式[4]。WebService最大的优势一是跨平台,弥补各种平台不兼容的缺陷,二是实现跨语言,使各种语言开发的应用能互相共享数据[5]。WebService接口兼容不同挂号平台,不同门诊预约系统,不同操作系统,不同协议通信,使任何两个应用程序,只要能读写JSON,就能互相通信[6]。接口规范采用HTTP Rest风格访问方式,具体为HTTP请求POST方式,数据包格式采用application/Json格式。该方式自使用以来,接口运行稳定,信息交互流畅。
2.2 号源锁定方式由于本院军字一号信息管理系统采用Oracle 11g数据库,而该版本数据库引入skip locked,通过skip locked语句可以跳过前序语句锁定的数据行,使for update skip locked语句可以查询出号源池中剩下的号源数,并给剩下的数据集进行加锁操作。系统采用此语法来实现号源锁定[7]。该方式经两年来使用未发现死锁等问题。关键语句如下:
--尝试是否可以锁定号源
selectclinic_appoint_serialnofromoutpadm.clinic_for_appointwhereclinic_appoint_status =0
andclinic_appoint_serialno=i.clinic_appoint_serialnoforupdate skip locked;
2.3 军字一号数据库结构的改造为了兼容现有军字一号库结构,本系统只增加部分表,或在现有表上增加若干字段。经测试不会影响现有数据上报。具体如下。
① 新增时段字典clinic_time_desc_dict。原有系统时段定义只有上午、下午、白天、昼夜。新增此表用于描述具体时段,表结构如图3所示。
图3 时段字典
② 新增表clinic_for_appoint。此表定义每个号类的具体时段分配的号源数,存储各个号类各个时段按照时段分配表生成的号源记录。由时间、号类、HIS时段、号源时段、号源编码、号源状态构成,此表的号源数与现有HIS系统中的clinic_for_regist表的号源数联动,表的数据由自编的号源管理软件自动生成。表结构如图4所示。
图4 号源
③ 新增表pat_master_index_for_appoint。为了扩大可预约人群范围,预约不仅限于已就诊过的患者,同时也支持未就诊过的患者,因此新增临时卡患者信息索引表pat_master_index_for_appoint。注册时判断患者是否已在本院就诊过,如果是,则不写此表,如果否,则为此患者生成一个唯一的临时卡号。表结构如图5所示。
图5 临时就诊卡信息
④ 新增表clinic_appoints_new。记录患者预约详细信息,为了能准确地统计出预约就诊率及付费率,此表的相关信息与最后实际挂号费用结算时的信息也有所关联,增加发票号、就诊时间及就诊号字段,用于和系统中clinic_master表相关联。表结构如图6所示。
图6 预约记录
3 系统基本架构及流程
3.1 预约挂号流程本院采取实名制挂号方式,身份证号码作为唯一凭证。在注册账号时,系统会根据患者身份证号检测是否在本院就诊过,如果有则取其原卡号作为就诊卡号,如果未就诊过,系统将自动分配一个带有临时标识的就诊卡号给患者,并发送手机短信至患者手机,用于提醒,如果是微信预约,同时也发送微信提醒消息。系统预约挂号流程图如图7所示。
预约患者就诊当天到院需要持身份证至导医台签到。系统核对成功之后,患者直接去预约诊室就诊,相关叫号规则会根据时段动态分配。对于临时就诊号患者,则在签到时免费分配实体诊卡号。
对于预约时段未就诊患者,号源采取“不释放原则”。对于患者爽约行为,采取将身份信息插入挂号黑名单的方式,对于3次及以上爽约患者则限制为现场挂号[8]。
图7 预约挂号流程
3.2 退号流程患者预约成功后由于各种原因需要退号,系统判断退号当前时间是否超过预约时段,是则直接退费,否则回退号源,重新进入号源池(图8)。
图8 退号流程
3.3 加号流程图在就医过程中,对于慢性病或者需要随访复查的患者,往往需要在诊间预约下次就诊时间,为减少患者多次排队挂号的麻烦,在门诊医生站设立加号模块,所加“号”也归入号源池进行统一预约管理,系统限制只有患者主诊医生有权操作。
4 小 结
基于军字一号的门诊统一号源池预约系统已在本院使用近两年,系统高效稳定。经统计,预约就诊率为85%,特殊科室达到100%,挂号费付费率60%。随着挂号方式的不断增多,统一号源池的设定将会成为门诊挂号预约系统设计不可缺少的一部分。系统将所有挂号纳入预约管理范畴,在数据库结构设计、系统功能设计和数据流程设计中统一设计,保证全部挂号渠道数据完整性[9]。对于必须使用总部下发军字一号的军队医院来说,在军字一号数据库基础上做修改解决统一号源的需求,显得尤为紧迫。本系统将在今后的实践运行过程中,不断进行完善,更好地服务于部队,更好地协调有限的医疗资源。