> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ferrum.thalamiq.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get started with Ferrum.

Run **Ferrum** locally in minutes.

## Docker

Requires [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/).

```bash theme={null}
curl -fsSL https://get.ferrum.thalamiq.io | sh
```

This creates a `ferrum` directory and starts the stack. Two containers run:

* `ferrum-db` — PostgreSQL (port 5432)

* `ferrum-server` — FHIR API + Admin UI (port 8080)

* **FHIR API**: [http://localhost:8080/fhir](http://localhost:8080/fhir)

* **Admin UI**: [http://localhost:8080/ui](http://localhost:8080/ui)

## Working with FHIR Resources

### Create

Create a [Patient](https://hl7.org/fhir/patient.html) with PUT:

```bash theme={null}
curl -X PUT http://localhost:8080/fhir/Patient/example-patient \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [{"family": "Smith", "given": ["John"]}],
    "gender": "male",
    "birthDate": "1974-12-25"
  }'
```

Response includes `meta.versionId` and `meta.lastUpdated`:

```json theme={null}
{
  "resourceType": "Patient",
  "id": "example-patient",
  "name": [{ "family": "Smith", "given": ["John"] }],
  "gender": "male",
  "birthDate": "1974-12-25",
  "meta": {
    "versionId": "1",
    "lastUpdated": "2026-01-11T18:15:25.865119+00:00"
  }
}
```

### Read

```bash theme={null}
curl http://localhost:8080/fhir/Patient/example-patient
```

### Search

```bash theme={null}
curl http://localhost:8080/fhir/Patient
```

Returns a [FHIR Bundle](https://hl7.org/fhir/bundle.html). Example search parameters:

```bash theme={null}
# Search by family name
curl http://localhost:8080/fhir/Patient?family=Smith

# Search by birthdate
curl http://localhost:8080/fhir/Patient?birthdate=1974-12-25
```

### Update

```bash theme={null}
curl -X PUT http://localhost:8080/fhir/Patient/example-patient \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [{"family": "Smith", "given": ["John", "William"]}],
    "gender": "male",
    "birthDate": "1974-12-25",
    "telecom": [{
      "system": "email",
      "value": "john.smith@example.com"
    }]
  }'
```

Response includes `versionId: "2"`.

### Delete

```bash theme={null}
curl -X DELETE http://localhost:8080/fhir/Patient/example-patient
```

Returns `204 No Content`.

## Configuration

Edit `config.yaml` in the `ferrum` directory. See [Configuration](/getting-started/configuration) for details.
