This console can read and suspend every practice on this deployment. A password on its own is not enough to hold that, so enrolling is not optional.

Add this key to your authenticator app, then enter the code it shows.

Recovery codes, shown once. Keep them somewhere that is not this laptop. Each works a single time.


      
    

Clinics

PracticeStatusPlanTrial endsPayments

Add a clinic

Creates the database, migrates it, registers the hostname, and makes the first administrator. Takes up to a minute.

Import their old records

The one-time conversion from whatever the practice used before. It ran from inside the clinic's own admin app until it was moved here: it happens once, while we are setting them up, and it writes patient records in bulk from a file nobody at the practice has seen parsed. That is our job, not theirs.

Owners first, then animals, then the link between them. An animal whose owner has not been imported yet is reported as a fixable error, not a crash. Every row needs the old system's own key in an external_id column, which is what makes a second run update the same records instead of duplicating them.

RowProblem

Recent activity

Every operator action, append-only. The database refuses to let this be edited.

WhenWhoDid whatToDetail