Patty Aguirre-Romero · Jan 4, 2022

How to make HL7 ORM message wait in Iris until an acknowledgement is received from the EMR system?

We will receive an ORM message in Business Service in Iris. From that ORM, an ADT^A31 message will be generated and sent out to the EMR before the ORM message is sent out. The ORM message has to wait until Iris receives an acknowledgement from the EMR indicating the ADT message was received. Then, the ORM message will be sent to the EMR. What do I need to set up to hold the ORM message until the acknowledgement is received? 

Thank you!

Patty Aguirre-Romero

Product version: IRIS 2021.1
0 376
Discussion (11)4
Log in or sign up to continue

The simplest solution is to make sure the ADT transform/send rule is called before the ORM transform/send rule in the routing rule, set the router's pool size to 1, and enable the "Force Sync Send" option in the router. What happens to the ORM message when the ADT message is NAKed, though, may be problematic.

If you want more granular control over this processing, invoke the transformations and subsequent calls to the operation via a BPL instead of a router. You will be able to evaluate the ACK/NAK response from the called Business Operation responsible for sending the ADT message and take appropriate measures for processing/suspending the ORM message.

Thank you so much Jeffrey! We'll enable the "Force Sync Send". It is the first time we'll use that feature. We'll begin testing in the next few weeks; so, I'll keep your instructions handy. I might need to come back to this post with more questions though.  :-)

Hi Jeffrey,

I created my first BPL. Where do I need to add it to call it? Do I need to add it to the rule? 

Thank you!

A BPL is  a Business Process class, so you would add a new Process to your production and select the name of the BPL you created as the class (rather than, say, a routing engine).

Thanks Jeffrey! Any robust tutorials-videos you’d recommend on BPL creation and usage? The BPL I created still needs a lot of work. 

I need to hold the ORM message for a few seconds in Iris before it goes out to my EMR system. An ADT_A31 needs to reach the EMR first to create a new patient before it receives the ORM. Right now, both message types are being sent exactly at the same time to the EMR.

Hi @Patty Aguirre-Romero !

You may want to have a look at the EnsDemoEnsDemo project on OEX. It has a set of productions with BPL I believe. 

can be installed in any IRIS with ZPM:

USER>zpm "install irishealth-ensdemo"

@Evgeny Shvarov, thanks!

I'll take a look at the EnsDemo project. 

There's a self-paced training session on BPLs here; it should help get you started.

Can you describe the routes that the ADT and ORM messages are taking to get to the downstream system? Are they coming in through different services and/or being delivered downstream over different operations?

@JeffreyDrumm Thanks! I'll go over the training session. 

Here are the routes

  1. One ORM_O01 comes from an external system (Cerner) into one IRIS business service; then,
  2. ORM message is sent to the BP > goes through 2 DTLs. 
    • One DTL creates an ADT_A31 message from the ORM message
    • Epic receives the ADT message and creates a patient, if the patient doesn't exist in it
  3. 2nd DTL processes the ORM message
  4. One rule processes both, ADT and ORM messages, and sends each one to their respective BOs.

The ADT message needs to be sent to Epic first, before the ORM message. I'm struggling with making this happen.

At the moment, IRIS is sending both out exactly at the same time. When the patient doesn't exist in Epic, the ORM fails to post. If patient exists, then ORM files successfully in Epic.  

I think I need a BPL to delay the ORM a few seconds. Do you agree? Creating a BPL is new to me and my team mates. 

Thank you! Any insight will be appreciated. 

Hi Jeffrey!

Just a note to say THANK YOU!!! I completed the training you shared in your previous message and helped me create my first BPL.

The BPL is working, although further testing is needed.