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ラインを受け入れるのですか?
すべてのヒントを歓迎します。