ADT Specification

In this article

Introduction

The ADT (Admission / Discharge / Transfer) feed tracks the admissions of patients at a hospital. We integrate with it to populate our patient roster and set room assignments.

ADT Ingestion

ADT messages are received in HL7 format and contain a variety of fields and message shapes. We parse out only the fields we need to support our use cases and create a simple data structure for use with all message types.

ADT Message Fields

Field  Description  Example  Notes
ADT Event ADT event code  A01  See ADT Event Types table below
MRN  Patient's unique identifier 111-22-3333  Match the ADT message to our patient record
Prior MRN Patient's prior unique identifier 111-22-4444
Family  Name Patient's last name  Smith
Given  Name Patient's first name  Jane
DOB  Date of birth  19990123  Format: YYYYMMDD
Sex  Sex  M or F. Unknown values will be mapped to  Other.
Language Three-letter language code ENG  Three letter codes from ISO 639-2/T.
Facility  ADT code for the  hospital ABCD  Match the ADT message to our hospital record
Room  ADT code for the  room LDT4-1  Match the ADT message to our room record
HL7  Raw HL7 message 
For testing, this can be blank

ADT Event Types

There are many ADT event types. We support the following subset.

ADT Event Code  Type  Description
A01  admit  Admit a patient
A02  transfer  Transfer a patient to a different  room
A03  discharge  Discharge a patient
A08  update patient  Update patient demographic  information
A11  cancel admit  Cancel previous admit
A12  cancel transfer  Cancel previous transfer
A13  cancel discharge  Cancel previous discharge
A18, A45  merge patient info  Update a patient's MRN number  or merge patient records

Field Usage  

When receiving an ADT message various validations are performed. We are liberal in what we accept, and as long as we can process the message while maintaining internal data integrity, we will do so. Only fields that are required for the message are validated, all others are passed through. 

HL7 messages support varied structures and therefore we collapse all fields into a single data structure. This means we may have unused fields per message type. The fields we use per type are listed below.  


A01 

A02 

A03 

A08 

A11 

A12 

A13 

A18

MRN 

● 

● 

● 

● 

● 

● 

● 

Prior MRN 






Family +  Given Name 

● 







DOB 

○ 







Sex 

○ 







Language







Facility

● 






Room






● required ○ optional

Message Processing  

When processing messages, the values of the ADT fields are used to look up our internal records for patients, rooms and facilities. Some specific considerations: 

  • Facility code (which maps to our division) appears in the HL7 message header as Sending Facility and Receiving Facility. It also appears in the patient visit record, which signifies where the patient is located. For our purposes, we always use the patient visit facility. 
  • When looking up the room by ADT code, we only look at rooms that are in the facility specified in the message. This is because a hospital system may have the same room code across their hospitals. 
  • In general, if a mapping is not found and that field is not required, the target value will be set to null. As an example, if we can't find the room code and room is an optional field, we will accept the message and remove the patient's room assignment. 

After a message has been processed, its status is updated to "Processed" in the case of success and to "Rejected" in the case of failure. Rejected messages can be replayed through the UI, which will trigger re-processing. 

Messages are kept for 30 days, after which they are hard deleted from the database. We will support any necessary number of pages required to view the messages in the application.

The table below lists the steps for processing each message type, in the order that they occur.

Event  Conditions  Result
all events  mrn is missing  reject
admit  facility is not found  reject
admit  family_name or given_name is missing  reject
admit  existing patient, but has active monitor  reject
admit  existing patient  update patient (room, division,  status, demographics)
admit  new patient  create patient (room, division,  status, demographics)
transfer  patient not found  treat as admit - new patient
transfer  patient found, but facility not found  update patient status to inactive
transfer  patient has active monitor  update patient (room, division,  status)
transfer  patient had one or more historical monitoring sessions update patient (room, division,  status)
transfer  all prerequisites met  update patient (room, division,  status)
discharge  patient not found  reject
discharge  patient has active monitor  reject
discharge  all prerequisites met  update patient (status)
update  family_name or given_name is missing  reject
update  patient not found  reject
update  all prerequisites met  update patient (demographics)
cancel admit  patient not found  reject
cancel admit  patient has active monitor  reject
cancel admit  all prerequisites met  update patient (status)
cancel transfer  patient not found  reject
cancel transfer  patient has active monitor  reject
cancel transfer  patient found, but facility not found  update patient status to inactive
cancel transfer  all prerequisites met  update patient (room)
cancel discharge  patient not found  reject
cancel discharge  patient has active monitor  reject
cancel discharge  all prerequisites met  update patient (status)
merge  prior_mrn is missing  reject
merge  prior_mrn is the same as new mrn  reject
merge  patient not found for prior mrn  reject
merge  patient not found for new mrn  update prior_patient.mrn with  new mrn
merge  patient found for new mrn, but was  prior_patient was already merged reject
merge  patient found for new mrn  deactivate prior patient record;  link old record to new one

Infrastructure & Backend

Data is sent in real-time using TCP/IP HL7 messages over a secure VPN received by our Mirth Nextgen Connect which converts them into API calls to the Rails backend.  This diagram shows how Mirth Connect reads patient data from a hospital's Electronic Medical Record (EMR) system. With elements mapped in its own channel, Mirth Connect generates an HL7 message and sends it to the LookDeep application.

ADT Codes in LookDeep

ADT Codes are included on the Hospital and Room list pages for administrator convenience.

Hospital ADT Codes in application
Room ADT Codes in application
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us