Skip to content

Send Patient Data

Send patient information to Unomed before opening the PopApp. Send an update every time the patient interacts with your system — this keeps demographics in sync and ensures Unomed always works with the latest data.

See the API Documentation for full endpoint details.

All patient endpoints are scoped to your organization. Replace YOUR_ORG_UUID with your organization's UUID throughout.

Create Patient

curl -X POST https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "identifier": [
      {
        "use": "official",
        "system": "urn:oid:2.16.756.5.32",
        "value": "7561234567890"
      },
      {
        "use": "secondary",
        "system": "urn:oid:2.16.756.5.30.1.123.100.1.1.1",
        "value": "80756012345678901234"
      },
      {
        "system": "https://your-pis.ch/patients",
        "value": "patient-123"
      }
    ],
    "name": [{
      "family": "Muster",
      "given": ["Max"]
    }],
    "gender": "male",
    "birthDate": "1985-04-12",
    "telecom": [{
      "system": "email",
      "value": "max.muster@example.com",
      "use": "home"
    }]
  }'

Identifier Systems

Identifier system value format
AHV-Nummer (NAVS13) urn:oid:2.16.756.5.32 13-digit, e.g. 7561234567890
VEKA / KVK card number urn:oid:2.16.756.5.30.1.123.100.1.1.1 20-digit, e.g. 80756012345678901234
Your system's patient ID https://your-pis.ch/patients (any URI you control) Your internal patient ID

Multiple identifiers per patient are supported. The same system+value combination must be unique within an organization.

Response

{
  "resourceType": "Patient",
  "id": "660e8400-e29b-41d4-a716-446655440001",
  "managingOrganization": {
    "reference": "Organization/YOUR_ORG_UUID"
  },
  ...
}

Save the id — use it to launch the PopApp.

Read Patient

curl https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient/PATIENT_UUID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Update Patient

Send an update every time the patient interacts with your system. This keeps demographics synchronized and ensures Unomed always has the most current data.

The PUT endpoint performs a full replacement of all patient data. Every array field (identifier, name, telecom, address, communication) is completely replaced by whatever you send — omitting a field clears it. Always include all data you want to retain.

curl -X PUT https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient/PATIENT_UUID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "identifier": [
      {
        "use": "official",
        "system": "urn:oid:2.16.756.5.32",
        "value": "7561234567890"
      },
      {
        "use": "secondary",
        "system": "urn:oid:2.16.756.5.30.1.123.100.1.1.1",
        "value": "80756012345678901234"
      },
      {
        "system": "https://your-pis.ch/patients",
        "value": "patient-123"
      }
    ],
    "name": [{
      "family": "Muster",
      "given": ["Max"]
    }],
    "gender": "male",
    "birthDate": "1985-04-12",
    "active": true,
    "telecom": [{
      "system": "email",
      "value": "max.muster@example.com",
      "use": "home"
    }],
    "address": [{
      "line": ["Bahnhofstrasse 1"],
      "city": "Zürich",
      "postalCode": "8001",
      "country": "CH"
    }]
  }'

What gets updated

Field Behavior
active Replaced (defaults to true if omitted)
gender Replaced (male, female, other, unknown)
birthDate Replaced
deceasedDateTime Replaced
multipleBirth Replaced
maritalStatus Replaced
identifier All existing links removed, new ones created
name All existing names removed, new ones created
telecom All existing contact points removed, new ones created
address All existing addresses removed, new ones created
communication All existing entries removed, new ones created

Patch Patient

Use PATCH to update only specific fields without affecting the rest of the patient record.

Scalars (absent = keep existing, present = replace): active, gender, birthDate, deceased, multipleBirth, maritalStatus

Arrays (absent or [] = keep existing, present with items = replace entirely): identifier, name, telecom, address, communication

To clear an array entirely, use PUT with the array omitted or empty.

Update a single scalar field

curl -X PATCH https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient/PATIENT_UUID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "active": false
  }'

Replace identifiers without touching other data

curl -X PATCH https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient/PATIENT_UUID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "identifier": [
      {
        "use": "official",
        "system": "urn:oid:2.16.756.5.32",
        "value": "7561234567890"
      },
      {
        "system": "https://your-pis.ch/patients",
        "value": "patient-123"
      }
    ]
  }'

Delete Patient

curl -X DELETE https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient/PATIENT_UUID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Returns 204 No Content on success.

Search Patients

Parameter Description Example
identifier Value only, or system\|value 7561234567890
name Partial family or given name Muster
email Email address (partial match) max@example.com
gender male, female, other, unknown male
birthdate Date of birth 1985-04-12
address City, postal code, country, or street line Zurich
active Active status true
_count Max results (1–200, default 50) 20
_offset Pagination offset 50

By AHV number

curl "https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient?identifier=urn:oid:2.16.756.5.32|7561234567890" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

By VEKA / KVK card number

curl "https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient?identifier=urn:oid:2.16.756.5.30.1.123.100.1.1.1|80756012345678901234" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

By your system's patient ID

curl "https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient?identifier=https://your-pis.ch/patients|patient-123" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

By email

curl "https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient?email=max.muster@example.com" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

By value only (any system)

Omit the system to match any identifier with that value across all systems:

curl "https://pacs.dev.unomed.ch/YOUR_ORG_UUID/fhir/r4/Patient?identifier=patient-123" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"