> For the complete documentation index, see [llms.txt](https://docs.otherplanet.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherplanet.dev/scripts/op-ambulance-job/tutorials/how-to-setup-the-first-hospital.md).

# How to setup the first hospital

Hospitals are stored in the database and managed from Hospital Admin. There is no static hospital seed list in config - medic jobs sync from hospitals you create.

{% stepper %}
{% step %}
**Open Hospital Admin**

After you have permission, run:

```
/hospitaladmin
```

{% endstep %}

{% step %}
**Create hospital**

Set at least:

* Label - display name
* Allowed jobs - must match real framework job names (example: `ambulance`)
* Spawn / beds - respawn and local-help bed points
* Blip - optional map blip
* Duty point - clock in / out
* Stashes / wardrobe / garage - staff points
* Pharmacy / insurance / local help - civilian services (optional)
* DNA lab / printer - forensics / documents (optional)
* Permissions tab - min grade per job for duty, stash, wardrobe, dna, printer, garage
  {% endstep %}

{% step %}
**Framework job**

Create the job in your framework (ESX jobs / QB shared jobs) with the same name as hospital `allowedJobs`. Grades should match Hospital Admin permission grades.
{% endstep %}

{% step %}
**Duty / access**

Players need an allowed hospital job. Street EMS features (examine, stretcher, GPS, pharmacy) use job membership from hospitals. Point features (duty, stash, wardrobe, garage, DNA, printer) also check the Permissions tab min grade for that hospital.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
If the hospital job name does not exist on the framework, duty and garage will not work correctly.
{% endhint %}

{% hint style="info" %}
Dispatch jobs for distress (`Config.Dispatch.jobs`) are separate - they must match keys in op-ambulancemdt `Config.Jobs` when MDT is used.
{% endhint %}
