2012-03-30 48 views
2

在這裏我正在做一些映射下一個Kin $('Nok')see mapping table)。歡慶處理多個段

然後爲了處理這個,我有下面的Javascript。我嘗試這種做法的原因是,有時我們會得到多個親屬段。如果是這樣的話,歡笑拋出錯誤爲「DETAILS:類型錯誤:不支持分配到列表與多個項目」

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|PRETTY GREEN^LONDON^""^""^GH15 3KW^^^Q36|||^^RELT|20030321|||||||9 NK1|2|^^^^^^L|SP^^RELTN|41 PIPERS GREEN^LONDON^""^""^NW9 8UH^^^Q36|||^^RELT|20010923|||||||9

+0

看起來你正在嘗試做兩件事之一,但我不知道是哪一件。 1.從NK1字段的第一個實例的NK1.3.1組件提取值,將其映射並將該值寫入所有NK1字段的NK1.3.1。 2.提取並映射來自每個NK1字段的NK1.3.1組件的值 – csj 2012-04-13 20:13:12

回答

3

我看到一對夫婦的問題。

  1. 你分配到$('Nok')在第一變壓器步驟是 第一HL7段僅;它不影響任何後續步驟。
  2. 你的JavaScript功能混合/匹配兩種不同的方法來 looping-,一方面試圖將每個以及使用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並打開該文件來查看由mapper函數生成的JavaScript。您需要爲HTML編碼值做一些替換,但核心將在那裏。

2

我沒有關注你的所有代碼,但這裏有一個開始。

  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') 

...所以我不知道自己在做什麼。但是我可能只是早上有一個緩慢的時間。

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()); 
} 

長度需要()工作。