# VET-001: Mascotas y Propietarios ## Metadata - **Codigo:** VET-001 - **Modulo:** Mascotas + Propietarios - **Prioridad:** P0 - **Estado:** DDL Completado - **Fase:** 1 - Core ## Descripcion Sistema de gestion de mascotas (pacientes) y sus propietarios: registro completo de datos del animal, vinculacion con duenos, historial de pesos, identificacion por microchip, y estado del paciente. ## Objetivos 1. Registro completo de mascotas 2. Vinculacion mascota-propietario 3. Gestion multi-especie y razas 4. Identificacion por microchip 5. Historial de pesos ## Alcance ### Incluido - CRUD de propietarios - CRUD de mascotas con foto - Catalogos de especies y razas - Busqueda por microchip - Historial de pesos - Vinculacion de multiples propietarios - Estados: activo, fallecido, perdido, dado_de_baja ### Excluido - QR para expediente (fase posterior) - App para propietarios (fase posterior) - Portal de autoservicio ## Especies Soportadas | Especie | Codigo | Vacunas Tipicas | |---------|--------|-----------------| | Canino (Perro) | CAN | Parvovirus, Moquillo, Rabia | | Felino (Gato) | FEL | Triple Felina, Leucemia, Rabia | | Ave | AVE | Variable segun tipo | | Reptil | REP | Sin vacunas estandar | | Roedor | ROE | Sin vacunas estandar | | Pez | PEZ | Tratamientos de agua | | Exotico | EXO | Segun especie | ## Modelo de Datos ### Tablas **veterinaria.propietarios** - id, tenant_id, partner_id (opcional) - nombre, apellidos, telefono, telefono_emergencia - email, direccion, rfc - active **veterinaria.mascotas** - id, tenant_id, propietario_id - especie_id, raza_id - nombre, sexo, fecha_nacimiento, edad_aproximada - color, peso_kg - numero_chip, tiene_chip - esterilizado, fecha_esterilizacion - alergias, condiciones_especiales, notas - foto_url, active **veterinaria.especies** (Catalogo) - id, tenant_id, nombre, nombre_cientifico **veterinaria.razas** (Catalogo) - id, tenant_id, especie_id, nombre - tamanio_promedio, peso_promedio_kg ## Endpoints API ### Propietarios | Metodo | Endpoint | Descripcion | |--------|----------|-------------| | GET | /propietarios | Listar propietarios | | GET | /propietarios/:id | Detalle propietario | | POST | /propietarios | Crear propietario | | PUT | /propietarios/:id | Actualizar | | DELETE | /propietarios/:id | Desactivar | | GET | /propietarios/:id/mascotas | Mascotas del propietario | ### Mascotas | Metodo | Endpoint | Descripcion | |--------|----------|-------------| | GET | /mascotas | Listar mascotas | | GET | /mascotas/:id | Detalle mascota | | POST | /mascotas | Registrar mascota | | PUT | /mascotas/:id | Actualizar | | DELETE | /mascotas/:id | Desactivar | | GET | /mascotas/chip/:numero | Buscar por microchip | | POST | /mascotas/:id/foto | Subir foto | | GET | /mascotas/:id/historial-peso | Historial de pesos | | POST | /mascotas/:id/peso | Registrar peso | ### Catalogos | Metodo | Endpoint | Descripcion | |--------|----------|-------------| | GET | /especies | Listar especies | | GET | /especies/:id/razas | Razas de especie | | POST | /razas | Crear raza | ## Interfaz del Servicio ```typescript interface MascotasService { getAll(filters?: MascotaFilters): Promise; getById(id: string): Promise; create(data: CreateMascota): Promise; update(id: string, data: UpdateMascota): Promise; findByChip(numeroChip: string): Promise; registrarPeso(mascotaId: string, pesoKg: number): Promise; getHistorialPeso(mascotaId: string): Promise; } interface PropietariosService { getAll(filters?: PropietarioFilters): Promise; getById(id: string): Promise; create(data: CreatePropietario): Promise; getMascotas(propietarioId: string): Promise; } interface CreateMascota { propietarioId: string; especieId: string; razaId?: string; nombre: string; sexo: SexoAnimal; fechaNacimiento?: Date; edadAproximada?: string; color?: string; pesoKg?: number; numeroChip?: string; esterilizado?: boolean; alergias?: string; } ``` ## Flujos ### Registrar Nueva Mascota ``` 1. Propietario llega a registrar mascota 2. Buscar si propietario existe (por telefono) 3. Si no existe, crear propietario 4. Crear registro de mascota: - Seleccionar especie - Seleccionar raza (opcional) - Datos basicos (nombre, sexo, edad) - Identificacion (chip si tiene) - Tomar foto 5. Guardar y abrir expediente ``` ### Buscar por Microchip ``` 1. Escanear microchip 2. Buscar en base de datos 3. Si existe: mostrar expediente 4. Si no existe: opcion de registrar 5. Validar propietario actual ``` ## Signos Vitales por Especie | Especie | Temp Normal | FC Normal | FR Normal | |---------|-------------|-----------|-----------| | Canino | 38-39°C | 60-120 lpm | 10-30 rpm | | Felino | 38-39°C | 120-180 lpm | 20-40 rpm | | Conejo | 38.5-40°C | 130-325 lpm | 30-60 rpm | | Ave | 40-42°C | Variable | Variable | ## Componentes Frontend ### MascotaCard ```typescript interface MascotaCardProps { mascota: Mascota; onClick: () => void; showOwner?: boolean; } // Muestra: // - Foto de la mascota // - Nombre y especie // - Raza // - Edad // - Chip (si tiene) // - Estado (activo/fallecido) ``` ### MascotaForm ```typescript interface MascotaFormProps { propietarioId: string; onSave: (mascota: Mascota) => void; } // Campos: // - Nombre // - Especie (dropdown) // - Raza (dropdown filtrado por especie) // - Sexo // - Fecha nacimiento / Edad aproximada // - Color // - Peso // - Microchip // - Esterilizado // - Alergias // - Foto ``` ## Entregables | Entregable | Estado | Archivo | |------------|--------|---------| | DDL mascotas | Completado | `database/schemas/01-veterinaria-schema-ddl.sql` | | DDL propietarios | Completado | `database/schemas/01-veterinaria-schema-ddl.sql` | | mascotas.module.ts | Pendiente | `backend/modules/mascotas/` | | propietarios.module.ts | Pendiente | `backend/modules/propietarios/` | | MascotaCard.tsx | Pendiente | `frontend/components/` | | MascotaForm.tsx | Pendiente | `frontend/components/` | ## Dependencias ### Depende de - Auth/Tenants (erp-core) ### Bloquea a - VET-002 (Vacunacion - requiere mascota) - VET-003 (Desparasitaciones) - VET-004 (Hospitalizacion) - VET-005 (Estetica) - Consultas veterinarias ## Criterios de Aceptacion - [ ] CRUD propietarios funciona - [ ] CRUD mascotas funciona - [ ] Catalogos de especies/razas - [ ] Busqueda por microchip - [ ] Foto se sube correctamente - [ ] Historial de peso funciona - [ ] Vinculacion propietario-mascota --- **Ultima actualizacion:** 2026-01-07