This page is part of the Da Vinci Health Record Exchange (v0.2.0: STU1 Ballot 1) based on FHIR R4. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions
Additional constraints on US Core Provenance to ensure it meets payer needs, including indicating when the event occurred and retaining signatures if present
The official URL for this profile is:
http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance
Provenance is essential when sharing information in the payer space because any given record may 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:
In addition, in Da Vinci, signatures on Provenances must be retained if present.
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from USCoreProvenance
This structure is derived from USCoreProvenance
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Provenance | 0..* | USCoreProvenance | US Core Provenance | |
target | 1..* | Reference(Resource) | The Resource this Provenance record supports | |
reference | S | 1..1 | string | Literal reference, Relative, internal or absolute URL |
value | S | 1..1 | string | Primitive value for string |
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 | I | 0..* | USCoreProvenance | US Core Provenance |
id | Σ | 0..1 | string | Logical id of this artifact |
meta | ΣI | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!ΣI | 0..1 | uri | A set of rules under which this content was created |
language | I | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!I | 0..* | Extension | Extensions that cannot be ignored |
target | SΣI | 1..* | Reference(Resource) | The Resource this Provenance record supports |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |
reference | SΣI | 1..1 | string | Literal reference, Relative, internal or absolute URL |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | I | 0..* | Extension | Additional content defined by implementations |
value | S | 1..1 | string | Primitive value for string Max Length: 1048576 |
type | ΣI | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible) |
identifier | ΣI | 0..1 | Identifier | Logical reference, when literal reference is not known |
display | ΣI | 0..1 | string | Text alternative for the resource |
occurred[x] | SI | 0..1 | When the activity occurred | |
occurredPeriod | Period | |||
occurredDateTime | dateTime | |||
recorded | SΣI | 1..1 | instant | Timestamp when the activity was recorded / updated |
policy | I | 0..* | uri | Policy or plan the activity was defined by |
location | I | 0..1 | Reference(Location) | Where the activity occurred, if relevant |
reason | I | 0..* | CodeableConcept | Reason the activity is occurring Binding: PurposeOfUse (extensible) |
activity | I | 0..1 | CodeableConcept | Activity that occurred Binding: ProvenanceActivityType (extensible) |
agent | SI | 1..* | (Slice Definition) | Actor involved Slice: Unordered, Open by pattern:type |
agent:All Slices | Content/Rules for all slices | |||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 0..1 | CodeableConcept | How the agent participated Binding: US Core Provenance Participant Type Codes (extensible) |
role | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | SΣI | 1..1 | Reference(US Core Practitioner Profile | PractitionerRole | RelatedPerson | US Core Patient Profile | Device | US Core Organization Profile) | Who participated |
onBehalfOf | SI | 0..1 | Reference(US Core Organization Profile) | Who the agent is representing provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device |
agent:ProvenanceAuthor | SI | 0..* | BackboneElement | Actor involved |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | ΣI | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated |
onBehalfOf | I | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing |
agent:ProvenanceTransmitter | SI | 0..1 | BackboneElement | Actor involved |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | ΣI | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated |
onBehalfOf | I | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing |
entity | I | 0..* | BackboneElement | An entity used in this activity |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
role | ΣI | 1..1 | code | derivation | revision | quotation | source | removal Binding: ProvenanceEntityRole (required) |
what | ΣI | 1..1 | Reference(Resource) | Identity of entity |
agent | I | 0..* | See agent | Entity is attributed to this agent |
signature | SI | 0..* | Signature | Signature on target |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Provenance | I | 0..* | USCoreProvenance | US Core Provenance |
target | ΣI | 1..* | Reference(Resource) | The Resource this Provenance record supports |
reference | ΣI | 1..1 | string | Literal reference, Relative, internal or absolute URL |
value | 1..1 | string | Primitive value for string Max Length: 1048576 | |
occurred[x] | I | 0..1 | When the activity occurred | |
occurredPeriod | Period | |||
occurredDateTime | dateTime | |||
recorded | ΣI | 1..1 | instant | Timestamp when the activity was recorded / updated |
agent | I | 1..* | (Slice Definition) | Actor involved Slice: Unordered, Open by pattern:type |
agent:All Slices | Content/Rules for all slices | |||
type | ΣI | 0..1 | CodeableConcept | How the agent participated Binding: US Core Provenance Participant Type Codes (extensible) |
who | ΣI | 1..1 | Reference(US Core Practitioner Profile | PractitionerRole | RelatedPerson | US Core Patient Profile | Device | US Core Organization Profile) | Who participated |
onBehalfOf | I | 0..1 | Reference(US Core Organization Profile) | Who the agent is representing provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device |
agent:ProvenanceAuthor | I | 0..* | BackboneElement | Actor involved |
type | ΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | |
agent:ProvenanceTransmitter | I | 0..1 | BackboneElement | Actor involved |
type | ΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | |
signature | I | 0..* | Signature | Signature on target |
Documentation for this format |
This structure is derived from USCoreProvenance
Differential View
This structure is derived from USCoreProvenance
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Provenance | 0..* | USCoreProvenance | US Core Provenance | |
target | 1..* | Reference(Resource) | The Resource this Provenance record supports | |
reference | S | 1..1 | string | Literal reference, Relative, internal or absolute URL |
value | S | 1..1 | string | Primitive value for string |
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 | I | 0..* | USCoreProvenance | US Core Provenance |
id | Σ | 0..1 | string | Logical id of this artifact |
meta | ΣI | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!ΣI | 0..1 | uri | A set of rules under which this content was created |
language | I | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!I | 0..* | Extension | Extensions that cannot be ignored |
target | SΣI | 1..* | Reference(Resource) | The Resource this Provenance record supports |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |
reference | SΣI | 1..1 | string | Literal reference, Relative, internal or absolute URL |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | I | 0..* | Extension | Additional content defined by implementations |
value | S | 1..1 | string | Primitive value for string Max Length: 1048576 |
type | ΣI | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible) |
identifier | ΣI | 0..1 | Identifier | Logical reference, when literal reference is not known |
display | ΣI | 0..1 | string | Text alternative for the resource |
occurred[x] | SI | 0..1 | When the activity occurred | |
occurredPeriod | Period | |||
occurredDateTime | dateTime | |||
recorded | SΣI | 1..1 | instant | Timestamp when the activity was recorded / updated |
policy | I | 0..* | uri | Policy or plan the activity was defined by |
location | I | 0..1 | Reference(Location) | Where the activity occurred, if relevant |
reason | I | 0..* | CodeableConcept | Reason the activity is occurring Binding: PurposeOfUse (extensible) |
activity | I | 0..1 | CodeableConcept | Activity that occurred Binding: ProvenanceActivityType (extensible) |
agent | SI | 1..* | (Slice Definition) | Actor involved Slice: Unordered, Open by pattern:type |
agent:All Slices | Content/Rules for all slices | |||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 0..1 | CodeableConcept | How the agent participated Binding: US Core Provenance Participant Type Codes (extensible) |
role | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | SΣI | 1..1 | Reference(US Core Practitioner Profile | PractitionerRole | RelatedPerson | US Core Patient Profile | Device | US Core Organization Profile) | Who participated |
onBehalfOf | SI | 0..1 | Reference(US Core Organization Profile) | Who the agent is representing provenance-1: onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device |
agent:ProvenanceAuthor | SI | 0..* | BackboneElement | Actor involved |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | ΣI | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated |
onBehalfOf | I | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing |
agent:ProvenanceTransmitter | SI | 0..1 | BackboneElement | Actor involved |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
type | SΣI | 1..1 | CodeableConcept | How the agent participated Binding: ProvenanceParticipantType (extensible) 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 | I | 0..* | CodeableConcept | What the agents role was Binding: SecurityRoleType (example) |
who | ΣI | 1..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who participated |
onBehalfOf | I | 0..1 | Reference(Practitioner | PractitionerRole | RelatedPerson | Patient | Device | Organization) | Who the agent is representing |
entity | I | 0..* | BackboneElement | An entity used in this activity |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | I | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!ΣI | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
role | ΣI | 1..1 | code | derivation | revision | quotation | source | removal Binding: ProvenanceEntityRole (required) |
what | ΣI | 1..1 | Reference(Resource) | Identity of entity |
agent | I | 0..* | See agent | Entity is attributed to this agent |
signature | SI | 0..* | Signature | Signature on target |
Documentation for this format |
Other representations of profile: Schematron
Path | Conformance | ValueSet / Code |
Provenance.language | preferred | CommonLanguages Max Binding: AllLanguages |
Provenance.target.type | extensible | ResourceType |
Provenance.reason | extensible | PurposeOfUse |
Provenance.activity | extensible | ProvenanceActivityType |
Provenance.agent.type | extensible | USCoreProvenancePaticipantTypeCodes |
Provenance.agent.role | example | SecurityRoleType |
Provenance.agent:ProvenanceAuthor.type | extensible | Pattern: author |
Provenance.agent:ProvenanceAuthor.role | example | SecurityRoleType |
Provenance.agent:ProvenanceTransmitter.type | extensible | Pattern: transmitter |
Provenance.agent:ProvenanceTransmitter.role | example | SecurityRoleType |
Provenance.entity.role | required | ProvenanceEntityRole |
Id | Path | Details | Requirements |
dom-2 | Provenance | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | 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 | 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 | Provenance | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | Provenance | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | Provenance.meta | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.implicitRules | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.language | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.text | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.target | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.target.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.target.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.target.reference | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.target.reference.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.target.reference.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.target.type | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.target.identifier | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.target.display | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.occurred[x] | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.recorded | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.policy | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.location | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.reason | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.activity | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent.type | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent.role | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent.who | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent.onBehalfOf | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
provenance-1 | Provenance.agent.onBehalfOf | onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device : ($this.agent.who.resolve().is Practitioner or Device) implies exists() | |
ele-1 | Provenance.agent:ProvenanceAuthor | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceAuthor.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent:ProvenanceAuthor.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent:ProvenanceAuthor.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent:ProvenanceAuthor.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent:ProvenanceAuthor.type | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceAuthor.role | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceAuthor.who | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceAuthor.onBehalfOf | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceTransmitter | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceTransmitter.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent:ProvenanceTransmitter.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent:ProvenanceTransmitter.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.agent:ProvenanceTransmitter.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.agent:ProvenanceTransmitter.type | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceTransmitter.role | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceTransmitter.who | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.agent:ProvenanceTransmitter.onBehalfOf | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.entity | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.entity.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.entity.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.entity.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | Provenance.entity.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Provenance.entity.role | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.entity.what | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.entity.agent | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | Provenance.signature | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
The following guidance applies to the use of Providence across Da Vinci IGs. IGs may impose additional expectations with respect to the use of Provenance either across their whole use-case or in the context of specific events.
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).
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.
Provenance.agent
| 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 | ——————————————
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 may be relevant to downstream use of the information.
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)onBehalfOf
to be populated if the agent is Patient or RelatedPersononBehalfOf
SHOULD NOT be populated with an Organization if it is the same as Device.owner