Open Health Hub FHIR Implementation Guide
0.1.0 - v0.1.0

Open Health Hub FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## Resource Profile: OHH Retrieve CarePlan

Official URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/ohh-retrieve-care-plan | Version: 0.1.0
Active as of 2025-12-03 | Computable Name: OhhRetrieveCarePlan

A profile on the CarePlan resource describing the information returned by the GET operation.

### Scope and Usage

A CarePlan contains the task for the patient and/or caregivers for a specific PlanDefinition. The tasks will reference the Open Health Hub Form Filler to easily fill out forms.

Usages:

- Examples for this Profile: CarePlan/4
- CapabilityStatements using this Profile: OHH FHIR API

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.

- Differential Table
- Key Elements Table
- Snapshot Table
- Statistics/References
- All

This structure is derived from OhhBaseCarePlan

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
status | S | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown
subject |  |  |  |
reference | S | 0..1 | string | Literal reference, Relative, internal or absolute URL
period |  |  |  |
end | S | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
careTeam |  | 1..2 | Reference(CareTeam) | Who's involved in plan?
activity | S | 0..* | BackboneElement | Action to occur as part of plan
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity
status | S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error
Slices for scheduled[x] |  | 0..1 | Timing, Period, string | When activity is to occur Slice: Unordered, Open by type:$this
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
start | S | 1..1 | dateTime | Starting time with inclusive boundary
end | S | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
description | S | 0..1 | string | Extra info describing activity to perform
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
instantiatesCanonical | S Σ | 1..1 | canonical(OHH Plan Definition Profile) | Instantiates FHIR protocol or definition
status | ?!S Σ | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
intent | ?!Σ | 1..1 | code | proposal | plan | order | option Binding: CarePlanIntent (required): Codes indicating the degree of authority/intentionality associated with a care plan.
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the care plan is for
reference | S Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model). Required Pattern: ohh-patient
period | S Σ | 1..1 | Period | Time period plan covers
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
author | S Σ C | 0..1 | Reference(Practitioner) | Who is the designated responsible party Constraints: author-name-requirement
careTeam | S | 1..2 | Reference(CareTeam) | Who's involved in plan?
activity | S C | 0..* | BackboneElement | Action to occur as part of plan Constraints: cpl-3
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity Binding: ProcedureCodes(SNOMEDCT) (example): Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.
status | ?!S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error Binding: CarePlanActivityStatus (required): Codes that reflect the current state of a care plan activity within its overall life cycle.
doNotPerform | ?! | 0..1 | boolean | If true, activity is prohibiting action
Slices for scheduled[x] |  | 0..1 |  | When activity is to occur Slice: Unordered, Open by type:$this
scheduledTiming |  |  | Timing |
scheduledPeriod |  |  | Period |
scheduledString |  |  | string |
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
description | S | 0..1 | string | Extra info describing activity to perform
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
CarePlan.status | Base | required | RequestStatus | 📍4.0.1 | FHIR Std.
CarePlan.intent | Base | required | Care Plan Intent | 📍4.0.1 | FHIR Std.
CarePlan.subject.type | Base | extensible | ResourceType | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​status | Base | required | CarePlanActivityStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
author-name-requirement | error | CarePlan.author | Author name must be present | `resolve().name.text.exists()`
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
cpl-3 | error | CarePlan.activity | Provide a reference or detail, not both | `detail.empty() or reference.empty()`
dom-2 | error | CarePlan | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | CarePlan | 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 | CarePlan | 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 | CarePlan | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | CarePlan | 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()`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
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
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
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, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Ids for this plan
instantiatesCanonical | S Σ | 1..1 | canonical(OHH Plan Definition Profile) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(CarePlan) | Fulfills CarePlan
replaces | Σ | 0..* | Reference(CarePlan) | CarePlan replaced by this CarePlan
partOf | Σ | 0..* | Reference(CarePlan) | Part of referenced CarePlan
status | ?!S Σ | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
intent | ?!Σ | 1..1 | code | proposal | plan | order | option Binding: CarePlanIntent (required): Codes indicating the degree of authority/intentionality associated with a care plan.
category | Σ | 0..* | CodeableConcept | Type of plan Binding: CarePlanCategory (example): Identifies what "kind" of plan this is to support differentiation between multiple co-existing plans; e.g. "Home health", "psychiatric", "asthma", "disease management", etc.
title | Σ | 0..1 | string | Human-friendly name for the care plan
description | Σ | 0..1 | string | Summary of nature of plan
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the care plan is for
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model). Required Pattern: ohh-patient
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
display | Σ | 0..1 | string | Text alternative for the resource
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of
period | S Σ | 1..1 | Period | Time period plan covers
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
created | Σ | 0..1 | dateTime | Date record was first recorded
author | S Σ C | 0..1 | Reference(Practitioner) | Who is the designated responsible party Constraints: author-name-requirement
contributor |  | 0..* | Reference(Patient | Practitioner | PractitionerRole | Device | RelatedPerson | Organization | CareTeam) | Who provided the content of the care plan
careTeam | S | 1..2 | Reference(CareTeam) | Who's involved in plan?
addresses | Σ | 0..* | Reference(Condition) | Health issues this plan addresses
supportingInfo |  | 0..* | Reference(Resource) | Information considered as part of plan
goal |  | 0..* | Reference(Goal) | Desired outcome of plan
activity | S C | 0..* | BackboneElement | Action to occur as part of plan Constraints: cpl-3
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
outcomeCodeableConcept |  | 0..* | CodeableConcept | Results of the activity Binding: CarePlanActivityOutcome (example): Identifies the results of the activity.
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
progress |  | 0..* | Annotation | Comments about the activity status/progress
reference | C | 0..1 | Reference(Appointment | CommunicationRequest | DeviceRequest | MedicationRequest | NutritionOrder | Task | ServiceRequest | VisionPrescription | RequestGroup) | Activity details defined in specific resource
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
kind |  | 0..1 | code | Appointment | CommunicationRequest | DeviceRequest | MedicationRequest | NutritionOrder | Task | ServiceRequest | VisionPrescription Binding: CarePlanActivityKind (required): Resource types defined as part of FHIR that can be represented as in-line definitions of a care plan activity.
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
instantiatesUri |  | 0..* | uri | Instantiates external protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity Binding: ProcedureCodes(SNOMEDCT) (example): Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.
reasonCode |  | 0..* | CodeableConcept | Why activity should be done or why activity was prohibited Binding: SNOMEDCTClinicalFindings (example): Identifies why a care plan activity is needed. Can include any health condition codes as well as such concepts as "general wellness", prophylaxis, surgical preparation, etc.
reasonReference |  | 0..* | Reference(Condition | Observation | DiagnosticReport | DocumentReference) | Why activity is needed
goal |  | 0..* | Reference(Goal) | Goals this activity relates to
status | ?!S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error Binding: CarePlanActivityStatus (required): Codes that reflect the current state of a care plan activity within its overall life cycle.
statusReason |  | 0..1 | CodeableConcept | Reason for current status
doNotPerform | ?! | 0..1 | boolean | If true, activity is prohibiting action
Slices for scheduled[x] |  | 0..1 |  | When activity is to occur Slice: Unordered, Open by type:$this
scheduledTiming |  |  | Timing |
scheduledPeriod |  |  | Period |
scheduledString |  |  | string |
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
location |  | 0..1 | Reference(Location) | Where it should happen
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
product[x] |  | 0..1 |  | What is to be administered/supplied Binding: SNOMEDCTMedicationCodes (example): A product supplied or administered as part of a care plan activity.
productCodeableConcept |  |  | CodeableConcept |
productReference |  |  | Reference(Medication | Substance) |
dailyAmount |  | 0..1 | SimpleQuantity(4.0.1) | How to consume/day?
quantity |  | 0..1 | SimpleQuantity(4.0.1) | How much to administer/supply/consume
description | S | 0..1 | string | Extra info describing activity to perform
note |  | 0..* | Annotation | Comments about the plan
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
CarePlan.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
CarePlan.status | Base | required | RequestStatus | 📍4.0.1 | FHIR Std.
CarePlan.intent | Base | required | Care Plan Intent | 📍4.0.1 | FHIR Std.
CarePlan.category | Base | example | Care Plan Category | 📍4.0.1 | FHIR Std.
CarePlan.subject.type | Base | extensible | ResourceType | 📍4.0.1 | FHIR Std.
CarePlan.activity.outcomeCodeableConcept | Base | example | Care Plan Activity Outcome | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​kind | Base | required | Care Plan Activity Kind | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​reasonCode | Base | example | SNOMED CT Clinical Findings | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​status | Base | required | CarePlanActivityStatus | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​product[x] | Base | example | SNOMED CT Medication Codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
author-name-requirement | error | CarePlan.author | Author name must be present | `resolve().name.text.exists()`
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
cpl-3 | error | CarePlan.activity | Provide a reference or detail, not both | `detail.empty() or reference.empty()`
dom-2 | error | CarePlan | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | CarePlan | 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 | CarePlan | 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 | CarePlan | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | CarePlan | 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()`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

This structure is derived from OhhBaseCarePlan

Summary

Mandatory: 1 element(4 nested mandatory elements)
Must-Support: 20 elements

Extensions

This structure refers to these extensions:

- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of CarePlan.activity.detail.scheduled[x]

Differential View

This structure is derived from OhhBaseCarePlan

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
status | S | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown
subject |  |  |  |
reference | S | 0..1 | string | Literal reference, Relative, internal or absolute URL
period |  |  |  |
end | S | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
careTeam |  | 1..2 | Reference(CareTeam) | Who's involved in plan?
activity | S | 0..* | BackboneElement | Action to occur as part of plan
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity
status | S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error
Slices for scheduled[x] |  | 0..1 | Timing, Period, string | When activity is to occur Slice: Unordered, Open by type:$this
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
start | S | 1..1 | dateTime | Starting time with inclusive boundary
end | S | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
description | S | 0..1 | string | Extra info describing activity to perform
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
instantiatesCanonical | S Σ | 1..1 | canonical(OHH Plan Definition Profile) | Instantiates FHIR protocol or definition
status | ?!S Σ | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
intent | ?!Σ | 1..1 | code | proposal | plan | order | option Binding: CarePlanIntent (required): Codes indicating the degree of authority/intentionality associated with a care plan.
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the care plan is for
reference | S Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model). Required Pattern: ohh-patient
period | S Σ | 1..1 | Period | Time period plan covers
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
author | S Σ C | 0..1 | Reference(Practitioner) | Who is the designated responsible party Constraints: author-name-requirement
careTeam | S | 1..2 | Reference(CareTeam) | Who's involved in plan?
activity | S C | 0..* | BackboneElement | Action to occur as part of plan Constraints: cpl-3
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity Binding: ProcedureCodes(SNOMEDCT) (example): Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.
status | ?!S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error Binding: CarePlanActivityStatus (required): Codes that reflect the current state of a care plan activity within its overall life cycle.
doNotPerform | ?! | 0..1 | boolean | If true, activity is prohibiting action
Slices for scheduled[x] |  | 0..1 |  | When activity is to occur Slice: Unordered, Open by type:$this
scheduledTiming |  |  | Timing |
scheduledPeriod |  |  | Period |
scheduledString |  |  | string |
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
description | S | 0..1 | string | Extra info describing activity to perform
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
CarePlan.status | Base | required | RequestStatus | 📍4.0.1 | FHIR Std.
CarePlan.intent | Base | required | Care Plan Intent | 📍4.0.1 | FHIR Std.
CarePlan.subject.type | Base | extensible | ResourceType | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​status | Base | required | CarePlanActivityStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
author-name-requirement | error | CarePlan.author | Author name must be present | `resolve().name.text.exists()`
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
cpl-3 | error | CarePlan.activity | Provide a reference or detail, not both | `detail.empty() or reference.empty()`
dom-2 | error | CarePlan | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | CarePlan | 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 | CarePlan | 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 | CarePlan | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | CarePlan | 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()`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
CarePlan | C | 0..* | OhhBaseCarePlan | Healthcare plan for patient or group Constraints: care-providers-requirement, caregivers-requirement
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
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
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, Closed by value:url
extension:programLink | S | 0..1 | string | Program Link URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
extension:programPin | S | 0..1 | string | Program PIN URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
extension:customInviteImage | S | 0..1 | Attachment | Custom Invite Image URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
extension:customInviteText | S | 0..1 | string | Custom Invite Text URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
extension:formFillerProgramTimeline | S | 0..1 | string | Form Filler Program Timeline URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Ids for this plan
instantiatesCanonical | S Σ | 1..1 | canonical(OHH Plan Definition Profile) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(CarePlan) | Fulfills CarePlan
replaces | Σ | 0..* | Reference(CarePlan) | CarePlan replaced by this CarePlan
partOf | Σ | 0..* | Reference(CarePlan) | Part of referenced CarePlan
status | ?!S Σ | 1..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
intent | ?!Σ | 1..1 | code | proposal | plan | order | option Binding: CarePlanIntent (required): Codes indicating the degree of authority/intentionality associated with a care plan.
category | Σ | 0..* | CodeableConcept | Type of plan Binding: CarePlanCategory (example): Identifies what "kind" of plan this is to support differentiation between multiple co-existing plans; e.g. "Home health", "psychiatric", "asthma", "disease management", etc.
title | Σ | 0..1 | string | Human-friendly name for the care plan
description | Σ | 0..1 | string | Summary of nature of plan
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the care plan is for
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model). Required Pattern: ohh-patient
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
display | Σ | 0..1 | string | Text alternative for the resource
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of
period | S Σ | 1..1 | Period | Time period plan covers
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 0..1 | dateTime | End time with inclusive boundary, if not ongoing
created | Σ | 0..1 | dateTime | Date record was first recorded
author | S Σ C | 0..1 | Reference(Practitioner) | Who is the designated responsible party Constraints: author-name-requirement
contributor |  | 0..* | Reference(Patient | Practitioner | PractitionerRole | Device | RelatedPerson | Organization | CareTeam) | Who provided the content of the care plan
careTeam | S | 1..2 | Reference(CareTeam) | Who's involved in plan?
addresses | Σ | 0..* | Reference(Condition) | Health issues this plan addresses
supportingInfo |  | 0..* | Reference(Resource) | Information considered as part of plan
goal |  | 0..* | Reference(Goal) | Desired outcome of plan
activity | S C | 0..* | BackboneElement | Action to occur as part of plan Constraints: cpl-3
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
outcomeCodeableConcept |  | 0..* | CodeableConcept | Results of the activity Binding: CarePlanActivityOutcome (example): Identifies the results of the activity.
outcomeReference | S | 0..1 | Reference(Resource) | Appointment, Encounter, Procedure, etc.
progress |  | 0..* | Annotation | Comments about the activity status/progress
reference | C | 0..1 | Reference(Appointment | CommunicationRequest | DeviceRequest | MedicationRequest | NutritionOrder | Task | ServiceRequest | VisionPrescription | RequestGroup) | Activity details defined in specific resource
detail | S C | 1..1 | BackboneElement | In-line definition of activity Constraints: valid-activity-detail-code
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Closed by value:url
extension:formFillerProgramTask | S | 0..1 | string | Form Filler Program Task URL URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
extension:taskUuid | S | 0..1 | string | Task UUID URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
extension:relatedQuestionnaire | S | 0..1 | Reference(Ohh Questionnaire Profile) | Related Questionnaire URL: https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
kind |  | 0..1 | code | Appointment | CommunicationRequest | DeviceRequest | MedicationRequest | NutritionOrder | Task | ServiceRequest | VisionPrescription Binding: CarePlanActivityKind (required): Resource types defined as part of FHIR that can be represented as in-line definitions of a care plan activity.
instantiatesCanonical | S | 0..1 | canonical(PlanDefinition | ActivityDefinition | Questionnaire | Measure | OperationDefinition) | Instantiates FHIR protocol or definition
instantiatesUri |  | 0..* | uri | Instantiates external protocol or definition
code |  | 1..1 | CodeableConcept | Detail type of activity Binding: ProcedureCodes(SNOMEDCT) (example): Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.
reasonCode |  | 0..* | CodeableConcept | Why activity should be done or why activity was prohibited Binding: SNOMEDCTClinicalFindings (example): Identifies why a care plan activity is needed. Can include any health condition codes as well as such concepts as "general wellness", prophylaxis, surgical preparation, etc.
reasonReference |  | 0..* | Reference(Condition | Observation | DiagnosticReport | DocumentReference) | Why activity is needed
goal |  | 0..* | Reference(Goal) | Goals this activity relates to
status | ?!S | 1..1 | code | not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error Binding: CarePlanActivityStatus (required): Codes that reflect the current state of a care plan activity within its overall life cycle.
statusReason |  | 0..1 | CodeableConcept | Reason for current status
doNotPerform | ?! | 0..1 | boolean | If true, activity is prohibiting action
Slices for scheduled[x] |  | 0..1 |  | When activity is to occur Slice: Unordered, Open by type:$this
scheduledTiming |  |  | Timing |
scheduledPeriod |  |  | Period |
scheduledString |  |  | string |
scheduled[x]:scheduledPeriod |  | 0..1 | Period | When activity is to occur
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
start | S Σ C | 1..1 | dateTime | Starting time with inclusive boundary
end | S Σ C | 1..1 | dateTime | End time with inclusive boundary, if not ongoing
location |  | 0..1 | Reference(Location) | Where it should happen
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | RelatedPerson | Patient | CareTeam | HealthcareService | Device) | Who will be responsible?
product[x] |  | 0..1 |  | What is to be administered/supplied Binding: SNOMEDCTMedicationCodes (example): A product supplied or administered as part of a care plan activity.
productCodeableConcept |  |  | CodeableConcept |
productReference |  |  | Reference(Medication | Substance) |
dailyAmount |  | 0..1 | SimpleQuantity(4.0.1) | How to consume/day?
quantity |  | 0..1 | SimpleQuantity(4.0.1) | How much to administer/supply/consume
description | S | 0..1 | string | Extra info describing activity to perform
note |  | 0..* | Annotation | Comments about the plan
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
CarePlan.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
CarePlan.status | Base | required | RequestStatus | 📍4.0.1 | FHIR Std.
CarePlan.intent | Base | required | Care Plan Intent | 📍4.0.1 | FHIR Std.
CarePlan.category | Base | example | Care Plan Category | 📍4.0.1 | FHIR Std.
CarePlan.subject.type | Base | extensible | ResourceType | 📍4.0.1 | FHIR Std.
CarePlan.activity.outcomeCodeableConcept | Base | example | Care Plan Activity Outcome | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​kind | Base | required | Care Plan Activity Kind | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​reasonCode | Base | example | SNOMED CT Clinical Findings | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​status | Base | required | CarePlanActivityStatus | 📍4.0.1 | FHIR Std.
CarePlan.activity.detail.​product[x] | Base | example | SNOMED CT Medication Codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
author-name-requirement | error | CarePlan.author | Author name must be present | `resolve().name.text.exists()`
care-providers-requirement | error | CarePlan | Exactly 1 care providers CareTeam | `careTeam.where(reference.exists() and reference.matches('^CareTeam/[0-9]+$')).count() = 1`
caregivers-requirement | error | CarePlan | At most 1 caregivers CareTeam | `careTeam.where(reference.exists() and reference.matches('CareTeam/[0-9]+-caregivers$')).count() <= 1`
cpl-3 | error | CarePlan.activity | Provide a reference or detail, not both | `detail.empty() or reference.empty()`
dom-2 | error | CarePlan | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | CarePlan | 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 | CarePlan | 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 | CarePlan | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | CarePlan | 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()`
valid-activity-detail-code | error | CarePlan.activity.detail | Activity detail code must be from questionnaire-types or action-type code systems | `code.coding.where(system.endsWith('/questionnaire-types') or system.endsWith('/action-type')).exists()`

This structure is derived from OhhBaseCarePlan

Summary

Mandatory: 1 element(4 nested mandatory elements)
Must-Support: 20 elements

Extensions

This structure refers to these extensions:

- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-link
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/program-pin
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-image
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/custom-invite-text
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-timeline
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/form-filler-program-task
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/task-uuid
- https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/related-questionnaire

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of CarePlan.activity.detail.scheduled[x]

Other representations of profile: CSV, Excel, Schematron

### Notes:

### Retrieving a CarePlan

A CarePlan can be retrieved by its ID using a GET request. Alongside standard FHIR fields, the CarePlan will contain the following customised fields:

- An extension containing the URL the patient needs to open the program (program-link)
- An extension containing the PIN which the patient needs to register the program (program-pin)
- Two extensions that contain the Customized Invite Mail text and image when set in the Improve Designer (custom-invite-image and custom-invite-text)
- An extension with a link to the embedded form filler program timeline. This will only be present when the patient is already registered to the program (form-filler-program-timeline).
- Two careTeam references. Both CareTeams contain a list of Practitioner references:
  - In the CareTeam with the same id as the CarePlan, Practitioners have a public key that should be used for encrypting the QuestionnaireResponses that fulfill activities in this CarePlan.
  - The CareTeam where the id has a `-caregivers` suffix lists the Practitioners that have activities in this CarePlan. They are referenced by their role.
- An activity list. Every activity represents either a questionnaire for the patient or a caregiver of the patient, or a communication request to remind the patient to fill in the questionnaire (push notification or a call from the responsible health care professional). Questionnaires are calculated dynamically based on input from previous questionnaires, so the list is not final and can grow over time. The questionnaire activities contain two extensions to open the specific questionnaire directly in the embedded form filler (form-filler-program-task, task-uuid).

#### Using with the Embedded Form Filler

Besides using the embedded form filler links in the extensions, you can also build the links to the embedded form filler yourself:

URL format: https://formfiller.openhealthhub.com/user/<user-uuid>/program/<program-uuid>-<invite-id>/module/<task-uuid>?signature=<signature>&key=<key>

Values are retrieved from the following CarePlan fields:

- user-uuid (Patient): contained subject.identifier with system urn:ietf:rfc:3986, without the urn:uuid: prefix
- user-uuid (Practitioner): activity.detail.performer.reference (the id of the referenced Practitioner)
- program-uuid: instantiatesCanonical (only the UUID part after PlanDefinition)
- invite-id: id
- task-uuid: activity.detail.extension (value of task_uuid extension) — optional when you want to open a specific questionnaire directly
- signature: contained subject.extension with url https://api.openhealthhub.com/OpenHealthhub/fhir/4/StructureDefinition/patient-signature
- key: must be appended by integrator; obtained from the Open Health Hub administration page and identifies your organisation

When using the embedded form filler links you will need to append the `key` query parameter yourself. This key can be obtained from our administration page by your organisation admin. The key identifies your organisation and determines the method of authentication for the patient.