Multitenancy

The eHealth infrastructure is a multitenancy solutions where data is or can be shared between Telemedicine solutions. This page describes the mechanism for Telemedicine Solutions to tag information and search for these tags to separate owned by a single Telemedicine Solution.

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

The coexistence described here constitutes the interim solution. A more complete solution also catering for compatibility between telemedicine solutions is yet to be established.

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

  • is assigned a coexistence tag

  • performs markup with the coexistence tag when creating resources

  • decides when to use the coexistence tag in searches

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

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

In Release 12, there is no automatic carrying of coexistence tag for:

  • creation of Goal

  • solution-initiated creation of ClinicalImpression and Task

  • creation of Communication (ehealth-communication)

A workaround is for solutions to perform mark up with their coexistence tag in these cases.

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://docs.ehealth.sundhed.dk/latest-released/ig/CodeSystem-ehealth-system.html and has the following characteristics:

  • it is short

  • it does not indicate whether used for a solution or 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. Contact the eHealth Infrastructure system administration to obtain a value.

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 either 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 tag(s) are used. The searches does 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 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

      • 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

    • reminder about upcoming measurements to the Patient

      • 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

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

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

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

  • On $apply ()

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

  • On $submit-measurement ()

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

  • On creation of:

    • DeviceUseStatement

      • coexistence tag from CarePlan is carried to DeviceUseStatement