Dieses Kapitel enthält folgende Abschnitte:
Sie können die Scriptsprache PHP für die textbasierte Berichterstellung verwenden. Das Muster erstellt ein Beispiel für eine PHP-Berichtsschablone mit der Bezeichnung ADT_A01.php. Erstellen Sie zusätzliche PHP-Scripts, um Berichte für andere HL7-Nachrichtentypen zu generieren.
Die PHP-Scriptsprache steht unter allen Betriebssystemen zur Verfügung, die auch IBM Integration Bus unterstützen. Für die Berichterstellung ist eine umfangreiche Gruppe von PHP-Funktionen verfügbar. Zu diesen Funktionen gehört der Zugriff auf benannte Elemente in der HL7-Nachricht.
Informationen zu den von IBM Integration Bus unterstützten PHP-Funktionen finden Sie unter 'PHP extensions' (PHP-Erweiterungen)in der Dokumentation zu IBM Integration Bus.
Weitere Informationen zu der Scriptsprache PHP finden Sie auf der Website PHP: Hypertext Preprocessor.
Die PHP-Beispiele in diesem Abschnitt verwenden folgende HL7 ADT A01-Nachricht:
MSH|^~\&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01^ADT_A01|MSG00001-
|P|
2.5
EVN|A01|198808181123
PID|1||PATID1234^5^M11^ADT1^MR^MCM~123456789^^^USSSA^SS||JONES^WILLIAM^A^III
NK1|1|JONES^BARBARA^K|WI^WIFE||||NK^NEXT OF KIN
NK1|2|JONES^MARK^K|SO^SON||||NK^NEXT OF KIN
NK1|3|JONES^SOPHIE^K|DA^DAUGHTER||||NK^NEXT OF KIN
PV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||||ADM|A0
Sie können die Musterinstanz anpassen, indem Sie den Vorlagen zur Berichterstellung (Scripts) PHP-Markup hinzufügen. PHP-Scripts erfordern häufig Zugriff auf Daten in den HL7-Nachrichten. Auf Daten in Nachrichten wird mithilfe einer Pfadsyntax zugegriffen. Es gibt zwei Möglichkeiten, den Pfad zu Elementen und Feldern in HL7-Nachrichten zu ermitteln. Die erste Methode ist die Verwendung eines Debuggers und die zweite Methode ist die Verwendung der Nachrichtengruppe HL7v25P.
Um den Pfad zu ermitteln, werden zunächst tatsächliche HL7-Nachrichten überprüft, die über den Integrationsknoten übermittelt werden. Setzen Sie im Nachrichtenfluss 'Processor' einen Unterbrechungspunkt und senden Sie eine HL7-Nachricht an den Integrationsknoten:
Der folgende Screenshot zeigt eine HL7-Nachricht in der Ansicht 'Variablen' von IBM Integration Toolkit:
Der Pfad zum hervorgehobenen Element im Screenshot ist $input_assembly->XMLNSC->HL7->PID->{'PID.3.PatientIdentifierList'}->{'CX.1'}. Die Pfade in der Nachrichtengruppe HL7v25P enthalten Punkte (z. B. PID.3.PatientIdentifierList) und müssen deshalb in Klammern gesetzt werden, damit sie von der PHP-Laufzeit richtig interpretiert werden.
HL7-Nachrichten werden immer Ihren Berichtsprozeduren in der Nachrichtendomäne XMLNSC vorgelegt.
Die zweite Methode zum Berechnen von Pfaden ist die Überprüfung der Nachrichtengruppe HL7v25P und das Ermitteln der Pfade zu Elementen und Feldern auf Basis des Nachrichtenmodells:
Die Pfade in beiden Methoden sind gleich, der einzige Unterschied ist, ob Sie in den tatsächlichen HL7-Nachrichten oder im HL7-Nachrichtenmodell starten.
In den beiden Spalten ganz rechts im Screenshot der Nachrichtengruppe wird die minimale und maximale Anzahl des Auftretens eines Element oder Felds in einer HL7-Nachricht gezeigt. In Ihren PHP-Scripts muss berücksichtigt werden, ob ein Element oder Feld vorhanden sein muss (Werte 1 und 1), vorhanden sein kann (Werte 0 und 1), sich wiederholen kann (Werte 0 und -1) oder sich mindestens einmal wiederholen wird (Werte 1 und -1). Diese Möglichkeiten sind in HL7-Nachrichten einheitlich.
In den folgenden Codebeispielen wird gezeigt, wie Sie allgemeine Tasks in PHP-Scripts implementieren können.
Für Ihre PHP-Scripts ist eine umfangreiche Gruppe integrierter Funktionen verfügbar.
<?php
date_default_timezone_set('UTC');
echo date('n/j/Y');
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
12/9/2011
Informationen zu den von IBM Integration Bus unterstützten PHP-Funktionen finden Sie unter 'PHP extensions' (PHP-Erweiterungen) in der Dokumentation zu IBM Integration Bus (die PHP-Laufzeit in IBM Integration Bus unterstützt einen Teil der Erweiterungen, die von der Open-Source-PHP-Implementierung unterstützt werden).
Auf Umgebungsvariablen wird über die superglobale PHP-Variable $_ENV zugegriffen.
<?php
echo $_ENV['MB_WORK_PATH'].'\n';
echo $_ENV['MB_BROKER_NAME'].'\n';
echo $_ENV['MB_EXECUTION_GROUP_NAME'].'\n';
echo $_ENV['MB_NODE_NAME'].'\n';
echo $_ENV['MB_MESSAGE_FLOW_NAME'].'\n';
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
C:\Dokumente und Einstellungen\All Users\Application Data\IBM\MQSI
HEALTHCARE
Healthcare
PHP Compute
healthcare.ReportProcessor
Auf Elemente und Felder in HL7-Nachrichten kann mithilfe von Pfaden zugegriffen werden.
<?php
echo $input_assembly->XMLNSC->HL7->MSH->{'MSH.9.MessageType'}->{'MSG.1'};
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
ADT
PHP stellt die Funktion is_null bereit, um zu prüfen, ob ein Element oder ein Feld fehlt.
<?php
$result = is_null($input_assembly->XMLNSC->HL7->XYZ);
echo var_dump($result);
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
bool(true)
Wiederholelemente können mithilfe der PHP-Anweisung foreach iteriert werden.
<?php
foreach ($input_assembly->XMLNSC->HL7->NK1 as $kin) {
echo var_dump($kin);
}
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
object(MbsElement)#26 (4) {
["NK1.1.SetIDNK1"]=>
string(1) "1"
["NK1.2.Name"]=>
NULL
["NK1.3.Relationship"]=>
NULL
["NK1.7.ContactRole"]=>
NULL
}
object(MbsElement)#27 (4) {
["NK1.1.SetIDNK1"]=>
string(1) "2"
["NK1.2.Name"]=>
NULL
["NK1.3.Relationship"]=>
NULL
["NK1.7.ContactRole"]=>
NULL
}
object(MbsElement)#28 (4) {
["NK1.1.SetIDNK1"]=>
string(1) "3"
["NK1.2.Name"]=>
NULL
["NK1.3.Relationship"]=>
NULL
["NK1.7.ContactRole"]=>
NULL
}
Die NULL-Werte in der Ausgabe von var_dump sind erwartet, obwohl diese Elemente Daten enthalten.
Auf Elemente und Felder in HL7-Nachrichten kann in Wiederholelementen mithilfe der Variablen foreach zugegriffen werden:
<?php
foreach ($input_assembly->XMLNSC->HL7->NK1 as $kin) {
echo var_dump($kin->{'NK1.2.Name'}->{'XPN.2'});
}
?>
Dieser Ausschnitt erzeugt im Bericht folgende Ausgabe:
string(7) "BARBARA"
string(4) "MARK"
string(6) "SOPHIE"
Den Benutzern des Musters stehen sechs hauptsächliche untergeordnete Nachrichtenflüsse für die Anpassung zur Verfügung.
Der Nachrichtenfluss 'Empfänger' ruft den untergeordneten Nachrichtenfluss OnReceive auf, wenn eine HL7-Nachricht empfangen und überprüft wurde.
Der standardmäßige untergeordnete Nachrichtenfluss OnReceive hat keine Auswirkung auf die Nachricht, kann mit diesem Anpassungspunkt aber Daten aus den Quellen standardisieren, damit Ihre Anforderungen erfüllt werden. Beispielsweise verwenden Sie das Standarddatum im Format JJJJ-MM-TT , aber die Quelle verwendet ein anderes Datumsformat. Mit diesem Anpassungspunkt können Sie alle Quellendaten ändern. Außerdem können Sie an diesem Punkt Daten einfügen, die aus anderen Quellen (z. B. Datenbanken) verfügbar sind.
Der untergeordnete Nachrichtenfluss für die Anpassung OnProcess wurde vor dem Generieren des Berichts aufgerufen. Dieser untergeordnete Nachrichtenfluss hat standardmäßig keine Auswirkung auf die Nachricht, aber Sie können mit diesem untergeordneten Nachrichtenfluss eine Eingabenachricht erstellen, die mit den für Ihre Berichte erforderlichen Spezifikationen übereinstimmt.
Die untergeordneten Nachrichtenflüsse OnSendACK und OnSendNACK werden aufgerufen, bevor Bestätigungsnachrichten generiert werden. Diese untergeordneten Nachrichtenflüsse haben standardmäßig keine Auswirkung auf die Nachricht, aber Sie können mit diesen untergeordneten Nachrichtenflüssen eine Bestätigungsnachricht erstellen, die mit den für Ihre Quellenanwendung erforderlichen Spezifikationen übereinstimmt.
Der untergeordnete Nachrichtenfluss OnErrorQueue wird aufgerufen, wenn ein Fehler ermittelt wurde und eine Fehlernachricht in die Fehlerwarteschlange geschrieben wird. Der untergeordnete Standardnachrichtenfluss für die Anpassung hat keine Auswirkung auf die Nachricht, aber Sie können mit diesem untergeordneten Nachrichtenfluss eine Fehlernachricht erstellen, die mit den für Ihre Quellenumgebung erforderlichen Spezifikationen übereinstimmt.
Der Datenfluss 'Prozessor' führt ein PHP-Script mit der Bezeichnung Processor.php aus. Dieses PHP-Script ermittelt den Namen eines PHP-Scripts, das den Bericht für diese Nachricht generiert. Der Name des PHP-Scripts verwendet das Ereignis und den Code der HL7-Nachricht.
Dies ist beispielsweise ADT_A01.php, wenn es sich bei der HL7-Nachricht um eine Nachricht zur Zulassung eines Patienten handelt (ADT^A01). Wenn das PHP-Script nicht gefunden wird, wird der untergeordnete Nachrichtenfluss
OnNoMatch
aufgerufen. Dieser untergeordnete Nachrichtenfluss hat standardmäßig keine Auswirkung auf die Nachricht, aber Sie können mit diesem untergeordneten Nachrichtenfluss Nachrichten verarbeiten, die keinen Bericht generiert haben.
Die untergeordneten Nachrichtenflüsse OnFileFinished wird aufgerufen, wenn die Berichtsdatei abgeschlossen und in das Ausgabeverzeichnis kopiert wurde. Dieser untergeordnete Nachrichtenfluss hat standardmäßig keine Auswirkung auf die Nachricht, aber Sie können mit diesem untergeordneten Nachrichtenfluss die Verarbeitung der fertig gestellten Datei erweitern. Nach der Fertigstellung des Berichts erstellt der Knoten 'FileOutput' eine neue Berichtsdatei, die für nachfolgend generierte Berichte verwendet wird.