《基于 CDC、Spark Streaming、Kafka 实现患者指标采集》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍
文章目录
- 写在前面的话
- 背景技术
- 发明目的
- 具体方案
- 包含模块
- 相关图示
- 方案特征
- 总结陈词

写在前面的话
本篇文章分享一下博主所在公司的患者指标采集的解决方案。
主要是基于CDC、Spark Streaming、Kafka实现,由于涉及公司隐私,内容主要以方案介绍为主,有需要探讨的可以留言。
好,让我们开始。
背景技术
在现行的业务系统中,目前为了获取患者的临床指标数据需要从许多的业务表进行关联查询数据,这样获取病人的临床数据无疑增大了数据库的压力,这样的检索效率不高,每次查询都要去关联查询非常多的表,通过长篇的SQL语法查询无疑是浪费了资源。并且对病人的临床数据没有进行整合,这样不能使病人的指标数据从另外一个维度去存储,这样对数据的挖掘和利用率并不高。因此数据集市这个层次产生,主要用于存储一定范围内医院的所有临床数据集合,信息不是从各个业务系统中简单抽取出来的,而是经过一系列加工、整理和汇总的过程。为了满足数据处理的需要,并对业务数据通过实时同步加工整合临床数据。
发明目的
该技术通过基于CDC、Spark Streaming、Kafka构建数据中心加工引擎为数据集市层的数据提供一个加工计算的过程。
1、 该技术也改变以往对数据的实时计算力比较差,对数据缓冲的效率不高,不能控制数据流速度问题,通过 Kafka具有高吞吐的分布式消息的缓存;
2、 以及使用Spark Streaming流式计算处理数据计算能力差的问题,使其整体的链路通道具体高可用、易扩展和精准计算的能力;
3、 同时解决了以往对在大量数据查询的情况,效率不高,性能不佳业务场景,自此发挥的重要的作用;
竞争优势主要是通过不断的对患者体征相关指标例如:发热标识、高血压标识、皮试标识、过敏标识、病重标识、危急值标识、输血不良反应标识、跌倒风险标识、药品不良反应标识、癌痛标识、肾功能异常标识、妊娠标识和输血史标识的数据进行根据不同的规则进行脚本计算,例如过敏标识,很多患者对阿莫西林等药物过敏和霉菌过敏等,在医生开药品时,可以根据过敏标识的二级内容,展示患者具体的过敏指标项是那些进行合理的开对应的药品以及接触物,数据加工引擎通过监听过往的病人诊病的历史记录信息,通过CDC监听对应的数据流,更具配置不同的业务表,获取历史的病人诊病信息,对过敏的信息进行捕捉和记录,回填到数据仓库患者标识维度的表中;发热标识会根据正常体温大于37.3℃小于38℃会展示发热低热标识、大于38.1℃小于39℃会展示发热中等热标识、大于39.1℃小于41℃会展示发热高热标识,大于41℃展示发热超高热标识,根据不同的温度状态我们的脚本,到针对医院不同的医疗数据进行一定的整合,将医疗数据进行多维度的挖掘,提高医疗数据从一个大数据仓库提取、加工得到有各种维护意义的患者医疗数据。以往的患者指标需要从跨越多个系统获取数据,这样无疑效率比较低,我们可以通过数据加工定制化的给其进行供数,并且可以多维度的展示患者多维度的数据,这样可以辅助临床医护人员快速对患者快速下诊断,直观看到患者的不同维度的指标数据,大大提高患者就诊速度。
具体方案
本方案以 CDC 整合 Spark Streaming 以及 Kafka 实现高可靠、高效实时、高扩展性的数据加工引擎实现数据的实时加工到数据集市中,主要包括如下步骤:
1、采集框架和消息中间件搭建:采用 CDC + Spark Streaming + Kafka 集群作为数据归档日志变动监听以及消息缓存核心组件,患者业务作为 Topic,不同患者标识业务模块作为消费组,采用消息对列发布订阅模式,不同规则作为消费的模块。
2、通过医护人员在对病人做一系列诊疗活动过程中,系统对医疗数据做存储时,CDC 对医疗数据进行实时的监听数据流。通过对数据流进行监听,对医疗数据进行不同的业务规则编写不同的脚本分析过滤,将患者预先定义好的各种患者标识的数据进行数据流的投递到 Kafka,进行数据的缓存,具有高吞吐量的分布式发布订阅消息系统,以容错的方式存储消息,生产者往队列里写消息,消费者从队列里获取消息执行预先定义的业务处理逻辑,一般在架构呈现起到解耦、削峰、异步处理的作用,这样保证数据的流可以实时的监听,对不同患者指标数据进行存储业务数据,方便医生能快速分析患者的病情。
3、通过数据中心加工引擎从 Kafka 中消费出数据流,在 Spark Streaming 流式计算引擎中,通过编写不同规则的脚本,对实时的数据链路进行计算,得到患者相关的临床指标信息以及其他业务指标信息,保证并发的效率,又可保证数据的准确性,这样才能可以使我们系统保持稳定的进行数据的批处理。
4、对执行对数据流的计算脚本进行全过程的日志记录,对异常的数据进行数据分析得出对应的报告,反馈给对应的负责人,保证数据中心加工引擎数据的完整性,高可用性,对异常数据进行监控,有异常信息,将通过消息通知到不同的责任人。
包含模块
一般大数据加工引擎的患者指标主要包含以下模块:
1、数据抽取模块
用于抽取监控不同患者医疗数据,事先可以在不同的业务抽取进程,在将比如危急值的抽取进程、发热的抽取进程、传染病抽取进程、高血压抽取进程等,将不同的监听的业务投递到高可用的消息队列主题中,主要是包括以下业务数据例如:患者肝功能不全异常标识做完肝功能检验,出报告指标白蛋白、凝血酶原时间和胆红素等数据,监听检验指标表信息,一般胆红素升高就是黄疸、凝血酶原时间反应的是血液凝固的时间,如果时间比正常值延长很多,那么就有出血的危险;高血压标识一般通过测量患者的血压,正常血压是在80~120范围内,超过140则为高血压患者,通过监听记录病人体征信息表根据预先配置的语法规则,事先得到高压患者标识;患者肾功能不全标识主要监听检验指标表血肌酐、尿素氮、ECT检验指标信息,传染病患者标识主要监听传染病登记主表信息,登记状态信息,可以可视化界面可以配置具体详情如下图。

2、消息队列模块
用于数据流的存储,可以实现数据的高可用,不同系统数据之间的解耦,需要定义同步业务的事件主题,之所以要定义不同业务事件主题的话,方便数据投递到不同的事件主题时可以处理不同患者标识的业务,这样的过程整体对不同患者标识具有一定联动解耦的作用,保证通过读取数据库库归档日志信息投递到消息中间件中、数据队列存放Kafka的当中从而减轻数据库的查询压力和数据计算拆分开来,对数据进行异步处理,从而达到效率最高。
加工引擎模块,用于根据不同医疗的数据,进行不同规则患者标识脚本进行计算,得到不同维度的高可用的患者标识维度的临床数据集合,其中包含:肝功能异常数据集、肾功能不全数据集、压疮数据集、疼痛数据集、手术数据集、高血压包含详情数据集、高血糖数据集、发热数据集、跌倒数据集、药物不良反应数据集、病种数据集、病危数据集和危急值数据集等,如下图是加工规则的配置界面,以及患者标识获取以及数据详情获取的流程图。



3、数据存储模块
用于将不同维度的患者标识维度的临床数据集合存储在数据中心的集市层。
4、日志追踪模块
用于监控不同环节数据采集监控和数据加工规则执行的数据链路的状态,发生异常或者加工算法报错,进行日志的记录。
5、统一预警模块
用于对产生的异常日志,经过微信通知的方式报警或者短信通知到不同责任人,以便对异常信息进行及时处理。
相关图示
【架构图】

【效果图】


方案特征
1、目前医疗信息化行业数据中心,鲜有使用 CDC 整合 Spark Streaming 以及 Kafka 这一技术组合方案,实现高可靠、高效实时、高扩展性的数据加工引擎,进而实现数据中心大量患者医疗数据实时加工到数据集市中。
2、前期整体的技术水平挑战还是比较有难度,由于以往的方式都是通过数据库里面利用复杂的查询SQL进行患者标识的查询,这样无疑在医护人员就诊过程增加查询患者标识的时间,通过研究大数据中间件 Spark Streaming 和消息中间件Kafka 作为数据的消息对列,以及制定了患者标识展示和详情展示的流程,构建了此次的数据通道,整体的功能设计和计算的应用给医护工作人员带来较大的影响,同时也得到肯定。对比较多的医疗厂商使用 ETL 作为指标的加工工具,这样通过这种技术架构通道的方式解决了无法对变动的数据进行实时的数据捕捉、变换以及投递和数据实时计算能力差、通过ETL离线计算基本不能达到医护人员的要求等特点,这样的技术链路通道在整个医疗行业的话是较为领先的。
3、通过加工引擎中不同规则的对整理的患者标识维护的指标脚本内容保护,对数据流高可用的计算。
4、全日志追踪,监控不同环节数据链路的状态,对异常模块进行通知报警。
总结陈词
上文介绍了博主所在公司的《基于 CDC、Spark Streaming、Kafka 实现患者指标采集》方案。
💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

相关文章:
《基于 CDC、Spark Streaming、Kafka 实现患者指标采集》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
重要的单元测试
👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&…...
什么是diff算法?
Diff算法,全称为Difference算法,是一种用于比较和查找两个对象(如文本、源代码、数据结构或任何形式的字符串)之间差异的算法。它在多个领域有着广泛的应用,包括但不限于前端开发、版本控制系统、协同编辑工具等。以下…...
BUUCTF逆向wp [MRCTF2020]Transform
第一步 查壳。该题为64位。 第二步 进入主函数,跟进dword_40F040,它应该与关键字符串有关 分析一下: 初始化和输入 sub_402230(argc, argv, envp); 这行可能是一个初始化函数,用于设置程序环境或处理命令行参数。具体功能不明,…...
前端下载文件流 出现乱码 解决方案
1. 后端返回文件格式不是 utf-8 解决方案:后端加 2. 若添加 utf-8 后依旧乱码 请求配置中添加 responseType: arraybuffer, export function downMode() {return http.request({url: baseUrl downTemplate,method: get,responseType: arraybuffer,}); }下载 con…...
Linux/Windows 系统分区
1. Windows 系统 1.1 系统分区 系统分区也叫做磁盘分区,即分盘; 举个例子,好比家里有一个大柜子,把衣服,鞋子,袜子都放在里面,由于没有隔断,找的时候非常麻烦,找是能找…...
C/C++ xml库
文章目录 一、介绍1.1 xml 介绍1.2 xml 标准1.3 xml 教程1.4 xml 构成 二、C/C xml 库选型2.1 选型范围2.2 RapidXML2.3 tinyxml22.4 pugixml2.5 libxml 五、性能比较5.1 C xml 相关的操作有哪些5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较 六、其他问题6.1 version和 e…...
UniVue@v1.5.0版本发布:里程碑版本
前言 以后使用UniVue都推荐使用1.5.0以后的版本,这个版本之后,更新的速度将会放缓。 希望这个框架能够切实的帮助大家更好的开发游戏,做出一款好游戏!本开源项目采用的开源协议为MIT协议,完全开源化,以后也…...
在 Windows 上开发.NET MAUI 应用_2.生成你的第一个应用
先决条件 Visual Studio 2022 17.8 或更高版本,并安装了 .NET Multi-platform App UI 工作负载。 可参考上一篇文章:http://t.csdnimg.cn/n38Yy 创建应用 1.启动 Visual Studio 2022。 在开始窗口中,单击“创建新项目”以创建新项目&#…...
配置SMTP服务器的要点是什么?有哪些限制?
配置SMTP服务器安全性如何保障?如何高效配置服务器? SMTP作为电子邮件发送的核心协议,其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点,帮助读者建立一个高效、安全的邮件发送系统。 配…...
图形渲染基础-Unity渲染管线介绍
Unity中的渲染管线渲染场景主要分为三个阶段 剔除(Culling) 剔除摄像机不可见对象(视锥体剔除Frustum Culling)和被遮挡对象(遮挡剔除Occlusion Culling)。 渲染(Rendering) 将可见…...
junit mockito service
service类单元测试可以有两种方式 1、使用Autowired启用上下文的Bean走业务逻辑,适用于debug调试 2、使用InjectMocks不启用上下文依懒的Bean采用打桩的形式 打桩注意:service通常业务逻辑复杂,Bean的依懒层次可能很深,初用者常…...
k8s学习——升级后的k8s使用私有harbor仓库
升级后的k8s使用了第三方的容器管理器,安装了nerdctl工具来替代docker进行镜像管理。但是使用docker build打包并上传至harbor仓库的镜像,在部署过程中始终拉不下来,报错证书错误。通过journalctl -xe |grep kubelet 或 journalctl -xe |grep…...
Blender4.2版本正式上线,新版本的5个主要功能!
Blender刚刚推出了备受瞩目的 Blender 4.2 版本,这款软件专为那些在视觉特效、动画制作、游戏开发和可视化设计领域工作的艺术家们量身打造。作为最新的长期稳定更新,Blender 4.2 不仅稳定可靠,还引入了备受期待的“Eevee Next”实时渲染引…...
【python基础】基本数据类型
文章目录 一. Python基本数据类型1. 整数1.1. python的四种进制1.2. 数中的下划线 2. 浮点数3. 复数4. 布尔型5. 运算符5.1. 算术运算符5.2. 比较运算符5.3. 逻辑运算符5.4 运算符优先级 6. 常量 二. 注释三. Python之禅 一. Python基本数据类型 1. 整数 无长度限制࿱…...
应用层——HTTP
像我们电脑和手机使用的应用软件就是在应用层写的,当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能,比如HTTP,FTP… 我们程序员写的一个个解决我们实际的问题都在应用层,我们今天来聊一聊HTTP。 协议 协议…...
剧本杀小程序搭建,为商家带来新的收益方向
近几年,剧本杀游戏成为了游戏市场的一匹黑马,受到了不少年轻玩家的欢迎。随着信息技术的快速发展,传统的剧本杀门店已经无法满足游戏玩家日益增长的需求,因此,剧本杀市场开始向线上模式发展,实现行业数字化…...
十六、【机器学习】【监督学习】- 支持向量回归 (SVR)
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
基于FPGA的多路选择器
目录 一、组合逻辑 二、多路选择器简介: 三、实战演练 摘要:本实验设计并实现了一个简单的多路选择器,文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输…...
面经学习(杭州实在智能实习)
个人评价 秃狼觉得本次的面试是有史以来难度最大的,问了很多陌生的八股文,项目问的比较少,估计是项目本来就没有什么亮点,也是第一次被面试官说菜的面试。不过在后续的学习上还是收获颇丰的。 1.说说你在实习中遇到的难点吧&…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
本地部署drawDB结合内网穿透技术实现数据库远程管控方案
文章目录 前言1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 前言 在数字化浪潮席卷全球的背景下,数据治理能力正日益成为构建现代企业核心竞争力的关键因素。无论是全球500强企业的数据中枢系统,还是初创…...
