Skip to content
Snippets Groups Projects

Einleitung

Den Ärzten wird es möglich sein, direkt von ihren Smartphones aus eine Anordnung zu erstellen. Dazu werden ihnen zunächst ein Diktatfeld sowie eine Anleitung zum richtigen Diktieren gezeigt. Das Diktieren soll mit dem Nuance Dragon Medical SpeechKit erfolgen. Nach dem Diktat wird dem Nutzer ein strukturiertes Interface angezeigt. Das Diktat wird dabei an die Information Extraction weitergeleitet, die ein JSON mit erkannten Feldern zurückliefert, womit die Textfelder im strukturierten Interface befüllt werden. Diese Textfelder sind von der Größe an den zu erwartenden Text angepasst. Bei Bedarf erweitern sich diese Felder automatisch. Unter den Textfeldern werden Auswahlmöglichkeiten für Risikofaktoren gezeigt. Diese werden abhängig der gewählten Modalität ein- oder ausgeblendet – für ein CT wird beispielsweise nur die Schwangerschaft (bei weiblichen Patienten ab einem bestimmten Alter) und die Kontrastmittelallergie angezeigt. Diese werden abhängig von der JSON auf „Nein“, „Unklar“, „Ja“, oder – falls nichts angegeben wurde – nicht gesetzt. Eine Anordnung kann nur abgeschickt werden, wenn diese Pflichtfelder ausgefüllt sind.

Unter dem Feld für die Untersuchungen befindet sich ein Button namens „Leistungen auswählen“. Dieser leitet einen bei Klick auf den Leistungsbaum weiter. Dieser enthält den Leistungsbaum ohne Kinderklinik und Speicherfolie. Tiefer gehende Ebenen sind mit farbigen Balken an der linken Seite gekennzeichnet. Wählt ein Arzt hier eine oder mehrere Leistungen aus, werden diese zunächst mit einem Haken markiert, und beim Klick auf Speichern an die strukturierte Eingabe übergeben, wo diese in das Feld für die Angeordneten Untersuchungen eingetragen werden.

Beim Absenden werden die Daten in der JSON aktualisiert und per POST zurück an eine vorher spezifizierte URL geschickt.

Input

Beim Aufruf des Webservices sind folgende Daten über die Websiteparameter mitzusenden:

Name Typ Beschreibung Optionen / Beispiel
targeturl String (URL) Die Ziel-URL inklusive aller benötigten Parameter.
sex String (Enum) Das biologische Geschlecht des Patienten. “m”,”w”
age String (Int) Das Alter des Patienten. “78”, “45”, “2”
userid String Die userid für Nuance.

Kommunikation mit der Information Extraction

In einem Zwischenschritt wird das erkannte Diktat an den Webservice zur Information Extraction geschickt, die wiederum eine JSON mit den extrahierten Daten zurückschickt. Diese Information Extraction ist im Dokument „Webservice zur Extraktion von Feldern des klinischen Auftrags aus diktierten Anordnungen“ genauer beschrieben.

Input

Folgende JSON wird per POST als Input an die Information Extraction geschickt:

Name Typ Beschreibung Optionen / Beispiel
docid String Eindeutige ID der Anordnung „0000000012345“
doctime String (DateTime) Erstellungszeitpunkt der Anordnung „20201116150000“
doctext String Der Text der Anordnung „Schulter in 2 Ebe…“

Output

Folgende JSON wird als Rückmeldung von der Information Extraction erwartet:

Name Typ Beschreibung Optionen / Beispiel
docid String s.o. „0000000012345“
doctime String (DateTime) s.o. „20201116150000“
modality String die ermittelte Modalität „konv. Röntgen“
anamnesis String die ermittelte (Kurz)anamnese „nach Sturz von …“
diagnosis String die ermittelte Diagnose „V.a. Fraktur des …“
question String die ermittelte Fragestellung „Rippenserienfraktur?“
notice String Bemerkungen
pregnancy String (Enum) Schwangerschaft vorhanden? „nicht erhoben“ / „ja“ / „nein“ / „nicht bekannt“
pregnancy_week String (Int) Schwangerschaftswoche „0“, „1“, „2“, …
infection String (Enum) Infektionsgrad „IRG-0“ / „IRG-1“ / „IRG-2“/ „IRG-3“/ „UNBEKANNT“
implantate String (Enum) Metallimplantate? „nicht erhoben“ / „ja“ / „nein“ / „nicht bekannt“
pacemaker String (Enum) Herzschrittmacher? „nicht erhoben“ / „ja“ / „nein“ / „nicht bekannt“
allergy String (Enum) Kontrastmittelallergie? „nicht erhoben“ / „ja“ / „nein“ / „nicht bekannt“
allergy_type_iodine String (Enum) auf Jod-haltige? „ja“ / „nein“
allergy_type_other String (Enum) auf andere als Jod-haltige? „ja“ / „nein“
preferred_date String der Wunschtermin als Text wie er diktiert wurde z.B. „am 3. Juni 23“
preferred_date_cycle String (Int) Zyklus „1“, „2“, „3“, …
long_text String Textbasierte Auflistung der Extrakte zur Anzeige im SAP Formular „Anordnung“

„Modalität: MRT

Anamnese: …

Fragestellung: …“

services List<service> Liste von Leistungen s.u.
services_top10 List<raw_service> Liste der Top 10 Leistungscodes aus dem Transformer Modell s.u.
tokens List<String> Liste von Tokens aus dem Anamnesis Extractor [„Knie“, „links“, „in“, „2“, „Ebenen“,…]
probs List<List<Double>> Wahrscheinlichkeit für jedes Token, dass es ein bestimmtes Label hat. [[1.0,0.0],[0.7,0.3]]
label_dict Map<String, String> Dictionary das sagt, welche Stelle in „props“ welches Label bedeutet {„0“: „PAD“, „1“: „0“, „2“: „B-A“, …}

Definition des Objekts „service“:

Name Typ Beschreibung Optionen / Beispiel
code String Leistungscode aus dem Katalog des UKW „RKK2EBSL“
description String Leistungsbezeichnung „Röntgen Schulter in zwei Ebenen“
number String (Int) Menge der Leistung „1“, „2“, „3“, …
localisation String (Enum) Lokalisation der Leistung „B“ / „L“ / „R“ / „NB“ / „NR“ / „empty”

Definition des Objekts „raw_service“:

Name Typ Beschreibung Optionen / Beispiel
code String Leistungscode aus dem Katalog des UKW „RKK2EBSL“
description String wörtliche Beschreibung der Leistung aus dem Katalog des UKW „Schulter in zwei Ebenen“
P Double Wahrscheinlichkeit des Codes 0.9979548454

Output

Nach der Verarbeitung und Korrektur durch den Nutzer wird folgende JSON per POST an die im Input übergebene targeturl geschickt:

Name Typ Beschreibung Optionen / Beispiel
anamnesis String die ermittelte (Kurz)anamnese „nach Sturz von …“
question String die ermittelte Fragestellung „Rippenserienfraktur?“
notice String Bemerkungen
pregnancy String (Enum) Schwangerschaft vorhanden? „ja“ / „nein“ / „unklar“
pregnancy_week String (Int) Schwangerschaftswoche „0“, „1“, „2“, …
implantate String (Enum) Metallimplantate? „ja“ / „nein“ / „unklar“
pacemaker String (Enum) Herzschrittmacher? „ja“ / „nein“ / „unklar“
allergy String (Enum) Kontrastmittelallergie? „ja“ / „nein“ / „unklar“
allergy_type_iodine String (Enum) auf Jod-haltige? „ja“ / „nein“
allergy_type_other String (Enum) auf andere als Jod-haltige? „ja“ / „nein“
preferred_date String der Wunschtermin als Text wie er diktiert wurde z.B. „am 3. Juni 23“
services List<service> Liste von Leistungen s.u.
infections List <String> Vorliegende Infektionen. "keine", "unbekannt", ...
doctext String Der ursprünglich diktierte Text. „Schulter in 2 Ebenen...“

Definition des Objekts „service“:

Name Typ Beschreibung Optionen / Beispiel
code String Leistungscode aus dem Katalog des UKW „RKK2EBSL“
description String Leistungsbezeichnung „Röntgen Schulter in zwei Ebenen“
number String (Int) Menge der Leistung „1“, „2“, „3“, …
localisation String (Enum) Lokalisation der Leistung „B“ / „L“ / „R“ / „NB“ / „NR“ / „empty”
modality String Die ermittelte Modalität „konv. Röntgen“

Ist der HTTP Request an die targeturl einschließlich JSON gültig und vollständig, wird dieser mit einem HTTP Status 200 beantwortet. Im SAP wird gleichzeitig ein strukturiertes Anordnungsdokument angelegt und mit den übergebenen Daten befüllt. Jeder gültige HTTP Request legt ein neues Anordnungsdokument an.

Bei ungültigem oder unvollständigem Request wird ein HTTP Status 400 generiert, zusammen mit einem das Problem beschreibenden Fehlertext. Im Fehlerfall wird kein Anordnungsdokument im SAP angelegt.

Requirements und Start

Der Webservice ist auf allen Betriebssystemen lauffähig. Zum Kompilieren benötigt er Node (mit den packages connect & serve-static), Ionic, Angular, und Typescript. Der Webservice selbst benötigt nur HTML und Javascript.

Bei dem Aufruf müssen die oben beschriebenen Felder als Parameter übergeben werden. Die Website schickt die überarbeitete JSON per POST an die in den Parametern beschriebene targeturl.

Betrieb am UKW

Der Server läuft auf einem Windows 10 Server und wird von einem Windows IIS server verwaltet. Der Service trägt den Namen „Anforderungserstellung" und kann über Windows IIS gestartet oder gestoppt werden. Er ist unter https://vukwm01.klinik.uni-wuerzburg.de per HTTPS erreichbar. Um den Service zu updaten, müssen lediglich die Dateien in "C:\inetpub\wwwroot" durch die neuen Dateien ersetzt und der Server neu gestartet werden.