Quest and Mirth – 1


Using Mirth for Quest lab, I felt the most difficult thing in Mirth. It took me long to finalize the things. Basically we have been given two works for Quest:
1. Sending an order file (HL7-ORM) to Quest lab
2. Receving the result file (HL7-ORU) from Quest lab.

I will be dealing them into two different posts.
This post is for sending the order file to Quest lab.
 
Mirth Version : 1.8 ( Mirth 2.0 will have a slight different approach)

To note here :
Note#1. Quest expected the order file using WSDL. Hence you need to use SOAP sender as destination to send the ORM file to Quest.
Note#2. Quest expects an encoded message. [Dont send a plain HL7 message]

Lets create a channel in Mirth:
1. Channel Name : Quest-Order
2. Configuring Source : Source can be anything which provides a ORM to Mirth engine. Say its a file reader from D:/Quest/Orders/In
  Because of Note#2, we must use a transformer to encode the message.
  Use a JavaScript transformer at source level with below code to it:
 

  var encodedMsg = FileUtil.encode(messageObject.getRawData().getBytes());
  channelMap.put("EncodedMsg", encodedMsg);
 

    
3. Configuring Destination : Destionation
    Connector Type : SOAP Sender

    While implementing, Quest will be sending you the WSDL URL (or just a web url) and you may get an implementation guide as well. Its huge and will take a lot time to understand and crack the things according to your need. If they dont send you need to ask them.
   
    Irrespective what you get the URL you need to modify it in below manner to fit right with Mirth. Once you choose SOAP Sender under destination fill the things as below:
   
    a) WSDL Path : https://<UserName>:<Password>@cert.hub.care360.com/orders/service?wsdl
    b) Service Endpoint URI : https://<UserName>:<Password>@cert.hub.care360.com:443/orders/service [This will be filled automatically – But I think modify it as I mentioned here]
        SOAP Action URI : Leave blank
    c) Click on “Get Methods” – this should show you all the methods defined in above WSDL
        Select the “SubmitOrder”
    d) Select YES for Generate Envelope
    e) Modify the generated XML as below – Just one change I did under tag  <hl7Order>${EncodedMsg}</hl7Order> – Putting your endcoded variable

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
  <submitOrder xmlns="http://medplus.com/orders">
    <order xmlns="java:com.medplus.serviceHub.orders.webservice">
      <hl7Order>${EncodedMsg}</hl7Order>
    </order>
  </submitOrder>
</soap:Body>
</soap:Envelope>

15 comments on “Quest and Mirth – 1

  1. […] I wrote how to send an ORM file to Quest lab. Please refer this link – Quest and Mirth – 1 Now I am going to write here how to get/receive a result file (ORU) from Quest […]

  2. Chris says:

    Do you perhaps any information how to send && receive using Mirth 2.X.X?

    • schoolhood says:

      Yes Chris. I do have. There are different ways of sending and receiving information in Mirth via connectors like an adapter – HTTP, TCP, FTP, SFTP, Local Driver, Data Base reader/writer, SOAP etc. There is almost 98% similar implementation in Mirth 2.x against 1.8.x. Let me know if you want futher information on it?

  3. Chris says:

    would be very much help if you could. Thank you.

    • schoolhood says:

      @Chris : See if this helps in your issue on credentials:

      If you read the API provided by them or a similar implementation document, they provide you TWO different URLs:
      1. For sending a oder from X to Quest
      https://cert.hub.care360.com/orders/service?wsdl

      2. For receiving a result from Quest to X
      https://cert.hub.care360.com:443/resultsHub/observations/hl7?wsdl

      To verify if you have received the right user name and password,
      Type the same url in your internet explorer or any browser, it will prompt you for the username & password.
      For a valid entry it must show you a complete and big XML file where in you can find various methods used.

      For reacting on ORM – Concentrate on hl7Order tag as per my blog

      ${EncodedMsg}

      @Chirs I have run this on Mirth 2.0.x – I am not sure if this differs a lot in Mirth 2.2.x. Do let me know if is

      If you find any thing further, do mail me.

  4. wikipedia says:

    The popular the page with all the links, the harder
    inevitable that somebody will edit it, taking out the links as
    well as any potential for gaining. This means that a
    web site cannot come with an article on Wikipedia since oahu is the largest of the company’s kind.
    * Involving inside growth process and changes that is constant and self-initiated.

  5. I all the time emailed this weblog post page to all my associates, as if like to read it next my contacts will too.

  6. Shiela says:

    Incredible points. Outstanding arguments. Ҡeep uup thе amazing աork.

  7. Anonymous says:

    3. Configuring Destination : Destionation
    Connector Type : SOAP Sender

    SOAP sender is not there in destination in connector type, then what to do

  8. Anonymous says:

    can you please send the full process for Quest Lab for sending order and receiving result,step by step (means how many channel need to create where i write code for generating order and where i create soap connection…)

  9. Manan Kansara says:

    Do you need to Install SSL Manager for this as I am getting Error while configuring WSDL URL It says:

    Error caching WSDL. Please check the WSDL URL and authentication settings.

    com.mirth.connect.client.core.ClientException: method failed: HTTP/1.1 500 com.eviware.soapui.impl.support.definition.support.InvalidDefinitionException
    com.mirth.connect.client.core.ServerConnection.executePostMethod(ServerConnection.java:140)
    com.mirth.connect.client.core.Client.invokeConnectorService(Client.java:382)
    com.mirth.connect.client.ui.panels.connectors.ConnectorSettingsPanel$1.doInBackground(ConnectorSettingsPanel.java:161)
    javax.swing.SwingWorker$1.call(Unknown Source)
    java.util.concurrent.FutureTask.run(Unknown Source)
    javax.swing.SwingWorker.run(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)

  10. Johan Sanchez says:

    it is possible to listen to a wsdl from an HIS … and then pass it to databases

Leave a Reply to schoolhood Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s