《基于 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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

SpringBoot中ResponseEntity的使用方法举例详解

《SpringBoot中ResponseEntity的使用方法举例详解》ResponseEntity是Spring的一个用于表示HTTP响应的全功能对象,它可以包含响应的状态码、头信息及响应体内容,下... 目录一、ResponseEntity概述基本特点:二、ResponseEntity的基本用法1. 创

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自