2

Here I am doing some mapping for Next of Kin $('Nok') (see mapping table).

Then to process this I have the Javascript below. The reason that I am trying this was is, at times we get multiple next of kin segments come through. If that is the case, mirth throws error as ‘DETAILS: TypeError: Assignment to lists with more than one item is not supported’</p>

var i = 0;
msg['NK1'][i]['NK1.3']['NK1.3.1'] = $('NoK')

for each ( nk1 in msg.NK1) {
   nk1 = $('NoK').toString();
   i++;
}

But unfortunately my script doesn’t work. Basically, it doesn’t throw any error, but it doesn’t do what it supposed to do for multiple segment. It does works for a single segment

This my outbound message:

NK1|1|BENNY^BEN^^^MR^^L|<12K1.3.1>22<12K1.3.1>627^^RELTN|PRETTY GREEN^LONDON^""^""^GH15 3KW^^^Q36|||^^RELT|20030321|||||||9 NK1|2|^^^^^^L|SP^^RELTN|41 PIPERS GREEN^LONDON^""^""^NW9 8UH^^^Q36|||^^RELT|20010923|||||||9

4

3 回答 3

3

我没有遵循您的所有代码,但这是一个开始。

  1. 要遍历所有段,请尝试 tis 格式:

    for each (seg in msg.children()) {
        if (seg.name().toString() == "NK1") {
            foo = bar;
        }
    }
    
  2. 遍历段的循环从 0 开始。不过,多个段从 1 开始编号。

如果您查看输入消息,它将是这样的:

NK1|1| ...
NK1|2| ...
NK1|3| ...

即使 javascript 数组从零开始。是的,这很混乱。

我不认识:

$('NoK')

...所以我不确定你在做什么。但我可能只是度过了一个缓慢的早晨。

于 2012-03-30T15:16:48.303 回答
3
for(var i = 0; i< msg['NK1'].length(); i++) {
    msg['NK1'][i]['NK1.3']['NK1.3.1'] = YourTransformerFunction(msg['NK1'][i]['NK1.3']['NK1.3.1'].toString());
}

工作所需的长度()

于 2012-09-11T16:28:23.280 回答
3

我看到了几个问题。

  1. 您在第一个变压器步骤中的分配$('Nok')仅适用于第一个 HL7 段;它不会影响任何后续步骤。
  2. 您的 Javascript 函数正在混合/匹配两种不同的循环方法 - 一方面尝试为每个方法执行一次,另一方面使用i作为循环控制变量,该变量已分配和递增但从未真正使用过。

如果您仅修复 #2,我希望您最终将第一段重复 n 次。

我建议将所有这些工作转移到单个 Javascript 转换器步骤中。

您可以首先查看由您的 RegEx 映射步骤生成的 javascript,并将其转换为 JS 转换器中的一个函数 - 一个将其i作为变量的函数。然后,您可以将循环修复为调用您的函数的简单 for 循环。类似于以下内容:

for(var i = 0; i< msg['NK1'].length; i++) {
    msg['NK1'][i]['NK1.3']['NK1.3.1'] 
        = YourTransformerFunction(msg['NK1'][i]['NK1.3']['NK1.3.1'].toString());
}

您可以通过将转换器导出为 XML 并打开该文件来查看映射器函数生成的 JavaScript。您需要对 HTML 编码值进行一些替换,但核心将在那里。

于 2012-03-30T15:06:57.703 回答