Features
Feature-by-feature reference for oxide-ems — departments, facilities, field care, surgery, beds, respawn, fleet, uniforms, and more.
What oxide-ems does, from a server owner's point of view. For how to set any of it up, see Admin; for the settings behind it, see Configuration.
Departments
A department is one EMS organisation. Most servers need exactly one; you can create as many as you want.
A department has:
- an internal name, which must match a job in your framework (for example
ambulance). Hiring a medic sets their framework job to this name. - a display label, which is what players see.
- grades — the ranks inside it, each with a salary and an optional boss flag.
- facilities — the buildings.
- garages and a vehicle fleet.
- uniforms, radio channels and a supply shop catalog.
- a treasury.
Departments can be disabled without deleting them. A disabled department stops accepting clock-ins, its map blips and interaction points disappear, and anyone currently in one of its beds, on an operating table or in an x-ray machine is released. Medics who were already on duty stay on duty until they clock out — with the clock-in points gone, they do that with /ems duty.
Deleting a department removes everything under it, and any medic on duty is clocked out and told why.
Hiring, firing and your framework's job system
There are three ways a medic gets hired, and they all end in the same place:
- an admin runs
/ems hire - a department boss hires from the management desk
- somebody sets the player's framework job to the department's name by any other means — a job-change command, a city-hall script, a multi-job menu
That last one matters. oxide-ems watches for framework job changes, so setting a player's job to your EMS job name enrols them automatically, and clearing it to unemployed fires them. You do not have to route every hire through this resource.
One character, several departments
With Multi-department enrolment turned on, one character can hold a place in several EMS departments at once, each with its own rank, badge and callsign. Whichever EMS job they currently have active is the one they work; switching away to a non-EMS job keeps every enrolment but drops their live EMS access until they switch back. With the setting off (the default), hiring somebody who already works for another department transfers them instead.
When g-multijob is installed, hires, promotions and fires are mirrored into its menu automatically.
Facilities
A facility is a building on the map. There are two types, and the type decides what you can put in it.
Hospitals
The emergency side. Hospitals get everything a doctor's office gets, plus:
- beds — where patients are revived and healed
- a respawn point — where players who give up wake up
- x-ray machines
- operating tables
Doctor's offices
The appointment side. A patient walks in, rings the reception bell, and on-duty staff are paged to come and treat them. Doctor's offices get clock-in points, personal lockers, a management desk, a supply counter and the reception desk.
Interaction points
Nothing is hard-coded to a location. You walk to the spot and place it. Every facility can have as many of each of these as you want — the respawn point is the one exception, at one per facility:
| Point | What it does |
|---|---|
| Clock-in | Medics of that department go on and off duty here |
| Personal locker | A private stash per character per facility, plus the uniform wardrobe |
| Management desk | Opens the boss panel for boss-graded medics of that department |
| Supply counter | Opens the supply shop |
| Reception | Hospital: check a patient into a bed. Doctor's office: page on-duty staff for a walk-in |
| Bed | Hospital only. Heals occupants to full over time, and is where critical patients are revived |
| X-ray machine | Hospital only. A screen plus a separately-placed spot the patient lies on |
| Operating table | Hospital only. A monitor plus a separately-placed spot the patient lies on |
| Respawn point | Hospital only. One per facility |
Each facility also has a map blip with its own icon, colour, size, and an optional custom name. Left blank, the blip is named "Department - Facility".
Station markers
Holding H shows floating cards in the world pointing at the nearest useful interaction points, ranked purely by distance:
- Civilians see reception desks — "Check In" at a hospital, "Request a Doctor" at a doctor's office. A facility with no reception desk shows nothing, because there is nothing a civilian can do there.
- On-duty medics see clock-in points on every facility, labelled "EMS Station", so they can find their way back to clock out. A facility with no clock-in point placed falls back to a card floating above the building itself.
- Off-duty medics see both: every reception desk, plus their own department's clock-in points.
Range, how many cards show at once, and how high they float are all configurable.
Duty and pay
Medics clock in at a facility's clock-in point. By default this is required — turn off Require facility clock-in and /ems duty will toggle duty from anywhere instead.
Clocking in:
- sets the medic's duty flag in your framework
- starts their salary timer
- tunes them to their department's default radio channel, if you use
oxide-radio - re-links (or respawns) any fleet vehicle they still had checked out
Clocking out reverts their uniform to civilian clothes and stops the salary. Any fleet vehicle they left in the world stays there.
Salaries
While on duty, a medic is paid their grade's salary to their bank on an interval (15 minutes by default).
There are two payment modes:
- Treasury-funded (default): the salary comes out of the department treasury. If the treasury cannot cover a tick, the salary is accrued as back pay instead of silently vanishing, the medic is told, and a boss can settle it later from the management desk.
- Direct: salaries are paid by the framework with no treasury involvement. Back pay never accrues.
Unclaimed back pay is cleared after 30 days by default.
Treasury
Each department has a treasury. With oxide-banking installed, this is a real job bank account created with a starting balance the first time the department loads; without it, the balance is a column on the department itself.
Money flows in from bed check-in fees, supply shop sales, boss deposits and admin funding. Treatment and revive charges are invoiced to the patient through banking, so that money arrives when they settle the invoice — the department revenue is recorded at the time of treatment either way. Money flows out through salaries, back-pay settlements and fleet purchases. Every movement is written to a transaction history the boss panel displays.
Field care
Examining a patient
An on-duty medic aiming at a player gets Examine Patient. Downed patients get it too, plus a proximity ring around the body so a medic does not have to land the crosshair on a person lying on the ground.
Examining opens a diagnosis overlay: a scripted camera framing the patient (face-on if they are standing, top-down if they are on the ground or on an operating table) with seven clickable dots tracked to real bones on their body — head, torso, abdomen, both arms, both legs. Injuries group onto the nearest region; illnesses with no body part group onto the torso.
Clicking a region shows what is wrong there, how bad it is, what treating it will cost the patient, how long it takes, and which supplies the medic needs — flagged red if the medic is not carrying them.
The overlay also shows the patient's blood type and live vitals: pulse, blood pressure, blood oxygen, and a cardiac-arrest flag.
Triage: who can be revived where
Patients whose injuries are severe enough are marked critical, and critical patients cannot be revived on the street. They have to be stabilized, transported and revived at a hospital bed. This is the core loop the resource is built around: an ambulance ride should matter.
Severity is read from the medical record. Without a medical record to read (oxide-medical stopped, for instance), the resource falls back to classifying by what put the patient down — snipers, shotguns and explosives count as critical, and the weapon list is editable.
Stabilizing
Stabilizing a patient freezes their bleedout timer — they stop running out of time, and a dead patient cannot respawn out from under the medic working on them.
Before a stabilization takes, the medic has to stop the bleeding: gunshot wounds and lacerations must be treated first, and the overlay says so. Those two are the only treatments available on a patient lying in the street; everything else is a facility job.
A stabilization holds for 10 minutes by default, then lapses and the timers resume. A fresh wound cancels it immediately.
By default every street revive requires a stabilized patient, so the overlay offers Stabilize or Revive, never both. Turning that off lets medics revive non-critical patients directly.
Procedure holds
Separately from stabilization, the patient's timers are frozen for as long as a medic is actually working on them — during CPR, during a stabilization, during an operation, and for the whole time they are lying on an operating table. Every examine and every operation refreshes the hold. Nobody bleeds out mid-treatment.
Holds expire on their own if a medic disconnects or walks away, so a patient can never be left frozen forever.
Reviving
A medic performs CPR for 15 seconds (configurable) within 3 metres of the patient. Nothing is consumed and nothing is paid until the server re-checks the whole situation at the end — if the patient turned critical mid-CPR, or the medic walked away, it fails cleanly.
On success the medic is paid a payout, and the patient can be invoiced (off by default). Both go through the treasury.
The revive item defaults to your framework's existing first-aid item and is consumed on success. It can be changed or removed entirely.
Transport
Two ways to move a patient:
Into a vehicle. With an ambulance nearby, Load Patient puts a downed patient into a seat. Critical patients must be stabilized before they can travel. A patient can climb out of a stopped vehicle themselves with a key prompt, so nobody is stranded in an ambulance when their medic disconnects.
On the stretcher. Park an ambulance, take the stretcher out of the rear, drag it to the patient, place them on it, wheel them back, and load the stretcher with the patient still on it. At the hospital, wheel them to a bed and check them in — the stretcher releases itself as they take the bed.
Distress signals
A downed player can press G to send a distress signal: on-duty medics are notified directly, and a dispatch alert drops at their position. Anyone, downed or not, can use /911e <message> to send an emergency message the same way.
Alerts also fire automatically when a player goes down and when they die, debounced so one incident does not spam the board.
Automatic down and death alerts need a dispatch resource to deliver them. Distress signals, /911e, clinic reception pages and bed-request alerts always reach on-duty medics directly, dispatch or not.
Treatment and surgery
Every treatment in the resource runs the same way: as a timed keypress sequence. In the field, at a doctor's office, on an operating table — the same minigame, graded the same way.
A sequence is several rounds of on-screen key prompts with a shrinking ring closing on each one. Press on the beat. How close you are decides your score.
The result is graded on your average accuracy across every prompt:
| Accuracy | Result |
|---|---|
| 85%+ | Clean. The condition is cured. |
| 50–85% | The condition is cured, but the patient picks up a post-operative complication that wears off. |
| Below 50% | Failed. The condition is not cured, the patient picks up a laceration where you were working, and a stabilized patient is destabilized. |
Aborting mid-operation counts as a failure by default rather than a free retry.
Supplies are consumed on every completed operation, success or not. Money only changes hands on a cure, unless you turn on billing for failures too.
The whole sequence is generated on the server and re-scored on the server. A client cannot report a perfect run it did not play, finish faster than the sequence physically takes, or operate on somebody who has moved away.
Guard rails on harm
A botched operation can only worsen a patient so far. There is a cap (2 by default) on how many still-active conditions this resource has inflicted on one person, and operating on a condition surgery itself caused never inflicts another one — so a bad surgeon cannot spiral one patient into an endless pile of injuries. Set the cap to 0 to disable outcome conditions entirely.
What needs an operating table
Some conditions are surgical and can only be treated at an operating table — by default a retained bullet, and any fracture at severity 3 or higher. Both lists are editable. Turn off Require operating table and those conditions fall back to being treatable anywhere.
Any condition can be treated on the table. The restriction only controls what is locked away from the field.
A patient lying on the street can only be given the treatments that unblock stabilization — the bleeding. Everything else says "get the patient to a facility".
Pricing
Every condition has a price, a treatment time and a supply requirement, resolved in this order:
- an exact entry in the treatment price book for that condition type
- a per-category default (fracture, disease, sickness, wound)
- a severity multiplier applied to whichever price was found
Out of the box: a retained bullet is 900 and consumes a surgical kit; a gunshot is 250 and a laceration 200, both consuming a medical bandage; a cardiac arrest is 1200 and consumes nothing. Everything else falls to its category default.
The patient is invoiced through banking; the treating medic takes a cut (30% by default) and the rest lands in the department treasury.
X-ray machines
Place a screen on a wall and a spot for the patient to lie on. A medic positions a patient, runs a scan, and the result appears on the screen in the world — a skeleton highlight plus a findings list.
Scans only report skeletal findings: fractures and retained bullets. Everything else is invisible to an x-ray, which is the point — it is a diagnostic step, not a shortcut around examining someone.
Results are broadcast to every screen within 30 metres, so the patient sees their own x-ray too. The screen can be cleared back to idle by a medic standing at it.
The screen's size is set while placing it, with the arrow keys, against a live preview.
Operating tables
An operating table is a monitor plus a spot the patient lies on.
A medic places a patient on the table — downed patients included, as long as a critical one has been stabilized first. Lying on the table counts as being under care, so their timers stay frozen for as long as they are on it.
The monitor beside the table shows the occupant's name, blood type, whether they are critical or stabilized, their condition list with surgical ones badged, and an ECG driven by their actual pulse — three beats per sweep, flatlining with a tag when the patient's heart has stopped.
A conscious patient can step off the table themselves. A patient mid-operation stays put until it resolves. Dying frees the table; merely collapsing on it does not.
Hospital beds
Beds heal their occupant to full over 60 seconds by default, ticking gradually rather than snapping.
A medic checking a downed patient into a bed is the revive. It pays the medic and invoices the patient exactly like a street revive, and no second item is consumed. This is the intended destination for a critical patient.
Without a medic on duty, patients are not stuck. A downed player near a bed or reception desk gets a key prompt (R by default) to check themselves in, and anyone standing nearby can check a downed player in through Check In Nearby. That self-service path charges the patient a fee and is blocked while EMS is actually staffed — at 2 or more on-duty medics the patient is told to call a doctor instead, and on-duty medics get an alert that somebody is waiting. Critical patients normally still need stabilizing first, but that requirement is waived when there is nobody on duty who could have done it.
A bed revive puts the patient back on their feet and restores their health. It does not clear their injuries by default — whatever put them down still needs treating, and the surgical injuries in particular still need a medic. Turn on Clear injuries on bed revive if you would rather patients leave the bed completely healthy. A conscious patient checking in just to heal always keeps their injuries either way.
Beds free themselves automatically if the occupant dies, disconnects, respawns, or if an admin deletes the bed out from under them.
Hospital respawn
Place a respawn point at any hospital and players who give up and respawn wake up at the nearest one, behind a fade-out cutscene with a groggy double-fade coming back. This works on all three frameworks; how it is wired underneath differs, but what the player sees does not.
With no respawn point placed anywhere, players respawn where they fell and a warning is logged once.
Respawning can cost a fee, and can cost the player their weapons or their whole inventory — off by default. A medic or admin revive never takes anything; only giving up does.
Stabilized players cannot respawn out from under the medic treating them.
Fleet and garages
A garage belongs to a department, has its own interaction point and one or more spawn bays, and can require a minimum rank. Bays let several medics pull vehicles at once.
The fleet is individual vehicles. The UI groups identical vehicles into one row for readability, but each is a real row with its own plate, fuel, damage and status.
- Medics take a vehicle from the garage and return it at any of their department's garages.
- Fuel, body and engine damage and applied modifications persist across a return and across a server restart — a checked-out vehicle is respawned where it was left when the server comes back.
- Clocking out leaves the vehicle in the world. Clocking back in re-links it, or respawns it if it is gone.
- Destroying a vehicle marks it destroyed. A boss recovers wrecks from the management desk at a replacement cost.
- Bosses buy new vehicles from a catalog you define, paid out of the treasury. Admins can add vehicles directly with no charge.
The vehicle catalog ships empty — add the models your server actually has under Fleet in /ems settings.
Uniforms
Uniforms are built in-game, not written in a config file.
The workflow: dress your character however you want the uniform to look, open the uniform editor in the admin panel or the management desk, and capture what you are wearing. Then choose which clothing slots the uniform owns — just the top and the trousers, say, or the whole outfit.
That slot choice is the important part. Anything outside those slots stays the medic's own clothes, so a uniform that owns only the shirt does not wipe out somebody's hairstyle, shoes and accessories.
Male and female variants are stored separately and the right one is applied automatically. Uniforms can require a minimum rank.
Medics change at a personal locker point, which offers both the locker stash and the uniform wardrobe. Uniforms revert to civilian clothes automatically on clock-out.
Supply shop
A department-scoped catalog placed behind a supply counter. Each row has an item, a label, a price, a category, a sort order and an optional minimum rank.
- Rows with no rank are public self-service — anyone can walk up and buy them. Use these for the cures civilians should be able to buy for themselves.
- Rows with a rank require an enrolled, on-duty medic of that department at that rank or above. Locked rows are still visible to everyone, marked as staff-only.
Purchases are paid from the buyer's bank and the revenue goes to the department treasury.
Radio channels
With oxide-radio installed, departments own numbered radio channels. Each channel has a frequency, a label, a minimum rank, an optional duty requirement, and an optional "default" flag — medics are tuned to their department's default channel automatically when they clock in.
Frequencies are globally unique. Trying to take one another resource already owns is refused with a clear message.
Without oxide-radio installed, the radio screen in the admin panel says so and nothing is registered.
Death and downed handling
oxide-ems replaces your framework's ambulance job, which means it inherits responsibility for the downed and dead state. How much it takes over depends on the framework:
| Framework | Who runs the downed/dead loop | Who draws the downed screen |
|---|---|---|
| QBCore | oxide-ems | oxide-ems |
| ESX | oxide-ems (dead only — ESX has no laststand phase) | oxide-ems |
| Qbox | qbx_medical, kept in place | oxide-ems |
On QBCore and ESX, oxide-ems runs the whole state machine and keeps your framework's native surfaces truthful — QBCore's isdead and inlaststand metadata (which qb-inventory, qb-phone, qb-hud and qb-radialmenu all read), and ESX's isDead state.
On QBCore and ESX the downed overlay shows the bleedout countdown, the wait until respawn becomes available, a hold-E respawn bar, and a hint that G calls for a medic. On Qbox the same overlay is drawn on top of qbx_medical's own timers.
Downed players can be finished off. A player in the downed phase is resurrected at 150 health and is not invincible, matching how the stock ambulance jobs behaved. Further damage kills them properly.
What the compatibility shims keep working
The events, items and commands the stock ambulance jobs owned keep working, so radial menus, admin menus and police "officer down" relays do not break:
hospital:server:emergencyAlertandhospital:server:ambulanceAlert— turned into EMS alertshospital:client:CheckStatus,TreatWounds,RevivePlayer— routed into the examine and revive flowshospital:client:Revive,KillPlayer,SetLaststand,adminHeal— QBCore's admin and revive surfaceesx_ambulancejob:revive— ESX's revive entry pointtxAdmin:events:healedPlayer— the txAdmin heal button- QBCore's
hospital:GetDoctorscallback and aGetDoctorCountexport - the stock medical items, with their original healing amounts
- the stock admin commands:
/revive,/reviveall(ESX),/aheal,/kill,/status,/heal,/revivep
Settings and administration
Every setting in the resource is editable in-game through /ems settings — a searchable panel with Basic and Advanced tiers, grouped into Core, Medical, Operations and Integration. Settings are stored in the database and take effect immediately, without a restart. Any setting can be reset to its shipped default.
Everything structural — departments, facilities, points, grades, garages, the fleet, uniforms, radio channels, the supply catalog — is built in /ems admin, which also shows a per-department setup checklist.
Full details: Admin and Configuration.