These are properties of how the system is built, not settings someone has to remember to switch on. That is why they hold on every page rather than the ones we thought of.
The database keeps organisations apart, not our codeEvery table
Every table has row-level security switched on, without exception, and the database checks it on every single read and write. Our application code never filters by organisation at all — which means a query that forgets to scope returns nothing, rather than returning somebody else's participants.
A logged-out request cannot reach a single rowNo grants
The anonymous database role has no permission on any table. Even if one of the tenancy rules were written wrongly, an unauthenticated request still could not try — the permission it would need to attempt the read does not exist.
Your documents are walled off the same way your records are
Files sit in a private bucket whose rules match on your organisation's own folder, so a document is protected by the same boundary as a database row. When someone downloads one, the link is signed and stops working after 60 seconds.
Nothing in the history can be quietly changed
Clinical, compliance and financial changes are written to the trail by the database itself, and each entry carries a fingerprint of the one before it. Edit or delete an entry and the chain visibly breaks — and anyone can walk it end to end to check. Not even the account that owns the table can rewrite an entry.
The history records that something changed, not the private details
Where a change touches personal information, the trail stores which field changed and a fingerprint of the value, never the value itself. So it can prove what happened and who did it without becoming a second copy of the very data it is there to protect.
Permission comes from the job, never the job title
Every check asks whether this person may do this specific thing to this specific kind of record. Nothing anywhere in the system decides based on what someone's role is called. That is why you can invent your own roles without us writing code, and why a role you made is enforced exactly as strictly as one we shipped.
The dangerous actions need a second factor
Sign-in supports an authenticator app. The operations that could affect more than one organisation are gated on a session that has genuinely completed that second step, so knowing a password is not enough to reach them.
Everything stays in Australia — both halves of itSydney
The database runs in Sydney and so do the servers that answer your requests. Most vendors quote you the storage location and go quiet about where the processing happens. Both of ours are here.
Loading a page tells nobody outside CareOp that you did
Typefaces are served from our own servers, and the browser is not permitted to fetch a font, script or stylesheet from anywhere else. There is no third-party network in the path between you and your records.
The browser is never trusted with a master key
Only the public address and a publishable key ever reach your browser. The key that could bypass all of the above exists in no code that runs anywhere near a request.