ERP especializado para clínicas veterinarias. Estructura inicial: - database/ (PostgreSQL DDL) - docs/ (Documentación) - orchestration/ (Sistema NEXUS) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
147 lines
5.2 KiB
SQL
147 lines
5.2 KiB
SQL
-- ============================================================================
|
|
-- SEED DATA: Catálogos de Veterinaria
|
|
-- Especialización de ERP-Clínicas
|
|
-- ============================================================================
|
|
-- NOTA: Ejecutar después de SET app.current_tenant_id = 'UUID-DEL-TENANT';
|
|
-- ============================================================================
|
|
|
|
-- Especies
|
|
INSERT INTO veterinaria.especies (tenant_id, nombre, nombre_cientifico)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, nombre, nombre_cientifico
|
|
FROM (VALUES
|
|
('Perro', 'Canis lupus familiaris'),
|
|
('Gato', 'Felis silvestris catus'),
|
|
('Ave', NULL),
|
|
('Reptil', NULL),
|
|
('Roedor', NULL),
|
|
('Conejo', 'Oryctolagus cuniculus'),
|
|
('Pez', NULL),
|
|
('Hurón', 'Mustela putorius furo'),
|
|
('Otro', NULL)
|
|
) AS t(nombre, nombre_cientifico)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Razas de perro
|
|
INSERT INTO veterinaria.razas (tenant_id, especie_id, nombre, tamanio_promedio, peso_promedio_kg)
|
|
SELECT
|
|
current_setting('app.current_tenant_id', true)::UUID,
|
|
e.id,
|
|
r.nombre,
|
|
r.tamanio,
|
|
r.peso
|
|
FROM veterinaria.especies e
|
|
CROSS JOIN (VALUES
|
|
('Mestizo', 'mediano', 15.0),
|
|
('Chihuahua', 'pequeño', 2.5),
|
|
('Poodle', 'pequeño', 5.0),
|
|
('Bulldog Francés', 'pequeño', 12.0),
|
|
('Beagle', 'mediano', 12.0),
|
|
('Labrador Retriever', 'grande', 30.0),
|
|
('Golden Retriever', 'grande', 32.0),
|
|
('Pastor Alemán', 'grande', 35.0),
|
|
('Rottweiler', 'grande', 45.0),
|
|
('Husky Siberiano', 'grande', 25.0),
|
|
('Pug', 'pequeño', 8.0),
|
|
('Yorkshire Terrier', 'pequeño', 3.0),
|
|
('Schnauzer', 'mediano', 7.0),
|
|
('Boxer', 'grande', 30.0),
|
|
('Pitbull', 'mediano', 25.0)
|
|
) AS r(nombre, tamanio, peso)
|
|
WHERE e.nombre = 'Perro'
|
|
AND e.tenant_id = current_setting('app.current_tenant_id', true)::UUID
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Razas de gato
|
|
INSERT INTO veterinaria.razas (tenant_id, especie_id, nombre, tamanio_promedio, peso_promedio_kg)
|
|
SELECT
|
|
current_setting('app.current_tenant_id', true)::UUID,
|
|
e.id,
|
|
r.nombre,
|
|
r.tamanio,
|
|
r.peso
|
|
FROM veterinaria.especies e
|
|
CROSS JOIN (VALUES
|
|
('Mestizo', 'mediano', 4.0),
|
|
('Siamés', 'mediano', 4.5),
|
|
('Persa', 'mediano', 5.0),
|
|
('Maine Coon', 'grande', 8.0),
|
|
('Bengalí', 'mediano', 5.5),
|
|
('Ragdoll', 'grande', 7.0),
|
|
('British Shorthair', 'mediano', 6.0),
|
|
('Angora', 'mediano', 4.5),
|
|
('Sphynx', 'mediano', 4.0),
|
|
('Abisinio', 'mediano', 4.0)
|
|
) AS r(nombre, tamanio, peso)
|
|
WHERE e.nombre = 'Gato'
|
|
AND e.tenant_id = current_setting('app.current_tenant_id', true)::UUID
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Vacunas para perros
|
|
INSERT INTO veterinaria.vacunas (tenant_id, especie_id, nombre, descripcion, intervalo_refuerzo_dias, es_obligatoria)
|
|
SELECT
|
|
current_setting('app.current_tenant_id', true)::UUID,
|
|
e.id,
|
|
v.nombre,
|
|
v.descripcion,
|
|
v.intervalo,
|
|
v.obligatoria
|
|
FROM veterinaria.especies e
|
|
CROSS JOIN (VALUES
|
|
('Parvovirus', 'Protege contra parvovirus canino', 365, false),
|
|
('Moquillo', 'Protege contra distemper canino', 365, false),
|
|
('Hepatitis', 'Protege contra hepatitis infecciosa canina', 365, false),
|
|
('Rabia', 'Vacuna antirrábica - OBLIGATORIA', 365, true),
|
|
('Leptospirosis', 'Protege contra leptospirosis', 365, false),
|
|
('Bordetella', 'Protege contra tos de las perreras', 180, false),
|
|
('Cuádruple', 'Moquillo, Hepatitis, Parvo, Parainfluenza', 365, false),
|
|
('Séxtuple', 'Cuádruple + Coronavirus + Leptospira', 365, false)
|
|
) AS v(nombre, descripcion, intervalo, obligatoria)
|
|
WHERE e.nombre = 'Perro'
|
|
AND e.tenant_id = current_setting('app.current_tenant_id', true)::UUID
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Vacunas para gatos
|
|
INSERT INTO veterinaria.vacunas (tenant_id, especie_id, nombre, descripcion, intervalo_refuerzo_dias, es_obligatoria)
|
|
SELECT
|
|
current_setting('app.current_tenant_id', true)::UUID,
|
|
e.id,
|
|
v.nombre,
|
|
v.descripcion,
|
|
v.intervalo,
|
|
v.obligatoria
|
|
FROM veterinaria.especies e
|
|
CROSS JOIN (VALUES
|
|
('Triple Felina', 'Rinotraqueitis, Calicivirus, Panleucopenia', 365, false),
|
|
('Leucemia Felina', 'Protege contra FeLV', 365, false),
|
|
('Rabia', 'Vacuna antirrábica', 365, true),
|
|
('PIF', 'Peritonitis Infecciosa Felina', 365, false)
|
|
) AS v(nombre, descripcion, intervalo, obligatoria)
|
|
WHERE e.nombre = 'Gato'
|
|
AND e.tenant_id = current_setting('app.current_tenant_id', true)::UUID
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Skills específicos veterinarios
|
|
INSERT INTO hr.skills (tenant_id, skill_type_id, name, requiere_cedula)
|
|
SELECT
|
|
current_setting('app.current_tenant_id', true)::UUID,
|
|
st.id,
|
|
unnest(ARRAY[
|
|
'Medicina Veterinaria General',
|
|
'Cirugía Veterinaria',
|
|
'Dermatología Veterinaria',
|
|
'Cardiología Veterinaria',
|
|
'Oftalmología Veterinaria',
|
|
'Ortopedia Veterinaria',
|
|
'Oncología Veterinaria',
|
|
'Medicina de Exóticos',
|
|
'Anestesiología Veterinaria',
|
|
'Imagenología Veterinaria'
|
|
]),
|
|
true
|
|
FROM hr.skill_types st
|
|
WHERE st.name = 'Especialidad Médica'
|
|
AND st.tenant_id = current_setting('app.current_tenant_id', true)::UUID
|
|
ON CONFLICT DO NOTHING;
|