{
  "product": "Vetmira",
  "export_format_version": 1,
  "complete": true,
  "absent_resources": [],
  "generated_at": "2026-08-09T19:57:13.039027+00:00",
  "tenant": "Oakfield Veterinary Surgery",
  "requested_by": "sample-export (synthetic demo practice)",
  "schema_revision": "0080_must_change_password",
  "resources": [
    {
      "file": "patients.csv",
      "rows": 30,
      "description": "Patient demographics, contact details, and animal identity: species, breed, sex, sterilisation, colour and markings, microchip number, and date of death. This is the record that identifies the animal, and without it a successor system has a name and a date of birth",
      "sha256": "c43c784b3d16ffd15bbc96ff4cf8c513e12e53780a70dde08483c276ccd10015",
      "decrypted_columns": [
        "encrypted_insurance_id",
        "encrypted_ssn",
        "phone"
      ]
    },
    {
      "file": "patient_guardians.csv",
      "rows": 27,
      "description": "Which login may act for which patient (family/guardian links)",
      "sha256": "f680809371009c0edac238799280f98b4382f88e9686810e7c4e153cc452fd7e",
      "decrypted_columns": null
    },
    {
      "file": "client_profiles.csv",
      "rows": 15,
      "description": "How each client wants to be contacted, and their marketing consent",
      "sha256": "836079a77aba45840bc5b8af5a762d98e2cebb807c482e70357e8837e1bc1b99",
      "decrypted_columns": null
    },
    {
      "file": "households.csv",
      "rows": 13,
      "description": "Households: the account money is owed against",
      "sha256": "0a2ce6052defcf91fb49e4f1e1b4b58cbf65a5919f4bb8663ea0930aa17fc81e",
      "decrypted_columns": null
    },
    {
      "file": "household_members.csv",
      "rows": 15,
      "description": "Who is in each household, and who may authorize or collect",
      "sha256": "b1f9a50c650300bb0a4a24fa90d4963131e28ce82462ddc23d49f5d5e13bc33b",
      "decrypted_columns": null
    },
    {
      "file": "locations.csv",
      "rows": 1,
      "description": "The practice's sites. Every appointment, invoice and stock movement names one, so an export without them cannot be read",
      "sha256": "78ca10ca18abc9df49eb47aa43c86d360776639031acbfbe0b3ebffde7d8c4cf",
      "decrypted_columns": null
    },
    {
      "file": "providers.csv",
      "rows": 4,
      "description": "Clinicians and their configuration",
      "sha256": "b0b95bd06622f37a55cddf6fa40f73f63a580026d02d39eee086f0597ffacd0b",
      "decrypted_columns": null
    },
    {
      "file": "provider_locations.csv",
      "rows": 4,
      "description": "Which sites each clinician works at",
      "sha256": "b04cbbd19ddd209cfc43fefa80196ec8cf28db3902013451f9fa72eab3a1114c",
      "decrypted_columns": null
    },
    {
      "file": "services.csv",
      "rows": 9,
      "description": "Bookable services, durations, and prices",
      "sha256": "cc731e13675fc175416d798eec0fba989fc0b104bef2f7177b408f74a1e3218c",
      "decrypted_columns": null
    },
    {
      "file": "products.csv",
      "rows": 29,
      "description": "The catalogue: medications, vaccines, food, supplies and retail items, with their prices, stock rules and whether they are restricted to particular species",
      "sha256": "33ab062ce4cb214af2d945c7d332e4d8a201239fc4dda73e2b6d826f4a0f86af",
      "decrypted_columns": null
    },
    {
      "file": "product_species.csv",
      "rows": 19,
      "description": "Which species each catalogue item may be used for, so a dog is not offered something meant for a horse",
      "sha256": "5ccefe323073e14ca15e0215665a3a207f322a32c701ce4ae34359fd3f35d49d",
      "decrypted_columns": null
    },
    {
      "file": "appointments.csv",
      "rows": 403,
      "description": "All appointments, past and future, in UTC",
      "sha256": "62eebfa42534bb4a0c945f1736c9ec8ec530a80f4c6f676d4f95ac9719c201ef",
      "decrypted_columns": null
    },
    {
      "file": "appointment_requirements.csv",
      "rows": 8,
      "description": "Forms and consents attached to specific appointments",
      "sha256": "37e79f8c05e06daf2aba1e425da4dfa09f6e67efebf3a81245ec443ffce3f94f",
      "decrypted_columns": null
    },
    {
      "file": "clinical_notes.csv",
      "rows": 345,
      "description": "SOAP notes. JSON columns (diagnoses, orders, prescriptions) are embedded as JSON text within the cell",
      "sha256": "398e18249c10095cf591504e30ae7cb9b03b1fdcaea7e3f7dd83cb61a56035b0",
      "decrypted_columns": null
    },
    {
      "file": "note_addenda.csv",
      "rows": 0,
      "description": "Corrections to signed notes. A signed note is immutable, so an addendum is the only record of what was changed and why: without these the exported notes are the uncorrected versions",
      "sha256": "f2c4ba03c809dc79f878a3a6c45afd782a223dd742303e2b96c4132c39f1f405",
      "decrypted_columns": null
    },
    {
      "file": "vital_signs.csv",
      "rows": 346,
      "description": "Recorded vitals",
      "sha256": "d02727513a5c788fd69c7f521e41797e22cb5978f7ba2747246c9342cf2e2c85",
      "decrypted_columns": null
    },
    {
      "file": "diagnoses.csv",
      "rows": 0,
      "description": "Problem list and per-encounter diagnoses",
      "sha256": "3abcb3cd1b244011cc3d08e599be9c1a3470b2fd82e3c1927f13d427a82a6366",
      "decrypted_columns": null
    },
    {
      "file": "allergies.csv",
      "rows": 0,
      "description": "Allergies and reactions",
      "sha256": "7473968e9807d46266fc09876250a54a95a11a55eb66fdb43844f0ca22979da2",
      "decrypted_columns": null
    },
    {
      "file": "alerts.csv",
      "rows": 5,
      "description": "Handling and care alerts. These are the warnings staff see before touching an animal, so losing them in a migration is a safety matter",
      "sha256": "40f3f9d33a081d9b67b56d649ec1e948aec6ce6653269b79754db89ba8147b95",
      "decrypted_columns": null
    },
    {
      "file": "medications.csv",
      "rows": 0,
      "description": "Medication list recorded on the chart",
      "sha256": "d65292c6c8afb520506ef728db01ca536cb1eb26012d837ebf994d13aefb5a2a",
      "decrypted_columns": null
    },
    {
      "file": "prescriptions.csv",
      "rows": 11,
      "description": "Prescriptions, with the weight each dose was calculated from and the date that weight was taken. The only record of what was prescribed",
      "sha256": "c81331df1027f453ed10adcef38bb876b1a652126858e57eb1ee73713e6585cf",
      "decrypted_columns": null
    },
    {
      "file": "prescription_dispenses.csv",
      "rows": 3,
      "description": "Every fill, with its own lot number. This is what a recall is answered from: which lot went out, to whom, and when",
      "sha256": "088045ad120afc7d4a5a5333a7ee86b2df888b29b56c81aee52f804d5a5f6444",
      "decrypted_columns": null
    },
    {
      "file": "vaccinations.csv",
      "rows": 111,
      "description": "Vaccination history, including rabies tag numbers. A legal record in most jurisdictions and irreplaceable once lost",
      "sha256": "bcbdccece953c28230c201c6f7bc1bbc403ce7f4d58481b3a9a0aa1b42c1c833",
      "decrypted_columns": null
    },
    {
      "file": "clinical_orders.csv",
      "rows": 8,
      "description": "Lab, imaging, referral, and procedure orders with their results",
      "sha256": "c7fd660e3be1fd395f52e8b2ca71d0684ec7d2e2d66f9ddfabe4ce21eeb1f11b",
      "decrypted_columns": null
    },
    {
      "file": "staff_tasks.csv",
      "rows": 4,
      "description": "Internal work queue items",
      "sha256": "fa3305b1e1ec4c3c25ba1409cfa50181b15a550160ac1b1a522b74bdbf177628",
      "decrypted_columns": null
    },
    {
      "file": "form_templates.csv",
      "rows": 2,
      "description": "Intake form definitions",
      "sha256": "708cba454cc6dbdbaad7147ba29048c8ba6fb9c4b7d6b284512793098aa613cf",
      "decrypted_columns": null
    },
    {
      "file": "form_submissions.csv",
      "rows": 3,
      "description": "Completed intake forms; answers are JSON text within the cell",
      "sha256": "8e81f134d419aec1cd6e912cf97be9c35007b033fbed0feb744e133c76e36e53",
      "decrypted_columns": null
    },
    {
      "file": "consent_documents.csv",
      "rows": 3,
      "description": "Consent document text by version, with who approved each one, on what basis, for which jurisdiction and when",
      "sha256": "84d0479414d0b5647b421e7576daf36ac9d395593efadfafffe25ae91d5368ac",
      "decrypted_columns": null
    },
    {
      "file": "consent_signatures.csv",
      "rows": 3,
      "description": "Who signed which consent version, and when. The signature image and the exact text signed are both included: a consent without the wording it was given against proves nothing",
      "sha256": "caf615daa4a0ead2e59f0c49a761d2ccd5275b8998f9a2f183677a1311a667a0",
      "decrypted_columns": null
    },
    {
      "file": "record_disclosures.csv",
      "rows": 0,
      "description": "Records-release history: what left this practice, to whom, and on what basis. The practice's own evidence of its disclosures",
      "sha256": "4cbbda204cc0a5f2b920c554ea8fa9c956a54bbed77a9a35cc87019521425226",
      "decrypted_columns": null
    },
    {
      "file": "message_threads.csv",
      "rows": 4,
      "description": "Secure message conversations",
      "sha256": "0045090affee7d22ecf5e0b91348015ce98013ba74cc899f965f7552696c5d2f",
      "decrypted_columns": null
    },
    {
      "file": "secure_messages.csv",
      "rows": 7,
      "description": "Individual messages within those conversations",
      "sha256": "c3e8cce4976e8fd69afb4ed8ccac1336454a8f11f9f8a551c65e3f1b52429caf",
      "decrypted_columns": null
    },
    {
      "file": "message_attachments.csv",
      "rows": 0,
      "description": "Files attached to messages; the files are under documents/",
      "sha256": "b7da6fe8c80bbc28ed36f7fc23c1220bbc4a6bcf97db95d29ee7c86f9fc3935b",
      "decrypted_columns": null
    },
    {
      "file": "documents.csv",
      "rows": 1,
      "description": "Document index; the files themselves are under documents/",
      "sha256": "40da82872e6c6e589268361b1ec45a810fd6c5da7c6a7a1f658961c453860b63",
      "decrypted_columns": null
    },
    {
      "file": "estimates.csv",
      "rows": 8,
      "description": "Estimates. Amounts are integer minor units (cents)",
      "sha256": "882e5fb12cf2f9f6222ad3cc5aa1f764211d69cc951fc7ff18a182d986ab336e",
      "decrypted_columns": null
    },
    {
      "file": "estimate_versions.csv",
      "rows": 8,
      "description": "Each revision of an estimate, and when the owner was sent and opened it",
      "sha256": "2b013c5cca9a8e467816359e60b37458d8d64c116145170482524a57ee58c875",
      "decrypted_columns": null
    },
    {
      "file": "estimate_lines.csv",
      "rows": 24,
      "description": "What each estimate version proposed, line by line",
      "sha256": "33274e926c7353ff2245aac5c17a6e2ac70fa7f1a1a466ba280dbc2b65e3ef87",
      "decrypted_columns": null
    },
    {
      "file": "estimate_approvals.csv",
      "rows": 2,
      "description": "The owner's approval: who agreed, how, when, and the ceiling they agreed to. The practice's evidence that treatment was authorized",
      "sha256": "e8fa0b809f75a1d53ba011115eb908c2a8a89de9815f3504e6f7d60ecfe22539",
      "decrypted_columns": null
    },
    {
      "file": "estimate_line_decisions.csv",
      "rows": 9,
      "description": "Which individual lines the owner accepted or declined, and why. A declined line is a clinical and legal fact, not an absence",
      "sha256": "cd58e15600ae82b71fdc559ca303ccbb8a689d698769b4b637c66058bed7b197",
      "decrypted_columns": null
    },
    {
      "file": "invoices.csv",
      "rows": 345,
      "description": "Invoices. Amounts are integer minor units (cents)",
      "sha256": "2d82a97a21faad492bc5f3f575c0aa2f5b5f535b5d0f7df047f77ebdcfc29479",
      "decrypted_columns": null
    },
    {
      "file": "invoice_line_items.csv",
      "rows": 473,
      "description": "Invoice breakdown",
      "sha256": "a61893ab2c36b82144b4801105e5eb526c4edd4f14a0c06952743583e6b3d6f5",
      "decrypted_columns": null
    },
    {
      "file": "payments.csv",
      "rows": 341,
      "description": "Payment attempts. Card brand and last four only, no card data exists anywhere in this system to export",
      "sha256": "630f1cbab0f5511bf78a15f814541e4947ffe68f0992710b77eb241b4f04e975",
      "decrypted_columns": null
    },
    {
      "file": "payment_refunds.csv",
      "rows": 0,
      "description": "Refunds, one row each with its own status. A refund is a row rather than a subtraction because some settle later and some fail",
      "sha256": "92250c916479fb0190569cb1fd38b4a9fd214efdfb0417ef2455374374d75f54",
      "decrypted_columns": null
    },
    {
      "file": "ledger_entries.csv",
      "rows": 685,
      "description": "The household money ledger, append-only. Every balance in this system is derived from these rows, so a balance without them cannot be explained or audited",
      "sha256": "0383cfd5c3a8cff319517287eb9fb05a3262e57fa57ca7651759a8a07645bbec",
      "decrypted_columns": null
    },
    {
      "file": "payment_allocations.csv",
      "rows": 341,
      "description": "Which payment settled which invoice, and for how much",
      "sha256": "db8e861ec8e9b35e89a55e7902713e3fa84ac909e8e24db8ca2604e223479dfa",
      "decrypted_columns": null
    },
    {
      "file": "inventory_lots.csv",
      "rows": 71,
      "description": "Stock lots, per product and site, with expiry and supplier",
      "sha256": "f75c5c9e5c86d385df021f65dc593460e4e08258286828904f220abe2761221f",
      "decrypted_columns": null
    },
    {
      "file": "inventory_movements.csv",
      "rows": 211,
      "description": "The stock ledger, append-only. Every on-hand figure is derived from these rows, and each names the clinical event that caused it",
      "sha256": "b4a374c75f024712462a45d1bc963716266ef9ae6f014715bdcf689f606e6276",
      "decrypted_columns": null
    },
    {
      "file": "inventory_stock_snapshot.csv",
      "rows": 71,
      "description": "On-hand balances as calculated at the moment of export. Derived from inventory_movements and included alongside them so the recipient can check their own arithmetic against ours",
      "sha256": "268d05fc62cfe0d97b17cccb02a063835501dd0d134eb6df8aef75d2ddb2be81",
      "decrypted_columns": null
    },
    {
      "file": "recall_rules.csv",
      "rows": 3,
      "description": "Recall rule configuration",
      "sha256": "1d0c781e2c96a4085a3d551bb9fb53ce357da5ec82f97c30fe21d22c018b0446",
      "decrypted_columns": null
    },
    {
      "file": "recall_sends.csv",
      "rows": 0,
      "description": "Recall contact history",
      "sha256": "443a3a372d41ac597683056187b4ddd5ebbc3ae62fba735c11f1160689fb2c08",
      "decrypted_columns": null
    },
    {
      "file": "waitlist.csv",
      "rows": 0,
      "description": "Waitlist entries and slot offers",
      "sha256": "9f7be870300171c0c4b1afe58ac813e36e5027cbc51b274bcce3c37ef4d4d98e",
      "decrypted_columns": null
    },
    {
      "file": "provider_time_off.csv",
      "rows": 0,
      "description": "Provider time off",
      "sha256": "33e4c3dc3f238ffa07dd7a7414b47bdbf37d4167200d25e579231129f35abbc4",
      "decrypted_columns": null
    },
    {
      "file": "provider_blocks.csv",
      "rows": 0,
      "description": "Blocked periods in the schedule",
      "sha256": "736c1140e99be1d2e5a9621dc1140fb10cbab69eff1c2c895d476c8440c8e502",
      "decrypted_columns": null
    },
    {
      "file": "users.csv",
      "rows": 23,
      "description": "Staff accounts. Password hashes, TOTP secrets, and recovery codes are deliberately excluded",
      "sha256": "3799f7b9d236c250248f2ac0c6e4421d41ef4782c7787699408c73d35bb2fd7b",
      "decrypted_columns": null
    },
    {
      "file": "notification_log.csv",
      "rows": 24,
      "description": "Outbound notification history (reminders, confirmations, alerts). Sign-in link messages are excluded, their payloads are credentials",
      "sha256": "464e561ff8431072e58bb32784df151f57f562ece390bdf1308fb64066aa7648",
      "decrypted_columns": null
    },
    {
      "file": "appointment_reminders.csv",
      "rows": 0,
      "description": "Reminder scheduling log",
      "sha256": "94e5972dca463f3ea53464d4b74a14f5b1dbe2ca37c984d86e1c925bb805063a",
      "decrypted_columns": null
    },
    {
      "file": "no_show_log.csv",
      "rows": 0,
      "description": "Recorded no-shows",
      "sha256": "d383235fe7553ffc1dd5a383be3ad1f303f5bbb7457dd454e44ad37905dd80b3",
      "decrypted_columns": null
    },
    {
      "file": "payment_events.csv",
      "rows": 0,
      "description": "Payment processor webhook log (event ids and types; no card data exists)",
      "sha256": "1ee4862c5d44abe8233cd4b786f3447a4f73512d51005c7501d08789e6842748",
      "decrypted_columns": null
    },
    {
      "file": "intake_forms.csv",
      "rows": 0,
      "description": "Legacy intake form definitions",
      "sha256": "7218891824333a40128abdce112091cffda2f76fef5842d3e0d74c598b84264f",
      "decrypted_columns": null
    },
    {
      "file": "patient_intake_responses.csv",
      "rows": 0,
      "description": "Legacy intake responses; answers are JSON text within the cell",
      "sha256": "2c4190848e785c414702603ead508bda9b64b53be696a89c45e20746ecb2ecec",
      "decrypted_columns": null
    },
    {
      "file": "data_retention_policies.csv",
      "rows": 4,
      "description": "Configured retention periods",
      "sha256": "9b483f14c8547eb6277ee30907776d14ec4b33bb20832025da151e70a6f4c386",
      "decrypted_columns": null
    },
    {
      "file": "audit_log.csv",
      "rows": 1324,
      "description": "Access and change history",
      "sha256": "2528b72dc7b6ca8e1de805fe96279725524990a81c353bddbad2ee34fc7bd331",
      "decrypted_columns": null
    }
  ],
  "documents": {
    "files_written": 1,
    "files_missing": 0,
    "bytes": 1053
  },
  "excluded": {
    "users.password_hash": "credential",
    "users.mfa_secret": "credential",
    "users.mfa_recovery_codes": "credential",
    "login_tokens.*": "single-use sign-in tokens; no value outside this system",
    "user_sessions.*": "live session records; no value outside this system",
    "access_controls.*": "internal authorisation state",
    "alembic_version.*": "schema bookkeeping (reported in manifest instead)",
    "messages(magic_link rows)": "sign-in link payloads are credentials"
  },
  "notes": {
    "timestamps": "ISO 8601; UTC where offset is Z or +00:00",
    "money": "integer minor units (cents)",
    "json_columns": "structured values are JSON text inside one CSV cell",
    "encryption": "Data encrypted at rest is written out decrypted, since ciphertext under our key is unreadable elsewhere"
  }
}
