API-Beschreibung EDPsync
Diese Seite bietet die Technische Dokumentation der API, um eigene Programme an EDP anbinden zu können.
Einführung
EDPsync bietet eine Websocket-Connection, über die u.a. Statusmeldungen sowie Informationen über Änderungen von bestimmten Daten übermittelt werden. Diese geänderten Daten können dann über verschieden API-Endpoints abgefragt werden. Bevor eine Verbindung zum Websocket oder zu einem Datenendpunkt hergestellt werden kann, muss zunächst ein JSON Web Token (JWT) abgefragt werden, der unter Angabe eines Benutzernamens und eines Passwortes an einem API-Endpoint generiert wird. Alle Endpoints werden in diesem Artikel relativ angegeben. Der vollständige Link zu /jwt kann zum Beispiel https://demo.edpweb.de:443/jwt sein.
Zeitangaben werden bei EDPsync grundsätzlich als Unix-Timestamp übertragen.
Authentifizierung
Wie bereits erwähnt, wird die Authentifizierung über JWTs getätigt. Der Endpunkt zur Generierung ist /jwt. Per Post-Befehl muss beim Aufruf im Body ein JSON-Struct übergeben werden, dass Benutzername und Passwort enthalten:
{ "action": "login", "username": "Testnutzer", "password": "EDP" }
Als Antwort auf diesen Aufruf wird im Body ein JWT versendet, dass 30 Minuten gültig ist und zur Authentifizierung genutzt werden muss. Alle 30 Minuten muss der Token durch den erneuten Aufruf dieses Endpunktes aktualisiert werden. Zur Authentifizierung bei der API wird der JWT als Header „JWT“ zu jeder Anfrage hinzugefügt. Bei Websockets muss vor der Verbindungsherstellung der JWT als AuthToken gesetzt werden.
Daten-Endpunkte
Wenn die Authentifizierung erfolgreich war, kann auf die Daten-Endpunkte zugegriffen werden. Mithilfe der Endpunkte können Daten abgefragt oder neue Daten in das EDP-System geschickt werden. Die Endpunkte können mit verschiedenen Parametern aufgerufen werden, um die abgefragten Daten zu konkretisieren. Diese Parameter werden an einen Pfad zu einem Endpunkt angehängt und durch ein Fragezeichen vom Pfad getrennt. Die Trennung zwischen verschiedenen Parametern geht über das „&“. Ein beispielhafter Aufruf könnte dann so aussehen:
/api/getRessourcen?lastID=1&einsatznummer=2023001889
Datenstruktur
Alle Daten werden im JSON-Format übertragen, dabei wird immer ein JSON-Array genutzt, in dem mehrere Datensätze enthalten sein können. Diese Datensätze sind für jeden Endpunkt unten beschrieben. Wenn Felder in der Datenbank im aktuellen Datensatz leer sind, fallen sie auch beim JSON-Struct weg.
Einsätze
Endpunkte zum Senden und Empfangen von nicht beendeten Einsätzen
JSON-Struct:
{ "EINSATZNUMMER": 2023001835, "PRIORITAET": "2", "EROEFF": 1689690844, "EROEFF_BENUTZER": "admin", "EXTERNAL_ID": "1234", "INTERNE_NUMMER": "1234", "EINSATZART": "H", "STICHWORT": "1", "STICHWORT_KLARTEXT": "TH Klein", "SCHLAGWORT": "Verkehrsunfall klein", "BEMERKUNG": "Ein beteiligter PKW", "MELDUNG": "Verkehrsunfall", "ORT": "Musterhausen", "ORTSTEIL": "Musterortsteil", "UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe", "STRASSE": "Musterweg", "HAUSNUMMER": "1", "OBJEKTNAME": "Musterobjekt", "STATION": "Station 1", "KOORDX": 8.46101760864258, "KOORDY": 50.2865424245377, "MELDENDER": "Max Mustermann", "MELDEWEG_TELEFON": "112", "SONDERSIGNAL": 0, "LASTCHANGE": 1689690844, "LASTCHANGE_USER": "admin" }
getEinsaetze
Endpoint: /api/getEinsaetze
mögliche Parameter:
- einsatznummer: Einsatznummer des abgefragten Einsatzes
- lastID: Einsatznummer des zuletzt empfangenen Einsatzes
postEinsaetze
Endpoint: /api/postEinsaetze
Einsatzabschluss
Endpunkte zum Senden und Empfangen von Einsatzabschlüssen
JSON-Struct:
{ "EINSATZNUMMER": 2023001889, "STATUS": "Geschlossen", "ENDE": 1689702991, "ENDE_BENUTZER": "admin", "UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe", "LASTCHANGE": 1689702991 }
getEinsatzabschluss
postEinsatzabschluss
Rückmeldungen
Endpunkte zum Senden und Empfangen von Rückmeldungen
JSON-Struct:
{ "ID": "234", "UNIQUE_ID": "f9464d7e-256e-11ee-a649-f0a654abeabe", "MELDENDER": "1-10", "MELDEWEG": "Tetra", "MELDUNG": "Weitergeleitet an Leistelle", "ADD_TIME": 1689694102, "ADD_USER": "admin", "CHECKSUM": "216a5676fdd6855897597ab26b943eb2a3cab8e421c2b12ee5762d4ec7ed8622", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
getRueckmeldungen
postRueckmeldungen
Maßnahmen
Endpunkte zum Senden und Empfangen von Maßnahmen
JSON-Struct:
{ "ID": "522", "ADD_TIME": 1689694165, "ADD_USER": "admin", "EINTRAG": "Polizei informiert", "CHECKSUM": "19fa523ea680cb2768e862f98ca8bc424e48ff32e91aa5cc0075b880a62d8c1d", "UNIQUE_ID": "1f1a5041-256f-11ee-a649-f0a654abeabe", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
getMassnahmen
postMassnahmen
Einsatzverlauf/Einsatztagebuch
Endpunkte zum Senden und Empfangen von ETB-Einträgen
JSON-Struct:
{ "ID": "140", "ADD_TIMESTAMP": 1689694568, "ADD_USER": "admin", "VERLAUFID": 1, "UNIQUE_ID": "0ef1686f-2570-11ee-a649-f0a654abeabe", "TYP": "Anforderung", "VON": "Einsatzleitung", "AN": "Leitstelle", "EINTRAG": "Eine Testaufgabe zur Einsatzstelle", "CHECKSUM": "e34ed7266ca787df688884eab8366c6a04c4c68cbf34610c77951d50948fc412", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
getEinsatzverlauf
postEinsatzverlauf
Einsatzabschnitte
Endpunkte zum Senden und Empfangen von Einsatzabschnitten
JSON-Struct:
{ "ID": "197", "UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe", "BEZEICHNUNG": "Bereitstellungsraum", "EAL": "Mustermann", "KANAL": "TMO", "RUFNAME": "1-10-1", "NUMMER": 1, "TAKTZEICHEN": "EDPTZ_PGtyZWlzIGljb25iaWc9ImJlcmVpdHN0ZWxsdW5nIiBmZ2NvbG9yPSIjMDAwMDAwIiBiZ2NvbG9yPSIjZmZmZjAwIiBmb250c2l6ZT0iNTUiPg==", "LASTCHANGE_USER": "admin", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
getEinsatzabschnitt
postEinsatzabschnitt
Ressourcen
Endpunkte zum Senden und Empfangen von Ressourcen
JSON-Struct:
{ "ID": "90", "TYP": "Einsatzmittel", "BEZEICHNUNG": "RTW", "ANZAHL": 5, "LASTCHANGE": 1689695871, "UNIQUE_ID": "1775f42f-2573-11ee-a649-f0a654abeabe", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe", "ABSCHNITT_UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe" }
getRessourcen
postRessourcen
Ressourcen löschen
Endpunkte zum Senden und Empfangen zur Löschung von Ressourcen
JSON-Struct:
{ "UNIQUE_ID": "1775f42f-2573-11ee-a649-f0a654abeabe" }
delRessourcen
Schäden
Endpunkte zum Senden und Empfangen von Schäden
JSON-Struct:
{ "ID": "41", "BESCHREIBUNG": "Patient GELB", "ANZAHL": 3, "FRAGLICH": 0, "TAKTZEICHEN": "EDPTZ_PHBlcnNvbiBzY2hhZGVuPSJwZXJzb252ZXJsZXR6dCIgZmdjb2xvcj0iI2NmY2QxMyIgYmdjb2xvcj0iI2ZmZmZmZiI+", "UNIQUE_ID": "23f3f35b-2573-11ee-a649-f0a654abeabe", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe", "ABSCHNITT_UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe" }
getSchaeden
postSchaeden
Schäden löschen
Endpunkte zum Senden und Empfangen zur Löschung von Schäden
JSON-Struct:
{ "UNIQUE_ID": "23f3f35b-2573-11ee-a649-f0a654abeabe" }
delSchaeden
Patienten
Endpunkte zum Senden und Empfangen von Patienten
JSON-Struct:
{ "ID": "58", "NAME": "Mustermann", "VORNAME": "Max", "GESCHLECHT": "unbekannt", "GEBDATUM": "01.01.2000", "EM": "1-83-2", "EM2": "1-92-1", "PATNUMMER": "3", "KOMMENTAR": "Ganz schlimm", "ADDTIME": 1689695952, "TRANSPORTART": "Liegend", "VERLETZUNG": "Kopfplatzwunde", "NOTARZT": 1, "ISOLIERT": 0, "RMI": "224", "PAT_ALTER": "23", "RMC": "212313", "ZIELORT": "KH Nordwest", "BEH_PRIO": "2", "SICHTUNGSKATEGORIE": "Gelb", "MASSNAHMEN": "Blutung gestillt", "LASTCHANGE": 1689702368, "UNIQUE_ID": "47e74eee-2573-11ee-a649-f0a654abeabe", "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe", "ABSCHNITT_UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe" }
getPatienten
postPatienten
EDPsync-Freigabe
Endpunkte zum Senden und Empfangen von Einsatzfreigaben über EDPsync
JSON-Struct:
{ "BENUTZERROLLE": "Musterhausen", "ADD_TIMESTAMP": 1689702917, "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
postFreigabe
Fahrzeugzuteilung
Endpunkte zum Senden und Empfangen von Fahrzeugzuteilungen
JSON-Struct:
{ "ID": 472, "RUFNAME": "1-83-2", "LASTCHANGE": 1689702276, "EINSATZ_UNIQUE_ID": "6324eaf9-2567-11ee-a649-f0a654abeabe" }
getEMDispo
dispoEM
Fahrzeugentzug
Endpunkte zum Senden und Empfangen von Fahrzeugentzügen
JSON-Struct:
{ "RUFNAME": "1-83-2", "LASTCHANGE": 1685026590 }
getEMEntz
postEMEntz
Fahrzeug: Abschnittszuteilung
Endpunkte zum Senden und Empfangen von Fahrzeugzuteilungen zu Abschnitten
JSON-Struct:
{ "RUFNAME": "1-83-2", "LASTCHANGE": 1689702700, "ABSCHNITT_UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe" }
getEMAbschnitt
postEMAbschnitt
Fahrzeug: Besatzung
Endpunkte zum Senden und Empfangen von Fahrzeugbesatzungen
JSON-Struct:
{ "RUFNAME": "1-83-2", "LASTCHANGE": 1685026590, "PERSONAL": "", "BESATZUNG_1": 0, "BESATZUNG_2": 1, "BESATZUNG_3": 1, "BESATZUNG_GES": 2, "BESATZUNG_PA": 0 }
getEMBesatzung
postEMBesatzung
Fahrzeug: Abschnittszuteilung & Besatzung
Endpunkte zum Senden und Empfangen von Fahrzeugzuteilungen zu Abschnitten & Besatzung gleichzeitig
JSON-Struct:
{ "RUFNAME": "1-83-2", "LASTCHANGE": 1689702700, "PERSONAL": "", "BESATZUNG_1": 0, "BESATZUNG_2": 1, "BESATZUNG_3": 1, "BESATZUNG_GES": 2, "BESATZUNG_PA": 0, "ABSCHNITT_UNIQUE_ID": "082160d9-2573-11ee-a649-f0a654abeabe" }
getEMBesEa
postEMBesEa
Lagekarte
Endpunkte zum Senden und Empfangen von Lagekarten
JSON-Struct: