@vetformat/ovf
v1.3.3
Published
FHIR-inspired JSON Schema standard for veterinary medical record exchange
Maintainers
Readme
Open Vet Format (OVF)
A FHIR-inspired JSON Schema standard for veterinary medical record exchange.
The veterinary market — especially in Poland and Central Europe — has no standard for exchanging medical records between clinics, pet owners, and software systems. OVF fills this gap with a pragmatic, JSON-based format designed specifically for veterinary medicine.
Quick Example
A minimal valid OVF document:
{
"format_version": "1.0.0",
"exported_at": "2026-03-30T12:00:00Z",
"exporter": {
"name": "VetNote",
"version": "2.0.0"
},
"patient": {
"resource_type": "Patient",
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Luna",
"species": "dog",
"breed": "Golden Retriever",
"date_of_birth": "2023-06-15",
"sex": "female",
"gender_status": "spayed",
"identifiers": [
{
"system": "iso-microchip-11784",
"value": "616093900012345"
}
]
}
}Why Not Just Use FHIR?
HL7 FHIR is the gold standard for human healthcare interoperability. But it's a poor fit for veterinary MVPs:
| Concern | FHIR | OVF | |---------|------|-----| | Complexity | 150+ resource types, deep nesting | 10 resource types, flat structure | | Format | XML + JSON, heavy tooling | JSON only, any language | | Veterinary support | Minimal — adapted from human medicine | Purpose-built for vet clinics | | Adoption in vet market | Near zero | Growing (designed for it) | | Getting started | Weeks of reading specs | 5 minutes |
OVF maps cleanly to FHIR concepts (see FHIR Mapping), so migration to full FHIR is possible when the market matures.
Why Not VetXML?
VetXML was a UK-led initiative that never gained adoption outside a handful of UK practice management systems. It's XML-based, poorly documented, and effectively abandoned.
Resource Types
| Resource | Description | |----------|-------------| | Patient | Pet with species, breed, microchip, EU passport | | Practitioner | Veterinary professional (referenced by clinical resources) | | Encounter | Veterinary visit or consultation | | Condition | Diagnosis (active, resolved, chronic) | | Observation | Lab results, vital signs, clinical notes | | Immunization | Vaccinations with batch, expiry, next dose | | Procedure | Surgeries, dental work, grooming | | AllergyIntolerance | Food, medication, environment allergies | | MedicationStatement | Prescribed and active medications | | DocumentReference | Scanned documents, lab report files |
Installation
Schemas + CLI validator
npm install @vetformat/ovfTyped SDKs
# TypeScript
npm install @vetformat/ovf-types
# Python
pip install ovf-typesValidate a document
npx ovf-validate ./my-record.jsonProgrammatic usage (TypeScript)
import type { OvfDocument, Patient, Practitioner } from "@vetformat/ovf-types";
const doc: OvfDocument = {
format_version: "1.2.0",
exported_at: new Date().toISOString(),
patient: { resource_type: "Patient", id: "p-001", name: "Luna", species: "dog" },
practitioners: [
{ resource_type: "Practitioner", id: "pract-001", name: "Dr. Anna Nowak" }
],
};Programmatic usage (Python)
from ovf_types import OvfDocument, Patient, Practitioner
doc = OvfDocument(
format_version="1.2.0",
exported_at="2026-03-30T12:00:00Z",
patient=Patient(resource_type="Patient", id="p-001", name="Luna", species="dog"),
practitioners=[
Practitioner(resource_type="Practitioner", id="pract-001", name="Dr. Anna Nowak")
],
)Schema validation (programmatic)
import Ajv from "ajv";
import addFormats from "ajv-formats";
import schema from "@vetformat/ovf/schemas/v1/ovf.schema.json";
const ajv = new Ajv({ allErrors: true });
addFormats(ajv);
const validate = ajv.compile(schema);
const valid = validate(myDocument);
if (!valid) console.error(validate.errors);Polish Extensions
OVF includes first-class support for the Polish veterinary market:
- Microchip registries: SAFE-ANIMAL, EUROPETNET
- EU Pet Passport identifier system
- FCI breed codes for pedigree dogs
- ISO 11784/11785 microchip format
See Polish Extensions for details.
Documentation
- Specification — formal spec with RFC 2119 language
- Getting Started — 5-minute quickstart
- FHIR Mapping — how OVF maps to FHIR resources
- Polish Extensions — Poland-specific fields
- Examples — real-world example documents
Adopters
See ADOPTERS.md for organizations using OVF.
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Schema changes follow an RFC process: open an issue using the Schema Change template, discuss for 14 days, then submit a PR.
License
- Schemas and code: Apache License 2.0
- Documentation (
docs/directory): CC-BY-4.0
This dual-licensing ensures schemas can be freely used in commercial products while documentation attribution is maintained.
AI / LLM Integration
This repository is AI-friendly by design:
- Every schema field has
descriptionandexamples llms.txtprovides a structured project summaryllms-full.txtprovides full context for LLM consumption- Schemas are self-documenting — an LLM can generate valid OVF documents from the schemas alone
