《基于 Spark 的平替药品智能推荐方法》

2024-08-23 07:44

本文主要是介绍《基于 Spark 的平替药品智能推荐方法》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • 发明目的
    • 具体方案
    • 技术补充
    • 总结陈词

CSDN.gif

写在前面的话

本篇文章将介绍,基于 Kafka + Spark + Redis 等技术,在药品开单的过程中,实现一种智能推荐平替药品的方案。

标题:


发明目的

本专利发明的目的是基于 Kafka + Spark + Redis 等技术,在药品开单的过程中,实现一种智能推荐平替药品的方案。
该方案可以实现海量药品的平替药品推荐值管理,同时可以不断自动校准相关推荐值,进而优化医院的药品管理,更好的服务于医护和患者。

具体方案

本专利是基于 Kafka + Spark + Redis 实现平替药品智能推荐功能,具体技术方案实现如下。

一、前置环境准备
1、部署 Kafka 环境,程序引入 Kafka 相关依赖,并进行相关配置与功能集成,定义“危急值发送”和“危急值反馈”事件,同时配置事件的消息入参格式与XSD校验文本,这两个事件将作为 Kafka 的两个主题 Topic,其中,Kafka 用于充当消息中间件,负责提供生产者和消费者的协作模式;
2、部署 Redis 环境,程序引入 Redis 相关依赖,并进行相关配置与功能集成,Redis 定义若干存储结构,将作为目标药品、平替药品、推荐值等内容的存储,并利用 Sorted Sets 结构,进行统计分析;
3、部署 Spark 环境,程序引入 Spark 相关依赖,并进行相关配置与功能集成,Spark 充当呈上启下的衔接角色,一方面用于消费 Kafka 投递的主题消息,另一方面,通过相关 API,将数据运算后,输出存储到 Redis 当中;
4、药品基础数据准备,根据院内药品字典,维护药品平替关系库,并设置平替初始推荐值;

二、核心服务实现
1、提供对外的消息生产者接口
开发消息中心生产者接口,并对外部系统开放,该接口可以用于“药品扣库存”和“平替药品推荐”这两个场景。
主要逻辑是,针对消息入参进行合理性校验、解析和处理,再通过调用 Kafka API 进行消息发送,利用生产者单例去完成消息发送。

2、利用 Spark 消费 Kafka
利用 Spark 相关的API,添加 Kafka 作为数据来源,并订阅“药品扣库存”和“平替药品推荐”这两个 Topic。
针对拉取到的消息,添加消息消费处理的代码块。

3、利用 Spark 加工流数据
Spark 通过加工引擎从Kafka中消费出数据流,在 Spark Streaming 流式计算引擎中,通过编写不同规则的脚本,对实时的数据链路进行计算,得到药品各项指标数据,保证并发的效率,又可保证数据的准确性,这样才能可以使我们系统保持稳定的进行数据的批处理。
核心内容是从 Redis 提取出目标药品的关联数据和历史数据,同时根据医生的推荐状态进行相应的推荐值运算,最终再更新回Redis中,该流程不影响药品主流程的运行。
根据医生的推荐结果,具体方案包含但不限于如下:
3.1、医生从平替药品列表中,选择某药品A进行平替,说明智能推荐是有效的,程序将加大药品A的推荐指数,并更新目标药品的 Redis 相应存储信息;
3.2、医生拒绝从平替药品列表中使用任何药品平替,继续沿用原来的目标药品,则该目标药品的还没有办法用该药品平替,程序将降低平替药品的推荐指数,并更新目标药品的 Redis 相应存储信息;
3.3、医生新增了额外的平替药品A作为替换,则目标药品的平替药品列表将新增药品A,同时设置初始值和增加推荐指数,并更新目标药品的 Redis 相应存储信息;

三、与用户门户的交互实现
1、药品开单的时候,开单界面再显示平替药品推荐列表,上面会显示药品名称、药品库存、药品推荐指数等关键信息;
2、医生若选择某项平替药品,后端推荐服务将被触发,向Kafka投递相应Topic信息,传递目标药品信息、平替药品信息、以及其他患者本次就诊相关信息等参数;
3、推荐服务消费到Kafka消息后,将从Redis 提取出相关历史数据,根据推荐状态进行运算:

四、推荐值核对扩展模块
1、增加平替药品推荐值定时服务,定期遍历提取出药品相关平替信息,进行推荐值排列更新以及平替药品的关联结构,原则上非实时的大运算都放在定时服务执行;
2、通过实时推荐和定时推荐服务的运作,将产生所有目标药品的完整推荐值清单,提供前端平替药品盘点页面,让药房管理人员,进行人工盘点审核,去除不合理的选项,进一步增加平替药品推荐库的可靠性;

技术补充

1、基于 Kafka + Spark 组合实现,利用了大数据流式引擎技术的优势,针对关联平替药品的推荐值运算,实现高可靠、高效实时、高扩展性的数据加工,最终实现平替药品清单的智能推荐;
2、将消息中心事件驱动机制应用于平替药品推荐值运算场景,从海量的诊疗事件中,为药品推荐相关的关键节点建立消息事件,通过动态订阅的方式为事件指定订阅服务,流程清晰可插拔。

{"全局配置": {"单次推荐缺省添加值" : 5,"单次不推荐缺省扣除值" : 5,"同医生重复推荐模式" : "allow","同医生重复推荐增加值" : 1,"推荐同步计算模式" : "high","推荐药品展示模式" : "common",...
},"药品A的配置": {"药品A的平替药品清单": [{...}],.... /*配置包含全局配置,优先级覆盖全局配置*/
},
}

总结陈词

💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

CSDN_END.gif

这篇关于《基于 Spark 的平替药品智能推荐方法》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098777

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序