VitaTab Dokumentation
Alles, was du zur Einrichtung von VitaTab auf deinem FiveM Server brauchst — von der Installation über die Wachen-Verwaltung im Admin-UI bis hin zur Anbindung von EmergencyDispatch, dem eGK-System und Discord-Einsatzprotokollen.
Übersicht
VitaTab ist ein digitales Rettungsdienst-Tablet (NIDA-Pad Nachbildung) als
eigenständige FiveM-Ressource. Die komplette Oberfläche läuft direkt in der NUI —
ohne Webserver und ohne Login. Die Anmeldung erfolgt automatisch
über den ESX-/QBCore-Charakter, die Daten liegen über oxmysql in
deiner Server-Datenbank.
Was VitaTab mitbringt
- 9 Dokumentations-Tabs von Rettungsdaten bis Ergebnis (NACA), inkl. Körperschema und ICD-10-Suche
- Unbegrenzt viele Wachen, zugeordnet über Jobs, mit eigenem Rang-Mapping und Discord-Webhook
- EMD-Integration: Fahrzeugbesetzung, Einsatz-Alarmierungen annehmen, automatische Statuszeiten
- eGK-Kartenslot: vorgezeigte Gesundheitskarten direkt ins Patientenformular einlesen
- Discord-Einsatzprotokolle per Webhook
- In-Game Admin-UI für Wachen und Einsätze
- Schnelldokumentation, ARE-Import, Notarzt-Panel und Benachrichtigungen
Alle Datenbank-Tabellen sind mit vitatab_ geprefixt —
es gibt keine Kollisionen mit ESX-, QBCore- oder anderen Ressourcen-Tabellen.
Voraussetzungen
Diese Ressourcen müssen bzw. können auf deinem Server laufen:
| Ressource | Status | Wofür |
|---|---|---|
oxmysql |
Erforderlich | Datenbank-Anbindung. Muss vor VitaTab starten. |
es_extended oder qb-core |
Erforderlich | Framework für Charakter, Job und Rang. Wird automatisch erkannt. |
ox_inventory / qb-inventory |
Optional | Öffnen per Item. Ohne Inventar funktioniert der Command. |
emergencydispatch |
Optional | Leitstellen-Anbindung (siehe EMD-Integration). |
Novrid_Krankenkasse |
Optional | eGK-Kartenslot und Abrechnung der Behandlungskosten. |
1 Installation
-
Ressource kopieren
Entpacke den Ordner
vitatabin deinresources-Verzeichnis (z. B.resources/[novrid]/vitatab). Der Ordnername mussvitatablauten, da die NUI-Callbacks darauf verweisen. -
Datenbank importieren
Importiere
vitatab.sqlin deine Server-Datenbank. Damit werden alle benötigten Tabellen angelegt (Einsätze, Patienten, Zeiten, Diagnosen, Maßnahmen, Medikamente, Fahrzeuge, Benachrichtigungen …). - Items eintragen Siehe Abschnitt Items einrichten. Nur nötig, wenn das Tablet per Item geöffnet werden soll.
-
server.cfg ergänzen
VitaTab muss nach oxmysql und dem Framework gestartet werden.
server.cfg
ensure oxmysql ensure es_extended # oder: ensure qb-core ensure ox_inventory # optional ensure emergencydispatch # optional ensure Novrid_Krankenkasse # optional ensure vitatab -
Erste Wache anlegen
Starte den Server und öffne im Spiel als Admin
/vitatab-admin. Lege dort deine Wache an — siehe Admin-UI.
Ohne passende Wache lässt sich das Tablet nicht öffnen. Ein Spieler wird der ersten Wache zugeordnet, deren Job-Liste seinen aktuellen Job enthält. Passt kein Job, erscheint die Meldung „Dein Job ist keiner VitaTab-Wache zugeordnet!“.
2 Items einrichten
Du kannst pro Wache ein eigenes Item verwenden (z. B. vitatab für
den Rettungsdienst und vitatab_fw für die Feuerwehr). Der Item-Name muss
exakt mit dem Feld „Item zum Öffnen“ der Wache übereinstimmen.
ox_inventory
Eintrag in ox_inventory/data/items.lua:
['vitatab'] = {
label = 'VitaTab',
weight = 100,
stack = false,
close = true,
description = 'Digitales Rettungsdienst-Tablet'
},
qb-inventory
Eintrag in qb-core/shared/items.lua:
vitatab = {
name = 'vitatab', label = 'VitaTab', weight = 100, type = 'item',
image = 'vitatab.png', unique = true, useable = true, shouldClose = true,
description = 'Digitales Rettungsdienst-Tablet'
},
ESX Standard-Inventar
Über die mitgelieferte item.sql oder direkt per SQL:
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`)
VALUES ('vitatab', 'VitaTab', 1, 0, 1);
Lässt du das Item-Feld einer Wache leer, kann das Tablet ausschließlich
per Command /vitatab oder Keybind geöffnet werden — praktisch,
wenn du ohne Item arbeiten möchtest.
3 config.lua im Überblick
Die gesamte Grundkonfiguration liegt in vitatab/config.lua.
Alle Blöcke im Schnellüberblick:
| Block | Zweck |
|---|---|
Config.Framework | ESX / QBCore / automatische Erkennung |
Config.Stations | Einmaliger Seed für die erste Wache (danach Admin-UI) |
Config.Command | Command zum Öffnen des Tablets |
Config.Admin | Zugriff auf das Admin-UI |
Config.Keybind | Optionale Taste zum Öffnen |
Config.Animation / Config.AnimationVehicle | Halte-Animationen zu Fuß und im Fahrzeug |
Config.Prop | Tablet-Objekt in der Hand |
Config.Billing | Einsatzkosten & Abrechnung über die Krankenkasse |
Config.Locale | Alle Benachrichtigungstexte |
Config.Discord | Webhook-Versand der Einsatzprotokolle |
Config.EGK | eGK-Kartenslot / Krankenkassen-Anbindung |
Config.EMD | EmergencyDispatch-Integration |
Framework & Öffnen des Tablets
Framework
Config.Framework = 'auto' -- auto, esx, qbcore
Bei 'auto' prüft VitaTab beim Start, ob es_extended oder
qb-core läuft. Nur wenn beides parallel vorhanden ist, solltest du
das Framework fest eintragen.
Command & Keybind
Config.Command = {
enabled = true, -- Command aktivieren
name = 'vitatab', -- ergibt /vitatab
}
Config.Keybind = {
enabled = false, -- Keybind aktivieren
key = 'F7', -- Standard-Taste (im Spiel änderbar)
}
Der Keybind wird über RegisterKeyMapping registriert — Spieler können
die Taste in den FiveM-Einstellungen unter Tastenbelegung → FiveM selbst ändern.
Das Tablet lässt sich auf drei Wegen öffnen: Item benutzen,
Command oder Keybind.
Das Tablet funktioniert auch im Fahrzeug. Beim Ein- oder Aussteigen wechselt die Animation automatisch. Da das Tablet den Mauszeiger benötigt, kann während der Nutzung nicht gefahren werden — ideal für den Beifahrer.
Animation & Prop
Beim Öffnen spielt der Charakter eine Halte-Animation ab und bekommt das Tablet-Objekt in die Hand. Im Fahrzeug wird automatisch auf eine sitzende Animation gewechselt.
-- Zu Fuß
Config.Animation = {
dict = 'amb@world_human_seat_wall_tablet@female@idle_a',
name = 'idle_a',
flag = 49,
}
-- Im Fahrzeug
Config.AnimationVehicle = {
dict = 'cellphone@in_car@ds',
name = 'cellphone_text_read_base',
flag = 49,
}
-- Tablet-Objekt in der Hand
Config.Prop = {
model = 'vitatab', -- aus dem stream-Ordner
bone = 60309, -- rechte Hand
offset = vector3(0.0120, -0.0140, -0.0500),
rotation = vector3(-19.00, 85.00, 179.00)
}
Das Modell vitatab liegt im stream-Ordner der Ressource und
wird über die fxmanifest.lua automatisch geladen. Offset und Rotation
musst du nur anpassen, wenn du ein eigenes Prop verwendest.
4 Wachen, Jobs & Ränge
Wachen sind das Herzstück der Rechteverwaltung: Sie bestimmen, wer
das Tablet öffnen darf, welches Item dafür nötig ist und
wohin die Einsatzprotokolle gesendet werden. Verwaltet werden sie
im Admin-UI und gespeichert in vitatab/data/stations.json.
Erst-Einrichtung per config.lua (Seed)
Existiert beim allerersten Start noch keine data/stations.json, werden die
Wachen aus Config.Stations einmalig übernommen. Danach
wird der Block ignoriert und das Admin-UI ist die alleinige Quelle.
Config.Stations = {
{
name = 'Rettungswache Los Santos',
location = 'Los Santos, Pillbox Hill',
item = 'vitatab',
jobs = { 'ambulance' },
ranks = {
['ambulance'] = {
[0] = 'Praktikant',
[1] = 'Rettungssanitäter',
[2] = 'Notfallsanitäter',
[3] = 'Wachleiter',
[4] = 'Ärztlicher Leiter',
},
},
-- webhook = 'https://discord.com/api/webhooks/...',
},
}
Die Felder einer Wache
| Feld | Pflicht | Bedeutung |
|---|---|---|
name | Ja | Anzeigename im Tablet (Startseite und Protokoll-Kopf). |
location | Nein | Standort-Beschreibung, rein informativ. |
item | Nein | Item, das zum Öffnen benötigt wird. Leer = nur Command/Keybind. |
jobs | Ja | ESX-/QBCore-Jobnamen dieser Wache, z. B. ambulance. Mehrere möglich. |
ranks | Nein | Job → Grade → Anzeigename. Fehlt ein Grade, wird das Framework-Label genutzt. |
webhook | Nein | Discord-Webhook nur für diese Wache. Überschreibt den Standard-Webhook. |
Mehrere Wachen betreiben: Lege für jede Organisation eine
eigene Wache mit eigenem Job an (z. B. ambulance und
fire). Jede Wache sieht ausschließlich ihre eigenen Einsätze und
Fahrzeuge — die Daten sind sauber getrennt.
5 Admin-UI
Über den Command /vitatab-admin öffnest du im Spiel die Verwaltung.
Dort legst du Wachen an und durchsuchst alle dokumentierten Einsätze.
Zugriff & Berechtigungen
Config.Admin = {
enabled = true,
command = 'vitatab-admin', -- ergibt /vitatab-admin
groups = { 'admin', 'superadmin' }, -- erlaubte ESX-Gruppen
qbPermissions = { 'admin', 'god' }, -- erlaubte QBCore-Permissions
}
Zugriff erhält, wer eine dieser drei Bedingungen erfüllt:
- ESX: Spielergruppe steht in
groups - QBCore: Permission steht in
qbPermissions - ACE: Der Spieler besitzt die Permission
vitatab.admin
ACE-Rechte lassen sich unabhängig vom Framework in der server.cfg vergeben:
add_ace group.admin vitatab.admin allow
# oder für einen einzelnen Spieler (Identifier anpassen):
add_principal identifier.license:xxxxxxxxxxxxxxxx group.admin
Wachen verwalten
Links siehst du alle Wachen mit Kurzstatistik. Über „+ Neu“ legst du eine Wache an, ein Klick auf eine Karte öffnet sie zum Bearbeiten. Das Formular enthält genau die Felder aus dem Abschnitt Wachen:
- Name der Wache — Pflichtfeld, erscheint im Tablet
- Standort — freie Beschreibung
- Item zum Öffnen — leer lassen für „nur per Command“
- Jobs — kommagetrennt, z. B.
ambulance, fire - Rang-Mapping — je Zeile Job + Grade + Anzeigename, beliebig erweiterbar
- Discord-Webhook — optional, überschreibt den Standard-Webhook
Beim Löschen einer Wache verlieren alle zugeordneten Spieler sofort den Zugriff auf das Tablet. Bereits dokumentierte Einsätze bleiben in der Datenbank erhalten.
Einsätze verwalten
Rechts findest du alle Einsätze der ausgewählten Wache — durchsuchbar nach Einsatznummer oder Patientenname. Du kannst jeden Einsatz im Detail ansehen (Patient, Zeiten, Diagnosen, Maßnahmen, Medikamente, Ergebnis) und bei Bedarf löschen. Das Löschen entfernt auch alle zugehörigen Unterdatensätze.
Speicherort
Wachen liegen als JSON unter vitatab/data/stations.json. Die Datei wird
beim Speichern im Admin-UI automatisch geschrieben — ein Server-Neustart ist nicht
nötig. Für Backups genügt es, diese Datei zu sichern.
6 EmergencyDispatch (EMD)
Die Integration mit EmergencyDispatch von LoveRP verbindet das Tablet mit deiner Leitstelle. Ist sie eingerichtet, bekommst du:
- Fahrzeug-Erkennung: Das im EMD besetzte Fahrzeug erscheint automatisch im Tablet
- Einsatz-Angebote: Wird dein Fahrzeug alarmiert, erscheint der Einsatz zum Annehmen/Ablehnen in der Glocke
- Automatische Kopplung: Beim Annehmen wird der Einsatz angelegt und mit der EMD-Einsatznummer verknüpft
- Automatische Zeiten: Jeder Statuswechsel füllt das passende Zeitfeld im Tablet
Config.EMD = {
enabled = true,
resourceName = 'emergencydispatch', -- Name der EMD-Ressource
syncInterval = 3000, -- Polling-Intervall in ms
alarmStatusCode = '9', -- Status-Code für "Alarmiert"
-- VehicleMapping und StatusMapping siehe unten
}
⚡ Pflicht-Eintrag: server_custom.lua
Ohne diesen Eintrag erhältst du keine Einsatz-Benachrichtigungen im Tablet.
EmergencyDispatch ist escrow-geschützt — die Alarmierung kann nur über den
offiziellen Anpassungs-Hook Vehicle_Alarm weitergereicht werden.
Öffne die Datei emergencydispatch/server/server_custom.lua. Diese Datei ist
bewusst nicht verschlüsselt und für eigene Anpassungen vorgesehen (sie steht in der
escrow_ignore-Liste des Scripts). Suche darin nach der Funktion
Vehicle_Alarm — sie ist im Auslieferungszustand leer:
function Vehicle_Alarm(VehID, VehValue, VehType, VehDepartment, VehDispatch)
end
Ergänze darin den folgenden TriggerEvent:
function Vehicle_Alarm(VehID, VehValue, VehType, VehDepartment, VehDispatch)
-- VitaTab: alarmierten Einsatz der Fahrzeugbesatzung zum Annehmen anbieten
TriggerEvent("vitatab:emd:vehicleAlarm", VehID, VehValue, VehType, VehDepartment, VehDispatch)
end
Anschließend restart emergencydispatch und restart vitatab
ausführen. Sobald ein Fahrzeug alarmiert wird, erscheinen in der Server-Konsole
zwei Zeilen:
[vitatab] EMD Vehicle Alarm: 1-RTW1 → Einsatz #4711
[vitatab] EMD-Einsatzangebot #4711 an Spieler 3 (1-RTW1)
Was die Parameter bedeuten
| Parameter | Inhalt |
|---|---|
VehID | Interne Fahrzeug-ID im EMD |
VehValue | Funkrufname des Fahrzeugs (z. B. 1-RTW1) — dient dem Abgleich mit der Besetzung |
VehType | Fahrzeugtyp (RTW, NEF, KTW …) |
VehDepartment | Wache/Department des Fahrzeugs |
VehDispatch | Einsatznummer — damit lädt VitaTab Stichwort und Ort |
Einsatz annehmen oder ablehnen
Wird dein Fahrzeug alarmiert, erscheint an der Glocke im Tablet ein Zähler und eine Karte mit Einsatznummer, Stichwort, Ort und Fahrzeug. Ist das Tablet geschlossen, bekommst du zusätzlich eine Bildschirm-Benachrichtigung.
- Annehmen: Der Einsatz wird sofort angelegt, geöffnet und automatisch mit der EMD-Einsatznummer gekoppelt. Vorhandene Statuszeiten werden übernommen.
- Ablehnen: Das Angebot verschwindet nur bei dir — Kollegen auf dem Fahrzeug können weiterhin annehmen.
Doppelte Annahme ist ausgeschlossen: Sind Fahrer und Beifahrer auf dem Fahrzeug eingesetzt, erhalten beide das Angebot. Nimmt einer an, verschwindet es beim anderen automatisch mit einem entsprechenden Hinweis.
Manuelle Kopplung
Unabhängig von der Alarmierung kannst du jeden laufenden Einsatz nachträglich verbinden: Im Tab 1 – Rett. Daten die EMD-Einsatznummer in das Feld „EMD Kopplung“ eintragen und auf Koppeln klicken. Der Punkt neben dem Feld wird grün, sobald die Kopplung steht.
EMD Status-Mapping
Jeder Funkstatus, den die Besatzung im EMD setzt, wird automatisch in das passende Zeitfeld des Tablets geschrieben. Die Zuordnung passt du bei abweichenden Status-Codes hier an:
Config.EMD.StatusMapping = {
['9'] = 'alarm_time', -- Alarmiert → Alarm
['3'] = 'dispatch_time', -- Einsatz übernommen → aus (3)
['4'] = 'arrival_scene', -- Am Einsatzort → E.-an (4)
['7'] = 'departure_scene', -- Patient aufgenommen → E.-ab (7)
['8'] = 'arrival_hospital', -- Am Transportziel → KH an (8)
['1'] = 'free_time', -- Frei über Funk → frei (1)
['2'] = 'station_time', -- Frei auf Wache → Wache (2)
}
Links steht der Status-Code aus dem EMD (als Text in Anführungszeichen), rechts das
Zeitfeld im Tablet. Nicht gelistete Status werden ignoriert.
Der Wert alarmStatusCode legt zusätzlich fest, welcher Status eine neue
Alarmierung auslöst — er dient als Fallback, falls der Hook aus
server_custom.lua einmal nicht greift.
Sekundengenaue Zeiten: EmergencyDispatch speichert Zeiten nur auf die Minute genau. Kommt ein Status live herein, stempelt VitaTab deshalb die exakte Serverzeit inklusive Sekunden — zwei schnell aufeinanderfolgende Statuswechsel sind so unterscheidbar (z. B. 14:30:00 und 14:30:25).
EMD Fahrzeug-Mapping
VitaTab erkennt automatisch, welches Fahrzeug du im EMD besetzt, und zeigt es auf der Startseite unter Fahrzeugbesetzung an. Standardmäßig wird der EMD-Funkrufname 1:1 als Kennung im Tablet übernommen — für die meisten Server ist keine Konfiguration nötig.
Nur wenn sich die Bezeichnungen unterscheiden, trägst du eine Übersetzung ein:
Config.EMD.VehicleMapping = {
-- ['EMD Funkrufname'] = 'VitaTab Kennung',
['1-RTW1'] = 'RTW 1',
['1-NEF1'] = 'NEF 1',
}
Fahrzeuge, die noch nicht in der Datenbank stehen, werden beim ersten Erkennen
automatisch in vitatab_vehicles angelegt und der Wache zugeordnet.
7 eGK / Krankenkasse
In Kombination mit Novrid_Krankenkasse bekommt das Tablet einen
Kartenslot an der linken Gehäuseseite. Damit liest du die
elektronische Gesundheitskarte (eGK) eines Patienten ein — Name, Geburtsdatum,
Geschlecht, Adresse, Größe, Versicherungsnummer und Notfallkontakt werden
automatisch ins Patientenformular übernommen.
Config.EGK = {
enabled = true,
displayEvent = 'novrid_kk:displayCard', -- Event der Krankenkassen-Ressource
table = 'novrid_krankenkasse', -- Tabelle mit den Versichertendaten
}
Ablauf im Spiel
- Der Patient zeigt seine Karte vor (Item benutzen oder Target-Option „Krankenkassenkarte zeigen“)
- Der Kartenslot am Tablet leuchtet grün
- Ein Klick auf den Slot liest die Daten ein und füllt das Patientenformular
Ist das Tablet beim Vorzeigen geschlossen, erscheint ein Hinweis — der Slot ist dann beim nächsten Öffnen aktiv. Auch die eigene Karte lässt sich so einlesen.
eGK bei bewusstlosen Patienten abnehmen
Für Fälle, in denen der Patient die Karte nicht selbst vorzeigen kann, bietet
Novrid_Krankenkasse die Target-Option „eGK abnehmen“.
Sie ist nur für die dort konfigurierten Jobs sichtbar:
Config.TakeCard = {
enabled = true,
jobs = { 'ambulance' }, -- Jobs, die die eGK abnehmen dürfen
distance = 2.5 -- Interaktions-Distanz
}
Die Karte wandert dabei ins Inventar des Sanitäters und wird sofort angezeigt — dadurch aktiviert sich der Kartenslot automatisch und die Daten können eingelesen werden. Das funktioniert auch bei verstorbenen Spielern.
Test-Karte
Zum Testen der Integration gibt es den Command /testegk. Er zeigt eine
Test-eGK auf den Namen Max Mustermann (Versicherungsnummer
M000000001) an und hinterlegt die Daten so, dass sie sich direkt ins
Tablet einlesen lassen.
Einsatzkosten & Abrechnung
VitaTab kann die Kosten eines Einsatzes berechnen und beim Abschluss über die Krankenkasse abrechnen. Die Höhe richtet sich nach dem tatsächlichen Aufwand: je mehr Maßnahmen und Verlaufseinträge dokumentiert wurden, desto höher die Rechnung.
Config.Billing = {
enabled = true,
baseCost = 250, -- Grundpauschale pro Einsatz ($)
perIntervention = 75, -- pro dokumentierter Maßnahme ($)
perProgressNote = 25, -- pro Verlaufseintrag ($)
}
So läuft die Abrechnung
- Im Tab 9 – Ergebnis zeigt die Übersicht Voraussichtliche Einsatzkosten die Aufschlüsselung und die Gesamtsumme
- Ein Hinweis zeigt, ob eine Versicherungsnummer vorliegt (eGK eingelesen)
- Beim Klick auf Abschluss wird die Summe serverseitig neu berechnet und über die Versicherungsnummer verbucht
- Der Patient sieht den Posten beim Krankenkassen-NPC unter Behandlungskosten als „Rettungsdiensteinsatz #Nummer“
Ohne eingelesene eGK fehlt die Versicherungsnummer — der Einsatz lässt sich
zwar abschließen, es erfolgt aber keine Kostenübernahme.
Setze enabled = false, um die Abrechnung komplett zu deaktivieren.
8 Discord-Einsatzprotokolle
Abgeschlossene Einsätze lassen sich als übersichtliches Embed in einen Discord-Channel senden — mit Patientendaten, Zeiten, Diagnosen, Maßnahmen, Medikamenten und Ergebnis.
Webhook erstellen
- Channel-Einstellungen öffnen Rechtsklick auf den gewünschten Discord-Channel → Bearbeiten → Integrationen → Webhooks.
- Neuen Webhook anlegen Auf Neuer Webhook klicken, Namen vergeben und Webhook-URL kopieren.
-
URL eintragen
Entweder global in der
config.luaoder pro Wache im Admin-UI.
Config.Discord = {
enabled = true,
webhook = '', -- Standard-Webhook für alle Wachen
botName = 'VitaTab', -- Anzeigename im Discord
}
Priorität: Ist bei einer Wache ein eigener Webhook hinterlegt,
wird dieser verwendet — sonst der Standard-Webhook aus der
config.lua. So kann jede Wache in ihren eigenen Channel senden.
Protokoll versenden
Im laufenden Einsatz oben auf Protokoll klicken. Dort siehst du eine Vorschau des kompletten Einsatzberichts und kannst ihn über Einsenden an Discord übermitteln.
Behandle Webhook-URLs wie Passwörter — wer sie besitzt, kann in deinen
Channel schreiben. Gib die config.lua niemals öffentlich weiter.
9 Das Tablet im Einsatz
Ein- und Ausschalten
Nach dem Öffnen ist der Bildschirm zunächst schwarz. Mit einem Klick auf den Power-Button an der rechten Gehäuseseite startet das Tablet. Einmal eingeschaltet bleibt es an — auch wenn du es zwischendurch weglegst. Erst ein erneuter Klick auf den Power-Button schaltet es wieder aus.
Bedienelemente am Gehäuse
| Element | Position | Funktion |
|---|---|---|
| Power-Button | Rechts | Bildschirm ein-/ausschalten |
| eGK-Kartenslot | Links | Leuchtet grün, wenn eine Karte bereitliegt — Klick liest sie ein |
| Glocke | Obere Leiste | Benachrichtigungen und EMD-Einsatzangebote |
| ESC | Tastatur | Tablet schließen (Zustand bleibt erhalten) |
Startseite
- Einsatz erstellen — neuen Einsatz anlegen und dokumentieren
- Einsatzliste — aktive und abgeschlossene Einsätze der Wache
- Schnelldokumentation — vereinfachtes Formular für kurze Einsätze
- Fahrzeugbesetzung — aktuelles Fahrzeug (aus EMD oder manuell gewählt)
Tastenkürzel
Mit Alt + 1 bis 9 springst du direkt zwischen
den Dokumentations-Tabs. Alle Eingaben werden automatisch gespeichert
(Auto-Save) — der Status ist unten rechts sichtbar.
Die 9 Dokumentations-Tabs
Rett. Daten
Patientendaten, Einsatzdaten, EMD-Kopplung, alle Zeiten, PZC und Transportweg.
Anamnese
Strukturierte Erhebung nach dem SAMPLE-Schema.
Erstbefund
AVPU, GCS mit automatischer Summe, Vitalwerte, Schmerzskala und Pupillen.
Diagnose
Körperschema mit klickbaren Zonen (Kopf, Torso, Arme, Beine, Rücken) und ICD-10-Suche.
Verlauf
Vitalwerte-Verlauf als Tabelle plus freie Verlaufsnotizen mit Zeitstempel.
Maßnahmen
Durchgeführte Interventionen mit Schnellauswahl und Ergebnis.
Medikamente
Medikamentengaben mit Dosierung, Einheit und Applikationsweg.
Übergabe
Übergabe nach SBAR-Schema inklusive Unterschriften-Pad.
Ergebnis
Einsatzergebnis, Zieleinrichtung, NACA-Score und die voraussichtlichen Kosten.
Über Abschluss am Ende der Tab-Leiste wird der Einsatz beendet: Die Endzeit wird gesetzt, der Einsatz auf abgeschlossen gestellt und — sofern aktiviert — die Abrechnung ausgelöst.
Weitere Werkzeuge in der oberen Leiste
| Funktion | Beschreibung |
|---|---|
| Info | Zusammenfassung des laufenden Einsatzes auf einen Blick |
| Notarzt | Nachforderung dokumentieren: Status, Anforderungs- und Eintreffzeit |
| Import | ARE-Import: Vitalwerte, Medikamente und Maßnahmen aus dem Monitor übernehmen |
| Schnelldoku | Verkürzte Dokumentation für einfache Einsätze |
| Protokoll | Vollständigen Einsatzbericht ansehen und per Discord einsenden |
Exports für Entwickler
Andere Ressourcen können mit VitaTab und der Krankenkasse interagieren. Die wichtigsten Schnittstellen:
Einsatzkosten von außen buchen
Krankenhaus- oder Apotheken-Scripts können Kosten über die Krankenkasse abrechnen. Die Einträge erscheinen beim Spieler unter Behandlungskosten:
-- Kategorien: 'rezept' | 'krankenhaus' | 'rettungsdienst' | 'sonstiges'
exports['Novrid_Krankenkasse']:AddTreatmentCost(
source, 'rezept', 'Rezept: Ibuprofen 600mg', 150
)
-- Variante für Offline-Spieler über den Identifier
exports['Novrid_Krankenkasse']:AddTreatmentCostByIdentifier(
identifier, 'krankenhaus', 'Stationäre Behandlung', 2500
)
Versichertendaten abfragen
-- Besitzt der Spieler eine eGK?
local hasCard = exports['Novrid_Krankenkasse']:HasCard(source)
-- Versicherungsnummer eines Spielers
local nr = exports['Novrid_Krankenkasse']:GetInsuranceNumber(source)
-- Vollständige Daten über die Versicherungsnummer
local data = exports['Novrid_Krankenkasse']:GetDataByInsuranceNumber('M000000001')
eGK im Tablet anzeigen lassen
Jede Ressource kann den Kartenslot aktivieren, indem sie das Anzeige-Event auslöst. VitaTab hört darauf mit und übernimmt die Versicherungsnummer:
TriggerEvent('novrid_kk:viewOwnCard', cardData)
Problemlösung & FAQ
„Dein Job ist keiner VitaTab-Wache zugeordnet!“
Der aktuelle Job des Spielers steht in keiner Wache. Öffne
/vitatab-admin und prüfe das Feld Jobs — der Jobname muss
exakt dem Framework-Namen entsprechen (z. B. ambulance, nicht
„Rettungsdienst“).
„Du brauchst ein VitaTab in deinem Inventar!“
Die Wache verlangt ein Item, das der Spieler nicht besitzt. Entweder das Item aushändigen, den Item-Namen im Admin-UI korrigieren oder das Feld leeren, um ohne Item zu arbeiten.
Keine Einsatz-Benachrichtigung bei Alarmierung
In den allermeisten Fällen fehlt der Eintrag in server_custom.lua. Prüfe zusätzlich:
- Wird die Fahrzeugbesetzung auf der Startseite angezeigt? Wenn nicht, bist du im EMD nicht auf dem Fahrzeug eingesetzt.
- Steht
Config.EMD.enabled = trueund stimmtresourceName? - Erscheint in der Konsole
[vitatab] EMD Vehicle Alarm? Dann greift der Hook und nur die Fahrzeugzuordnung passt nicht — siehe Fahrzeug-Mapping.
Der eGK-Kartenslot leuchtet nicht
Config.EGK.enabledmusstrueseinNovrid_Krankenkassemuss laufen- Der Patient muss eine Karte besitzen und sie vorzeigen
- Bei geschlossenem Tablet erscheint zuerst nur eine Meldung — der Slot ist beim nächsten Öffnen aktiv
Discord-Protokoll kommt nicht an
- Ist
Config.Discord.enabled = true? - Ist ein Webhook hinterlegt — global oder bei der Wache?
- Existiert der Channel noch und ist die URL vollständig kopiert?
Das Tablet öffnet sich nicht (keine Meldung)
Prüfe die Server-Konsole auf Fehler beim Start. Häufigste Ursache: VitaTab startet
vor oxmysql oder dem Framework. Die Reihenfolge in der
server.cfg ist entscheidend.
Wo liegen meine Daten?
- Einsätze & Patienten: Datenbank, Tabellen mit Präfix
vitatab_ - Wachen:
vitatab/data/stations.json - Versichertendaten: Tabelle
novrid_krankenkasse - Behandlungskosten: Tabelle
novrid_krankenkasse_costs
Noch Fragen oder ein Problem, das hier nicht behandelt wird? Schreib uns an kontakt@novrid.de.