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: