eHealth Infrastructure
2021.3.0 - build

eHealth Infrastructure - Local Development build (v2021.3.0). See the Directory of published versions

Resource Profile: ehealth-careteam

Defining URL:http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-careteam
Version:2021.3.0
Name:ehealth-careteam
Status:Active as of 2021-11-25T09:32:14+00:00
Publisher:Systematic | Trifork
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://ehealth.sundhed.dk/fhir/StructureDefinition/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.

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.

Formal Views of Profile Content

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

This structure is derived from CareTeam

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..*CareTeamPlanned participants in the coordination and delivery of care for a patient or group
... status 1..1codeproposed | active | suspended | inactive | entered-in-error
... category 0..*CodeableConceptType of team
Binding: CareTeam Category (required)
... name 1..1stringName of the team, such as crisis assessment team
... participant
.... role 1..*CodeableConceptType of involvement
Binding: CareTeam Participant Role (required)
.... member 1..1Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r}Who is involved
.... onBehalfOf 0..1Reference(ehealth-organization) {r}Organization of the practitioner
... reasonCode 1..*CodeableConceptWhy the care team exists
Binding: Conditions (required)
... reasonReference 0..0
... managingOrganization 0..*Reference(ehealth-organization) {r}Organization responsible for the care team
... telecom
.... system 0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPoint System (required)
.... value 1..1stringThe actual contact point details
... note
.... authorReference 0..1Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson)Individual responsible for the annotation
.... authorString 0..1stringIndividual responsible for the annotation

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..*CareTeamPlanned participants in the coordination and delivery of care for a patient or group
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierExternal Ids for this team
... status ?!Σ1..1codeproposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates the status of the care team.

... category Σ0..*CodeableConceptType of team
Binding: CareTeam Category (required)
... name Σ1..1stringName of the team, such as crisis assessment team
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... period Σ0..1PeriodTime period team covers
... participant I0..*BackboneElementMembers of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... role Σ1..*CodeableConceptType of involvement
Binding: CareTeam Participant Role (required)
.... member Σ1..1Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r}Who is involved
.... onBehalfOf Σ0..1Reference(ehealth-organization) {r}Organization of the practitioner
.... period 0..1PeriodTime period of participant
... reasonCode 1..*CodeableConceptWhy the care team exists
Binding: Conditions (required)
... managingOrganization Σ0..*Reference(ehealth-organization) {r}Organization responsible for the care team
... telecom 0..*ContactPointA contact detail for the care team (that applies to all members)
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣI0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPoint System (required)
.... value Σ1..1stringThe actual contact point details
.... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... note 0..*AnnotationComments made about the CareTeam
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for author[x] Σ0..1Individual responsible for the annotation
Slice: Unordered, Closed by type:$this
..... authorReferenceReference(Any)
..... authorStringstring
..... author[x]:authorReference Σ0..1Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson)Individual responsible for the annotation
..... author[x]:authorString Σ0..1stringIndividual responsible for the annotation
.... time Σ0..1dateTimeWhen the annotation was made
.... text Σ1..1markdownThe annotation - text content (as markdown)

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..*CareTeamPlanned participants in the coordination and delivery of care for a patient or group

doco Documentation for this format

Differential View

This structure is derived from CareTeam

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..*CareTeamPlanned participants in the coordination and delivery of care for a patient or group
... status 1..1codeproposed | active | suspended | inactive | entered-in-error
... category 0..*CodeableConceptType of team
Binding: CareTeam Category (required)
... name 1..1stringName of the team, such as crisis assessment team
... participant
.... role 1..*CodeableConceptType of involvement
Binding: CareTeam Participant Role (required)
.... member 1..1Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r}Who is involved
.... onBehalfOf 0..1Reference(ehealth-organization) {r}Organization of the practitioner
... reasonCode 1..*CodeableConceptWhy the care team exists
Binding: Conditions (required)
... reasonReference 0..0
... managingOrganization 0..*Reference(ehealth-organization) {r}Organization responsible for the care team
... telecom
.... system 0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPoint System (required)
.... value 1..1stringThe actual contact point details
... note
.... authorReference 0..1Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson)Individual responsible for the annotation
.... authorString 0..1stringIndividual responsible for the annotation

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. CareTeam 0..*CareTeamPlanned participants in the coordination and delivery of care for a patient or group
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierExternal Ids for this team
... status ?!Σ1..1codeproposed | active | suspended | inactive | entered-in-error
Binding: CareTeamStatus (required): Indicates the status of the care team.

... category Σ0..*CodeableConceptType of team
Binding: CareTeam Category (required)
... name Σ1..1stringName of the team, such as crisis assessment team
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... period Σ0..1PeriodTime period team covers
... participant I0..*BackboneElementMembers of the team
ctm-1: CareTeam.participant.onBehalfOf can only be populated when CareTeam.participant.member is a Practitioner
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... role Σ1..*CodeableConceptType of involvement
Binding: CareTeam Participant Role (required)
.... member Σ1..1Reference(ehealth-practitioner | ehealth-practitionerrole | ehealth-relatedperson | ehealth-patient | ehealth-organization | ehealth-careteam) {r}Who is involved
.... onBehalfOf Σ0..1Reference(ehealth-organization) {r}Organization of the practitioner
.... period 0..1PeriodTime period of participant
... reasonCode 1..*CodeableConceptWhy the care team exists
Binding: Conditions (required)
... managingOrganization Σ0..*Reference(ehealth-organization) {r}Organization responsible for the care team
... telecom 0..*ContactPointA contact detail for the care team (that applies to all members)
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣI0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPoint System (required)
.... value Σ1..1stringThe actual contact point details
.... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... note 0..*AnnotationComments made about the CareTeam
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for author[x] Σ0..1Individual responsible for the annotation
Slice: Unordered, Closed by type:$this
..... authorReferenceReference(Any)
..... authorStringstring
..... author[x]:authorReference Σ0..1Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson)Individual responsible for the annotation
..... author[x]:authorString Σ0..1stringIndividual responsible for the annotation
.... time Σ0..1dateTimeWhen the annotation was made
.... text Σ1..1markdownThe annotation - text content (as markdown)

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
CareTeam.languagepreferredCommonLanguages
Max Binding: AllLanguages
CareTeam.statusrequiredCareTeamStatus
CareTeam.categoryrequiredCareTeamCategory
CareTeam.participant.rolerequiredCareTeamParticipantRole
CareTeam.reasonCoderequiredConditions
CareTeam.telecom.systemrequiredContactPointSystem
CareTeam.telecom.userequiredContactPointUse

Constraints

IdPathDetailsRequirements
dom-2CareTeamIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3CareTeamIf 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-4CareTeamIf 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-5CareTeamIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6CareTeamA resource should have narrative for robust management
: text.`div`.exists()
ele-1CareTeam.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.nameAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ctm-1CareTeam.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()))
ele-1CareTeam.participantAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.participant.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.participant.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.participant.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.participant.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.participant.roleAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.participant.memberAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.participant.onBehalfOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.participant.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.managingOrganizationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecomAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecom.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.telecom.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.telecom.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecom.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecom.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecom.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.telecom.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.note.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CareTeam.note.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CareTeam.note.author[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.note.author[x]:authorReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.note.author[x]:authorStringAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.note.timeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CareTeam.note.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())