2016-10-11 8 views
0

Mirth Connect Interoperability serverを使用しています。HL7にメッセージを作成しようとしています。私はメッセージにカスタムOBX segmentsの番号を追加しようとしていますが、Mirthは私に苦労しています。HL7 with Mirth:二重配列番号のセグメントを避けるにはどうすればよいですか?

私はこれを言っライン持っている私のテンプレートで

OBX|1|ED|CODE^NAME^COMPANY||^application^pdf^Base64^VeryLongBase64String||||||F 

を、カスタムスクリプトで、私は手動でもいくつかのより多くの情報を追加したい:

createSegment('OBX', tmp, 1); 
tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

これは、次のメッセージを作成し、 :

MSH|^~\&|COMPANY|COMPANY|||20161011120822||ORU^R01|0000029|1|2.4|||AL|NE 
PID|1||9999999^^^LOCAL^PI||||19861020|F| 
STUFF^L|||20161011120822|20161011120822| 
OBX|1|ED|Q001^121^THECOMPANY||^application^pdf^Base64^VeryLongBase64String||||||F 
OBX|1|ST 
OBX|2|ST 

しかし、あなたが見ることができるように私はで始まる2つの行を持っています私は、余分な情報をOBX|2|から始めるようには、私は私のスクリプトの最初の3行をコメントアウト変更:

//createSegment('OBX', tmp, 1); 
//tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
//tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

それは言って、私にエラーを与える:

Transformer error 
ERROR MESSAGE: Error evaluating transformer 
com.mirth.connect.server.MirthJavascriptTransformerException: 
CHANNEL: test setup 
CONNECTOR: sourceConnector 
SCRIPT SOURCE: TRANSFORMER 
SOURCE CODE:  
46: //createSegment('OBX', tmp, 1); 
47: //tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
48: //tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
49: createSegment('OBX', tmp, 2); 
50: tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
51: tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 
52: 
LINE NUMBER: 50 
DETAILS: TypeError: Cannot read property "OBX.1" from undefined 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:50 (doTransform) 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:126 (doScript) 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:128 
    at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.call(JavaScriptFilterTransformer.java:154) 
    at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.call(JavaScriptFilterTransformer.java:119) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

なぜすることができます1がすでに存在する場合、シーケンス番号2の新しいセグメントを追加しますか?そしてなぜ同じシーケンス番号で始まる2本のOBXラインを受け入れるのですか?

すべてのヒントを歓迎します。

答えて

0

これを試してください:

createSegment('OBX', tmp, 1); 
tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 3; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

最初OBXがTMPである[ 'OBX'] [0] [ 'OBX.1'] [ 'OBX.1.1'] = 1。これは最初のOBXインスタンスである[0]です。 "tmp ['OBX'] [1] ['OBX.1'] ['OBX.1.1'] = 1; 2番目のOBXを追加しました| 1 |上記のようにコード化されていたはずです。

createSegment(segmentName、msg、i)ここで、iはセグメントインスタンスです。

関連する問題