- Epicas documentadas - Schema de farmacia veterinaria - Inventario de base de datos - Reporte de ejecucion Sprint 7 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.5 KiB
6.5 KiB
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
- Registro completo de mascotas
- Vinculacion mascota-propietario
- Gestion multi-especie y razas
- Identificacion por microchip
- 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
interface MascotasService {
getAll(filters?: MascotaFilters): Promise<Mascota[]>;
getById(id: string): Promise<Mascota>;
create(data: CreateMascota): Promise<Mascota>;
update(id: string, data: UpdateMascota): Promise<Mascota>;
findByChip(numeroChip: string): Promise<Mascota | null>;
registrarPeso(mascotaId: string, pesoKg: number): Promise<void>;
getHistorialPeso(mascotaId: string): Promise<PesoHistorial[]>;
}
interface PropietariosService {
getAll(filters?: PropietarioFilters): Promise<Propietario[]>;
getById(id: string): Promise<Propietario>;
create(data: CreatePropietario): Promise<Propietario>;
getMascotas(propietarioId: string): Promise<Mascota[]>;
}
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
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
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