QI-Core Implementation Guide
7.0.0-ballot - STU7 United States of America flag

QI-Core Implementation Guide, published by HL7 International / Clinical Quality Information. This guide is not an authorized publication; it is the continuous build for version 7.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-qi-core/ and changes regularly. See the Directory of published versions

Resource Profile: QICore CareTeam

Official URL: http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-careteam Version: 7.0.0-ballot
Active as of 2023-08-01 Computable Name: QICoreCareTeam

Profile of CareTeam for decision support/quality metrics. Defines the core set of elements and extensions for quality rule and measure authors.

Must Have:
  • subject: (QI) Who the care team is for.
  • participant: Members of the team
  • participant.role: Type of involvement
  • participant.member: (QI) Who is involved
Primary code path: category
(PCPath) This element is the primary code path for this resource CQL Retrieve


NOTE TO BALLOT REVIEWERS:
  • US Core 7.0, and thus QI-Core 7.0, has a new approach to USCDI requirements.
    • As noted in the US Core 7.0 Must Support section, US Core 7.0 no longer highlights mandatory (cardinality 1..* or 1..1) and Must Support elements with a (USCDI) indicator as such items must be supported for interoperability.
    • Those USCDI elements that are not mandatory or Must Support now include an indicator (ADDITIONAL USCDI) in US Core. QI-Core 7.0 does not reference USCDI elements; rather, users should access US Core 7.0 to understand its implementation of USCDI version 4.
  • We invite comments about the approach and suggestions for other options that would also avoid unnecessary noise or reading load to the QI-Core profile representation.
  • Further, QI-Core 7.0 does not discuss USCDI+Quality because at the time of ballot preparation, no published version of USCDI+Quality is available. We seek reviewer advice regarding how QI-Core might address future USCDI+Quality.

Usage

See the patterns page for implementation and usage patterns.

Examples

Antenatal Care Team Example

Usage:

Formal Views of Profile Content

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

This structure is derived from USCoreCareTeam

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... subject 1..1 Reference(QICore Patient) (QI) Who the care team is for.
... participant
.... member 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 0..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates whether the team is current , represents future intentions or is now a historical record.

... participant SC 1..* BackboneElement Members of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... role SΣ 1..1 CodeableConcept Type of involvement
Binding: Care Team Member Function . (extensible): Indicates specific responsibility of an individual within the care team, such as Primary physician, Team coordinator, Caregiver, etc.


.... member SΣ 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
CareTeam.statusrequiredCareTeamStatus
http://hl7.org/fhir/ValueSet/care-team-status
from the FHIR Standard
CareTeam.participant.roleextensibleCareTeamMemberFunction .
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1099.30

Constraints

IdGradePath(s)DetailsRequirements
ctm-1errorCareTeam.participantCareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
: onBehalfOf.exists() implies (member.resolve().iif(empty(), true, ofType(Practitioner).exists()))
dom-2errorCareTeamIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorCareTeamIf 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-4errorCareTeamIf 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-5errorCareTeamIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceCareTeamA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... 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
... 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
... identifier Σ 0..* Identifier External Ids for this team
... status ?!SΣ 0..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates whether the team is current , represents future intentions or is now a historical record.

... category Σ 0..* CodeableConcept Type of team
Binding: CareTeamCategory (example): Indicates the type of care team.


... name Σ 0..1 string Name of the team, such as crisis assessment team
... subject SΣ 1..1 Reference(QICore Patient) (QI) Who the care team is for.
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... period Σ 0..1 Period Time period team covers
... participant SC 1..* BackboneElement Members of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... 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 SΣ 1..1 CodeableConcept Type of involvement
Binding: Care Team Member Function . (extensible): Indicates specific responsibility of an individual within the care team, such as Primary physician, Team coordinator, Caregiver, etc.


.... member SΣ 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved
.... onBehalfOf Σ 0..1 Reference(Organization) Organization of the practitioner
.... period 0..1 Period Time period of participant
... reasonCode 0..* CodeableConcept Why the care team exists
Binding: SNOMEDCTClinicalFindings (example): Indicates the reason for the care team.


... reasonReference 0..* Reference(Condition) Why the care team exists
... managingOrganization Σ 0..* Reference(Organization) Organization responsible for the care team
... telecom 0..* ContactPoint A contact detail for the care team (that applies to all members)
... note 0..* Annotation Comments made about the CareTeam

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
CareTeam.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
CareTeam.statusrequiredCareTeamStatus
http://hl7.org/fhir/ValueSet/care-team-status
from the FHIR Standard
CareTeam.categoryexampleCareTeamCategory
http://hl7.org/fhir/ValueSet/care-team-category
from the FHIR Standard
CareTeam.participant.roleextensibleCareTeamMemberFunction .
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1099.30
CareTeam.reasonCodeexampleSNOMEDCTClinicalFindings
http://hl7.org/fhir/ValueSet/clinical-findings
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
ctm-1errorCareTeam.participantCareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
: onBehalfOf.exists() implies (member.resolve().iif(empty(), true, ofType(Practitioner).exists()))
dom-2errorCareTeamIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorCareTeamIf 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-4errorCareTeamIf 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-5errorCareTeamIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceCareTeamA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Differential View

This structure is derived from USCoreCareTeam

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... subject 1..1 Reference(QICore Patient) (QI) Who the care team is for.
... participant
.... member 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 0..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates whether the team is current , represents future intentions or is now a historical record.

... participant SC 1..* BackboneElement Members of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... role SΣ 1..1 CodeableConcept Type of involvement
Binding: Care Team Member Function . (extensible): Indicates specific responsibility of an individual within the care team, such as Primary physician, Team coordinator, Caregiver, etc.


.... member SΣ 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
CareTeam.statusrequiredCareTeamStatus
http://hl7.org/fhir/ValueSet/care-team-status
from the FHIR Standard
CareTeam.participant.roleextensibleCareTeamMemberFunction .
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1099.30

Constraints

IdGradePath(s)DetailsRequirements
ctm-1errorCareTeam.participantCareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
: onBehalfOf.exists() implies (member.resolve().iif(empty(), true, ofType(Practitioner).exists()))
dom-2errorCareTeamIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorCareTeamIf 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-4errorCareTeamIf 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-5errorCareTeamIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceCareTeamA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..* USCoreCareTeam Planned participants in the coordination and delivery of care for a patient or group
... 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
... 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
... identifier Σ 0..* Identifier External Ids for this team
... status ?!SΣ 0..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates whether the team is current , represents future intentions or is now a historical record.

... category Σ 0..* CodeableConcept Type of team
Binding: CareTeamCategory (example): Indicates the type of care team.


... name Σ 0..1 string Name of the team, such as crisis assessment team
... subject SΣ 1..1 Reference(QICore Patient) (QI) Who the care team is for.
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... period Σ 0..1 Period Time period team covers
... participant SC 1..* BackboneElement Members of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... 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 SΣ 1..1 CodeableConcept Type of involvement
Binding: Care Team Member Function . (extensible): Indicates specific responsibility of an individual within the care team, such as Primary physician, Team coordinator, Caregiver, etc.


.... member SΣ 1..1 Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore RelatedPerson) (QI) Who is involved
.... onBehalfOf Σ 0..1 Reference(Organization) Organization of the practitioner
.... period 0..1 Period Time period of participant
... reasonCode 0..* CodeableConcept Why the care team exists
Binding: SNOMEDCTClinicalFindings (example): Indicates the reason for the care team.


... reasonReference 0..* Reference(Condition) Why the care team exists
... managingOrganization Σ 0..* Reference(Organization) Organization responsible for the care team
... telecom 0..* ContactPoint A contact detail for the care team (that applies to all members)
... note 0..* Annotation Comments made about the CareTeam

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
CareTeam.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
CareTeam.statusrequiredCareTeamStatus
http://hl7.org/fhir/ValueSet/care-team-status
from the FHIR Standard
CareTeam.categoryexampleCareTeamCategory
http://hl7.org/fhir/ValueSet/care-team-category
from the FHIR Standard
CareTeam.participant.roleextensibleCareTeamMemberFunction .
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1099.30
CareTeam.reasonCodeexampleSNOMEDCTClinicalFindings
http://hl7.org/fhir/ValueSet/clinical-findings
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
ctm-1errorCareTeam.participantCareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
: onBehalfOf.exists() implies (member.resolve().iif(empty(), true, ofType(Practitioner).exists()))
dom-2errorCareTeamIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorCareTeamIf 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-4errorCareTeamIf 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-5errorCareTeamIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceCareTeamA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel, Schematron