54 lines
2.2 KiB
SQL
54 lines
2.2 KiB
SQL
CREATE TABLE medical_prescriptions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
animal_id INTEGER NOT NULL REFERENCES animals(id) ON DELETE CASCADE,
|
|
prescribed_on TEXT NOT NULL,
|
|
veterinarian_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
|
clinic_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
|
status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active','finished','replaced')),
|
|
notes TEXT,
|
|
original_name TEXT NOT NULL,
|
|
stored_name TEXT NOT NULL,
|
|
mime_type TEXT NOT NULL,
|
|
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
|
created_at TEXT NOT NULL DEFAULT(datetime('now'))
|
|
);
|
|
CREATE INDEX idx_prescriptions_animal_date ON medical_prescriptions(animal_id,prescribed_on DESC,id DESC);
|
|
|
|
CREATE TABLE prescription_treatments (
|
|
prescription_id INTEGER NOT NULL REFERENCES medical_prescriptions(id) ON DELETE CASCADE,
|
|
treatment_id INTEGER NOT NULL REFERENCES treatments(id) ON DELETE CASCADE,
|
|
PRIMARY KEY(prescription_id,treatment_id)
|
|
);
|
|
|
|
CREATE TABLE lab_reports (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
animal_id INTEGER NOT NULL REFERENCES animals(id) ON DELETE CASCADE,
|
|
sampled_on TEXT NOT NULL,
|
|
report_type TEXT,
|
|
laboratory_name TEXT,
|
|
veterinarian_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
|
clinic_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
|
notes TEXT,
|
|
original_name TEXT,
|
|
stored_name TEXT,
|
|
mime_type TEXT,
|
|
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
|
created_at TEXT NOT NULL DEFAULT(datetime('now'))
|
|
);
|
|
CREATE INDEX idx_lab_reports_animal_date ON lab_reports(animal_id,sampled_on DESC,id DESC);
|
|
|
|
CREATE TABLE lab_results (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
report_id INTEGER NOT NULL REFERENCES lab_reports(id) ON DELETE CASCADE,
|
|
parameter_name TEXT NOT NULL,
|
|
value REAL NOT NULL,
|
|
unit TEXT,
|
|
reference_min REAL,
|
|
reference_max REAL,
|
|
notes TEXT,
|
|
position INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_lab_results_report ON lab_results(report_id,position,id);
|
|
CREATE INDEX idx_lab_results_parameter ON lab_results(parameter_name COLLATE NOCASE);
|