我的源连接器类型为“文件阅读器”,它正在读取 HL7 文件,目标连接器类型为“数据库编写器”。我的数据库表有两列
- 参与者_信息
- SPR_信息
我想将单个 HL7 文件转换为两个 XML 文件,一个用于 Participant_Information 列,另一个用于 SPR_Information 列,并且需要将两者作为单个记录插入到数据库表中。
我能够一次插入一个 XML,但无法找到将这两个 XML 作为单个记录插入数据库表的方法。
非常感谢任何帮助!
我的答案基于这个问题,以及你在评论中对我的回应。
请注意,就我而言,我引用的是 Mirth 的 1.8.2 版本。如果您使用的是更新的东西,虽然我相信这里描述的技术仍然有效,但用户界面可能会偏离我的指示。
我在这里提出两种解决这个问题的技术。虽然我个人倾向于技术 1,但如果您对 Javascript 和 E4X 不太熟悉,那么技术 2 可能会更受欢迎。
使用 Javascript 转换器而不是消息生成器。使用消息构建器的挑战在于它获取输入消息,并将其转换为单个输出消息。Javascript 给你更多的力量,但前提是你知道语言。
使用单个 Javascript 转换器制作消息的两个副本。使用 Javascript E4X 表示法根据需要转换每个变量,然后将它们都存储在 channelMap 中。
// init local message variables
var messageParticipant= msg;
var messageSPR= msg.copy();
// messageParticipant transformations using E4X notation: example
messageParticipant['PID']['PID.5']['PID.5.1'][0] = 'Blah';
// messageSPR transformations using E4X notation: example
messageSPR['PID']['PID.5']['PID.5.1'][0] = 'Hey There';
// stick messages in channel map so they can be accessed in your SQL script
channelMap.put('messageParticipant', messageParticipant);
channelMap.put('messageSPR',messageSPR);
在您的 SQL 代码中引用两个 channelMap 变量。
INSERT INTO report_queue (PARTICIPANT_IDENTIFICATION, SPR_Information)
VALUES (${'messageParticipant'}, ${'messageSPR'})
如果您不太习惯使用 Javascript 进行转换,您可能会发现这种技术更容易一些——不过,我觉得解释起来有点棘手。
基本上,您将拥有三个目的地,并且您将强制它们按顺序执行。第一个目的地为 PARTICIPANT_IDENTIFICATION 构建 XML,第二个目的地为 SPR_Information 构建 XML。前两个目的地实际上并没有在除了 channelMap 之外的任何地方发送消息。第三个目的地利用前两个的结果,并运行 SQL 代码。
在摘要选项卡上,确保选中“同步频道”。这将强制三个目的地按顺序执行。
在目标选项卡上,除了现有的数据库编写器之外,还创建两个 Javascript 编写器。组织三个目的地按此顺序出现:
Destination Connector Type
---------------------------------------
Build Participant JavaScript Writer
Build SPR JavaScript Writer
SQL Database Writer
选择目标“Build Participant”,然后在 Javascript 文本区域中输入以下内容:
channelMap.put('messageParticipant', messageObject.getTransformedData());
选择目标“Build SPR”,然后在 Javascript 文本区域中输入以下内容:
channelMap.put('messageSPR', messageObject.getTransformedData());
在 Sql 目标中,使用与技术 1 中相同的 SQL 代码。
INSERT INTO report_queue (PARTICIPANT_IDENTIFICATION, SPR_Information)
VALUES (${'messageParticipant'}, ${'messageSPR'})
对于两个 Javascript 目标中的每一个: i. 点击“编辑变压器” ii. 单击选项卡“消息模板 iii. 在“出站消息模板”部分中,确保数据类型设置为 XML。iv. 添加您需要的所有转换器步骤,并随意使用类型消息生成器。(在目标构建参与者,您将添加适用于参与者 XML 的转换器步骤。同样适用于目标构建 SPR)。
SQL 目标不应有任何转换器。如果是这样,它们不会对输出产生任何影响。
祝你好运