《基于Redis 实现的虚拟药房管理方法》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍
文章目录
- 写在前面的话
- 背景技术
- 发明目的
- 具体方案
- 总结陈词
写在前面的话
本篇文章分享一下博主所在公司的危急值处理措施推荐和范围校准的实现方案。
主要是基于 Redis 等相关技能实现,由于涉及安全问题,内容以方案介绍为主,有需要探讨的可以留言。
好,让我们开始。
背景技术
在医疗信息系统中,药房作为一个重要的职能部门,因其多种多样的管理模式,出现了诸多挑战。药房做为药品分销的主体外,还拥有其特殊的医疗属性,涉及了药品调拨、摆药、发药、退药等业务场景。
在传统药房系统中,往往仅依靠院内药房系统独立运作,存在如下问题:
1、管理模式单一,没办法支持库存由第三方机构托管的方式;
2、药品仅存储实际库存属性,所有药品库存交互都只能采用同步方式,强依赖于该属性,若库存不足,则所有逻辑都将受限;
库存托管的情况下,容易引发药品库存不准确,进而可能导致开不出药品,或者开单后患者无法拿到药品的情况,库存环节没办法形成闭环;
发明目的
本专利发明的目的是基于Redis 等相关技术,实现一种虚拟药房模式,最终形成一种高效的、易扩展的药房管理方法。
该方案具备如下特点:
1、支持药品允许负库存,不受限于零库存;
2、支持库存委托管理方式,不再局限于院内独立管理药房;
3、支持根据消耗量自动向供应商发起进货申请,入账后自动校准库存;
4、支持以特定业务对库存的实时校准,防止异常导致库存不准;
5、支持药房系统与HIS系统解耦,采用异步任务委派模式交互;
具体方案
本方案是一种基于Redis 的发布订阅模式和缓存过期监听等技术,实现的虚拟药房管理方法,具体技术方案实现如下。
**一、**虚拟药房前置准备
1、设置药房的库存管理方式,可以是虚拟库存,默认非虚拟库存模式。
2、维护药品供应商列表,维护可供药品关联的供应商清单等信息,同时,支持配置药品及其供应商的定制规则属性;
3、院内外全局进货模式管理,维护属性清单,包含但不限于进货方式、进货批次最大量、进货频率等;
4、部署 Redis 环境,程序引入 Redis 相关依赖,并进行相关配置与功能集成,Redis 定义若干存储结构,后续将利用的Redis的,包含但不限于内存存储、发布订阅模式、分布式锁、缓存过期监听等,虚拟药房系统需要订阅Redis的药品扣库存监听通道。
二、虚拟药房扣库存逻辑
若采用虚拟库存模式,当产生药品开单时,其具体流程如下:
1、医生在医生工作站进行下医嘱或处方等操作时,相应的后端服务可以直接完成正常开单逻辑,无需考虑院内药品的实际库存情况。仅需要向Redis的药品扣库存监听通道发布一条药品A扣库存的消息,然后可以预设扣库存成功标志位,后端服务可以直接结束,医生工作站前端提示下医嘱或处方成功,医生可以继续进行其他业务操作;
2、当药房需要进行发药业务时,只需要根据上一步的预设标志位判断,成功则直接将虚拟库存属性扣至负数,不设置下限,但需要针对该操作,添加Redis分布式锁,防止高并发库存扣除异常。即药房可以直接正常进行发药,不需要考虑库存情况;
3、虚拟药房系统由于订阅了Redis的药品扣库存监听通道,当收到扣库存消息后,立即做出响应,先从数据库中寻找有效的药品供货商列表,再从中根据挑选出供货因子最大的供货商,并读取供应商相关属性配置,同时,产生一个具备过期时间的Redis缓存Key,代表某药品的产生了相应的供货任务;
4、供应商服务拥有不断轮询的自主线程,供货按批次进行,首先会先判断供货量是否达到批次运货量,若未达到则进行本地储备阶段,若达到则直接调用虚拟药房服务,完成实际供货操作;
5、虚拟药房服务在监听到药品入库后,会优先填补负数的库存到正数,执行供货操作成功后,将删除前面设置的任务缓存Key,结束供货任务;若执行失败,由于设置了Redis的缓存Key过期监听器,将继续递归分派任务,直到处理完毕为止,其本质是利用Redis缓存的过期Key监听机制,为其产生一个延迟队列模式的药品供货任务,保障任务的执行,同时主流程不受影响;
此外,虚拟药房系统会定期进行药品出入库核查,当发现异常时候,补缺补漏;
虚拟药房开单流程:
总结陈词
上文介绍了博主所在公司的《基于Redis 实现的虚拟药房管理方法》方案。
💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。