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
    name
    Type
    HumanName[]
    Description

    The name of the practitioner. This includes given names and family name. Name contains an array of FHIR HumanName objects.

  • Name
    telecom
    Type
    ContactPoint[]
    Description

    The contact details of the practitioner. Telecom contains an array of FHIR ContactPoint objects. Currently only email is imported and stored.


POST/Practitioner

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

POST
/Practitioner
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"}],
}

PUT/Practitioner?identifier=<system>|<value>

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

PUT
/Practitioner?identifier=http://tiro.health/Practitioner|12345
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/Practitioner/:id

Get an existing Practitioner

This endpoint allows you to retrieve an existing Practitioner by providing the Practitioner id.

Request

GET
/Practitioner/1
curl -G https://reports.tiro.health/fhir/r5/Practitioner/1 \
     -H "Authorization: Basic {{apikey}}" \
     -H "Content-Type: application/fhir+json" \

Was this page helpful?