Reference·HL7 v2·SCH
HL7 v2 Reference

HL7 v2 SCH Segment Guide: Fields, Format, and Testing Gotchas

Jul 27, 2026 · 6 min read

Every appointment-booking, cancellation, or reschedule message that crosses an interface engine leans on one segment to carry the actual scheduling facts: SCH. Get the wrong value into the wrong sub-field here and a downstream scheduling system either double-books a slot or silently drops the visit.

Quick answer

SCH (Scheduling Activity Information) carries the details of a single scheduled event inside an SIU (Schedule Information Unsolicited) message — who requested it, what filler system owns it, why the visit is happening, how long it should run, when it starts and ends, and what state the appointment is currently in.

The fields that actually matter in practice

SCH-1 →
Placer Appointment ID — the identifier the requesting system uses to track the appointment; test systems need this to correlate a request with its eventual confirmation
SCH-2 →
Filler Appointment ID — the identifier assigned by the scheduling system itself; often missing on the initial request and populated once the slot is confirmed
SCH-7 →
Appointment Reason — a coded or free-text reason for the visit; frequently pulled straight from a locally maintained reason-code table
SCH-9 →
Appointment Duration — the numeric length of the visit, paired with a separate units field; easy to leave blank when duration is implied by the timing quantity instead
SCH-11 →
Appointment Timing Quantity — a repeating, multi-component field holding the actual start and end date-times of the slot — the field most test suites get wrong first
SCH-25 →
Filler Status Code — the current lifecycle state of the appointment as the filler system sees it, distinct from the SIU trigger event in MSH-9

Example

Synthetic example Generated by Synthibase
SCH|APT88213^SYNTHIB|FIL55021^SYNTHIB|||||FOLLOWUP^Follow-up Visit^SYNTHIBLOCAL|OFFICE^Office Visit^SYNTHIBLOCAL|30|MIN|^^^20260728090000^20260728093000||||||||||||||SCHEDULED^Scheduled^SYNTHIBLOCAL

A synthetic SCH segment for a 30-minute follow-up office visit, generated with fake identifiers and no real patient or provider data.

Where this trips people up

Teams building test suites almost always reach for the trigger event in MSH-9 to determine appointment state and then forget that SCH-25 is where the filler system records its own status independently. A test message can carry an S12 (new appointment booking) trigger while SCH-25 already reads CANCELLED if the source data wasn't regenerated cleanly — and a validation script that only checks MSH-9 will wave that discrepancy straight through.

HL7 ADT Messages: A01 through A08 Explained
Regression Testing for EHR Upgrades: A Complete Guide
Generate realistic SCH test messages in seconds
Synthibase produces fully synthetic HL7 v2 scheduling messages — with correctly structured SCH segments, valid timing quantities, and no real patient data — so your test suite covers every appointment lifecycle state without waiting on a data extract.
Start free trial →
This page is written independently by Synthibase for testing and informational purposes. It is not an official publication of HL7 International or X12/Washington Publishing Company, and is not a substitute for reviewing the official standard or your trading partner's companion guide. See our Terms of Service for full legal terms.