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:

RessourceStatusWofü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

  1. Ressource kopieren Entpacke den Ordner vitatab in dein resources-Verzeichnis (z. B. resources/[novrid]/vitatab). Der Ordnername muss vitatab lauten, da die NUI-Callbacks darauf verweisen.
  2. Datenbank importieren Importiere vitatab.sql in deine Server-Datenbank. Damit werden alle benötigten Tabellen angelegt (Einsätze, Patienten, Zeiten, Diagnosen, Maßnahmen, Medikamente, Fahrzeuge, Benachrichtigungen …).
  3. Items eintragen Siehe Abschnitt Items einrichten. Nur nötig, wenn das Tablet per Item geöffnet werden soll.
  4. 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
  5. 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:

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:

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:

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:

BlockZweck
Config.FrameworkESX / QBCore / automatische Erkennung
Config.StationsEinmaliger Seed für die erste Wache (danach Admin-UI)
Config.CommandCommand zum Öffnen des Tablets
Config.AdminZugriff auf das Admin-UI
Config.KeybindOptionale Taste zum Öffnen
Config.Animation / Config.AnimationVehicleHalte-Animationen zu Fuß und im Fahrzeug
Config.PropTablet-Objekt in der Hand
Config.BillingEinsatzkosten & Abrechnung über die Krankenkasse
Config.LocaleAlle Benachrichtigungstexte
Config.DiscordWebhook-Versand der Einsatzprotokolle
Config.EGKeGK-Kartenslot / Krankenkassen-Anbindung
Config.EMDEmergencyDispatch-Integration

Framework & Öffnen des Tablets

Framework

config.lua
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.lua
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.

config.lua
-- 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.lua
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

FeldPflichtBedeutung
nameJa Anzeigename im Tablet (Startseite und Protokoll-Kopf).
locationNein Standort-Beschreibung, rein informativ.
itemNein Item, das zum Öffnen benötigt wird. Leer = nur Command/Keybind.
jobsJa ESX-/QBCore-Jobnamen dieser Wache, z. B. ambulance. Mehrere möglich.
ranksNein Job → Grade → Anzeigename. Fehlt ein Grade, wird das Framework-Label genutzt.
webhookNein 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.lua
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:

server.cfg
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.lua
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:

emergencydispatch/server/server_custom.lua — vorher
function Vehicle_Alarm(VehID, VehValue, VehType, VehDepartment, VehDispatch)

end

Ergänze darin den folgenden TriggerEvent:

emergencydispatch/server/server_custom.lua — nachher
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:

Server-Konsole
[vitatab] EMD Vehicle Alarm: 1-RTW1 → Einsatz #4711
[vitatab] EMD-Einsatzangebot #4711 an Spieler 3 (1-RTW1)

Was die Parameter bedeuten

ParameterInhalt
VehIDInterne Fahrzeug-ID im EMD
VehValueFunkrufname des Fahrzeugs (z. B. 1-RTW1) — dient dem Abgleich mit der Besetzung
VehTypeFahrzeugtyp (RTW, NEF, KTW …)
VehDepartmentWache/Department des Fahrzeugs
VehDispatchEinsatznummer — 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.lua
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.lua
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.lua
Config.EGK = {
    enabled = true,
    displayEvent = 'novrid_kk:displayCard',   -- Event der Krankenkassen-Ressource
    table = 'novrid_krankenkasse',           -- Tabelle mit den Versichertendaten
}

Ablauf im Spiel

  1. Der Patient zeigt seine Karte vor (Item benutzen oder Target-Option „Krankenkassenkarte zeigen“)
  2. Der Kartenslot am Tablet leuchtet grün
  3. 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:

Novrid_Krankenkasse/config.lua
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.lua
Config.Billing = {
    enabled = true,
    baseCost = 250,        -- Grundpauschale pro Einsatz ($)
    perIntervention = 75,  -- pro dokumentierter Maßnahme ($)
    perProgressNote = 25,  -- pro Verlaufseintrag ($)
}

So läuft die Abrechnung

  1. Im Tab 9 – Ergebnis zeigt die Übersicht Voraussichtliche Einsatzkosten die Aufschlüsselung und die Gesamtsumme
  2. Ein Hinweis zeigt, ob eine Versicherungsnummer vorliegt (eGK eingelesen)
  3. Beim Klick auf Abschluss wird die Summe serverseitig neu berechnet und über die Versicherungsnummer verbucht
  4. 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

  1. Channel-Einstellungen öffnen Rechtsklick auf den gewünschten Discord-Channel → BearbeitenIntegrationenWebhooks.
  2. Neuen Webhook anlegen Auf Neuer Webhook klicken, Namen vergeben und Webhook-URL kopieren.
  3. URL eintragen Entweder global in der config.lua oder pro Wache im Admin-UI.
config.lua
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

ElementPositionFunktion
Power-ButtonRechtsBildschirm ein-/ausschalten
eGK-KartenslotLinksLeuchtet grün, wenn eine Karte bereitliegt — Klick liest sie ein
GlockeObere LeisteBenachrichtigungen und EMD-Einsatzangebote
ESCTastaturTablet 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

1

Rett. Daten

Patientendaten, Einsatzdaten, EMD-Kopplung, alle Zeiten, PZC und Transportweg.

2

Anamnese

Strukturierte Erhebung nach dem SAMPLE-Schema.

3

Erstbefund

AVPU, GCS mit automatischer Summe, Vitalwerte, Schmerzskala und Pupillen.

4

Diagnose

Körperschema mit klickbaren Zonen (Kopf, Torso, Arme, Beine, Rücken) und ICD-10-Suche.

5

Verlauf

Vitalwerte-Verlauf als Tabelle plus freie Verlaufsnotizen mit Zeitstempel.

6

Maßnahmen

Durchgeführte Interventionen mit Schnellauswahl und Ergebnis.

7

Medikamente

Medikamentengaben mit Dosierung, Einheit und Applikationsweg.

8

Übergabe

Übergabe nach SBAR-Schema inklusive Unterschriften-Pad.

9

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

FunktionBeschreibung
InfoZusammenfassung des laufenden Einsatzes auf einen Blick
NotarztNachforderung dokumentieren: Status, Anforderungs- und Eintreffzeit
ImportARE-Import: Vitalwerte, Medikamente und Maßnahmen aus dem Monitor übernehmen
SchnelldokuVerkürzte Dokumentation für einfache Einsätze
ProtokollVollstä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:

Server-seitig (Lua)
-- 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

Server-seitig (Lua)
-- 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:

Client-seitig (Lua)
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 = true und stimmt resourceName?
  • 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.enabled muss true sein
  • Novrid_Krankenkasse muss 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.