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
  • 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
  • Persistent Fleet — Individual vehicles that survive restarts, keep fuel and damage, re-link on clock-in, and are bought and recovered from the treasury
  • 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, /911e for anyone, clinic reception pages, understaffed bed-request alerts, and department radio channels with rank and duty gates and automatic tuning at clock-in
  • 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 QBCore hospital:GetDoctors callback, optional ESX job-table sync and esx_society registration, and g-multijob mirroring
  • Multi-Department Enrolment — Optional: one character in several EMS departments at once, each with its own rank, badge and callsign, following their active job

Requirements

Required

ResourcePurpose
o-linkFramework abstraction for character, job, money, inventory, notify, target, medical, death, dispatch, banking, clothing, placement
ox_libLocale, callbacks, keybinds, UI helpers
oxmysqlDatabase persistence
oxide-medicalBlood types, injuries, illnesses, fractures and vitals — the medical record the clinic, surgery and x-ray systems read and write
FrameworkOne of qb-core, qbx_core, or es_extended
ResourcePurpose
oxide-dispatchDelivers 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-bankingDepartment treasury accounts and patient invoicing for revives and treatment

Optional

ResourcePurpose
oxide-radioRuns the radio that department channels are registered into
g-multijobMirrors 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

FrameworkSupport
QBCore (qb-core)Full
QBX (qbx_core)Full
ESX Legacy (es_extended)Full

Quick Start

Place oxide-ems in your server's resources directory.

Start ox_lib, oxmysql, o-link, oxide-medical, optional oxide-banking, oxide-dispatch and oxide-radio, your framework, and oxide-ems in that order.

Run sql/install.sql to create every Oxide EMS table.

Follow the framework-specific setup (QBCore, QBX, or ESX) to register items and disable the legacy ambulance job.

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.

See the Installation Guide for the full setup flow.

Documentation