Mit den folgenden Informationen können Sie das Muster Healthcare: HL7 an HL7 testen.
Dieses Kapitel enthält folgende Abschnitte:
Mit diesem Muster können Sie HL7-Anwendungen verbinden und gefilterte Nachrichten aus einer Absenderanwendung an viele Zielanwendungen weiterleiten. Weitere Informationen zur Einführung in die Musterinstanz erhalten Sie durch die Verwendung von Nachrichtenflüssen zur Simulation von klinischen Quellen- und Zielanwendungen.
Das in diesem Muster enthaltene Projekt TestApplication (siehe Ressourcen für das Muster Healthcare: HL7 an HL7 enthält einen Quellendatenfluss mit der Bezeichnung 'SourceApplication' und sechs Zieldatenflüsse mit der Bezeichnung 'DestinationApplication'. Die sechs Zieldatenflüsse sind bis auf die Verbindungsdetails gleich. Die Zielanwendungsflüsse werden für die Verwendung von localhost mit der im Datenflussnamen angegebenen Portnummer eingerichtet. Deshalb sind beispielsweise die Verbindungsdetails für 'DestinationApplicationListensOnPort2222' auf localhost:2222 gesetzt .
Die Verbindungsdetails der Projektdatenflüsse TestApplication stimmen mit den standardmäßigen Verbindungsdetails für die Musterinstanz überein. Wenn Sie die Verbindungsdetails in der Konfiguration der Musterinstanz ändern, müssen Sie auch die Verbindungsdetails in den Datenflüssen der Testanwendung ändern.
Zum Testen des Musters mithilfe des Fluss-Debuggers lesen Sie den Abschnitt "Test und Debugging bei Nachrichtenflussanwendungen" in der Dokumentation für WebSphere Message Broker. Für die Verwendung des Fluss-Debuggers mit den GenericHL7Input- und GenericHL7Output-Knoten müssen Sie die von diesen Ressourcen verwendeten untergeordneten Nachrichtenflüsse importieren; siehe Ressourcen für das Muster Healthcare: HL7 an HL7 .
Mit der Testanwendung für das Muster können Sie HL7-Nachrichten mithilfe von MLLP an den Broker senden und von diesem empfangen. Die Anwendung kann eine einzelne klinische Quellen- und Zielanwendung simulieren. Die Testanwendung stellt Optionen bereit, mit denen unterschiedliche MLLP-Konfigurationen und eine Reihenfolgeplanung der Nachrichten simuliert werden können. HL7-Nachrichten werden in den Musterressourcen für die Verwendung als Testdaten bereitgestellt; siehe Ressourcen für das Muster Healthcare: HL7 an HL7 .
Die Testanwendung für das Muster wird aus der neuen Dateikategorie Healthcare gestartet - die Anwendung ist überschaubar und selbsterklärend.
Eine HL7-Nachricht setzt sich aus Segmenten und Feldern zusammen. Die Grenze zwischen Segmenten kann je nach der sendenden Anwendung variieren. Die in der Testanwendung verwendeten Beispielnachrichten verwenden die Hexadezimalzeichen 0D und 0A . Felder innerhalb eines Segments werden durch das Zeichen getrennt, das im MSH-Segment am Anfang jeder HL7-Nachricht deklariert wurde. Der Standardwert ist der vertikale Balken (|). Die Segmente werden nach dem ersten Feld ermittelt; das folgende Beispiel enthält vier Segmente: MSH, EVN, PID und PV1. Das MSH-Segment ist die Kopfzeile der Nachricht und enthält mehrere Felder, die in diesem Abschnitt erläutert werden.
Im folgenden Beispiel wird eine typische HL7-Nachricht (ADT A01) gezeigt (es wurden Zeilenumbrüche zur besseren Lesbarkeit hinzugefügt):
MSH|^~\&|HL7ABLAB|HNA500|HNAM|HNAM|20090911132151||ADT^A01| Q30235031T29347435X328970|A|2.3|123 EVN|A01|20090911132100|||^DRONE_PM1^DRONE_PM^^^^^^^Personnel PID|1||1357920591||IntFace1101A^WinTask^^^^^Current||19801117|M|||||||||| 10000476524^^^FIN^FIN NBR|100000451||||||0 PV1|1|Inpatient|CD:16067689^CD:16067691^CD:16067741^Uniontown Hospit^^Bed(s) ^Uniontown Hospit||||||||||||||501455^Orr^Maggi^^^^^^External ID^Personnel^^^ External Identifier~25584^Orr^Maggi^^^^^^PERSONNEL PRIMARY IDENTIFIER^Personnel^^^Personnel Primary Identifier|Inpatient||||||||||||||||||| || Uniontown Hospit||Active|||20090911132100
Die Musterinstanz enthält folgende Hauptnachrichtenflüsse:
Wenn Sie eine Musterinstanz mit weiteren Zielen erstellen möchten, werden weitere Nachrichtenflüsse des Typs 'DestnSender' erstellt, wobei n die Anzahl der Ziele ist.
Sie müssen sicherstellen, dass alle Warteschlangen für die Musterinstanz installiert sind; weitere Informationen finden Sie im Abschnitt "Warteschlangen" unter Musterinstanz Healthcare: HL7 an HL7 verwalten.
Wenn Sie eine Nachricht mit der Testanwendung senden, werden die Informationen in folgender Reihenfolge durch die Musterinstanz geleitet:
Wenn Sie das Filtern der Nachricht oder des Segments installiert haben, wird der Filtervorgang in diesem Datenfluss ausgeführt. Abhängig von der Einrichtung der Musterinstanz kann dieser Datenfluss auch Knoten enthalten, die Restwerte in der Nachricht und das kanonische Format der Nachricht veröffentlichen.
Alle Datenflüsse enthalten auch einen untergeordneten Nachrichtenfluss für die Ausnahmebehandlung, mit dem alle im Nachrichtenfluss erfassten Probleme bearbeitet werden.
Sie können die Reihenfolgeplanung für die Musterinstanz in der Gruppe
Optionen
der Parameter einrichten. Falls die Option
Arrival based
(Auf dem Eingang basiert)
für die Reihenfolgeplanung ausgewählt ist, basiert die richtige Reihenfolge des Eingangs auf der Musterinstanz. Falls die Option
Content based
(Auf Inhalten basiert)
für die Reihenfolgeplanung ausgewählt ist, wird der Wert des dreizehnten Felds (123
im Beispiel) im MSH-Segment der Nachricht als Folgenummer verwendet. Der Nachrichtenfluss 'Empfänger' richtet die Reihenfolgeplanung für die Musterinstanz ein und verwendet die Folgenummer der Nachrichten.
Nachrichten werden in jedem der Zieldatenflüsse neu sortiert. Sie können für jedes Ziel eine strikte oder eine lockere Reihenfolgeplanung auswählen. Wenn bei Auswahl der strikten Reihenfolgeplanung eine Nachricht fehlt, werden die übrigen Nachrichten blockiert, bis die fehlende Nachricht empfangen wird. Dadurch kann der Datenfluss auf unbestimmte Zeit blockiert sein. Wenn bei Auswahl der lockeren Reihenfolgeplanung eine Nachricht fehlt, können Sie entscheiden, wie lange der Datenfluss auf die fehlende Nachricht wartet, bis die Verarbeitung der Nachrichten fortgesetzt wird.
Für die Anwendung der Optionen zur Reihenfolgeplanung können Sie die Reihenfolge, in der die Nachrichten an die Musterinstanz gesendet werden, und die Reihenfolgeplanung in der Nachricht ändern oder Nachrichten während der Verarbeitung aus Warteschlangen herausnehmen.
Falls der Parameter
Check duplicates
(Duplikate prüfen)
ausgewählt ist, enthält der Nachrichtenfluss 'Empfänger' zusätzliche Knoten für die Überprüfung auf doppelte Nachrichten. Das zehnte Feld (in diesem Beispiel Q30235031T29347435X328970
) im MSH-Segment der Nachricht enthält die Nachrichtensteuerungs-ID, die zur Überprüfung auf doppelte Nachrichten verwendet wird. Nach der Verarbeitung einer Nachricht durch den Datenfluss wird die Nachricht in einer Warteschlange gespeichert, die überprüft werden kann. Der untergeordnete Nachrichtenfluss
Check duplicates
(Duplikate prüfen)
überprüft, ob doppelte Nachrichten vorhanden sind; wenn die Nachricht keine doppelte Nachricht ist, wird die Verarbeitung normal fortgesetzt. Wenn es sich aber um eine doppelte Nachricht handelt und Bestätigungsnachrichten aktiviert sind, wird die ursprüngliche Nachricht an die sendende Anwendung zurückgegeben. Wenn Bestätigungsnachrichten inaktiviert sind, wird die doppelte Nachricht auf die gleiche Weise verarbeitet wie eine neue Nachricht, die im Datenfluss empfangen wird.
Zur Ausführung der doppelten Verarbeitung können Sie das zehnte Feld des MSH-Segments in Ihren Nachrichten verändern.
Falls der Parameter Send acknowledgment (Bestätigung senden) ausgewählt ist, sendet die Musterinstanz nach der Verarbeitung der Nachricht durch den Nachrichtenfluss 'Empfänger' eine Bestätigungsnachricht an die sendende Anwendung. Durch diese Aktion wird die sendende Anwendung darüber informiert, dass die Nachricht erfolgreich verarbeitet wurde. Der SourceApplication-Nachrichtenfluss enthält Knoten, die für die Verarbeitung von Bestätigungsnachrichten (ACK) und negativen Bestätigungsantworten (NACK) konfiguriert wurden. Wenn bei der Nachrichtenverarbeitung ein Fehler auftritt, wird nun eine NACK-Nachricht an die sendende Anwendung gesendet.
Knoten sind auch in den Zielnachrichtenflüssen enthalten und verarbeiten dort Bestätigungsnachrichten, die nach dem erfolgreichen Empfang der Nachricht in der Zielanwendung von dieser zurück an die Musterinstanz gesendet werden.
Mehrere Parameter in der Gruppe Optionen der Musterinstanzkonfiguration ermöglichen Ihnen die Auswahl der Informationen, die während der Verarbeitung der Nachrichten protokolliert werden:
Das Filtern von Nachrichten
ermöglicht Ihnen das Filtern von Nachrichten auf Basis des zugehörigen Ereignistyps, des neunten Felds (im Beispiel ADT^A01
) des MSH-Segments der Nachricht. Nicht alles Nachrichten aus einer Quellenanwendung sind für alle Ziele erforderlich. Mit dem Filtern von Nachrichten können Sie bestimmte Nachrichten aus bestimmten Zielen ausschließen. Das Filtern von Nachrichten wird auf Zielbasis konfiguriert.
Bei der Angabe von Nachrichtenfiltern werden im neunten Feld Werte für Code und Ereignis bereitgestellt . Die beiden Werte werden durch das Zirkumflexzeichen (^) getrennt. Bei der Beispielnachricht am Anfang dieses Dokuments gilt: Code ist ADT und Ereignis ist A01 . Wenn die Reihenfolgeplanung aktiviert und das Filtern inaktiviert ist, wird stattdessen eine Testnachricht gesendet, damit die Reihenfolge beibehalten wird.
Das Filtern von Segmenten ermöglicht Ihnen die Angabe der Segmente, die beim Senden einer Nachricht an ein Ziel aus der Nachricht entfernt werden. Mit dem Filtern von Segmenten können Sie diese Segmente aus einer Nachricht entfernen, bevor diese an ein Ziel weitergegeben wird. Wenn das Ziel nicht alle von der Quellenanwendung gesendeten Nachrichtensegmente unterstützt, können Sie mit dieser Option diese Segmente herausfiltern, beispielsweise Erweiterungen für HL7-Nachrichten mit der Bezeichnung Z-Segmente. Das Filtern von Segmenten wird auf Zielbasis konfiguriert.
Segmente werden durch einen Code aus drei Buchstaben angegeben (in der Beispielnachricht sind dies MSH, EVN, PID und PV1). Beim MSH-Segment handelt es sich um den Nachrichtenheader, der nicht herausgefiltert werden kann, selbst wenn dies vom Benutzer angegeben wurde.