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:



getLagekarte

postLagekarte