G.A.SG.A.S Docs
G.A.S Docs / Other

EMS Paramedic MDT

A 13-tab paramedic terminal — electronic Patient Care Reports, a full patient EHR, START triage, treatment protocols, a drug formulary with controlled-substance register, admissions with bed and equipment processing, and billing.

Version v1.0.0Framework QboxUpdated July 2026 $19.99 Get it on the store →

A paramedic Mobile Data Terminal for Qbox EMS — the medical counterpart to the police MDT (rr-mdt). Same polished, multi-tab terminal feel, recolored for EMS (medical teal / EMS red), with a medical brain: electronic Patient Care Reports, a full EHR, START triage / MCI, treatment protocols, a drug formulary + controlled-substance register, billing, and a roster/status board.

It shares the live medical 911 board with rr-hospital instead of running a second feed.


Open it

  • F7 anywhere (must be on-duty ambulance job) — rebindable in Settings → Key Bindings.
  • /emsmdt command.
  • G on/aimed-at a patient → assess them straight onto the MDT.
  • ox_target a ped → Assess Patient (MDT); target a player → Take Vitals.

Tabs

TabWhat it does
DashboardDay stats, on-duty roster w/ live status, recent PCRs, recent controlled admin, quick actions.
DispatchThe shared medical 911 board (from rr-hospital). Respond → route in, a patient spawns on scene, treat with E / file a PCR to clear & bill. Self-assign / clear too.
PatientsSearch + the full EHR: demographics, blood type, allergies/conditions/meds (editable chart), DNR/organ-donor/uninsured flags, live vitals, PCR + ED visit history, notes, invoices. Admit button → admission flow.
AdmissionsAdmit a patient → walk them to a bed → process them through the MLO's equipment (CT/X-ray/MRI/ultrasound/labs/OR) → discharge (heals + bills). The medical analog to police booking.
Care ReportsFiled ePCRs. Open any to read the full report.
Triage / MCISTART triage scratch board (RED/YELLOW/GREEN/BLACK), auto-sorted by acuity. Scene size-up tool.
Units & StatusSet your unit status (10-8 / En Route / On Scene / Transporting / At Hospital / OOS) + on-duty roster.
ER StatusReceiving-facility list, admissions today, avg response, route transport to a hospital.
ProtocolsStep-by-step treatment algorithms (arrest, anaphylaxis, opioid OD, hypoglycemia, ACS, seizure, stroke, trauma, respiratory).
MedicationsDrug formulary (dose/route/indication) + the controlled-substance administration register.
BillingPatient invoices — mark paid / insurance; supervisor void.
IncidentsFile run/incident reports.
ReferenceRadio codes, START triage, vital-sign reference ranges.

The ePCR (the RP centrepiece)

Document a patient: chief complaint, acuity, a full set of vitals (HR/BP/RR/SpO₂/Temp/BGL/GCS/Pain, colour-coded against reference ranges, with a Re-scan for serial obs), interventions, medications (controlled ones prompt for a witness + waste), a narrative, disposition and transport destination. Billing is auto-itemised (assessment + interventions + meds + BLS/ALS transport + cardiac-arrest/refusal surcharges) and editable. Filing a PCR linked to a dispatch call clears the call and pays the run.

Patient admission & processing (mirrors police booking)

  1. Open a patient's chart → Admit (or admit from a dispatch scene).
  2. Walk to a bed marker in your hospital MLO → press E to place the patient in the room (an NPC patient lies in the bed; a real player is healed on discharge).
  3. Process them at the equipment markers — CT, X-Ray, MRI, Ultrasound, Lab/Bloodwork, Operating Room — each runs a timed procedure that adds a procedural finding to the chart and bills the visit. (You can also order studies straight from the Admissions tab.) Findings scale with the patient's acuity — a critical patient gets abnormal results.
  4. Discharge → frees the bed, heals a real player (qbx_medical revive), and drops a single itemised invoice into Billing.

Setting the coords

Every bed and equipment entry in config/admissions.lua starts at vec4(0,0,0,0) and is skipped until you give it real coords. To capture one: stand on the spot in-game (facing the way a patient should lie / where the doctor stands at the machine) and run:

/emscoords ER Bay 1

It prints a paste-ready vec4(x, y, z, h) to chat and copies it to your clipboard. Paste it into the matching coords = vec4(...) line in config/admissions.lua. Add/remove beds and equipment freely — anything left at vec4(0,0,0,0) simply won't appear. Tune BedPedZOffset if the lying patient ped sits above/below the mattress.


Integration (no edits to other resources required)

  • Dispatch — consumes rr-hospital's callbacks (rr-hospital:dispatch:getCalls / :respond / :selfAssign / :clear) and listens to rr-hospital:dispatch:newCall / :refresh. One source of truth — the MDT board and the hospital's F10 board stay in sync.
  • Injuries / care — reads live injury state via exports.qbx_medical:GetPlayerStatus; the chart's Revive / Treat Wounds buttons fire qbx_ambulancejob's hospital:server:RevivePlayer / :TreatWounds (consume the medic's First Aid Kit / Bandage).
  • Records — pulls ED-visit history from rr_hospital_visits / rr_hospital_patients when present.
  • Money — credits the EMS budget (governor_dept_budgets, job ambulance) on billing, mirroring rr-hospital. EMS.Billing.AutoCharge = false by default (invoices are recorded, players aren't surprise-charged).

Identity universe

Patient identities are generated from the same deterministic seed engine as rr-mdt, so the same NPC runs consistently every time. Real players key off their citizenid, so their chart persists.

Database (auto-created, prefix rr_emsmdt_)

pcr, records (EHR chart overlay), notes, controlled, billing, incidents.

Config

  • config/config.lua — branding, job gate (ambulance + any ems-type job), keys, ox_target, dispatch wiring, on-scene victim, hospitals, billing fees.
  • config/medical.lua — radio codes, unit statuses, triage tags, vital ranges, chief complaints, interventions, drug formulary, protocols, dispositions, report types.
  • config/data.lua — name / allergy / condition / medication / insurer pools for procedural patients.

Loading

Auto-loaded by ensure [custom]. Runtime-only dependency on rr-hospital (dispatch), qbx_medical (injuries) and qbx_core / ox_lib / oxmysql. No load-order changes needed.

Dev preview

.claude/serve-emsmdt.ps1 serves html/ on :8408. core.js auto-loads sample data when opened in a plain browser (DEV mode) so the UI renders without the game.

Last updated August 10, 2026