Reference·HL7 v2·EVN
HL7 v2 Reference

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

Jul 27, 2026 · 6 min read

EVN looks like the simplest segment in an ADT message, right up until a test run fails because two systems disagree on when an event actually happened.

Quick answer

EVN (Event Type) rides at the top of ADT and similar trigger-event messages and answers one question: what happened, and when did it get recorded. It carries the event code, a recorded timestamp, an optional reason code, who or what triggered the update, and a separate timestamp for when the event actually occurred in the real world (as opposed to when the message was built). Test suites care about EVN because its timestamps are a common source of off-by-one and timezone bugs, and because EVN-1 is often redundant with MSH-9 in modern interfaces.

The fields that actually matter in practice

EVN-1 →
Event Type Code — legacy duplicate of the trigger event in MSH-9; many newer interfaces leave it blank or ignore it entirely
EVN-2 →
Recorded Date/Time — when the sending system logged the event — the field most test harnesses assert against
EVN-4 →
Event Reason Code — a short code explaining why the event fired, such as a transfer reason or discharge disposition trigger
EVN-5 →
Operator ID — identifies the user or process that caused the event; frequently a composite ID/name field like PID-3 or PV1-7
EVN-6 →
Event Occurred — the real-world timestamp of the event itself, which can legitimately differ from EVN-2 by minutes or hours

Example

Synthetic example Generated by Synthibase
EVN|A01|20260726073000||ADM|8842^REYES^MONICA^L^^^MD|20260726072500

A synthetic admit event: recorded at 07:30 but flagged as having occurred at 07:25, five minutes earlier, with operator 8842 tagged as the trigger.

Where this trips people up

The most common bug we see in synthetic ADT test suites is teams treating EVN-2 and EVN-6 as interchangeable. They are not: EVN-2 is when the message was recorded, EVN-6 is when the event happened in reality, and interfaces that backfill or replay events (like a late-entered admission) can have a meaningful gap between the two. If your test data generator always sets them equal, you will never exercise the code path that handles a delayed or corrected timestamp, which is exactly the kind of edge case that surfaces in production during a system cutover.

HL7 ADT Messages: A01 through A08 Explained
Regression Testing for EHR Upgrades: A Complete Guide
Stop hand-crafting EVN timestamps
Synthibase generates realistic, internally consistent ADT test messages, including EVN recorded and occurred timestamps that actually diverge the way production traffic does, so you catch timestamp-handling bugs before go-live.
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.