eHealth Infrastructure (v2020.7)

StructureDefinition: ehealth-library

Introduction

The Library resource is a general-purpose container for knowledge asset definitions. It can be used to describe and expose existing knowledge assets such as logic libraries and information model descriptions, as well as to describe a collection of knowledge assets.

Scope and Usage

In scope of the eHealth Infrastructure, the Library resource is used for:

  • specifying clinical decision rules
    • used for calculating situational context
    • used for calculating operational context
    • used for evaluating measurements and triaging based on this evaluation
  • specifying input and output parameters for clinical decision rules

Defining clinical decision rules

The clinical decision rules are defined as JBoss Drools rules and are stored in the content structure as a base64 encoded string. When defining the rule it is important that the rule package is set to “rules”.

Input and output parameters used by the rule should be defined in the parameters structure with the use element set to the appropriate type of parameter. Only one output type should be defined. In the rule logic the output parameter should be defined as a global variable with the name “result”.

It is important that the input and output parameters defined in the Library resource corresponds to the input and output parameters defined in the clinical decision rule logic. The eHealth infrastructure wont be able to execute a rule if any inconsistency exists.

When defining a rule to be used for evaluation of Observation resources, it is possible to specify that historical Observation resources with the same ProcedureRequest reference should be used as input to the rule. This is done using the dataRequirement structure where the dateFilter.valueDuration is set. Observation resources where the effective element is overlapping this duration is given as input to the rule.

Invoke clinical decision rules

The clinical decision rules used for calculating situational and operational context can be invoked using the evaluate operation on the specific Library resource. Evaluation of submitted measurements will be invoked automatic and asynchronous. The eHealth Infrastructure will create the relevant ClinicalImpression, Task and Communication resources based on the automatic evaluation of submitted measurements.

Use of Library resources at time of decision support rules invocation

The decision support rule Library can be associated with a CarePlan / ProcedureRequest through their references to PlanDefinition / ActivityDefinition resources. When a measurement is submitted in scope of a CarePlan, the answer values in a submitted QuestionnaireResponse can be found and passed in as parameters to the decision support rule as specified by the Library resources.

Formal Views of Profile Content

The official URL for this profile is:

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

This profile builds on Library.

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
Library.languageextensibleCommon Languages
Max Binding: All Languages
Library.statusrequiredPublicationStatus
Library.typerequiredLibraryType
Library.jurisdictionextensibleJurisdiction
Library.topicexampleDefinitionTopic

Constraints

IdPathDetailsRequirements
dom-2LibraryIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1LibraryIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4LibraryIf 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-3LibraryIf 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-1Library.extension:intendedAudienceAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Library.extension:intendedAudienceMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Library.extension:revisionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Library.extension:revisionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Library.extension:modifierRoleAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Library.extension:modifierRoleMust have either extensions or value[x], not both
: extension.exists() != value.exists()
.