I want to extract a hl7 message from database and transform it to get mapped data,from which different segments will be extracted and stored in different tables in the database.
I used this,as told by chris:
msg = SerializerFactory.getHL7Serializer(useStrictParser ,
useStrictValidation,
handleRepetitions).
fromXML(msg['msg_text'].toXMLString());
Now it gives this error:
ERROR-300: Transformer error
ERROR MESSAGE: Error evaluating transformer
com.webreach.mirth.server.MirthJavascriptTransform erException:
CHANNEL: example
CONNECTOR: Destination 1
SCRIPT SOURCE: Transformer
LINE NUMBER: 9
DETAILS: TypeError: Cannot call method "toString" of undefined
at com.webreach.mirth.server.mule.transformers.JavaSc riptTransformer.evaluateTransformerScript(JavaScri ptTransformer.java:414)
at com.webreach.mirth.server.mule.transformers.JavaSc riptTransformer.transform(JavaScriptTransformer.ja va:286)
at org.mule.transformers.AbstractEventAwareTransforme r.doTransform(AbstractEventAwareTransformer.java:4 8)
at org.mule.transformers.AbstractTransformer.transfor m(AbstractTransformer.java:197)
at org.mule.impl.MuleEvent.getTransformedMessage(Mule Event.java:251)
at com.webreach.mirth.server.controllers.MessageObjec tController.getMessageObjectFromEvent(MessageObjec tController.java:482)
at com.webreach.mirth.connectors.file.FileMessageDisp atcher.doDispatch(FileMessageDispatcher.java:79)
at org.mule.providers.AbstractMessageDispatcher$Worke r.run(AbstractMessageDispatcher.java:257)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Unknown Source
my channel is:
- <com.webreach.mirth.model.Channel>
<id>b4d73bd1-3d31-46f5-8044-98bc6d934633</id>
<name>example2</name>
<description />
<enabled>true</enabled>
<version>1.6.1.2750</version>
<revision>21</revision>
- <sourceConnector>
<name>sourceConnector</name>
- <properties>
<property name="ack">UPDATE msg_info SET msg_status = '1' WHERE msg_sr_no = ${msg_sr_no}</property>
<property name="password">sql</property>
<property name="URL">jdbc
dbc:mirth</property>
<property name="pollingTime">12:00 AM</property>
<property name="username">dba</property>
<property name="ackScript" />
<property name="host">query</property>
<property name="useScript">0</property>
<property name="pollingType">interval</property>
<property name="driver">sun.jdbc.odbc.JdbcOdbcDriver</property>
<property name="useAck">1</property>
<property name="pollingFrequency">5000</property>
<property name="script" />
<property name="query">SELECT msg_text, msg_sr_no from msg_info where msg_status = '2'</property>
<property name="DataType">Database Reader</property>
</properties>
- <transformer>
<steps />
<inboundTemplate><?xml version="1.0" encoding="UTF-8"?> <result> <msg_text>value</msg_text> <msg_sr_no>value</msg_sr_no> </result></inboundTemplate>
<outboundTemplate />
<inboundProtocol>XML</inboundProtocol>
<outboundProtocol>XML</outboundProtocol>
<inboundProperties />
<outboundProperties />
</transformer>
- <filter>
<rules />
</filter>
<transportName>Database Reader</transportName>
<mode>SOURCE</mode>
<enabled>true</enabled>
</sourceConnector>
- <destinationConnectors>
- <com.webreach.mirth.model.Connector>
<name>Destination 1</name>
- <properties>
<property name="binary">0</property>
<property name="charsetEncoding">DEFAULT_ENCODING</property>
<property name="host">C:/destiny</property>
<property name="outputPattern">abcd.txt</property>
<property name="DataType">File Writer</property>
<property name="template">${hl7message} ${message.encodedData}</property>
<property name="outputAppend">1</property>
</properties>
- <transformer>
- <steps>
- <com.webreach.mirth.model.Step>
<sequenceNumber>0</sequenceNumber>
<name>New Step</name>
<script>var useStrictParser = false; var useStrictValidation = false; var handleRepetitions = false; //var tempmsg; //tempmsg = new XML(msg['msg_text'].toString()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(messageObject.getRawDat a()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(msg); msg=SerializerFactory.getHL7Serializer(useStrictPa rser, useStrictValidation ,handleRepetitions).fromXML(msg['msg_text'].toXMLString());</script>
<type>JavaScript</type>
- <data class="map">
- <entry>
<string>Script</string>
<string>var useStrictParser = false; var useStrictValidation = false; var handleRepetitions = false; //var tempmsg; //tempmsg = new XML(msg['msg_text'].toString()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(messageObject.getRawDat a()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(msg); msg=SerializerFactory.getHL7Serializer(useStrictPa rser, useStrictValidation ,handleRepetitions).fromXML(msg['msg_text'].toXMLString());</string>
</entry>
</data>
</com.webreach.mirth.model.Step>
- <com.webreach.mirth.model.Step>
<sequenceNumber>1</sequenceNumber>
<name>hl7message</name>
<script>connectorMap.put('hl7message', validate(msg['msg_text'].toXMLString(), '', new Array()));</script>
<type>Mapper</type>
- <data class="map">
- <entry>
<string>Mapping</string>
<string>msg['msg_text'].toXMLString()</string>
</entry>
- <entry>
<string>Variable</string>
<string>hl7message</string>
</entry>
- <entry>
<string>RegularExpressions</string>
<list />
</entry>
- <entry>
<string>isGlobal</string>
<string>connector</string>
</entry>
- <entry>
<string>DefaultValue</string>
<string />
</entry>
</data>
</com.webreach.mirth.model.Step>
</steps>
<inboundTemplate><?xml version="1.0" encoding="UTF-8"?> <result> <msg_text>value</msg_text> <msg_sr_no>value</msg_sr_no> </result></inboundTemplate>
<outboundTemplate />
<inboundProtocol>XML</inboundProtocol>
<outboundProtocol>HL7V2</outboundProtocol>
- <inboundProperties>
<property name="useStrictValidation">false</property>
<property name="useStrictParser">true</property>
</inboundProperties>
- <outboundProperties>
<property name="useStrictParser">false</property>
<property name="encodeEntities">true</property>
<property name="handleRepetitions">false</property>
<property name="useStrictValidation">false</property>
</outboundProperties>
</transformer>
- <filter>
- <rules>
- <com.webreach.mirth.model.Rule>
<sequenceNumber>0</sequenceNumber>
<name>New Rule</name>
<script>return true;</script>
<operator>NONE</operator>
</com.webreach.mirth.model.Rule>
</rules>
</filter>
<transportName>File Writer</transportName>
<mode>DESTINATION</mode>
<enabled>true</enabled>
</com.webreach.mirth.model.Connector>
</destinationConnectors>
- <properties>
<property name="synchronous">true</property>
<property name="removeNamespace">true</property>
<property name="encryptData">false</property>
<property name="store_messages">true</property>
<property name="dont_store_filtered">false</property>
<property name="initialState">started</property>
<property name="max_message_age">-1</property>
<property name="transactional">false</property>
<property name="error_messages_only">false</property>
</properties>
<preprocessingScript>// Modify the message variable below to pre process data return message;</preprocessingScript>
<postprocessingScript>// This script executes once after a message has been processed return;</postprocessingScript>
<deployScript>// This script executes once when the mule engine is started // You only have access to the globalMap here to persist data return;</deployScript>
<shutdownScript>// This script executes once when the mule engine is stopped // You only have access to the globalMap here to persist data return;</shutdownScript>
</com.webreach.mirth.model.Channel>
I used this,as told by chris:
msg = SerializerFactory.getHL7Serializer(useStrictParser ,
useStrictValidation,
handleRepetitions).
fromXML(msg['msg_text'].toXMLString());
Now it gives this error:
ERROR-300: Transformer error
ERROR MESSAGE: Error evaluating transformer
com.webreach.mirth.server.MirthJavascriptTransform erException:
CHANNEL: example
CONNECTOR: Destination 1
SCRIPT SOURCE: Transformer
LINE NUMBER: 9
DETAILS: TypeError: Cannot call method "toString" of undefined
at com.webreach.mirth.server.mule.transformers.JavaSc riptTransformer.evaluateTransformerScript(JavaScri ptTransformer.java:414)
at com.webreach.mirth.server.mule.transformers.JavaSc riptTransformer.transform(JavaScriptTransformer.ja va:286)
at org.mule.transformers.AbstractEventAwareTransforme r.doTransform(AbstractEventAwareTransformer.java:4 8)
at org.mule.transformers.AbstractTransformer.transfor m(AbstractTransformer.java:197)
at org.mule.impl.MuleEvent.getTransformedMessage(Mule Event.java:251)
at com.webreach.mirth.server.controllers.MessageObjec tController.getMessageObjectFromEvent(MessageObjec tController.java:482)
at com.webreach.mirth.connectors.file.FileMessageDisp atcher.doDispatch(FileMessageDispatcher.java:79)
at org.mule.providers.AbstractMessageDispatcher$Worke r.run(AbstractMessageDispatcher.java:257)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Unknown Source
my channel is:
- <com.webreach.mirth.model.Channel>
<id>b4d73bd1-3d31-46f5-8044-98bc6d934633</id>
<name>example2</name>
<description />
<enabled>true</enabled>
<version>1.6.1.2750</version>
<revision>21</revision>
- <sourceConnector>
<name>sourceConnector</name>
- <properties>
<property name="ack">UPDATE msg_info SET msg_status = '1' WHERE msg_sr_no = ${msg_sr_no}</property>
<property name="password">sql</property>
<property name="URL">jdbc

<property name="pollingTime">12:00 AM</property>
<property name="username">dba</property>
<property name="ackScript" />
<property name="host">query</property>
<property name="useScript">0</property>
<property name="pollingType">interval</property>
<property name="driver">sun.jdbc.odbc.JdbcOdbcDriver</property>
<property name="useAck">1</property>
<property name="pollingFrequency">5000</property>
<property name="script" />
<property name="query">SELECT msg_text, msg_sr_no from msg_info where msg_status = '2'</property>
<property name="DataType">Database Reader</property>
</properties>
- <transformer>
<steps />
<inboundTemplate><?xml version="1.0" encoding="UTF-8"?> <result> <msg_text>value</msg_text> <msg_sr_no>value</msg_sr_no> </result></inboundTemplate>
<outboundTemplate />
<inboundProtocol>XML</inboundProtocol>
<outboundProtocol>XML</outboundProtocol>
<inboundProperties />
<outboundProperties />
</transformer>
- <filter>
<rules />
</filter>
<transportName>Database Reader</transportName>
<mode>SOURCE</mode>
<enabled>true</enabled>
</sourceConnector>
- <destinationConnectors>
- <com.webreach.mirth.model.Connector>
<name>Destination 1</name>
- <properties>
<property name="binary">0</property>
<property name="charsetEncoding">DEFAULT_ENCODING</property>
<property name="host">C:/destiny</property>
<property name="outputPattern">abcd.txt</property>
<property name="DataType">File Writer</property>
<property name="template">${hl7message} ${message.encodedData}</property>
<property name="outputAppend">1</property>
</properties>
- <transformer>
- <steps>
- <com.webreach.mirth.model.Step>
<sequenceNumber>0</sequenceNumber>
<name>New Step</name>
<script>var useStrictParser = false; var useStrictValidation = false; var handleRepetitions = false; //var tempmsg; //tempmsg = new XML(msg['msg_text'].toString()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(messageObject.getRawDat a()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(msg); msg=SerializerFactory.getHL7Serializer(useStrictPa rser, useStrictValidation ,handleRepetitions).fromXML(msg['msg_text'].toXMLString());</script>
<type>JavaScript</type>
- <data class="map">
- <entry>
<string>Script</string>
<string>var useStrictParser = false; var useStrictValidation = false; var handleRepetitions = false; //var tempmsg; //tempmsg = new XML(msg['msg_text'].toString()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(messageObject.getRawDat a()); //SerializerFactory.getHL7Serializer(useStrictParser , useStrictValidation, handleRepetitions).fromXML(msg); msg=SerializerFactory.getHL7Serializer(useStrictPa rser, useStrictValidation ,handleRepetitions).fromXML(msg['msg_text'].toXMLString());</string>
</entry>
</data>
</com.webreach.mirth.model.Step>
- <com.webreach.mirth.model.Step>
<sequenceNumber>1</sequenceNumber>
<name>hl7message</name>
<script>connectorMap.put('hl7message', validate(msg['msg_text'].toXMLString(), '', new Array()));</script>
<type>Mapper</type>
- <data class="map">
- <entry>
<string>Mapping</string>
<string>msg['msg_text'].toXMLString()</string>
</entry>
- <entry>
<string>Variable</string>
<string>hl7message</string>
</entry>
- <entry>
<string>RegularExpressions</string>
<list />
</entry>
- <entry>
<string>isGlobal</string>
<string>connector</string>
</entry>
- <entry>
<string>DefaultValue</string>
<string />
</entry>
</data>
</com.webreach.mirth.model.Step>
</steps>
<inboundTemplate><?xml version="1.0" encoding="UTF-8"?> <result> <msg_text>value</msg_text> <msg_sr_no>value</msg_sr_no> </result></inboundTemplate>
<outboundTemplate />
<inboundProtocol>XML</inboundProtocol>
<outboundProtocol>HL7V2</outboundProtocol>
- <inboundProperties>
<property name="useStrictValidation">false</property>
<property name="useStrictParser">true</property>
</inboundProperties>
- <outboundProperties>
<property name="useStrictParser">false</property>
<property name="encodeEntities">true</property>
<property name="handleRepetitions">false</property>
<property name="useStrictValidation">false</property>
</outboundProperties>
</transformer>
- <filter>
- <rules>
- <com.webreach.mirth.model.Rule>
<sequenceNumber>0</sequenceNumber>
<name>New Rule</name>
<script>return true;</script>
<operator>NONE</operator>
</com.webreach.mirth.model.Rule>
</rules>
</filter>
<transportName>File Writer</transportName>
<mode>DESTINATION</mode>
<enabled>true</enabled>
</com.webreach.mirth.model.Connector>
</destinationConnectors>
- <properties>
<property name="synchronous">true</property>
<property name="removeNamespace">true</property>
<property name="encryptData">false</property>
<property name="store_messages">true</property>
<property name="dont_store_filtered">false</property>
<property name="initialState">started</property>
<property name="max_message_age">-1</property>
<property name="transactional">false</property>
<property name="error_messages_only">false</property>
</properties>
<preprocessingScript>// Modify the message variable below to pre process data return message;</preprocessingScript>
<postprocessingScript>// This script executes once after a message has been processed return;</postprocessingScript>
<deployScript>// This script executes once when the mule engine is started // You only have access to the globalMap here to persist data return;</deployScript>
<shutdownScript>// This script executes once when the mule engine is stopped // You only have access to the globalMap here to persist data return;</shutdownScript>
</com.webreach.mirth.model.Channel>
Comment