Mirth Connect 互联互通 第五章 查询发送者通道

栏目: ASP.NET · 发布时间: 6年前

第五章 查询发送者通道

查询发送者通道是我们实现的第一个通道,也是最简单的通道。它的任务就是发送 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 属性,看看有什么不同。


Mirth Connect 互联互通 第五章 查询发送者通道

5-1 Summary 概要标签

再说一遍, Channel Tags 字段项是方便的用于通道的逻辑排序。


Mirth Connect 互联互通 第五章 查询发送者通道

5-2 源连接器入站和出站类型设置

记得,如果你对 Attachment 实验完了,将其值设置回 None

. Source 连接器

切换到 Source 标签,检查 Connector Type 类型设置是否是 Channel Reader Channel Reader 连接器通道其他设置保持不变。


Mirth Connect 互联互通 第五章 查询发送者通道

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)

其他设置保持不变,保存这个通道。

这个目标不需要过滤器,然而,根据我们先前的讨论,该通道调整入站消息,目的是区别不同的消息,这一切由目标转换器脚本来完成。


Mirth Connect 互联互通 第五章 查询发送者通道

5-4 目标连接器设置

单击 Edit Transformer 为本目标创建转换器脚本。有四个脚本,三个是 javascript ,一个是 Message Builder 。该目标是由四个脚本进行顺序工作的。看图 5-5


Mirth Connect 互联互通 第五章 查询发送者通道

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


Mirth Connect 互联互通 第五章 查询发送者通道

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


Mirth Connect 互联互通 第五章 查询发送者通道

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


Mirth Connect 互联互通 第五章 查询发送者通道

5-8 Query Sender 发送消息

打开文件,去确认 MSH 片段的日期时间戳字段的设置,消息识别码的设置,看看 UUID ,看看 QPD 片段取自识别码 10 个字符以后的字符串。


Mirth Connect 互联互通 第五章 查询发送者通道

5-9 Query Sender 通道生成文件的内容

重复上面的步骤,发送另外一个消息,把 QBP^E22^QPB_E22 改为 QBP^ERR2^QPB_E22 ,然后再次发送消息,打开新创建的文件,确认至少有一个字段是不正确的。


Mirth Connect 互联互通 第五章 查询发送者通道

5-10 test Only 转换器步骤改掉的内容

看见了吧,两个字段不正确的,就是我们的 TEST ONLY 转换器步骤改的。

使能或启动 HL7v2-HL7v3 Transformer 禁止掉或删除掉 To File 目标连接器,保存改变。

我们做完了 Query Sender 通道。咱们继续下一个通道的实现。


以上所述就是小编给大家介绍的《Mirth Connect 互联互通 第五章 查询发送者通道》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法学

算法学

哈雷尔 / 霍红卫 / 高等教育 / 2007-6 / 39.00元

本书主要论述计算机科学的基本概念、思想、方法和结果。全书内容由 5个部分组成。“预备知识”部分包括算法学中的基本概念、算法结构、算法所操纵的数据以及描述算法所用的程序设计语言。“方法和分析”部分包括算法设计的方法、算法的正确性和效率、评价算法的方法。“局限性和健壮性”部分包括可执行算法的固有局限性以及实现这些算法的计算机的固有局限性、不可计算性和不可判定性、算法学的通用性及其健壮性。此外,还讨论了......一起来看看 《算法学》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具