C4 Architecture Model & Behavioral Flows | v1 Scope | April 2026
High-level view showing the Kinloch Platform, its users, and external system dependencies
flowchart TD
patient["Patient
Cannabis healthcare patient"]
np["Nurse Practitioner
Licensed NP who reviews and authorizes"]
kinloch["Kinloch Platform
Discovery, AI intake, NP authorization,
compliant cannabis access"]
shopify["Shopify
Product catalogue, payments, fulfillment"]
llm["AI / LLM Provider
Clinical summary generation"]
voiceai["Voice AI Platform
Conversational voice intake"]
sms["SMS Provider
2FA and notifications"]
idv["IDV Provider
Identity verification"]
college["Provincial College Registry
License verification"]
hc["Health Canada
Regulatory reporting"]
marketing["Marketing Platform
Paid media, SEO, CRM"]
patient -->|uses| kinloch
np -->|uses| kinloch
kinloch -->|integrates| shopify
kinloch -->|generates summaries| llm
kinloch -->|voice intake| voiceai
kinloch -->|sends SMS| sms
kinloch -->|verifies identity| idv
kinloch -->|verifies licenses| college
kinloch -->|submits reports| hc
marketing -->|drives traffic| kinloch
style patient fill:#08427b,stroke:#073b6e,color:#fff
style np fill:#08427b,stroke:#073b6e,color:#fff
style kinloch fill:#1168bd,stroke:#0e5aa7,color:#fff
style shopify fill:#999,stroke:#777,color:#fff
style llm fill:#999,stroke:#777,color:#fff
style voiceai fill:#999,stroke:#777,color:#fff
style sms fill:#999,stroke:#777,color:#fff
style idv fill:#999,stroke:#777,color:#fff
style college fill:#999,stroke:#777,color:#fff
style hc fill:#999,stroke:#777,color:#fff
style marketing fill:#999,stroke:#777,color:#fff
Internal structure of the Kinloch Platform showing all deployable containers and their interactions
flowchart TD
patient["Patient"]
np["Nurse Practitioner"]
subgraph kinloch["Kinloch Platform"]
webapp["Patient Web App
React
Discovery, cart, account, dashboard"]
npapp["NP Workbench
Responsive Web
Case queue, review, authorization"]
api["Platform API
REST API
Auth, commerce, registration, orchestration"]
intake["AI Clinical Intake Engine
AI Service
Questionnaire, voice, clinical summary"]
compliance["Compliance Service
Backend
Registration, ledger, reporting"]
db[("Application Database
PostgreSQL, AES-256")]
storage[("Object Storage
S3, AES-256")]
end
shopify["Shopify"]
llm["AI/LLM Provider"]
voiceai["Voice AI Platform"]
sms["SMS Provider"]
idv["IDV Provider"]
college["Provincial College Registry"]
hc["Health Canada"]
patient -->|browses, orders| webapp
np -->|reviews, authorizes| npapp
webapp -->|REST/JSON| api
webapp -->|embedded buy flow| shopify
npapp -->|REST/JSON| api
api -->|SQL| db
api -->|Shopify API| shopify
api -->|2FA SMS| sms
api --> intake
api --> compliance
intake -->|SQL| db
intake --> storage
intake -->|LLM API| llm
intake -->|voice API| voiceai
intake -->|callback SMS| sms
compliance -->|SQL| db
compliance -->|API| idv
compliance -->|API| college
compliance --> hc
style patient fill:#08427b,stroke:#073b6e,color:#fff
style np fill:#08427b,stroke:#073b6e,color:#fff
style webapp fill:#438dd5,stroke:#3a7bc0,color:#fff
style npapp fill:#438dd5,stroke:#3a7bc0,color:#fff
style api fill:#438dd5,stroke:#3a7bc0,color:#fff
style intake fill:#438dd5,stroke:#3a7bc0,color:#fff
style compliance fill:#438dd5,stroke:#3a7bc0,color:#fff
style db fill:#438dd5,stroke:#3a7bc0,color:#fff
style storage fill:#438dd5,stroke:#3a7bc0,color:#fff
style kinloch fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style shopify fill:#999,stroke:#777,color:#fff
style llm fill:#999,stroke:#777,color:#fff
style voiceai fill:#999,stroke:#777,color:#fff
style sms fill:#999,stroke:#777,color:#fff
style idv fill:#999,stroke:#777,color:#fff
style college fill:#999,stroke:#777,color:#fff
style hc fill:#999,stroke:#777,color:#fff
9 components: discovery, commerce, account management, and patient dashboard
flowchart LR
patient["Patient"]
subgraph webapp["Patient Web Application"]
wheel["Kinloch Wheel
Terpene education, recommendations"]
browse["Product Browse Page
Product grid, filters, details"]
agegate["Age Verification Gate
Cannabis content gate [Extended]"]
cart["Shopping Cart
Persistent cart, restoration"]
checkout["Checkout Gate
Auth lock/unlock logic"]
signup["Account Creation Flow
3-screen form, email verify"]
login["Login and Session Mgmt
Email/password, sessions"]
twofa["Two-Step Verification
SMS, authenticator, backup codes"]
dashboard["Patient Dashboard
Auth status, orders, settings"]
end
api["Platform API
REST API"]
shopify["Shopify"]
patient --> wheel
patient --> dashboard
wheel --> api
browse --> api
agegate --> api
cart --> api
cart --> shopify
checkout --> api
signup --> api
login --> api
twofa --> api
dashboard --> api
style patient fill:#08427b,stroke:#073b6e,color:#fff
style webapp fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style api fill:#438dd5,stroke:#3a7bc0,color:#fff
style shopify fill:#999,stroke:#777,color:#fff
style wheel fill:#85bbf0,stroke:#6fa8e0,color:#000
style browse fill:#85bbf0,stroke:#6fa8e0,color:#000
style agegate fill:#85bbf0,stroke:#6fa8e0,color:#000
style cart fill:#85bbf0,stroke:#6fa8e0,color:#000
style checkout fill:#85bbf0,stroke:#6fa8e0,color:#000
style signup fill:#85bbf0,stroke:#6fa8e0,color:#000
style login fill:#85bbf0,stroke:#6fa8e0,color:#000
style twofa fill:#85bbf0,stroke:#6fa8e0,color:#000
style dashboard fill:#85bbf0,stroke:#6fa8e0,color:#000
6 components: case management, clinical review, authorization decisions, and NP operations
flowchart LR
np["Nurse Practitioner"]
subgraph npapp["NP Workbench"]
queue["Case Queue Dashboard
Queue view, filters, risk levels"]
review["Case Review Interface
3-column: summary, meds, decision"]
decision["Decision Workflow
Approve/decline/flag, e-signature"]
dispatch["NP Dispatch and Notification
Assignment, claim window, escalation"]
avail["NP Availability Mgmt
Online/idle/offline, queue depth"]
comp["NP Compensation Tracking
Per-case earnings, case history"]
end
api["Platform API
REST API"]
np --> queue
np --> review
queue --> api
review --> api
decision --> api
dispatch --> api
avail --> api
comp --> api
style np fill:#08427b,stroke:#073b6e,color:#fff
style npapp fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style api fill:#438dd5,stroke:#3a7bc0,color:#fff
style queue fill:#85bbf0,stroke:#6fa8e0,color:#000
style review fill:#85bbf0,stroke:#6fa8e0,color:#000
style decision fill:#85bbf0,stroke:#6fa8e0,color:#000
style dispatch fill:#85bbf0,stroke:#6fa8e0,color:#000
style avail fill:#85bbf0,stroke:#6fa8e0,color:#000
style comp fill:#85bbf0,stroke:#6fa8e0,color:#000
7 backend service components handling discovery, commerce, auth, registration, and NP workflow
flowchart TD
webapp["Patient Web App"]
npapp["NP Workbench"]
subgraph api["Platform API"]
discovery["Discovery Service
Recommendation engine, product matching"]
commerce["Commerce Service
Cart persistence, checkout, Shopify integration"]
auth["Auth Service
Account creation, login, sessions, 2FA"]
registration["Patient Registration Engine
Unique patient ID, expiry management"]
authstatus["Authorization Status API
Active/expired/pending/none + expiry"]
orders["Order and Fulfillment Service
Order status and tracking from Shopify"]
npworkflow["NP Workflow Service
Case assignment, dispatch, availability"]
end
db[("Application Database
PostgreSQL")]
shopify["Shopify"]
sms["SMS Provider"]
intake["AI Clinical Intake Engine"]
compliance["Compliance Service"]
discovery --> db
commerce --> db
commerce --> shopify
auth --> db
auth --> sms
registration --> db
authstatus --> db
orders --> shopify
npworkflow --> db
npworkflow --> sms
npworkflow --> intake
npworkflow --> compliance
style webapp fill:#438dd5,stroke:#3a7bc0,color:#fff
style npapp fill:#438dd5,stroke:#3a7bc0,color:#fff
style api fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style db fill:#438dd5,stroke:#3a7bc0,color:#fff
style shopify fill:#999,stroke:#777,color:#fff
style sms fill:#999,stroke:#777,color:#fff
style intake fill:#438dd5,stroke:#3a7bc0,color:#fff
style compliance fill:#438dd5,stroke:#3a7bc0,color:#fff
style discovery fill:#85bbf0,stroke:#6fa8e0,color:#000
style commerce fill:#85bbf0,stroke:#6fa8e0,color:#000
style auth fill:#85bbf0,stroke:#6fa8e0,color:#000
style registration fill:#85bbf0,stroke:#6fa8e0,color:#000
style authstatus fill:#85bbf0,stroke:#6fa8e0,color:#000
style orders fill:#85bbf0,stroke:#6fa8e0,color:#000
style npworkflow fill:#85bbf0,stroke:#6fa8e0,color:#000
4 components: questionnaire, voice recording, AI summary generation, and callback scheduling
flowchart LR
api["Platform API
Orchestrates intake"]
subgraph intake["AI Clinical Intake Engine"]
questionnaire["Questionnaire Engine
46 questions, 9 phases
Form + callback paths"]
voice["Voice Recording Manager
Voice capture, transcripts
Encrypted storage"]
summary["Clinical Summary Generator
AI summary, contraindication flags
Completeness score"]
callback["Callback Scheduler
Callback windows, 1-hour retry
SMS fallback"]
end
db[("Application Database
PostgreSQL")]
storage[("Object Storage
S3")]
llm["AI/LLM Provider
OpenAI, Anthropic"]
voiceai["Voice AI Platform
Twilio Voice, Vapi"]
sms["SMS Provider
Twilio"]
questionnaire --> db
voice --> storage
voice --> voiceai
summary --> llm
summary --> db
callback --> sms
style api fill:#438dd5,stroke:#3a7bc0,color:#fff
style intake fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style db fill:#438dd5,stroke:#3a7bc0,color:#fff
style storage fill:#438dd5,stroke:#3a7bc0,color:#fff
style llm fill:#999,stroke:#777,color:#fff
style voiceai fill:#999,stroke:#777,color:#fff
style sms fill:#999,stroke:#777,color:#fff
style questionnaire fill:#85bbf0,stroke:#6fa8e0,color:#000
style voice fill:#85bbf0,stroke:#6fa8e0,color:#000
style summary fill:#85bbf0,stroke:#6fa8e0,color:#000
style callback fill:#85bbf0,stroke:#6fa8e0,color:#000
8 components: medical documents, audit trail, regulatory reporting, IDV, and license verification
flowchart TD
api["Platform API
Triggers compliance workflows"]
subgraph compliance["Compliance and Regulatory Service"]
meddoc["Medical Document Generator
Part 14 authorization, e-signature"]
ledger["Compliance Ledger
WORM audit log, 1-year baseline"]
amendment["Amendment and Revocation Engine
ss.137-139 workflows"]
hcreport["Health Canada Reporter
Monthly s.297 reports, scheduler"]
provincial["Provincial Disclosure Module
s.299 disclosure packs"]
licensing["Licensing Notice Module
s.277 templated notices"]
idvint["IDV Integration
Jumio/Persona/Veriff [Extended]"]
licverify["Practitioner License Verification
Provincial college lookups [Extended]"]
end
db[("Application Database
PostgreSQL")]
hc["Health Canada
Regulatory authority"]
idv["IDV Provider"]
college["Provincial College Registry"]
meddoc --> db
ledger --> db
amendment --> db
hcreport --> hc
provincial --> hc
licensing --> hc
idvint --> idv
licverify --> college
style api fill:#438dd5,stroke:#3a7bc0,color:#fff
style compliance fill:#0d1b2a,stroke:#1e3a5f,color:#fff
style db fill:#438dd5,stroke:#3a7bc0,color:#fff
style hc fill:#999,stroke:#777,color:#fff
style idv fill:#999,stroke:#777,color:#fff
style college fill:#999,stroke:#777,color:#fff
style meddoc fill:#85bbf0,stroke:#6fa8e0,color:#000
style ledger fill:#85bbf0,stroke:#6fa8e0,color:#000
style amendment fill:#85bbf0,stroke:#6fa8e0,color:#000
style hcreport fill:#85bbf0,stroke:#6fa8e0,color:#000
style provincial fill:#85bbf0,stroke:#6fa8e0,color:#000
style licensing fill:#85bbf0,stroke:#6fa8e0,color:#000
style idvint fill:#85bbf0,stroke:#6fa8e0,color:#000
style licverify fill:#85bbf0,stroke:#6fa8e0,color:#000
End-to-end patient lifecycle from first visit through registration, discovery, and purchase
Complete lifecycle from first visit through discovery, intake, authorization, and first purchase
flowchart TD
A([Marketing drives traffic]) --> B[Age Verification Gate]
B --> C[Patient explores Kinloch Wheel]
C --> D[Patient browses Product Browse Page]
D --> E[Patient adds to Shopping Cart]
E --> F[Checkout Gate blocks: no auth]
F --> G[Account Creation Flow + 2FA]
G --> H[Patient Registration Engine: unique ID]
H --> I[AI Clinical Intake: 46 Qs, 9 phases]
I --> J[Clinical Summary via AI/LLM]
J --> K[NP Workflow Service assigns case]
K --> L[NP reviews in Case Review Interface]
L --> M[NP approves via Decision Workflow]
M --> N[Medical Document: Part 14 auth]
N --> O[Auth Status API: patient active]
O --> P[Patient returns to Shopping Cart]
P --> Q[Checkout Gate unlocks]
Q --> R[Shopify processes payment]
R --> S[Patient Dashboard: order + auth status]
S --> T([Compliance Ledger: full audit trail])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style F fill:#3a2a1a,stroke:#ed8936,color:#fff
style O fill:#1a3a2a,stroke:#48bb78,color:#fff
style T fill:#1a3a2a,stroke:#48bb78,color:#fff
New patient creates account with age verification, email confirmation, and 2FA setup
flowchart TD
A([Patient arrives]) --> B[Age Verification Gate]
B --> C[Account Creation Flow: 3-screen form]
C --> D[Identity fields collected]
D --> E[Auth Service sends email verification]
E --> F[Patient confirms email]
F --> G[Patient Registration Engine: unique ID]
G --> H{2FA Setup Method}
H -->|SMS| I[Auth Service sends code via SMS Provider]
I --> J[Patient enters SMS code]
H -->|Authenticator| K[Auth Service generates QR code]
K --> L[Patient scans QR and confirms]
J --> M[Patient Dashboard: account ready]
L --> M
M --> N([Compliance Ledger: account creation recorded])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style H fill:#2d1b4e,stroke:#9f7aea,color:#fff
style M fill:#1a3a2a,stroke:#48bb78,color:#fff
style N fill:#1a3a2a,stroke:#48bb78,color:#fff
Returning patient authenticates with credentials and 2FA
flowchart TD
A([Patient opens app]) --> B[Login and Session Management]
B --> C[Patient enters email/password]
C --> D{Auth Service validates}
D -->|Valid| E[Two-Step Verification prompt]
E --> F[Patient completes 2FA]
F --> G[Persistent session established]
G --> H([Patient Dashboard loaded])
D -->|Invalid| I[Failed attempt counter incremented]
I --> J[Error displayed, retry allowed]
D -->|Account Locked| K[Login blocked]
K --> L([Lockout message with recovery])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style D fill:#2d1b4e,stroke:#9f7aea,color:#fff
style H fill:#1a3a2a,stroke:#48bb78,color:#fff
style L fill:#742a2a,stroke:#fc8181,color:#fff
Patient explores products via Kinloch Wheel, browses catalogue, adds to cart, and completes purchase through Shopify
flowchart TD
A([Patient opens app]) --> B[Kinloch Wheel presents terpene education]
B --> C[Discovery Service generates recommendations]
C --> D[Patient browses Product Browse Page]
D --> E[Patient adds to Shopping Cart]
E --> F[Commerce Service persists cart]
F --> G[Patient proceeds to Checkout Gate]
G --> H{Authorization Status API check}
H -->|Active Auth| I[Checkout Gate unlocks]
I --> J[Shopify processes payment]
J --> K[Order and Fulfillment Service gets data]
K --> L([Patient Dashboard shows tracking])
H -->|No Account / Expired| M[Checkout Gate blocks purchase]
M --> N([Cart preserved for later])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style L fill:#1a3a2a,stroke:#48bb78,color:#fff
style N fill:#3a2a1a,stroke:#ed8936,color:#fff
style H fill:#2d1b4e,stroke:#9f7aea,color:#fff
Preserved cart restored after patient completes authorization
flowchart TD
A[Patient had items in cart] --> B[Checkout Gate blocked: no auth]
B --> C[Commerce Service persists cart in DB]
C --> D[Patient completes intake + NP authorization]
D --> E[Auth Status API confirms active]
E --> F[Patient returns to app]
F --> G[Shopping Cart restores saved items]
G --> H[Checkout Gate unlocks]
H --> I([Shopify embedded buy flow])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style B fill:#3a2a1a,stroke:#ed8936,color:#fff
style E fill:#1a3a2a,stroke:#48bb78,color:#fff
style I fill:#1a3a2a,stroke:#48bb78,color:#fff
Core clinical workflow from AI intake through NP decision and case management
46-question, 9-phase AI clinical intake via form or voice, producing structured clinical summary for NP review
flowchart TD
A([Patient initiates intake]) --> B[Platform API routes to AI Intake Engine]
B --> C{Intake path selection}
C -->|Form-based| D[Patient completes form UI]
D --> E[Questionnaire Engine stores responses]
C -->|Callback-based| F[Patient selects callback window]
F --> G[Callback Scheduler sends SMS confirmation]
G --> H[Voice AI Platform calls patient]
H --> I[Voice Recording Manager captures audio]
I --> J[Recordings stored in Object Storage]
E --> K[Clinical Summary Generator calls LLM]
J --> K
K --> L[AI/LLM Provider returns structured summary]
L --> M[Summary stored with contraindication flags]
M --> N[Compliance Ledger records consent]
N --> O([Case ready for NP review])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style C fill:#2d1b4e,stroke:#9f7aea,color:#fff
style O fill:#1a3a2a,stroke:#48bb78,color:#fff
Patient misses scheduled callback, system retries after 1 hour, falls back to SMS
flowchart TD
A[Callback Scheduler triggers call] --> B[Voice AI Platform calls patient]
B --> C[Call goes unanswered]
C --> D[Missed callback recorded in DB]
D --> E[Wait 1 hour]
E --> F[Voice AI Platform retries]
F --> G{Patient answers?}
G -->|Yes| H[Voice Recording Manager begins intake]
H --> I([Questionnaire continues])
G -->|No| J[SMS fallback via SMS Provider]
J --> K([Patient gets link to reschedule])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style G fill:#2d1b4e,stroke:#9f7aea,color:#fff
style I fill:#1a3a2a,stroke:#48bb78,color:#fff
style K fill:#3a2a1a,stroke:#ed8936,color:#fff
New case assigned to available NP with claim window, escalation, and notification
flowchart TD
A[Clinical Summary marks case ready] --> B[Check NP Availability Management]
B --> C[NP Dispatch assigns to best-match NP]
C --> D[Push/SMS notification via SMS Provider]
D --> E{NP responds?}
E -->|Claims within window| F[Case locked to NP]
F --> G([Case Queue Dashboard updated])
E -->|Claim window expires| H[Escalation logic triggered]
H --> I[Reassign to next available NP]
I --> J([New notification sent])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style E fill:#2d1b4e,stroke:#9f7aea,color:#fff
style G fill:#1a3a2a,stroke:#48bb78,color:#fff
style J fill:#3a2a1a,stroke:#ed8936,color:#fff
NP reviews AI-generated clinical summary, makes authorization decision, generates medical document
flowchart TD
A[NP Workflow Service assigns case] --> B[SMS notification to NP]
B --> C([NP opens Workbench])
C --> D[Case Queue Dashboard shows queue]
D --> E[NP claims case]
E --> F[Case Review Interface: 3-column view]
F --> G[NP reviews summary and flags]
G --> H{NP Decision}
H -->|Approve| I[Medical Document Generator: Part 14 doc]
I --> J[NP applies e-signature]
J --> K[Auth Status API: patient = active]
K --> L[Patient notified: authorized]
H -->|Decline| M[Decision Workflow records refusal]
M --> N[Amendment Engine: ss.137-139]
N --> O[Patient notified: declined]
H -->|Flag| P[Case flagged for escalation]
P --> Q[NP Dispatch escalates to senior NP]
L --> R[Compliance Ledger records events]
O --> R
Q --> R
R --> S([NP Compensation logged])
style C fill:#1a365d,stroke:#3182ce,color:#fff
style H fill:#2d1b4e,stroke:#9f7aea,color:#fff
style L fill:#1a3a2a,stroke:#48bb78,color:#fff
style O fill:#742a2a,stroke:#fc8181,color:#fff
style S fill:#1a3a2a,stroke:#48bb78,color:#fff
Active authorization amended or revoked under Cannabis Regulations ss.137-139
flowchart TD
A([NP initiates from Workbench]) --> B[Amendment Engine loads authorization]
B --> C{Action type}
C -->|Amendment| D[Record amendment details]
D --> E[Medical Document Generator: amended doc]
E --> F[Auth Status API: updated terms]
C -->|Revocation| G[Record revocation reason: ss.137-139]
G --> H[Auth Status API: expired immediately]
H --> I[Checkout Gate blocks future purchases]
F --> J[Patient notified via Dashboard]
I --> J
J --> K[Compliance Ledger: audit trail]
K --> L([Licensing Notice Module: s.277 if required])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style C fill:#2d1b4e,stroke:#9f7aea,color:#fff
style I fill:#742a2a,stroke:#fc8181,color:#fff
style L fill:#1a3a2a,stroke:#48bb78,color:#fff
Order lifecycle and Shopify integration after purchase
Order status and tracking data flows from Shopify to patient dashboard
flowchart TD
A[Shopify updates order status] --> B[Order and Fulfillment Service detects change]
B --> C[Updated order data stored in DB]
C --> D[Patient opens Patient Dashboard]
D --> E([Dashboard displays order status and tracking])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style E fill:#1a3a2a,stroke:#48bb78,color:#fff
Verification, audit trail, and mandatory reporting under the Cannabis Act
Patient identity verified via third-party IDV provider during registration
flowchart TD
A([Patient completes account creation]) --> B[IDV Integration initiates session]
B --> C[Patient submits documents via IDV Provider]
C --> D{IDV Provider result}
D -->|Verified| E[Store verified status in DB]
E --> F[Registration marked identity-confirmed]
D -->|Failed| G[Store failure reason]
G --> H([Patient prompted to retry])
F --> I([Compliance Ledger records IDV result])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style D fill:#2d1b4e,stroke:#9f7aea,color:#fff
style F fill:#1a3a2a,stroke:#48bb78,color:#fff
style H fill:#742a2a,stroke:#fc8181,color:#fff
NP license verified against provincial college registry before case assignment
flowchart TD
A[NP Workflow Service: pre-assignment check] --> B{Provincial College Registry lookup}
B -->|License Active| C[Confirm validity, store result]
C --> D[Proceed with case assignment]
B -->|Not Found / Expired| E[Flag NP for manual review]
E --> F[NP set to offline pending verification]
B -->|Unsupported Province| G[Manual verification fallback]
G --> H[Hold case assignment]
D --> I([Compliance Ledger records verification])
F --> I
H --> I
style A fill:#1a365d,stroke:#3182ce,color:#fff
style B fill:#2d1b4e,stroke:#9f7aea,color:#fff
style D fill:#1a3a2a,stroke:#48bb78,color:#fff
style F fill:#3a2a1a,stroke:#ed8936,color:#fff
Automated monthly reports generated and submitted under s.297
flowchart TD
A[Deadline scheduler triggers report] --> B[Query DB for reporting period events]
B --> C[Aggregate data into s.297 format]
C --> D[Submit report to Health Canada]
D --> E[Health Canada acknowledges receipt]
E --> F[Log submission confirmation in DB]
F --> G([Compliance Ledger records submission])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style G fill:#1a3a2a,stroke:#48bb78,color:#fff
Scoped disclosure packs submitted to provincial authorities under s.299
flowchart TD
A[Identify disclosure obligation] --> B[Query DB for authorization records]
B --> C[Assemble scoped disclosure pack: s.299]
C --> D[Transmit via secure channel]
D --> E[Log in secure transmission log]
E --> F([Compliance Ledger records disclosure])
style A fill:#1a365d,stroke:#3182ce,color:#fff
style F fill:#1a3a2a,stroke:#48bb78,color:#fff