Practitioner
Practitioners are an essential part of Atticus. On this page, we'll dive into the different practitioner endpoints you can use to manage practitioners programmatically. We'll look at how to query, create, update, and delete practitioners.
The Practitioner model
The Practitioner model contains all the basic information about a healthcare practitioner, including their name, identifiers, and qualifications.
Properties
The Practitioner model conforms to the FHIR Practitioner resource. The following properties are available:
- Name
resourceType*- Type
- 'Practitioner'
- Description
The FHIR resource type. This must be set to
'Practitioner'.
- Name
telecom- Type
- ContactPoint[]
- Description
The contact details of the practitioner. Telecom contains an array of FHIR
ContactPointobjects. Currently only email is imported and stored.
Create a new Practitioner
This endpoint allows you to create a new Practitioner.
Note that this endpoint always creates — it does not deduplicate on identifier, and If-None-Exist is not honored for Practitioners. For imports that may run more than once, use the conditional update (PUT /Practitioner?identifier=...) instead, which creates the Practitioner when no match exists.
Request
curl -X POST https://reports.tiro.health/fhir/r5/Practitioner \
-H "Authorization: Basic {{apikey}}" \
-H "Content-Type: application/fhir+json" \
-d '{
"resourceType": "Practitioner",
"name": [{
"prefix": ["dr."],
"given": ["Jane"],
"family": "Doe"
}],
"telecom": [{"system": "email", "value": "test@test.com"}],
}'
Response
{
"resourceType": "Practitioner",
"id": "1",
"name": [{
"prefix": ["dr."],
"given": ["Jane"],
"family": "Doe"
}],
"telecom": [{"system": "email", "value": "test@test.com"}],
}
Conditionally update a Practitioner
This endpoint allows you to update a Practitioner by matching on specific criteria. The search criteria are provided as query parameters, and the updated Practitioner data is provided in the request body.
When no Practitioner is found that matches the search criteria, a new Practitioner is created. Match on the identifier as {system}|{value}, using the same stable identifier your system sets on the Practitioner resource. This is the recommended way to import practitioners: repeated imports match the existing user instead of creating duplicates.
Request
curl -X PUT "https://reports.tiro.health/fhir/r5/Practitioner?identifier=http://tiro.health/Practitioner|12345" \
-H "Authorization: Basic {{apikey}}" \
-H "Content-Type: application/fhir+json" \
-d '{
"resourceType": "Practitioner",
"name": [{
"prefix": ["dr."],
"given": ["Jane"],
"family": "Doe"
}],
"telecom": [{"system": "email", "value": "test@test.com"}],
}'
Response
{
"resourceType": "Practitioner",
"id": "1",
"name": [{
"given": ["John"],
"family": "Smith"
}],
"telecom": [{"system": "email", "value": "test@test.com"}],
"identifier": [{
"system": "http://tiro.health/Practitioner",
"value": "12345"
}]
}
Get an existing Practitioner
This endpoint allows you to retrieve an existing Practitioner by providing the Practitioner id.
Request
curl -G https://reports.tiro.health/fhir/r5/Practitioner/1 \
-H "Authorization: Basic {{apikey}}" \
-H "Content-Type: application/fhir+json" \