HL7 v2 MSH-1 (Field Separator): Format, Values, and Testing Notes
MSH-1 is the one field in HL7 v2 that does not have a delimiter in front of it — it is the character immediately after the literal letters MSH, and it defines what a delimiter even looks like for the rest of the message.
MSH-1 is the single character immediately following "MSH" at the start of every HL7 v2 message — it declares the field separator, almost always a pipe (|), that the rest of the message uses to divide fields.
What this field contains
Example
The character right after MSH — here, | — is MSH-1 itself, defining the field separator for the whole message. Synthetic message — not a real transmission.
Where this trips people up
Because MSH-1 defines the very delimiter used to read the rest of the segment, a parser has to read this one character positionally before it can tokenize anything else. Code that hardcodes a pipe instead of reading MSH-1 dynamically will work against every partner until one sends a nonstandard separator, at which point the entire message misparses from the very first field onward rather than failing on just one value.