Customer Data Isolation
Each customer organisation operates inside its own sealed boundary. No clinical data crosses between customers, and the platform operator cannot read inside any of them.
What this covers
Each customer organisation operates inside its own sealed boundary. No clinical data crosses between customers, and the platform operator cannot read inside any of them.
Why this matters
Healthcare organisations cannot share a database with their competitors, peers, or even sister facilities — patient privacy law (GDPR in the EU, country-specific health data acts, professional confidentiality duties) treats every patient record as the property of the treating organisation.
A SaaS platform that mixes customer data into shared tables would not pass any procurement review at a hospital, network, or ministry of health. Even when nothing technically goes wrong, the possibility of cross-customer leakage — through a faulty query, a misconfigured admin tool, or a breached support account — is a contractual non-starter.
Customer data isolation removes the possibility by construction. Each customer gets their own data boundary; the platform's own operations team sits outside it; and every request the platform serves is bound to exactly one customer organisation. When the legal department asks "could one of our customers see another customer's records?" the answer is "no, the architecture does not allow it" — not "no, we have policies against it".
What's in the box
-
One customer, one boundary. Each customer organisation's clinical data lives in its own dedicated clinical data boundary. There is no shared patient table, no shared search index, no join path between customers.
-
Scoped to one organisation identity. The token issued at login binds every subsequent request to exactly one customer organisation. The platform refuses to serve any clinical content if the customer organisation on the URL does not match the customer organisation on the token.
-
Stateless, bound to one organisation compute. Processes that serve requests and run background work hold no persistent state of their own. Each request and each workflow execution operates inside one customer organisation's context and can reach only that customer organisation's data — no in-memory cache, shared session, or between customers background job.
-
Operator structurally locked out. Platform operators (
mom, the vendor's own ops staff) hold no key, no credential, and no identity that grants access to customer organisation clinical content. "Operator can read" is not a discipline question; the keys are not on their keyring. -
Background work partitioned. Long-running clinical operations (transcription pipelines, summarisation, reminders) run in per organisation lanes; one customer's queue never delays or interleaves with another's.
-
Encrypted-field catalogue is regulator-readable. The list of fields the platform encrypts at rest lives in FHIR Implementation Guide profiles — readable by regulators in their own language, not buried in source code. A misconfigured customer organisation cannot weaken the platform's or the jurisdiction's declarations because the IG-load enforces monotonic-only at boot.
-
Boundary travels with the customer. Export and disposal operate at project granularity. A customer leaving (or being acquired, or reorganised) takes their data with them as a discrete unit — there is nothing to disentangle from anyone else's records.
Standards we lean on
- GDPR Articles 5 and 32 — integrity and confidentiality; security of processing through structural separation.
- HIPAA 45 CFR 164.312 — technical safeguards: access control, encryption, audit, integrity.
- ISO/IEC 27018 — cloud processor obligations: customer organisation separation, no secondary use, structural operator lockout.
- HL7 FHIR — the per organisation project is itself a standard FHIR resource boundary.
What customers and operators experience
- A hospital signing on receives its own dedicated clinical data boundary on day one. Storage, search, and workflow execution are bound to one organisation — nothing persistent is pooled with another customer.
- A clinician logging in is bound to their organisation for the duration of their session. They cannot accidentally land on another hospital's URL — the platform refuses to serve content from another customer even when constructed deliberately.
- The platform's own operators can manage customer organisations (create, suspend, bill) but cannot read inside any customer organisation's clinical data. The common SaaS failure mode — a support engineer browses customer records to "help" — is simply not technically possible here.
- A regulator auditing can be shown a clean structural proof: every record carries its customer organisation label, every request carries its customer organisation claim, the two must match for the request to succeed.
- A customer leaving the platform takes their data with them as a discrete unit. There is nothing to disentangle from anyone else's records.
Limits and trade-offs
- Cost. A dedicated boundary per customer costs more than a shared database with row-level filtering. The platform accepts the overhead because regulatory clarity is worth far more than the saving.
- Cross-customer organisation analytics are deliberately not a feature. No "all our customers' data combined" report exists. Customers wanting industry benchmarks must contribute through the Consented Data Use programme, which has its own boundary.
- Internal partitioning happens inside a customer organisation. Departments, clinics, and units share the customer's boundary; finer-grained access control (who in cardiology can read psychiatry's notes) is layered on top, not delivered by it.
- Some shared compute is unavoidable. Audio capture, transcription, anonymisation, AI routing run as shared platform pipelines; each invocation processes exactly one customer organisation's data inside a stateless step. Raw content lives only for the duration of that call.
- Operator lockout has layers, not absolutes. The application tier and key-management tier each refuse operator reach. The platform's own threat model honestly documents the residual gaps — most importantly, the runtime process today still concentrates more privilege than it eventually will. See the runtime threat model (Shortcoming 3) and the privilege-separation roadmap that closes it.
Customer lifecycle
The customer boundary has a temporal dimension as well as a structural one: customers arrive, change, sometimes leave. Each transition has both an operational dimension (provisioning, suspension for billing, decommissioning) and a regulatory dimension — GDPR-style frameworks give customers and patients the right to have their data removed, but also expect data to be preserved long enough for legitimate audit and dispute resolution.
A customer organisation lifecycle handled by spreadsheets and runbooks is fragile. Steps get skipped. Suspension forgets to actually freeze access. Deletion forgets to remove a backup. Reactivation forgets to restore a configuration. Each gap is a future audit finding or a future incident.
Building customer organisation lifecycle into the same isolation boundary replaces "we have a checklist" with "the platform refuses to be in an inconsistent state". A customer's transitions become events the platform performs, audits, and can prove happened.
What's in the box (lifecycle)
- Lifecycle transitions are durable workflows. Creation, suspension, reactivation, and scheduled deletion are each a long-running process the platform manages — not a sequence of manual API calls. They survive platform restarts, are individually auditable, and complete or report failure unambiguously.
- Grace period as a managed timer. When deletion is initiated, a 30-day clock starts inside the platform's workflow engine. It survives restarts. It can be cancelled by a single reactivation signal. When it fires, the actual deletion runs as another workflow.
- Declarative provisioning. Customers and their configuration (departments, default users, module selection, zone) are described in the declarative customer organisation configuration source the platform reads. An operator describes a customer organisation; the platform enacts it. There is no hand-built customer organisation.
- Every transition is an audit event. Created, suspended, reactivated, disposal-started, disposal-cancelled, deleted — each emits a typed event into the audit trail, dual-logged to the platform's own trail and the affected customer organisation's trail.
- One customer organisation, one lifetime. A clinical record belongs to exactly one customer organisation for its lifetime. Migrating data between customer organisations are not self-service; merging or moving requires explicit operator and regulatory engagement.
- External notification, not enforcement. When a customer organisation is deleted, partners that hold derived data (insurance, registries, downstream EHRs) are notified to delete from their side. The platform produces the notification; it cannot enforce the partner's compliance.
Standards (lifecycle)
- GDPR Article 17 — right to erasure. Defined grace window, unambiguous deletion at the end.
- GDPR Article 7(3) — withdrawal as easy as giving consent. Reactivation cancels deletion in one step.
- ISO/IEC 27018 — return-or-destroy on contract end. Cloud processor obligations for end-of-relationship data handling.
- HL7 FHIR Bulk Data Export — the standard format for the customer's data export when leaving.
Lifecycle experience
- A new customer can be onboarded within hours of contract signature. The platform provisions everything they need — clinical data boundary, default users, baseline configuration — in one end-to-end workflow.
- A customer that has fallen behind on payment can be suspended cleanly: data sits frozen, users cannot log in, and the platform charges nothing for activity that no longer happens. Reactivation is a single action.
- A customer choosing to leave triggers a defined grace period — typically thirty days — during which they can pull their data, resolve disputes, or change their mind. After the grace period the data is structurally deleted.
- A customer that changed their mind during the grace period cancels deletion in one step. The countdown stops; the customer is back to normal operation.
- A platform operator sees the status of every customer organisation on one screen: active, suspended, or counting down to deletion. No customer organisation is ever in a half-deleted, half-active limbo.
- A regulator asking "when did this customer's data become inaccessible?" can be shown a precise audit trail of every lifecycle transition, with timestamps and the operator who authorised it.
Lifecycle limits and trade-offs
- Within the grace window, deletion is reversible. Outside it, it is not. The platform deliberately does not keep recoverable copies past the grace period; that would defeat the regulatory point of right-to-erasure.
- External systems must be informed separately. The platform produces the notification; partners must enact deletion on their own side.
- Migrating data between customer organisations are not self-service. A clinical record belongs to one customer organisation for its lifetime; merging or moving requires operator and regulatory engagement.
- Configuration changes are workflows too. Large changes require more than a casual edit, by design. The cost is worth the consistency.