Projo FHIR Documentation
0.1.0 - ci-build
Projo FHIR Documentation - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://projo.evoleen.com/fhir/ImplementationGuide/projo.fhir | Version: 0.1.0 | |||
| Draft as of 2026-08-06 | Computable Name: ProjoFhirIG | |||
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. |
||||
Projo is a WhatsApp FHIR Questionnaire Orchestrator. It dispatches FHIR Questionnaires to patients via WhatsApp, collects their responses conversationally, and writes completed QuestionnaireResponses back into a FHIR server.
This Implementation Guide is a developer reference website documenting Projo's FHIR data model: how data is organized, how it can be used, how it is managed, and the tech internals behind it.
This IG is documentation-only. It does not deploy conformance artifacts to the Fire Arrow FHIR server. Projo's runtime extensions, code systems, identifier systems and search parameter remain TypeScript constants and bootstrap-time resources. The source of truth is:
src/functions/src/lib/fhir/types.ts — extension/identifier/codesystem URLsdocs/FHIR_EXTENSIONS.md — extension catalogdocs/ARCHITECTURE.md — end-state architecture referencedocs/RUNBOOK.md — operations playbookinfrastructure/fhir-artifacts/ — deployed Questionnaire/PlanDefinition/Library JSONsWhen the source of truth changes, regenerate this IG and review the diff.
Projo consists of three Azure Functions apps sharing a single FHIR server (Fire Arrow — a HAPI FHIR R4 server on Azure App Service + PostgreSQL):
| App | Role |
|---|---|
| projo (orchestrator) | Business logic: Task lifecycle, identity, PlanDefinition $apply, clinical extraction, routing |
| whatsapp-sidecar | WhatsApp transport: webhook, identity scans, conversational orchestration, 24h window, reminders |
| web-functions | Browser-based answer channel (ADR 0011) |
The contract between apps is purely FHIR resources — no shared queues except FHIR Subscriptions, no shared database except the FHIR server.
| If you want to know… | Read |
|---|---|
| How the system is architected | Architecture |
| Which FHIR resources are used and how they interlink | Data Model |
| How resources move through states | Lifecycles |
| What extensions Projo defines | Extensions |
| What code systems and identifier systems exist | Code Systems & Identifiers |
| How search works | Search Parameters |
| How Subscriptions wire the apps together | Subscriptions |
| How WhatsApp maps to FHIR | WhatsApp Mapping |
| How identity resolution works | Identity Resolution |
| How SDC extraction and clinical routing work | Extraction & Routing |
| What knowledge artifacts exist (PlanDefinitions, Libraries, Questionnaires) | Knowledge Artifacts |
| How the FHIR server is configured | Storage & Capacity |
| How to operate the system | Operations |
| Step-by-step recipes | Runbooks |
| Why architectural decisions were made | ADRs |
| Tech internals (FHIRPath, idempotency, env vars) | Developer Reference |
Projo uses two namespaces:
| Namespace | Used for |
|---|---|
https://projo.evoleen.com/fhir/... |
Projo-owned orchestration extensions, code systems, identifier systems |
https://firearrow.io/fhir/... |
Transport-layer extensions shared between projo and sidecar (configurable via EXTENSION_BASE_URL; the firearrow.io namespace is reserved by the Fire Arrow FHIR server) |