通道是
Mirth Connect
的重要组成部分,被看做是一对多的一种单向通道,其通道组件是解耦的,在两个应用或多个应用之间传输医疗数据。
Mirth Connect
能把长消息任务分割成小消息任务,其可靠性、灵活性、高性能得到保证。
图 2-1 Mirth Connect 抽象通道架构
通道架构组成:由源、通道、目标组成,其中通道包括过滤组件和转换组件。
创建一个通道需要满足如下特点:
● 源连接器类型,用于读取数据。 (Source)
● 目标连接器类型,用于发送数据。 (Destination)
● 入站消息格式。 (inbound)
● 出站消息格式。 (outbound)
● 传输 ( 在入站和出站之间有个映射表 )
什么是连接器 (Connector)
连接器就是一个消息的端点,是 Mirth Connect 之间或与外部应用之间通讯的一种特殊协议。
支持的连接器列表 :
● TCP/MLLP
● 数据库 (MySQL,PostgreSQL,ORACLE,SQLServer,ODBC)
● 文件(本地文件系统和网络共享)
● PDF RTF 文档
● JMS
● HTTP( 免费版 HTTPS 协议不支持 )
● SMTP
● SOAP( 超 HTTP)
收到数据的连接器被称为 Reader( 读取者 ), 例如 MLLP Reader ;发送数据的连接器被称为 Writer( 写入者 ) ,例如 Database Writer 。
过滤器 (filter)
现实世界中,许多应用之间互联,一个通道可能从许多源接收消息,然后这些消息根据消息的类型或条件,需要分门别类的处理。
有两种方法可以解决上述问题:过滤器或路由器。
路由器最关键的优势是根据唯一的位置决定消息到达目的地的条件。
过滤器是 Mirth Connect 处理消息的主要机制,根据消息的属性(段和元素)决定对消息的处理情况,过滤器从消息队列中检测消息的属性,而消息不会从消息队列中删除,如果本过滤器没有校验通过,原封不动的返回给消息队列,以便此消息用于其它的过滤器进行处理。
如果处理的消息类型很多,可以建立多个独立的到目标的通道,相互之间可以建立多个过滤器进行消息的处理。
转换器 (Transformer)
许多情况下,遗留系统、客户应用和第三方应用,彼此之间需要根据数据模型进行消息的发送,尤其有特殊格式要求的数据系统。当新的商业需求提出一个唯一标准的时候,我们就需要把其他系统数据格式转成新系统要求的数据标准,传统方法处理起来即复杂又困难,更难于维护。
那么,对这些不同格式要求的消息,怎么进行数据互联呢? Mirth Connect 提供了消息转换器来解决这类问题。通过 Transformer ,接收方得到了它理解的消息,变成自己的内部使用的数据格式。
Transformer 支持的转换器类型:
● Message Builder 把入站消息片段映射成出站消息片段。
● Mapper 把入站消息片段映射成 Mirth Connect 内部变量,这些变量在 以后会被用到。
● External Script 从名字上就能猜到,利用外部的 javascript 脚本进行消 息的转换或映射数据。
● XSLT Step 就是个 XSL 转换工具
● JavaScript 和 External Script 一样,灵活使用。在本教程中有许多地方 用到了 JavaScript , Java 代码也被用到了。
通道脚本执行的阶段
通道还支持脚本特性,增强消息的处理逻辑,适用于管道本身及所有传递的消息。
这些脚本的名字及含义如下:
● Deploy 部署脚本, Mirth Connect Server 启动的时候或通道重新部署的时候
启动这部分的脚本 .
● Attachment 附件脚本,以本地的格式处理消息并允许抽取一部分消息作为
附件存储起来,或者是不可避免的要修改消息。
● Preprocessor 预处理脚本,脚本还允许在 Mirth connect 开始将其转换为内
部格式 ( 即 XML) 之前以本机格式处理每个消息。
● Filter & Transformer 过滤器和转换器,是我们处理入站和出站消息的主要
地方。
● Response 应答脚本,从名字上看出,就是处理目标发送的应答信息。
● Postprocessor 后处理器脚本,消息成功发送后执行的脚本。
● Undeploy 反部署脚本, Mirth Connect Server 每次停止服务的时候调用,比
如释放通道程序占用的内存。
脚本的执行顺序如下:
1. Global Deploy script 全局部署
2. Deploy 部署
3. Attachment script 附件脚本
4. Global Preprocessor script 全局预处理脚本
5. Preprocessor script 预处理脚本
6. Source connector Filters script 源连接器过滤器脚本
7. Source connector Transformer script or mapping 源连接器转换器脚本或
映射
8. Destination 1 connector Filters script 目标 1 连接器过滤器脚本
9. Destination 1 connector Transformer script or mapping 目标 1 连接器转
换脚本或映射
10. Destination N connector Filters script 目标 N 连接器过滤器脚本
11. Destination N connector Transformer script or mapping 目标 N 连接器
转换脚本或映射
12. Response 1 Transformer script or mapping 应答 1 转换脚本或映射
13. Response N Transformer script or mapping 应答 N 转换脚本或映射
14. Postprocessor script 后处理器脚本
15. Global Postprocessor script 全局后处理器脚本
16. Undeploy 反部署
17. Global Undeploy script 全局反部署脚本
Deploy 、 Global Deploy 每次管道重新部署启动一次, Undeploy 、 Global Undeploy 也是一样,其他的每次发送接收消息都要执行一遍。注意 Global Preprocessor 在 Preprocessor 之前执行, Global Postprocessor 在 Postprocessor 之后执行。
通道在序列里操作,首先被执行的是第一个通道的
Attachment
,而第一个通道
Postprocessor
是最后执行,让我们看看序列通道执行的情况如下图:
图 2-2 脚本执行序列
这个序列有三个通道串行执行,每到 Destination Connector 执行完毕就进入第二个通道,而应答的处理也是逐级递归。
接下来的内容我们就详细介绍这些情况。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。