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

Extensions

Extensions

Projo defines extensions under two namespaces:

Namespace Used for
https://projo.evoleen.com/fhir/StructureDefinition/ Projo-owned orchestration extensions (hardcoded)
https://firearrow.io/fhir/StructureDefinition/ Transport-shared extensions (configurable via EXTENSION_BASE_URL; default firearrow.io)

The firearrow.io namespace is reserved by the Fire Arrow FHIR server. Projo writes into it at runtime because the orchestrator and sidecar share the same FHIR server and must agree on transport-layer URLs; the base is overridable for test environments that run against a different Fire Arrow deployment.

This page is the catalog. Each extension also has a dedicated artifact page linked from the Artifacts menu of this IG.

Active extensions

Task extensions

URL Value type Description
https://projo.evoleen.com/fhir/StructureDefinition/delivery-time valueDateTime Stamps the actual delivery instant of the outbound communication referenced by the Task. This is the only active Task extension; all other Task state lives on Task.businessStatus and Task.output.

Patient extensions (orchestrator-owned, ADR 0012)

URL Value type Description
https://projo.evoleen.com/fhir/StructureDefinition/last-used-messaging-channel valueCode The messaging channel the patient last used to send an inbound (a communication-medium code). Stamped at Patient creation and updated on channel change. Read by buildOutboundCR to default the next outbound CR's medium (precedence: override > last-used > default).
https://projo.evoleen.com/fhir/StructureDefinition/opted-out valueDateTime Timestamp marking that the patient opted out via a STOP command. Read by the opt-out guards to suppress plan application / re-engagement.

CommunicationRequest extensions (orchestrator-owned, projo namespace)

URL Value type Description
https://projo.evoleen.com/fhir/StructureDefinition/web-answer-token valueString SHA-256 hash of the bearer token used to access the web answer channel. Set by the orchestrator when a CommunicationRequest is routed to the web channel (ADR 0011). The plaintext token is never stored.
https://projo.evoleen.com/fhir/StructureDefinition/next-reminder-timestamp valueDateTime Orchestrator-owned reminder schedule. The orchestrator writes the next planned reminder time; the sidecar reads it and fires the reminder when due.

CommunicationRequest extensions (transport-shared, firearrow namespace)

URL Value type Description
https://firearrow.io/fhir/StructureDefinition/last-inbound-message-timestamp valueDateTime Sidecar transport stamp. Updated by the sidecar on every inbound message addressed to the CommunicationRequest's conversation.
https://firearrow.io/fhir/StructureDefinition/web-answer-link valueUrl Web answer hosting URL. Populated when a CommunicationRequest is answered via the web channel.
https://firearrow.io/fhir/StructureDefinition/inbound-sender-bsuid valueString Reverse CommunicationRequest: sender BSUID (WhatsApp business-scoped user id).
https://firearrow.io/fhir/StructureDefinition/inbound-sender-profile-name valueString Reverse CommunicationRequest: sender profile name as reported by WhatsApp.
https://firearrow.io/fhir/StructureDefinition/inbound-business-phone valueString Reverse CommunicationRequest: receiving business phone number (E.164).
https://firearrow.io/fhir/StructureDefinition/inbound-business-phone-id valueString Reverse CommunicationRequest: receiving Meta Phone Number ID.
https://firearrow.io/fhir/StructureDefinition/inbound-message-timestamp valueDateTime Reverse CommunicationRequest: original inbound event time.
https://firearrow.io/fhir/StructureDefinition/identity-resolution-reason valueCode Reverse CommunicationRequest: reason code from the identity-resolution-reason code system.
https://firearrow.io/fhir/StructureDefinition/waba-account-id (on CommunicationRequest) valueString Reverse CommunicationRequest: WABA account ID that received the inbound message.

Organization extensions

URL Namespace Value type Description
https://projo.evoleen.com/fhir/StructureDefinition/plan-slot projo Complex (repeating) Two fields: kind (code, from plan-slot-kind code system) + planDefinition (canonical). Declares which PlanDefinition the organization is enrolled in for a given slot. ADR 0002 (plan slots), ADR 0007 (multi-slot).
https://projo.evoleen.com/fhir/StructureDefinition/default-plan projo valueCanonical Legacy / read-fallback. The pre-ADR-0007 single-slot default plan. Retained for read-back of older organizations; new writes use plan-slot.
https://projo.evoleen.com/fhir/StructureDefinition/preferred-language projo valueString Organization's preferred patient-facing language, ISO 639-1 code.
https://firearrow.io/fhir/StructureDefinition/wa-phone-number-id firearrow valueString Cached Meta Phone Number ID for outbound messaging. Refreshed by the sidecar.
https://firearrow.io/fhir/StructureDefinition/waba-account-id firearrow valueString WABA account ID for the organization. Multi-WABA support (issue #238).
https://firearrow.io/fhir/StructureDefinition/waba-template-invitation firearrow valueString Per-organization WhatsApp template name override for invitations.
https://firearrow.io/fhir/StructureDefinition/waba-template-reminder firearrow valueString Per-organization WhatsApp template name override for reminders.
https://firearrow.io/fhir/StructureDefinition/waba-template-web-invitation firearrow valueString Per-organization WhatsApp template name override for web-channel invitations.
https://firearrow.io/fhir/StructureDefinition/waba-template-web-reminder firearrow valueString Per-organization WhatsApp template name override for web-channel reminders.

Questionnaire extensions

URL Value type Description
https://projo.evoleen.com/fhir/StructureDefinition/extraction-writeback Complex Declares how extracted resources are written back to the subject. Two fields: target (code, from extraction-writeback-target code system: subject) + mode (code, from extraction-writeback-mode code system: fill-if-empty). ADR 0010.

Retired extensions

The following extensions are no longer written by current code but may still be present on older resources. They are documented for historical context and for migration tooling that must read them.

Retired Task extensions

URL Value type Description
https://firearrow.io/fhir/StructureDefinition/wa-conversation-status valueCode WhatsApp conversation window status. Replaced by Task.businessStatus.
https://firearrow.io/fhir/StructureDefinition/wa-current-link-id valueString Current web answer link id. Replaced by the web channel extensions.
https://firearrow.io/fhir/StructureDefinition/wa-last-outbound-message-id valueString Last outbound WhatsApp message id (wamid). Superseded by Communication linkage.
https://firearrow.io/fhir/StructureDefinition/wa-last-inbound-message-id valueString Last inbound WhatsApp message id (wamid). Superseded by Communication linkage.
https://firearrow.io/fhir/StructureDefinition/wa-last-activity-timestamp valueDateTime Last WhatsApp activity timestamp. Replaced by last-inbound-message-timestamp on the CommunicationRequest.
https://firearrow.io/fhir/StructureDefinition/wa-last-reminder-timestamp valueDateTime Last reminder sent timestamp. Replaced by next-reminder-timestamp on the CommunicationRequest.
https://firearrow.io/fhir/StructureDefinition/wa-attempt-count valueInteger Outbound delivery attempt counter. Replaced by Task retry logic.
https://firearrow.io/fhir/StructureDefinition/wa-error-code valueString Last WhatsApp API error code. Replaced by Task.status = failed + Task.statusReason.
https://firearrow.io/fhir/StructureDefinition/wa-error-detail valueString Last WhatsApp API error detail. Replaced by Task.status = failed + Task.statusReason.

Retired Patient extensions

URL Value type Description
https://firearrow.io/fhir/StructureDefinition/wa-last-user-message-ts valueDateTime Last inbound message timestamp from the patient. Replaced by the sidecar stamping last-inbound-message-timestamp on the CommunicationRequest.
https://firearrow.io/fhir/StructureDefinition/wa-last-sender-phone-number-id valueString Last sender's Meta Phone Number ID. Replaced by inbound-business-phone-id on the reverse CommunicationRequest.