HL7 Message Processing Statistics

We’ve used an internal instance of the TL7 server to process almost 55,000 HL7 requests. Some of those requests were basic “hey, let’s make sure this works” ad-hoc requests, but the vast majority were in support of testing a Pharmacy point-of-service application.

Here’s a visualization of the distribution of these HL7 request messages:

Record device dispense processing request (PORX_IN020060CA)
Record dispense pickup request (PORX_IN020080CA)
unknown message type (PORX_IN010420CA)
Patient allergy intolerance query (REPC_IN000015CA)
Record pharmacy prof service request (REPC_IN000044CA)
Patient medical conditions query (REPC_IN000023CA)
Add note to record request (COMT_IN301001CA)
Find candidates query (PRPA_IN101103CA)
Patient note query (COMT_IN300201CA)
Broadcast topics query (NLPN_IN100120CA)
Patient adverse reaction query (REPC_IN000001CA)
Record dispense reversal request (PORX_IN020370CA)
unknown message type (controlActEvent)
Subscribe broadcast topic request (NLPN_IN100140CA)
Record supply event request (PORX_IN020210CA)
Add issue management request (COMT_IN700001CA)
Patient medical condition with history query (REPC_IN000025CA)
Medication dispense summary query (PORX_IN060230CA)
Record adverse reaction request (REPC_IN000004CA)
Other medication details query (PORX_IN060450CA)
Update other medication request (PORX_IN040070CA)
Resolve duplicate person registrations (PRPA_IN101004CA)
Patient pharmacy prof services query (REPC_IN000041CA)
Locations summary query (PRLO_IN202010CA)
Send poll request (MCCI_IN100001CA)
Record other medication request (PORX_IN040020CA)
Patient basic observations query (REPC_IN000054CA)
Person nullif
ied (PRPA_IN101999CA)
unknown message type (HL7 V2 Request)
Send poll message accept ack (MCCI_IN100003CA)
Add person request (PRPA_IN101201CA)
Abort prescription request (PORX_IN010840CA)
Record medical condition request (REPC_IN000028CA)
Device prescription detail query (PORX_IN060090CA)
Update allergy intolerance request (REPC_IN000020CA)
Drug search query (POME_IN010070CA)
Retract action request (COMT_IN600001CA)
Revise person request (PRPA_IN101204CA)
Update medical condition request (REPC_IN000032CA)
Medication prescription fills query (PORX_IN060270CA)
Drug product detail query (POME_IN010050CA)
Add allergy intolerance request (REPC_IN000012CA)
Immunizations query (POIZ_IN020010CA)
Revise assigned dispense responsibility request (PORX_IN010100CA)
Patient allergy intolerance with history query (REPC_IN000017CA)
Med prescr with hist and dispenses query (PORX_IN060170CA)
Medication prescription summary query (PORX_IN060290CA)
Unfilled prescriptions query (PORX_IN060490CA)
Add patient note request (COMT_IN300001CA)
Abort dispense authorization request (PORX_IN010560CA)
unknown message type (REPC_IN000115CA)
Suspend prescription request (PORX_IN010440CA)
Medication profile summary query (PORX_IN060390CA)
Update password request (NLPN_IN100200CA)
unknown message type (REPC_IN002120)
Record dispense processing request (PORX_IN020190CA)
Device prescription summary query (PORX_IN060130CA)
Device prescription with history and dispense query (PORX_IN060010CA)
Activate prescription request (PORX_IN010380CA)
Retract immunization request (POIZ_IN010100CA)
Record refusal to dispense request (PORX_IN010060CA)
Patient referral summaries query (REPC_IN000084CA)
Record immunization request (POIZ_IN010020CA)
Medication dispense detail query (PORX_IN060210CA)
Medication profile detail generic query (PORX_IN060350CA)
Resume prescription request (PORX_IN010520CA)
Record patient basic observation request (REPC_IN000051CA)
Update immunization request (POIZ_IN010070CA)
Location details query (PRLO_IN202012CA)
Person information revised (PRPA_IN101002CA)
Get person demographics query (PRPA_IN101101CA)
Update adverse reaction request (REPC_IN000008CA)
Deprecate patient note request (COMT_IN300101CA)
Accept ack poll next message request (MCCI_IN100004CA)
Activate device prescription request (PORX_IN010300CA)

What does this tell us? First, about 65% the request volume that the server has processed came from one of four request types:

  1. Find candidates (look up a person in the client registry);
  2. Dispense prescription;
  3. Add a person to the client registry if they don’t already exist; and
  4. Get the person’s full demographic record (names, addresses, telephone numbers, etc.)

Knowing what I know about the system in question, it makes sense to me that those are going to be the most-commonly used interactions. Nonetheless, it’s interesting to me that of the four most commonly used interactions, three of them are not specific to the pharmacy business domain.

It also clearly suggests that a jurisdictional implementation probably needs to focus performance tuning in the client registry system.

The “second tier” messages make up another 12%:

  1. Retract pharmacy action (e.g. retract a prescription dispense, retract the creation of a note, etc.)
  2. Query the client’s medication profile summary
  3. Record that a client has been prescribed medication (most jurisdictions won’t have doctors online in the early stages)
  4. Record that the client has picked up a prescription

Assuming that other systems are similar: that’s over 3/4s of the message volume accounted for with only eight request types. I confess that that surprised me to see.

It's only fair to share...
Share on Facebook
Tweet about this on Twitter
Share on LinkedIn

Leave a Reply