Multitenancy

Multitenancy

The eHealth infrastructure is a multitenancy solution allowing data sharing between Telemedicine solutions, but also mark data as belonging to a specific solution. This page describes the mechanism for Telemedicine Solutions to tag information and search for these tags to separate those owned by a single Telemedicine Solution.

Content

Introduction

The eHealth Infrastructure provides a mechanism for solutions to coexist despite not being aligned on all processes and resources used. Coexistence (in Danish: Sameksistens) is a softened form of multitenancy in which the solutions choose when to search generically or specifically.

Coexistence is a form of multitenancy where solutions choose when to search generically or specifically.

Concept

The general idea is that each solution or solution complex (a solution complex could consist of a citizen solution and an employee solution):

  • Coexistence Tag: Assigned to each solution or group of solutions (e.g. employee and citizen).

  • Markup: Solution (and the Infrastructure) marks up Resources with the coexistence tag when created.

  • Search: Solutions decide when to use the coexistence tag in searches.

The eHealth Infrastructure carries the coexistence tag on automatically created resources and, as a convenience, where applicable. This enables certain searches with coexistence tags and helps minimise the burden of marking up resources.

Resource Types to Mark Up with Coexistence Tag

Resource Types to Conditionally Mark Up with Coexistence Tag

Resource Types Automatically Marked Up with Coexistence Tag

Resource Types Not to Mark Up with Coexistence Tag

Resource Types to Mark Up with Coexistence Tag

Resource Types to Conditionally Mark Up with Coexistence Tag

Resource Types Automatically Marked Up with Coexistence Tag

Resource Types Not to Mark Up with Coexistence Tag

EpisodeOfCare

Appointment

CarePlan, ServiceRequest

ValueSet, CodeSystem, NamingSystem, ConceptMap

 

Communication (ehealth-message)

Observation, QuestionnaireResponse, Media

Organization, CareTeam, Practitioner, PractitionerRole

 

Consent, Provenance

Goal

PlanDefintition, ActivityDefinition, DocumentReference

 

Device, DeviceMetric

Communication (ehealth-communication) for annotations

Library

 

 

ClinicalImpression, Task

Questionnaire, View, ActionGuidance

 

 

DeviceUseStatement

Patient, RelatedPerson

Acquiring a coexistence tag

Contact the eHealth Infrastructure system administration (aka FUT-S, see contact details on https://fut-portal.rm.dk/display/FSD/Kontaktoplysninger).

A coexistence tag is defined in https://ehealth.sundhed.dk/fhir/CodeSystem-ehealth-system.html and has the following characteristics:

  • It is short

  • It does not indicate whether it is used for a solution or a solution complex

  • It carries no value indicating the solution/solution complex’s product name, vendor or version

Acquiring a source URI

The source URI identifies which solution created a given resource. To obtain a value, contact the eHealth Infrastructure system administration.

While not being defined as a concept in a CodeSystem, it follows the pattern urn:dk:ehealth:<value>, where <value>:

  • is short

  • does not indicate the solution/solution complex’s product name, vendor or version

Marking up resources with a coexistence tag

When creating a FHIR resource, add your coexistence tag to the FHIR resource element meta.tag. The tag element is a Coding, so a coexistence tag value must be added as:

  • .meta.tag.code = <tag value>

  • .meta.tag.system = http://ehealth.sundhed.dk/cs/ehealth-system

At the same time, add the source URI to:

  • .meta.source = urn:dk:ehealth:<value>

Deciding on conditional markup with a coexistence tag

As apparent from the table above, there are resources where markup with a coexistence tag is conditional. In general, if any of these resources are referencing a coexistence-tagged resource, the tag should be copied (carried) by the client/solution system.

Otherwise, it is at the discretion of the client/solution system to determine when the resource should be tagged and thereby possibly searchable by coexistence tag.

Deciding when to search with coexistence tag(s)

In general, it is at the discretion of the client/solution system to determine when to perform searches with or without coexistence tag(s).

The example searches in the following show how coexistence tags are used. The searches do not necessarily constitute valid or complete searches; that is, additional search parameters may be required.

For instance, searching for EpisodeOfCare resources created for one’s system with the coexistence tag value xa:

GET <base url>/fhir/EpisodeOfCare/?subject=<some Patient reference>&_tag=http://ehealth.sundhed.dk/cs/ehealth-system|xa

Multiple coexistence tags can be added and separated with a comma:

GET <base url>/fhir/EpisodeOfCare/?subject=<some Patient reference>&_tag=http://ehealth.sundhed.dk/cs/ehealth-system|xa,http://ehealth.sundhed.dk/cs/ehealth-system|xb

When the Infrastructure carries coexistence tags

The eHealth Infrastructure performs the following copying (carrying) of coexistence tags:

  • In automated processing in the eHealth infrastructure

    • rule execution

      • The coexistence tag from EpisodeOfCare/CarePlan/ServiceRequest is carried to rule-controlled creation of ClinicalImpression and/or Task and/or ehealth-message profile Communication

    • Missing measurements check

      • coexistence tag from EpisodeOfCare/CarePlan/ServiceRequest is carried to ehealth-message Communication about measurements missing

    • A reminder about upcoming measurements to the Patient

      • The coexistence tag from EpisodeOfCare/CarePlan/ServiceRequest is carried to ehealth-message Communication about the reminder

    • scheduled changes in EpisodeOfCare/CarePlan status and/or list of associated CareTeam

      • The coexistence tag from EpisodeOfCare/CarePlan/ServiceRequest is carried to ehealth-message Communication about the change

  • On $create-episode-of-care (https://ehealth.sundhed.dk/fhir/OperationDefinition--s-create-episode-of-care.html )

    • coexistence tag from EpisodeOfCare is carried to ehealth-message Communication about the creation

  • On $apply (https://ehealth.sundhed.dk/fhir/OperationDefinition-PlanDefinition-i-apply.html )

    • coexistence tag from EpisodeOfCare is carried to ehealth-message Communication, CarePlan, and ServiceRequest

  • On $submit-measurement (https://ehealth.sundhed.dk/fhir/OperationDefinition--s-submit-measurement.html )

    • coexistence tag from ServiceRequest is carried to Observation, QuestionnaireResponse, Media and Provenance

  • On creation of:

    • DeviceUseStatement

      • The coexistence tag from CarePlan is carried to DeviceUseStatement