HL7, FHIR & Mirth Connect Interview Questions

Master technical interview preparation with real-world questions and architect-level answers covering HL7 v2/v3, FHIR RESTful APIs, and Mirth Connect channel integration.

1. What is the structural difference between an HL7 ADT and an ORU message?
HL7 v2.x

ADT (Admission, Discharge, Transfer): Used primarily for carrying patient demographic updates and visit administration events throughout hospital EHR nodes. Key segments include MSH, EVN, PID, and PV1.

ORU (Unsolicited Observation Result): Used specifically to transmit clinical diagnostic test results (laboratory readings, radiology reports) back to an EHR or ordering physician. Along with MSH and PID, it mandates OBR (Observation Request) and one or more OBX (Observation Result) segments.

2. How are standard HTTP CRUD operations mapped to RESTful FHIR interaction endpoints?
HL7 FHIR

FHIR leverages standard RESTful HTTP methods for manipulating resources:

  • GET /[Resource]/[id]: Read interaction to retrieve a target resource instance.
  • POST /[Resource]: Create interaction to create a new resource with a server-assigned ID.
  • PUT /[Resource]/[id]: Update interaction to replace an existing resource instance.
  • DELETE /[Resource]/[id]: Delete interaction to remove a resource instance.
  • GET /[Resource]?[parameters]: Search interaction querying resources by parameters.
3. What is the scope difference between channelMap, globalChannelMap, and globalMap in Mirth Connect?
Mirth Connect

In Mirth Connect (NextGen Connect), variables are scoped across execution contexts using distinct map spaces:

  • channelMap: Scoped exclusively to the current message processing through a single channel instance. Cleared once the message processing completes.
  • globalChannelMap: Persists variables across all messages within the scope of a specific channel until the channel is redeployed or server restarts.
  • globalMap: Shared globally across all channels running on the Mirth Connect server instance. Ideal for system-wide configuration flags or shared lookup tables.
4. What is SMART on FHIR and how does it handle OAuth2 authorization for health apps?
HL7 FHIR

SMART on FHIR provides an open, standardized specification for launching third-party applications against EHR systems using FHIR APIs.

It uses OAuth 2.0 for user authorization and OpenID Connect for identity verification. It defines standard launch sequences (EHR launch or Standalone launch) and scopes (e.g., patient/*.read) so developers can launch apps seamlessly inside different EHR platforms.

5. What is MLLP (Minimal Lower Layer Protocol) and why is it required for HL7 v2 messaging?
HL7 v2.x

HL7 v2 messages are plain text strings using special delimiter characters (|, ^, ~). Because TCP/IP stream protocols do not inherently recognize where a message starts and ends, MLLP wraps the HL7 payload with framing characters:

<VT> HL7 Message Payload <FS><CR>

Where:
<VT> = Vertical Tab (0x0B / ASCII 11) - Start Block
<FS> = File Separator (0x1C / ASCII 28) - End Block
<CR> = Carriage Return (0x0D / ASCII 13) - Trailer
6. How do you generate custom ACK messages in Mirth Connect when a message fails validation?
Mirth Connect

In Mirth Connect, you can configure Auto-ACK or construct custom ACKs using JavaScript inside Source Transformers or Filters. When validation fails, throw an error or set the response status explicitly:

// Example Filter Script
if (msg['PID']['PID.3']['PID.3.1'].toString() === '') {
    // Return Application Error ACK (AE)
    responseMap.put('CustomACK', 
        ACKGenerator.generateAckResponse(
            messageObject.getRawData(), 'AE', 'Missing Required MRN'
        )
    );
    return false; // Rejects message processing
}