《基于 LatentFactor + Redis + ES 实现动态药房分配方法》

news2024/11/17 2:41:48

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • 背景技术
    • 发明目的
    • 具体方案
      • 一、动态药房分配前置准备
      • 二、动态药房分配实现逻辑
      • 三、动态药房分配流程
    • LatentFactor 矩阵因子推导示例
    • 总结陈词


写在前面的话

本篇文章分享一下博主所在公司的动态药房分配的实现方案。
主要是基于 LatentFactor + Redis + ES 实现,由于涉及公司代码要求,内容主要以方案介绍为主,有需要探讨的可以留言。
好,让我们开始。


背景技术

医院药房是集管理、技术、经营、服务等于一体的综合性科室,是医院的重要职能部门之一,其管理影响着医院的药品管理水平和服务质量。随着医院管理模式不断改革和优化,在大规模的医院,药房逐渐趋于多元化管理,不再是以前的单点综合大药房。
门诊和住院往往会根据实际需要,配套建设不同的发药药房,不同的门诊或住院科室开药可以方便患者就近取药。同个科室在不同时间或工作日,都有可能动态配套不同发药药房。
传统模式下,医院采取维护药房配置清单,存储在关系型数据库的二维表中,管理不同维度下药房的分配情况。当医生开单时候将会访问药房配置表,动态获取符合要求的药房,并提示患者前往取药。
由于全院医生的开单操作十分频繁,判定分配药房这一逻辑,需要先从关系表加载药房配置表获取数据后,再进行大量的计算规则判断,在高并发情况下,整体接口响应效率较低,严重影响医生的开药效率和患者就医体验。同时,药房配置规则仅仅考虑单维度情况下的规则分配,因此,最终得出的药房结果,可能存在不是最优药房的情况。


发明目的

本方案发明的目的是基于ES 和 Redis 的相关技术领域,实现一种动态药房分配模式,最终形成一种高效的、更具科学性的的药房管理方法。
该方案具备如下特点:
1、支持维护多维度药房分配规则,包含但不限于科室、时间段、距离、药品库存等,改变了传统药房分配模式采用的单一因素简单验证方式,使得出的药房结果更加合理化和人性化;
2、利用 ES 和 Redis 等技术带来的快速查询机制,分别存储药房规则配置和药房分配结果,改变了传统药房分配模式采用关系型数据库的单独二维配置表方式带来的性能瓶颈,为高频开单操作下的药房分配逻辑的性能带来显著提升;
3、支持以定时策略对预置规则进行不断校准,排除不合理的因素,使规则制定更具备智能化和合理性等特性;


具体方案

本方案是一种基于 LatentFactor + Redis + ES 实现的动态药房分配方法,具体技术方案实现如下。

一、动态药房分配前置准备

1、部署 ES 环境,程序引入 ES 相关依赖,并进行相关配置与功能集成,ES 定义不同维度下的药房分配规则,建立相关结构索引;
2、部署 Redis 环境,程序引入 Redis 相关依赖,并进行相关配置与功能集成,Redis 定义药房规则提取的存储结构;
3、预先维护药房分配规则,包含但不限于如下:不同时间段下药房分配规则、不同科室下的默认药房分配规则、药房与药品库存的对照规则,医院科室与药房距离分布规则等等;
4、将上述维护好的规则,进行加工处理,同步分解各科室所有时间段规则数据,自动往ES的各个索引,写入动态药房基表数据。


二、动态药房分配实现逻辑

若采用动态药房分配模式,当产生药品开单时,其具体流程如下:
1、医生在医生工作站进行下医嘱或处方等操作时,相应的后端HIS服务将接收当前科室、时间、药品等信息,从ES的不同规则索引中,快速查找并命中数据,提取出相应的药房初始设定的规则;
2、程序将提取到的规则,按科室、时间段、各项药品库存、距离等不同策略,进行药房分配运算,得出当前入参情况下的最优药房,具体实现步骤如下;
a、根据入参传递的开单科室,从ES中提取出该科室对应的药房列表,列表中的每一个药房配置项,都配置了推荐因子,程序将药房列表根据推荐因子从大到小排列,暂存为临时变量A,利用LatentFactor潜在因子算法的矩阵编排,得到矩阵清单,“药房/科室 - 潜在因子矩阵”;
b、根据入参传递的开单时间段,从ES中提取出该时间段对应的药房列表,列表中的每一个药房配置项,都配置了时间段所属区段类型,包含但不限于班内班外、工作日和非工作日、节假日和特殊时段等元素,程序将结合当前时间段的正确定位,计算出符合要求的药房交集,并同科室步骤,按推荐因子排序,暂存为临时变量B,并得到相应的“药房/时间段 - 潜在因子矩阵”;
c、根据入参传递的药品信息,从ES中提取出所有药品对应的有存放药品的药房列表,针对列表数据取交集,即获得同时满足所有开单药品需要的药房信息,同时结合药品库存表,实时计算出库存最充足的药房,并同科室步骤,进行排序后,暂存为临时变量C,并得到相应的“药房/药品 - 潜在因子矩阵”;
d、根据入参传递的开单科室的楼层位置,利用定位服务Api,计算出和院内所有药房的实际距离,按距离大小进行排列,距离小的优先,排列后暂存为临时变量D,并得到相应的“药房/位置 - 潜在因子矩阵”;
e、针对上述规则计算得到的潜在矩阵列表,利用LatentFactor算法的稀疏矩阵求和,分别计算四个维度的用户期望药房评分矩阵R1-R4,最终汇总形成“用户/药房的总评分矩阵”,最终得到推荐因子从大到小排列的药房列表,逐个进行再次遍历核验,如果其中一个药房满足需求,则选定为最终分配药房,退出循环;
3、将上述规则计算运算得到的药房分配结果,以Key-Value结构存储到Redis中,其Key为入参传入的药品、科室、当前时间等信息,Value为Object类型,其包含药房分配结果、计算因子、计算耗时、推荐指数、有效利用次数等属性;当下次产生开单操作时,会优先从Redis中尝试查找结果数据。若匹配后,将根据相关Value属性,判定是否采用该结果,若采用则不需要再重复上述的ES提取以及规则运算逻辑。
4、同时将上述计算得到的药房分配结果,存储到开单的相关数据表中,同时返回给前端,流程结束,患者可以根据相应药房信息,前往药房取药;
5、动态药房分配系统会定期进行 ES 和 Redis 存储数据进行排查,当从中发现利用率较低、或计算因子较大、或存在互斥冲突的分配规则,及时调整相应的规则数据;


三、动态药房分配流程

image.png


LatentFactor 矩阵因子推导示例

背景:以三个矩阵,入参是科室A、早上、药品A、位置A为例。

image.png
image.png


总结陈词

上文介绍了博主所在公司的《基于 LatentFactor + Redis + ES 实现动态药房分配方法》方案。
💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1924150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从数据仓库到数据湖(下):热门的数据湖开源框架

文章目录 一、前言二、Delta Lake三、Apache Hudi四、Apache Iceberg五、Apache Paimon六、对比七、笔者观点八、总结九、参考资料 一、前言 在上一篇从数据仓库到数据湖(上):数据湖导论文章中,我们简单讲述了数据湖的起源、使用原因及其本质。本篇文章…

通义千问Qwen-VL-Chat大模型本地训练(二)

目录 前言 环境准备 软件安装 数据准备 模型训练 模型名称修改 数据集修改 模型参数修改 数据读取编码修改 output_dir修改 模型调用 验证 小结 前言 人工智能大模型是一种能够利用大数据和神经网络来模拟人类思维和创造力的人工智能算法。它利用海量的数据和深度学习技…

高等数学第一讲:函数极限与连续

函数极限与连续 文章目录 函数极限与连续1.函数概念与特性1.1 函数定义 1.2 几种重要的基本函数类型1.2.1 反函数1.2.2 复合函数1.2.3 隐函数 1.3 函数的基本特性1.3.1 有界性1.3.2 单调性1.3.3 奇偶性1.3.4 周期性 2. 函数的极限2.1函数的极限的定义2.2 函数的极限的性质2.3 无…

react-router实现路由拦截,useLocation,useNavigate钩子

路由拦截 react-router中没有直接给出拦截路由的方法,需要手动的去监听路由的变化来拦截路由 路由拦截的要点: 能够识别出目标路由和原始路由(区分跳转前和跳转后)能够在跳转时(跳转前或者跳转后)执行一些…

MySql性能调优04-[MySql事务与锁机制原理]

MySql事务与锁机制原理 从undo与redo日志,理解事务底层ACID底层原理事务四大隔离级别底层实现原理 从undo与redo日志,理解事务底层ACID底层原理 事务特性原子性:当前事务操作要么同时成功,要么同时失败。原子性由undo log日志来保…

银河麒麟高级服务器操作系统 V10 SP3 2403

系统简介 银河麒麟高级服务器操作系统V10是一款为企业级关键业务设计的新一代自主服务器操作系统,它满足虚拟化、云计算、大数据等时代需求,具备高可靠性、安全性、性能和扩展性。该系统基于CMMI5级标准开发,支持多种国产处理器平台&#xf…

【邀请函】庭田科技邀您第五届中国国际复合材料科技大会

第五届中国国际复合材料科技大会暨第七届国际复合材料产业创新成果技术展示(ICIE7-新疆)将于7月25-27日在新疆乌鲁木齐-国际会展中心举行。上海庭田信息科技有限公司将携多款仿真模拟软件亮相本次大会,诚挚欢迎各位到场咨询了解! …

实战演练-2021年电赛国一之三端口DC-DC变换器

文章目录 前言一、题目二、题目分析1、题目要求解析2、题目方案选定方案一(使用buck-boost电路+双向DC-DC电路(前端))方案二(使用同步整流Boost升压电路+双向DC-DC电路(前端))方案三(使用同步整流Boost升压…

基于随机森林与XGBoost模型的机器故障关键因素分析

1.项目背景 在现代工业环境中,机器故障预测已成为提升生产效率和减少停机时间的关键因素,准确预测机器故障能够帮助企业制定预防性维护计划,降低维护成本,提高设备的使用寿命和生产线的连续性。通过深入分析影响机器故障的主要因素,可以帮助企业更好地理解机器运行状态,…

MySQL的插入(DML)

1.给指定字段添加数据 这个就是,想插入所对应的字段,就插入所对应的数值。先把字段列出来,不一定是全部的字段, 然后插入想要的值,注意,只能插入一行。 INSERT INTO 表名 (字段1,字段2,.....) VALUES(值…

车流量统计YOLOV8+DEEPSORT

车流量统计,YOLOV8NANODEEPSORT资源-CSDN文库 车流量统计YOLOV8DEEPSORT,目前支持PYTHON,C开发 PYTHON版本,需要YOLOV8,依赖PYTORCH C版本,只需要OPENCV

无人机光电吊舱技术详解

无人机光电吊舱是一种集成了多种光电探测设备的载荷系统,安装在无人机下方或侧面,用于实现无人机的目标搜索、识别、跟踪和定位等功能。光电吊舱系统通常由稳定平台、光学成像设备、红外成像设备、激光测距设备、惯性导航设备等组成,能够在各…

【C++深度探索】全面解析多态性机制(二)

🔥 个人主页:大耳朵土土垚 🔥 所属专栏:C从入门至进阶 这里将会不定期更新有关C/C的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 前言 我…

web零碎知识

在后端想要发送一个JSON对象可以使用Gson // 使用 Gson 将对象转换为 JSON 字符串Gson gson new Gson();String json gson.toJson(user); 就会把一个对象转化为一个JSON字符串, // 设置响应内容类型为 JSONresponse.setContentType("application/json&quo…

卷积神经网络-猫狗识别实战

课程来自bilibiliMomodel平台 全长只有两个小时,理论部分讲得很粗糙 1 人的视觉和计算机视觉 人的大脑:神经元细胞,轴突发送信号,树突接收信号,互相连接,连接的强度和状态会随着新的经历刺激而变化。 用…

尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程

Vue3 编码规范 创建vue3工程 基于vite创建 快速上手 | Vue.js (vuejs.org) npm create vuelatest 在nodejs环境下运行进行创建 按提示进行创建 用vscode打开项目 安装依赖 源文件有src 内有main.ts App.vue 简单分析 编写src vue2语法在三中适用 vue2中的date metho…

C++基础知识:冒泡排序(利用C++实现冒泡排序)

1.冒泡排序的作用: 最常用也是简单的排序算法,对数组内元素进行排序 2.冒泡排序的具体步骤: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值…

关于思维和智能体模型的思考(2)

在关于思维和智能体模型的思考(1)一文中,我们提出了思维和Agent 模型,提出了使用确定连接的智能体构建的思维模型。本文我们继续讨论思维与智能体,重点探讨另一种智能体-自主智能体,并且提出了自主智能体的…

《黑马点评》Redis高并发项目实战笔记【完结】P1~P72

花费4周敲完《黑马点评》的课程,做了详细的笔记,感觉受益匪浅,一直一直都在不停成长着。 突然想起《苍穹外卖》系列至今已收获200个赞,500个收藏,好评颇多,私信我的人不计其数,在此谢谢大家。 …

从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)

目录 文章目录 目录摘要1.将PX4源码上传至腾讯工蜂2.从腾讯工蜂克隆源码到本地ubuntu3.如何查看自己源码的版本信息 摘要 本节主要记录从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)及如何查看PX4的固件版本信息,欢迎批评指正! PX4源码版本V1.…