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.

 

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())