第五章 查询发送者通道
查询发送者通道是我们实现的第一个通道,也是最简单的通道。它的任务就是发送HL7v2资格查询请求消息的接口。因此源连接器的类型是Channel Reader。在这个管道下链接下一个通道就是v2-v3 Transformer channel,它使用MLLP消息传输协议,目标连接器类型配置为TCP Sender,由此MLLP是走TCP层传输的,也就是Socket技术。
为使测试容易点儿,区别进来的消息,v2-v3 Transformer channel通道会为每个消息分配UUID和日期时间戳,意味着该通道要调整每一个消息。另外,我们使用这个通道创建不合规的消息,测试我们以后为两个传输通道实现的验证脚本。
为了创建这个通道,咱们需要对通道的每个标签,即Summary, Sender, Destination,执行必要的配置。
Deploy, Preprocessor, Postprocessor 和Undeploy脚本不需要编写,因此它们不在本章讨论范围内。
. Summary 标签
创建新通道,切换到Summary标签。
输入通道名称,通道标记和通道描述。假设你已经删除了先前创建的Simple Channel,只有与本项目相关的通道,你可以忽略标记的创建。
单击Set Data Types,配置源链接器和目标连接器入站消息和出站消息为HL7v2.x,其他设置保持不变。检查一下Initial State是否设置为Started(其他选项有Paused和Stopped)。
本通道或本项目的其他通道都没有attachments配置,即attachment=NONE。但至少,你应该看看attachments下拉菜单项里都有什么,每个试试,每项后面有个Properties属性,看看有什么不同。
图5-1 Summary概要标签
再说一遍,Channel Tags字段项是方便的用于通道的逻辑排序。
图5-2 源连接器入站和出站类型设置
记得,如果你对Attachment实验完了,将其值设置回None。
. Source 连接器
切换到Source标签,检查Connector Type类型设置是否是Channel Reader。Channel Reader连接器通道其他设置保持不变。
图5-3 源连接器设置
由于进来的所有消息都被接受,所有对于此通道不需要过滤器或转换器。校验连接器并保存改变。在左边导航栏中就是这两个菜单项:Validate Connector和Save Changes。
. Destinations Connector 目标连接器
切换到Destinations 标签,重命名存在的目标,把Destination 1 改为HL7v2-HL7v3 Transformer,你也可以选择填写你喜欢的名字。
根据总体管道图,这个目标是TCP client,因此,把连接器类型Connector Type改为TCP Sender。
Remote Address地址栏填写本地机IP地址:127.0.0.1,或输入你知道的其他TCP服务器的IP地址。
Remote Port远程端口给个6611,如果你计算机上的应用程序已占用该端口或本项目使用的任何端口,那么你就把所有相关的通道涉及的端口都调整一下。
在Template Box 模板框里已经有${message.encodedData},如果没有你可以从Destination Mappings目标映射里拖拽Encoded Data 到模板框里,目标映射就在Mirth Connect Administrator右边的面板里。(看看图5-4)
其他设置保持不变,保存这个通道。
这个目标不需要过滤器,然而,根据我们先前的讨论,该通道调整入站消息,目的是区别不同的消息,这一切由目标转换器脚本来完成。
图5-4 目标连接器设置
单击Edit Transformer为本目标创建转换器脚本。有四个脚本,三个是javascript,一个是Message Builder。该目标是由四个脚本进行顺序工作的。看图5-5
图5-5 To HL7v2-HL7v3目标转换器步骤
添加新转换器步骤,把类型改为Javascript ,重命名此步骤。你可以使用我给的转换器名字或使用你自己的。下面是为每个转换器写的脚本。
MSG Segment 更新转换器
这个脚本吧入站消息元素分配给出站消息元素。由于出站模板还没有,撰写的脚本把入站消息对象分配给tmp变量,映射了所有字段。
SOURCE 5-1 MSH Segment Transformer script
tmp = msg; tmp['MSH']['MSH.7']['MSH.7.1'] = Now("yyyyMMddhhmmss");
tmp['MSH']['MSH.10']['MSH.10.1'] = UUIDGenerator.getUUID();
从脚本上看出,该转换器步骤把当前的日期时间戳赋值给出站消息字段。类似的,把UUID也赋值给了消息字段。
Patient ID 生成器
该脚本创建序列号模拟病人的识别码,例如社保号。用不着说,这个识别码不遵循任何规则,完全是虚构的。识别码被分配到适合的消息字段上。
SOURCE 5-2 Patient ID Transformer script
tmp['QPD']['QPD.3']['QPD.3.1'] = getPatientID();
function getPatientID() {
var patientId = '';
for ( var i = 0; i <= 9; i++ ) {
patientId += Math.floor( (Math.random() * 10) );
}
return patientId;
};
这个脚本展示了你可以使用JS函数来规划程序逻辑。
Query Tag 生成器
该转换器步骤使用了Message Builder消息编译器类型。它把查询消息控制ID号的部分映射到QPD片段的查询标记上。说的好像是拉丁文,换句话说,该转换器步骤把MSH.10.1的内容从第11个字符开始截取,赋值给QPD2.1,在真实情况中,你可以用它来调试消息请求。本项目中它是用于区别消息的。看图5-5
填写Message Segment和Mapping fields:
Message Segment: tmp['QPD']['QPD.2']['QPD.2.1']
Mapping: tmp['MSH']['MSH.10']['MSH.10.1'].substring(10)
注意,在本界面中的编辑器区域有Step和Generated Script标签。切换到Generated Script标签,你应看到自动生成的JS代码支撑你的映射看图5-6
图5-6 Message Builder自动生成的脚本
生成的脚本适用于不同的转换器和过滤器步骤。你可以使用它学习怎样在Mirth 中编写正确的JS代码。
TEST ONLY(故意犯难的步骤)
这是最后一个脚本了,这个脚本是不需要的,只有我们实现了Data Logger通道,该脚本才是必须的。但是为了保持所有Query Sender通道脚本在一个位置,也在此列出来了。这个脚本校验消息触发事件字段,如果是ERR2事件,它随机调整三个消息字段:消息类型、触发事件、和版本号。在向后的步骤中用来验证失败的消息。当然,你可以手工更改你发送消息字段的内容,来校验验证算法。我发现那是非常单调乏味的且浪费时间。
SOURCE 5-3 Intentionally Malformed Transformer script
if ( 'ERR2' == msg['MSH']['MSH.9']['MSH.9.2'].toString().toUpperCase() ) {
if ( Math.floor((Math.random()*10)+1) > 5 )
tmp['MSH']['MSH.9']['MSH.9.1'] = 'QQQ';
if ( Math.floor((Math.random()*10)+1) > 5 )
tmp['MSH']['MSH.9']['MSH.9.2'] = 'E99';
if ( Math.floor((Math.random()*10)+1) > 5 )
tmp['MSH']['MSH.12']['MSH.12.1'] = '9.9';
}
对每一步骤的脚本进行验证,脚本无错误,保存改变。这里总结了你必须对Query Sender通道做出的一些改变。
通道实现验证
由于本项目管道下的其他通道接收由Query Sender通道发送的消息,仍然不可用,也就是说,其他通道还没设计,为了校验这个通道,暂且改变目标连接器的类型,从TCP Sender改为File Writer,如果你有更好的想法,值得推荐,克隆(见导航栏Clone Desination菜单项)源To HL7v2-HL7v3 Transformer 目标,把连接器类型改为File Writer,禁止掉HL7v2-HL7v3 Transformer目标,看图5-7
图5-7 克隆目标连接器和设置
设置目录和文件名,或者使用在Simple Channel创建的Global Map值。拖拽Encoded Data消息类型到模板。保存改变,重新部署通道。
在Mirth Connect Administrator的Dashboard驾驶舱视图里,单击Send Message,拷贝粘贴QBP^E22消息样例(Source5-4)到消息框。说明一下,一些字段忽略掉了,例如创建日期时间戳。
SOURCE 5-4 QBP^E22 Query Authorization Request sample message
MSH|^~\&|ADM|Sending Organization|ALL|Receiving Organization|||QBP^E22^QBP_E22||D|2.7|||AL|AL
QPD|E22^Authorization Request^CIHI0003||^^^ISO^PHN|Everywoman^Mary^Patrick^^^^L^|19680120|MSP^|EXT
RCP|I
如果你创建了单独的File Writer目标连接器,把消息存储为文件,那你没必要禁止掉原来的HL7v2-HL7v3 Transformer ,可以在目标列表中选择要发送给的目标连接器。反选就是不接收消息。
单击Process Message,消息立即发出后,文件应该在你指定的文件里出现了。看图5-8
图5-8 Query Sender发送消息
打开文件,去确认MSH片段的日期时间戳字段的设置,消息识别码的设置,看看UUID,看看QPD片段取自识别码10个字符以后的字符串。
图5-9 Query Sender通道生成文件的内容
重复上面的步骤,发送另外一个消息,把QBP^E22^QPB_E22改为QBP^ERR2^QPB_E22,然后再次发送消息,打开新创建的文件,确认至少有一个字段是不正确的。
图5-10 被test Only转换器步骤改掉的内容
看见了吧,两个字段不正确的,就是我们的TEST ONLY转换器步骤改的。
使能或启动HL7v2-HL7v3 Transformer,禁止掉或删除掉To File目标连接器,保存改变。
我们做完了Query Sender通道。咱们继续下一个通道的实现。
相关推荐
- **Mirth Connect面板**: 面板是Mirth Connect用户界面的一部分,包含了各种工具和选项,方便用户进行数据管理、通道设置等工作。 - **通道使用**: 通道是Mirth Connect中用于定义数据流的基础单元,可以自定义输入...
在医疗信息集成领域中,Mirth Connect可以解决不同厂商的系统提供的信息访问接口、协议各不相同的问题,实现医院不同系统之间的信息互通和共享,从而提高医院工作效率和降低系统集成成本。 Mirth Connect的主要功能...
Mirth Connect可以进行HL7 包括构建和交换医疗保健信息的标准,以及系统集成和互操作性的其他标准。医疗保健系统可以使用这些标准、指南和方法以统一、一致的方式相互通信、共享信息和处理数据,有助于减少医疗保健...
Mirth Connect 3.4 使用文档,推荐下载!
为了帮助读者更好地理解如何使用 Mirth Connect 构建实际应用,本书将通过实施一个虚构的资格查询服务来展示各个连接点(通道)的具体实现步骤。每个章节都将针对一个具体的连接点进行详细解释,并提供创建和编码...
Mirth是现在国际上比较成熟的HL7引擎技术之一,它是一个开放源代码的跨平台HL7标准接口引擎,是专为HL7消息接口设计的“瑞士军刀”,它为开发、配置和监听接口提供了必要工具。mirth是一个HL7标准接口网关,它能进行...
5. Mirth Connect 的应用场景:Mirth Connect 可以应用于各种医疗健康机构,例如医院、诊所、健康管理机构、保险公司等,帮助它们实现医疗健康信息的互操作性和互连性。 6. Mirth Connect 的优势:Mirth Connect ...
- **通道管理**:Mirth Connect的核心是通道(Channel),用户可以通过创建、编辑和管理通道,定义输入、处理和输出规则,实现数据的接收、转换和发送。 - **消息处理**:内置强大的脚本引擎,支持JavaScript和...
mirth 简单操作说明及常见报错 mirth 是一个集成平台,提供了一个灵活的集成解决方案,用于连接不同的系统和应用程序。本文档将提供 mirth 的简单操作说明和常见报错处理方法。 安装和配置 1. 安装 JDK:mirth ...
Mirth 数据平台使用说明 Mirth 数据平台是医院端使用的集成平台,支持各种通讯协议,HL7、HTTP、SOCKET 等,支持各种数据库集成。该平台主要进行多种数据格式以多种传输方式来监听和访问。 DataBaseReader 和 ...
该引擎适用于构建数字化医院和区域医疗信息系统的互联互通,它基于先进的技术,旨在解决信息孤岛问题,实现高效、安全的数据交换。 1. **系统环境需求** 在开始使用mirthConnect之前,确保满足以下系统环境需求: ...
### 医疗 Mirth 手册详解 #### Mirth 简介 Mirth 是一款专为医疗领域设计的开源企业服务总线(Enterprise Service Bus, ESB)解决方案。其核心构建于另一个知名的 ESB 平台 Mule 之上,并针对医疗行业的特殊需求...
Mirth Connect 是一个开源的跨平台 HL7 接口引擎,通过多种传输方式在系统和应用程序之间双向发送 HL7 消息。它提供了一个灵活的消息处理平台,允许用户创建、管理和监控 HL7 消息的传输。 Mirth Connect 的主要...
Yeovil区医院NHSFT的Mirth Connect FHIR侦听器通道,可与InterSystems TrakCare PAS一起使用(v2020) 介绍 目的 此回购概述了为提供SIDeR计划所需的技术可交付成果而采取的步骤,以及在开发过程中遇到的问题以及...
#### 五、Mirth Connect Administrator ##### 5.1 监控视图 - **Dashboard View**:展示服务器的整体状态和性能指标。 - **Dashboard Table**:列出关键性能指标。 - **Filtering By Channel Name or Tag**:...
匹配mirth3.9server
### Mirth Connect 3.3 用户指南概览 #### 一、Mirth Corporation 简介 Mirth Corporation 是一家专注于提供健康信息交换解决方案的公司。Mirth Connect 作为其主打产品之一,是一款功能强大的开源集成引擎,用于...
DOCKER上的MIRTH CONNECT实例 Authors: Marly Cormar, Surya Prasanna, Dileep Rajput. 先决条件 最新的 。 目前的例子 这个多容器泊坞窗的目标是测试Mirth Connect的功能。 频道包括: json_to_hl7_dest_channel...
Mirth Connect分析仪 报告书 听众 侦听传入连接的每个通道的列表。 channelName channelID serverMode 主持人 港口 remoteAddress 远程端口 OverrideLocalBinding reconnectInterval receiveTimeout 缓冲区...