HL7 StudioBack to the editor

How to use HL7 Studio

HL7 Studio reads, checks and edits HL7 v2 messages. It runs entirely in your browser. Nothing you open is uploaded, and the editor keeps working when the network does not.

Opening a message

There are four ways to get a message in front of you.

  • Open reads a .hl7 or .txt file from your device.
  • Drag a file anywhere onto the window and drop it.
  • Click into the editor and paste. This is the fastest route when the message came from a log or a ticket.
  • Create a message starts a new message from a structure the standard defines, such as ADT, ORU or ORM.

A message wrapped in MLLP framing is read as it stands. You do not have to strip the framing first.

The toolbar, with Open, Create a message and Insert segment
The toolbar carries what puts a message in front of you. Everything else lives closer to the thing it acts on.

The version badge

The badge at the top right names the HL7 edition in force. It decides every field name, every data type and every code the editor will accept, which is why it sits where you can see it without looking.

You do not choose it. The editor reads it from MSH-12, because the message already answers that question. Change the declared version in the message and the badge follows.

Two things can make the badge amber, and it says which in a tooltip.

  • v2.3 to v2.5.1 means the edition the message asks for could not be loaded, so a neighbouring one is being used and the field names are an approximation.
  • partial definitions means the edition in force cannot check everything. v2.1 has no message structures in this build, so segment order and grouping are not checked for it.
The version badge showing HL7 v2.5.1
An edition with complete definitions shows the version alone.

Reading a message

Text is the message as it is on the wire, with the delimiters highlighted. Hover any field for its definition. Coded values are decoded where the standard states a table.

Grid is the same message as labelled tables, one table per run of segments. A composite field becomes one column per component, headed the way HL7 writes it: 3.1, 3.2, 3.3. The delimiters cannot be damaged here, because you never type them.

The two views share a caret. Click a cell in the grid and the text view moves to the same field, and the other way round.

The grid view, with columns named by the standard
Empty required fields are marked, so a gap is visible rather than absent.

The panels on the right

  • Inspector is the message as a tree: segment, field, repetition, component, subcomponent. A value can be edited in place. The caret and the tree stay in step.
  • Reference answers about the field the caret is in: what it is, its data type, its length, and the codes it accepts.
  • Stats summarises the message: its type, its control id, who sent it and when.
  • Format holds the actions and settings that change how the message is presented rather than what it says.
The Inspector panel showing a message as a tree
The Inspector, with the caret inside a patient name. Every level is addressable and named: `PID-5.3` is a component of a field of a segment. Selecting a row moves the caret in the editor, and moving the caret moves the selection.

Problems

The panel along the bottom lists what the editor found, worst first. Click a finding to jump to the field it is about.

Findings are of two kinds and it is worth telling them apart. Most say the message is wrong: a date that is not a date, a code outside its table, a required field left empty. A few say the editor is short: a segment it has no definition for, or a structure it does not know. In the second case the message may be perfectly good.

The problems panel listing three required fields
Each finding names the field, the rule and what is wrong with it.

Editing without breaking the message

The delimiters are the most common way a hand-edited HL7 message is silently corrupted. Shift one field and every field after it means something else. The editor is built so that cannot happen by accident.

  • Editing in the grid or the inspector writes only the value. A value containing a delimiter is escaped rather than allowed to split the field.
  • MSH-1 and MSH-2 are shown but cannot be edited in place. They are the delimiters themselves.
  • A field that repeats is read-only in the grid, because one input cannot express a repetition without ambiguity. Edit it in the Inspector.
A grid cell open for editing, with the value selected
Editing a cell in the grid. Only the value is written back, so the delimiters around it cannot move.

Format

The Format panel holds word wrap, the minimap, and whether the message is kept between sessions. That last one is worth reading: when it is on, the message is stored in this browser and is still there after a reload. When it is off, nothing is written to disk and the message is lost when the tab closes.

The Format panel, with its three settings
The Format panel. The note under the last switch changes with the switch itself, so what is stored is never a guess.

Getting the message back out

Copy puts the message on the clipboard, terminated the way HL7 requires with a carriage return rather than the line feed the editor displays.

Export saves it as .hl7 or .txt. Both carry the same terminator, so a conformant receiver accepts the file as it is.

The Export menu open, offering HL7 and text
Copy and Export sit at the right-hand end of the view tabs, beside the message they act on.

Working offline

After the first visit the editor is installed in your browser and opens with no network. Parsing, checking and editing all run on your device, so none of them need one.

One edition is stored up front. The others are fetched the first time a message declares them and kept from then on. Open a message from an edition you have never used while offline and the editor falls back to the nearest edition it holds, and the badge says so rather than describing the message with the wrong field names.

What this editor does not do

It does not send messages. A browser cannot open a socket, so there is no MLLP client here and no way for a message to leave the device by accident.

It does not cover every edition equally. v2.1 has no message structures in this build, so conformance is not checked for it. The badge says so when it applies.

It is not authoritative. For anything that matters clinically or contractually, the published standard is, and this editor is not.

HL7® and Health Level Seven® are registered trademarks of Health Level Seven International, registered with the U.S. Patent and Trademark Office. Their use here does not constitute endorsement by HL7 International, and this editor is not affiliated with, certified by, or acting on behalf of it.

Field names, definitions and code tables are derived from the HL7 v2 standard, © Health Level Seven International. The published standard remains authoritative.