如何从单个HL7文件生成两个XML文件,并将它们作为单个记录插入两个不同的列?

时间:2012-10-04 06:51:13

标签: xml hl7 mirth

我有源连接器类型为'文件阅读器'这是读取HL7文件和目标连接器类型为'数据库编写器'。 我的数据库表有两列

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

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

    非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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

选择目标“构建参与者”,然后在Javascript文本区域中输入以下内容:

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

d

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

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

例如

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

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

F。

对于两个Javascript目标中的每一个: 一世。点击“编辑变形金刚” II。单击“消息模板”选项卡 III。在“出站消息模板”部分中,确保将数据类型设置为XML。 IV。添加所需的所有变换器步骤,并随意使用Message Builder类型。 (在目标Build Participant中,您将添加适用于Participant XML的转换器步骤。同样适用于目标Build SPR)。

SQL目标不应该包含任何变换器。如果是这样,它们将不会对输出产生任何影响。

祝你好运