Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Sandbox/Version demo

From OHC Network Wiki
Revision as of 04:25, 5 July 2026 by Admin (talk | contribs) (OHC identity seed)
guideplatformCARE 4.0+
ℹ️ Sandbox page
This page demonstrates the wiki's copy-on-write versioning system. It is not real documentation. The frozen forks below show how content evolves across releases without duplicating the entire tree.

Notification system (v4.0 — current)

The notification system handles all outbound communication from the platform to users, providers, and external systems.

Channels

Channel Added in v4.0 changes
Email 1.0 MJML templates + AMP for interactive emails
In-app 2.0 Unified inbox with thread grouping
SMS 2.0 Smart routing (cost-optimized per region)
Push (mobile) 3.0 Rich media attachments, action buttons
Webhook 3.0 Now supports HMAC signing + retry policies
WhatsApp 4.0 Via official Business API
Slack/Teams 4.0 Org-configurable bot integrations

Scheduling & orchestration

New in v4.0 — notifications can be scheduled, cancelled, and A/B tested:

{
  "template": "appointment_reminder",
  "recipients": ["patient:uuid-123"],
  "channels": ["email", "whatsapp"],
  "schedule": {
    "send_at": "2026-07-10T08:00:00Z",
    "cancel_if": "appointment.status == 'cancelled'"
  },
  "variants": {
    "control": { "subject": "Appointment tomorrow" },
    "test_a": { "subject": "See you tomorrow, {{patient.first_name}}!" }
  }
}

Per-organization configuration

Organizations can now override global channel settings:

Setting Scope Description
Enabled channels Per org Which channels are active
Sender identity Per org From address, WhatsApp number, bot name
Quiet hours Per org Suppress non-urgent sends during configured windows
Fallback chain Per org e.g. try Push → SMS → Email in order

Architecture (v4.0)

Action / Scheduler / API
         ↓
   Orchestrator (evaluates schedule, cancel_if, variant selection)
         ↓
   Fan-out (per recipient × channel, respects fallback chain)
         ↓
   Queue (Redis Streams, partitioned by priority)
         ↓
   Workers (channel-specific adapters, batch-aware)
         ↓
   Delivery tracker (status, attempts, receipts, analytics)

Evolution summary

Version Key additions Pages in Docusaurus model Pages in wiki model
1.0 Email only, sync 1 page × 1 version = 1 1 frozen fork
2.0 Async, SMS, in-app, preferences copy entire tree = 2 total 1 frozen fork
3.0 Templates, push, webhooks, tracking, batching copy entire tree = 3 total 1 frozen fork
4.0 WhatsApp, Slack, scheduling, A/B, per-org config copy entire tree = 4 total 1 canonical page (you're reading it)
Total file/page count 4 full copies 4 pages (1 current + 3 forks)
📝 Note
In a real doc site with 100 pages, Docusaurus would store 400 files for 4 versions (most identical). This wiki stores 103 pages — the 100 canonical pages plus only the 3 that actually diverged.

How the versioning works

  1. Canonical page = latest. You are reading it.
  2. Fork only when content changes. Unchanged pages span all versions implicitly (their IntroducedIn field covers the full range).
  3. Version switcher (the pill strip below the title ↑) is auto-generated: {{Version switcher}} queries Cargo for subpages with Status=frozen.
  4. Frozen banner on old pages links readers back to this canonical page.
  5. "What changed in version X?" is a single Cargo query: {{#cargo_query: tables=Docs | where=IntroducedIn='4.0'}}

Live query: all versions of this page

Page Introduced Deprecated Status
Sandbox/Version demo/1.0 1.0 2.0 frozen
Sandbox/Version demo/2.0 2.0 3.0 frozen
Sandbox/Version demo/3.0 3.0 4.0 frozen
Sandbox/Version demo 4.0 current