2

ここでは、近親者のマッピングを行っています$('Nok')(マッピング表を参照)。

次に、これを処理するために、以下のJavascriptがあります。私がこれを試みている理由は、複数の近親者セグメントが通過する場合があるためです。その場合、mirth は「DETAILS: TypeError: Assignment to lists with multiple items 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++;
}

しかし、残念ながら私のスクリプトは機能しません。基本的に、エラーはスローされませんが、複数のセグメントに対して想定されていることは実行されません。単一のセグメントで機能します

これは私のアウトバウンドメッセージです:

NK1|1|BENNY^BEN^^^MR^^L|<12K1.3.1>22<12K1.3.1>627^^RELTN|きれいな緑^ロンドン^""^""^GH15 3KW^^^Q36|| |^^RELT|20030321|||||||9 NK1|2|^^^^^^L|SP^^RELTN|41 パイパーズグリーン^ロンドン^""^""^NW9 8UH^^^Q36| ||^^RELT|20010923|||||||9

4

3 に答える 3

3

私はあなたのすべてのコードをフォローしているわけではありませんが、ここから始めましょう。

  1. すべてのセグメントをループするには、次の形式を試してください。

    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

いくつかの問題があります。

  1. 最初の変換ステップでの割り当て$('Nok')は、最初の HL7 セグメントのみです。以降の手順には影響しません。
  2. あなたのJavascript関数は、ループへの2つの異なるアプローチを混合/一致させています-一方ではfor eachを実行しようとし、他方iでは割り当てられてインクリメントされるが実際には使用されないループ制御変数として使用します。

#2のみを修正すると、最初のセグメントがn回繰り返されることになると思います。

私がお勧めするのは、このすべての作業を単一の Javascript トランスフォーマー ステップに移動することです。

まず、RegEx Mapping ステップで生成された 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 に答える
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 に答える