Audit log
A tamper-evident record of every action taken in your clinic.
Chartling maintains a continuous audit log of all significant actions. Every entry is linked to a specific user, timestamped to the second, and chained to the previous entry using a cryptographic hash. The chain makes it impossible to insert, delete, or modify historical entries without breaking the audit trail โ which is immediately visible in the log viewer.
What's logged
| Category | Events logged |
|---|---|
| Clinical | SOAP note created, signed, cosigned; medications prescribed, dispensed, witnessed |
| Controlled substances | Every dispense, witness, and reconciliation with full details |
| Billing | Invoices created, updated, voided; payments collected, refunded |
| Patient records | Patient created, edited, status changed (active โ inactive โ deceased) |
| Client records | Client created, edited, portal access granted or revoked |
| Team | Users invited, activated, deactivated; permission packs changed |
| Settings | Clinic settings changed; module configurations updated |
| Authentication | Successful logins; failed login attempts; password resets |
| Data export | Exports initiated, download links generated |
How the hash chain works
Each audit log entry includes two hash fields:
- this_hash โ a cryptographic hash of the current entry's contents
- prev_hash โ the
this_hashof the immediately preceding entry
This creates a chain: any modification to an earlier entry changes its hash, which breaks the chain at that point and all subsequent entries. The log viewer shows the chain status โ green for valid, red for any detected break. A broken chain is immediate evidence that the record has been altered.
Hash computation happens at the database level via a trigger, not in application code. This means the chain is enforced even if the application layer is bypassed.
Viewing the log
The audit log is accessible to users with the Admin permission pack. Go to Settings โ Audit log. The log can be:
- Filtered by user, date range, event type, or patient
- Sorted by date (newest first by default)
- Searched by keyword (e.g. a patient name or drug name)
Each entry shows the actor (who), action (what), target (which record), timestamp, and whether the hash chain is intact.
Exporting the log
From the audit log view, click Export to download a filtered or full export as CSV or PDF. Exports include the hash values so chain integrity can be independently verified. Exports are themselves logged โ if someone exports the audit log, that action appears in the log.
Audit log entries are write-once. No user โ including Admins โ can delete or edit audit log entries through the Chartling interface. The only way to invalidate the chain is direct database modification, which is logged at the Supabase infrastructure level.
FAQ
Only users with the Admin permission pack can view the full audit log. Practice managers can view a filtered version scoped to clinical and billing events for their own patients. Staff members cannot see their own entries or other users' actions.
Audit logs are retained indefinitely while your clinic is active on Chartling. If you close your account, you'll receive a full audit log export. The log is included in your data export package โ see Data export.
The audit log, combined with the controlled substance log, provides a strong foundation for DEA and state board compliance. However, specific regulatory requirements vary by state and jurisdiction โ consult your state veterinary board or a compliance advisor to confirm that Chartling's records satisfy your specific obligations.
A broken chain means one or more historical entries have been modified after they were written. This should never happen under normal operation. If you see a broken chain in production, contact support@chartling.io immediately โ our team can investigate at the database infrastructure level.