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

Projo FHIR Documentation

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 FHIR Documentation

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.

What this IG is (and isn't)

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 URLs
  • docs/FHIR_EXTENSIONS.md — extension catalog
  • docs/ARCHITECTURE.md — end-state architecture reference
  • docs/RUNBOOK.md — operations playbook
  • infrastructure/fhir-artifacts/ — deployed Questionnaire/PlanDefinition/Library JSONs

When the source of truth changes, regenerate this IG and review the diff.

System overview

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.

How to read this IG

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

Canonical URLs

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)