Tenant isolation, enforced by the database
Every table carrying customer data runs forced row-level security keyed to the organization. A query that is not scoped returns nothing: the system fails closed. The application connects as a role that cannot bypass those policies, and the isolation test suite asserts that property before it asserts anything else.
PHI never reaches a log, a URL or a notification
Two independent mechanisms: a build-time gate that fails the release if a protected field reaches a logging call, and a runtime redactor that scrubs protected data from anything serialized. Notifications say that something needs attention and link into the platform; clinical detail never travels outbound.
Append-only access records
Every access to protected data is written to a log the application has no permission to alter or delete; those grants are revoked at the database. An audit log the application can rewrite is not an audit log.
An immutable evidence archive
Every event is stored exactly as your system sent it, before interpretation, on storage the application cannot modify. This is what makes an audit response evidentiary: what you produce is what you received.
Mandatory multi-factor authentication
Every account touching protected data or financial figures authenticates with a second factor. There is no administrative opt-out. Credentials are hashed with argon2id; TOTP seeds are encrypted with AES-256-GCM.
Encryption everywhere data moves or rests
TLS 1.2 or higher on every connection, including the per-store webhook your pharmacy system posts to. Encryption at rest across the data layer. Webhook credentials are hashed, per store, and individually revocable.