# Database Schema - clinica-veterinaria **Alias:** @PROJ_DEF_DB **Version:** 1.0.0 **Ultima actualizacion:** 2026-01-16 --- ## 1. RESUMEN | Metrica | Valor | |---------|-------| | **Schema Principal** | veterinaria | | **Total Tablas** | 15 | | **Total Catalogos** | 3 | | **Total Enums** | 5 | | **Total Relaciones** | 18 | | **Tablas con RLS** | 15 | --- ## 2. SCHEMAS ### 2.1 Schema: veterinaria Schema principal con tablas especializadas para clinicas veterinarias. ```yaml catalogos: - especies - razas - vacunas tablas_core: - propietarios - mascotas - cartilla_vacunacion - desparasitaciones tablas_hospitalizacion: - hospitalizacion - hospitalizacion_monitoreo tablas_servicios: - estetica tablas_farmacia: - medicamentos - medicamentos_lotes - dispensaciones - movimientos_farmacia - bitacora_controlados ``` ### 2.2 Schemas Heredados | Schema | Origen | Tablas Usadas | |--------|--------|---------------| | auth | erp-core | users, sessions, roles | | tenants | erp-core | tenants, tenant_config | | clinica | erp-clinicas | doctors, appointments, consultations | --- ## 3. ENUMS ### 3.1 sexo_animal ```sql CREATE TYPE veterinaria.sexo_animal AS ENUM ( 'macho', 'hembra', 'desconocido' ); ``` ### 3.2 estado_hospitalizacion ```sql CREATE TYPE veterinaria.estado_hospitalizacion AS ENUM ( 'ingresado', 'en_tratamiento', 'estable', 'critico', 'alta', 'fallecido' ); ``` ### 3.3 categoria_medicamento ```sql CREATE TYPE veterinaria.categoria_medicamento AS ENUM ( 'antibiotico', 'antiparasitario', 'analgesico', 'antiinflamatorio', 'vacuna', 'vitamina', 'dermatologico', 'oftalmico', 'cardiaco', 'digestivo', 'otro' ); ``` ### 3.4 tipo_movimiento_farmacia ```sql CREATE TYPE veterinaria.tipo_movimiento_farmacia AS ENUM ( 'entrada', 'salida', 'ajuste_positivo', 'ajuste_negativo', 'devolucion', 'merma' ); ``` ### 3.5 fraccion_controlada ```sql CREATE TYPE veterinaria.fraccion_controlada AS ENUM ( 'no_controlado', 'fraccion_i', 'fraccion_ii', 'fraccion_iii', 'fraccion_iv' ); ``` --- ## 4. TABLAS PRINCIPALES ### 4.1 veterinaria.especies (Catalogo) ```yaml tabla: "especies" schema: "veterinaria" descripcion: "Catalogo de especies animales" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "nombre" tipo: "VARCHAR(50)" - nombre: "nombre_cientifico" tipo: "VARCHAR(100)" - nombre: "descripcion" tipo: "TEXT" - nombre: "active" tipo: "BOOLEAN" - nombre: "created_at" tipo: "TIMESTAMPTZ" indices: - nombre: "idx_especies_tenant" columnas: ["tenant_id"] rls: true ``` ### 4.2 veterinaria.razas (Catalogo) ```yaml tabla: "razas" schema: "veterinaria" descripcion: "Catalogo de razas por especie" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "especie_id" tipo: "UUID" fk: "veterinaria.especies" - nombre: "nombre" tipo: "VARCHAR(100)" - nombre: "descripcion" tipo: "TEXT" - nombre: "tamanio_promedio" tipo: "VARCHAR(20)" - nombre: "peso_promedio_kg" tipo: "NUMERIC(5,2)" - nombre: "active" tipo: "BOOLEAN" indices: - nombre: "idx_razas_tenant" columnas: ["tenant_id"] - nombre: "idx_razas_especie" columnas: ["especie_id"] rls: true ``` ### 4.3 veterinaria.propietarios ```yaml tabla: "propietarios" schema: "veterinaria" descripcion: "Propietarios/duenos de mascotas" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "partner_id" tipo: "UUID" nullable: true - nombre: "nombre" tipo: "VARCHAR(100)" - nombre: "apellidos" tipo: "VARCHAR(100)" - nombre: "telefono" tipo: "VARCHAR(20)" - nombre: "telefono_emergencia" tipo: "VARCHAR(20)" - nombre: "email" tipo: "VARCHAR(100)" - nombre: "direccion" tipo: "TEXT" - nombre: "rfc" tipo: "VARCHAR(13)" - nombre: "active" tipo: "BOOLEAN" indices: - nombre: "idx_propietarios_tenant" columnas: ["tenant_id"] - nombre: "idx_propietarios_telefono" columnas: ["telefono"] rls: true ``` ### 4.4 veterinaria.mascotas ```yaml tabla: "mascotas" schema: "veterinaria" descripcion: "Mascotas/pacientes de la clinica" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "propietario_id" tipo: "UUID" fk: "veterinaria.propietarios" - nombre: "especie_id" tipo: "UUID" fk: "veterinaria.especies" - nombre: "raza_id" tipo: "UUID" fk: "veterinaria.razas" nullable: true - nombre: "nombre" tipo: "VARCHAR(100)" - nombre: "sexo" tipo: "veterinaria.sexo_animal" - nombre: "fecha_nacimiento" tipo: "DATE" - nombre: "edad_aproximada" tipo: "VARCHAR(50)" - nombre: "color" tipo: "VARCHAR(50)" - nombre: "peso_kg" tipo: "NUMERIC(6,2)" - nombre: "numero_chip" tipo: "VARCHAR(50)" - nombre: "tiene_chip" tipo: "BOOLEAN" - nombre: "esterilizado" tipo: "BOOLEAN" - nombre: "fecha_esterilizacion" tipo: "DATE" - nombre: "alergias" tipo: "TEXT" - nombre: "condiciones_especiales" tipo: "TEXT" - nombre: "notas" tipo: "TEXT" - nombre: "foto_url" tipo: "VARCHAR(255)" - nombre: "active" tipo: "BOOLEAN" indices: - nombre: "idx_mascotas_tenant" columnas: ["tenant_id"] - nombre: "idx_mascotas_propietario" columnas: ["propietario_id"] - nombre: "idx_mascotas_especie" columnas: ["especie_id"] - nombre: "idx_mascotas_chip" columnas: ["numero_chip"] parcial: "WHERE numero_chip IS NOT NULL" rls: true ``` ### 4.5 veterinaria.cartilla_vacunacion ```yaml tabla: "cartilla_vacunacion" schema: "veterinaria" descripcion: "Historial de vacunacion de mascotas" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "mascota_id" tipo: "UUID" fk: "veterinaria.mascotas" - nombre: "vacuna_id" tipo: "UUID" fk: "veterinaria.vacunas" - nombre: "veterinario_id" tipo: "UUID" fk: "clinica.doctors" - nombre: "fecha_aplicacion" tipo: "DATE" - nombre: "fecha_proximo_refuerzo" tipo: "DATE" - nombre: "lote" tipo: "VARCHAR(50)" - nombre: "laboratorio" tipo: "VARCHAR(100)" - nombre: "observaciones" tipo: "TEXT" indices: - nombre: "idx_cartilla_tenant" columnas: ["tenant_id"] - nombre: "idx_cartilla_mascota" columnas: ["mascota_id"] - nombre: "idx_cartilla_fecha" columnas: ["fecha_proximo_refuerzo"] rls: true ``` ### 4.6 veterinaria.hospitalizacion ```yaml tabla: "hospitalizacion" schema: "veterinaria" descripcion: "Registro de hospitalizaciones" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" fk: true - nombre: "mascota_id" tipo: "UUID" fk: "veterinaria.mascotas" - nombre: "veterinario_id" tipo: "UUID" fk: "clinica.doctors" - nombre: "consultation_id" tipo: "UUID" fk: "clinica.consultations" - nombre: "fecha_ingreso" tipo: "TIMESTAMPTZ" - nombre: "motivo_ingreso" tipo: "TEXT" - nombre: "diagnostico_ingreso" tipo: "TEXT" - nombre: "area" tipo: "VARCHAR(50)" - nombre: "numero_jaula" tipo: "VARCHAR(20)" - nombre: "estado" tipo: "veterinaria.estado_hospitalizacion" - nombre: "fecha_alta" tipo: "TIMESTAMPTZ" - nombre: "diagnostico_alta" tipo: "TEXT" - nombre: "instrucciones_alta" tipo: "TEXT" indices: - nombre: "idx_hospitalizacion_tenant" columnas: ["tenant_id"] - nombre: "idx_hospitalizacion_mascota" columnas: ["mascota_id"] - nombre: "idx_hospitalizacion_estado" columnas: ["tenant_id", "estado"] rls: true ``` ### 4.7 veterinaria.medicamentos (Farmacia) ```yaml tabla: "medicamentos" schema: "veterinaria" descripcion: "Catalogo de medicamentos veterinarios" columnas: - nombre: "id" tipo: "UUID" pk: true - nombre: "tenant_id" tipo: "UUID" - nombre: "codigo" tipo: "VARCHAR(50)" - nombre: "nombre" tipo: "VARCHAR(150)" - nombre: "nombre_comercial" tipo: "VARCHAR(150)" - nombre: "principio_activo" tipo: "VARCHAR(200)" - nombre: "categoria" tipo: "veterinaria.categoria_medicamento" - nombre: "presentacion" tipo: "VARCHAR(100)" - nombre: "concentracion" tipo: "VARCHAR(50)" - nombre: "laboratorio" tipo: "VARCHAR(100)" - nombre: "requiere_receta" tipo: "BOOLEAN" - nombre: "controlado" tipo: "BOOLEAN" - nombre: "fraccion_controlada" tipo: "veterinaria.fraccion_controlada" - nombre: "stock_minimo" tipo: "INTEGER" - nombre: "stock_actual" tipo: "INTEGER" - nombre: "precio_compra" tipo: "NUMERIC(10,2)" - nombre: "precio_venta" tipo: "NUMERIC(10,2)" - nombre: "especies_aplicables" tipo: "UUID[]" - nombre: "active" tipo: "BOOLEAN" indices: - nombre: "idx_medicamentos_tenant" columnas: ["tenant_id"] - nombre: "idx_medicamentos_codigo" columnas: ["codigo"] - nombre: "idx_medicamentos_categoria" columnas: ["categoria"] - nombre: "idx_medicamentos_controlado" columnas: ["controlado"] rls: true ``` --- ## 5. RELACIONES ``` HERENCIA ┌─────────────────────────────────────────────────────────┐ │ erp-core │ │ ├── auth.users │ │ └── tenants.tenants ─────────────────────────┐ │ └───────────────────────────────────────────────│─────────┘ │ ┌─────────────────────────────────────────────────────────┐ │ erp-clinicas │ │ │ ├── clinica.doctors │ │ │ ├── clinica.appointments │ │ │ └── clinica.consultations ───────────────────│─────┐ │ └───────────────────────────────────────────────│─────│───┘ │ │ ┌───────────────────────────────────────────────│─────│───┐ │ veterinaria (este proyecto) │ │ │ │ ▼ │ │ │ ┌─────────────┐ ┌─────────────┐ FK │ │ │ │ especies │◄──────│ razas │ │ │ │ └─────────────┘ FK └─────────────┘ │ │ │ │ │ │ │ │ │ FK │ FK │ │ │ ▼ ▼ │ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ │ propietarios│◄──────│ mascotas │◄────────────│ │ │ └─────────────┘ FK └─────────────┘ │ │ │ │ ▼ │ │ ┌─────────────────────┼─────────────────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌───────────┐ ┌───────────────────┐ ┌───────────┐│ │ │ cartilla_ │ │ desparasitaciones │ │hospitali- ││ │ │vacunacion │ │ │ │ zacion ││ │ └───────────┘ └───────────────────┘ └───────────┘│ │ │ │ │ │ ▼ ▼ │ │ ┌───────────┐ ┌───────────┐ │ │ │ vacunas │ │ monitoreo │ │ │ └───────────┘ └───────────┘ │ │ │ │ FARMACIA: │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │medicamentos │◄────│medicamentos_lotes│ │ │ └─────────────┘ FK └─────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ dispensaciones │ │ │ └─────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ movimientos_farmacia │ │ │ │ bitacora_controlados │ │ │ └─────────────────────────────────────┘ │ └────────────────────────────────────────────────────────┘ ``` --- ## 6. ARCHIVOS DDL | Archivo | Descripcion | |---------|-------------| | `database/schemas/01-veterinaria-schema-ddl.sql` | Schema principal veterinaria | | `database/schemas/02-veterinaria-farmacia-ddl.sql` | Modulo farmacia | | `database/seeds/fase8/01-veterinaria-catalogos.sql` | Seeds de catalogos | --- ## 7. REFERENCIAS - Inventario detallado: `orchestration/inventarios/DATABASE_INVENTORY.yml` - Entities: Ver @PROJ_DEF_ENTITIES - Navegacion rapida: Ver `docs/_quick/QUICK-DATABASE.yml` --- *Generado: 2026-01-16 - clinica-veterinaria v1.0.0*