Scheduling is the lifeblood of outpatient operations. Every radiology appointment, every specialist visit, every PT session, every infusion, every OR case starts with a scheduler booking a slot — and every downstream system (the EHR, reminder engine, transport, billing, revenue cycle, analytics) needs that event relayed reliably. In HL7 v2, that relay happens over SIU (Scheduling Information Unsolicited) messages.
This reference covers every SIU trigger from S12 to S26, breaks down the unique scheduling segments (SCH, TQ1, RGS, AIS, AIG, AIL, AIP), includes real production-ready sample messages, and walks through the Mirth Connect channel patterns we deploy to move appointment data cleanly. For the broader HL7 context, start with our HL7 integration guide and HL7 v2 message structure explainer.
If you are building a new scheduling interface or connecting a new specialty line to an existing feed, our Mirth Connect helpdesk has integrated Epic Cadence, Cerner Scheduling, athenaOne, eClinicalWorks, and more than a dozen other schedulers into downstream consumers across the US.
1. What SIU Is
SIU stands for Scheduling Information Unsolicited. SIU messages are emitted by the scheduler (the source of truth for appointments) to notify subscribers of scheduling events.
The data inside an SIU message describes:
- The appointment — identifiers, status, start time, duration, reason.
- The patient — PID, same as elsewhere in HL7.
- The resources — location (AIL), personnel (AIP), equipment (AIG), services (AIS).
- Timing detail — via TQ1.
Consumers of SIU typically include the patient reminder engine (for SMS/email), transport scheduling, pre-authorization workflows, room/equipment utilization analytics, and population-health outreach programs. A medium-sized outpatient enterprise emits between 5,000 and 50,000 SIU messages per day.
2. S12-S26 Trigger Events
| Trigger | Description | Frequency |
|---|---|---|
| S12 | Notification of New Appointment Booking | Very High |
| S13 | Notification of Appointment Rescheduling | High |
| S14 | Notification of Appointment Modification | High |
| S15 | Notification of Appointment Cancellation | Very High |
| S16 | Notification of Appointment Discontinuation | Low |
| S17 | Notification of Appointment Deletion | Medium |
| S18 | Notification of Addition of Service/Resource on Appointment | Medium |
| S19 | Notification of Modification of Service/Resource on Appointment | Medium |
| S20 | Notification of Cancellation of Service/Resource on Appointment | Low |
| S21 | Notification of Discontinuation of Service/Resource on Appointment | Low |
| S22 | Notification of Deletion of Service/Resource on Appointment | Low |
| S23 | Notification of Blocked Schedule Time Slot(s) / No-Show | High |
| S24 | Notification of Opened (Unblocked) Schedule Time Slot(s) | Medium |
| S26 | Notification that Patient Did Not Show Up / Arrival | High |
The triggers you will actually encounter in 95% of production scheduling feeds are S12, S13, S14, S15, S17, S23, and S26. The resource-specific triggers (S18-S22) see minimal use; most EHRs emit S14 (full modification) whenever anything changes, rather than emitting a targeted S18 or S19.
3. SCH - Schedule Activity Information
The SCH segment is the heart of every SIU message. It carries the appointment identifiers, status, time, duration, and reason.
SCH|APPT001234^EPIC|CAD98765^CADENCE|||RTN|EST^Established Patient Visit^L|Follow-up hypertension|RTN^Routine^L|30^min|^^^20260428090000^20260428093000|||RESCH^Reschedule^L|9876^NURSE^ANNE||||5432^SMITH^JOHN^A^^^MD|||||BOOKEDKey SCH fields
- SCH-1 Placer appointment ID (requester).
- SCH-2 Filler appointment ID (scheduler — source of truth).
- SCH-3 Occurrence number (for recurring appts).
- SCH-4 Placer group number.
- SCH-5 Schedule ID (the calendar/resource pool).
- SCH-6 Event reason (
RTNroutine,WINwalk-in,CANcancel,RESCHreschedule,NOSno-show). - SCH-7 Appointment reason (coded — visit type).
- SCH-8 Appointment type.
- SCH-9 Appointment duration.
- SCH-10 Appointment duration units.
- SCH-11 Appointment timing quantity — start/end.
- SCH-16 Filler contact person.
- SCH-20 Entered by person.
- SCH-25 Filler status (
BOOKED,CANCELLED,NOSHOW,COMPLETE).
4. TQ1 - Timing Quantity
TQ1 superseded the older TQ segment and fields. It carries the appointment start/end as a structured timing element.
TQ1|1|30^min|||||20260428090000|20260428093000|R^Routine^HL70485- TQ1-1 Set ID.
- TQ1-2 Quantity.
- TQ1-3 Repeat pattern (for recurrence).
- TQ1-4 Explicit time (for specific times within a pattern).
- TQ1-5 Relative time and units.
- TQ1-6 Service duration.
- TQ1-7 Start date/time.
- TQ1-8 End date/time.
- TQ1-9 Priority (
RRoutine,AASAP,SSTAT).
5. RGS / AIS / AIG / AIL / AIP - The Resource Segments
Appointments occupy resources — a provider, a room, a piece of equipment, and consume a service. SIU represents these via a resource group structure.
RGS - Resource Group
Simple separator. Groups the AIS/AIG/AIL/AIP segments that follow into a logical set.
RGS|1|AAIS - Appointment Information - Service
Describes the service being rendered — typically the CPT code or a local visit type code.
AIS|1|A|99213^Office visit est, 15 min^CPT|20260428090000|||30^min||BOOKEDAIG - Appointment Information - General Resource
Describes equipment or other general resources.
AIG|1|A|MRI01^MRI Machine 1^L|EQUIP|||20260428140000|||60^min||BOOKEDAIL - Appointment Information - Location Resource
Describes the location (clinic, room, chair, bed).
AIL|1|A|CLINIC5^CHAIR_3^^CLINIC_MAIN^^C||||20260428090000|||30^min||BOOKEDAIP - Appointment Information - Personnel Resource
Describes a person involved (the provider, an assistant, a supervisor).
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D^Doctor^HL70182|20260428090000|||30^min||BOOKEDReference - Appointment Information Segment Codes
| Segment | Use |
|---|---|
| AIS | Appointment Information - Service |
| AIG | Appointment Information - General Resource |
| AIL | Appointment Information - Location Resource |
| AIP | Appointment Information - Personnel Resource |
6. S12 - New Appointment Booking
S12 is a new appointment. The most common SIU trigger in production.
Full S12 sample - routine office visit
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260421110000||SIU^S12^SIU_S12|MSG0031234567|P|2.5
SCH|APPT001234^EPIC|CAD98765^CADENCE|||RTN|EST^Established Patient Visit^L|Follow-up hypertension|RTN^Routine^L|30^min|^^^20260428090000^20260428093000|||BOOK^New booking^L|9876^ANDERSON^ANNE^^^^RN||||5432^SMITH^JOHN^A^^^MD|||||BOOKED
TQ1|1|30^min|||||20260428090000|20260428093000|R
PID|1||MRN12345^^^GENERAL_HOSP^MR||DOE^JANE^MARIE^^MS^^L||19850412|F||2106-3|123 MAIN ST^^SEATTLE^WA^98101|||^PRN^PH^^^206^5551234|^WPN^PH^^^206^5559876
PV1|1|O|CLINIC5^CHAIR_3^^GENERAL_HOSP|||5432^SMITH^JOHN^A^^^MD|||MED||||||||||||||||||||||||||||||||20260428090000
RGS|1|A
AIS|1|A|99213^Office visit est, 15 min^CPT|20260428090000|||30^min||BOOKED
AIL|1|A|CLINIC5^CHAIR_3^^GENERAL_HOSP|||20260428090000|||30^min||BOOKED
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D^Doctor^HL70182|20260428090000|||30^min||BOOKEDFull S12 sample - MRI procedure with equipment
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260421110500||SIU^S12^SIU_S12|MSG0031345678|P|2.5
SCH|APPT001235^EPIC|CAD98766^CADENCE|||RTN|MRI^MRI Lumbar Spine^L|Back pain r/o disc herniation|STAT^STAT^L|60^min|^^^20260428140000^20260428150000|||BOOK|9876^ANDERSON^ANNE||||9999^CHEN^VIVIAN^^^^MD|||||BOOKED
TQ1|1|60^min|||||20260428140000|20260428150000|S
PID|1||MRN45678^^^GENERAL_HOSP^MR||PATEL^RAJESH^K^^MR^^L||19740703|M||2028-9|456 PINE ST^^BELLEVUE^WA^98005|||^PRN^PH^^^425^5553210
PV1|1|O|RAD^MRI1^A^GENERAL_HOSP|||9999^CHEN^VIVIAN^^^^MD|||RAD
RGS|1|A
AIS|1|A|70553^MRI Lumbar Spine without contrast^CPT|20260428140000|||60^min||BOOKED
AIG|1|A|MRI01^MRI Machine 1^L|EQUIP|||20260428140000|||60^min||BOOKED
AIL|1|A|RAD^MRI1^^GENERAL_HOSP|||20260428140000|||60^min||BOOKED
AIP|1|A|9999^CHEN^VIVIAN^^^^MD^^^^^^NPI|D^Doctor^HL70182|20260428140000|||60^min||BOOKED
AIP|2|A|8888^TAYLOR^MARK^^^^RT^^^^^^^STAFF|T^Technician^HL70182|20260428140000|||60^min||BOOKED7. S14 - Appointment Modification
S14 covers any in-place modification — changing provider, reason, duration, location. S13 (reschedule) is semantically more specific but many vendors emit S14 for everything.
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260422104500||SIU^S14^SIU_S12|MSG0032456789|P|2.5
SCH|APPT001234^EPIC|CAD98765^CADENCE|||MOD|EST^Established Patient Visit^L|Follow-up hypertension - added BP check|RTN^Routine^L|45^min|^^^20260428090000^20260428094500|||MOD^Modification^L|9876^ANDERSON^ANNE||||5432^SMITH^JOHN^A^^^MD|||||BOOKED
TQ1|1|45^min|||||20260428090000|20260428094500|R
PID|1||MRN12345^^^GENERAL_HOSP^MR||DOE^JANE^MARIE^^MS^^L||19850412|F
PV1|1|O|CLINIC5^CHAIR_3^^GENERAL_HOSP|||5432^SMITH^JOHN^A^^^MD
RGS|1|A
AIS|1|A|99214^Office visit est, 25 min^CPT|20260428090000|||45^min||BOOKED
AIL|1|A|CLINIC5^CHAIR_3^^GENERAL_HOSP|||20260428090000|||45^min||BOOKED
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D|20260428090000|||45^min||BOOKED8. S15 - Appointment Cancellation
S15 terminates an appointment that had been booked. Downstream systems should remove or mark the appointment cancelled, free up resources, and potentially trigger patient-outreach workflows.
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260423143000||SIU^S15^SIU_S12|MSG0033567890|P|2.5
SCH|APPT001234^EPIC|CAD98765^CADENCE|||CAN|EST^Established Patient Visit^L|Patient cancelled - will reschedule|RTN^Routine^L|30^min|^^^20260428090000^20260428093000|||CAN^Cancelled by patient^L|9876^ANDERSON^ANNE||||5432^SMITH^JOHN^A^^^MD|||||CANCELLED
TQ1|1|30^min|||||20260428090000|20260428093000|R
PID|1||MRN12345^^^GENERAL_HOSP^MR||DOE^JANE^MARIE^^MS^^L||19850412|F
PV1|1|O|CLINIC5^^^GENERAL_HOSP
RGS|1|A
AIS|1|A|99213^Office visit est, 15 min^CPT|20260428090000|||30^min||CANCELLED
AIL|1|A|CLINIC5^CHAIR_3^^GENERAL_HOSP|||20260428090000|||30^min||CANCELLED
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D|20260428090000|||30^min||CANCELLEDCancellation reason codes (common SCH-6 values)
CAN— Patient cancelledPRO— Provider cancelledFAC— Facility cancelled (weather, outage)PRE— Pre-admit cancellationDEC— Patient deceased
9. S23 - No-Show / Blocked Schedule Slot
S23 is overloaded by history. Originally it was "blocked schedule slot" but in practice many EHRs use it (or S26) to notify downstream systems of a no-show event after the appointment time has passed.
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260428093500||SIU^S23^SIU_S12|MSG0034678901|P|2.5
SCH|APPT001234^EPIC|CAD98765^CADENCE|||NOS|EST^Established Patient Visit^L|No show - not reached by phone|RTN^Routine^L|30^min|^^^20260428090000^20260428093000|||NOS^No Show^L|9876^ANDERSON^ANNE||||5432^SMITH^JOHN^A^^^MD|||||NOSHOW
TQ1|1|30^min|||||20260428090000|20260428093000|R
PID|1||MRN12345^^^GENERAL_HOSP^MR||DOE^JANE^MARIE^^MS^^L||19850412|F
PV1|1|O|CLINIC5^^^GENERAL_HOSP
RGS|1|A
AIS|1|A|99213^Office visit est, 15 min^CPT|20260428090000|||30^min||NOSHOW
AIL|1|A|CLINIC5^CHAIR_3^^GENERAL_HOSP|||20260428090000|||30^min||NOSHOW
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D|20260428090000|||30^min||NOSHOW10. S26 - Patient Arrival / Check-in
S26 originally meant "patient did not show up" in the HL7 standard, but most US EHRs extended it (or reinterpreted it) to cover arrival/check-in events as well. Read your interface specification carefully — do not assume S26 semantics.
MSH|^~\&|CADENCE|GENERAL_HOSP|MIRTH|INTEGRATION|20260428085500||SIU^S26^SIU_S12|MSG0035789012|P|2.5
SCH|APPT001236^EPIC|CAD98767^CADENCE|||ARR|NEW^New Patient Visit^L|Annual physical|RTN^Routine^L|60^min|^^^20260428090000^20260428100000|||ARR^Patient Arrived^L|9876^ANDERSON^ANNE||||5432^SMITH^JOHN^A^^^MD|||||ARRIVED
TQ1|1|60^min|||||20260428090000|20260428100000|R
PID|1||MRN67890^^^GENERAL_HOSP^MR||GARCIA^MARIA^R^^MRS^^L||19550225|F||2106-3|789 OAK ST^^TACOMA^WA^98402
PV1|1|O|CLINIC5^CHAIR_5^^GENERAL_HOSP|||5432^SMITH^JOHN^A^^^MD|||MED
RGS|1|A
AIS|1|A|99385^Initial prev visit, 40-64 yr^CPT|20260428090000|||60^min||ARRIVED
AIL|1|A|CLINIC5^CHAIR_5^^GENERAL_HOSP|||20260428090000|||60^min||ARRIVED
AIP|1|A|5432^SMITH^JOHN^A^^^MD^^^^^^NPI|D|20260428090000|||60^min||ARRIVED11. Mirth Connect Scheduling Patterns
11.1 Inbound scheduler listener
- Source: MLLP listener on the scheduler's dedicated port.
- Filter: Accept only
SIUmessage types. - Preprocessor: Extract key fields to the channel map.
- Routing: Fan out to reminder engine, EHR appointment store, bed/resource analytics, FHIR Appointment server.
// Preprocessor
var m = new XML(message);
channelMap.put('triggerEvent', m['MSH']['MSH.9']['MSH.9.2'].toString());
channelMap.put('placerApptId', m['SCH']['SCH.1']['SCH.1.1'].toString());
channelMap.put('fillerApptId', m['SCH']['SCH.2']['SCH.2.1'].toString());
channelMap.put('apptStatus', m['SCH']['SCH.25'].toString());
channelMap.put('patientMrn', m['PID']['PID.3']['PID.3.1'].toString());
// SCH-11 encodes start/end as subcomponents of component 4
channelMap.put('apptStart', m['SCH']['SCH.11']['SCH.11.4'].toString());
channelMap.put('apptEnd', m['SCH']['SCH.11']['SCH.11.5'].toString());
return message;11.2 Filter: map trigger to downstream action
// Reminder engine destination filter - only new/modified bookings
var trigger = channelMap.get('triggerEvent').toString();
var wantedForReminders = ['S12','S13','S14','S15'];
return wantedForReminders.indexOf(trigger) !== -1;11.3 Iterating resource segments
// Collect all resources under all RGS groups
var m = new XML(message);
var rgsGroups = m..RGS;
var resources = [];
for (var i = 0; i < rgsGroups.length(); i++) {
// AIP - providers
var aips = m..AIP;
for (var j = 0; j < aips.length(); j++) {
resources.push({ type:'personnel', id: aips[j]['AIP.3']['AIP.3.1'].toString() });
}
// AIL - locations
var ails = m..AIL;
for (var k = 0; k < ails.length(); k++) {
resources.push({ type:'location', id: ails[k]['AIL.3']['AIL.3.1'].toString() });
}
}
channelMap.put('resources', JSON.stringify(resources));11.4 Mapping SIU to FHIR Appointment
// Transformer - SIU to FHIR Appointment JSON
var fhir = {
resourceType: 'Appointment',
identifier: [
{ system: 'urn:placer', value: channelMap.get('placerApptId').toString() },
{ system: 'urn:filler', value: channelMap.get('fillerApptId').toString() }
],
status: mapStatus(channelMap.get('apptStatus').toString()),
start: formatFhirDate(channelMap.get('apptStart').toString()),
end: formatFhirDate(channelMap.get('apptEnd').toString()),
participant: []
};
function mapStatus(v) {
switch(v) {
case 'BOOKED': return 'booked';
case 'CANCELLED': return 'cancelled';
case 'ARRIVED': return 'arrived';
case 'NOSHOW': return 'noshow';
default: return 'pending';
}
}11.5 Deduplication and idempotency
Scheduler systems often re-send SIUs (e.g., nightly state broadcasts). Your downstream writer must be idempotent: keyed by SCH-2(filler appointment ID) with an UPSERT, not an INSERT. Include a "last event timestamp" column and only advance state forward — never overwrite ARRIVED with BOOKED if a later event says the patient is here.
12. Frequently Asked Questions
What does SIU stand for?
SIU stands for Scheduling Information Unsolicited. It is the HL7 v2 message family for scheduling events — booking, rescheduling, cancellation, modification, no-show, and patient arrival notifications between a scheduling system and downstream subscribers.
What is the difference between SIU and SRM?
SIU messages are unsolicited — the scheduler notifies subscribers about events that have already happened. SRM (Schedule Request Message) messages are requests — one system asks the scheduler to book, modify, or cancel an appointment. SRM is far less common in practice than SIU.
What is the difference between S13 and S14?
S13 is a reschedule — the appointment is moved to a different time. S14 is a modification — something about the appointment changed but not necessarily the time (location, provider, reason, duration). Some vendors conflate the two and emit S14 for everything; read your interface spec before assuming semantics.
What carries the appointment ID?
SCH-1 (Placer Appointment ID) and SCH-2 (Filler Appointment ID) are the two primary identifiers. SCH-1 is the requester (EHR), SCH-2 is the scheduler. Downstream systems should key off SCH-2 since the scheduler is the source of truth.
How do AIS, AIG, AIL, and AIP differ?
AIS describes services provided at the appointment (the procedure/visit type). AIG describes general resources (equipment). AIL describes location resources (rooms, chairs). AIP describes personnel resources (the provider, nurse, or tech). Each of these segments repeats under an RGS (Resource Group) section.
Can I represent recurring appointments in SIU?
TQ1 (Timing Quantity) can express repeats using TQ1-4 (Repeat Pattern) and TQ1-5 (Explicit Time). But most EHRs avoid encoding recurring series in a single SIU and instead emit one SIU per occurrence with a shared encounter group key.
How does a no-show differ from a cancellation?
A cancellation (S15) is a pre-appointment event — the patient called and cancelled ahead of time. A no-show (S26, S23) is a retrospective event — the patient was expected and did not arrive. Billing, outreach workflows, and quality metrics treat them differently.
Do SIU messages carry patient demographics?
Yes — PID is included in most SIU messages. But SIU is not a substitute for ADT: demographic changes should still be driven by A28/A31/A40/A08 on the ADT feed. Downstream systems should use SIU for appointment state and ADT for demographic state.
Related Reading
- HL7 Integration: The Complete Guide
- FHIR Integration Guide
- EHR Integration Guide
- Healthcare Interoperability Guide
- Mirth Connect: The Complete Guide
- HL7 v2 Message Structure Explained
- HL7 v2 vs v3 vs FHIR
- HL7 ACK/NAK Explained
- MLLP Protocol Explained
- HL7 Testing Tools & Sample Messages
- Common HL7 Integration Errors
- HL7 ADT Messages Complete Reference
- HL7 ORM/ORU Lab Workflow
- HL7 MDM Document Messages
- Mirth Connect MLLP Connection Refused
- Mirth Helpdesk
- Services
- Contact Us