HL7-v2-Viewer

Nur zur Ansicht, kein Medizinprodukt, keine Konformitätsprüfung. Ihre Nachrichten bleiben im Browser. Bitte nutzen Sie Testdaten oder anonymisierte Daten.

HL7-v2-Nachrichten lesen: Viewer und Parser im Browser

Der HL7-v2-Viewer zerlegt HL7-v2-Nachrichten im Pipe-Format im Browser in Segmente, Felder und Komponenten und zeigt sie lesbar an. Er ist kostenlos, braucht keine Anmeldung, und Ihre Nachricht wird nicht hochgeladen. HL7 v2 ist ein Nachrichtenstandard, über den Systeme im Gesundheitswesen Daten austauschen, etwa Krankenhausinformationssystem, Labor und Radiologie.

Dass nichts übertragen wird, ist technisch erzwungen: Die Seite setzt eine Content-Security-Policy mit connect-src 'none', der Browser blockiert damit Netzwerkverbindungen aus dem Seitencode. In den Entwicklertools (Reiter „Netzwerk“) bleibt es beim Einfügen und Auswerten still. Das Laden der Seite selbst geht natürlich an den Hoster, siehe Datenschutz.

HL7-Nachricht einfügen

Beispiel laden:

Was der Viewer kann und was nicht

Das zeigt der Viewer

  • Baumansicht, Tabelle und Rohtext mit farbigen Trennzeichen
  • zu jedem Feld Pfad (PID-5.1), Name und Kurzerklärung beim Überfahren oder Antippen
  • Nachrichtentyp aus MSH-9 mit kurzer Erklärung, Version, Absender, Zeitstempel
  • Hinweise bei fehlendem MSH, leeren Pflichtfeldern, falschen Datumsformaten und auffälligen Trennzeichen
  • Export als JSON oder CSV, Reparatur von Zeilenumbrüchen, Anonymisierungshilfe
  • mehrere Nachrichten in einer Datei, MLLP-Rahmen und Z-Segmente

Das leistet er nicht

  • Er ist kein Konformitätsprüfer: Er prüft nicht gegen ein Schnittstellenprofil und nicht gegen eine bestimmte HL7-Version.
  • Die Feldliste ist eigenhändig geschrieben und unvollständig. Unbekannte Felder erscheinen als „Feld n“.
  • Er sendet und empfängt nichts (kein MLLP über TCP, keine ACKs). Browser können solche Verbindungen nicht öffnen.
  • Er liest nur das Pipe-Format von HL7 v2, kein FHIR und kein CDA.
  • Er ist kein Medizinprodukt und nicht für Diagnose, Behandlung oder den Produktivbetrieb gedacht.

Anonymisierungshilfe für Testdaten

Ersetzt Namen, Kennungen, Adressen, Telefonnummern und Freitexte der oben eingefügten Nachricht durch Platzhalter. Das ist Schwärzen für Tests und Fehlersuche, keine Anonymisierungsgarantie: Prüfen Sie das Ergebnis, vor allem Freitexte und Z-Segmente.

Fügen Sie oben eine Nachricht ein und klicken Sie auf „Nachricht anonymisieren“.

Eine Nachricht von Hand lesen: fünf Schritte

  1. MSH-9 nennen: Das ist der Nachrichtentyp, etwa ORU^R01. Er sagt, welche Segmente zu erwarten sind.
  2. MSH-12 (Version) und MSH-10 (Kontroll-ID) notieren. Die Kontroll-ID brauchen Sie, um eine Bestätigung zuzuordnen.
  3. Die Segmentkennung am Zeilenanfang lesen (PID, PV1, OBR, OBX …). Sie bestimmt, was die Felder bedeuten.
  4. Felder abzählen. Bei MSH ist das Trennzeichen selbst Feld 1, das erste Feld nach MSH| ist deshalb MSH-2.
  5. Zusammengesetzte Felder an ^ teilen und die Teile nach dem Datentyp deuten, zum Beispiel Name, Kennung oder Adresse.

Das geht schneller mit dem Viewer, aber es hilft beim Prüfen seiner Anzeige. Mehr dazu auf Aufbau einer HL7-v2-Nachricht.

Beispielnachrichten

Alle Beispielnachrichten sind frei erfunden. Namen, Nummern und Adressen sind Platzhalter, die E-Mail-Adresse nutzt die reservierte Endung .invalid. Sie dürfen die Dateien frei verwenden (CC0). „Im Viewer öffnen“ lädt das Beispiel direkt in den Viewer oben.

Stationäre Aufnahme (ADT^A01)

Zwei Kennungen in PID-3 (Wiederholung mit ~), Name mit Komponenten, Adresse, Telefon und E-Mail, dazu Angehöriger, Diagnose, Allergie und Versicherung.

Im Viewer öffnen adt-a01-aufnahme.hl7

Ambulante Registrierung (ADT^A04)

Gleiche Struktur wie A01, aber Patientenklasse O (ambulant), keine Station und kein Entlassungsbezug.

Im Viewer öffnen adt-a04-registrierung.hl7

Änderung von Patientendaten (ADT^A08)

Mehrere Namen (Rufname und Alias), Escape-Sequenz \T\ in der Straße, Ereignisgrund in EVN-4 und ein Z-Segment (ZPI) als lokale Erweiterung.

Im Viewer öffnen adt-a08-aenderung.hl7

Laborbefund (ORU^R01)

OBR als Kopf, vier OBX-Zeilen mit Zahlenwert, Einheit, Referenzbereich und Abnormal-Kennzeichen; Kommentar in NTE mit Zeilenumbruch (\.br\).

Im Viewer öffnen oru-r01-labor.hl7

Laborauftrag (ORM^O01)

Zwei Aufträge in einer Nachricht: je ein ORC (Steuerung NW) mit zugehörigem OBR. Die Placer-Nummer vergibt das anfordernde System.

Im Viewer öffnen orm-o01-auftrag.hl7

Dokument mit Inhalt (MDM^T02)

TXA beschreibt das Dokument, der Text steht in OBX-Segmenten vom Typ TX; Zeilenumbrüche im Text sind als \.br\ kodiert.

Im Viewer öffnen mdm-t02-dokument.hl7

Neuer Termin (SIU^S12)

SCH beschreibt den Termin, RGS und AIS die gebuchte Leistung mit Startzeit und Dauer. SCH-11 enthält Start- und Endzeit.

Im Viewer öffnen siu-s12-termin.hl7

Bestätigung mit Fehlercode (ACK)

Der Empfänger meldet AE (Fehler) zur Nachricht MSG-A01-0001. ERR nennt Ort und Grund: Das Geburtsdatum in PID-7 ließ sich nicht lesen.

Im Viewer öffnen ack-fehler.hl7

Absichtlich fehlerhafte Nachricht

Enthält typische Fehler: Zeilenvorschub statt Wagenrücklauf, Geburtsdatum im deutschen Format, ISO-Datum, leere Pflichtfelder, Nullwert und Dezimalkomma.

Im Viewer öffnen fehlerhaft.hl7

Nachlesen

Aufbau einer HL7-v2-Nachricht

Segmente, Felder, Komponenten, Trennzeichen, Escape-Sequenzen und Datentypen mit einer kommentierten Beispielzeile.

Nachrichtentypen im Überblick

ADT, ORM, ORU und weitere, mit Auslöseereignissen und je einem Beispiel zum Öffnen.

Segmente erklärt

MSH, PID, PV1, OBR und OBX: wichtige Felder und typische Stolperstellen.

Häufige Fehler

Zeilenumbrüche, Datumsformate, Dezimalkomma, Zeichensatz: Symptom, Ursache, Lösung.

Häufige Fragen

Was ist eine HL7-v2-Nachricht?

Eine HL7-v2-Nachricht ist ein Text im Pipe-Format. Jede Zeile ist ein Segment (zum Beispiel MSH, PID oder PV1). Innerhalb der Zeile trennt | die Felder, ^ die Komponenten, ~ Wiederholungen und & Subkomponenten. Krankenhaus-, Labor- und Praxissysteme tauschen darüber Patientenstammdaten, Aufträge und Befunde aus. Den Aufbau erklärt die Seite Aufbau einer HL7-v2-Nachricht.

Wie lese ich eine HL7-Nachricht?

Fügen Sie die Nachricht oben ein. Der Viewer zerlegt sie in Segmente und Felder, nennt zu jedem Wert den Pfad (zum Beispiel PID-5.1) und erklärt ihn beim Überfahren oder Antippen. Von Hand lesen Sie so: zuerst MSH-9 für den Nachrichtentyp, dann Segment für Segment die Felder abzählen. Bei MSH zählt das Trennzeichen direkt hinter „MSH“ bereits als Feld 1.

Was bedeuten ADT, ORU und ORM?

ADT meldet Ereignisse der Patientenverwaltung (A01 Aufnahme, A08 Änderung), ORU überträgt Ergebnisse und Befunde (R01) und ORM überträgt Aufträge (O01). Der Code steht in MSH-9, gefolgt vom Auslöseereignis. Eine Tabelle mit Beispielen finden Sie unter Nachrichtentypen im Überblick.

Welche Trennzeichen verwendet HL7 v2?

Üblich sind | für Felder, ^ für Komponenten, ~ für Wiederholungen, \ als Escape-Zeichen und & für Subkomponenten. Die Zeichen stehen in MSH-1 und MSH-2; der Viewer liest sie von dort und meldet es, wenn sie vom Üblichen abweichen. Segmente enden laut Standard mit einem Wagenrücklauf (CR).

Warum steht meine Nachricht nur in einer Zeile oder wird falsch getrennt?

Segmente sind mit CR getrennt. Beim Kopieren aus E-Mails, Logs oder Editoren wird daraus oft LF, oder die Umbrüche gehen verloren. Der Viewer liest CR, LF und CRLF und erkennt außerdem wörtliche „\r“-Zeichenfolgen sowie Segmente, die durch Leerzeichen getrennt sind. Er sagt dabei jeweils, was er angenommen hat. Mit „Zeilenumbrüche reparieren“ erhalten Sie die Nachricht mit CR zurück.

Wo steht die HL7-Version einer Nachricht?

In MSH-12, zum Beispiel 2.5.1. Die Version sagt, nach welchem Regelwerk die Nachricht aufgebaut sein soll. Der Viewer zeigt sie in der Zusammenfassung an, prüft aber nicht gegen die Regeln einer bestimmten Version.

Was ist ein Z-Segment?

Segmentnamen, die mit Z beginnen, sind für lokale Erweiterungen reserviert. Was darin steht, legen nur die beteiligten Systeme fest. Der Viewer zeigt solche Segmente an und markiert sie als lokal, kann ihre Felder aber nicht erklären. Das erledigt die Schnittstellenbeschreibung des Absenders.

Werden meine Nachrichten hochgeladen?

Nein. Die Auswertung läuft im Browser, und die Seite verbietet über eine Content-Security-Policy mit connect-src 'none' jede Netzwerkverbindung aus dem Seitencode. Das lässt sich in den Entwicklertools prüfen. Echte Patientendaten gehören trotzdem nicht in Testwerkzeuge. Nutzen Sie Testdaten oder anonymisieren Sie zuerst.

Über den Entwickler

Entwickelt von Thomas Freimoser, München / Remote. Dieses Werkzeug liest HL7-v2-Nachrichten lokal im Browser; es gibt keinen Upload und kein Tracking.