"Loki - Nordischer Gott des Feuers"
General application description is in German
pylokid ist eine Hilfsapplikation um z.B. Einsatzaufträge, welche die Einsatzleitzentrale (ELZ) per E-Mail versendet, automatisch im Lodur einzutragen. Die Applikation versucht so viele Informationen über den Einsatz in Erfahrung zu bringen, wie nur möglich. Dies geschieht unter anderem durch Auslesen von Daten aus dem der E-Mail angehängten PDF.
Im Moment ist die Applikation vermutlich nur im Kanton Zürich einsetzbar und vermutlich auch nur für die Feuerwehr Urdorf. Bei Interesse an dieser Applikation von anderen Feuerwehren bin ich gerne bereit, diese entsprechend zu generalisieren und weiter zu entwickeln.
Bei einem Feuerwehralarm sendet die ELZ automatisch eine E-Mail mit einem PDF im Anhang, welches alle notwendigen Informationen zum Einsatz enthält. Nach Abschluss des Einsatzes sendet die ELZ ein weiteres E-Mail mit dem Einsatzprotokoll.
pylokid funktioniert so:
Desweiteren wird über Pushover eine Nachricht mit möglichst vielen Informationen publiziert.
Im abgebildeten Prozess gibt es viele Stolpersteine. Zwei davon:
Um die Probleme mit Lodur zu umgehen, werden alle Daten, welche an Lodur gesendet werden, in einem JSON File im WebDAV neben den PDFs abgelegt. So lässt sich im Nachhinein ein Datensatz bearbeiten und eine Zuordnung des Einsatzes im WebDAV und in Lodur herstellen.
PDF extrahieren und in Cloud hochladen
Falls PDF noch nicht geparst wurde wird davon ausgegangen, dass dies die initiale Meldung ist:
Falls Einsatz im Lodur noch nicht ausgelesen:
Lodur Datensatz ID aus Cloud laden (JSON Datei)
Ganzer Datensatz aus Lodur auslesen und als JSON in Cloud speichern
Falls Datensatz zur Bearbeitung freigegeben ist (aut_created_report == finished
)
The application is written in Python and runs perfectly on Kubernetes.
Configuration is done via environment variables:
Environment variables can also be stored in a .env
file.
What could possibly go wrong? A lot!
02. Einsatzart FKS
<option value="1">Brandbekämpfung</option>
<option value="2">Elementarereignisse</option>
<option value="3">Strassenrettung</option>
<option value="4">Technische Hilfeleistungen</option>
<option value="5">Ölwehr</option>
<option value="6">Chemierwehr inkl. B-Einsätze</option>
<option value="7">Strahlenwehr</option>
<option value="8">Einsätze auf Bahnanlagen</option>
<option value="9">BMA Unechte Alarme</option>
<option value="10">Verschiedene Einsätze</option>
<option value="11">Keine alarmmässigen Einsätze</option>
03. Verrechnungsart
emergency_concept_id
= valuever_sart
= rc-id<option value="2" rc-id="ab">ABC-Einsatz inkl. Oel (Ortsfeuerwehr)</option>
<option value="3" rc-id="ab">ABC-Einsätze inkl. Oel (Stützpunkte)</option>
<option value="4" rc-id="ab">ABC-Messwagen (Stützpunkte)</option>
<option value="5" rc-id="ab">Gaseinsätze (Ortsfeuerwehr)</option>
<option value="6" rc-id="ab">Verkehrsunfälle (ohne Strassenrettung)</option>
<option value="7" rc-id="ab">Strassenrettung (Ortsfeuerwehr)</option>
<option value="8" rc-id="ab">Strassenrettung (Stützpunkt)</option>
<option value="9" rc-id="ab">Fahrzeugbrände (ohne Brandstiftung)</option>
<option value="10" rc-id="th">BMA-Alarm</option>
<option value="18" rc-id="th">Hilfeleistungs-Einsätze, verrechenbar durch OFW</option>
<option value="19" rc-id="th">Unterstützung Rettungsdienst (ADL/Hilfskräfte)</option>
<option value="11" rc-id="uh">Dienstleistungen, Verrechenbar durch OFW</option>
<option value="12" rc-id="uh">Stützpunkteinsatz (Grossereignisse)</option>
<option value="14" rc-id="uh">Nachbarschaftshilfe Ortsfeuerwehr</option>
<option value="20" rc-id="uh">Kernaufgaben (Brand, Explosion, Elementar, Erdbeben)</option>
<option value="21" rc-id="uh">ADL-/HRF-Einsatz BRAND (ADL = Stüpt-Fahrzeug)</option>
<option value="13" rc-id="ak">ADL-/HRF-Einsatz BRAND (ADL = OFW-Fahrzeug)</option>
<option value="15" rc-id="tt">Grosstierrettung Stützpunkt (PIF mit Kran)</option>
docker run --rm -ti -v $(pwd):/usr/src/pylokid:ro local/pylokid
find ./ -name "Einsatzausdruck_FW*.pdf" -exec pdftotext -f 1 -l 1 -x 70 -y 47 -W 50 -H 10 {} - \;