Announcement

Collapse
No announcement yet.

LLP local loopback??

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • LLP local loopback??

    I am evaluating Mirth for my company. We need to ensure that it can handle the traffic load we expect and also the SOAP support in 1.2 . I hope to contribute to the project by testing, documenting, and benchmarking Mirth.

    My capacity testing process is:
    1. An application builds some testing data and fills a table.
    2. The same application slowly reads data from that table and puts it into an output-queue table.
    3. Mirth reads that table and sends the HL7 data out on an LLP connection
    4. Another Mirth channel is listening for LLP connections
    5. The 2nd channel writes to a different database

    The final test will be done with two Mirth servers running on two seperate machines. For now I am testing the test and making sure that my testing model is working.

    Right now I am having some trouble getting a local loopback LLP connection established. I am able to read from my 'output queue' and write to files, but it doesn't seem to be able to make the LLP connection and send data over TCP.

    I get the following exception:
    ERROR org.mule.impl.DefaultExceptionStrategy:
    ************************************************** ******************************

    Message : TypeError: error: Unexpected character encountered (lex state
    3): &#039;|&#039; (<cmd>#1) (org.mozilla.javascript.EcmaError)
    Type : org.mule.umo.transformer.TransformerException
    Code : 64999
    Transformer : Transformer{name=&#039;10_destination_1&#039;, returnClass=false, retur
    nClass=false, sourceTypes=[]}
    JavaDoc : http://mule.codehaus.org/docs/apidoc...umo/transforme
    r/TransformerException.html
    ************************************************** ******************************

    My first channel (read from DB to LLP Sender):
    Code:
    <com.webreach.mirth.model.Channel>
    <id>9</id>
    <name>mirth_abuse_A</name>
    <description/>
    <enabled>true</enabled>
    <version>1.1.0</version>
    <revision>0</revision>
    <direction>OUTBOUND</direction>
    <mode>ROUTER</mode>
    ?
    	<sourceConnector>
    <name>sourceConnector</name>
    ?
    	<properties>
    <property name="pollingFrequency" value="5000"/>
    <property name="username" value="XXXXXXXX"/>
    <property name="DataType" value="Database Reader"/>
    <property name="useAck" value="1"/>
    <property name="URL" value="jdbc:jtds:sqlserver://XXXXXXXX:1434/mirth_abuse;domain=XXXX"/>
    <property name="query" value="SELECT pk, field_1, field_2, field_3 FROM queue WHERE been_read = 0"/>
    <property name="password" value="XXXXXX"/>
    <property name="host" value="query"/>
    <property name="driver" value="net.sourceforge.jtds.jdbc.Driver"/>
    <property name="ack" value="UPDATE queue SET been_read = 1 WHERE pk = ${pk}"/>
    </properties>
    ?
    	<transformer>
    <steps/>
    </transformer>
    ?
    	<filter>
    <rules/>
    </filter>
    <transportName>Database Reader</transportName>
    </sourceConnector>
    ?
    	<destinationConnectors>
    ?
    	<com.webreach.mirth.model.Connector>
    <name>Destination 2</name>
    ?
    	<properties>
    <property name="tcpProtocolClassName" value="org.mule.providers.tcp.protocols.LlpProtocol"/>
    <property name="messageEnd" value="0x1C"/>
    <property name="keepSendSocketOpen" value="0"/>
    <property name="bufferSize" value="65536"/>
    <property name="port" value="6661"/>
    <property name="sendTimeout" value="5000"/>
    <property name="messageStart" value="0x0B"/>
    <property name="maxRetryCount" value="50"/>
    <property name="charEncoding" value="hex"/>
    <property name="DataType" value="LLP Sender"/>
    <property name="recordSeparator" value="0x0D"/>
    <property name="host" value="127.0.0.1"/>
    </properties>
    ?
    	<transformer>
    ?
    	<steps>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>0</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.1&#039;].text()[0] = msg[&#039;pk&#039;].text()[0];
    </script>
    <type>HL7 Message Builder</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>msg[&#039;pk&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.1&#039;]</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>1</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.3&#039;].text()[0] = msg[&#039;field_1&#039;].text()[0];
    </script>
    <type>HL7 Message Builder</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>msg[&#039;field_1&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.3&#039;]</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>2</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.4&#039;].text()[0] = msg[&#039;field_2&#039;].text()[0];
    </script>
    <type>HL7 Message Builder</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>msg[&#039;field_2&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.4&#039;]</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>3</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.5&#039;].text()[0] = msg[&#039;field_3&#039;].text()[0];
    </script>
    <type>HL7 Message Builder</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>msg[&#039;field_3&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.5&#039;]</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    </steps>
    ?
    	<template>
    MSH|^~\&|AccMgr|1|||20060404090746||ADT^A04|6035910|D|2.3.1
    EVN|A04|20060404090742
    PID|1|800888^^^AccMgr^PN|999945682^^^AccMgr^MR^1||TEST^PATIENT MF||19570414|M||W|21 PALM MANOR^^EAST SYRACUSE^NY^130570000^^M|31|||E|M||6635130^^^AccMgr^VN^1|000987655|||2|||||NOT A VETERAN|||N
    PD1||||1335^ALCOTT^KAREN^^^^^^AccMgr^^^^CI|||I
    NK1|1|TEST^MARGARET|W|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||Y
    PV1|1|E|ED^^^1|1|||1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI|1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI||ED||||7|S|||62|6635130^^^AccMgr^VN^1|865^SP KOPP|||||||||||||||||||1||A|||20060404090500
    PV2||^NO||||||20060404090500||||||||||||||||||||||||||||||S
    DG1|1||^HEADACHE|HEADACHE||A|||||||||0
    GT1|1|382582|TEST^PATIENT MF||21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||19570414|M|||000987655||||||||11
    IN1|1|SELF PAY NYS|734|SELF PAY NYS|||||||||||5|TEST^PATIENT MF|1|19570414|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||||||||||||||||||||||11|M||||||382582
    IN1|2|SELF PAY|705|SELFPAY|||||||||||5||1
    IN2|1||000987655
    </template>
    </transformer>
    ?
    	<filter>
    <rules/>
    ?
    	<template>
    MSH|^~\&|AccMgr|1|||20060404090746||ADT^A04|6035910|D|2.3.1
    EVN|A04|20060404090742
    PID|1|800888^^^AccMgr^PN|999945682^^^AccMgr^MR^1||TEST^PATIENT MF||19570414|M||W|21 PALM MANOR^^EAST SYRACUSE^NY^130570000^^M|31|||E|M||6635130^^^AccMgr^VN^1|000987655|||2|||||NOT A VETERAN|||N
    PD1||||1335^ALCOTT^KAREN^^^^^^AccMgr^^^^CI|||I
    NK1|1|TEST^MARGARET|W|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||Y
    PV1|1|E|ED^^^1|1|||1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI|1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI||ED||||7|S|||62|6635130^^^AccMgr^VN^1|865^SP KOPP|||||||||||||||||||1||A|||20060404090500
    PV2||^NO||||||20060404090500||||||||||||||||||||||||||||||S
    DG1|1||^HEADACHE|HEADACHE||A|||||||||0
    GT1|1|382582|TEST^PATIENT MF||21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||19570414|M|||000987655||||||||11
    IN1|1|SELF PAY NYS|734|SELF PAY NYS|||||||||||5|TEST^PATIENT MF|1|19570414|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||||||||||||||||||||||11|M||||||382582
    IN1|2|SELF PAY|705|SELFPAY|||||||||||5||1
    IN2|1||000987655
    </template>
    </filter>
    <transportName>LLP Sender</transportName>
    </com.webreach.mirth.model.Connector>
    </destinationConnectors>
    ?
    	<properties>
    <property name="initialState" value="stopped"/>
    <property name="recv_xml_encoded" value="false"/>
    </properties>
    </com.webreach.mirth.model.Channel>
    My second channel (LLP Listener to DB):

    Code:
    <com.webreach.mirth.model.Channel>
    <id>10</id>
    <name>mirth_abuse_B</name>
    <description/>
    <enabled>true</enabled>
    <version>1.1.0</version>
    <revision>0</revision>
    <direction>INBOUND</direction>
    <mode>ROUTER</mode>
    ?
    	<sourceConnector>
    <name>sourceConnector</name>
    ?
    	<properties>
    <property name="tcpProtocolClassName" value="org.mule.providers.tcp.protocols.LlpProtocol"/>
    <property name="messageEnd" value="0x1C"/>
    <property name="sendACK" value="1"/>
    <property name="keepSendSocketOpen" value="0"/>
    <property name="bufferSize" value="65536"/>
    <property name="port" value="6661"/>
    <property name="messageStart" value="0x0B"/>
    <property name="charEncoding" value="hex"/>
    <property name="DataType" value="LLP Listener"/>
    <property name="recordSeparator" value="0x0D"/>
    <property name="receiveTimeout" value="5000"/>
    <property name="host" value="127.0.0.1"/>
    </properties>
    ?
    	<transformer>
    <steps/>
    </transformer>
    ?
    	<filter>
    <rules/>
    </filter>
    <transportName>LLP Listener</transportName>
    </sourceConnector>
    ?
    	<destinationConnectors>
    ?
    	<com.webreach.mirth.model.Connector>
    <name>Destination 1</name>
    ?
    	<properties>
    <property name="URL" value="jdbc:jtds:sqlserver://XXXXXX/tXXXXXXXX;domain=XXXXXXXX;ssl=request"/>
    <property name="DataType" value="Database Writer"/>
    <property name="password" value="XXXXXXXX"/>
    <property name="host" value="query"/>
    <property name="driver" value="net.sourceforge.jtds.jdbc.Driver"/>
    <property name="query" value="INSERT IGNORE INTO mirth_test_output VALUES (${pk}, &#039;${field_1}&#039;, &#039;${field_2}&#039;, &#039;${field_3}&#039;)"/>
    <property name="username" value="XXXXXXXXXX"/>
    </properties>
    ?
    	<transformer>
    ?
    	<steps>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>0</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    localMap.put(&#039;pk&#039;, hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.1&#039;]);
    </script>
    <type>Mapper</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.1&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>pk</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>1</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    localMap.put(&#039;field_1&#039;, hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.3&#039;]);
    </script>
    <type>Mapper</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.3&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>field_1</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>2</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    localMap.put(&#039;field_2&#039;, hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.4&#039;]);
    </script>
    <type>Mapper</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.4&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>field_2</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    ?
    	<com.webreach.mirth.model.Step>
    <sequenceNumber>3</sequenceNumber>
    <name>New Step</name>
    ?
    	<script>
    localMap.put(&#039;field_3&#039;, hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.5&#039;]);
    </script>
    <type>Mapper</type>
    ?
    	<data class="map">
    ?
    	<entry>
    <string>Mapping</string>
    <string>hl7_xml[&#039;PID&#039;][&#039;PID.11&#039;][&#039;XAD.5&#039;]</string>
    </entry>
    ?
    	<entry>
    <string>Variable</string>
    <string>field_3</string>
    </entry>
    </data>
    </com.webreach.mirth.model.Step>
    </steps>
    ?
    	<template>
    MSH|^~\&|AccMgr|1|||20060404090746||ADT^A04|6035910|D|2.3.1
    EVN|A04|20060404090742
    PID|1|800888^^^AccMgr^PN|999945682^^^AccMgr^MR^1||TEST^PATIENT MF||19570414|M||W|3^^field_1_3^field_2_3^field_3_3^^M|31|||E|M||6635130^^^AccMgr^VN^1|000987655|||2|||||NOT A VETERAN|||N
    PD1||||1335^ALCOTT^KAREN^^^^^^AccMgr^^^^CI|||I
    NK1|1|TEST^MARGARET|W|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||Y
    PV1|1|E|ED^^^1|1|||1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI|1281^MARKHAM^JOSEPH^^^^^^AccMgr^^^^CI||ED||||7|S|||62|6635130^^^AccMgr^VN^1|865^SP KOPP|||||||||||||||||||1||A|||20060404090500
    PV2||^NO||||||20060404090500||||||||||||||||||||||||||||||S
    DG1|1||^HEADACHE|HEADACHE||A|||||||||0
    GT1|1|382582|TEST^PATIENT MF||21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||19570414|M|||000987655||||||||11
    IN1|1|SELF PAY NYS|734|SELF PAY NYS|||||||||||5|TEST^PATIENT MF|1|19570414|21 PALM MANOR^^EAST SYRACUSE^NY^130570000|||||||||||||||||||||||11|M||||||382582
    IN1|2|SELF PAY|705|SELFPAY|||||||||||5||1
    IN2|1||000987655
    </template>
    </transformer>
    ?
    	<filter>
    <rules/>
    </filter>
    <transportName>Database Writer</transportName>
    </com.webreach.mirth.model.Connector>
    </destinationConnectors>
    ?
    	<properties>
    <property name="initialState" value="stopped"/>
    <property name="recv_xml_encoded" value="true"/>
    </properties>
    </com.webreach.mirth.model.Channel>
    Jon Bartels

    Zen is hiring!!!!
    http://consultzen.com/careers/
    Talented healthcare IT professionals wanted. Engineers to sales to management.
    Good benefits, great working environment, genuinely interesting work.

  • #2
    Re: LLP local loopback??

    VICTORY!

    I had &#039;recieves XML&#039; checked for some reason.

    Best message board support ever. As soon as I post here I find the answer myself. You guys must be psychic.
    Jon Bartels

    Zen is hiring!!!!
    http://consultzen.com/careers/
    Talented healthcare IT professionals wanted. Engineers to sales to management.
    Good benefits, great working environment, genuinely interesting work.

    Comment

    Working...
    X