Overview
hl7online.com is a browser-based tool for parsing, validating, and understanding HL7 v2.x messages. Built for healthcare integration specialists, interface analysts, and anyone who works with HL7 messaging.
Raw HL7 messages never leave your device. Parsing and validation are entirely client-side JavaScript. Only AI queries (optionally anonymized) are sent to the edge server.
Ask natural language questions about any HL7 message and get instant answers with field-level source references so you can verify every claim.
Catches structural errors, missing required fields, invalid coded values, date logic issues, cross-segment consistency, and clinical plausibility problems.
Getting Started
Open the app and you're ready to go. A sample message is pre-loaded so you can explore immediately.
First Visit
A welcome splash screen greets you. Click Continue (or press Enter) to enter the main application. A sample ORU^R01 lab results message is loaded automatically.
Interface Layout
| Area | Location | Purpose |
|---|---|---|
| HL7 Input | Top-left | Paste or edit your HL7 message |
| AI Chat | Bottom-left | Ask questions about the message in plain English |
| Parsed Output | Right panel | View parsed segments and validation results |
| Navigation Bar | Top | Docs, Examples, About, and account controls |
| Status Bar | Bottom | Segment count, result count, HL7 version, message type |
Parsing an HL7 Message
Paste any HL7 v2.x message and it parses instantly, right in your browser.
Pasting a Message
- Copy an HL7 message from your source system (EHR, interface engine, log file, etc.)
- Click into the text area labeled "Paste HL7 Message"
- Paste your message (Ctrl+V)
- Parsing begins automatically after a brief pause
The message must begin with MSH to be recognized as HL7 v2.x. Leading whitespace or blank lines will cause an error.
Toolbar Actions
Loads a pre-built ORU^R01 Comprehensive Metabolic Panel message with both normal and abnormal results. Great for learning the interface.
Removes the current message and resets the entire interface to its empty state. The parsed output and AI chat are cleared.
Edit and View Modes
Switch between editing the raw message and viewing it with syntax highlighting.
After a message is parsed, a segmented Edit / View toggle appears in the toolbar. The active mode is highlighted in blue so you always know which state you're in.
Shows the raw HL7 text in an editable textarea. Changes re-parse automatically. Best for modifying or correcting message content.
Syntax-highlighted read-only view. Segment IDs in blue, delimiters muted, error fields underlined in red, warning fields in amber. Click to switch back to Edit.
Segments Tab
The default view, showing every segment in the message broken down field by field.
Each segment is displayed as a card with:
- Segment badge — 3-letter ID (e.g., MSH, PID, OBX)
- Segment name — Human-readable name (e.g., "Message Header", "Patient Identification")
- Field ID — e.g., MSH.3, PID.5, OBX.5
- Raw value — Actual content from the message
- Field name — What the field represents (e.g., "Patient Name")
- Decoded value — Coded values translated (e.g., "F" → "Female")
OBX segments get special treatment: each card shows the observation name (e.g., "Glucose", "Creatinine") and units in the header for quick scanning of lab results.
Validation Tab
Comprehensive message checking with 150+ rules. Click any issue to jump straight to the problem field.
Severity Levels
Click-to-Highlight
Click any validation issue to jump to the problem in the message:
- Auto-switches to View mode if you're in Edit mode
- The affected line highlights with a blue border
- The specific field pulses with an outline ring
- The view scrolls to center the highlighted line
What Gets Validated
Required segments present, field counts within range, proper delimiter usage
Message type (MSH.9), control ID (MSH.10), patient ID (PID.3), observation ID (OBX.3)
Sex (Table 0001), patient class (0004), processing ID (0011), abnormal flags (0078), and more
Valid formats, no future DOBs, admission before discharge, specimen before results
Numeric values match type, reference ranges valid, flags consistent with actual values
Sending/receiving not identical, order-to-result temporal relationships, message type patterns
AI Chat
Ask natural language questions about any loaded HL7 message. Get instant answers with field-level source references.
How to Ask
- Type your question in the input bar at the bottom of the chat panel
- Press Enter or click Ask
- The AI responds with an answer and source chips showing which fields it used
Use Shift+Enter to add a new line without submitting.
Example Questions
| Category | Try Asking |
|---|---|
| Patient info | "What's the patient's name and DOB?" / "What's the address?" |
| Lab results | "Are any results abnormal?" / "What tests were ordered?" |
| Summary | "Explain this message in plain English" |
| Routing | "Which facility sent this?" / "Who's the ordering physician?" |
| Validation | "Are there validation issues I should worry about?" |
Source References
Every AI response includes source chips (e.g., PID.5, OBX.8) showing exactly which HL7 fields the answer was derived from. This lets you verify every claim against the raw message.
Local Fallback
Even without an AI connection, the app answers basic questions locally: patient name, date of birth, abnormal results, and a basic message summary.
Usage Limits
Logged-in users have a daily AI query quota. A usage meter next to the input bar shows remaining queries (e.g., "7/10"). The limit resets at midnight UTC. Parsing and validation are always unlimited.
PHI Anonymization
Mask protected health information before it's sent to the AI.
Enable the Anonymize PHI checkbox below the AI chat area. The AI still receives the message structure and non-PHI content, so it can answer most questions accurately.
| Data Type | Replaced With |
|---|---|
| Patient name | [PATIENT] |
| Medical record number | [MRN] |
| Date of birth | [DOB] |
| Social Security Number | [SSN] |
| Address | [ADDRESS] |
| Phone number | [PHONE] |
| Aliases | [ALIAS] |
| Next of kin names | [NOK_NAME] |
Example Messages
Click Examples in the navigation bar to open a gallery of 8 pre-built HL7 messages. Click Load on any to parse it instantly.
| Type | Name | Description |
|---|---|---|
ORU^R01 | Lab Results | Comprehensive Metabolic Panel with abnormal flags |
ADT^A01 | Patient Admission | Inpatient admission to cardiology unit |
ADT^A08 | Patient Update | Insurance and contact information update |
ORM^O01 | Lab Order | Physician order for CBC with differential |
ADT^A03 | Patient Discharge | Discharge to home following elective procedure |
ORU^R01 | Microbiology Culture | Blood culture with organism ID and sensitivities |
SIU^S12 | New Appointment | Scheduling notification for cardiology follow-up |
ACK | Acknowledgment | Application acknowledgment accepting a prior message |
Authentication & Accounts
An account unlocks the full AI chat experience. Parsing and validation always work without an account.
Creating an Account
- Click Sign Up in the top navigation
- Enter your email address and choose a display name (optional)
- Choose a password (minimum 8 characters) and confirm it
- Click Create Account
- Check your email for a verification link and click it to activate
Signing In
Click Sign In, enter your email and password, and you're in. Your session refreshes automatically in the background.
Forgot Password
Click Sign In → Forgot Password? → enter your email → check your inbox for a reset link.
HL7 Basics Reference
A quick reference for HL7 v2.x message structure, delimiters, segments, and message types.
Message Structure
An HL7 v2.x message is a series of segments, each on its own line. Every message begins with an MSH (Message Header) segment:
MSH|^~\&|SendingApp|SendingFacility|ReceivingApp|ReceivingFacility|DateTime||ORU^R01|MSG00001|P|2.5.1
PID|1||MRN-123^^^Hospital^MR||JOHNSON^EMILY^R||19780923|F
OBX|1|NM|2345-7^Glucose^LN||95|mg/dL|74-106|N
Delimiters
| Character | Purpose | Example |
|---|---|---|
| | Field separator | Separates fields within a segment |
^ | Component separator | JOHNSON^EMILY^R (last, first, middle) |
~ | Repetition separator | Multiple values for one field |
\ | Escape character | Special character sequences |
& | Sub-component separator | Sub-parts within a component |
Common Segment Types
| Segment | Name | Purpose |
|---|---|---|
MSH | Message Header | Message metadata, type, version |
PID | Patient Identification | Patient demographics |
PV1 | Patient Visit | Visit/encounter information |
ORC | Common Order | Order control information |
OBR | Observation Request | Test/procedure order details |
OBX | Observation Result | Individual result values |
NTE | Notes and Comments | Free-text notes |
NK1 | Next of Kin | Emergency contacts |
IN1 | Insurance | Insurance coverage |
DG1 | Diagnosis | Diagnosis codes |
AL1 | Allergy | Patient allergies |
EVN | Event Type | Trigger event details |
Common Message Types
| Type | Trigger | Description |
|---|---|---|
ORU^R01 | Unsolicited result | Lab results sent from LIS to EHR |
ORM^O01 | Order message | New lab/radiology order |
ADT^A01 | Admit | Patient admitted to facility |
ADT^A03 | Discharge | Patient discharged |
ADT^A04 | Register | Outpatient registration |
ADT^A08 | Update | Patient information update |
ACK | Acknowledgment | Confirms receipt of a message |
SIU^S12 | Notification | New appointment scheduled |
Abnormal Flags (OBX.8)
| Flag | Meaning | Severity |
|---|---|---|
N | Normal | Normal |
H | High | Abnormal |
L | Low | Abnormal |
HH | Critically high | Critical |
LL | Critically low | Critical |
A | Abnormal | Abnormal |
AA | Critically abnormal | Critical |
Keyboard Shortcuts
Quick keys for common actions.
Troubleshooting
Common issues and how to fix them.
Your message must start with MSH. Check for leading whitespace or blank lines before the MSH segment. The tool supports HL7 v2.x only (not FHIR/JSON or HL7 v3/CDA).
The AI feature requires a connection to the edge server. Parsing and validation still work fully without it. Check your network connection and try again.
Your daily AI query quota has been used. The limit resets at midnight UTC. Parsing and validation remain unlimited.
The validator follows HL7 standards strictly. Some receiving systems are more lenient. Info-level issues are recommendations, not hard requirements. Focus on errors and warnings first.
Try a hard refresh: Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac). This clears the browser cache.