Security

Consent is enforced in the database, not an app setting.

Names, roles and read-paths are database rules. No checkbox UI can weaken what the database refuses.

01

The patient grants access

Access is granted scope by scope — diagnostics, pharmacy, referrals — and revocable at any time. The grant is the patient's, not the clinic's.

Access scopes / PT-42201-******7-1Live
Diagnostics & labsgranted
Pharmacy & prescriptionsgranted
Specialist referralsgranted
Mental healthdenied
3 scopes granted · 1 deniedrevocable at any time
02

Denial always wins

A denied scope fails closed. No fallback, no override, no silent default-open. The refusal is written to the ledger like every other event.

Audit ledger / read attemptsappend-only
09:41:07diagnostics read by City General Labsgranted
09:38:52mental-health requested by Off-network clinicdenied
09:22:14pharmacy read by Wumi Pharmacygranted
08:57:33reproductive-health requested by Off-network clinicdenied
read-path: database rulerefusal unlogged = impossible
03

Every read is audited

The ledger is append-only and hash-linked: each entry commits to the one before it. A removed or altered record breaks the chain on inspection.

Audit chain / hash-linkedLive
5 entries · append-only
Interactive

Try refusing.

This is the whole product in one gesture. Flip a switch. Watch the ledger. Deny everything — nothing breaks, because denial is a first-class state, not an error.

interactive · no data leaves this page

Access scopes

Chain

append-only

4 scopes granted · 2 denied · ledger appendedhead · appended on every change
Refusal, step by step
STEP 01

A read request arrives.

A clinic, lab, or pharmacy asks for a scope. The request names the actor, the scope, and the moment.

STEP 02

The gate checks the grant.

The database matches the request against the patient's declared scopes. Fail-closed: a check that cannot complete is a denial.

STEP 03

Deny ink writes the line.

The refusal lands in the append-only ledger with the same weight as a grant. Nothing is overwritten, nothing is quietly dropped.

Security posture
748
Security assertions passing
measured against the repository
40
Tables under row-level security
26
Audit tables · append-only
PHI encrypted
free text at rest
Not shipped

Named as unshipped, not claimed: scheduling, billing, messaging, analytics and the patient app come next. Nothing on this page is a promise about dates.

SchedulingBillingMessagingAnalyticsPatient app

Ask us anything.

Diligence readers get the same answer clinics do: the mechanism, the rule, the receipt.

Ask us anything

your patient data never touches this page