前言:本文由浙江省台州医院刘祉呈撰写,详细说明了集成平台核心中间件集成引擎(IE)与ESB在医疗信息化场景中的各自特点及优劣,并辅以翔实的图文业务流程场景。看完之后能对ESB和集成引擎两者有更深入的了解,对于医院在集成平台建设中数据交换技术的选择提供了很好的参考和启示。

导读:场景决定技术,以场景需求和应用效果为出发点。

在集成平台建设中,医院面临着各种数据交互和信息集成的场景,往往不知道该通过何种数据交换中间件技术来实现系统间的调用和数据的传输。比如:

  • 集成有多种对接形式和协议,如Web Service、数据库、HTTP、HL7等,如何选择?
  • 什么情况下系统之间的调用需要同步,又在什么情况下需要异步处理?
  • 如果一个通知涉及多个系统的话,是否会用到消息的分发?
  • 进行一次查询会牵扯到不同的业务系统或者数据库,用什么方式?
  • 外部系统异常导致消息流转失败,如何处理这些异常消息?

上述问题都可能会在项目实践中遇到,为了能用恰当的技术手段来解决这些问题,需要对集成平台的数据交换技术有一定了解。ESB(企业服务总线)和Integration Engine(集成引擎)都是用来实现集成平台对于数据传输和信息交互的核心中间件,在对实际应用场景进行分析后,合理选择或结合应用这两种技术,能够很好地应对上述问题。然而,有些时候大家对ESB和IE的应用会比较模糊,经常会出现误用的情况。ESB和IE的区别是什么?技术上各有哪些侧重点和优劣势呢?本文将结合台州医院的部分应用场景,对以上问题进行探讨。

什么是ESB

ESB 是用于服务协调、编排的一个很好的通用解决方案。在进行数据集成时,系统内的应用可以直接调用ESB内的服务,可大大减少接口接入的复杂度和工作量,大幅降低实施难度和实施成本。

1.ESB的特点

  • 提供服务:可根据客户的请求和事件提供路由、数据转换和翻译。
  • 快速并行处理消息:在无需保证消息或服务请求顺序的情况下,可同时处理不同请求,实现高性能请求应答模式。
  • 侧重于同步消息处理:收到外部系统调用服务请求后需要等待连接的应用系统处理请求,等处理完成后将结果返回给外部系统。如果外部系统调用服务失败,外部系统负责重试再次调用服务。

2.ESB的优缺点

优点:能够支持不同的接入系统和传输模式,传输效率高,易于实现集群架构,提高信息系统架构的灵活性,降低内部信息共享的成本。

缺点:缺乏对医疗标准的支持,需要针对医疗行业的特殊性进行大量二次开发,从而导致实施代价和维护成本很高。

什么是IE

相比ESB的通用性,集成引擎是专门针对医疗行业而设计的数据交换集成工具,突出的是医疗场景下的应用,其主要目的是在不同系统或应用程序之间实现互操作,达成业务流程联通和数据共享,比较典型的是面向消息的集成。

1.IE的特点

  • 保证消息传输:能记录整个消息处理流程和每个节点的消息,这些内容将保存一定的时间,以供用户查看或修正后重新处理。
  • 侧重于消息的异步处理:收到外部系统请求后,集成引擎可对外部系统立即应答,外部系统即完成工作,集成引擎负责消息后续处理。如果消息后续处理失败,集成引擎会负责重新尝试给信息的接收方传输消息。
  • 保证消息传输的顺序:在医疗行业,消息的顺序极为重要。在保证消息传输顺序时需要单线程逐一处理接收的消息。
  • 支持的医疗标准:传统集成引擎作为专为医疗行业而设计的产品,支持的医疗标准更加全面,如HL7、CDA、FHIR等。
  • 易用性:部分集成引擎产品是配置型产品,具备行业特征,内嵌医疗场景下的常用功能,省去了进一步编码的过程,可缩短项目周期。

2.IE的优缺点

优点:能实现不同部门之间的基于HL7消息的集成。集成引擎专为医疗数据交换而设计,也易于实施使用。

缺点:传统集成引擎难以实现集群架构,有单点故障隐患,因此在高并发、大流量环境下时常出现功能瓶颈,严重时甚至会宕机。仅使用集成引擎的医院,信息部门技术人员会为平台的稳定性和可用性困扰。

ESB和IE在医院的应用场景

1.门诊预约业务流程

(1)场景业务分析

  • 号源查询:需要对外统一的预约信息查询接口,同时能够为院内自助机及服务台、患者的移动App以及外部预约平台等提供号源查询服务。
  • 门诊预约服务:患者及家属可通过本院或第三方预约平台实现对集团下4家医院进行在线预约挂号,并能够返回预约结果。
  • 门诊取消预约服务:患者及家属可对已预约的信息进行取消预约处理。
图1 门诊预约业务流程示意图(IE和ESB共同实现)

(2)场景技术分析

号源查询要求响应速度快,有同步处理要求,响应时间不能超过3秒。对于查询的内容能够根据业务变更灵活调整。

门诊预约和取消预约业务对于响应要求不高,但是需要保证消息的传输以及传输时的顺序,因此在应用端的预约和取消预约通过异步进行处理,结果信息的接收可通过发短信或刷新实现查询。

因此在这个场景中,号源查询业务适合通过ESB实现,而门诊预约和取消预约业务适合通过IE实现。在处理一个外部入口的所有请求时,需要根据具体业务中数据的传输模式要求不断进行调整。

2.检验业务的应用场景

(1)场景业务分析

此流程包括检验申请单提交通知、检验申请单计费确认通知、标本采集通知、标本送检通知、标本核收通知、标本退回通知、报告审核通知以及相对应的取消通知等。

该场景下,流程和消息路径由消息头的关键词决定,通过业务编号对HIS和LIS数据库进行异步操作。

图2 检验业务服务流程示意图(IE实现)

(2)场景技术分析

在检验申请的业务场景中,由于检验相关的业务中保证消息的传输以及传输时的顺序非常重要,因此IE是较为适用的该场景下数据传输模式的集成中间件。

3.内网服务分发场景

(1)场景业务分析

医院内部不同的系统都会有对外的接口供调用,这些接口客户端种类繁多,包括电子病历、医疗、检查、检验等多个系统和客户端,被调用的接口也多种多样。需要通过统一的内部接口进行管理分发,这样能够更有效地管理内部接口,规范化交互标准。

图3 内网服务分发示意图(ESB实现)

(2)场景技术分析

由于这些数据调用的发生可能存在多个调用消费端及多个服务生产端,而且数据吞吐量大、并发高,还需要满足调用分发的要求,因此ESB更适合该场景下的数据传输模式,能实现并行处理、快速响应。

场景决定技术

可以看出,ESB与IE各有侧重,适用于医院不同的应用场景。ESB适合需要快速响应、同步处理消息、高并发、高数据吞吐量的场景;IE更适合对于消息请求响应速度要求不高,但是需要保证消息的传输以及传输顺序、异步处理消息的场景。

当前,区域医疗、医联体、医共体建设不断推进,医院所扮演的角色和业务越来越多。5G、混合云、物联网、容器化等新技术、新环境的出现,让应用的更新迭代速度越来越快。医院内部或多院之间的数据交换会不断增强,线上线下服务会也会更加便捷。随之而来的是,医院将会面临更复杂、更多样的场景。

因此,医院建设集成平台时选择何种数据交换技术,不应拘泥于一种技术形式,而应以场景需求和应用实践效果为出发点,结合自身实际情况以及医院未来信息化方向,灵活使用各种技术,更好地发挥集成平台的价值,赋能临床业务发展。

文章转载自:

都是应用集成,ESB和集成引擎对医疗业务场景的“口味”为何不同?​www.hit180.com

.net中调用esb_都是应用集成,ESB和集成引擎对医疗业务场景的“口味”为何不同?...相关推荐

  1. .net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践

    今天准备谈下ESB总线平台建设项目中的服务运行统计分析,服务心跳监测,服务监控预警方面的设计和实现.可以看到,在一个ESB服务总线平台上线后,SOA治理管控就变得相当重要,而这些运行监控分析本身也是提 ...

  2. MySQL 新增表中的数据为另外一个或多个表的数据(业务场景:创建关系表,复制旧表数据到新表)

    问题 昨天同学问了我个问题 我想写个sql脚本,循环插入数据,数据是另一个表中的a.b字段 A表中的a.b字段数据,循环加入B表中a.b字段.就是这个意思 我问他为什么不用Java写,他说是数据维护, ...

  3. Linux jsp php集成环境,ImageMagick在程序中调用(linux环境,jsp,php)

    最近发现图片格式为cmyk时,图片上传浏览器不能正常显示,图片缩放会变成黑屏, 后来通过google发现imagemagick的功能很强大,安装可以采用两种方法,1)直接与php编译安装,在程序中调用 ...

  4. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  5. 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持

    Spring Boot 的 MVC 支持主要介绍实际项目中最常用的几个注解,包括 @RestController. @RequestMapping.@PathVariable.@RequestPara ...

  6. 【Python】如何在Excel中调用Python脚本,实现数据自动化处理

    这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...

  7. 在php中调用java接口吗,php 调用 java 接口

    php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...

  8. 在Java中调用Python,java面试题,java初级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 写在 ...

  9. Pytest学习-如何在用例代码中调用fixtrue时传入参数

    前言 在使用Pytest的时候,为了提高代码的复用性,我们一般会把一些常用操作,比如把登录方法写在 conftest.py 中,然后在不同测试用例中,调用这个登录方法. 但是在测试用例中,我们可能需要 ...

最新文章

  1. LeetCode 25. K 个一组翻转链表
  2. Mono+Nginx环境
  3. android事件分发笔记
  4. 文巾解题 1433. 检查一个字符串是否可以打破另一个字符串
  5. BZOJ-2748: [HAOI2012]音量调节 (傻逼背包DP)
  6. jQuey基础思维导图梳理1
  7. 【 POJ - 2033 】Alphacode (dp,有坑)
  8. 8.使用Exists监控ZNode的三大Change事件
  9. python 语音识别接口_python实现阿里云语音识别api
  10. XAMPP中Apache因为端口原因不能启动的解决方法
  11. Office for Mac升级提醒如何去掉?关闭Mac的Microsoft AutoUpdate弹框提示
  12. Windows Phone 7.5 OS版本7.10.8107.79 官方更新
  13. php组件缓冲区溢出漏洞,DNSTracer 1.9 缓冲区溢出漏洞(CVE-2017-9430)分析
  14. picgo图片上传踩坑
  15. Codeforces Round #469 (Div. 2) C. Zebras
  16. win10修改用户名_win10最详细优化设置|win10专业版笔记本优化教程
  17. H5性能测试(优化建议)
  18. java.sql.SQLException: 无效的列类型: 1111 (jdbcType相关)
  19. php ncr转utf8
  20. npx:调用项目内部安装的模块

热门文章

  1. Python学习笔记.OS学习笔记 OS操作系统(operating system)(二)程序和进程 输出进程号,工作目录最有用!
  2. C语言借助两个数的大小交换,引入指针。
  3. ORB特征均匀提取策略对性能的提升有多大?
  4. win10+centos7+Anaconda3+python+pytorch
  5. Mysql 查看连接数,状态 最大并发数 怎么设置才合理
  6. ecshop入门第一步,替换ecshop模板的显示图片
  7. Function类型
  8. API和schema开发过程问题汇总
  9. JAVA实现 springMVC方式的微信接入、实现消息自动回复
  10. mybatis整合ehcache