Oxide EMS
Multi-framework ambulance-job replacement with hospitals, doctor's offices, field care, and a surgery minigame for FiveM servers.
oxide-ems is a complete ambulance-job replacement for FiveM. It drops the legacy qb-ambulancejob / esx_ambulancejob / qbx_ambulancejob flow and replaces it with a database-driven, runtime-configurable system: departments, hospitals, doctor's offices, grades, garages, uniforms, radio channels and the supply shop are all set up from an in-game admin panel rather than from config files.
The resource ships two facility pipelines. Hospitals are the emergency side — beds, hospital respawn, x-ray machines and operating tables. Doctor's offices are the appointment side — a reception bell that pages on-duty staff for walk-in treatment. On top of both sits a full field-care pipeline: examine a patient through a scripted diagnosis camera, treat the bleeding, stabilize them, wheel them out on a stretcher or load them into the ambulance, and revive them at a bed. Treatments themselves run as a graded surgery minigame, so a botched operation has consequences.
oxide-ems is framework-agnostic through o-link and runs on QBCore, ESX and Qbox. Compatibility shims keep the hospital:* event surface, the stock medical items, the stock admin commands and the QBCore doctor-count callback working for any third-party resource that depended on the legacy ambulance job.
Key Features
- Department Builder — Full runtime in-game admin (
/ems admin): departments, facilities, grades, salaries, badges, garages, fleet, uniforms, radio channels and the supply shop catalog - Two Facility Types — Hospitals get beds, respawn points, x-ray machines and operating tables; doctor's offices get a reception desk that pages on-duty staff. Both get clock-in, personal lockers, a management desk and a supply counter
- In-World Placement — Every interaction point is placed by walking to the spot, with live previews — a ghost patient lying on a bed, and resizable preview quads for x-ray screens and surgery monitors
- Diagnosis Overlay — Scripted camera, seven clickable body regions tracked to real ped bones, per-condition pricing and supply requirements, and a live vitals readout (pulse, blood pressure, SpO2, cardiac arrest)
- Triage — Badly hurt patients are locked out of street revives and must be stabilized, transported and revived at a hospital bed. Bleeding must be treated before a stabilization takes, and a fresh wound cancels it. Stabilization freezes the patient's bleedout and respawn timers, as does any procedure a medic is running — nobody bleeds out from under the person treating them
- Surgery Minigame — Treatment runs as a graded keypress minigame everywhere: a clean run cures, a middling run cures with a complication, a failure can worsen the patient, with a hard cap on how much harm one patient can take
- Patient Transport — Load into an ambulance seat, or take the stretcher out of the vehicle, drag it over, load the patient and wheel them back. Patients can climb out of a stopped vehicle themselves if their medic disconnects
- X-ray Machines & Operating Tables — In-world screens: the x-ray display shows the skeleton highlight and findings list to everyone standing nearby, and the operating-table monitor shows the patient's record and a real-pulse ECG
- Hospital Beds & Respawn — A heal-to-full bed loop, medic-assisted check-in as the bed revive, a self-service fallback so an unstaffed server is never a dead end, and hospital respawn points behind a fade-out cutscene with an optional fee and optional inventory loss
- Duty, Pay & Treasury — Duty clock-in, salaries on an interval, department treasury, unpaid back-pay accrual, and a desktop-style boss panel for roster, treasury, payroll, uniforms and fleet. With
oxide-tabletrunning, bosses can also open it from anywhere as an EMS Command tablet app - Persistent Fleet — Individual vehicles that survive restarts, keep fuel and damage, re-link on clock-in, and are bought and recovered from the treasury. A vehicle is written off only when the server itself sees it wrecked or sunk
- Uniform Builder — Captures what you are wearing and owns only the clothing slots you choose, leaving the rest of the medic's outfit alone
- Supply Shop — Public self-service rows and rank-gated staff rows, revenue routed to the treasury
- Dispatch & Radio — Automatic down and death alerts, a distress keybind for downed players,
/911efor anyone, clinic reception pages, understaffed bed-request alerts, and department radio channels with rank and duty gates and automatic tuning at clock-in - Station Markers — Hold
Hto see in-world cards that point civilians at reception desks and medics at their clock-in points - Live Settings — In-game settings editor (
/ems settings) covering every setting, stored in the database and applied live — no restart - Compatibility Shims — The
hospital:*event surface, stock medical items, stock admin commands, the QBCorehospital:GetDoctorscallback, optional ESX job-table sync and esx_society registration, andg-multijobmirroring - Multi-Department Enrolment — Optional: one character in several EMS departments at once, each with its own rank, badge and callsign, following their active job
- Localized — Every panel, notification, command and target label reads from
locales/*.json
Requirements
Required
| Resource | Purpose |
|---|---|
o-link | Framework abstraction for character, job, money, inventory, notify, target, medical, death, dispatch, banking, clothing, placement |
ox_lib | Locale, callbacks, keybinds, UI helpers |
oxmysql | Database persistence |
oxide-medical | Blood types, injuries, illnesses, fractures and vitals — the medical record the clinic, surgery and x-ray systems read and write |
| Framework | One of qb-core, qbx_core, or es_extended |
Recommended
| Resource | Purpose |
|---|---|
oxide-dispatch | Delivers EMS alerts to a dispatch board. Without it, alerts still page on-duty medics directly, but automatic down/death alerts have nowhere to go |
oxide-banking | Department treasury accounts and patient invoicing for revives and treatment |
Optional
| Resource | Purpose |
|---|---|
oxide-radio | Runs the radio that department channels are registered into |
oxide-tablet | Hosts the boss menu as an EMS Command app, opened from anywhere |
g-multijob | Mirrors hires, fires and promotions into the in-game multi-job menu |
On Qbox, qbx_medical stays the death provider — leave it running. oxide-ems layers on top of it, and only qbx_ambulancejob is removed. See the QBX install guide.
Supported Frameworks
| Framework | Support |
|---|---|
QBCore (qb-core) | Full |
QBX (qbx_core) | Full |
ESX Legacy (es_extended) | Full |
Quick Start
Place oxide-ems in your server's resources directory.
After your framework, start ox_lib, oxmysql, o-link, oxide-medical, the optional oxide-banking, oxide-dispatch and oxide-radio, and then oxide-ems, in that order.
Follow the framework-specific setup (QBCore, QBX, or ESX) to register items and disable the legacy ambulance job. On ox_inventory every item is ready to paste from itemimages/ox_inventory_items.lua.
Restart the whole server — not just the resource. The stretcher prop is streamed and only registers on a full server start.
Run /ems admin in-game to create a department, grades, facilities with their interaction points, garages, the fleet, uniforms, radio channels and the supply shop.
The database tables are created automatically the first time oxide-ems starts. The database user needs permission to create tables.
See the Installation Guide for the full setup flow.
Documentation
Installation
Generic install hub.
Configuration
Per-setting reference for the database-backed settings.
QBCore Setup
QBCore-specific install.
QBX Setup
Qbox-specific install.
ESX Setup
ESX Legacy install.
Features
Feature-by-feature reference.
Exports & Integration
Exports, events, statebags and the compatibility surface.
Admin Tools
Commands, /ems admin, and the boss desktop.
Troubleshooting
Common issues and fixes.