eHealth Infrastructure (v2019.5.3)

StructureDefinition: ehealth-provenance

Introduction

Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.

Scope and Usage

In scope of the eHealth Infrastructure, Provenance resources are used for a number of different purposes. Some of these purposes are purely internal to the infrastructure, whereas others are of relevance to clients of the infrastructure.

The details of different usages of Provenance resources relevant to clients are described together with the resources and operations they are supporting. In overview this is:

Reuse of Observations and QuestionnaireResponses

When a client submits measurements in the form of Observation, QuestionnaireResponse and/or Media, the client can submit one or more of these as reused resources, provided that reuse requirements have been met. For each resource where data is reused, the client must construct a Provenance that:

  • identifies the resource containing reused data through the target of Provenance
  • identifies the resource from where data was reused
  • identifies a policy which states reuse

Each such Provenance must be submitted along with the resources containing reused data.

See eHealth-observation for further details.

Tracking measurements submitted in the same bundle

Provenance resources are created internally by the eHealth infrastructure to link correlated resources which are submitted together in one bundle:

See eHealth-observation for further details.

Provenance resources are submitted by a client for creation when an eHealth-episodeofcare is created using the create-episode-of-caren operation.

Some of these provenance resources hold information about which legal frame the EpisodeOfCare is created under. This could be for instance the health law (in Danish: “Sundhedsloven”) or other relevant legal frameworks.

Other of these provenance resource define which data privacy regulations are applicable to data concerning patient, practitioners, and suppliers under the episode of care.

See create-episode-of-care for further details.

Controlling Message states

State related to Message resources, such as whether a message has been read or not, or time limited validity on notifications, is also handled through the use of Provenance resources.

See eHealth-message for further details.

Formal Views of Profile Content

The official URL for this profile is:

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

This profile builds on Provenance.

This profile was published on Fri Jun 07 11:10:06 UTC 2019 as a draft by ehealth.sundhed.dk.

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

This structure is derived from Provenance

Summary

Mandatory: 1 element

Structures

This structure refers to these other structures:

This structure is derived from Provenance

NameFlagsCard.TypeDescription & Constraintsdoco
.. Provenance I0..*Who, What, When for a set of resources
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible)
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... target Σ1..*Reference(Resource) {r}Target Reference(s) (usually version specific)
... period 0..1PeriodWhen the activity occurred
... recorded Σ1..1instantWhen the activity was recorded / updated
... policy 1..*uriPolicy or plan the activity was defined by
Binding: Policies for provenances (required)
... location 0..1Reference(Location) {r}Where the activity occurred, if relevant
... reason 0..*CodingReason the activity is occurring
Binding: PurposeOfUse (extensible)
... activity 0..1CodingActivity that occurred
Binding: ProvenanceActivityType (extensible)
... agent I1..*BackboneElementActor involved
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... role Σ0..*CodeableConceptWhat the agents role was
Binding: SecurityRoleType (extensible)
.... who[x] Σ1..1uri, Reference(eHealth Practitioner | eHealth RelatedPerson | eHealth Patient | eHealth Device | eHealth Organization)Who participated
.... onBehalfOf[x] 0..1uri, Reference(eHealth Practitioner | eHealth RelatedPerson | eHealth Patient | eHealth Device | eHealth Organization)Who the agent is representing
.... relatedAgentType 0..1CodeableConceptType of relationship between agents
Binding: RoleLinkType (example)
... entity I0..*BackboneElementAn entity used in this activity
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... role Σ1..1codederivation | revision | quotation | source | removal
Binding: ProvenanceEntityRole (required)
.... what[x] Σ1..1uri, Reference(Resource), IdentifierIdentity of entity
.... agent 0..*Unknown reference to #Provenance.agent
Entity is attributed to this agent
... signature 0..*SignatureSignature on target

doco Documentation for this format

This structure is derived from Provenance

Summary

Mandatory: 1 element

Structures

This structure refers to these other structures:

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Provenance I0..*Who, What, When for a set of resources
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible)
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... target Σ1..*Reference(Resource) {r}Target Reference(s) (usually version specific)
... period 0..1PeriodWhen the activity occurred
... recorded Σ1..1instantWhen the activity was recorded / updated
... policy 1..*uriPolicy or plan the activity was defined by
Binding: Policies for provenances (required)
... location 0..1Reference(Location) {r}Where the activity occurred, if relevant
... reason 0..*CodingReason the activity is occurring
Binding: PurposeOfUse (extensible)
... activity 0..1CodingActivity that occurred
Binding: ProvenanceActivityType (extensible)
... agent I1..*BackboneElementActor involved
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... role Σ0..*CodeableConceptWhat the agents role was
Binding: SecurityRoleType (extensible)
.... who[x] Σ1..1uri, Reference(eHealth Practitioner | eHealth RelatedPerson | eHealth Patient | eHealth Device | eHealth Organization)Who participated
.... onBehalfOf[x] 0..1uri, Reference(eHealth Practitioner | eHealth RelatedPerson | eHealth Patient | eHealth Device | eHealth Organization)Who the agent is representing
.... relatedAgentType 0..1CodeableConceptType of relationship between agents
Binding: RoleLinkType (example)
... entity I0..*BackboneElementAn entity used in this activity
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... role Σ1..1codederivation | revision | quotation | source | removal
Binding: ProvenanceEntityRole (required)
.... what[x] Σ1..1uri, Reference(Resource), IdentifierIdentity of entity
.... agent 0..*Unknown reference to #Provenance.agent
Entity is attributed to this agent
... signature 0..*SignatureSignature on target

doco Documentation for this format

 

Terminology Bindings

PathNameConformanceValueSet
Provenance.languageCommon LanguagesextensibleCommon Languages
Provenance.policyPolicies for provenancesrequiredPolicies for provenances
Provenance.reasonPurposeOfUseextensiblePurposeOfUse
Provenance.activityProvenanceActivityTypeextensibleProvenanceActivityType
Provenance.agent.roleSecurityRoleTypeextensibleSecurityRoleType (missing link)
Provenance.agent.relatedAgentTypev3 Code System RoleLinkTypeexamplev3 Code System RoleLinkType
Provenance.entity.roleProvenanceEntityRolerequiredProvenanceEntityRole

Constraints

IdPathDetailsRequirements
dom-2ProvenanceIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1ProvenanceIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4ProvenanceIf 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-3ProvenanceIf 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-1Provenance.agentAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1Provenance.entityAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
.