2

我的源连接器类型为“文件阅读器”,它正在读取 HL7 文件,目标连接器类型为“数据库编写器”。我的数据库表有两列

  1. 参与者_信息
  2. SPR_信息

我想将单个 HL7 文件转换为两个 XML 文件,一个用于 Participant_Information 列,另一个用于 SPR_Information 列,并且需要将两者作为单个记录插入到数据库表中。

我能够一次插入一个 XML,但无法找到将这两个 XML 作为单个记录插入数据库表的方法。

非常感谢任何帮助!

4

1 回答 1

4

我的答案基于这个问题,以及你在评论中对我的回应。

请注意,就我而言,我引用的是 Mirth 的 1.8.2 版本。如果您使用的是更新的东西,虽然我相信这里描述的技术仍然有效,但用户界面可能会偏离我的指示。

我在这里提出两种解决这个问题的技术。虽然我个人倾向于技术 1,但如果您对 Javascript 和 E4X 不太熟悉,那么技术 2 可能会更受欢迎。

技术1。

使用 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'})

技术2。

如果您不太习惯使用 Javascript 进行转换,您可能会发现这种技术更容易一些——不过,我觉得解释起来有点棘手。

基本上,您将拥有三个目的地,并且您将强制它们按顺序执行。第一个目的地为 PARTICIPANT_IDENTIFICATION 构建 XML,第二个目的地为 SPR_Information 构建 XML。前两个目的地实际上并没有在除了 channelMap 之外的任何地方发送消息。第三个目的地利用前两个的结果,并运行 SQL 代码。

一种。

在摘要选项卡上,确保选中“同步频道”。这将强制三个目的地按顺序执行。

湾。

在目标选项卡上,除了现有的数据库编写器之外,还创建两个 Javascript 编写器。组织三个目的地按此顺序出现:

Destination           Connector Type
---------------------------------------
Build Participant     JavaScript Writer
Build SPR             JavaScript Writer
SQL                   Database Writer

C。

选择目标“Build Participant”,然后在 Javascript 文本区域中输入以下内容:

channelMap.put('messageParticipant', messageObject.getTransformedData());

d。

选择目标“Build SPR”,然后在 Javascript 文本区域中输入以下内容:

 channelMap.put('messageSPR', messageObject.getTransformedData());

e.

在 Sql 目标中,使用与技术 1 中相同的 SQL 代码。

INSERT INTO report_queue (PARTICIPANT_IDENTIFICATION, SPR_Information)
VALUES (${'messageParticipant'}, ${'messageSPR'})

F。

对于两个 Javascript 目标中的每一个: i. 点击“编辑变压器” ii. 单击选项卡“消息模板 iii. 在“出站消息模板”部分中,确保数据类型设置为 XML。iv. 添加您需要的所有转换器步骤,并随意使用类型消息生成器。(在目标构建参与者,您将添加适用于参与者 XML 的转换器步骤。同样适用于目标构建 SPR)。

G。

SQL 目标不应有任何转换器。如果是这样,它们不会对输出产生任何影响。

祝你好运

于 2012-10-06T05:54:12.163 回答