eHealth Infrastructure
3.6.0 - release Denmark flag

eHealth Infrastructure, published by Den telemedicinske infrastruktur (eHealth Infrastructure). This guide is not an authorized publication; it is the continuous build for version 3.6.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/fut-infrastructure/implementation-guide/ and changes regularly. See the Directory of published versions

Resource Profile: ehealth-careteam

Official URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-careteam Version: 3.6.0
Active as of 2025-10-16 Computable Name: ehealth-careteam

Introduction

The CareTeam includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient. A CareTeam can be constructed for a single patient but typically handles more patients.

Scope and Usage

In the eHealth Infrastructure, a CareTeam has a lifecycle independent of Patients and consists of a group of Practitioners. Typically the group of Practitioners are affiliated with a real-world organizational unit such as a hospital department/care unit, but a CareTeam can also be representing a "virtual" unit comprised of
Practitioners from more sectors or several real-world organizational units.

The core FHIR CareTeam has subject and context which can reference a Patient and EpisodeOfCare, respectively, which when used ties a CareTeam to a Patient context. Similarly, use of element reasonReference would indirectly tie the CareTeam to a Patient. As this is not used in the eHealth Infrastructure and to prevent such tying, these elements have been set to 0..0.

Instead CareTeam is intended to be referenced from CarePlan and EpisodeOfCare. A CareTeam can be referenced from a single CarePlan but the typical scenario is that it is referenced by multiple CarePlan and/or EpisodeOfCare instances crossing multiple Patient instances.

The eHealth profile of CareTeam has the following extensions:

  • ehealth-useContext which defines the context(s) in which the CareTeam is intended and expected to be used (non-exclusively)

Composition of CareTeams

In the eHealth Infrastructure, the possibility to add CareTeam participant members other than Practitioner is not used, but the other types (Organization, CareTeam etc) have been retained for possible future use.

There are currently no restrictions on the composition of CareTeams. The intended usage is to establish a few layers of CareTeams, but it is important to make sure that the CareTem member graph contains no cycles.

CareTeam Identifier

At least one identifier for the CareTeam shall use system set to urn:ietf:rfc:3986 and contain a value which is a UUID.

Condition types handled by the CareTeam

In order to ease selection of CareTeam appropriate for a given CarePlan, at least one Condition type handled by a CareTeam must be stated in reasonCode. This is used as criteria for suggesting CareTeams in the operation suggest-care-teams.

UseContext

The element useContext.code has binding to the ValueSet http://hl7.org/fhir/ValueSet/use-context (see https://hl7.org/fhir/R4/valueset-use-context.html). It is, however, validated against the eHealth ValueSet http://ehealth.sundhed.dk/vs/ehealth-usage-context-type (see https://ehealth.sundhed.dk/fhir/ValueSet-ehealth-usage-context-type.html). This validation includes that the value in useContext.valueCodeableConcept is acceptable in the ValueSet described for useContext.code. Do not use code 'focus'. Conditions must be added to the reasonCode property.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam 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
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... category Σ 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... name Σ 1..1 string Name of the team, such as crisis assessment team
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... managingOrganization Σ 0..* Reference(ehealth-organization) {r} Organization responsible for the care team

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
CareTeam.status Base required CareTeamStatus 📍4.0.1 FHIR Std.
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error CareTeam If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error CareTeam 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 CareTeam 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 CareTeam If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice CareTeam 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()

This structure is derived from CareTeam

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam Planned participants in the coordination and delivery of care for a patient or group
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... status 1..1 code proposed | active | suspended | inactive | entered-in-error
... category 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... subject 0..0
... participant
.... role 1..* CodeableConcept Type of involvement
Binding: CareTeam Participant Role (required)
.... member 1..1 Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r} Who is involved
.... onBehalfOf 0..1 Reference(ehealth-organization) {r} Organization of the practitioner
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... reasonReference 0..0
... managingOrganization 0..* Reference(ehealth-organization) {r} Organization responsible for the care team
... telecom
.... value 1..1 string The actual contact point details
... note
.... Slices for author[x] 0..1 Reference(Practitioner | Patient | RelatedPerson | Organization), string Individual responsible for the annotation
Slice: Unordered, Open by type:$this
..... author[x]:authorReference 0..1 Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) Individual responsible for the annotation
..... author[x]:authorString 0..1 string Individual responsible for the annotation

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.participant.​role Base required CareTeam Participant Role 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam 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
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier External Ids for this team
... status ?!Σ 1..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates the status of the care team.
... category Σ 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... name Σ 1..1 string Name of the team, such as crisis assessment team
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... period Σ 0..1 Period Time period team covers
... participant C 0..* BackboneElement Members of the team
Constraints: ctm-1
.... 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..* CodeableConcept Type of involvement
Binding: CareTeam Participant Role (required)
.... member Σ 1..1 Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r} Who is involved
.... onBehalfOf Σ 0..1 Reference(ehealth-organization) {r} Organization of the practitioner
.... period 0..1 Period Time period of participant
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... managingOrganization Σ 0..* Reference(ehealth-organization) {r} Organization responsible for the care team
... telecom 0..* ContactPoint A contact detail for the care team (that applies to all members)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣC 0..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
.... value Σ 1..1 string The actual contact point details
.... use ?!Σ 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
.... rank Σ 0..1 positiveInt Specify preferred order of use (1 = highest)
.... period Σ 0..1 Period Time period when the contact point was/is in use
... note 0..* Annotation Comments made about the CareTeam
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for author[x] Σ 0..1 Individual responsible for the annotation
Slice: Unordered, Closed by type:$this
..... authorReference Reference(Practitioner | Patient | RelatedPerson | Organization)
..... authorString string
..... author[x]:authorReference Σ 0..1 Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) Individual responsible for the annotation
..... author[x]:authorString Σ 0..1 string Individual responsible for the annotation
.... time Σ 0..1 dateTime When the annotation was made
.... text Σ 1..1 markdown The annotation - text content (as markdown)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
CareTeam.language Base preferred Common Languages 📍4.0.1 FHIR Std.
CareTeam.status Base required CareTeamStatus 📍4.0.1 FHIR Std.
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.participant.​role Base required CareTeam Participant Role 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG
CareTeam.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
CareTeam.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
ctm-1 error CareTeam.participant CareTeam.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-2 error CareTeam If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error CareTeam 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 CareTeam 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 CareTeam If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice CareTeam 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()

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam 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
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... category Σ 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... name Σ 1..1 string Name of the team, such as crisis assessment team
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... managingOrganization Σ 0..* Reference(ehealth-organization) {r} Organization responsible for the care team

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
CareTeam.status Base required CareTeamStatus 📍4.0.1 FHIR Std.
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error CareTeam If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error CareTeam 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 CareTeam 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 CareTeam If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice CareTeam 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()

Differential View

This structure is derived from CareTeam

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam Planned participants in the coordination and delivery of care for a patient or group
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... status 1..1 code proposed | active | suspended | inactive | entered-in-error
... category 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... subject 0..0
... participant
.... role 1..* CodeableConcept Type of involvement
Binding: CareTeam Participant Role (required)
.... member 1..1 Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r} Who is involved
.... onBehalfOf 0..1 Reference(ehealth-organization) {r} Organization of the practitioner
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... reasonReference 0..0
... managingOrganization 0..* Reference(ehealth-organization) {r} Organization responsible for the care team
... telecom
.... value 1..1 string The actual contact point details
... note
.... Slices for author[x] 0..1 Reference(Practitioner | Patient | RelatedPerson | Organization), string Individual responsible for the annotation
Slice: Unordered, Open by type:$this
..... author[x]:authorReference 0..1 Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) Individual responsible for the annotation
..... author[x]:authorString 0..1 string Individual responsible for the annotation

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.participant.​role Base required CareTeam Participant Role 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. CareTeam 0..* CareTeam 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
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:useContext 0..* UsageContext The context that the content is intended to support
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-useContext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier External Ids for this team
... status ?!Σ 1..1 code proposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates the status of the care team.
... category Σ 0..* CodeableConcept Type of team
Binding: CareTeam Category (required)
... name Σ 1..1 string Name of the team, such as crisis assessment team
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... period Σ 0..1 Period Time period team covers
... participant C 0..* BackboneElement Members of the team
Constraints: ctm-1
.... 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..* CodeableConcept Type of involvement
Binding: CareTeam Participant Role (required)
.... member Σ 1..1 Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r} Who is involved
.... onBehalfOf Σ 0..1 Reference(ehealth-organization) {r} Organization of the practitioner
.... period 0..1 Period Time period of participant
... reasonCode 1..* CodeableConcept Why the care team exists
Binding: Conditions (required)
... managingOrganization Σ 0..* Reference(ehealth-organization) {r} Organization responsible for the care team
... telecom 0..* ContactPoint A contact detail for the care team (that applies to all members)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣC 0..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
.... value Σ 1..1 string The actual contact point details
.... use ?!Σ 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
.... rank Σ 0..1 positiveInt Specify preferred order of use (1 = highest)
.... period Σ 0..1 Period Time period when the contact point was/is in use
... note 0..* Annotation Comments made about the CareTeam
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for author[x] Σ 0..1 Individual responsible for the annotation
Slice: Unordered, Closed by type:$this
..... authorReference Reference(Practitioner | Patient | RelatedPerson | Organization)
..... authorString string
..... author[x]:authorReference Σ 0..1 Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) Individual responsible for the annotation
..... author[x]:authorString Σ 0..1 string Individual responsible for the annotation
.... time Σ 0..1 dateTime When the annotation was made
.... text Σ 1..1 markdown The annotation - text content (as markdown)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
CareTeam.language Base preferred Common Languages 📍4.0.1 FHIR Std.
CareTeam.status Base required CareTeamStatus 📍4.0.1 FHIR Std.
CareTeam.category Base required CareTeam Category 📦3.6.0 This IG
CareTeam.participant.​role Base required CareTeam Participant Role 📦3.6.0 This IG
CareTeam.reasonCode Base required Conditions 📦3.6.0 This IG
CareTeam.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
CareTeam.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
ctm-1 error CareTeam.participant CareTeam.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-2 error CareTeam If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error CareTeam 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 CareTeam 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 CareTeam If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice CareTeam 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()

 

Other representations of profile: CSV, Excel, Schematron