How to identify HL7 order request(ORM) message corresponding to response message(ORR) - hl7

I am into HL7 parser development and still learning HL7. Read articles regarding Orders but still not clear about how to identify the HL7 order request corresponding to HL7 order response message.
Additional Info:
About 'MessageControlId' in MSH segment: The receiving system echoes 'MessageControlId'(10th field of MSH segment) back to the sending system in the Message acknowledgment segment(MSA). By using this ID we can identify the ACK corresponding to the request.
Need to confirm whether response message will also contain this message id.
It would be greatly appreciated if someone could provide some sample ORM and corresponding ORR messages.

The ORM message type was deprecated in version 2.4 and withdrawn in 2.7 so you really shouldn't be using it at all any more. But if you do decide to use it, the matching ORM and ORR messages should have the same value in the ORC-2 (placer order number) field. Note that for a single real world order there may be multiple ORM and ORR messages.

Related

Do we have standard for HL7 OBX-4 containment hierarchy

I am processing HL7 message. OBX-4field gives containment hierarchy.I see different dotted hierarchy in the message.
is there any standard for containment hierarchy dotted number?
For below example. will first dotted 1 always mean MDC_DEV_MON_PHYSIO_MULTI_PARAM_MDS and 2nd dot 5-always mean MDC_DEV_ECG_VMD.
are these number configurable in the medical device.I want to store data uniquely based using MDS/VMD/CHAN.
Right now I am getting HL7 from one source..will these hierarchy will always be same for that source.
is this would be valid if i get hl7 message from other source.
MDC_DEV_MON_PHYSIO_MULTI_PARAM_MDS/MDC_DEV_ECG_VMD/MDC_ECG_HEART_RATE
to Acehive
1.5.0.1
1-MDC_DEV_MON_PHYSIO_MULTI_PARAM_MDS
5-MDC_DEV_ECG_VMD
13-MDC_DEV_METER_PRESS_BLD_VMD
1-MDC_DEV_METER_PRESS_BLD_CHAN
OBX|1||69965^MDC_DEV_MON_PHYSIO_MULTI_PARAM_MDS^MDC|1.0.0.0|||||||X
OBX|2||69798^MDC_DEV_ECG_VMD^MDC|1.5.0.0|||||||X
OBX|3|NM|147842^MDC_ECG_HEART_RATE^MDC|1.5.0.1|88|{beat}/min^{beat}/min^UCUM|||||R|||20200508051804.8340+0530||||DFG~01^^Y71A57FFFE6188F3^EUI-64
OBX|4|NM|148066^MDC_ECG_V_P_C_RATE^MDC|1.5.0.2|7|{beat}/min^{beat}/min^UCUM|||||R|||20200508051804.8340+0530||||DFG~01^^Y71A57FFFE6188F3^EUI-64
OBX|17||69854^MDC_DEV_METER_PRESS_BLD_VMD^MDC|1.13.0.0|||||||X
OBX|18||69855^MDC_DEV_METER_PRESS_BLD_CHAN^MDC|1.13.1.0|||||||X OBX|19|NM|150018^MDC_PRESS_BLD_DIA^MDC|1.13.1.15|68|mm[Hg]^mm[Hg]^UCUM|||||X|||20200508051804.8340+0530||||DFG~01^^Y71A57FFFE6188F3^EUI-64||unknow
This particular HL7 ORU example is a more strict protocol within the HL7 format. It is defined by IHE, and the message type of this example is PCD (Patient Care Device) You can start searching for details of this message format here: https://wiki.ihe.net/index.php/Patient_Care_Device
You'll need to consider things:
HL7 event type of the message, found in MSH.9
If you have the specs of HL7 v2, then you can check on what the segments are usually use and the hierarchy of it.
If you don't have the HL7 spec directly from HL7.org, you'll need to ask the client sending the HL7 message their own spec. Their spec will guide you on how they structured their message. What are repeating, required and optional fields.
HL7 is a loose standard, some organizations don't strictly implement directly what the HL7 spec has, instead they repurpose some of the segments and fields, so it's best to have the client's own HL7 spec. That means other sources of HL7 may have a different approach.
I usually use this link to check on the HL7 definitions: https://hl7-definition.caristix.com/v2/HL7v2.5.1
Based from my experience, OBX segments are repeating and are usually under the OBR segment as child nodes. OBX.2 is the index, which is odd in your message since I see index 4 is followed by index 17.
So far after exploration i understood that those dotted numbers are not standard.Below is IHE documents.
Probably it depends on the profile. which can be different at different point.
https://www.hl7.org/documentcenter/public/wg/healthcaredevices/N0262_WG7_RCH.1g.pdf
I marking it is as answer. I will change this if something better explanation comes.

Can there be discrepancies between ORC and OBR common elements in HL7 ORU messages?

Does anyone know whether it is common to see values in the OBR segment not match the values from similar concepts in the ORC segment for laboratory diagnostic result HL7 ORU messages?
For example:
ORC.7.6 - Priority
OBR.27.6 - Priority
Can it be possible that the ORC shows "routine", but one of the OBR values underneath that shows "stat" for one of a few tests ordered? (So that parsing logic needs to look at OBR first, OCR second to be accurate?)
Similarly, can this same phenomenon happen with the ordering provider?
ORC.12 - Ordering Provider
OBR.16 - Ordering Provider
For example, if a physician orders a Hep B test that comes back as positive, and the lab's middleware has rules that order a reflux test for Surface B antigen or something else automatically, then the original ordering physician isn't who technically placed the reflux order, but the middleware rule. How is this usually expressed between the ORC.12 and OBR.16 segments corresponding to the ordering provider?
(Don't think it's relevant, but we're reading HL7 v2.5.1 ORU messages)
The ORC is Common Order Segment. The OBR is Observation Request Segment.
The data in those respective segments is related to that specific segment. It may or may not be same.

Is OBR segment required to view the OBX segment attachments in HL7 message?

I'm trying to parse an HL7 message file which is of version 2.3.1. OBX segment is coming as null when the message is parsed.
If I don't have OBR segment in HL7 message, Terser is failing to fetch the OBX segment values (it's returning null values), so is OBR segment mandatory to view OBX attachments in an HL7 message?
The OBX segment mainly carry clinical report data. It is mainly used in ORU message and rarely with ORM, ADT and other. This segment is optional and can be repeated in message.
The OBR segment mainly carry placer and filler order numbers (used as identifiers), exam information etc. This segment is mandatory.
ORU (Observation Result) messages should contain the OBR segment followed by the OBX segment for each observation.
About its usage in ORM message:
Usage in the ORM Message
In an ORM message, the OBR segment is part of an optional group that provides details about the order. When the order placer creates the ORM message, they will include the Placer Order Number in the OBR-2 and/or ORC-2 fields. These two fields should contain the same information, and at least one of the two must contain the placer order number. The message may contain multiple orders for which the rules still apply.
About its usage in ORU message:
Usage in the ORU Message
In an ORU message, the OBR segment is used as a report header and contains important information about the order being fulfilled (i.e. order number, request date/time, observation date/time, ordering provider, etc.). It is part of a group that can be used more than once for each observation result that is reported in the message.
When the filler creates the ORU message, they will include the Filler Order Number (such as an accession number) in the OBR-3 and/or ORC-3 fields. If the filler order number is not present in the ORC-3, it must be present in the OBR-3 because the ORC segment is optional in the ORU message.
Considering this, OBR is mandatory segment in both the ORU and ORM (optional group) messages. This is irrespective of dependency of OBX segment on OBR segment.
To answer your comment, I never used REF message. But, first google search gave me this. It look that OBR is mandatory in those messages.
While the OBR segment is stated as mandatory in the HL7 standards for most messages the parser software you are using may allow you to set it as optional.
Deciding to do this though should be considered only if there is a good reason why the sending system cannot or will not include the OBR segment in the message.

Is there a common way to write addresses of facilities in HL7 SIU/ADT messages?

I've found several references to SAD/AD/XAD data types in the HL7 spec, but don't see anything about this info being used to describe facilities, such as those described in the AIL segment (e.g. "2^BLUE HILL FACILITY"). But where, if anywhere, can I expect to get data about that facility, such as name, street address, etc.?
In the PV1 segment definition for HL7 2.x there isn't a dedicated field for Facility Address specifically. If you are the receiving system in this case, you may have to request that data be sent or added in from the sending system. This could be as simple as placing it in the PV1-5.X field (X being whatever subfield the sending system decides on), or adding in a custom Z segment (ZPV for example) to have this data transmitted.
Since there is no standard field for this kind of data in the PV1 segment though, you will have to confirm that the sending system can in fact send this data.
The facility name will be in a separate field. It varies from segment to segment. You just have to read the segment definition and pick the right field.

Can an attachment be split in an HL7 file and recreated after the message is transmitted?

I am using the HAPI parser to parse the HL7 files that come through my company. We are working on moving attachments through the OBX segment of the HL7 file. There are some validators that my stack uses that will not allow an attachment over 64k to pass. Is there a way to take multiple OBX segments and break an attachment up and then recreate it after it has passed through the wire to the other side?
HL7 identifies two possible cases and uses continuation pointer protocol for each. These cases are:
A single segment may be too large. HL7 uses the "ADD" segment to handle breaking a single segment into several smaller segments.
A single HL7 message may be too large. HL7 uses the DSC segment (in conjunction with the MSH-14 filed) and the continuation protocol to handle message fragmentation.
Chapter 2 “Controls” of the HL7v2 spec talks about it in more details.

Resources