eHealth Infrastructure (v2020.7)

StructureDefinition: ehealth-plandefinition

Introduction

This resource allows for the definition of various types of plans as a sharable, consumable, and executable artifact. The resource is general enough to support the description of a broad range of clinical artifacts such as clinical decision support rules, order sets and protocols.

Scope and Usage

In scope of the eHealth infrastructure, PlanDefinitions are used for defining tele-medicine plans. A PlanDefinition is comprised by potentially a number of subplans (each also represented as a PlanDefinition), and a number of activities each represented by an ActivityDefinition instance. These in turn can specify an activity to be performed, for instance measuring of a measure or answering of a Questionnaire.

Once a PlanDefinition and all the PlanDefinition, ActivityDefinition, and Questionnaire instances comprising it has a status set to other than draft, it can be itself be set to active. With that status it can be used as a template for applying it into a CarePlan bound to a specific Patient. The CarePlan then references the PlanDefinition as its definition.

Governance principles

PlanDefinitions (subplans), Questionnaires and ActivityDefinitions can be modified independently. Often by people in different organisations. PlanDefinitions (subplans), Questionnaires and ActivityDefinitions, can all be reused in different top level PlanDefinitions.

The following principles ensures that the owner of a resource can make controlled updates when resources maintained by other organisations are updated.

These principles are valid for PlanDefinitions, ActivityDefinitions, and Questionnaires. Plan is used as an example in the following principles:

  • Each plan has a version and a status
  • While a plan version is being worked on it should be in status: draft
  • When a plan version is approved it changes status to active and is now ready to be used by CarePlans or as a subplan in another plan.
  • A plan with status: active can be retired, but cannot otherwise change. Status retired means that new references to the plan cannot be created. Existing plans may still continue to use the retired version.
  • If a plan needs to be updated, a new version must be created with status: draft. The new version will be a separate resource with a new id and version, but the same name as the previous version.
  • References to plans in FHIR are always to a specific resource id. In practice this means that a reference will identify a specific (Name, Version) combination.
  • If a subplan is available in a new active version, that the parent plan wants to use, then a new version of the parent plan must be created and then the reference can be updated to the new subplan.

Example: A new ActivityDefinition should be added to an existing PlanDefinition.

  1. Read the existing PlanDefinition (Version: 1)
  2. Bump the version to 2, change the status to draft, remove the id.
  3. Add a reference to the new ActivityDefinition in action.definition
  4. Call Create with the modified plan. This will create a new version of the plan in the database with the new ActivityDefinition added.

Update restrictions

The element ehealth-modifier-role specifies one or more Organization and each Organization’s role in maintaining the PlanDefinition:

  • ehealth-modifier-role.reference references the Organization
  • ehealth-modifier-role.role set to owner means that the referenced Organization can update the resource and alter the entities referenced by ehealth-modifier-role, for instance, by adding more co-authors.
  • ehealth-modifier-role.role set to co-author means that the referenced Organization can update the resource but not alter the element ehealth-modifier-role.

Referencing information material

PlanDefinitions can reference information material intended for Practitioner, Patient or RelatedPerson. The material can be in the form of embedded material (of reasonable size) or referenced videos, PDF-files or printed material. Information material is contained or referenced using a DocumentReference resource and referenced from the PlanDefinition using the relatedArtifact element.

Formal Views of Profile Content

The official URL for this profile is:

http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-plandefinition

This profile builds on PlanDefinition.

This profile was published on Tue Oct 27 14:11:48 UTC 2020 as a draft by ehealth.sundhed.dk.

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

 

Terminology Bindings

PathConformanceValueSet
PlanDefinition.languageextensibleCommon Languages
Max Binding: All Languages
PlanDefinition.typeextensiblePlanDefinitionType
PlanDefinition.statusrequiredPublicationStatus
PlanDefinition.jurisdictionextensibleJurisdiction
PlanDefinition.topicexampleTopicType
PlanDefinition.goal.categoryexampleGoalCategory
PlanDefinition.goal.descriptionexampleSNOMED CT Clinical Findings
PlanDefinition.goal.prioritypreferredGoalPriority
PlanDefinition.goal.startexampleGoalStartEvent
PlanDefinition.goal.addressesexampleCondition/Problem/Diagnosis Codes
PlanDefinition.goal.target.measureexampleLOINC Codes
PlanDefinition.action.condition.kindrequiredActionConditionKind
PlanDefinition.action.relatedAction.relationshiprequiredActionRelationshipType
PlanDefinition.action.participant.typerequiredActionParticipantType
PlanDefinition.action.participant.roleexampleActionParticipantRole
PlanDefinition.action.typerequiredActionType
PlanDefinition.action.groupingBehaviorrequiredActionGroupingBehavior
PlanDefinition.action.selectionBehaviorrequiredActionSelectionBehavior
PlanDefinition.action.requiredBehaviorrequiredActionRequiredBehavior
PlanDefinition.action.precheckBehaviorrequiredActionPrecheckBehavior
PlanDefinition.action.cardinalityBehaviorrequiredActionCardinalityBehavior

Constraints

IdPathDetailsRequirements
dom-2PlanDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1PlanDefinitionIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4PlanDefinitionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-3PlanDefinitionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource
: contained.where(('#'+id in %resource.descendants().reference).not()).empty()
ele-1PlanDefinition.extension:recommendationAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1PlanDefinition.extension:recommendationMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PlanDefinition.extension:intendedAudienceAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1PlanDefinition.extension:intendedAudienceMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PlanDefinition.extension:modifierRoleAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1PlanDefinition.extension:modifierRoleMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PlanDefinition.goalAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.goal.targetAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.actionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.action.extension:overviewUsageModeAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1PlanDefinition.action.extension:overviewUsageModeMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PlanDefinition.action.conditionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.action.relatedActionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.action.participantAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1PlanDefinition.action.dynamicValueAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
.