Shared Care Planning (SCP) Implementation Guide
0.2.0 - ci-build

Shared Care Planning (SCP) Implementation Guide, published by Santeon. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/SanteonNL/shared-care-planning/ and changes regularly. See the Directory of published versions

Use cases - Enroll patient in home monitoring

The user story

A cardiologist, Caroline van Dijk, from Hospital X diagnoses heart failure for patient Patrick Egger and explains about home monitoring at 'Medical service centre' (MSC). Caroline gets informed consent from Patrick to enroll him for home monitoring at MSC. Because Patrick gives informed consent for the enrollment, consent for the processing of the relevant data by MSC can be implied (implied consent).

Create order/ Service-request

Caroline makes a (service-)request for 'home monitoring' in the EHR. The diagnosis heart failure is linked to the request for context. Caroline clicks on the 'share request'-button to enroll Patrick.

Search for multidisciplinary careplan

A pop-up window appears. In this window, an existing multidisciplinary CarePlan could be selected from a dropdown menu. However, for Patrick there are no known Careplans, therefore Caroline can only pick 'create new Careplan' from the dropdown menu.

In the background, the MSC receives the request and determines if there are enough resources available to execute the request. As Patrick (his Dutch-citizen-id) is unknown to the MSC, the MSC responds with a questionnaire. If the MSC wouldn't be able to execute te request, it would be rejected here.

(Auto)fill criteria

The pop-up window now displays questions to determine if the patient is eligible for telemonitoring treatment at MSC. Caroline checks with Patrick if: he has a smartphone, he reads email from his smartphone, he can install apps on his smartphone, he is proficient in Dutch language and that he is in possession of scales and a blood pressure meter. Caroline submits the answers.

In the background, the MSC checks the answers and accepts the Task. If Patrick wouldn't be eligible for telemonitoring at the MSC, the request would be rejected here. However, the MSC wants to send out an activation-email to Patrick. This is not possible without email-address. The MSC sends a new questionnaire to get the contact details.

Contact information (PII)

The pop-up window now displays questions for basic contact information on patient Patrick and cardiologist Caroline (e.g. name, telephone number and email address). This information has been auto-populated from the EHR. Caroline just has to check and submit.

In the background, the MSC checks the answers for completeness. The MSC updates the Task-status to 'in-progress' and automatically sends the patient an invite for a monitoring app.

Request accepted

The pop-up windows now responds that the MSC has started working on the request. The telemonitoring request has been successfully assigned.

Identification

Patients, healthcare organizations and healthcare professionals are identified using nationwide logical identifiers that are specific to the Netherlands.

  • Patients are identified using the identfier BSN ("BurgerServiceNummer");
  • Healthcare Organizations are identified using the identfiier URA ("UZI-Register Abonneenummer");
  • Healthcare professionals are preferably identified using the national identifier UZI ("Unieke Zorgverlener Identificatienummer"). For various reasons, the identifier UZI is not always available for all healthcare professionals. In these cases, healthcare professionals are identified using a local identifier (local employee number).

Authentication

According to Authentication, healthcare organizations and healthcare professionals are authenticated using Organization Credentials and PractitionerRole Credentials.

  • The Organization Credential is implemented using the NutsUraCredential
  • The PractitionerRole professionals is implemented using the NutsEmployeeCredential

NutsUraCredential

The NutsUraCredential (JSON-LD context) is a Verifiable Credential that contains the following properties:

  • URA number: a unique identifier for healthcare organizations in the Netherlands.
  • Name: the name of the organization.
  • City: locality of the organization.

The credential is to be issued by a party trusted in the particular SCP use case, as currently, there's no governing body that issues it. It can be represented in both JWT and JSON-LD format. The JSON-LD version of the credential can look as follows:

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://nuts.nl/credentials/2024"
  ],
  "id": "did:web:ministryofhealth.example.com:issuer#1",
  "type": ["VerifiableCredential", "NutsUraCredential"],
  "issuer": "did:web:example.com:issuer#1",
  "issuanceDate": "2024-01-01T00:00:00Z",
  "expirationDate": "2025-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:web:hospital.example.com:holder#1",
    "organization": {
      "ura": "3732",
      "name": "Example Hospital",
      "city": "Amsterdam"
    }
  }
}

This then translates to the following Organization resource:

{
  "resourceType": "Organization",
  "identifier": [
    {
      "system": "http://fhir.nl/fhir/NamingSystem/ura",
      "value": "3732"
    }
  ],
  "name": "Example Hospital",
  "address": [
    {
      "city": "Amsterdam"
    }
  ]
}

This Organization resource can then be used for authorizing access to SCP services.

NutsEmployeeCredential

The NutsEmployeeCredential is specified in this RFC.

Transactions

Preparation: did and VCs

Get the access_tokens

Preparation: populating existing data at Hospital X and MedicalServiceCentre

Hospital XMedicalServiceCentreCarolinevan DijkCare Plan ContributorCare Plan ServiceCare Plan ContributorTask managerPatrickEggerCarolinevan DijkCare Plan ContributorCare Plan ServiceCare Plan ContributorTask managerPatrickEgger1Start Requestreferral2Find/select CarePlan3Create Taskreferring Request,Condition and CarePlan(if any)4Update CareTeam, CarePlanand Subscriptions5Notify CareTeam, CarePlan6Notify Task created7Notify Task created20evaluate Task(required data,capacity, etc)21Need more information22Create (sub-)Task2: doQuestionnaire 'enrollment criteria'23Notify Task2 created24Present Questionnaire(prefill data from EHR)25CompleteQuestionnaireResponse26Update Task2: AddQuestionnaireResponse27Notify Task2 update28Notify Task2 update40evaluate Task:status 'accepted',check required data41Task accepted,but need contactdetails to start42Task accepted &Create (sub-)Task3: doQuestionnaire 'contact details'43Update CareTeam, CarePlan44Notify Task acceptedTask3 createdCareTeam updatedCarePlan updated45Notify CareTeam updatedCarePlan updated46Your order is accepted,Present Questionnaire(prefill data from EHR)47CompleteQuestionnaireResponse48Update Task3: AddQuestionnaireResponse(s)49Notify Task3 update50Notify Task3 update60evaluate Task:status 'in-progress'61Update Task:status 'in-progress'62Notify Task update63Notify Task update64Done!Your order is in-progress65send activation email

Step 2: Hospital X: Find existing 'Shared' CarePlan for Patient

Step 3: Hospital X: Create Task assumption no CarePlan was found (so no Task.basedOn), create a Bundle with a new Task and a copy of the referred ServiceRequest and Condition:

Step 4: CarePlanService: Create subscriptions, careplan, careteam and notifications

Step 5: CarePlanService: notify hospital X

Step 6: CarePlanService: notify medicalservicecentre

Step 20: MedicalServiceCentre: Get Task, Create sub-Task with Questionnaire (enrollment criteria)

get the Task and referenced data

Step 22: post bundle with new (sub-) task that contains a questionnaire

Step 23: CarePlanService: notify hospital X

Step 24: Hospital X: Get sub-task, Update sub-Task with QuestionnaireResponse (enrollment criteria) get sub-task and questionnaire

Step 26: fill in QuestionnaireResponse and update the (sub-)Task

Step 27: CarePlanService: notify medicalservicecentre

Step 42: MedicalServiceCentre: Task accepted & Create sub-Task with Questionnaire (patient/practitioner details)

post bundle with new (sub-) task that contains a questionnaire

Step 43: CarePlanService: update CarePlan/CareTeam, notify hospital X and medicalservicecentre

Step 44:

Step 45:

Step 48: Hospital X: Update sub-Task with QuestionnaireResponse (patient/practitioner details) get sub-task and questionnaire

fill in QuestionnaireResponse and update the (sub-)Task

Step 49: CarePlanService: notify medicalservicecentre