Da Vinci Health Record Exchange (HRex)
1.2.0-cibuild - STU 1.1

Da Vinci Health Record Exchange (HRex), published by HL7 International / Clinical Interoperability Council. This guide is not an authorized publication; it is the continuous build for version 1.2.0-cibuild built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/davinci-ehrx/ and changes regularly. See the Directory of published versions

## Resource Profile: HRex Provenance Profile

Official URL: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance | Version: 1.2.0-cibuild
Standards status: Trial-use | Maturity Level: 3 | Computable Name: HRexProvenance
Other Identifiers: OID:2.16.840.1.113883.4.642.40.19.42.14

Additional constraints on US Core Provenance to ensure it meets payer needs, including indicating when the event occurred and retaining signatures if present

Provenance is essential when sharing information in the payer space because any given record might have passed through multiple hands before it arrives at a payer. Provenance provides traceability as to where the data originated and helps in the evaluation of the information as well as rationalizing duplicate data acquired through multiple sources. Da Vinci makes a couple of improvements to the US Core Provenance profile that will hopefully be migrated into that profile in the future:

- Capturing the time of the creation/update, not just the time the Provenance instance was created
- Ensuring that the Provenance target in fact resolves to a specific resource reference, not allowing only display or an identifier

In addition, in Da Vinci, signatures on Provenances must be retained if present.

Usage:

- Examples for this Resource Profile: Provenance/full and Provenance/min

### Formal Views of Profile Content

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

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  | 0..* | USCoreProvenance(7.0.0) | US Core Provenance This profile also complies with the profile US Core Provenance Profile (6.1.0) dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created ele-1: All FHIR elements must have a @value or children
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
target | S Σ | 1..* | Reference(Resource) | The Resource this Provenance record supports ele-1: All FHIR elements must have a @value or children
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL ele-1: All FHIR elements must have a @value or children
occurred[x] | S | 0..1 |  | When the activity occurred ele-1: All FHIR elements must have a @value or children
occurredPeriod |  |  | Period |
occurredDateTime |  |  | dateTime |
recorded | S Σ | 1..1 | instant | Timestamp when the activity was recorded / updated ele-1: All FHIR elements must have a @value or children
Slices for agent | S C | 1..* | BackboneElement | Actor involved Slice: Unordered, Open by pattern:type ele-1: All FHIR elements must have a @value or children provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device
agent:All Slices |  |  |  | Content/Rules for all slices
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 0..1 | CodeableConcept | How the agent participated Binding: USCoreProvenancePaticipantTypeCodes (7.0.0) (extensible) ele-1: All FHIR elements must have a @value or children
who | S Σ | 1..1 | Reference(US Core Organization Profile(7.0.0)) | Who participated ele-1: All FHIR elements must have a @value or children
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile(7.0.0)) | Who the agent is representing ele-1: All FHIR elements must have a @value or children
agent:ProvenanceAuthor | S | 0..* | BackboneElement | Actor involved ele-1: All FHIR elements must have a @value or children
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. ele-1: All FHIR elements must have a @value or children Required Pattern: At least the following
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/provenance-participant-type
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: author
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated ele-1: All FHIR elements must have a @value or children
agent:ProvenanceTransmitter | S | 0..* | BackboneElement | Actor involved ele-1: All FHIR elements must have a @value or children
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. ele-1: All FHIR elements must have a @value or children Required Pattern: At least the following
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: transmitter
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated ele-1: All FHIR elements must have a @value or children
signature | S | 0..* | Signature | Signature on target ele-1: All FHIR elements must have a @value or children
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet / Code | URI
Provenance.agent.type | extensible | USCoreProvenancePaticipantTypeCodes `http://hl7.org/fhir/us/core/ValueSet/us-core-provenance-participant-type|7.0.0`
Provenance.agent:ProvenanceAuthor.type | extensible | Pattern: author `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.type | extensible | Pattern: transmitter `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Provenance | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Provenance | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Provenance | If 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-5 | error | Provenance | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Provenance | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
provenance-1 | error | Provenance.agent | onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device : who.exists((resolve() is Practitioner) or (resolve() is Device)) implies onBehalfOf.exists() |

This structure is derived from USCoreProvenance

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  |  | USCoreProvenance(7.0.0) | This profile also complies with the profile US Core Provenance Profile (6.1.0)
target |  |  |  |
reference |  | 1..1 | string | Literal reference, Relative, internal or absolute URL
occurred[x] | S | 0..1 | Period, dateTime | When the activity occurred
signature | S | 0..* | Signature | Signature on target
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  | 0..* | USCoreProvenance(7.0.0) | US Core Provenance This profile also complies with the profile US Core Provenance Profile (6.1.0)
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
target | S Σ | 1..* | Reference(Resource) | The Resource this Provenance record supports
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
display | Σ | 0..1 | string | Text alternative for the resource
occurred[x] | S | 0..1 |  | When the activity occurred
occurredPeriod |  |  | Period |
occurredDateTime |  |  | dateTime |
recorded | S Σ | 1..1 | instant | Timestamp when the activity was recorded / updated
policy |  | 0..* | uri | Policy or plan the activity was defined by
location |  | 0..1 | Reference(Location) | Where the activity occurred, if relevant
reason |  | 0..* | CodeableConcept | Reason the activity is occurring Binding: PurposeOfUse (3.1.0) (extensible): The reason the activity took place.
activity |  | 0..1 | CodeableConcept | Activity that occurred Binding: ProvenanceActivityType (extensible): The activity that took place.
Slices for agent | S C | 1..* | BackboneElement | Actor involved Slice: Unordered, Open by pattern:type provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device
agent:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 0..1 | CodeableConcept | How the agent participated Binding: USCoreProvenancePaticipantTypeCodes (7.0.0) (extensible)
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | S Σ | 1..1 | Reference(US Core Organization Profile(7.0.0) S | US Core Practitioner Profile(7.0.0) | US Core Patient Profile(7.0.0) | US Core PractitionerRole Profile(7.0.0) | US Core RelatedPerson Profile(7.0.0) | Device) | Who participated
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile(7.0.0)) | Who the agent is representing
agent:ProvenanceAuthor | S | 0..* | BackboneElement | Actor involved
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/provenance-participant-type
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: author
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated
onBehalfOf |  | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing
agent:ProvenanceTransmitter | S | 0..* | BackboneElement | Actor involved
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: transmitter
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated
onBehalfOf |  | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing
entity |  | 0..* | BackboneElement | An entity used in this activity
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
role | Σ | 1..1 | code | derivation | revision | quotation | source | removal Binding: ProvenanceEntityRole (required): How an entity was used in an activity.
what | Σ | 1..1 | Reference(Resource) | Identity of entity
agent |  | 0..* | See agent (Provenance) | Entity is attributed to this agent
signature | S | 0..* | Signature | Signature on target
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet / Code | URI
Provenance.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` from the FHIR Standard
Additional Bindings | Purpose
AllLanguages | Max Binding
Provenance.target.type | extensible | ResourceType `http://hl7.org/fhir/ValueSet/resource-types` from the FHIR Standard
Provenance.reason | extensible | PurposeOfUse `http://terminology.hl7.org/ValueSet/v3-PurposeOfUse|3.1.0`
Provenance.activity | extensible | ProvenanceActivityType `http://hl7.org/fhir/ValueSet/provenance-activity-type` from the FHIR Standard
Provenance.agent.type | extensible | USCoreProvenancePaticipantTypeCodes `http://hl7.org/fhir/us/core/ValueSet/us-core-provenance-participant-type|7.0.0`
Provenance.agent.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.agent:ProvenanceAuthor.type | extensible | Pattern: author `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceAuthor.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.type | extensible | Pattern: transmitter `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.entity.role | required | ProvenanceEntityRole `http://hl7.org/fhir/ValueSet/provenance-entity-role|4.0.1` from the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Provenance | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Provenance | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Provenance | If 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-5 | error | Provenance | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Provenance | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
provenance-1 | error | Provenance.agent | onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device : who.exists((resolve() is Practitioner) or (resolve() is Device)) implies onBehalfOf.exists() |

This structure is derived from USCoreProvenance

Summary

Mandatory: 1 element
Must-Support: 2 elements

Maturity: 3

Key Elements View

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  | 0..* | USCoreProvenance(7.0.0) | US Core Provenance This profile also complies with the profile US Core Provenance Profile (6.1.0) dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created ele-1: All FHIR elements must have a @value or children
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
target | S Σ | 1..* | Reference(Resource) | The Resource this Provenance record supports ele-1: All FHIR elements must have a @value or children
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL ele-1: All FHIR elements must have a @value or children
occurred[x] | S | 0..1 |  | When the activity occurred ele-1: All FHIR elements must have a @value or children
occurredPeriod |  |  | Period |
occurredDateTime |  |  | dateTime |
recorded | S Σ | 1..1 | instant | Timestamp when the activity was recorded / updated ele-1: All FHIR elements must have a @value or children
Slices for agent | S C | 1..* | BackboneElement | Actor involved Slice: Unordered, Open by pattern:type ele-1: All FHIR elements must have a @value or children provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device
agent:All Slices |  |  |  | Content/Rules for all slices
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 0..1 | CodeableConcept | How the agent participated Binding: USCoreProvenancePaticipantTypeCodes (7.0.0) (extensible) ele-1: All FHIR elements must have a @value or children
who | S Σ | 1..1 | Reference(US Core Organization Profile(7.0.0)) | Who participated ele-1: All FHIR elements must have a @value or children
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile(7.0.0)) | Who the agent is representing ele-1: All FHIR elements must have a @value or children
agent:ProvenanceAuthor | S | 0..* | BackboneElement | Actor involved ele-1: All FHIR elements must have a @value or children
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. ele-1: All FHIR elements must have a @value or children Required Pattern: At least the following
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/provenance-participant-type
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: author
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated ele-1: All FHIR elements must have a @value or children
agent:ProvenanceTransmitter | S | 0..* | BackboneElement | Actor involved ele-1: All FHIR elements must have a @value or children
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. ele-1: All FHIR elements must have a @value or children Required Pattern: At least the following
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: transmitter
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated ele-1: All FHIR elements must have a @value or children
signature | S | 0..* | Signature | Signature on target ele-1: All FHIR elements must have a @value or children
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet / Code | URI
Provenance.agent.type | extensible | USCoreProvenancePaticipantTypeCodes `http://hl7.org/fhir/us/core/ValueSet/us-core-provenance-participant-type|7.0.0`
Provenance.agent:ProvenanceAuthor.type | extensible | Pattern: author `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.type | extensible | Pattern: transmitter `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Provenance | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Provenance | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Provenance | If 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-5 | error | Provenance | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Provenance | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
provenance-1 | error | Provenance.agent | onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device : who.exists((resolve() is Practitioner) or (resolve() is Device)) implies onBehalfOf.exists() |

Differential View

This structure is derived from USCoreProvenance

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  |  | USCoreProvenance(7.0.0) | This profile also complies with the profile US Core Provenance Profile (6.1.0)
target |  |  |  |
reference |  | 1..1 | string | Literal reference, Relative, internal or absolute URL
occurred[x] | S | 0..1 | Period, dateTime | When the activity occurred
signature | S | 0..* | Signature | Signature on target
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Provenance |  | 0..* | USCoreProvenance(7.0.0) | US Core Provenance This profile also complies with the profile US Core Provenance Profile (6.1.0)
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
target | S Σ | 1..* | Reference(Resource) | The Resource this Provenance record supports
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
display | Σ | 0..1 | string | Text alternative for the resource
occurred[x] | S | 0..1 |  | When the activity occurred
occurredPeriod |  |  | Period |
occurredDateTime |  |  | dateTime |
recorded | S Σ | 1..1 | instant | Timestamp when the activity was recorded / updated
policy |  | 0..* | uri | Policy or plan the activity was defined by
location |  | 0..1 | Reference(Location) | Where the activity occurred, if relevant
reason |  | 0..* | CodeableConcept | Reason the activity is occurring Binding: PurposeOfUse (3.1.0) (extensible): The reason the activity took place.
activity |  | 0..1 | CodeableConcept | Activity that occurred Binding: ProvenanceActivityType (extensible): The activity that took place.
Slices for agent | S C | 1..* | BackboneElement | Actor involved Slice: Unordered, Open by pattern:type provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device
agent:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 0..1 | CodeableConcept | How the agent participated Binding: USCoreProvenancePaticipantTypeCodes (7.0.0) (extensible)
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | S Σ | 1..1 | Reference(US Core Organization Profile(7.0.0) S | US Core Practitioner Profile(7.0.0) | US Core Patient Profile(7.0.0) | US Core PractitionerRole Profile(7.0.0) | US Core RelatedPerson Profile(7.0.0) | Device) | Who participated
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile(7.0.0)) | Who the agent is representing
agent:ProvenanceAuthor | S | 0..* | BackboneElement | Actor involved
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/provenance-participant-type
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: author
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated
onBehalfOf |  | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing
agent:ProvenanceTransmitter | S | 0..* | BackboneElement | Actor involved
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | S Σ | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible): The type of participation that a provenance agent played with respect to the activity. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: transmitter
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
role |  | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example): The role that a provenance agent played with respect to the activity.
who | Σ | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated
onBehalfOf |  | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing
entity |  | 0..* | BackboneElement | An entity used in this activity
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
role | Σ | 1..1 | code | derivation | revision | quotation | source | removal Binding: ProvenanceEntityRole (required): How an entity was used in an activity.
what | Σ | 1..1 | Reference(Resource) | Identity of entity
agent |  | 0..* | See agent (Provenance) | Entity is attributed to this agent
signature | S | 0..* | Signature | Signature on target
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet / Code | URI
Provenance.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` from the FHIR Standard
Additional Bindings | Purpose
AllLanguages | Max Binding
Provenance.target.type | extensible | ResourceType `http://hl7.org/fhir/ValueSet/resource-types` from the FHIR Standard
Provenance.reason | extensible | PurposeOfUse `http://terminology.hl7.org/ValueSet/v3-PurposeOfUse|3.1.0`
Provenance.activity | extensible | ProvenanceActivityType `http://hl7.org/fhir/ValueSet/provenance-activity-type` from the FHIR Standard
Provenance.agent.type | extensible | USCoreProvenancePaticipantTypeCodes `http://hl7.org/fhir/us/core/ValueSet/us-core-provenance-participant-type|7.0.0`
Provenance.agent.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.agent:ProvenanceAuthor.type | extensible | Pattern: author `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceAuthor.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.type | extensible | Pattern: transmitter `http://hl7.org/fhir/ValueSet/provenance-agent-type` from the FHIR Standard
Provenance.agent:ProvenanceTransmitter.role | example | SecurityRoleType `http://hl7.org/fhir/ValueSet/security-role-type` from the FHIR Standard
Provenance.entity.role | required | ProvenanceEntityRole `http://hl7.org/fhir/ValueSet/provenance-entity-role|4.0.1` from the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Provenance | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Provenance | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Provenance | If 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-5 | error | Provenance | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Provenance | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
provenance-1 | error | Provenance.agent | onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device : who.exists((resolve() is Practitioner) or (resolve() is Device)) implies onBehalfOf.exists() |

This structure is derived from USCoreProvenance

Summary

Mandatory: 1 element
Must-Support: 2 elements

Maturity: 3

Other representations of profile: CSV, Excel, Schematron

### Notes:

The following guidance applies to the use of Providence across Da Vinci IGs. IGs can impose additional expectations with respect to the use of Provenance either across their whole use-case or in the context of specific events.

### Searching

There is no expectation for support for querying Provenance except using `_revinclude` using the 'target' parameter (to return Provenance instances associated with a returned resource).

### Aligning Provenance and Resource elements

Provenance should align with information present in the record. Where a Provenance deals with the creation of an instance, the author, performer and (if present) informer should align with the equivalent elements on the record. Similarly, `Provenance.occurred` should align with the creation date for the record.

### Populating `Provenance.agent`

## The following table lists the various agent codes and what resource types are appropriate. These recommendations SHOULD be followed

| transmitter | This could be Patient, RelatedPerson, Practitioner or PractitionerRole or Organization. A second transmitter could capture the specific Device used | | enterer | Patient, RelatedPerson, Practitioner or PractitionerRole | | performer | could be anything | | author | could be anything | | verifier | generally only Practitioner or PractitionerRole | | legal | Only Practitioner or PractitionerRole | | attester | Patient, RelatedPerson, Practitioner or PractitionerRole | | informant | Patient, RelatedPerson, Practitioner or PractitionerRole | | custodian | usually Organization, could also be Device, Practitioner or PractitionerRole | | assembler | usually a Device, could be Practitioner or PractitionerRole | ——————————————

### Handling agents with multiple roles

In general, the most important role to capture is "author". If they are the only role present, the presumption is that they are also the enterer, performer, verifier, legal, attester, informant, etc. Specifying other roles is only necessary if they differ from the author. Not all systems will necessarily track all participants. Roles other than author only need to be shared if the system captures them and feels they might be relevant to downstream use of the information.

### Populating `onBehalfOf`

`Provenance.agent.onBehalfOf` is only relevant in certain circumstances:

- `onBehalfOf` SHOULD NOT be populated if RelatedPerson is acting on behalf of the Patient. (Because that is the assumption and there is already a link to the Patient on that resource)
- `onBehalfOf` SHOULD NOT be populated with an Organization if the agent is Practitioner - use PractitionerRole instead (even if it is a contained PractitionerRole)
- `onBehalfOf` SHOULD NOT be populated with an Organization if the agent is PractitionerRole unless PractitionerRole is pointing to an organization and the `onBehalfOf` is different (i.e. Dr. Smith for Clinic A did something on behalf of clinic B)
- It is unusual for `onBehalfOf` to be populated if the agent is Patient or RelatedPerson
- `onBehalfOf` SHOULD NOT be populated with an Organization if it is the same as `Device.owner`