Beispiel 2 - Labordaten abrufen

Beschreibung des Szenarios

Dieses Beispiel beschreibt, wie Sie mit Hilfe einer REST-Call-Aktion automatisch in einem definierten Zeitintervall Daten von einer Intrexx-Instanz von einer anderen Intrexx-Instanz abholen können. Dabei ruft die REST-Call-Aktion einen Endpunkt auf, der mit Hilfe der Intrexx Application API erstellt wurde.

Im Beispiel wird davon ausgegangen, dass es ein Labor und eine Klinik gibt, die beide Intrexx einsetzen. Das Labor ist Dienstleister der Klinik und erhält von dieser regelmäßig Proben von Patienten. Diese werden vom Labor untersucht. Das Resultat ist entweder positiv oder negativ.

Entscheidend ist nun, wie die Klinik die Laborergebnisse erhält. Die Klinik möchte nicht, dass die Laborergebnisse postalisch oder per E-Mail übermittelt werden. Stattdessen soll die Übermittlung der Ergebnisse automatisch erfolgen. Dabei werden die Ergebnisse aus dem Labor automatisch den entsprechenden Patienten im Klinik-Patientenverzeichnis zugeordnet.

Lösung - Überblick

Das Labor speichert die Ergebnisse in einer Datenbank ab. Gleichzeitig gewährt das Labor über eine Applikation bzw. über eine Applikations-API-Endpunkt Zugriff auf die Datenbank.

Die Klinik erstellt einen Prozess mit einer REST-Call-Aktion, die automatisch alle 30 Minuten beim API-Endpunkt des Labors abfragt, ob neue Ergebnisse vorliegen. Wenn dies der Fall ist, wird automatisch in der klinikeigenen Patientenverwaltung das Ergebnis für den entsprechenden Patienten eingestellt.

Portalansicht

In der Portalansicht könnte sich dies in etwa so darstellen:

Beachten Sie, dass das Beispiel keine "vollwertige" Lösung für den Datenaustausch zwischen einem Labor und einer Klinik beschreibt. Vielmehr soll es grundlegende Einsatzmöglichkeiten der REST-Call-Aktion illustrieren. Gleichzeitig können Sie das Beispiel als Ausgangspunkt für Ihre eigenen Ausbaustufen nutzen.

Zentrale Aktionen

Um das hier beschriebene Beispiel zu erstellen, müssen Sie die folgenden zentralen Aktionen in Intrexx ausführen:

Labor

1. Erstellen einer Applikation zum Erfassen der Ergebnisse

Um die Ergebnisse samt den zugehörigen Patientendaten erfassen zu können, benötigen Sie eine Applikation ("Labor-Applikation"). Für diese müssen Sie die erforderlichen Datenfelder anlegen. In unserem Beispiel erfolgt die Eingabe der Patientendaten und des Ergebnisses über ein Eingabeformular.

2. Erstellen eines API-Endpunkts, der das Abfragen der Ergebnisse ermöglicht

Damit die Ergebnisse von der Klinik abgefragt bzw. abgeholt werden können, müssen Sie einen API-Endpunkt erstellen, der den Zugriff auf die Datengruppe, in der die Patientendaten und Ergebnisse gespeichert sind, ermöglicht. Hierfür setzen wir die Intrexx Application API ein.

Klinik

3. Erstellen einer Applikation zum Erfassen der Patientendaten inklusive der Ergebnisse aus dem Labor

Um die Ergebnisse aus dem Labor speichern zu können, benötigen Sie eine Applikation ("Klinik-Applikation"). Die Datenfelder entsprechen (im Wesentlichen) den Datenfeldern der Labor-App.

In unserem Beispiel dienen die Eingaben in den Datenfeldern dem Abgleich der Patienten, so dass den jeweiligen Patienten die richtigen Ergebnisse zugeordnet werden.

4. Erstellen eines Prozesses, der in regelmäßigen Intervallen eine REST-Call-Aktion ausführt

Abschließend müssen Sie einen Prozess erstellen, der zeitgesteuert automatisch in einem bestimmten Zeitintervall gestartet wird. Der Prozess enthält eine REST-Call-Aktion, die auf den API-Endpunkt der Labor-App zugreift. Falls dort Daten aktualisiert wurden, werden diese an die Klinik übermittelt. Der Prozess speichert die abgeholten Daten in der Klinik-App.

1. Labor-Applikation erstellen

Beim Erstellen der Labor-Applikation gibt es keine Besonderheiten zu beachten.

Portalansicht

Die Labor-Applikation stellt sich in der Portalansicht so dar:

Sie besteht aus einer Übersichtsseite, auf der die erfassten Patientendaten samt Ergebnis des Tests angezeigt und bearbeitet werden können.

Der Eingabe-Dialog stellt sich so dar:

Portal Manager

Datengruppe

Die Labor-Applikation benötigt eine Datengruppe mit den folgenden Datenfeldern:

Vorname (String), Nachname (String)

Hier ist der Vor- und Nachname des Patienten zu erfassen.

Vor- und Nachname werden zum Abgleich der Datensätze zwischen Labor und Klinik verwendet.

Reference ID (Integer)

Hier ist eine eindeutige ID zu hinterlegen.

Im hier beschriebenen Beispiel muss auch die Klinik diese ID kennen, da sie zusätzlich zum Vor- und Nachnamen zur Identifikation des Patienten bzw. zum korrekten Datenabgleich verwendet wird.

Ergebnis (Boolean)

Hier ist das Ergebnis des Tests zu erfassen.

Im hier beschriebenen Beispiel wird ein Kontrollkästchen (Boolean) für das Ergebnis verwendet. Das Ergebnis kann entweder positiv oder negativ sein. In einer Ausbaustufe wären hier weitere "Zustände" wie beispielsweise "Ergebnis noch ausstehend" etc. denkbar.

Eingabeseite

Erstellen Sie eine Eingabeseite für die Datenfelder.

Übersichtsseite

Erstellen Sie eine Übersichtsseite mit einer Ansichtstabelle, die die Eingaben anzeigt.

2. API-Endpunkt erstellen

Detaillierte Informationen zum Erstellen von API-Endpunkten auf der Basis der Intrexx Application API finden Sie in Abschnitt Intrexx Application API

Im Folgenden werden die zentralen Schritte, die zur Umsetzung unseres Beispiels erforderlich sind, beschrieben.

  1. Aktivieren Sie im Menü "Ansicht" das Kontrollkästchen "API-Endpunkte".

  2. Wechseln Sie auf die Registerkarte "API-Endpunkte".

  3. Klicken Sie auf das -Icon.

    Das Dialogfenster "Allgemein" wird angezeigt.

  4. Erfassen Sie einen Namen und wählen Sie bei "Typ" die Schaltfläche "Datengruppen-Endpunkt" aus.

  5. Klicken Sie auf "Weiter".

    Das Dialogfenster "Datengruppenauswahl" wird angezeigt.

    Bei "Endpunkt" ist bereits "GET" voreingestellt. Belassen Sie diese Einstellung.

    Aktion

    Wählen Sie bei "Aktion" den Wert "Mehrere Datensätze lesen" aus. Dies ist erforderlich, weil alle Patientendaten bei einer API-Abfrage auf Änderungen bestehender Datensätze und das Vorliegen neuer Datensätze überprüft werden.

    Applikation

    Wählen Sie hier den Wert "(aktuelle Applikation)" aus.

    Datengruppe

    Wählen Sie hier die Datengruppe "Tests" aus.

    Rückgabewerte der Abfrage

    Fügen Sie hier die folgenden Datenfelder hinzu:

    • vorname

    • nachname

    • nummer

    • ergebnis

    • created

  6. Klicken Sie auf "Weiter".

    Sie gelangen in den Dialog "Pfad-Parameter".

    Erfassen Sie die folgenden Pfad-Parameter:

    • abfrage

    • reference-id

    • vorname

    • nachname

  7. Klicken Sie auf "Weiter".

    Das Dialogfenster "Query-Parameter" wird angezeigt.

    In diesem Dialogfenster sind keine Eingaben bzw. Einstellungen erforderlich.

  8. Klicken Sie auf "Weiter".

    Das Dialogfenster "Filter und Sortierung" wird angezeigt.

    Erfassen Sie folgende Filter:

    • Vorname

    • Nachname

    • Reference ID

  9. Klicken Sie auf "Fertigstellen".

API-Key erstellen

Damit die Klinik bzw. die Klinik-Applikation auf den API-Endpunkt des Labors zugreifen kann, erstellen wir einen API-Key. Dieser wird später seitens der Klinik verwendet, um sich am API-Endpunkt zu authentifizieren.

Detaillierte Informationen hierzu finden Sie in Abschnitt API-Keys erstellen und verwalten.

3. Klinik-Applikation erstellen

Beim Erstellen der Klinik-Applikation gibt es keine Besonderheiten zu beachten.

Portalansicht

Die Klinik-Applikation stellt sich in der Portalansicht so dar:

Sie besteht aus einer Übersichtsseite, auf der die erfassten Patientendaten samt Ergebnis des Tests angezeigt und bearbeitet werden können.

Der Eingabe-Dialog stellt sich so dar:

Portal Manager

Datengruppe

Die Klinik-Applikation benötigt eine Datengruppe mit den folgenden Datenfeldern:

Vorname (String), Nachname (String)

Hier ist der Vor- und Nachname des Patienten zu erfassen.

Vor- und Nachname werden zum Abgleich der Datensätze zwischen Labor und Klinik verwendet.

Reference ID (Integer)

Hier ist eine eindeutige ID zu hinterlegen.

Im hier beschriebenen Beispiel muss auch die Klinik diese ID kennen, da sie zusätzlich zum Vor- und Nachnamen zur Identifikation des Patienten bzw. zum korrekten Datenabgleich verwendet wird.

Ergebnis (Boolean)

Hier wird das Ergebnis des mit Hilfe der REST-Call-Aktion automatisch eingestellt.

Abgeholt

Hier wird automatisch vermerkt, ob ein Ergebnis mit Hilfe der REST-Call-Aktion beim Labor abgeholt wurde. Durch das aktivierte Kontrollkästchen wird ein mehrfaches Abholen für den entsprechenden Patienten unterbunden.

Eingabeseite

Erstellen Sie eine Eingabeseite für die Datenfelder.

Übersichtsseite

Erstellen Sie eine Übersichtsseite mit einer Ansichtstabelle, die die Eingaben anzeigt.

4. Prozess mit REST-Call-Aktion erstellen

Prozess auslösen - Globaler Timer (1)

Der Prozess wird zeitgesteuert gestartet.

Fügen Sie dem Prozess einen Globalen Timer hinzu.

Legen Sie den gewünschten Ausführungszeitpunkt fest. In unserem Beispiel wird der Prozess bzw. die REST-Call-Aktion alle 30 Minuten ausgeführt.

Wählen Sie unter Datengruppe die Applikation "Klinik" und die Datengruppe "Patienten" aus.

Im nächsten Schritt erstellen wir einen Filter, damit die REST-Call-Aktion nur für die Patienten durchgeführt wird, für die noch kein Ergebnis abgeholt wurde.

Klicken Sie auf das - Icon.

Das Dialogfenster "Filter" wird angezeigt.

Klicken Sie auf das - Icon.

Das Dialogfenster "Eigenschaften des Filterausdrucks" wird angezeigt.

Datengruppe

Wählen Sie die Datengruppe "Patienten" aus.

Datenfeld

Wählen Sie das Datenfeld "Abgeholt <boolean>" aus.

Operation

Wählen Sie den Wert "Gleich" aus.

Benutzerdefiniert

Boolean (Logischer Wert)

Wählen Sie hier den Wert "Falsch" aus.

Prozess auslösen - Timer-Ereignisbehandler (2)

Fügen Sie dem Prozess einen Timer-Ereignisbehandler hinzu.

Wählen Sie unter Timer-Ereignisbehandler den zuvor hinzugefügten Globalen Timer aus.

REST-Call einrichten - Labor-Ergebnisse abholen (3)

Allgemein Erfassen Sie einen Alias für die REST-Call-Aktion.

JSON parsen Aktivieren Sie das Kontrollkästchen, da der API-Endpunkt der Labor-Applikation im JSON-Format antwortet und dieses geparst werden muss.

Authentifizierung und Header

In diesem Dialogfenster müssen Sie die erforderlichen Angaben zur Authentifikation am API-Endpunkt der Labor-Applikation hinterlegen (API-Endpunkt erstellen).

Wählen Sie den Authentifizierungstyp „API-Key“ aus.

Erfassen Sie im Feld "Token" den API-Key, den Sie für den API-Endpunkt der Labor-Applikation erzeugt haben (API-Key erstellen).

Sie haben auch die Möglichkeit, den API-Key über das Resource-Mapping () zu verwalten.

Request In diesem Dialog wird der Request definiert.

Detaillierte Informationen hierzu finden Sie in Abschnitt Request konfigurieren.

Methode GET

Schema https

Port (Optional) In unserem Beispiel ist dies der Port 1342.

Wenn Sie keinen Wert eingeben, werden folgende Default-Werte verwendet:

  • Port 443 (bei HTTPS)

  • Port 80 (bei HTTP)

Hostname Erfassen Sie hier den Hostnamen, unter dem der REST-API-Endpunkt zu erreichen ist.

Pfad Erfassen Sie hier den Pfad.

In unserem Beispiel ist der Pfad folgendermaßen aufgebaut:

api/app/40AD456DF58779GGG4273F123456789/abfrage/${vorname}/${nachname}/${reference-id}

Die folgende Tabelle gibt Ihnen einen Überblick über den generellen Aufbau der API-URL.

Methode

Basispfad

Parameter
variabel fix fix variabel variabel variabel
GET /api

/app/

/GUID der Applikation /Pfad-Parameter ?/Query-Parameter

Detaillierte Informationen hierzu finden Sie in Abschnitt Aufbau der API-URL.

Sie haben auch die Möglichkeit, die Pfad-Parameter über das Resource-Mapping () zu verwalten.

Body Wählen Sie als Body-Typ "Keiner" aus.

Klicken Sie auf "OK".

Response Daten verarbeiten (4)

In diesem Prozess-Schritt geht es darum, das erhaltene JSON zu verarbeiten und die Ergebnisse in den Verarbeitungskontext zu legen. Dafür kommt eine Groovy-Skript-Aktion zum Einsatz.

JSON

Die Response Daten stellen sich folgendermaßen dar:

[
	information:[                <-- "information" kommt aus der App-API und behandelt, was geliefert wird.
		limit:150, 
		offset:0, 
		orderBy:[
			[
				field:1234B7DFE7A0D74FD2318E540D9AF3B72EF789, 
				order:asc
			]
		]
	],
	data:[                      <-- Das ist der abgeholte Datensatz.
		[
			ergebnis:true, 
			reference-id:1234, 
			vorname:John,
			nachname: Doe, 
			created:2024-07-24T11:24:46Z
		]
	]
]

Zum Verarbeiten der Response Daten wird in unserem Beispiel das folgende Groovy-Script verwendet.

g_syslog.info("\nAbgeholtes Ergebnis: \n" + g_sharedState.abholen.body.json + "\n");
g_syslog.info("\nBefund: \n" + g_sharedState.abholen.body.json.data.ergebnis + "\n");

if (g_sharedState.abholen.body.json.data.ergebnis[0] == null) {
	g_syslog.info("Kein Befund vorhanden")
} else {
	boolean befund = g_sharedState.abholen.body.json.data.ergebnis[0];
	if (befund == false) {
		g_syslog.info("Befund ist negativ");
	} else {
		g_syslog.info("Befund ist positiv");
	}
}

Ermitteln, ob ein Ergebnis vorliegt (5)

In diesem Prozess-Schritt wird ermittelt, ob ein (neues) Ergebnis in den Response Daten übermittelt wurde. Hierfür kommt eine Groovy-Bedingung zum Einsatz.

Um zu ermitteln, ob ein (neues) Ergebnis vorliegt, wird in unserem Beispiel das folgendes Groovy-Skript verwendet.

if (g_sharedState.abholen.body.json.data.ergebnis[0] == null) {
	return [foundNoResult]
} else {
	return [foundResult]
}

Es liegen keine neuen Ergebnisse vor - Logging(6)

In unserem Beispiel soll ein Eintrag in ein Logfile geschrieben werden, falls keine neuen Ergebnisse vorliegen.

Das Logging hat nur informativen Charakter. Für die Funktionalität des Prozesses hat es keine Relevanz.

Für das Logging setzen wir eine Groovy-Skript Aktion ein, die das folgendes Groovy-Skript verwendet.

g_syslog.info("Kein Befund");

Ergebnisse für das Schreiben in die Patienten-Datengruppe vorbereiten (7)

Falls neue Ergebnisse in den Response Daten übermittelt wurden, sollen diese in die Patienten-Datengruppe geschrieben werden. Damit dies möglich ist, werden diese zunächst in den Verarbeitungskontext geschrieben. Hierfür wird das folgendes Groovy-Skript verwendet.

g_sharedState.befund = g_sharedState.abholen.body.json.data.ergebnis[0];

Ergebnisse in die Patienten-Datengruppe schreiben (8)

Der letzte Prozess-Schritt besteht darin, Folgendes in die Patienten-Datengruppe zu schreiben:

  • das Testergebnis selbst

  • die Tatsache, dass ein Testergebnis abgeholt wurde (Hierauf wird gefiltert.)

Hierfür kommt eine Datengruppen-Aktion zum Einsatz.

Allgemein Erfassen Sie einen Titel für die Aktion. Achten Sie darauf, dass die Option "Datensatz ändern" aktiviert ist.

Zieldatengruppe Wählen Sie die Applikation "Klinik" aus. Da diese Applikation nur die Datengruppe "Patienten" enthält, ist diese automatisch auch ausgewählt.

Manipulationsmenge Aktivieren Sie die Option "Einfacher Filter". Wählen Sie für die Zieldatengruppe und die Quelldatengruppe jeweils das Dateifeld "(PK)(S)ID <integer> aus".

Feldzuordnung Bei der Feldzuordnung muss in der Quelle noch der Parameter "befund" aus dem Verarbeitungskontext hinzugefügt werden.

  1. Klicken Sie auf das - Icon.

    Das Dialogfenster "Benutzerdefinierter Wert" wird angezeigt.

  2. Aktivieren Sie die Option "Systemwert".

  3. Klicken Sie auf das - Icon.

    Das Dialogfenster "Systemwert" wird angezeigt.

    Typ Wählen Sie hier den Wert "Verarbeitungskontext" aus.

    Wert Erfassen Sie hier den Text "befund".

  4. Klicken Sie auf "OK".

    Sie gelangen zurück in das Dialogfenster "Feldzuordnung".

  5. Klicken Sie erneut auf das - Icon.

    Das Dialogfenster "Benutzerdefinierter Wert" wird angezeigt.

  6. Aktivieren Sie die Option "Statischer Wert".

  7. Klicken Sie auf das - Icon.

  8. Das Dialogfenster "Statischer Wert" wird angezeigt.

    Datentyp Wählen Sie hier den Wert "Boolean (Logischer Wert) aus.

  9. Klicken Sie auf "OK".

    Die Registerkarte "Feldzuordnung" stellt sich nun so dar:

  10. Klicken Sie auf "OK".

Sie haben den Prozess nun vollständig eingerichtet.