2016-08-10 2 views
0

Je définir un transformateur javascript maintenant, mais toujours pourboire échec lors de la transformation, le code est le suivant:Comment convertir un json en HL7 en utilisant Mirth Connect 3.4.1?

var input = JSON.parse(connectorMessage.getRawData()); 
var patienId = input.PATIENT_ID; 
var patientName = input.PATIENT_NAME; 
var idCard = input.ID_NO; 
var i = 1; 
createSegment("MSH", msg, i++); 
msg['MSH']['MSH.1']['MSH.1.1'] = '|'; 
msg['MSH']['MSH.2']['MSH.2.1'] = '^~\\&'; 
msg['MSH']['MSH.3']['MSH.3.1'] = patienId; 
msg['MSH']['MSH.4']['MSH.4.2'] = patientName; 
msg['MSH']['MSH.5']['MSH.5.1'] = idCard; 

et exceptions sont les suivantes:

Transformer error 
ERROR MESSAGE: Error evaluating transformer 
com.mirth.connect.server.MirthJavascriptTransformerException: 
CHANNEL: WsToHttpTest 
CONNECTOR: sourceConnector 
SCRIPT SOURCE: TRANSFORMER 
LINE NUMBER: 31 
DETAILS: TypeError: Cannot set property "1" of undefined to "" 
    at f4645dbe-9637-415e-ae39-f3dce72d6eaa:31 (createSegment) 
    at f4645dbe-9637-415e-ae39-f3dce72d6eaa:53 (doTransform) 
    at f4645dbe-9637-415e-ae39-f3dce72d6eaa:80 (doScript) 
    at f4645dbe-9637-415e-ae39-f3dce72d6eaa:82 
    at      com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:154) 
at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:119) 
at com.mirth.connect.server.util.javascript.JavaScriptTask.call(JavaScriptTask.java:113) 
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) 

[enter image description here][1] 

Répondre

0

Le problème dans votre code ci-dessus commence par createSegment code. Jusque-là ça fonctionne bien.

Dans votre transformateur sortant, créez un modèle de message factice comme suit: Il s'agit simplement d'un modèle homonyme que vous définissez pour créer une étendue de segment HL7.

MSH|^~\&||||||||||| 
PID|||||||||||||||||||| 
PD1||||| 

Considérant que vous recevez JSON quelque chose comme ceci:

{ 
    "PATIENT_ID": "XXXX", 
    "PATIENT_NAME": "John", 
    "ID_NO": "454141541" 
} 

Je ne pense pas que cette syntaxe est correcte createSegment('MSH', msg, i++); j'ai modifié le code ci-dessus:

var input = JSON.parse(connectorMessage.getRawData()); 
var patienId = input.PATIENT_ID; 
var patientName = input.PATIENT_NAME; 
var idCard = input.ID_NO; 
msg=tmp; 
createSegment('MSH', msg); 
msg['MSH']['MSH.1']= "|"; 
msg['MSH']['MSH.2']= "^~\\&"; 
msg['MSH']['MSH.3']= patienId; 
msg['MSH']['MSH.4']= patientName; 
msg['MSH']['MSH.5']= idCard; 

Vous pouvez également incrément compteur dans le message HL7 de votre manière suggérée aucun mal. Compteur de référence: Adding Multiple NTE segments to HL7 message with Mirth

enter image description here