《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

news2024/11/13 22:35:22

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

文章目录

  • 写在前面的话
    • 背景技术
    • 发明目的
    • 具体方案
      • 一、前置环境准备
      • 二、核心服务实现
      • 三、与用户门户的交互实现
      • 四、开发危急值分析模块
      • 五、开发危急值医务管理模块
    • 危急值发送流程
    • **危急值处理流程**
    • 方案特征
    • 总结陈词


写在前面的话

本篇文章分享一下博主所在公司的危急值处理措施推荐和范围校准的实现方案。
主要是基于 Kafka + Flink + Elasticsearch 实现,由于涉及安全问题,内容以方案介绍为主,有需要探讨的可以留言。
好,让我们开始。


背景技术

危急值是指当这种检验、检查结果出现时,表明患者可能正处于生命危险的边缘状态,临床医生需要及时得到检验、检查信息,迅速给予患者有效的干预措施或治疗,就可能挽救患者生命。危急值信息可供临床医生对生命处于危险边缘状态患者采取及时、有效的治疗,避免病人因意外发生,出现严重后果,失去最佳抢救机会。
危急值报告制度的制定与实施,能有效增强医技工作人员的主动性和责任心,提高医技工作人员的理论水平,增强医技人员主动参与临床诊断的服务意识,促进临床、医技科室之间的有效沟通与合作。危急值管理是医院管理的重要组成部分,危急值的快速甄别、确认、发布、及时接收以及对该流程监控、分析等是系统信息化管理的目标与方向。
现目前大多危急值管理系统存在如下问题:
1、各类危急值检验项目按照固定的参考范围进行危急值判定,不支持动态调整项目范围的上限和下限,往往只是简单粗暴的进行数值比对,缺乏科学的范围判定和校准方式,造成了不符合临床实际的“假”危急值频繁通知,对临床医护人员工作产生较大影响;
2、医护人员针对危急值做出的干预措施,只是单纯的填写措施并反馈医技部门,没有与病程和护理记录产生交互,处理过程也没有形成记忆和管理,针对相同的情形的工作,往往需要花费重复工作和时间,也容易产生偏差;
3、危急值涉及环节较广,没有统一的流程化管理,容易产生环节缺失,未形成完整闭环,同时,整个过程缺少环节监控、日志跟踪、和异常处理方案,也缺少全院统计汇总页面,无法提供整体改善医院危急值的方案;


发明目的

本专利发明的目的是基于 Kafka + Flink + Elasticsearch 等技术,在危急值全流程管理过程中,实现一种科学校准危急值判定范围、以及对危急值处理措施进行智能推荐的方案,以解决现目前危急值流程管理中存在的诸如危急值判定标准不准确、处理措施数据未利用、全院危急值优化机制不完善等问题,进而优化危急值流程、提升危急值处理效率、形成完整闭环追踪,最终建设完善的危急值全流程管理系统。
1、建设“假”危急值处理方案,防止提醒过于频繁,不断校准危急值项目的合理范围;
2、针对日常危急值的处理措施进行存储,形成记忆,在危急值到来时,可以给予医护人员多样化提示,充当填写助手的作用;
3、基于消息中心事件驱动机制,建设完整危急值处理流程,尽可能包含临床业务场景的各个环节,由数据中心负责完整危急值信息存储,提供闭环展示和数据查询接口;收集各科室的危急值闭环数据,生成定向指标数据,方便定期追踪、分析、评价危急值指标,督导各科室发现并完善自身危急值处理,提升全院危急值处理效率;


具体方案

本方案是基于 Kafka + Flink + Elasticsearch 实现危急值范围校准和措施推荐,具体技术方案实现如下。

一、前置环境准备

1、部署 Kafka 环境,程序引入 Kafka 相关依赖,并进行相关配置与功能集成,定义“危急值发送”和“危急值反馈”事件,同时配置事件的消息入参格式与XSD校验文本,这两个事件将作为 Kafka 的两个主题 Topic,其中,Kafka 用于充当消息中间件,负责提供生产者和消费者的协作模式;
2、部署 Elasticsearch 环境,程序引入 Elasticsearch 相关依赖,并进行相关配置与功能集成,Elasticsearch 定义若干索引结构,将作为危急值原始数据、关联数据、运算结果等内容的存储,并利用 Elasticsearch 特性,进行统计分析;
3、部署 Flink 环境,程序引入 Flink 相关依赖,并进行相关配置与功能集成,Flink 充当呈上启下的衔接角色,一方面用于消费 Kafka 投递的主题消息,另一方面,通过相关 API,将数据运算后,输出存储到 Elasticsearch 当中;

二、核心服务实现

1、提供对外的消息生产者接口
开发消息中心生产者接口,并对外部系统开放,该接口可以用于“危急值发送”和“危急值反馈”这两个场景。
主要逻辑是,针对消息入参进行合理性校验、解析和处理,再通过调用 Kafka API 进行消息发送,利用生产者单例去完成消息发送。
发送的主题 Topic 为“危急值发送”或“危急值反馈”。

2、利用 Flink 消费 Kafka
利用 Flink 的** **Flink Source API,添加 Kafka 作为数据来源,并订阅“危急值发送”和“危急值反馈”这两个 Topic。
针对拉取到的消息,添加消息消费处理的代码块。

3、利用 Flink 加工流数据
3.1、危急值发送流程
针对拉取到的 Kafka 的“危急值发送”Topic 主题数据,进行相应加工处理。
1)利用正则表达式提取消息入参中危急值核心属性内容,包含但不限于危急值ID、报告ID、患者ID、就诊ID等,识别出各关键属性的code和value,并组装为 Map 结构;
2)利用上述关键信息,从 Oracle 中提取危急值业务关联的报告信息、患者信息、就诊信息,以及上述内容的历史信息,从 Elasticsearch 中提取危急值区间分布信息、危急值处理措施分布等信息,将这些内容组装,用于辅助分析;
3)利用 Flink Transform API 对 Map 数据进行综合加工处理,得到相关结果;
4)危急值发送过程中,关于范围校准和措施推荐的相关运算如下:
a、获取该项目危急值的基本信息,判断该危急值是否符合当前危急值的上限和下限;
b、获取该项目危急值的区间分布情况,判断该危急值所属的区间分布,做出更新,并将结果组装;
c、获取该项目危急值的历史处理措施分布情况,并通过运算得出,按不同维度的不同措施出现的频次排列,再将结果组装;
d、获取该项目危急值历史出现时,其他同样异常的项目,并通过运算得出,这些项目和当前危急值项目之间存在的联动关系;
e、获取该项目危急值对应项目的历史值,做出趋势分析,并将结果组装;
f、获取该项目危急值的其他关联和扩展信息,用于辅助分析,并将结果组装;
g、将原始危急值数据存入Elasticsearch,再将第3步的所有运算结果进行组装,进入下一环节,充当填写助手的作用。

3.2、危急值处理流程
针对拉取到的 Kafka 的“危急值处理”Topic 主题数据,进行相应加工处理。
1)利用正则表达式提取消息入参中危急值处理的属性内容,包含但不限于危急值ID、处理方式、处理措施、处理人等,识别出各关键属性的code和value,并组装为 Map 结构;
2)同危急值发送,利用上述关键信息,从 Oracle 和 Elasticsearch 中提取关联信息,用于辅助分析
3)利用 Flink Transform API 对 Map 数据进行综合加工处理,得到相关结果;
4)危急值处理过程中,关于范围校准和措施推荐的相关运算如下:
a、若医生针对该危急值给予了正常的干预措施,则代表危急值触发范围的可信度增加,首先更新该项目危急值出现的频次记录信息;然后,增加该项目组值此时可以更新危急值范围区间数据,代表某项目出现危急值的范围区间更加精准,本区间如果本次危急值属于原有出现危急值的区间内,则增加区间出现次数,若本次危急值超出原有出现危急值的区间,则新增区间数据,扩大区间范围,并进行次数记录;最后,将医生的处理措施和危急值数值,关联存储到措施记忆索引中,该索引记录包含但不限于如下内容:不同项目所使用的处理措施,属于哪个区间,历史触发数值包含哪些,关联患者的当前和历史的报告、就诊、危急值等信息。
b、若医生针对该危急值给予了异常处理,例如点击了反馈疑问按钮,则代表危急值触发范围的可信度降低,首先插入危急值关键信息到反馈疑问索引中;然后,往危急值范围区间索引中也插入相关异常数据;最后,也将更新处理措施索引,反馈疑问也属于处理措施的一个环节;这些疑问内容都将在提供相应统计分析页面,人工进行最后裁定,范围是否变更;

4、利用 Flink 输出到 Elasticsearch
利用 Flink Elasticsearch API,添加 ElasticsearchSink 作为结果输出,将上一步计算得出的结果,按照不同维度存储到ES的不同索引结构。
包含但不下于如下索引:危急值原始数据索引、危急值扩展数据索引、危急值区间频次分布索引、危急值处理措施分布索引等。

三、与用户门户的交互实现

3.1、危急值发送流程
经过核心服务的数据处理,可以调用用户统一门户的后端接口,再利用 WebSocket 完成前后端消息推送,或由核心服务直接集成 WebSocket 负责与门户前端交互,最终在用户门户前端展示出危急值霸屏弹窗界面。
霸屏弹窗上医生除了看到危急值对应基本信息、报告信息、患者信息外,还可以填写干预措施提交,或点击反馈疑问按钮。
霸屏弹窗上将展示如下填报助手信息:
a、该项目危急值的各项处理措施出现的频次,医生可以快速点击复用;
b、该项目不同触发区间出现危急值的频次,作为医生确认危急值的参考依据;
c、该项目的历史趋势对比分析图,以及该项目出现危急值时,其他产生危急值时,同样异常的项目信息出现的频次;
d、其他历史参考信息,例如就诊历史、报告历史、危急值历史等;
3.2、危急值处理流程
医生针对危急值霸屏弹窗做出处理,将调用统一门户后端接口,触发 Kafka 的“危急值处理”Topic 主题数据,进入核心服务的危急值处理环节。
医生有两种处理模式,可以填写干预措施提交,或点击反馈疑问按钮,两种方式都可以结束处理流程。

四、开发危急值分析模块

6.1、设置定时服务,利用聚合函数对ES的数据进行二次加工处理,处理结果继续存储在新的索引空间下。
6.2、开发前端BI界面,将加工前后的危急值指标数据进行展示,并给出分析提示。
1)针对参考范围给出分析判定结果,允许人工最后确认校准范围是否改动。
2)针对处理措施给出推荐分析,针对不同处理措施,按照使用次数、处理路径、对应值范围,以及历史项目趋势、关联其他并发项目、历史诊病信息等内容,给出各项统计、指引、分析。

五、开发危急值医务管理模块

1)定义危急值评价指标:医务科应定义危急值评价指标,如:处理率%,平均处理时常h,及时处理率/24小时处理率%,患者六小时复诊率%,危急值处理总数等;
2)危急值统计:医务科需要定期对各科室危急值管理制度执行情况进行督导检查、追踪、分析,定期评价危急值报告、处置的及时性。在医务门户的危急值组件,汇聚展示各科室的危急值数据,按科室和医生两个维度,展示各类指标的排行榜和详情数据,并支持导出报表一览展示数据,定期比对全院不同时间点的指标对比,制定全院危急值阶段改善计划;
3)危急值反馈:医务科需要根据临床实际情况对危急值项目及危急值进行更新调整,将科室危急值管理纳入科室医疗质量考核,在医务人员门户开发危急值反馈组件,统一收集、分析和处理这些反馈。


危急值发送流程

流程:LIS - 数据中心 - 生产者 - Kafka Source - Flink - 加工处理 - Elasticsearch
1、医技人员发现危急值情况时,检查(验)者首先要确认检查仪器、设备和检验过程是否正常,核查标本是否有错,操作是否正确,仪器传输是否有误,在确认临床及检查(验)过程各环节无异常的情况下,及时复查(影像科室可根据实际情况决定是否需要复查),如两次复查结果相同, 才可以将检查(验)结果发出。
2、检查(验)系统发出危急值后,将通过院内集成平台发起对数据中心危急值发送接口的调用,首先将进行危急值的存储,接着调用本方案中的消息中心生产者接口,投递“危急值发送”Topic 至 Kafka;
3、本方案的核心服务,将利用 Flink 订阅 Kafka 的危急值发送 Topic,并利用 Flink Transform API 对接收到的数据进行加工处理,形成需要的数据,再利用 Flink Elasticsearch API,添加 ElasticsearchSink 将结果输出到 Elasticsearch 相关索引中;
4、经过核心服务的数据处理,可以调用用户统一门户的后端接口,再利用 WebSocket 完成前后端消息推送,或由核心服务直接集成 WebSocket 负责与门户前端交互。最终在用户门户前端展示出危急值霸屏弹窗界面;
5、至此,发送流程结束。
image.png


危急值处理流程

流程:门户 - 数据中心 - 生产者 - Kafka Source - Flink - 加工处理 - Elasticsearch
1、医生用户在日常使用门户系统过程中,若收到危急值发送通知,则会以霸屏弹窗的形式进行展示;
2、医生根据患者的危急值信息,以及报告信息、就诊信息等内容进行判断,若确认符合危急值范畴,则填写相应干预措施,触发数据中心的危急值处理逻辑;
3、数据中心首先更新危急值信息,然后将通过院内集成平台发起对检查(验)系统危急值发送接口的调用,紧接着调用本方案中的消息中心生产者接口,投递“危急值处理”Topic 至 Kafka;
4、本方案的核心服务,将利用 Flink 订阅 Kafka 的危急值处理 Topic,并利用 Flink Transform API 对接收到的数据进行加工处理,形成需要的数据,再利用 Flink Elasticsearch API,添加 ElasticsearchSink 将结果输出到 Elasticsearch 的相关索引中;
5、若第2步,医生判断该危急值属于误报,则点击“反馈疑问”按钮,将调用“医务管理模块”的错误问题上报接口,以便后续分析;
image.png


方案特征

1、基于 Kafka + Flink 组合实现,利用了大数据流式引擎技术的优势,针对危急值的发送和处理场景,实现高可靠、高效实时、高扩展性的数据加工,最终实现危急值范围校准和措施推荐的目的;
2、利用 Elasticsearch 存储多样化的指标运算结果,再利用 ES 的聚合函数功能对结果二次分析处理,整体方案扩展性和可重用性都获得较大的提升;
3、将消息中心事件驱动机制应用于危急值场景,为危急值闭环流程的关键节点建立消息事件,通过动态订阅的方式为事件指定订阅服务,流程清晰可插拔。以消息中心为枢纽建立完整危急值处理流程,尽可能覆盖实际业务场景的各个环节,提升业务覆盖面和人员参与度;


总结陈词

上文介绍了博主所在公司的《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》方案。
💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

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

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

相关文章

数字签密:信息安全的新防线

随着互联网的普及和数字技术的飞速发展,信息安全问题日益凸显。在这个背景下,数字签密技术应运而生,为保护信息安全提供了新的解决方案。本文将介绍数字签密的概念、原理及应用,探讨其在信息安全领域的重要性。 数字签密的概念 …

抖音微短剧小程序入驻指南

一、抖音微短剧小程序类目和准入要求是什么? 可以明确的告诉你抖音微短剧小程序入驻是需要报白的,属于定邀类目,官方准入要求如下: 类目要求:文娱-微短剧 定向准入,填写“【微短剧】类目定向邀约申请表”…

【深度学习练习】心脏病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …

vue2 项目中 echarts 实现排班 效果

效果 代码 <template><div class"index"><div ref"scheduleChart" style"width: 100%; height: 600px"></div></div> </template><script> import * as echarts from "echarts";export de…

记一次微信小程序逆向

扫码领取网安教程 遇到瓶颈了&#xff0c;不知道该干什么&#xff0c;突然想到学校的小程序 闲来无事就看一看 抓包下来的数据是这样的&#xff0c;嗯&#xff0c;下机&#xff08;hhh 一、反编译程序 加密嘛&#xff0c;之前抓了看到是加密就放弃了&#xff0c;现在重新弄一…

下一代 RAG 技术来了!微软正式开源 GraphRAG

省流总结 优点&#xff1a;检索准确度高 缺点&#xff1a;单个19w字构建用时4分30s、gpt4 token花费12美元 概述 7 月 2 日&#xff0c;微软开源了 GraphRAG&#xff0c;一种基于图的检索增强生成 (RAG) 方法&#xff0c;可以对私有或以前未见过的数据集进行问答。在 GitHub…

新时代【机器学习】与【Pycharm】:【随机数据生成】与智能【股票市场分析】

目录 第一步&#xff1a;准备工作 1.1 安装必要的库 小李的理解&#xff1a; 1.2 导入库 小李的理解&#xff1a; 第二步&#xff1a;生成和准备数据 2.1 生成随机股票数据 小李的理解&#xff1a; 2.2 数据探索与可视化 小李的理解&#xff1a; 2.3 数据处理 小李…

Docker使用基础—环境搭建

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

力扣爆刷第161天之TOP100五连刷71-75(搜索二叉树、二维矩阵、路径总和)

力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09; 文章目录 力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09;一、98. 验证二叉搜索树二、394. 字符串解码三、34. 在排序数组中查找元素的…

姜镇主任科普:号称“大脑杀手”的脑胶质瘤是一种什么样的肿瘤?

面对诸如头痛、频繁呕吐、记忆力显著减退等“轻微症状”&#xff0c;许多人往往掉以轻心&#xff0c;将其归咎于日常压力或不良作息习惯所致&#xff0c;殊不知这样的忽视可能正是身体发出的警示信号&#xff0c;隐藏着脑胶质瘤这一严重疾病的潜在风险。这些看似不起眼的症状&a…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)回归预测,python预测全家桶再更新!...

截止到本期&#xff0c;一共发了9篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

Docker部署Django+MySQL+Redis+Nginx+uWSGI+Celery(超详细)

一、知识储备 经过我们之前学习的Docker相关知识&#xff0c;现在我们来进行实战&#xff0c;以下介绍如何通过Docker Compose部署Django项目&#xff1a; 先前知识: Docker学习笔记&#xff08;一&#xff09;概念理解-CSDN博客 Docker学习笔记&#xff08;二&#xff09;…

20240708 Transformer

如何从浅入深理解transformer&#xff1f; - 知乎 1.出现了一些基于自监督的方法&#xff0c;这包括基于对比学习的方法如MoCo和SimCLR&#xff0c;和基于图像掩码的方法如MAE和BeiT 2、Transformer结构及其应用详解--GPT、BERT、MT-DNN、GPT-2 - 知乎 3. "Decoder-o…

教育相关知识

教育的含义 教育的基本要素 教育的属性 教育的功能 教育的起源 教育的发展

redis-cli 连接Redis

Redis-cli介绍 redis-cli 是原生 Redis 自带的命令行工具&#xff0c;您可以在云主机或本地设备上通过 redis-cli 连接 Redis 数据库&#xff0c;进行数据管理。 redis-cli 客户端的使用方法&#xff0c;请参考官方文档。 连接命令 redis-cli -h <redis_instance_address…

DNF手游攻略:云手机辅助刷副本!内置辅助工具!

DNF手游是一款备受玩家喜爱的角色扮演类游戏&#xff0c;以其独特的地下城探险和多样化的装备系统而闻名。玩家需要通过不断的挑战和升级&#xff0c;逐步增强自己的角色实力&#xff0c;最终完成各种高难度的副本任务。游戏的核心玩法包括打怪、刷装备、升级技能等。 游戏辅助…

这款拖拽式大屏设计神器,太惊艳了!收藏吧!

概念​ 可视化大屏是当今信息时代的一种重要技术工具&#xff0c;它以大屏幕为显示终端&#xff0c;通过图形、图表、地图等形式将大量数据和信息直观地呈现出来&#xff0c;帮助用户更好地理解和分析数据。 JVS智能BI的可视化大屏从界面布局、色彩搭配&#xff0c;到图表类型…

Vue CoreVideoPlayer 一款基于 vue.js 的轻量级、优秀的视频播放器组件

大家好,我是程序视点的小二哥!今天小二哥给大家推荐一款非常优秀的视频播放组件 效果欣赏 介绍 Vue-CoreVideoPlayer 一款基于vue.js的轻量级的视频播放器插件。 采用Adobd XD进行UI设计&#xff0c;支持移动端适配,不仅功能强大&#xff0c;颜值也是超一流&#xff01; Vue-…

奇异值分解(SVD)关键概念以及物理意义

本文主要用来讨论奇异值分解&#xff08;SVD)的一些核心概念以及它的物理意义和实际意义&#xff0c;说到底就是&#xff1a; 这东西有什么用&#xff1f;是怎么起作用的&#xff1f; 我们按顺序一步步来拆解这些问题并且分析。 引言 之前也只是模棱两可地了解过SVD的功能&…

计算机网络知识汇总

目录 前言 概述 1、互联网的组成 2、端系统之间的两种通信方式 1、客户-服务器方式 2、对等连接方式&#xff08;P2P&#xff09; 3、交换技术 4、时延 5、利用率 6、协议 7、计算机网络体系结构 8、ISP 物理层 链路层 网络层 传输层 应用层 前言 最近准备找工作…