Projo FHIR Documentation
0.1.0 - ci-build Switzerland flag

Projo FHIR Documentation - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Extension: Plan Slot (Experimental)

Official URL: https://projo.evoleen.com/fhir/StructureDefinition/plan-slot Version: 0.1.0
Draft as of 2024-01-01 Computable Name: PlanSlot

Copyright/Legal: Copyright (c) Projo. Licensed under CC0-1.0 (public domain dedication). FHIR(R) is the registered trademark of HL7 and is used with permission. This IG references WhatsApp(R), a trademark of Meta Platforms, Inc., for descriptive purposes only.

Repeating complex extension on Organization that binds a plan kind to a versioned PlanDefinition canonical (ADR 0002, ADR 0007). Set by operators via migration/seeding scripts (setOrganizationPlanSlot). Projo runtime never writes plan-slot — only reads it. Read by the orchestrator's applyTriggeredPlanIfNeeded: selectPlanKind picks the lifecycle kind (onboarding for new patients, re-engagement for returning, default otherwise), then resolvePlanCanonicalForKind looks up the slot. For onboarding only, falls back to legacy default-plan (ADR 0003). The onboarding-routing slot is read separately by clinical routing after onboarding completion. plan-slot-kind precedence on cold inbound: onboarding > re-engagement > default.

Documentation-only artifact. Projo's runtime extensions, code systems, identifier systems and search parameter are TypeScript constants and bootstrap-time resources, NOT deployed StructureDefinitions. This StructureDefinition exists to document the contract; the source of truth is src/functions/src/lib/fhir/types.ts and docs/FHIR_EXTENSIONS.md.

Context of Use

    This extension may be used on the following element(s)

Usage info

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Extension Content

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

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension Plan Slot
... extension 2..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:kind 1..1 Extension Extension
..... extension 0..0 Extension
..... url 1..1 uri "kind"
..... value[x] 0..1 code Value of extension
Binding: Projo Plan Slot Kind Value Set (required)
.... extension:planDefinition 1..1 Extension Extension
..... extension 0..0 Extension
..... url 1..1 uri "planDefinition"
..... value[x] 0..1 canonical() Value of extension
... url 1..1 uri "https://projo.evoleen.com/fhir/StructureDefinition/plan-slot"

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension Plan Slot
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:kind 1..1 Extension Extension
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "kind"
..... value[x] 0..1 code Value of extension
Binding: Projo Plan Slot Kind Value Set (required)
.... extension:planDefinition 1..1 Extension Extension
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "planDefinition"
..... value[x] 0..1 canonical() Value of extension
... url 1..1 uri "https://projo.evoleen.com/fhir/StructureDefinition/plan-slot"

doco Documentation for this format

This structure is derived from Extension

Summary

Complex Extension: Repeating complex extension on Organization that binds a plan kind to a versioned PlanDefinition canonical (ADR 0002, ADR 0007). Set by operators via migration/seeding scripts (setOrganizationPlanSlot). Projo runtime never writes plan-slot — only reads it. Read by the orchestrator's applyTriggeredPlanIfNeeded: selectPlanKind picks the lifecycle kind (onboarding for new patients, re-engagement for returning, default otherwise), then resolvePlanCanonicalForKind looks up the slot. For onboarding only, falls back to legacy default-plan (ADR 0003). The onboarding-routing slot is read separately by clinical routing after onboarding completion. plan-slot-kind precedence on cold inbound: onboarding > re-engagement > default.

  • kind: code: An Extension
  • planDefinition: canonical: An Extension

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension Plan Slot
... extension 2..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:kind 1..1 Extension Extension
..... extension 0..0 Extension
..... url 1..1 uri "kind"
..... value[x] 0..1 code Value of extension
Binding: Projo Plan Slot Kind Value Set (required)
.... extension:planDefinition 1..1 Extension Extension
..... extension 0..0 Extension
..... url 1..1 uri "planDefinition"
..... value[x] 0..1 canonical() Value of extension
... url 1..1 uri "https://projo.evoleen.com/fhir/StructureDefinition/plan-slot"

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension Plan Slot
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:kind 1..1 Extension Extension
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "kind"
..... value[x] 0..1 code Value of extension
Binding: Projo Plan Slot Kind Value Set (required)
.... extension:planDefinition 1..1 Extension Extension
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "planDefinition"
..... value[x] 0..1 canonical() Value of extension
... url 1..1 uri "https://projo.evoleen.com/fhir/StructureDefinition/plan-slot"

doco Documentation for this format

This structure is derived from Extension

Summary

Complex Extension: Repeating complex extension on Organization that binds a plan kind to a versioned PlanDefinition canonical (ADR 0002, ADR 0007). Set by operators via migration/seeding scripts (setOrganizationPlanSlot). Projo runtime never writes plan-slot — only reads it. Read by the orchestrator's applyTriggeredPlanIfNeeded: selectPlanKind picks the lifecycle kind (onboarding for new patients, re-engagement for returning, default otherwise), then resolvePlanCanonicalForKind looks up the slot. For onboarding only, falls back to legacy default-plan (ADR 0003). The onboarding-routing slot is read separately by clinical routing after onboarding completion. plan-slot-kind precedence on cold inbound: onboarding > re-engagement > default.

  • kind: code: An Extension
  • planDefinition: canonical: An Extension

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

Path Status Usage ValueSet Version Source
Extension.extension:kind.​value[x] Base required Projo Plan Slot Kind Value Set 📦0.1.0 This IG

Constraints

Id Grade Path(s) Description Expression
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()