Compare commits

...

No commits in common. "master" and "main" have entirely different histories.
master ... main

67 changed files with 7041 additions and 2284 deletions

76
.gitignore vendored Normal file
View File

@ -0,0 +1,76 @@
# =============================================================================
# CLINICA-VETERINARIA .gitignore
# =============================================================================
# -----------------------------------------------------------------------------
# DEPENDENCIAS
# -----------------------------------------------------------------------------
node_modules/
.pnp/
.pnp.js
# -----------------------------------------------------------------------------
# BUILD OUTPUTS
# -----------------------------------------------------------------------------
dist/
build/
.next/
out/
# -----------------------------------------------------------------------------
# ENVIRONMENT Y SECRETOS
# -----------------------------------------------------------------------------
.env
.env.local
.env.*.local
!.env.example
# -----------------------------------------------------------------------------
# CLAVES Y CERTIFICADOS
# -----------------------------------------------------------------------------
*.pem
*.key
*.p8
*.p12
*.pfx
*.crt
certificates/
keys/
# -----------------------------------------------------------------------------
# LOGS
# -----------------------------------------------------------------------------
logs/
*.log
npm-debug.log*
# -----------------------------------------------------------------------------
# IDE Y EDITORES
# -----------------------------------------------------------------------------
.idea/
.vscode/
*.sublime-project
*.sublime-workspace
# -----------------------------------------------------------------------------
# SISTEMA OPERATIVO
# -----------------------------------------------------------------------------
.DS_Store
Thumbs.db
*.swp
*.swo
*~
# -----------------------------------------------------------------------------
# TESTING Y COVERAGE
# -----------------------------------------------------------------------------
coverage/
.nyc_output/
# -----------------------------------------------------------------------------
# TEMPORALES
# -----------------------------------------------------------------------------
tmp/
temp/
.cache/
.turbo/

11
.gitmodules vendored Normal file
View File

@ -0,0 +1,11 @@
[submodule "backend"]
path = apps/backend
url = git@gitea-server:rckrdmrd/clinica-veterinaria-backend-v2.git
[submodule "database"]
path = apps/database
url = git@gitea-server:rckrdmrd/clinica-veterinaria-database-v2.git
[submodule "frontend"]
path = apps/frontend-web
url = git@gitea-server:rckrdmrd/clinica-veterinaria-frontend-v2.git

42
CLAUDE.md Normal file
View File

@ -0,0 +1,42 @@
# CLAUDE.md - Clínica Veterinaria
**Hereda de:** workspace-v2/CLAUDE.md, erp-clinicas/CLAUDE.md
**Sistema:** SIMCO v4.0.0 + NEXUS v4.0
**Proyecto:** clinica-veterinaria
**Tipo:** SUB-CONSUMER (hereda de erp-clinicas)
**Versión:** 2.0.0
**Actualizado:** 2026-02-06
---
## EXTENSIONES LOCALES
Este archivo EXTIENDE (no reemplaza) las reglas del workspace.
Para reglas base, ver: `../../CLAUDE.md`
Para reglas de ERP Clínicas, ver: `../erp-clinicas/CLAUDE.md`
---
## DESCRIPCIÓN DEL PROYECTO
Sistema ERP especializado para clínicas veterinarias. Hereda funcionalidades base de erp-clinicas.
---
## STACK TECNOLÓGICO
- Backend: NestJS (heredado de erp-clinicas)
- Frontend: React (heredado)
- Database: PostgreSQL
---
## ALIAS LOCALES
| Alias | Ruta |
|-------|------|
| @LOCAL-ORCHESTRATION | orchestration/ |
---
**Sistema:** SIMCO v4.0.0 | **Tipo:** Instrucciones de Proyecto

7
apps/_MAP.md Normal file
View File

@ -0,0 +1,7 @@
# apps/ - Componentes de Aplicacion
| Directorio | Tipo | Descripcion |
|------------|------|-------------|
| backend/ | Submodulo | API backend |
| database/ | Submodulo | DDL y esquemas |
| frontend-web/ | Submodulo | Aplicacion web frontend |

1
apps/backend Submodule

@ -0,0 +1 @@
Subproject commit fd9f7004bc8b02a01aba03addcdbf881fdc9ca9b

1
apps/database Submodule

@ -0,0 +1 @@
Subproject commit 8ed6366b3006457a5a16dfa58fb3ad0c09eb7ac5

1
apps/frontend-web Submodule

@ -0,0 +1 @@
Subproject commit 36a84875a4367a91b303c8159454594f84d7aeb9

View File

@ -1,387 +0,0 @@
-- ============================================================================
-- VETERINARIA SCHEMA - Especialización de ERP-Clínicas
-- Clínica Veterinaria
-- ============================================================================
-- Fecha: 2026-01-04
-- Versión: 1.0
-- Hereda de: erp-clinicas FASE-8
-- ============================================================================
-- Schema
CREATE SCHEMA IF NOT EXISTS veterinaria;
-- ============================================================================
-- ENUMS
-- ============================================================================
DO $$ BEGIN
CREATE TYPE veterinaria.sexo_animal AS ENUM ('macho', 'hembra', 'desconocido');
EXCEPTION WHEN duplicate_object THEN NULL;
END $$;
DO $$ BEGIN
CREATE TYPE veterinaria.estado_hospitalizacion AS ENUM (
'ingresado', 'en_tratamiento', 'estable', 'critico', 'alta', 'fallecido'
);
EXCEPTION WHEN duplicate_object THEN NULL;
END $$;
-- ============================================================================
-- CATÁLOGOS
-- ============================================================================
-- Especies
CREATE TABLE IF NOT EXISTS veterinaria.especies (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
nombre VARCHAR(50) NOT NULL,
nombre_cientifico VARCHAR(100),
descripcion TEXT,
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.especies IS 'Catálogo de especies animales';
-- Razas
CREATE TABLE IF NOT EXISTS veterinaria.razas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
especie_id UUID NOT NULL REFERENCES veterinaria.especies(id) ON DELETE CASCADE,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
tamanio_promedio VARCHAR(20), -- 'pequeño', 'mediano', 'grande', 'gigante'
peso_promedio_kg NUMERIC(5,2),
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.razas IS 'Catálogo de razas por especie';
-- Vacunas
CREATE TABLE IF NOT EXISTS veterinaria.vacunas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
especie_id UUID REFERENCES veterinaria.especies(id),
laboratorio VARCHAR(100),
dosis_ml NUMERIC(5,2),
intervalo_refuerzo_dias INTEGER,
es_obligatoria BOOLEAN DEFAULT false,
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.vacunas IS 'Catálogo de vacunas veterinarias';
-- ============================================================================
-- TABLAS PRINCIPALES
-- ============================================================================
-- Propietarios (dueños de mascotas)
CREATE TABLE IF NOT EXISTS veterinaria.propietarios (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
partner_id UUID, -- Referencia opcional a core.partners
nombre VARCHAR(100) NOT NULL,
apellidos VARCHAR(100),
telefono VARCHAR(20),
telefono_emergencia VARCHAR(20),
email VARCHAR(100),
direccion TEXT,
rfc VARCHAR(13),
-- Control
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.propietarios IS 'Propietarios/dueños de mascotas';
-- Mascotas (pacientes)
CREATE TABLE IF NOT EXISTS veterinaria.mascotas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
propietario_id UUID NOT NULL REFERENCES veterinaria.propietarios(id),
especie_id UUID NOT NULL REFERENCES veterinaria.especies(id),
raza_id UUID REFERENCES veterinaria.razas(id),
-- Datos básicos
nombre VARCHAR(100) NOT NULL,
sexo veterinaria.sexo_animal DEFAULT 'desconocido',
fecha_nacimiento DATE,
edad_aproximada VARCHAR(50), -- "3 años", "6 meses"
color VARCHAR(50),
peso_kg NUMERIC(6,2),
-- Identificación
numero_chip VARCHAR(50),
tiene_chip BOOLEAN DEFAULT false,
-- Estado
esterilizado BOOLEAN DEFAULT false,
fecha_esterilizacion DATE,
-- Notas
alergias TEXT,
condiciones_especiales TEXT,
notas TEXT,
-- Foto
foto_url VARCHAR(255),
-- Control
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.mascotas IS 'Mascotas/pacientes de la clínica veterinaria';
-- Cartilla de vacunación
CREATE TABLE IF NOT EXISTS veterinaria.cartilla_vacunacion (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
mascota_id UUID NOT NULL REFERENCES veterinaria.mascotas(id) ON DELETE CASCADE,
vacuna_id UUID NOT NULL REFERENCES veterinaria.vacunas(id),
veterinario_id UUID, -- Referencia a clinica.doctors
-- Datos de aplicación
fecha_aplicacion DATE NOT NULL,
fecha_proximo_refuerzo DATE,
lote VARCHAR(50),
laboratorio VARCHAR(100),
-- Notas
observaciones TEXT,
-- Control
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.cartilla_vacunacion IS 'Historial de vacunación de mascotas';
-- Desparasitaciones
CREATE TABLE IF NOT EXISTS veterinaria.desparasitaciones (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
mascota_id UUID NOT NULL REFERENCES veterinaria.mascotas(id) ON DELETE CASCADE,
veterinario_id UUID,
-- Datos
tipo VARCHAR(50) NOT NULL, -- 'interna', 'externa', 'ambas'
producto VARCHAR(100) NOT NULL,
dosis VARCHAR(50),
via_administracion VARCHAR(50),
fecha_aplicacion DATE NOT NULL,
fecha_proxima DATE,
-- Notas
observaciones TEXT,
-- Control
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.desparasitaciones IS 'Historial de desparasitaciones';
-- Hospitalización
CREATE TABLE IF NOT EXISTS veterinaria.hospitalizacion (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
mascota_id UUID NOT NULL REFERENCES veterinaria.mascotas(id),
veterinario_id UUID,
consultation_id UUID, -- Referencia a clinica.consultations
-- Datos de ingreso
fecha_ingreso TIMESTAMPTZ NOT NULL DEFAULT NOW(),
motivo_ingreso TEXT NOT NULL,
diagnostico_ingreso TEXT,
-- Ubicación
area VARCHAR(50), -- 'jaula_pequena', 'jaula_grande', 'quirofano', 'uci'
numero_jaula VARCHAR(20),
-- Estado
estado veterinaria.estado_hospitalizacion DEFAULT 'ingresado',
-- Alta
fecha_alta TIMESTAMPTZ,
diagnostico_alta TEXT,
instrucciones_alta TEXT,
-- Control
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.hospitalizacion IS 'Registro de hospitalizaciones';
-- Monitoreo de hospitalización
CREATE TABLE IF NOT EXISTS veterinaria.hospitalizacion_monitoreo (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
hospitalizacion_id UUID NOT NULL REFERENCES veterinaria.hospitalizacion(id) ON DELETE CASCADE,
-- Signos vitales
fecha_hora TIMESTAMPTZ NOT NULL DEFAULT NOW(),
peso_kg NUMERIC(6,2),
temperatura NUMERIC(4,1),
frecuencia_cardiaca INTEGER,
frecuencia_respiratoria INTEGER,
-- Alimentación
comio BOOLEAN,
bebio_agua BOOLEAN,
-- Eliminación
orino BOOLEAN,
defeco BOOLEAN,
consistencia_heces VARCHAR(50),
-- Estado
estado_animo VARCHAR(50),
nivel_dolor INTEGER CHECK (nivel_dolor BETWEEN 0 AND 10),
-- Notas
observaciones TEXT,
registrado_por UUID, -- employee_id
-- Control
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.hospitalizacion_monitoreo IS 'Monitoreo durante hospitalización';
-- Servicios de estética
CREATE TABLE IF NOT EXISTS veterinaria.estetica (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
mascota_id UUID NOT NULL REFERENCES veterinaria.mascotas(id),
estilista_id UUID, -- employee_id
-- Servicios
fecha_servicio TIMESTAMPTZ NOT NULL DEFAULT NOW(),
servicios TEXT[], -- ['baño', 'corte', 'limpieza_oidos', 'corte_unas']
tipo_corte VARCHAR(50),
shampoo_usado VARCHAR(100),
-- Estado
estado VARCHAR(20) DEFAULT 'pendiente', -- 'pendiente', 'en_proceso', 'terminado'
hora_inicio TIME,
hora_fin TIME,
-- Notas
observaciones TEXT,
observaciones_piel TEXT,
-- Precio
precio NUMERIC(10,2),
-- Control
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.estetica IS 'Servicios de estética/grooming';
-- ============================================================================
-- EXTENSIONES A TABLAS DE ERP-CLINICAS
-- ============================================================================
-- Extensión a clinica.consultations (si existe)
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = 'clinica' AND table_name = 'consultations') THEN
-- mascota_id
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema = 'clinica' AND table_name = 'consultations'
AND column_name = 'mascota_id') THEN
ALTER TABLE clinica.consultations ADD COLUMN mascota_id UUID
REFERENCES veterinaria.mascotas(id);
END IF;
-- peso_actual
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema = 'clinica' AND table_name = 'consultations'
AND column_name = 'peso_actual') THEN
ALTER TABLE clinica.consultations ADD COLUMN peso_actual NUMERIC(6,2);
END IF;
-- temperatura
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema = 'clinica' AND table_name = 'consultations'
AND column_name = 'temperatura') THEN
ALTER TABLE clinica.consultations ADD COLUMN temperatura NUMERIC(4,1);
END IF;
END IF;
END $$;
-- ============================================================================
-- ÍNDICES
-- ============================================================================
CREATE INDEX IF NOT EXISTS idx_especies_tenant ON veterinaria.especies(tenant_id);
CREATE INDEX IF NOT EXISTS idx_razas_tenant ON veterinaria.razas(tenant_id);
CREATE INDEX IF NOT EXISTS idx_razas_especie ON veterinaria.razas(especie_id);
CREATE INDEX IF NOT EXISTS idx_vacunas_tenant ON veterinaria.vacunas(tenant_id);
CREATE INDEX IF NOT EXISTS idx_vacunas_especie ON veterinaria.vacunas(especie_id);
CREATE INDEX IF NOT EXISTS idx_propietarios_tenant ON veterinaria.propietarios(tenant_id);
CREATE INDEX IF NOT EXISTS idx_propietarios_telefono ON veterinaria.propietarios(telefono);
CREATE INDEX IF NOT EXISTS idx_mascotas_tenant ON veterinaria.mascotas(tenant_id);
CREATE INDEX IF NOT EXISTS idx_mascotas_propietario ON veterinaria.mascotas(propietario_id);
CREATE INDEX IF NOT EXISTS idx_mascotas_especie ON veterinaria.mascotas(especie_id);
CREATE INDEX IF NOT EXISTS idx_mascotas_chip ON veterinaria.mascotas(numero_chip) WHERE numero_chip IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_cartilla_tenant ON veterinaria.cartilla_vacunacion(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cartilla_mascota ON veterinaria.cartilla_vacunacion(mascota_id);
CREATE INDEX IF NOT EXISTS idx_cartilla_fecha ON veterinaria.cartilla_vacunacion(fecha_proximo_refuerzo);
CREATE INDEX IF NOT EXISTS idx_desparasitaciones_tenant ON veterinaria.desparasitaciones(tenant_id);
CREATE INDEX IF NOT EXISTS idx_desparasitaciones_mascota ON veterinaria.desparasitaciones(mascota_id);
CREATE INDEX IF NOT EXISTS idx_hospitalizacion_tenant ON veterinaria.hospitalizacion(tenant_id);
CREATE INDEX IF NOT EXISTS idx_hospitalizacion_mascota ON veterinaria.hospitalizacion(mascota_id);
CREATE INDEX IF NOT EXISTS idx_hospitalizacion_estado ON veterinaria.hospitalizacion(tenant_id, estado);
CREATE INDEX IF NOT EXISTS idx_hospitalizacion_monitoreo_hosp ON veterinaria.hospitalizacion_monitoreo(hospitalizacion_id);
CREATE INDEX IF NOT EXISTS idx_estetica_tenant ON veterinaria.estetica(tenant_id);
CREATE INDEX IF NOT EXISTS idx_estetica_mascota ON veterinaria.estetica(mascota_id);
CREATE INDEX IF NOT EXISTS idx_estetica_fecha ON veterinaria.estetica(fecha_servicio);
-- ============================================================================
-- RLS
-- ============================================================================
ALTER TABLE veterinaria.especies ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.razas ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.vacunas ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.propietarios ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.mascotas ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.cartilla_vacunacion ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.desparasitaciones ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.hospitalizacion ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.hospitalizacion_monitoreo ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.estetica ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS tenant_isolation_especies ON veterinaria.especies;
CREATE POLICY tenant_isolation_especies ON veterinaria.especies
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_razas ON veterinaria.razas;
CREATE POLICY tenant_isolation_razas ON veterinaria.razas
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_vacunas ON veterinaria.vacunas;
CREATE POLICY tenant_isolation_vacunas ON veterinaria.vacunas
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_propietarios ON veterinaria.propietarios;
CREATE POLICY tenant_isolation_propietarios ON veterinaria.propietarios
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_mascotas ON veterinaria.mascotas;
CREATE POLICY tenant_isolation_mascotas ON veterinaria.mascotas
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_cartilla ON veterinaria.cartilla_vacunacion;
CREATE POLICY tenant_isolation_cartilla ON veterinaria.cartilla_vacunacion
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_desparasitaciones ON veterinaria.desparasitaciones;
CREATE POLICY tenant_isolation_desparasitaciones ON veterinaria.desparasitaciones
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_hospitalizacion ON veterinaria.hospitalizacion;
CREATE POLICY tenant_isolation_hospitalizacion ON veterinaria.hospitalizacion
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_hosp_monitoreo ON veterinaria.hospitalizacion_monitoreo;
CREATE POLICY tenant_isolation_hosp_monitoreo ON veterinaria.hospitalizacion_monitoreo
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_estetica ON veterinaria.estetica;
CREATE POLICY tenant_isolation_estetica ON veterinaria.estetica
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
-- ============================================================================
-- FIN VETERINARIA SCHEMA
-- ============================================================================

View File

@ -1,464 +0,0 @@
-- ============================================================================
-- VETERINARIA SCHEMA - Farmacia (VET-006)
-- Sistema de gestion de farmacia veterinaria
-- ============================================================================
-- Fecha: 2026-01-07
-- Version: 1.0
-- Basado en: VET-006-farmacia.md
-- ============================================================================
-- ============================================================================
-- ENUMS
-- ============================================================================
DO $$ BEGIN
CREATE TYPE veterinaria.categoria_medicamento AS ENUM (
'antibiotico',
'antiparasitario',
'analgesico',
'antiinflamatorio',
'vacuna',
'vitamina',
'dermatologico',
'oftalmico',
'cardiaco',
'digestivo',
'otro'
);
EXCEPTION WHEN duplicate_object THEN NULL;
END $$;
DO $$ BEGIN
CREATE TYPE veterinaria.tipo_movimiento_farmacia AS ENUM (
'entrada',
'salida',
'ajuste_positivo',
'ajuste_negativo',
'devolucion',
'merma'
);
EXCEPTION WHEN duplicate_object THEN NULL;
END $$;
DO $$ BEGIN
CREATE TYPE veterinaria.fraccion_controlada AS ENUM (
'no_controlado',
'fraccion_i',
'fraccion_ii',
'fraccion_iii',
'fraccion_iv'
);
EXCEPTION WHEN duplicate_object THEN NULL;
END $$;
-- ============================================================================
-- TABLAS PRINCIPALES
-- ============================================================================
-- Catalogo de medicamentos
CREATE TABLE IF NOT EXISTS veterinaria.medicamentos (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
-- Identificacion
codigo VARCHAR(50),
nombre VARCHAR(150) NOT NULL,
nombre_comercial VARCHAR(150),
principio_activo VARCHAR(200),
-- Clasificacion
categoria veterinaria.categoria_medicamento DEFAULT 'otro',
-- Presentacion
presentacion VARCHAR(100), -- 'tabletas', 'inyectable', 'suspension', etc.
concentracion VARCHAR(50), -- '500mg', '100mg/ml'
contenido VARCHAR(50), -- '30 tabletas', '100ml'
-- Fabricante
laboratorio VARCHAR(100),
-- Control
requiere_receta BOOLEAN DEFAULT false,
controlado BOOLEAN DEFAULT false,
fraccion_controlada veterinaria.fraccion_controlada DEFAULT 'no_controlado',
-- Stock
stock_minimo INTEGER DEFAULT 10,
stock_actual INTEGER DEFAULT 0,
-- Precios
precio_compra NUMERIC(10,2),
precio_venta NUMERIC(10,2),
-- Especies aplicables (NULL = todas)
especies_aplicables UUID[], -- Array de especie_id
-- Estado
active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.medicamentos IS 'Catalogo de medicamentos veterinarios';
-- Lotes de medicamentos (control de caducidad)
CREATE TABLE IF NOT EXISTS veterinaria.medicamentos_lotes (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
medicamento_id UUID NOT NULL REFERENCES veterinaria.medicamentos(id) ON DELETE CASCADE,
-- Lote
numero_lote VARCHAR(50) NOT NULL,
fecha_caducidad DATE NOT NULL,
-- Cantidades
cantidad_inicial INTEGER NOT NULL,
cantidad_actual INTEGER NOT NULL,
-- Compra
precio_compra NUMERIC(10,2),
factura_compra VARCHAR(50),
proveedor VARCHAR(100),
fecha_recepcion DATE DEFAULT CURRENT_DATE,
-- Estado
bloqueado BOOLEAN DEFAULT false, -- Bloquear si esta vencido
motivo_bloqueo TEXT,
-- Control
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.medicamentos_lotes IS 'Lotes de medicamentos con control de caducidad';
-- Dispensaciones de medicamentos
CREATE TABLE IF NOT EXISTS veterinaria.dispensaciones (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
-- Referencias
medicamento_id UUID NOT NULL REFERENCES veterinaria.medicamentos(id),
lote_id UUID NOT NULL REFERENCES veterinaria.medicamentos_lotes(id),
mascota_id UUID REFERENCES veterinaria.mascotas(id),
veterinario_id UUID, -- Referencia a clinica.doctors
receta_id UUID, -- Referencia a clinica.prescriptions si existe
consultation_id UUID, -- Referencia a clinica.consultations
-- Dispensacion
cantidad INTEGER NOT NULL,
fecha_dispensacion TIMESTAMPTZ DEFAULT NOW(),
-- Instrucciones
dosis VARCHAR(100), -- '1 tableta cada 8 horas'
duracion_tratamiento VARCHAR(50), -- '7 dias'
instrucciones TEXT,
-- Control
dispensado_por UUID, -- employee_id
notas TEXT,
-- Auditoria
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.dispensaciones IS 'Registro de dispensacion de medicamentos';
-- Movimientos de inventario (kardex)
CREATE TABLE IF NOT EXISTS veterinaria.movimientos_farmacia (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
medicamento_id UUID NOT NULL REFERENCES veterinaria.medicamentos(id),
lote_id UUID REFERENCES veterinaria.medicamentos_lotes(id),
-- Movimiento
tipo veterinaria.tipo_movimiento_farmacia NOT NULL,
cantidad INTEGER NOT NULL,
stock_anterior INTEGER NOT NULL,
stock_posterior INTEGER NOT NULL,
-- Referencia
referencia_tipo VARCHAR(50), -- 'dispensacion', 'compra', 'ajuste'
referencia_id UUID,
-- Detalles
motivo TEXT,
documento VARCHAR(100), -- Factura, nota, etc.
-- Auditoria
usuario_id UUID,
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.movimientos_farmacia IS 'Kardex de movimientos de inventario de farmacia';
-- Bitacora de medicamentos controlados
CREATE TABLE IF NOT EXISTS veterinaria.bitacora_controlados (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
medicamento_id UUID NOT NULL REFERENCES veterinaria.medicamentos(id),
lote_id UUID REFERENCES veterinaria.medicamentos_lotes(id),
dispensacion_id UUID REFERENCES veterinaria.dispensaciones(id),
-- Movimiento
tipo_movimiento veterinaria.tipo_movimiento_farmacia NOT NULL,
cantidad INTEGER NOT NULL,
-- Paciente
mascota_id UUID REFERENCES veterinaria.mascotas(id),
propietario_nombre VARCHAR(200), -- Snapshot del nombre
-- Prescripcion
receta_id UUID,
veterinario_id UUID,
veterinario_cedula VARCHAR(50),
-- Justificacion
justificacion TEXT NOT NULL,
diagnostico TEXT,
-- Auditoria
fecha_registro TIMESTAMPTZ DEFAULT NOW(),
registrado_por UUID NOT NULL,
ip_address VARCHAR(45),
created_at TIMESTAMPTZ DEFAULT NOW()
);
COMMENT ON TABLE veterinaria.bitacora_controlados IS 'Bitacora de movimientos de medicamentos controlados (requerido por COFEPRIS)';
-- ============================================================================
-- INDICES
-- ============================================================================
CREATE INDEX IF NOT EXISTS idx_medicamentos_tenant ON veterinaria.medicamentos(tenant_id);
CREATE INDEX IF NOT EXISTS idx_medicamentos_codigo ON veterinaria.medicamentos(tenant_id, codigo);
CREATE INDEX IF NOT EXISTS idx_medicamentos_nombre ON veterinaria.medicamentos(tenant_id, nombre);
CREATE INDEX IF NOT EXISTS idx_medicamentos_categoria ON veterinaria.medicamentos(tenant_id, categoria);
CREATE INDEX IF NOT EXISTS idx_medicamentos_controlado ON veterinaria.medicamentos(tenant_id, controlado) WHERE controlado = true;
CREATE INDEX IF NOT EXISTS idx_medicamentos_stock_bajo ON veterinaria.medicamentos(tenant_id)
WHERE stock_actual <= stock_minimo;
CREATE INDEX IF NOT EXISTS idx_lotes_tenant ON veterinaria.medicamentos_lotes(tenant_id);
CREATE INDEX IF NOT EXISTS idx_lotes_medicamento ON veterinaria.medicamentos_lotes(medicamento_id);
CREATE INDEX IF NOT EXISTS idx_lotes_caducidad ON veterinaria.medicamentos_lotes(fecha_caducidad);
CREATE INDEX IF NOT EXISTS idx_lotes_numero ON veterinaria.medicamentos_lotes(tenant_id, numero_lote);
CREATE INDEX IF NOT EXISTS idx_lotes_proximos_caducar ON veterinaria.medicamentos_lotes(tenant_id, fecha_caducidad)
WHERE cantidad_actual > 0 AND bloqueado = false;
CREATE INDEX IF NOT EXISTS idx_dispensaciones_tenant ON veterinaria.dispensaciones(tenant_id);
CREATE INDEX IF NOT EXISTS idx_dispensaciones_medicamento ON veterinaria.dispensaciones(medicamento_id);
CREATE INDEX IF NOT EXISTS idx_dispensaciones_mascota ON veterinaria.dispensaciones(mascota_id);
CREATE INDEX IF NOT EXISTS idx_dispensaciones_fecha ON veterinaria.dispensaciones(fecha_dispensacion);
CREATE INDEX IF NOT EXISTS idx_dispensaciones_veterinario ON veterinaria.dispensaciones(veterinario_id);
CREATE INDEX IF NOT EXISTS idx_movimientos_tenant ON veterinaria.movimientos_farmacia(tenant_id);
CREATE INDEX IF NOT EXISTS idx_movimientos_medicamento ON veterinaria.movimientos_farmacia(medicamento_id);
CREATE INDEX IF NOT EXISTS idx_movimientos_fecha ON veterinaria.movimientos_farmacia(created_at);
CREATE INDEX IF NOT EXISTS idx_bitacora_tenant ON veterinaria.bitacora_controlados(tenant_id);
CREATE INDEX IF NOT EXISTS idx_bitacora_medicamento ON veterinaria.bitacora_controlados(medicamento_id);
CREATE INDEX IF NOT EXISTS idx_bitacora_fecha ON veterinaria.bitacora_controlados(fecha_registro);
-- ============================================================================
-- RLS
-- ============================================================================
ALTER TABLE veterinaria.medicamentos ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.medicamentos_lotes ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.dispensaciones ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.movimientos_farmacia ENABLE ROW LEVEL SECURITY;
ALTER TABLE veterinaria.bitacora_controlados ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS tenant_isolation_medicamentos ON veterinaria.medicamentos;
CREATE POLICY tenant_isolation_medicamentos ON veterinaria.medicamentos
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_lotes ON veterinaria.medicamentos_lotes;
CREATE POLICY tenant_isolation_lotes ON veterinaria.medicamentos_lotes
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_dispensaciones ON veterinaria.dispensaciones;
CREATE POLICY tenant_isolation_dispensaciones ON veterinaria.dispensaciones
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_movimientos ON veterinaria.movimientos_farmacia;
CREATE POLICY tenant_isolation_movimientos ON veterinaria.movimientos_farmacia
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
DROP POLICY IF EXISTS tenant_isolation_bitacora ON veterinaria.bitacora_controlados;
CREATE POLICY tenant_isolation_bitacora ON veterinaria.bitacora_controlados
USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
-- ============================================================================
-- TRIGGERS
-- ============================================================================
-- Trigger para actualizar stock_actual en medicamentos
CREATE OR REPLACE FUNCTION veterinaria.actualizar_stock_medicamento()
RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
-- Actualizar stock del medicamento
UPDATE veterinaria.medicamentos
SET stock_actual = stock_actual + NEW.cantidad_inicial,
updated_at = NOW()
WHERE id = NEW.medicamento_id;
ELSIF TG_OP = 'UPDATE' THEN
-- Si cambia cantidad_actual
UPDATE veterinaria.medicamentos
SET stock_actual = (
SELECT COALESCE(SUM(cantidad_actual), 0)
FROM veterinaria.medicamentos_lotes
WHERE medicamento_id = NEW.medicamento_id
AND bloqueado = false
),
updated_at = NOW()
WHERE id = NEW.medicamento_id;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS trg_actualizar_stock ON veterinaria.medicamentos_lotes;
CREATE TRIGGER trg_actualizar_stock
AFTER INSERT OR UPDATE OF cantidad_actual ON veterinaria.medicamentos_lotes
FOR EACH ROW
EXECUTE FUNCTION veterinaria.actualizar_stock_medicamento();
COMMENT ON FUNCTION veterinaria.actualizar_stock_medicamento() IS 'Actualiza stock_actual en medicamentos cuando cambian los lotes';
-- Trigger para registrar movimiento en dispensacion
CREATE OR REPLACE FUNCTION veterinaria.registrar_movimiento_dispensacion()
RETURNS TRIGGER AS $$
DECLARE
v_stock_anterior INTEGER;
BEGIN
-- Obtener stock anterior
SELECT stock_actual INTO v_stock_anterior
FROM veterinaria.medicamentos
WHERE id = NEW.medicamento_id;
-- Descontar del lote
UPDATE veterinaria.medicamentos_lotes
SET cantidad_actual = cantidad_actual - NEW.cantidad,
updated_at = NOW()
WHERE id = NEW.lote_id;
-- Registrar movimiento
INSERT INTO veterinaria.movimientos_farmacia (
tenant_id, medicamento_id, lote_id,
tipo, cantidad, stock_anterior, stock_posterior,
referencia_tipo, referencia_id, usuario_id
) VALUES (
NEW.tenant_id, NEW.medicamento_id, NEW.lote_id,
'salida', NEW.cantidad, v_stock_anterior, v_stock_anterior - NEW.cantidad,
'dispensacion', NEW.id, NEW.dispensado_por
);
-- Si es controlado, registrar en bitacora
IF EXISTS (
SELECT 1 FROM veterinaria.medicamentos
WHERE id = NEW.medicamento_id AND controlado = true
) THEN
INSERT INTO veterinaria.bitacora_controlados (
tenant_id, medicamento_id, lote_id, dispensacion_id,
tipo_movimiento, cantidad, mascota_id,
propietario_nombre, receta_id, veterinario_id,
justificacion, registrado_por
)
SELECT
NEW.tenant_id, NEW.medicamento_id, NEW.lote_id, NEW.id,
'salida', NEW.cantidad, NEW.mascota_id,
CONCAT(p.nombre, ' ', COALESCE(p.apellidos, '')),
NEW.receta_id, NEW.veterinario_id,
COALESCE(NEW.notas, 'Dispensacion de medicamento'),
NEW.dispensado_por
FROM veterinaria.mascotas m
JOIN veterinaria.propietarios p ON m.propietario_id = p.id
WHERE m.id = NEW.mascota_id;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS trg_registrar_dispensacion ON veterinaria.dispensaciones;
CREATE TRIGGER trg_registrar_dispensacion
AFTER INSERT ON veterinaria.dispensaciones
FOR EACH ROW
EXECUTE FUNCTION veterinaria.registrar_movimiento_dispensacion();
COMMENT ON FUNCTION veterinaria.registrar_movimiento_dispensacion() IS 'Registra movimiento y bitacora al dispensar medicamentos';
-- ============================================================================
-- FUNCIONES DE CONSULTA
-- ============================================================================
-- Funcion para obtener lotes proximos a caducar
CREATE OR REPLACE FUNCTION veterinaria.get_lotes_proximos_caducar(
p_tenant_id UUID,
p_dias INTEGER DEFAULT 30
)
RETURNS TABLE (
lote_id UUID,
medicamento_id UUID,
medicamento_nombre VARCHAR,
numero_lote VARCHAR,
fecha_caducidad DATE,
dias_restantes INTEGER,
cantidad_actual INTEGER
) AS $$
BEGIN
RETURN QUERY
SELECT
l.id AS lote_id,
m.id AS medicamento_id,
m.nombre AS medicamento_nombre,
l.numero_lote,
l.fecha_caducidad,
(l.fecha_caducidad - CURRENT_DATE)::INTEGER AS dias_restantes,
l.cantidad_actual
FROM veterinaria.medicamentos_lotes l
JOIN veterinaria.medicamentos m ON l.medicamento_id = m.id
WHERE l.tenant_id = p_tenant_id
AND l.cantidad_actual > 0
AND l.bloqueado = false
AND l.fecha_caducidad <= CURRENT_DATE + p_dias
ORDER BY l.fecha_caducidad ASC;
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION veterinaria.get_lotes_proximos_caducar(UUID, INTEGER) IS 'Obtiene lotes que caducaran en los proximos N dias';
-- Funcion para obtener medicamentos con stock bajo
CREATE OR REPLACE FUNCTION veterinaria.get_medicamentos_stock_bajo(p_tenant_id UUID)
RETURNS TABLE (
medicamento_id UUID,
codigo VARCHAR,
nombre VARCHAR,
stock_actual INTEGER,
stock_minimo INTEGER,
diferencia INTEGER
) AS $$
BEGIN
RETURN QUERY
SELECT
m.id AS medicamento_id,
m.codigo,
m.nombre,
m.stock_actual,
m.stock_minimo,
(m.stock_minimo - m.stock_actual) AS diferencia
FROM veterinaria.medicamentos m
WHERE m.tenant_id = p_tenant_id
AND m.active = true
AND m.stock_actual <= m.stock_minimo
ORDER BY diferencia DESC;
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION veterinaria.get_medicamentos_stock_bajo(UUID) IS 'Obtiene medicamentos con stock igual o menor al minimo';
-- Funcion para seleccionar lote FEFO (First Expired, First Out)
CREATE OR REPLACE FUNCTION veterinaria.seleccionar_lote_fefo(
p_medicamento_id UUID,
p_cantidad INTEGER
)
RETURNS UUID AS $$
DECLARE
v_lote_id UUID;
BEGIN
SELECT id INTO v_lote_id
FROM veterinaria.medicamentos_lotes
WHERE medicamento_id = p_medicamento_id
AND cantidad_actual >= p_cantidad
AND bloqueado = false
AND fecha_caducidad > CURRENT_DATE
ORDER BY fecha_caducidad ASC
LIMIT 1;
IF v_lote_id IS NULL THEN
RAISE EXCEPTION 'No hay lotes disponibles con stock suficiente para el medicamento %', p_medicamento_id;
END IF;
RETURN v_lote_id;
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION veterinaria.seleccionar_lote_fefo(UUID, INTEGER) IS 'Selecciona el lote con fecha de caducidad mas proxima (FEFO)';
-- ============================================================================
-- FIN VETERINARIA FARMACIA SCHEMA
-- ============================================================================

View File

@ -1,146 +0,0 @@
-- ============================================================================
-- 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;

View File

@ -0,0 +1,37 @@
# VISION GENERAL: CLINICA VETERINARIA
**Proyecto:** Clinica Veterinaria
**Tipo:** Vertical ERP Clinicas - Especializacion Veterinaria
**Sistema:** NEXUS v4.0 + SIMCO
**Actualizado:** 2026-01-10
---
## Documentos en esta Seccion
| Documento | Descripcion |
|-----------|-------------|
| README.md | Introduccion al proyecto |
| VISION.md | Vision estrategica del producto |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Indice docs/ | [../_MAP.md](../_MAP.md) |
| Orquestacion | [../../orchestration/_MAP.md](../../orchestration/_MAP.md) |
| Contexto Proyecto | [../../orchestration/00-guidelines/CONTEXTO-PROYECTO.md](../../orchestration/00-guidelines/CONTEXTO-PROYECTO.md) |
---
## Herencia
Este proyecto hereda de:
- **erp-clinicas** (vertical de clinicas)
- **erp-core** (base ERP)
---
**Actualizado:** 2026-01-10

View File

@ -0,0 +1,187 @@
---
id: MGN-016-billing-vet
title: "Modulo Billing - Facturacion Veterinaria"
type: ModuleOverview
status: Draft
version: 1.0.0
created_date: 2026-01-13
updated_date: 2026-01-13
module: billing
priority: P0
source: erp-core/MGN-016-billing
---
# MGN-016: Billing - Sistema de Facturacion para Clinicas Veterinarias
## Resumen Ejecutivo
El modulo Billing implementa el sistema de facturacion y suscripciones para clinicas veterinarias, integrando Stripe Billing como proveedor de pagos. Permite gestionar suscripciones mensuales y anuales para clinicas, facturacion de servicios veterinarios y paquetes de bienestar animal.
---
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Lineamientos para la clasificacion y prescripcion de productos farmaceuticos veterinarios
- **SENASICA**: Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria
- **SAT**: Facturacion electronica (CFDI) para servicios veterinarios
---
## Objetivos
### Objetivo Principal
Implementar un sistema de billing completo para clinicas veterinarias que permita:
- Suscripciones mensuales y anuales para clinicas
- Facturacion de servicios (consultas, cirugia, hospitalizacion)
- Facturacion de productos (medicamentos, alimentos, accesorios)
- Paquetes de vacunacion y desparasitacion
- Planes de bienestar por mascota
### Objetivos Secundarios
- Sincronizacion bidireccional con Stripe via webhooks
- Soporte para periodos de prueba (14 dias)
- Manejo de pagos fallidos y dunning
- Historial de facturas por propietario de mascota
- Facturacion recurrente para planes de bienestar
---
## Planes para Clinicas Veterinarias
| Plan | Precio/mes | Mascotas | Veterinarios | Funcionalidades |
|------|-----------|----------|--------------|-----------------|
| **Basico** | $499 MXN | 100 | 2 | Expedientes, Citas, Vacunacion basica |
| **Profesional** | $999 MXN | 500 | 5 | + Hospitalizacion, Laboratorio, WhatsApp |
| **Clinica** | $1,999 MXN | Ilimitadas | 10 | + IA, Reportes avanzados, Integraciones |
| **Hospital** | $3,999 MXN | Ilimitadas | Ilimitados | + Multi-sucursal, API, Soporte prioritario |
---
## Servicios Facturables
### Consultas y Atencion
| Servicio | Precio Sugerido | Notas |
|----------|----------------|-------|
| Consulta general | $350-500 MXN | Todas las especies |
| Consulta de emergencia | $500-800 MXN | 24/7 |
| Vacunacion (aplicacion) | $150-300 MXN | + costo de vacuna |
| Desparasitacion | $100-200 MXN | + costo de producto |
### Hospitalizacion
| Servicio | Precio Sugerido | Notas |
|----------|----------------|-------|
| Hospitalizacion canino/dia | $400-800 MXN | Segun tamano |
| Hospitalizacion felino/dia | $300-500 MXN | |
| Hospitalizacion exotico/dia | $500-1000 MXN | Requiere equipo especial |
### Cirugia
| Servicio | Precio Sugerido | Notas |
|----------|----------------|-------|
| Esterilizacion canino macho | $800-1500 MXN | Segun peso |
| Esterilizacion canino hembra | $1200-2500 MXN | Segun peso |
| Esterilizacion felino | $600-1200 MXN | |
| Limpieza dental | $800-1500 MXN | + anestesia |
---
## Paquetes de Bienestar
### Plan Cachorro/Gatito
Paquete anual para mascotas de 0-1 anio:
- 4 consultas de seguimiento
- Esquema completo de vacunacion
- 4 desparasitaciones
- Esterilizacion incluida
- **Precio:** $3,500-4,500 MXN/anio
### Plan Adulto
Paquete anual para mascotas de 1-7 anios:
- 2 consultas de chequeo
- Vacunas anuales de refuerzo
- 2 desparasitaciones
- Limpieza dental con 20% descuento
- **Precio:** $2,000-3,000 MXN/anio
### Plan Senior
Paquete anual para mascotas mayores de 7 anios:
- 4 consultas de seguimiento
- Vacunas anuales de refuerzo
- 4 desparasitaciones
- Examenes geriatricos (sangre, orina)
- **Precio:** $4,000-5,500 MXN/anio
---
## Arquitectura
### Flujo de Pago de Suscripcion
```
1. Clinica selecciona plan en frontend
|
2. Frontend llama POST /billing/checkout
|
3. Backend crea Checkout Session en Stripe
|
4. Clinica completa pago en Stripe
|
5. Stripe envia webhook: checkout.session.completed
|
6. Backend activa suscripcion de clinica
|
7. Clinica puede registrar mascotas y facturar
```
---
## Dependencias
### Modulos Prerequisito
| Modulo | Tipo | Descripcion |
|--------|------|-------------|
| MGN-001-auth | Requerido | Autenticacion JWT |
| MGN-002-users | Requerido | Usuario veterinario/propietario |
| MGN-004-tenants | Requerido | Contexto multi-tenant (por clinica) |
### Servicios Externos
| Servicio | Proposito | Requerido |
|----------|-----------|-----------|
| Stripe | Billing y pagos | Si |
| SAT | CFDI (factura electronica) | Opcional |
---
## Seguridad
| Medida | Implementacion |
|--------|----------------|
| PCI Compliance | No almacenar datos de tarjeta (Stripe) |
| Webhook Signature | Verificar Stripe-Signature header |
| Datos Sensibles | Encriptar informacion financiera de propietarios |
| Audit Trail | Log de todos los pagos y cambios de plan |
---
## Indices
- [Requerimientos Funcionales](requerimientos/INDICE-RF-BILLING.md)
- [Especificaciones Tecnicas](especificaciones/INDICE-ET-BILLING.md)
- [Historias de Usuario](historias-usuario/INDICE-US-BILLING.md)
- [Trazabilidad](implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-016-billing-vet | Version: 1.0.0 | Estado: Draft*
*Propagado desde: erp-core/MGN-016-billing*
*Adaptado para: Dominio veterinario*
*Actualizado: 2026-01-13*

View File

@ -0,0 +1,48 @@
# MGN-016: Billing - Mapa del Modulo
**Modulo:** MGN-016-billing
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-016-billing/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-BILLING.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-BILLING.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-BILLING.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Documentos
| Documento | Descripcion | Estado |
|-----------|-------------|--------|
| [README.md](./README.md) | Vision general del modulo | Draft |
| [requerimientos/](./requerimientos/) | Requerimientos funcionales | Pendiente |
| [especificaciones/](./especificaciones/) | Especificaciones tecnicas | Pendiente |
| [historias-usuario/](./historias-usuario/) | User stories | Pendiente |
| [implementacion/](./implementacion/) | Trazabilidad | Pendiente |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [04-fase-saas](../) |
| Siguiente modulo | [MGN-017-plans](../MGN-017-plans/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,161 @@
---
id: MGN-017-plans-vet
title: "Modulo Plans - Planes y Feature Gating Veterinario"
type: Module
status: Draft
version: 1.0.0
created_date: 2026-01-13
updated_date: 2026-01-13
source: erp-core/MGN-017-plans
---
# MGN-017: Modulo Plans - Planes y Feature Gating para Clinicas Veterinarias
## Descripcion
El modulo **Plans** gestiona la definicion de planes de suscripcion para clinicas veterinarias, feature gating por plan, y enforcement de limites y cuotas especificos del dominio veterinario.
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Lineamientos para prescripcion veterinaria
- **SENASICA**: Requisitos de trazabilidad de vacunacion
- **Bienestar Animal**: Consideraciones de capacidad por clinica
## Objetivos
1. **Definicion de Planes Veterinarios** - Planes con limites especificos para clinicas
2. **Feature Gating** - Controlar acceso a funcionalidades (hospitalizacion, IA, etc.)
3. **Limites por Especie** - Limites de mascotas por especie si aplica
4. **Control de Veterinarios** - Limites de veterinarios activos por clinica
5. **Usage Tracking** - Monitorear uso de vacunas, consultas, etc.
## Planes Propuestos para Clinicas Veterinarias
| Plan | Precio/mes | Mascotas | Veterinarios | API Calls/mes | Features |
|------|-----------|----------|--------------|---------------|----------|
| **Basico** | $499 MXN | 100 | 2 | 1,000 | Expedientes, Citas, Vacunacion |
| **Profesional** | $999 MXN | 500 | 5 | 10,000 | + Hospitalizacion, Lab, WhatsApp |
| **Clinica** | $1,999 MXN | Ilimitadas | 10 | 50,000 | + IA, Reportes, Webhooks |
| **Hospital** | $3,999 MXN | Ilimitadas | Ilimitados | Ilimitados | + Multi-sucursal, API, Soporte |
## Features por Plan
| Feature | Basico | Profesional | Clinica | Hospital |
|---------|--------|-------------|---------|----------|
| expedientes | Si | Si | Si | Si |
| citas | Si | Si | Si | Si |
| vacunacion | Si | Si | Si | Si |
| cartilla_digital | Si | Si | Si | Si |
| desparasitacion | Si | Si | Si | Si |
| hospitalizacion | No | Si | Si | Si |
| laboratorio | No | Si | Si | Si |
| whatsapp_integration | No | Si | Si | Si |
| asistente_ia | No | No | Si | Si |
| reportes_avanzados | No | No | Si | Si |
| webhooks | No | No | Si | Si |
| multi_sucursal | No | No | No | Si |
| api_access | No | No | No | Si |
| custom_branding | No | No | No | Si |
| soporte_prioritario | No | No | No | Si |
## Limites por Plan
| Limite | Basico | Profesional | Clinica | Hospital |
|--------|--------|-------------|---------|----------|
| mascotas_activas | 100 | 500 | Ilimitadas | Ilimitadas |
| veterinarios | 2 | 5 | 10 | Ilimitados |
| auxiliares | 2 | 5 | 15 | Ilimitados |
| sucursales | 1 | 1 | 3 | Ilimitadas |
| storage_gb | 1 | 5 | 25 | 100 |
| ai_requests_dia | 0 | 0 | 100 | Ilimitados |
| whatsapp_mensajes_mes | 0 | 1000 | 5000 | Ilimitados |
## Arquitectura de Evaluacion
```
Request
|
v
+-------------------+
| FeatureService |
+-------------------+
|
+---> 1. Check plan de clinica
| |
| v
| Obtener features del plan
|
+---> 2. Check limites
| |
| v
| Validar mascotas, veterinarios, etc.
|
+---> 3. Check usage
| |
| v
| Validar AI calls, WhatsApp, storage
|
v
Return permitido/denegado
```
## Casos de Uso Veterinarios
### Caso 1: Registro de Mascota
```
1. Recepcionista intenta registrar nueva mascota
2. Sistema verifica limite de mascotas_activas
3. Si excede limite:
- Mostrar mensaje de upgrade
- Sugerir dar de baja mascotas inactivas
4. Si dentro del limite: permitir registro
```
### Caso 2: Activar Hospitalizacion
```
1. Veterinario intenta internar mascota
2. Sistema verifica feature hospitalizacion
3. Si plan = Basico:
- Mostrar mensaje: "Hospitalizacion disponible desde Plan Profesional"
- Boton de upgrade
4. Si plan >= Profesional: permitir ingreso
```
### Caso 3: Usar Asistente IA
```
1. Veterinario envia consulta a asistente IA
2. Sistema verifica:
- Feature asistente_ia habilitada (plan >= Clinica)
- Limite ai_requests_dia no excedido
3. Si excede: sugerir upgrade o esperar al dia siguiente
```
## Dependencias
### Modulos Requeridos
- **MGN-001-tenants** - Gestion de clinicas (tenant_id)
- **MGN-016-billing** - Suscripciones y pagos
### Modulos Dependientes
- Todos los modulos veterinarios que requieran feature gating
- MGN-020-ai-integration (limites de IA)
- MGN-021-whatsapp-business (limites de mensajes)
## Indices
- [Requerimientos Funcionales](requerimientos/INDICE-RF-PLANS.md)
- [Especificaciones Tecnicas](especificaciones/INDICE-ET-PLANS.md)
- [Historias de Usuario](historias-usuario/INDICE-US-PLANS.md)
- [Trazabilidad](implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-017-plans-vet | Version: 1.0.0*
*Propagado desde: erp-core/MGN-017-plans*
*Adaptado para: Dominio veterinario*
*Generado: 2026-01-13*

View File

@ -0,0 +1,49 @@
# MGN-017: Plans - Mapa del Modulo
**Modulo:** MGN-017-plans
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-017-plans/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-PLANS.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-PLANS.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-PLANS.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Documentos
| Documento | Descripcion | Estado |
|-----------|-------------|--------|
| [README.md](./README.md) | Vision general del modulo | Draft |
| [requerimientos/](./requerimientos/) | Requerimientos funcionales | Pendiente |
| [especificaciones/](./especificaciones/) | Especificaciones tecnicas | Pendiente |
| [historias-usuario/](./historias-usuario/) | User stories | Pendiente |
| [implementacion/](./implementacion/) | Trazabilidad | Pendiente |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [04-fase-saas](../) |
| Modulo anterior | [MGN-016-billing](../MGN-016-billing/) |
| Siguiente modulo | [MGN-018-webhooks](../MGN-018-webhooks/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,177 @@
# MGN-018: Webhooks Veterinarios
**Modulo:** MGN-018
**Nombre:** Webhooks Outbound para Clinicas Veterinarias
**Fase:** 04 - SaaS
**Estado:** Draft
**Ultima actualizacion:** 2026-01-13
---
## Descripcion
Sistema de webhooks outbound para notificar eventos veterinarios a sistemas externos. Permite a las clinicas registrar endpoints HTTP para recibir notificaciones automaticas cuando ocurren eventos como vacunaciones, citas, hospitalizaciones, etc.
---
## Funcionalidades Principales
1. **Registro de Endpoints** - CRUD de endpoints webhook por clinica
2. **Firma HMAC-SHA256** - Firma criptografica de payloads para verificacion
3. **Reintentos con Backoff** - Politica de reintentos exponencial (1min -> 6h)
4. **Dead Letter Queue** - Almacenamiento de entregas fallidas
5. **Delivery Logs** - Historial completo de entregas
---
## Eventos Veterinarios Disponibles
| Categoria | Eventos |
|-----------|---------|
| **Mascotas** | `mascota.registrada`, `mascota.actualizada`, `mascota.fallecida` |
| **Vacunacion** | `vacuna.aplicada`, `vacuna.proxima`, `vacuna.vencida` |
| **Desparasitacion** | `desparasitacion.aplicada`, `desparasitacion.proxima` |
| **Citas** | `cita.agendada`, `cita.confirmada`, `cita.cancelada`, `cita.completada` |
| **Hospitalizacion** | `hospitalizacion.ingreso`, `hospitalizacion.evolucion`, `hospitalizacion.alta` |
| **Laboratorio** | `laboratorio.muestra_recibida`, `laboratorio.resultados_listos` |
| **Cirugia** | `cirugia.programada`, `cirugia.iniciada`, `cirugia.completada` |
| **Facturacion** | `factura.emitida`, `factura.pagada` |
---
## Casos de Uso Veterinarios
### Integracion con SENASICA
- Notificar vacunacion de rabia para registro oficial
- Reportar brotes de enfermedades
- Trazabilidad de lotes de vacunas
### Integracion con Laboratorios
- Recibir resultados de analisis
- Actualizar expediente automaticamente
- Notificar al propietario
### Notificaciones a Propietarios
- Recordatorios de vacunacion via email/SMS
- Confirmacion de citas
- Alta de hospitalizacion
### Sincronizacion con CRM
- Actualizar datos de propietarios
- Historial de servicios
- Preferencias de comunicacion
---
## Payload de Ejemplo
### Evento: vacuna.aplicada
```json
{
"event": "vacuna.aplicada",
"timestamp": "2026-01-13T10:30:00Z",
"clinica_id": "vet-clinica-001",
"data": {
"mascota": {
"id": "pet-123",
"nombre": "Max",
"especie": "canino",
"raza": "Labrador"
},
"propietario": {
"id": "owner-456",
"nombre": "Juan Perez",
"telefono": "+5255123456"
},
"vacuna": {
"id": "vac-789",
"nombre": "Rabia",
"lote": "LOT-2026-001",
"fecha_aplicacion": "2026-01-13",
"fecha_proxima": "2027-01-13",
"veterinario": "Dr. Garcia"
}
}
}
```
### Evento: hospitalizacion.ingreso
```json
{
"event": "hospitalizacion.ingreso",
"timestamp": "2026-01-13T14:00:00Z",
"clinica_id": "vet-clinica-001",
"data": {
"mascota": {
"id": "pet-123",
"nombre": "Luna",
"especie": "felino"
},
"hospitalizacion": {
"id": "hosp-001",
"motivo": "Cirugia de esterilizacion",
"fecha_ingreso": "2026-01-13T14:00:00Z",
"veterinario_responsable": "Dra. Martinez",
"estado": "estable"
}
}
}
```
---
## Normativas y Cumplimiento
### SENASICA
- Eventos de vacunacion deben incluir lote y fabricante
- Trazabilidad de vacunas de rabia obligatoria
- Formato compatible con sistema de notificacion oficial
### Bienestar Animal
- Eventos de hospitalizacion incluyen estado del paciente
- Registro de condiciones de internamiento
- Trazabilidad de tratamientos
---
## Disponibilidad por Plan
| Plan | Webhooks | Eventos | Retenciones |
|------|----------|---------|-------------|
| Basico | No | - | - |
| Profesional | No | - | - |
| Clinica | Si | Todos | 30 dias |
| Hospital | Si | Todos | 90 dias |
---
## Dependencias
**Este modulo depende de:**
- MGN-001 Auth (autenticacion de administradores)
- MGN-004 Tenants (aislamiento por clinica)
- MGN-017 Plans (feature gating - solo Clinica/Hospital)
---
## Indices
- [Requerimientos](./requerimientos/INDICE-RF-WEBHOOKS.md)
- [Especificaciones](./especificaciones/INDICE-ET-WEBHOOKS.md)
- [Historias de Usuario](./historias-usuario/INDICE-US-WEBHOOKS.md)
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-018-webhooks-vet*
*Propagado desde: erp-core/MGN-018-webhooks*
*Adaptado para: Dominio veterinario*
*Fecha: 2026-01-13*

View File

@ -0,0 +1,50 @@
# MGN-018: Webhooks - Mapa del Modulo
**Modulo:** MGN-018-webhooks
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-018-webhooks/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-WEBHOOKS.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-WEBHOOKS.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-WEBHOOKS.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Eventos Veterinarios
| Evento | Descripcion |
|--------|-------------|
| `mascota.registrada` | Nueva mascota en el sistema |
| `vacuna.aplicada` | Vacuna aplicada a mascota |
| `vacuna.proxima` | Recordatorio de vacuna pendiente |
| `cita.agendada` | Cita programada |
| `hospitalizacion.ingreso` | Mascota internada |
| `hospitalizacion.alta` | Mascota dada de alta |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [04-fase-saas](../) |
| Modulo anterior | [MGN-017-plans](../MGN-017-plans/) |
| Siguiente modulo | [MGN-019-feature-flags](../MGN-019-feature-flags/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,165 @@
---
id: MGN-019-fflags-vet
title: Sistema de Feature Flags Veterinarios
type: Module
status: Draft
priority: P1
version: 1.0.0
created_date: 2026-01-13
updated_date: 2026-01-13
source: erp-core/MGN-019-feature-flags
---
# MGN-019: Sistema de Feature Flags para Clinicas Veterinarias
## Descripcion
Sistema propio de feature flags para control granular de funcionalidades veterinarias por clinica y plan. Permite toggle de features sin redeploy, rollout gradual por porcentaje de clinicas, y override manual por clinica.
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Features relacionadas con prescripcion
- **SENASICA**: Features de reportes oficiales
- **Bienestar Animal**: Features de hospitalizacion
## Objetivos
- Toggle features veterinarias sin necesidad de redeploy
- Flags configurables por clinica y por plan
- Gradual rollout (porcentaje de clinicas)
- A/B testing de funcionalidades
- Override manual por clinica con expiracion opcional
## Feature Flags Veterinarios
### Core - Disponibles en todos los planes
| Flag | Descripcion | Default |
|------|-------------|---------|
| `expediente_digital` | Expediente clinico digital | ON |
| `cartilla_vacunacion` | Cartilla de vacunacion digital | ON |
| `agenda_citas` | Sistema de citas | ON |
| `registro_mascotas` | Registro de pacientes | ON |
### Profesional - Plan Profesional+
| Flag | Descripcion | Default |
|------|-------------|---------|
| `hospitalizacion` | Modulo de internamiento | OFF (plan < Profesional) |
| `laboratorio` | Integracion con laboratorios | OFF (plan < Profesional) |
| `whatsapp_notifications` | Notificaciones WhatsApp | OFF (plan < Profesional) |
| `control_vacunas` | Recordatorios automaticos de vacunas | OFF (plan < Profesional) |
### Clinica - Plan Clinica+
| Flag | Descripcion | Default |
|------|-------------|---------|
| `asistente_ia` | Asistente veterinario IA | OFF (plan < Clinica) |
| `reportes_avanzados` | Analytics y dashboards | OFF (plan < Clinica) |
| `webhooks_outbound` | Webhooks a sistemas externos | OFF (plan < Clinica) |
| `telemedicina` | Consultas remotas | OFF (plan < Clinica) |
### Hospital - Plan Hospital
| Flag | Descripcion | Default |
|------|-------------|---------|
| `multi_sucursal` | Gestion multi-sede | OFF (plan < Hospital) |
| `api_publica` | Acceso a API REST | OFF (plan < Hospital) |
| `custom_branding` | Personalizacion de marca | OFF (plan < Hospital) |
| `senasica_integration` | Reportes automaticos SENASICA | OFF (plan < Hospital) |
### Experimentales (Rollout Gradual)
| Flag | Descripcion | Rollout % |
|------|-------------|-----------|
| `nueva_ui_expediente` | Nueva interfaz de expediente | 10% |
| `ia_diagnostico_apoyo` | IA de apoyo diagnostico | 5% |
| `telemedicina_video` | Videollamadas con propietarios | 15% |
| `integracion_wearables` | Collares inteligentes | 0% (beta cerrada) |
## Arquitectura de Evaluacion
```
Request a funcionalidad veterinaria
|
v
+-------------------+
| FeatureFlagService|
+-------------------+
|
+---> 1. Check override de clinica
| |
| v (si existe)
| Return override value
|
+---> 2. Check plan de clinica
| |
| v (si feature en plan)
| Return plan value
|
+---> 3. Check rollout %
| |
| v
| Evaluate by clinic_id hash
|
v
Return final value (ON/OFF)
```
## Prioridad de Evaluacion
1. **Override de Clinica** - Maxima prioridad, permite excepciones manuales
2. **Features del Plan** - Segun plan contratado por la clinica
3. **Rollout Gradual** - Para features experimentales
## Casos de Uso
### Caso 1: Activar Beta para Clinica Especifica
```yaml
# Override para clinica VIP
override:
clinica_id: "vet-premium-001"
flag: "ia_diagnostico_apoyo"
value: true
expires_at: "2026-03-01"
reason: "Beta tester"
```
### Caso 2: Rollout Gradual de Telemedicina
```yaml
# Rollout gradual 15%
flag:
name: "telemedicina_video"
rollout_percentage: 15
target_plans: ["clinica", "hospital"]
tracking_enabled: true
```
### Caso 3: Desactivar Feature por Incidente
```yaml
# Kill switch de emergencia
flag:
name: "integracion_laboratorio_externo"
value: false
reason: "Incidente API externa - ticket INC-001"
disabled_by: "admin@clinica.com"
disabled_at: "2026-01-13T10:00:00Z"
```
## Documentacion del Modulo
- [Mapa del Modulo](./_MAP.md)
- [Requerimientos](./requerimientos/INDICE-RF-FFLAGS.md)
- [Especificaciones](./especificaciones/INDICE-ET-FFLAGS.md)
- [Historias de Usuario](./historias-usuario/INDICE-US-FFLAGS.md)
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-019-feature-flags-vet*
*Propagado desde: erp-core/MGN-019-feature-flags*
*Adaptado para: Dominio veterinario*
*Actualizado: 2026-01-13*

View File

@ -0,0 +1,50 @@
# MGN-019: Feature Flags - Mapa del Modulo
**Modulo:** MGN-019-feature-flags
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-019-feature-flags/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-FFLAGS.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-FFLAGS.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-FFLAGS.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Feature Flags Veterinarios
| Flag | Plan Minimo | Descripcion |
|------|-------------|-------------|
| `cartilla_digital` | Basico | Cartilla de vacunacion digital |
| `control_vacunas` | Profesional | Recordatorios automaticos |
| `hospitalizacion` | Profesional | Modulo de internamiento |
| `laboratorio` | Profesional | Integracion con labs |
| `asistente_ia` | Clinica | IA veterinaria |
| `multi_sucursal` | Hospital | Varias sedes |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [04-fase-saas](../) |
| Modulo anterior | [MGN-018-webhooks](../MGN-018-webhooks/) |
| Siguiente fase | [05-fase-ia](../../05-fase-ia/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,73 @@
# Fase 04: SaaS - Clinica Veterinaria
**Proyecto:** clinica-veterinaria
**Fase:** 04 - SaaS
**Tipo:** SUB-CONSUMER (hereda de erp-clinicas -> erp-core)
**Fecha:** 2026-01-13
**Version:** 1.0.0
---
## Descripcion
Esta fase implementa las capacidades SaaS de la clinica veterinaria, incluyendo sistema de billing, planes de suscripcion, webhooks y feature flags adaptados al dominio veterinario.
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Lineamientos para la clasificacion y prescripcion de productos farmaceuticos veterinarios
- **SENASICA**: Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria
- **Ley Federal de Sanidad Animal**: Regulaciones de bienestar animal
## Modulos de esta Fase
| Modulo | Nombre | Descripcion | Estado |
|--------|--------|-------------|--------|
| MGN-016 | [Billing](./MGN-016-billing/) | Facturacion y suscripciones para clinicas veterinarias | Draft |
| MGN-017 | [Plans](./MGN-017-plans/) | Planes y cuotas adaptados a servicios veterinarios | Draft |
| MGN-018 | [Webhooks](./MGN-018-webhooks/) | Eventos para integraciones veterinarias | Draft |
| MGN-019 | [Feature Flags](./MGN-019-feature-flags/) | Control de funcionalidades veterinarias | Draft |
## Planes Sugeridos para Clinicas Veterinarias
| Plan | Precio/mes | Mascotas | Veterinarios | Funcionalidades |
|------|-----------|----------|--------------|-----------------|
| **Basico** | $499 MXN | 100 | 2 | Expedientes, Citas, Vacunacion |
| **Profesional** | $999 MXN | 500 | 5 | + Hospitalizacion, Laboratorio, WhatsApp |
| **Clinica** | $1,999 MXN | Ilimitadas | 10 | + IA, Reportes avanzados, Integraciones |
| **Hospital** | $3,999 MXN | Ilimitadas | Ilimitados | + Multi-sucursal, API, Soporte prioritario |
## Consideraciones Especiales
### Especies Soportadas
- Caninos (perros)
- Felinos (gatos)
- Aves
- Exoticos (reptiles, roedores, hurones)
- Fauna silvestre (requiere permisos SEMARNAT)
### Bienestar Animal
Todas las funcionalidades deben considerar:
- Trazabilidad de vacunas y desparasitaciones
- Alertas de calendario de vacunacion
- Registro de condiciones de bienestar
- Cumplimiento de protocolos de la NOM-064-ZOO-2000
## Dependencias
- **erp-clinicas**: Modulos de gestion clinica
- **erp-core**: Infraestructura SaaS base
- **template-saas**: Patrones y arquitectura SaaS
## Navegacion
- [Indice de Fase](./_MAP.md)
- [Vision General](../00-vision-general/)
- [Fase 05 - IA](../05-fase-ia/)
---
*Propagado desde erp-core via erp-clinicas*
*Adaptado para dominio veterinario*
*Version: 1.0.0 | Fecha: 2026-01-13*

117
docs/04-fase-saas/_MAP.md Normal file
View File

@ -0,0 +1,117 @@
# Fase 04: SaaS - Mapa de Navegacion
**Fase:** 04-fase-saas
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura de la Fase
```
04-fase-saas/
├── README.md <- Descripcion de la fase
├── _MAP.md <- ESTE ARCHIVO
├── MGN-016-billing/ <- Sistema de facturacion
│ ├── README.md <- Descripcion del modulo
│ ├── _MAP.md <- Indice del modulo
│ ├── requerimientos/ <- RFs del modulo
│ ├── especificaciones/ <- ETs del modulo
│ ├── historias-usuario/ <- USs del modulo
│ └── implementacion/ <- Trazabilidad
├── MGN-017-plans/ <- Planes y cuotas
│ └── ...
├── MGN-018-webhooks/ <- Webhooks outbound
│ └── ...
└── MGN-019-feature-flags/ <- Feature flags
└── ...
```
---
## Modulos de la Fase
### MGN-016: Billing - Facturacion Veterinaria
Sistema de facturacion y suscripciones adaptado para clinicas veterinarias.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-016-billing/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-016-billing/_MAP.md) | Indice | Navegacion del modulo |
**Adaptaciones veterinarias:**
- Facturacion de servicios (consultas, cirugia, hospitalizacion)
- Facturacion de productos (medicamentos, alimentos, accesorios)
- Paquetes de vacunacion y desparasitacion
- Planes de bienestar por mascota
---
### MGN-017: Plans - Planes Veterinarios
Definicion de planes y limites para clinicas veterinarias.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-017-plans/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-017-plans/_MAP.md) | Indice | Navegacion del modulo |
**Adaptaciones veterinarias:**
- Limites por mascotas registradas
- Limites por veterinarios activos
- Features por tipo de servicio (hospitalizacion, cirugia, etc.)
---
### MGN-018: Webhooks - Eventos Veterinarios
Sistema de webhooks para integraciones con sistemas externos.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-018-webhooks/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-018-webhooks/_MAP.md) | Indice | Navegacion del modulo |
**Eventos veterinarios:**
- `mascota.registrada`, `mascota.actualizada`
- `vacuna.aplicada`, `vacuna.proxima`
- `cita.agendada`, `cita.confirmada`, `cita.completada`
- `hospitalizacion.ingreso`, `hospitalizacion.alta`
---
### MGN-019: Feature Flags - Control de Funcionalidades
Sistema de feature flags para control granular de funcionalidades.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-019-feature-flags/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-019-feature-flags/_MAP.md) | Indice | Navegacion del modulo |
**Flags veterinarios:**
- `cartilla_digital`: Cartilla de vacunacion digital
- `control_vacunas`: Sistema de recordatorios de vacunas
- `hospitalizacion`: Modulo de internamiento
- `telemedicina`: Consultas remotas
- `laboratorio`: Integracion con laboratorios
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase anterior | [02-definicion-modulos](../02-definicion-modulos/) |
| Fase siguiente | [05-fase-ia](../05-fase-ia/) |
| Mapa principal | [docs/_MAP.md](../_MAP.md) |
---
*Mapa generado: 2026-01-13*
*Propagado desde: erp-core/docs/04-fase-saas*

View File

@ -0,0 +1,34 @@
# TRACEABILITY-MASTER.yml v2.0
# Proyecto: Clinica Veterinaria
# Prefijo v2: CVT
traceability_version: "2.0"
project:
code: "CVT"
name: "Clinica Veterinaria - Sistema de Gestion para Clinicas Veterinarias"
updated: "2026-01-10"
epics_summary:
total: 0
completed: 0
in_progress: 0
planned: 0
nomenclature_mapping:
legacy: "CVT-EP"
epics: []
dependency_graph: {}
inventories:
master: "docs/90-transversal/inventarios/"
health:
last_validated: "2026-01-10"
score: 0.50
issues:
- severity: "low"
type: "initialization"
description: "Proyecto en migracion inicial v2"

View File

@ -0,0 +1,248 @@
---
id: MGN-020-ai-vet
title: "Modulo AI Integration - Asistente Veterinario Inteligente"
type: Module
status: Draft
version: 1.0.0
priority: P1
phase: "Fase IA"
created_date: 2026-01-13
updated_date: 2026-01-13
source: erp-core/MGN-020-ai-integration
---
# MGN-020: AI Integration - Asistente Veterinario Inteligente
> Asistente de IA especializado en medicina veterinaria para clinicas
## Resumen Ejecutivo
El modulo AI Integration proporciona un asistente veterinario inteligente que utiliza LLMs (Large Language Models) para ayudar a veterinarios y propietarios de mascotas. Incluye conocimiento especializado de especies, razas, vacunacion, sintomas comunes y cuidados.
---
## Normativas Aplicables
- **NOM-064-ZOO-2000**: La IA NO puede prescribir medicamentos
- **SENASICA**: Informacion de vacunacion alineada con calendario oficial
- **Bienestar Animal**: Priorizar siempre la salud del animal
## Limitaciones Eticas
La IA veterinaria:
- **NO diagnostica** enfermedades de forma definitiva
- **NO prescribe** medicamentos controlados
- **NO reemplaza** la consulta veterinaria presencial
- **SIEMPRE recomienda** atencion profesional ante sintomas graves
- **DERIVA** casos de emergencia inmediatamente
---
## 1. Objetivos del Modulo
| Objetivo | Descripcion | Prioridad |
|----------|-------------|-----------|
| Asistente veterinario | Responder consultas de salud animal | P0 |
| Calendario vacunacion | Informar sobre vacunas por especie | P0 |
| Triaje basico | Evaluar urgencia de sintomas | P0 |
| Cuidados generales | Orientar sobre alimentacion, higiene | P1 |
| Apoyo a veterinarios | Sugerir diferenciales (apoyo, no diagnostico) | P2 |
---
## 2. Conocimiento Especializado
### 2.1 Especies Soportadas
| Especie | Nivel de Conocimiento | Notas |
|---------|----------------------|-------|
| Caninos (perros) | Avanzado | 200+ razas, vacunas, enfermedades |
| Felinos (gatos) | Avanzado | 70+ razas, vacunas, enfermedades |
| Aves | Intermedio | Especies domesticas comunes |
| Reptiles | Basico | Husbandry general |
| Roedores | Basico | Hamsters, conejos, cuyes |
| Exoticos | Basico | Deriva a especialista |
### 2.2 Calendario de Vacunacion
#### Caninos
| Vacuna | Edad Inicial | Refuerzos | Obligatoria |
|--------|--------------|-----------|-------------|
| Parvovirus | 6-8 semanas | 12, 16 sem, anual | Si |
| Moquillo | 6-8 semanas | 12, 16 sem, anual | Si |
| Hepatitis | 6-8 semanas | 12, 16 sem, anual | Si |
| Rabia | 12-16 semanas | Anual | Si (SENASICA) |
| Leptospirosis | 12 semanas | 16 sem, anual | Recomendada |
| Bordetella | 8 semanas | Cada 6-12 meses | Opcional |
#### Felinos
| Vacuna | Edad Inicial | Refuerzos | Obligatoria |
|--------|--------------|-----------|-------------|
| Triple Felina (FVRCP) | 6-8 semanas | 12, 16 sem, anual | Si |
| Leucemia Felina (FeLV) | 8 semanas | 12 sem, anual | Recomendada |
| Rabia | 12-16 semanas | Anual | Si (SENASICA) |
---
## 3. System Prompt Veterinario
```
Eres el Asistente Veterinario de {{CLINICA_NAME}}, una clinica veterinaria en Mexico.
TU ROL:
- Orientar a propietarios sobre salud de mascotas
- Informar sobre vacunacion y cuidados preventivos
- Ayudar a agendar citas
- Evaluar urgencia de sintomas (triaje basico)
REGLAS ESTRICTAS:
1. NUNCA diagnostiques enfermedades de forma definitiva
2. NUNCA prescribas medicamentos controlados (NOM-064-ZOO-2000)
3. SIEMPRE recomienda consulta veterinaria ante sintomas preocupantes
4. Si detectas EMERGENCIA (hemorragia, convulsiones, atropello, dificultad respiratoria):
- Responde: "Esto es una EMERGENCIA. Lleva a tu mascota al veterinario INMEDIATAMENTE."
- Proporciona telefono de emergencias: {{TELEFONO_EMERGENCIA}}
CONOCIMIENTO:
- Caninos: vacunas, razas, enfermedades comunes
- Felinos: vacunas, razas, enfermedades comunes
- Otras especies: informacion basica, deriva a especialista
ESTILO:
- Espanol mexicano, amigable pero profesional
- Empatico con propietarios preocupados
- Claro y conciso
- Usa terminos que el propietario entienda
HERRAMIENTAS DISPONIBLES:
- consultar_historial_mascota: Ver expediente de la mascota
- registrar_vacuna: Registrar aplicacion de vacuna
- agendar_consulta: Programar cita
- consultar_cartilla_vacunacion: Ver vacunas aplicadas
```
---
## 4. Casos de Uso
### 4.1 Consulta de Vacunacion
```
Propietario: "Mi perro tiene 3 meses, que vacunas le tocan?"
Asistente:
"A los 3 meses tu cachorro necesita las siguientes vacunas:
1. Segunda dosis de Cuadruple (parvovirus, moquillo, hepatitis, parainfluenza)
2. Primera dosis de Rabia
Te recomiendo agendar una cita para aplicarlas. ¿Quieres que te programe?
Nota: Es importante que complete su esquema a los 4 meses con la tercera dosis de cuadruple."
```
### 4.2 Triaje de Sintomas
```
Propietario: "Mi gato no ha comido en 2 dias y vomita"
Asistente:
"Entiendo tu preocupacion. Un gato que no come por 2 dias y presenta vomitos
necesita atencion veterinaria pronto.
URGENCIA: MODERADA-ALTA
Esto puede indicar desde una bola de pelo hasta algo mas serio.
Te recomiendo traerlo HOY para una revision.
¿Quieres que te agende una cita de urgencia?"
```
### 4.3 Emergencia
```
Propietario: "Mi perro se comio un raticida"
Asistente:
"🚨 EMERGENCIA VETERINARIA
Esto es una situacion de emergencia. El raticida puede ser toxico y
requiere atencion INMEDIATA.
ACCION REQUERIDA:
1. NO induzcas el vomito (puede empeorar la situacion)
2. Lleva a tu mascota al veterinario AHORA
3. Si puedes, trae el empaque del producto
Telefono de emergencias: {{TELEFONO_EMERGENCIA}}
¿Necesitas direcciones para llegar a la clinica?"
```
---
## 5. Rate Limits por Plan
| Plan | Consultas IA/dia | Max Tokens/consulta |
|------|-----------------|---------------------|
| Basico | 0 | - |
| Profesional | 0 | - |
| Clinica | 100 | 2,000 |
| Hospital | Ilimitado | 4,096 |
---
## 6. Dependencias
### 6.1 Internas
| Modulo | Relacion |
|--------|----------|
| MGN-017-plans | Limites de IA por plan |
| MGN-022-mcp-server | Herramientas veterinarias |
| MGN-021-whatsapp | Canal de comunicacion |
### 6.2 Externas
| Servicio | Proposito |
|----------|-----------|
| OpenRouter API | Gateway multi-provider LLM |
| Claude 3 Haiku | Modelo default (rapido, economico) |
---
## 7. Configuracion
```bash
# OpenRouter
OPENROUTER_API_KEY=sk-or-xxx
OPENROUTER_SITE_URL=https://clinica.example.com
OPENROUTER_SITE_NAME=Clinica Veterinaria Example
# Defaults
AI_DEFAULT_MODEL=anthropic/claude-3-haiku
AI_DEFAULT_TEMPERATURE=0.7
AI_DEFAULT_MAX_TOKENS=2000
# Veterinario
VET_EMERGENCY_PHONE=+5255123456
VET_CLINIC_NAME=Clinica Veterinaria Example
```
---
## Indices
- [Requerimientos](./requerimientos/INDICE-RF-AI.md)
- [Especificaciones](./especificaciones/INDICE-ET-AI.md)
- [Historias de Usuario](./historias-usuario/INDICE-US-AI.md)
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-020-ai-integration-vet*
*Propagado desde: erp-core/MGN-020-ai-integration*
*Adaptado para: Dominio veterinario*
*Actualizado: 2026-01-13*

View File

@ -0,0 +1,59 @@
# MGN-020: AI Integration - Mapa del Modulo
**Modulo:** MGN-020-ai-integration
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-020-ai-integration/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-AI.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-AI.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-AI.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Capacidades del Asistente Veterinario
| Capacidad | Descripcion |
|-----------|-------------|
| Calendario vacunacion | Informar vacunas por especie y edad |
| Triaje basico | Evaluar urgencia de sintomas |
| Cuidados generales | Orientacion sobre alimentacion, higiene |
| Gestion de citas | Agendar consultas via IA |
| Emergencias | Detectar y derivar casos urgentes |
---
## Especies Soportadas
| Especie | Nivel |
|---------|-------|
| Caninos | Avanzado |
| Felinos | Avanzado |
| Aves | Intermedio |
| Exoticos | Basico |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [05-fase-ia](../) |
| Siguiente modulo | [MGN-021-whatsapp-business](../MGN-021-whatsapp-business/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,281 @@
---
id: MGN-021-whatsapp-vet
title: Modulo WhatsApp Business para Clinicas Veterinarias
type: Module
status: Draft
priority: P1
phase: 05-fase-ia
version: 1.0.0
created_date: 2026-01-13
updated_date: 2026-01-13
---
# MGN-021: WhatsApp Business para Clinicas Veterinarias
> Comunicacion inteligente con propietarios de mascotas via WhatsApp
## Resumen Ejecutivo
El modulo WhatsApp Business permite a las clinicas veterinarias comunicarse con los propietarios de mascotas a traves de WhatsApp, procesando mensajes con IA para proporcionar respuestas sobre vacunacion, citas, y cuidados de mascotas.
---
## Normativas Aplicables
- **NOM-064-ZOO-2000**: No prescribir medicamentos via WhatsApp
- **SENASICA**: Recordatorios de vacunacion oficial
- **LFPDPPP**: Proteccion de datos personales de propietarios
---
## 1. Objetivos del Modulo
### 1.1 Objetivos Principales
- **Recordatorios de vacunacion**: Notificar proximas vacunas pendientes
- **Confirmacion de citas**: Confirmar asistencia a consultas
- **Consultas rapidas**: Responder dudas sobre cuidados basicos
- **Instrucciones post-operatorias**: Enviar cuidados despues de cirugias
- **Resultados de laboratorio**: Notificar cuando esten listos
### 1.2 Objetivos Secundarios
- Soporte multi-mascota por propietario
- Templates aprobados por Meta
- Trazabilidad de conversaciones
- Metricas de engagement
---
## 2. Templates de WhatsApp Veterinarios
### 2.1 recordatorio_vacuna
```
Hola {{nombre_propietario}}! 🐾
Te recordamos que {{nombre_mascota}} tiene pendiente su vacuna de {{tipo_vacuna}}.
Ultima aplicacion: {{fecha_ultima}}
Fecha recomendada: {{fecha_proxima}}
¿Te agendamos una cita?
Responde "SI" para agendar o "LLAMAR" para que te contactemos.
Clinica Veterinaria {{nombre_clinica}}
📞 {{telefono}}
```
### 2.2 confirmacion_cita_veterinaria
```
Hola {{nombre_propietario}}! 📅
Confirmamos tu cita en Clinica {{nombre_clinica}}:
🐾 Mascota: {{nombre_mascota}}
📅 Fecha: {{fecha_cita}}
🕐 Hora: {{hora_cita}}
👨‍⚕️ Veterinario: {{nombre_veterinario}}
📍 Direccion: {{direccion}}
Responde "CONFIRMAR" para confirmar o "CAMBIAR" para reagendar.
¡Te esperamos!
```
### 2.3 instrucciones_cuidado
```
Hola {{nombre_propietario}}! 🏥
Instrucciones de cuidado post-{{tipo_procedimiento}} para {{nombre_mascota}}:
{{instrucciones_detalladas}}
⚠️ Senales de alerta (llama inmediatamente si notas):
{{senales_alerta}}
📞 Emergencias: {{telefono_emergencia}}
¿Tienes alguna duda? Responde este mensaje.
```
### 2.4 alerta_desparasitacion
```
Hola {{nombre_propietario}}! 🐛
{{nombre_mascota}} necesita su desparasitacion de rutina.
Ultima desparasitacion: {{fecha_ultima}}
Proxima recomendada: {{fecha_proxima}}
La desparasitacion regular protege a tu mascota de parasitos internos y externos.
¿Agendamos una cita? Responde "SI"
Clinica {{nombre_clinica}}
```
### 2.5 resultados_laboratorio
```
Hola {{nombre_propietario}}! 🔬
Los resultados del laboratorio de {{nombre_mascota}} ya estan listos.
Estudio: {{tipo_estudio}}
Fecha de toma: {{fecha_muestra}}
Para revisar los resultados, puedes:
1. Agendar cita con el veterinario
2. Solicitar envio por correo electronico
Responde "CITA" o "CORREO"
Clinica {{nombre_clinica}}
```
---
## 3. Flujo de Mensaje Completo
```
+----------+ +----------+ +---------------+ +------------+
|Propietario|---->| WhatsApp |---->| Meta API |---->| Webhook |
| (movil) | | (app) | | (Cloud API) | | (Backend) |
+----------+ +----------+ +---------------+ +------------+
|
v
+------------------+
| WhatsApp Service |
| 1. Identificar |
| propietario |
| 2. Cargar |
| mascotas |
+------------------+
|
v
+------------------+
| AI Veterinaria |
| 1. System prompt |
| veterinario |
| 2. Contexto |
| mascotas |
+------------------+
|
v
+------------------+
| MCP Tools |
| - historial |
| - vacunas |
| - citas |
+------------------+
|
v
+------------------+
| Respuesta |
| Veterinaria |
+------------------+
```
---
## 4. Integracion con MCP Tools
### Herramientas Disponibles para WhatsApp
| Tool | Descripcion | Ejemplo de Uso |
|------|-------------|----------------|
| `consultar_historial_mascota` | Expediente clinico | "¿Que tiene Max registrado?" |
| `registrar_vacuna` | Registrar vacuna | (Solo por staff, no propietario) |
| `agendar_consulta` | Programar cita | "Quiero agendar cita para Luna" |
| `consultar_cartilla_vacunacion` | Ver vacunas | "¿Que vacunas tiene mi gato?" |
| `verificar_desparasitacion` | Estado desparasitacion | "¿Cuando toca desparasitar?" |
---
## 5. System Prompt para WhatsApp Veterinario
```
Eres el asistente de WhatsApp de {{CLINICA_NAME}}, clinica veterinaria.
El propietario {{PROPIETARIO_NOMBRE}} tiene las siguientes mascotas registradas:
{{LISTA_MASCOTAS}}
PUEDES:
- Informar sobre vacunas pendientes
- Agendar citas
- Dar instrucciones de cuidado basico
- Consultar el expediente de sus mascotas
- Responder sobre horarios y servicios
NO PUEDES:
- Diagnosticar enfermedades
- Prescribir medicamentos
- Dar consejos medicos especificos
ESTILO:
- Espanol mexicano, amigable
- Usa emojis moderadamente (🐾 🐶 🐱 📅 💉)
- Respuestas cortas y claras
- Si no sabes algo, ofrece contactar al veterinario
EMERGENCIAS:
Si el propietario describe una emergencia, responde:
"🚨 Esto suena como una emergencia. Por favor llama inmediatamente al {{TELEFONO_EMERGENCIA}} o acude a la clinica."
```
---
## 6. Disponibilidad por Plan
| Plan | WhatsApp | Mensajes/mes | Templates |
|------|----------|--------------|-----------|
| Basico | No | - | - |
| Profesional | Si | 1,000 | Basicos |
| Clinica | Si | 5,000 | Todos |
| Hospital | Si | Ilimitados | Todos + Custom |
---
## 7. Metricas de Exito
| Metrica | Target | Medicion |
|---------|--------|----------|
| Tasa de respuesta | > 90% | Mensajes respondidos < 5 min |
| Confirmacion citas | > 70% | Citas confirmadas via WhatsApp |
| Satisfaccion | > 4.0/5.0 | Encuestas post-interaccion |
| Costo por mensaje | < $0.10 MXN | Costo Meta + IA |
---
## Dependencias
### Internas
- `MGN-020-ai-integration` - Procesamiento con IA
- `MGN-022-mcp-server` - Herramientas veterinarias
- `MGN-017-plans` - Limites por plan
### Externas
- Meta Cloud API (WhatsApp Business)
- OpenRouter (Gateway LLM)
---
## Indices
- [Requerimientos](./requerimientos/INDICE-RF-WHATSAPP.md)
- [Especificaciones](./especificaciones/INDICE-ET-WHATSAPP.md)
- [Historias de Usuario](./historias-usuario/INDICE-US-WHATSAPP.md)
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-021-whatsapp-business-vet*
*Propagado desde: erp-core/MGN-021-whatsapp-business*
*Adaptado para: Dominio veterinario*
*Creado: 2026-01-13*

View File

@ -0,0 +1,49 @@
# MGN-021: WhatsApp Business - Mapa del Modulo
**Modulo:** MGN-021-whatsapp-business
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-021-whatsapp-business/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-WHATSAPP.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-WHATSAPP.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-WHATSAPP.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Templates Veterinarios
| Template | Proposito |
|----------|-----------|
| `recordatorio_vacuna` | Notificar vacunas pendientes |
| `confirmacion_cita_veterinaria` | Confirmar citas |
| `instrucciones_cuidado` | Cuidados post-operatorios |
| `alerta_desparasitacion` | Recordatorio desparasitacion |
| `resultados_laboratorio` | Notificar resultados |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [05-fase-ia](../) |
| Modulo anterior | [MGN-020-ai-integration](../MGN-020-ai-integration/) |
| Siguiente modulo | [MGN-022-mcp-server](../MGN-022-mcp-server/) |
---
*Mapa generado: 2026-01-13*

View File

@ -0,0 +1,275 @@
# MGN-022: MCP Server Veterinario
**Modulo:** MGN-022
**Nombre:** MCP Server para Clinicas Veterinarias
**Fase:** 05 - Inteligencia Artificial
**Estado:** Draft
**Ultima actualizacion:** 2026-01-13
---
## Descripcion
Servidor MCP (Model Context Protocol) especializado para clinicas veterinarias. Expone herramientas de negocio veterinario a los modelos de lenguaje, permitiendo que el asistente IA interactue con expedientes de mascotas, cartillas de vacunacion, citas y hospitalizaciones.
---
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Trazabilidad de medicamentos y vacunas
- **SENASICA**: Registro oficial de vacunacion
- **Bienestar Animal**: Registro de condiciones de pacientes
---
## Herramientas MCP Veterinarias
### Mascotas Tools (4 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `consultar_historial_mascota` | Expediente clinico completo | mascota_id |
| `buscar_mascota` | Buscar por nombre o propietario | query, propietario_id? |
| `obtener_signos_vitales` | Ultimos signos vitales | mascota_id |
| `listar_mascotas_propietario` | Mascotas de un propietario | propietario_id |
### Vacunacion Tools (4 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `consultar_cartilla_vacunacion` | Historial de vacunas | mascota_id |
| `registrar_vacuna` | Registrar aplicacion | mascota_id, vacuna_id, lote, veterinario_id |
| `vacunas_pendientes` | Vacunas proximas | mascota_id, dias_anticipacion? |
| `esquema_vacunacion_especie` | Esquema por especie | especie, edad_meses? |
### Desparasitacion Tools (3 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `verificar_desparasitacion` | Estado actual | mascota_id |
| `registrar_desparasitacion` | Registrar aplicacion | mascota_id, producto_id, dosis |
| `proxima_desparasitacion` | Fecha recomendada | mascota_id |
### Citas Tools (4 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `agendar_consulta` | Programar cita | mascota_id, fecha, hora, motivo, veterinario_id? |
| `consultar_citas` | Citas del dia/semana | fecha_inicio, fecha_fin?, veterinario_id? |
| `confirmar_cita` | Confirmar asistencia | cita_id |
| `cancelar_cita` | Cancelar cita | cita_id, motivo? |
### Hospitalizacion Tools (4 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `consultar_hospitalizacion` | Estado de internado | mascota_id |
| `registrar_evolucion` | Agregar nota de evolucion | hospitalizacion_id, notas, signos_vitales? |
| `pacientes_internados` | Lista de hospitalizados | area? |
| `alta_hospitalizacion` | Dar de alta | hospitalizacion_id, instrucciones |
### Laboratorio Tools (3 herramientas)
| Tool | Descripcion | Parametros |
|------|-------------|------------|
| `solicitar_estudio` | Ordenar estudio de lab | mascota_id, tipo_estudio, notas? |
| `resultados_laboratorio` | Consultar resultados | mascota_id, estudio_id? |
| `estudios_pendientes` | Estudios sin resultado | mascota_id? |
---
## Recursos MCP Veterinarios
| URI | Descripcion | Retorna |
|-----|-------------|---------|
| `vet://config/clinica` | Configuracion de la clinica | nombre, direccion, telefono, horarios |
| `vet://catalogo/vacunas` | Catalogo de vacunas | Array de vacunas por especie |
| `vet://catalogo/especies` | Especies soportadas | Array de especies con razas |
| `vet://calendario/vacunacion` | Calendario oficial | Esquemas por especie y edad |
| `vet://hospitalizacion/resumen` | Resumen de internados | total, por_area, alertas |
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/v1/mcp/tools/call | Ejecutar herramienta |
| GET | /api/v1/mcp/tools | Listar herramientas |
| GET | /api/v1/mcp/tools/:name | Definicion de herramienta |
| GET | /api/v1/mcp/resources | Listar recursos |
| GET | /api/v1/mcp/resources/:uri | Obtener recurso |
---
## Ejemplos de Uso
### Consultar Cartilla de Vacunacion
```json
// Request
{
"tool": "consultar_cartilla_vacunacion",
"params": {
"mascota_id": "pet-123"
}
}
// Response
{
"mascota": {
"nombre": "Max",
"especie": "canino",
"raza": "Labrador",
"edad": "2 anios"
},
"vacunas": [
{
"vacuna": "Cuadruple",
"fecha_aplicacion": "2024-03-15",
"lote": "LOT-2024-001",
"veterinario": "Dr. Garcia",
"proxima": "2025-03-15"
},
{
"vacuna": "Rabia",
"fecha_aplicacion": "2024-06-20",
"lote": "RAB-2024-050",
"veterinario": "Dr. Garcia",
"proxima": "2025-06-20"
}
],
"pendientes": [
{
"vacuna": "Bordetella",
"recomendada_desde": "2024-09-15",
"dias_vencida": 120
}
]
}
```
### Agendar Consulta
```json
// Request
{
"tool": "agendar_consulta",
"params": {
"mascota_id": "pet-456",
"fecha": "2026-01-15",
"hora": "10:00",
"motivo": "Vacunacion anual",
"veterinario_id": "vet-001"
}
}
// Response
{
"cita": {
"id": "cit-789",
"mascota": "Luna",
"propietario": "Maria Lopez",
"fecha": "2026-01-15",
"hora": "10:00",
"veterinario": "Dra. Martinez",
"motivo": "Vacunacion anual",
"estado": "confirmada"
},
"mensaje": "Cita agendada exitosamente. Se enviara recordatorio por WhatsApp."
}
```
### Consultar Hospitalizacion
```json
// Request
{
"tool": "consultar_hospitalizacion",
"params": {
"mascota_id": "pet-789"
}
}
// Response
{
"hospitalizacion": {
"id": "hosp-001",
"mascota": "Rocky",
"especie": "canino",
"ingreso": "2026-01-12T14:00:00Z",
"motivo": "Cirugia de rodilla",
"estado": "estable",
"area": "Post-quirurgico",
"veterinario_responsable": "Dr. Hernandez"
},
"ultima_evolucion": {
"fecha": "2026-01-13T08:00:00Z",
"notas": "Paciente alerta, comiendo bien. Herida sin signos de infeccion.",
"signos_vitales": {
"temperatura": 38.5,
"frecuencia_cardiaca": 90,
"frecuencia_respiratoria": 20
}
},
"dias_internado": 1,
"alta_estimada": "2026-01-14"
}
```
---
## Arquitectura
```
+-------------------+ +-------------------+ +-------------------+
| AI Veterinaria |---->| MCP Controller |---->| Tool Services |
| (Claude/GPT) | | (validacion) | | (veterinarios) |
+-------------------+ +-------------------+ +-------------------+
| |
v v
+-------------+ +---------------+
| Tool Logger | | Backend Vet |
| (auditoria) | | (services) |
+-------------+ +---------------+
```
---
## Seguridad
- Autenticacion JWT requerida
- Aislamiento por clinica (RLS)
- Logging de todas las llamadas
- Validacion de permisos por herramienta
- Rate limiting por plan
- Datos sensibles de mascotas protegidos
---
## Dependencias
**Este modulo depende de:**
- MGN-001 Auth (autenticacion, tenant_id)
- MGN-017 Plans (rate limiting por plan)
- Modulos veterinarios (mascotas, vacunacion, citas, hospitalizacion)
**Modulos que dependen de este:**
- MGN-020 AI Integration (usa las tools)
- MGN-021 WhatsApp Business (usa las tools)
---
## Indices
- [Requerimientos](./requerimientos/INDICE-RF-MCP.md)
- [Especificaciones](./especificaciones/INDICE-ET-MCP.md)
- [Historias de Usuario](./historias-usuario/INDICE-US-MCP.md)
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
---
*Modulo: MGN-022-mcp-server-vet*
*Propagado desde: erp-core/MGN-022-mcp-server*
*Adaptado para: Dominio veterinario*
*Fecha: 2026-01-13*

View File

@ -0,0 +1,63 @@
# MGN-022: MCP Server - Mapa del Modulo
**Modulo:** MGN-022-mcp-server
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura
```
MGN-022-mcp-server/
├── README.md <- Vision general
├── _MAP.md <- ESTE ARCHIVO
├── requerimientos/
│ └── INDICE-RF-MCP.md <- Indice de requerimientos
├── especificaciones/
│ └── INDICE-ET-MCP.md <- Indice de especificaciones
├── historias-usuario/
│ └── INDICE-US-MCP.md <- Indice de historias
└── implementacion/
└── TRACEABILITY.yml <- Trazabilidad
```
---
## Herramientas MCP Veterinarias
| Categoria | Tools | Descripcion |
|-----------|-------|-------------|
| Mascotas | 4 | Expediente, busqueda, signos vitales |
| Vacunacion | 4 | Cartilla, registro, pendientes |
| Desparasitacion | 3 | Estado, registro, proxima |
| Citas | 4 | Agendar, consultar, confirmar |
| Hospitalizacion | 4 | Estado, evolucion, alta |
| Laboratorio | 3 | Solicitar, resultados |
**Total: 22 herramientas veterinarias**
---
## Recursos MCP
| URI | Descripcion |
|-----|-------------|
| `vet://config/clinica` | Configuracion |
| `vet://catalogo/vacunas` | Vacunas disponibles |
| `vet://catalogo/especies` | Especies soportadas |
| `vet://calendario/vacunacion` | Calendario oficial |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase | [05-fase-ia](../) |
| Modulo anterior | [MGN-021-whatsapp-business](../MGN-021-whatsapp-business/) |
| Mapa principal | [docs/_MAP.md](../../_MAP.md) |
---
*Mapa generado: 2026-01-13*

103
docs/05-fase-ia/README.md Normal file
View File

@ -0,0 +1,103 @@
# Fase 05: Inteligencia Artificial - Clinica Veterinaria
**Proyecto:** clinica-veterinaria
**Fase:** 05 - IA
**Tipo:** SUB-CONSUMER (hereda de erp-clinicas -> erp-core)
**Fecha:** 2026-01-13
**Version:** 1.0.0
---
## Descripcion
Esta fase implementa las capacidades de Inteligencia Artificial para la clinica veterinaria, incluyendo un asistente veterinario inteligente, integracion con WhatsApp Business y un servidor MCP con herramientas especializadas para el dominio veterinario.
## Normativas Aplicables
- **NOM-064-ZOO-2000**: Lineamientos para la clasificacion y prescripcion de productos farmaceuticos veterinarios
- **SENASICA**: Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria
- **Ley Federal de Sanidad Animal**: Regulaciones de bienestar animal
## Modulos de esta Fase
| Modulo | Nombre | Descripcion | Estado |
|--------|--------|-------------|--------|
| MGN-020 | [AI Integration](./MGN-020-ai-integration/) | Gateway LLM para asistente veterinario | Draft |
| MGN-021 | [WhatsApp Business](./MGN-021-whatsapp-business/) | Comunicacion con propietarios de mascotas | Draft |
| MGN-022 | [MCP Server](./MGN-022-mcp-server/) | Herramientas MCP para dominio veterinario | Draft |
## Capacidades de IA para Veterinaria
### Asistente Veterinario
El asistente de IA esta entrenado para:
- **Consultas de salud**: Orientar a propietarios sobre sintomas y urgencia
- **Calendario de vacunacion**: Informar sobre vacunas por especie y raza
- **Citas**: Agendar, confirmar y recordar citas
- **Cartilla de vacunacion**: Consultar historial de vacunas
- **Desparasitacion**: Informar sobre calendario de desparasitacion
- **Cuidados post-operatorios**: Instrucciones segun procedimiento
- **Nutricion**: Recomendaciones alimenticias por especie/raza/edad
### Especies Soportadas
| Especie | Conocimiento IA | Nivel |
|---------|-----------------|-------|
| Caninos | Razas, vacunas, enfermedades comunes | Avanzado |
| Felinos | Razas, vacunas, enfermedades comunes | Avanzado |
| Aves | Especies domesticas comunes | Intermedio |
| Exoticos | Reptiles, roedores, hurones | Basico |
| Fauna silvestre | Derivacion a especialista | Referencia |
## Integraciones
### WhatsApp Business
Comunicacion bidireccional con propietarios:
- Recordatorios de vacunacion
- Confirmacion de citas
- Instrucciones de cuidado
- Consultas rapidas sobre sintomas
- Resultados de laboratorio
### MCP Tools Veterinarias
Herramientas especializadas para el dominio:
- `consultar_historial_mascota`: Expediente clinico completo
- `registrar_vacuna`: Registro de aplicacion de vacunas
- `agendar_consulta`: Programacion de citas
- `consultar_cartilla_vacunacion`: Historial de vacunacion
- `verificar_desparasitacion`: Estado de desparasitacion
- `consultar_hospitalizacion`: Estado de pacientes internados
## Consideraciones de Bienestar Animal
La IA debe:
1. Priorizar la salud y bienestar del animal
2. Recomendar atencion veterinaria presencial cuando sea necesario
3. No diagnosticar ni prescribir medicamentos
4. Alertar sobre situaciones de emergencia
5. Cumplir con normativas SENASICA y NOM-064-ZOO-2000
## Dependencias
- **MGN-016-billing**: Limites de uso de IA por plan
- **MGN-017-plans**: Features de IA por plan
- **erp-clinicas**: Modulos de gestion clinica
- **erp-core**: Infraestructura IA base
## Navegacion
- [Indice de Fase](./_MAP.md)
- [Fase 04 - SaaS](../04-fase-saas/)
- [Mapa Principal](../_MAP.md)
---
*Propagado desde erp-core via erp-clinicas*
*Adaptado para dominio veterinario*
*Version: 1.0.0 | Fecha: 2026-01-13*

131
docs/05-fase-ia/_MAP.md Normal file
View File

@ -0,0 +1,131 @@
# Fase 05: Inteligencia Artificial - Mapa de Navegacion
**Fase:** 05-fase-ia
**Proyecto:** clinica-veterinaria
**Fecha:** 2026-01-13
---
## Estructura de la Fase
```
05-fase-ia/
├── README.md <- Descripcion de la fase
├── _MAP.md <- ESTE ARCHIVO
├── MGN-020-ai-integration/ <- Gateway LLM
│ ├── README.md <- Descripcion del modulo
│ ├── _MAP.md <- Indice del modulo
│ ├── requerimientos/ <- RFs del modulo
│ ├── especificaciones/ <- ETs del modulo
│ ├── historias-usuario/ <- USs del modulo
│ └── implementacion/ <- Trazabilidad
├── MGN-021-whatsapp-business/ <- WhatsApp con IA
│ └── ...
└── MGN-022-mcp-server/ <- Servidor MCP
└── ...
```
---
## Modulos de la Fase
### MGN-020: AI Integration - Asistente Veterinario
Gateway LLM multi-proveedor con conocimiento veterinario especializado.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-020-ai-integration/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-020-ai-integration/_MAP.md) | Indice | Navegacion del modulo |
**Capacidades veterinarias:**
- Conocimiento de especies y razas
- Calendario de vacunacion por especie
- Sintomas comunes y nivel de urgencia
- Cuidados post-operatorios
---
### MGN-021: WhatsApp Business - Comunicacion con Propietarios
Integracion WhatsApp para comunicacion con duenos de mascotas.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-021-whatsapp-business/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-021-whatsapp-business/_MAP.md) | Indice | Navegacion del modulo |
**Templates veterinarios:**
- `recordatorio_vacuna`: Proxima vacuna pendiente
- `confirmacion_cita_veterinaria`: Confirmar asistencia
- `instrucciones_cuidado`: Post-operatorio y tratamientos
- `alerta_desparasitacion`: Recordatorio de desparasitacion
- `resultados_laboratorio`: Notificacion de resultados
---
### MGN-022: MCP Server - Herramientas Veterinarias
Servidor MCP con herramientas especializadas para el dominio veterinario.
| Documento | Tipo | Descripcion |
|-----------|------|-------------|
| [README.md](./MGN-022-mcp-server/README.md) | Overview | Vision general del modulo |
| [_MAP.md](./MGN-022-mcp-server/_MAP.md) | Indice | Navegacion del modulo |
**Herramientas MCP:**
- `consultar_historial_mascota`
- `registrar_vacuna`
- `agendar_consulta`
- `consultar_cartilla_vacunacion`
- `verificar_desparasitacion`
- `consultar_hospitalizacion`
---
## Flujo de Interaccion IA
```
Propietario (WhatsApp)
|
v
+------------------+
| WhatsApp Business|
| (MGN-021) |
+------------------+
|
v
+------------------+
| AI Integration |
| (MGN-020) |
+------------------+
|
v
+------------------+
| MCP Server |
| (MGN-022) |
+------------------+
|
v
+------------------+
| Backend |
| Veterinario |
+------------------+
```
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Fase anterior | [04-fase-saas](../04-fase-saas/) |
| Mapa principal | [docs/_MAP.md](../_MAP.md) |
---
*Mapa generado: 2026-01-13*
*Propagado desde: erp-core/docs/05-fase-ia*

50
docs/README.md Normal file
View File

@ -0,0 +1,50 @@
# Clinica Veterinaria - Documentacion
Sistema de gestion especializado para clinicas veterinarias.
## Nivel Jerarquico
- **Nivel:** SUB_CONSUMER
- **Parent:** erp-clinicas
- **Especialidad:** Veterinaria
## Estructura de Documentacion
```
docs/
├── README.md # Este archivo
├── 00-vision-general/ # Vision y objetivos del proyecto
├── 01-requisitos/ # Requisitos funcionales y tecnicos
├── 02-arquitectura/ # Diagramas y decisiones arquitectonicas
├── 03-diseno/ # Diseno de modulos y flujos
├── 04-SAAS/ # Modulos SaaS (billing, plans, etc)
├── 05-IA/ # Integraciones de IA
└── 95-guias-desarrollo/ # Guias y estandares
```
## Modulos Especializados
1. **Ficha de Paciente Animal** - Registro de mascota con especie, raza, peso
2. **Historia Clinica Veterinaria** - Historial medico por mascota
3. **Vacunacion y Desparasitacion** - Calendario y recordatorios
4. **Agenda de Citas** - Gestion de turnos y recordatorios
5. **Hospitalizacion** - Control de pacientes internados
6. **Estetica Canina** - Servicios de grooming
## Herencia
Este proyecto hereda funcionalidad de:
- `erp-clinicas` (parent directo)
- `erp-core` (core ERP)
- `template-saas` (funcionalidades SaaS base)
## Cumplimiento Normativo
- NOM-064-ZOO-2000 (Requisitos para establecimientos)
- SENASICA (Regulaciones sanitarias animales)
## Referencias
- [DEPENDENCY-GRAPH.yml](/orchestration/DEPENDENCY-GRAPH.yml)
- [MASTER_INVENTORY.yml](/orchestration/inventarios/MASTER_INVENTORY.yml)
- [Mirror Index](/shared/mirrors/MIRRORS-INDEX.yml)

View File

@ -1,9 +1,10 @@
# Clinica Veterinaria - Mapa de Documentacion # Clinica Veterinaria - Mapa de Documentacion
**Proyecto:** clinica-veterinaria **Proyecto:** clinica-veterinaria
**Tipo:** ERP Especializado (hereda de erp-clinicas) **Tipo:** ERP Especializado (hereda de erp-clinicas -> erp-core)
**Fecha:** 2026-01-07 **Fecha:** 2026-01-16
**Estado:** Fase 0 - Preparacion **Estado:** Estructura _definitions/ y _quick/ completada
**Nivel de Herencia:** 3 (clinica-veterinaria <- erp-clinicas <- erp-core)
--- ---
@ -12,23 +13,46 @@
``` ```
docs/ docs/
├── _MAP.md <- ESTE ARCHIVO ├── _MAP.md <- ESTE ARCHIVO
├── _definitions/ <- [NUEVO] Definiciones canonicas
│ ├── _INDEX.yml <- Indice de definiciones
│ ├── DATABASE-SCHEMA.md <- Schema BD (@PROJ_DEF_DB)
│ ├── ENTITIES-CATALOG.md <- Catalogo entities (@PROJ_DEF_ENTITIES)
│ ├── SERVICES-CATALOG.md <- Catalogo services (@PROJ_DEF_SERVICES)
│ └── MODULES-CATALOG.md <- Catalogo modulos (@PROJ_DEF_MODULES)
├── _quick/ <- [NUEVO] Navegacion rapida
│ ├── QUICK-INDEX.yml <- Punto de entrada rapido
│ ├── QUICK-MODULES.yml <- Navegacion por modulos
│ ├── QUICK-DATABASE.yml <- Navegacion por BD
│ └── QUICK-API.yml <- Navegacion por API
├── 00-vision-general/ ├── 00-vision-general/
│ ├── README.md <- Indice de vision │ ├── README.md <- Indice de vision
│ └── VISION.md <- Vision estrategica [PENDIENTE] │ └── VISION.md <- Vision estrategica
├── 01-epicas/
│ └── VET-XXX-*.md <- Epicas veterinarias
├── 02-definicion-modulos/ ├── 02-definicion-modulos/
│ ├── _MAP.md <- Indice de modulos [PENDIENTE] │ ├── _MAP.md <- Indice de modulos
│ ├── modulo-mascotas.md <- Registro de pacientes [PENDIENTE] │ ├── modulo-mascotas.md <- Registro de pacientes
│ ├── modulo-propietarios.md <- Duenos de mascotas [PENDIENTE] │ ├── modulo-vacunacion.md <- Cartilla de vacunas
│ ├── modulo-vacunacion.md <- Cartilla de vacunas [PENDIENTE] │ └── ... <- Otros modulos veterinarios
│ ├── modulo-hospitalizacion.md <- Internamiento [PENDIENTE]
│ ├── modulo-farmacia.md <- Medicamentos [PENDIENTE]
│ ├── modulo-estetica.md <- Grooming [PENDIENTE]
│ ├── modulo-laboratorio.md <- Analisis clinicos [PENDIENTE]
│ └── modulo-cirugia.md <- Procedimientos [PENDIENTE]
├── 03-especificaciones/ ├── 04-fase-saas/ <- Modulos SaaS
│ └── ... (futuras especificaciones tecnicas) │ ├── README.md <- Vision de fase SaaS
│ ├── _MAP.md <- Mapa de navegacion
│ ├── MGN-016-billing/ <- Facturacion veterinaria
│ ├── MGN-017-plans/ <- Planes para clinicas
│ ├── MGN-018-webhooks/ <- Eventos veterinarios
│ └── MGN-019-feature-flags/ <- Control de funcionalidades
├── 05-fase-ia/ <- Modulos IA
│ ├── README.md <- Vision de fase IA
│ ├── _MAP.md <- Mapa de navegacion
│ ├── MGN-020-ai-integration/ <- Asistente veterinario IA
│ ├── MGN-021-whatsapp-business/ <- Comunicacion WhatsApp
│ └── MGN-022-mcp-server/ <- Herramientas MCP veterinarias
└── 90-transversal/ └── 90-transversal/
└── ... (documentacion transversal) └── ... (documentacion transversal)
@ -36,6 +60,17 @@ docs/
--- ---
## Aliases de Definiciones
| Alias | Archivo | Descripcion |
|-------|---------|-------------|
| @PROJ_DEF_DB | `_definitions/DATABASE-SCHEMA.md` | Schema canonico BD |
| @PROJ_DEF_ENTITIES | `_definitions/ENTITIES-CATALOG.md` | Catalogo de entidades |
| @PROJ_DEF_SERVICES | `_definitions/SERVICES-CATALOG.md` | Catalogo de servicios |
| @PROJ_DEF_MODULES | `_definitions/MODULES-CATALOG.md` | Catalogo de modulos |
---
## Modulos Especializados (Veterinaria) ## Modulos Especializados (Veterinaria)
### Modulos Core ### Modulos Core
@ -140,6 +175,43 @@ campos_principales:
| SENASICA | Reportes de vacunacion | Pendiente | | SENASICA | Reportes de vacunacion | Pendiente |
| Laboratorios | Resultados de analisis | Pendiente | | Laboratorios | Resultados de analisis | Pendiente |
| Proveedores | Pedidos de medicamentos | Pendiente | | Proveedores | Pedidos de medicamentos | Pendiente |
| WhatsApp Business | Comunicacion con propietarios | Documentado |
| Stripe | Billing y suscripciones | Documentado |
---
## Fase 04: SaaS (Propagado desde erp-core)
Modulos de capacidades SaaS adaptados al dominio veterinario.
| Modulo | Nombre | Descripcion | Estado |
|--------|--------|-------------|--------|
| MGN-016 | [Billing](./04-fase-saas/MGN-016-billing/) | Facturacion y suscripciones | Draft |
| MGN-017 | [Plans](./04-fase-saas/MGN-017-plans/) | Planes para clinicas veterinarias | Draft |
| MGN-018 | [Webhooks](./04-fase-saas/MGN-018-webhooks/) | Eventos veterinarios | Draft |
| MGN-019 | [Feature Flags](./04-fase-saas/MGN-019-feature-flags/) | Control de funcionalidades | Draft |
**Normativas:** NOM-064-ZOO-2000, SENASICA
---
## Fase 05: Inteligencia Artificial (Propagado desde erp-core)
Modulos de IA especializados en medicina veterinaria.
| Modulo | Nombre | Descripcion | Estado |
|--------|--------|-------------|--------|
| MGN-020 | [AI Integration](./05-fase-ia/MGN-020-ai-integration/) | Asistente veterinario IA | Draft |
| MGN-021 | [WhatsApp Business](./05-fase-ia/MGN-021-whatsapp-business/) | Comunicacion con propietarios | Draft |
| MGN-022 | [MCP Server](./05-fase-ia/MGN-022-mcp-server/) | Herramientas MCP veterinarias | Draft |
**Herramientas MCP Veterinarias:**
- `consultar_historial_mascota` - Expediente clinico
- `registrar_vacuna` - Aplicacion de vacunas
- `agendar_consulta` - Programacion de citas
- `consultar_cartilla_vacunacion` - Historial de vacunacion
- `verificar_desparasitacion` - Estado de desparasitacion
- `consultar_hospitalizacion` - Pacientes internados
--- ---
@ -168,5 +240,19 @@ campos_principales:
--- ---
**Ultima actualizacion:** 2026-01-07 ---
**Version:** 1.0.0
## Propagacion de Documentacion
Este proyecto recibe documentacion propagada desde:
| Origen | Via | Modulos | Fecha |
|--------|-----|---------|-------|
| erp-core | erp-clinicas | MGN-016 a MGN-022 | 2026-01-13 |
Ver: [PROPAGATION-STATUS.yml](/home/isem/workspace-v2/shared/mirrors/clinica-veterinaria/PROPAGATION-STATUS.yml)
---
**Ultima actualizacion:** 2026-01-16
**Version:** 1.2.0

34
docs/_SSOT/README.md Normal file
View File

@ -0,0 +1,34 @@
# Single Source of Truth (SSOT) - CLINICA-VETERINARIA
**Version:** 1.0.0
**Fecha:** 2026-01-18
**Proyecto:** clinica-veterinaria
**Sistema:** SIMCO v4.0.0
---
## Herencia
```
template-saas (PROVIDER)
erp-core (INTERMEDIATE)
erp-clinicas (INTERMEDIATE)
clinica-veterinaria (SPECIALIZES) ← ESTE PROYECTO
```
---
## Archivos SSOT
| Archivo | Descripcion | Estado |
|---------|-------------|--------|
| EPIC-INDEX.yml | Indice de epicas | PENDIENTE |
| TRACEABILITY-MASTER.yml | Trazabilidad maestra | PENDIENTE |
---
**Creado:** 2026-01-18
**Mantenido por:** @CLINICA_VETERINARIA_ORCHESTRATOR

View File

@ -0,0 +1,534 @@
# 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*

View File

@ -0,0 +1,181 @@
# Entities Catalog - clinica-veterinaria
**Alias:** @PROJ_DEF_ENTITIES
**Version:** 1.0.0
**Ultima actualizacion:** 2026-01-16
---
## 1. RESUMEN
| Metrica | Valor |
|---------|-------|
| **Total Entities** | 0 (Pendiente implementacion) |
| **Por Modulo** | Ver seccion 2 |
| **Estado** | Planificado |
> **Nota:** Este proyecto actualmente tiene solo DDL de base de datos.
> Las entities de NestJS se implementaran en fases posteriores.
---
## 2. ENTITIES POR MODULO (Planificadas)
### 2.1 Modulo: Core Veterinaria (VET-001)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Especie | `especie.entity.ts` | veterinaria.especies | Catalogo de especies |
| Raza | `raza.entity.ts` | veterinaria.razas | Catalogo de razas |
| Propietario | `propietario.entity.ts` | veterinaria.propietarios | Duenos de mascotas |
| Mascota | `mascota.entity.ts` | veterinaria.mascotas | Pacientes (mascotas) |
### 2.2 Modulo: Vacunacion (VET-002)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Vacuna | `vacuna.entity.ts` | veterinaria.vacunas | Catalogo de vacunas |
| CartillaVacunacion | `cartilla-vacunacion.entity.ts` | veterinaria.cartilla_vacunacion | Historial vacunas |
### 2.3 Modulo: Desparasitaciones (VET-003)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Desparasitacion | `desparasitacion.entity.ts` | veterinaria.desparasitaciones | Historial desparasitaciones |
### 2.4 Modulo: Hospitalizacion (VET-004)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Hospitalizacion | `hospitalizacion.entity.ts` | veterinaria.hospitalizacion | Registro internamiento |
| HospitalizacionMonitoreo | `hospitalizacion-monitoreo.entity.ts` | veterinaria.hospitalizacion_monitoreo | Monitoreo signos vitales |
### 2.5 Modulo: Estetica (VET-005)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Estetica | `estetica.entity.ts` | veterinaria.estetica | Servicios grooming |
### 2.6 Modulo: Farmacia (VET-006)
| Entity | Archivo | Tabla BD | Descripcion |
|--------|---------|----------|-------------|
| Medicamento | `medicamento.entity.ts` | veterinaria.medicamentos | Catalogo medicamentos |
| MedicamentoLote | `medicamento-lote.entity.ts` | veterinaria.medicamentos_lotes | Lotes con caducidad |
| Dispensacion | `dispensacion.entity.ts` | veterinaria.dispensaciones | Despacho medicamentos |
| MovimientoFarmacia | `movimiento-farmacia.entity.ts` | veterinaria.movimientos_farmacia | Kardex inventario |
| BitacoraControlados | `bitacora-controlados.entity.ts` | veterinaria.bitacora_controlados | Auditoria COFEPRIS |
### 2.7 Entities Heredadas (de erp-clinicas)
| Entity | Origen | Uso en Veterinaria |
|--------|--------|-------------------|
| Doctor | erp-clinicas | Veterinarios |
| Appointment | erp-clinicas | Citas |
| Consultation | erp-clinicas | Consultas (extendida con mascota_id) |
| Patient | erp-clinicas | Base (reemplazado por Mascota) |
---
## 3. RELACIONES ENTRE ENTITIES
```yaml
relaciones:
Propietario:
has_many:
- Mascota
Mascota:
belongs_to:
- Propietario
- Especie
- Raza (opcional)
has_many:
- CartillaVacunacion
- Desparasitacion
- Hospitalizacion
- Estetica
- Dispensacion
Hospitalizacion:
belongs_to:
- Mascota
- Consultation (opcional)
has_many:
- HospitalizacionMonitoreo
Medicamento:
has_many:
- MedicamentoLote
- Dispensacion
- MovimientoFarmacia
MedicamentoLote:
belongs_to:
- Medicamento
has_many:
- Dispensacion
- MovimientoFarmacia
Dispensacion:
belongs_to:
- Medicamento
- MedicamentoLote
- Mascota
- Consultation (opcional)
```
---
## 4. ESTRUCTURA DE DIRECTORIOS (Planificada)
```
backend/src/modules/
├── veterinaria/
│ ├── entities/
│ │ ├── especie.entity.ts
│ │ ├── raza.entity.ts
│ │ ├── propietario.entity.ts
│ │ └── mascota.entity.ts
│ ├── services/
│ ├── controllers/
│ └── veterinaria.module.ts
├── vacunacion/
│ ├── entities/
│ │ ├── vacuna.entity.ts
│ │ └── cartilla-vacunacion.entity.ts
│ └── ...
├── hospitalizacion/
│ ├── entities/
│ │ ├── hospitalizacion.entity.ts
│ │ └── hospitalizacion-monitoreo.entity.ts
│ └── ...
├── estetica/
│ ├── entities/
│ │ └── estetica.entity.ts
│ └── ...
└── farmacia/
├── entities/
│ ├── medicamento.entity.ts
│ ├── medicamento-lote.entity.ts
│ ├── dispensacion.entity.ts
│ ├── movimiento-farmacia.entity.ts
│ └── bitacora-controlados.entity.ts
└── ...
```
---
## 5. REFERENCIAS
- Database Schema: @PROJ_DEF_DB
- Services: @PROJ_DEF_SERVICES
- Ubicacion planificada: `backend/src/modules/*/entities/`
---
*Template v1.0.0 - clinica-veterinaria - Pendiente implementacion backend*

View File

@ -0,0 +1,244 @@
# Modules Catalog - clinica-veterinaria
**Alias:** @PROJ_DEF_MODULES
**Version:** 1.0.0
**Ultima actualizacion:** 2026-01-16
---
## 1. RESUMEN
| Metrica | Valor |
|---------|-------|
| **Total Modulos Propios** | 6 |
| **Modulos Heredados** | 10+ |
| **Documentados** | 6 |
| **En Desarrollo** | 0 |
| **Estado DDL** | Completado |
---
## 2. INDICE DE MODULOS
### 2.1 Modulos Core (Heredados de erp-clinicas / erp-core)
| ID | Nombre | Estado | Origen |
|----|--------|--------|--------|
| MGN-001 | Authentication | Heredado | erp-core |
| MGN-002 | Tenants | Heredado | erp-core |
| MGN-003 | Users | Heredado | erp-core |
| MGN-004 | Audit | Heredado | erp-core |
| CLN-001 | Doctors | Heredado | erp-clinicas |
| CLN-002 | Appointments | Heredado | erp-clinicas |
| CLN-003 | Consultations | Heredado/Extendido | erp-clinicas |
### 2.2 Modulos Propios (Veterinaria)
| ID | Nombre | Estado | Documentacion |
|----|--------|--------|---------------|
| VET-001 | Mascotas y Propietarios | DDL Completado | docs/01-epicas/VET-001-mascotas-propietarios.md |
| VET-002 | Vacunacion | DDL Completado | docs/01-epicas/VET-002-vacunacion.md |
| VET-003 | Desparasitaciones | DDL Completado | docs/01-epicas/VET-003-desparasitaciones.md |
| VET-004 | Hospitalizacion | DDL Completado | docs/01-epicas/VET-004-hospitalizacion.md |
| VET-005 | Estetica | DDL Completado | docs/01-epicas/VET-005-estetica.md |
| VET-006 | Farmacia | DDL Completado | docs/01-epicas/VET-006-farmacia.md |
### 2.3 Modulos SaaS (Heredados/Planificados)
| ID | Nombre | Estado | Documentacion |
|----|--------|--------|---------------|
| MGN-016 | Billing | Draft | docs/04-fase-saas/MGN-016-billing/ |
| MGN-017 | Plans | Draft | docs/04-fase-saas/MGN-017-plans/ |
| MGN-018 | Webhooks | Draft | docs/04-fase-saas/MGN-018-webhooks/ |
| MGN-019 | Feature Flags | Draft | docs/04-fase-saas/MGN-019-feature-flags/ |
### 2.4 Modulos IA (Heredados/Planificados)
| ID | Nombre | Estado | Documentacion |
|----|--------|--------|---------------|
| MGN-020 | AI Integration | Draft | docs/05-fase-ia/MGN-020-ai-integration/ |
| MGN-021 | WhatsApp Business | Draft | docs/05-fase-ia/MGN-021-whatsapp-business/ |
| MGN-022 | MCP Server | Draft | docs/05-fase-ia/MGN-022-mcp-server/ |
---
## 3. DETALLE POR MODULO
### VET-001: Mascotas y Propietarios
```yaml
modulo:
id: "VET-001"
nombre: "Mascotas y Propietarios"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-001-mascotas-propietarios.md"
requerimientos: ["RF-VET-001", "RF-VET-002"]
objetos:
tablas:
- veterinaria.especies
- veterinaria.razas
- veterinaria.propietarios
- veterinaria.mascotas
entities: [] # Pendiente
services: [] # Pendiente
controllers: [] # Pendiente
dependencias:
modulos: ["MGN-002"] # Tenants
externos: []
```
### VET-002: Vacunacion
```yaml
modulo:
id: "VET-002"
nombre: "Vacunacion"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-002-vacunacion.md"
especificacion_modulo: "docs/02-definicion-modulos/modulo-vacunacion.md"
objetos:
tablas:
- veterinaria.vacunas
- veterinaria.cartilla_vacunacion
entities: []
services: []
dependencias:
modulos: ["VET-001"]
```
### VET-003: Desparasitaciones
```yaml
modulo:
id: "VET-003"
nombre: "Desparasitaciones"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-003-desparasitaciones.md"
objetos:
tablas:
- veterinaria.desparasitaciones
entities: []
services: []
dependencias:
modulos: ["VET-001"]
```
### VET-004: Hospitalizacion
```yaml
modulo:
id: "VET-004"
nombre: "Hospitalizacion"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-004-hospitalizacion.md"
objetos:
tablas:
- veterinaria.hospitalizacion
- veterinaria.hospitalizacion_monitoreo
entities: []
services: []
dependencias:
modulos: ["VET-001", "CLN-003"]
```
### VET-005: Estetica
```yaml
modulo:
id: "VET-005"
nombre: "Estetica"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-005-estetica.md"
objetos:
tablas:
- veterinaria.estetica
entities: []
services: []
dependencias:
modulos: ["VET-001"]
```
### VET-006: Farmacia
```yaml
modulo:
id: "VET-006"
nombre: "Farmacia"
estado: "ddl_completado"
version: "1.0.0"
documentacion:
especificacion: "docs/01-epicas/VET-006-farmacia.md"
objetos:
tablas:
- veterinaria.medicamentos
- veterinaria.medicamentos_lotes
- veterinaria.dispensaciones
- veterinaria.movimientos_farmacia
- veterinaria.bitacora_controlados
entities: []
services: []
dependencias:
modulos: ["VET-001", "CLN-003"]
externos:
- "COFEPRIS" # Regulacion medicamentos controlados
```
---
## 4. MATRIZ DE DEPENDENCIAS
```
┌──────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ │ VET-001 │ VET-002 │ VET-003 │ VET-004 │ VET-005 │ VET-006 │
├──────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ VET-001 │ - │ │ │ │ │ │
│ VET-002 │ X │ - │ │ │ │ │
│ VET-003 │ X │ │ - │ │ │ │
│ VET-004 │ X │ │ │ - │ │ │
│ VET-005 │ X │ │ │ │ - │ │
│ VET-006 │ X │ │ │ │ │ - │
└──────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
Leyenda: X = depende de
```
---
## 5. REFERENCIAS
- Database: @PROJ_DEF_DB
- Entities: @PROJ_DEF_ENTITIES
- Services: @PROJ_DEF_SERVICES
- Navegacion rapida: docs/_quick/QUICK-MODULES.yml
---
*Template v1.0.0 - clinica-veterinaria*

View File

@ -0,0 +1,135 @@
# Services Catalog - clinica-veterinaria
**Alias:** @PROJ_DEF_SERVICES
**Version:** 1.0.0
**Ultima actualizacion:** 2026-01-16
---
## 1. RESUMEN
| Metrica | Valor |
|---------|-------|
| **Total Services** | 0 (Pendiente implementacion) |
| **Por Modulo** | Ver seccion 2 |
| **Estado** | Planificado |
> **Nota:** Este proyecto actualmente tiene solo DDL de base de datos.
> Los services de NestJS se implementaran en fases posteriores.
---
## 2. SERVICES POR MODULO (Planificados)
### 2.1 Modulo: Core Veterinaria (VET-001)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| EspeciesService | `especies.service.ts` | TypeORM | CRUD especies |
| RazasService | `razas.service.ts` | EspeciesService | CRUD razas |
| PropietariosService | `propietarios.service.ts` | TypeORM | CRUD propietarios |
| MascotasService | `mascotas.service.ts` | PropietariosService, EspeciesService | CRUD mascotas |
### 2.2 Modulo: Vacunacion (VET-002)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| VacunasService | `vacunas.service.ts` | EspeciesService | CRUD vacunas |
| CartillaService | `cartilla.service.ts` | MascotasService, VacunasService | Registro vacunacion |
| RecordatoriosVacunasService | `recordatorios-vacunas.service.ts` | CartillaService, NotificationsService | Alertas refuerzos |
### 2.3 Modulo: Desparasitaciones (VET-003)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| DesparasitacionesService | `desparasitaciones.service.ts` | MascotasService | CRUD desparasitaciones |
| RecordatoriosDesparasitacionService | `recordatorios-desparasitacion.service.ts` | DesparasitacionesService | Alertas proximas |
### 2.4 Modulo: Hospitalizacion (VET-004)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| HospitalizacionService | `hospitalizacion.service.ts` | MascotasService | Gestion internamientos |
| MonitoreoService | `monitoreo.service.ts` | HospitalizacionService | Registro signos vitales |
| AlertasHospitalizacionService | `alertas-hospitalizacion.service.ts` | MonitoreoService | Alertas criticos |
### 2.5 Modulo: Estetica (VET-005)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| EsteticaService | `estetica.service.ts` | MascotasService | CRUD servicios grooming |
| AgendaEsteticaService | `agenda-estetica.service.ts` | EsteticaService | Agenda de turnos |
### 2.6 Modulo: Farmacia (VET-006)
| Service | Archivo | Dependencias | Descripcion |
|---------|---------|--------------|-------------|
| MedicamentosService | `medicamentos.service.ts` | TypeORM | CRUD medicamentos |
| LotesService | `lotes.service.ts` | MedicamentosService | Gestion lotes |
| DispensacionService | `dispensacion.service.ts` | LotesService, MascotasService | Despacho medicamentos |
| KardexService | `kardex.service.ts` | MedicamentosService, LotesService | Movimientos inventario |
| ControladosService | `controlados.service.ts` | DispensacionService | Bitacora COFEPRIS |
| AlertasStockService | `alertas-stock.service.ts` | MedicamentosService | Stock bajo |
| AlertasCaducidadService | `alertas-caducidad.service.ts` | LotesService | Proximos a caducar |
---
## 3. INYECCION DE DEPENDENCIAS
```yaml
dependencias:
MascotasService:
inyecta:
- PropietariosService
- EspeciesService
- RazasService
inyectado_en:
- CartillaService
- DesparasitacionesService
- HospitalizacionService
- EsteticaService
- DispensacionService
- MascotasController
DispensacionService:
inyecta:
- MedicamentosService
- LotesService
- MascotasService
- ControladosService
inyectado_en:
- DispensacionController
- ConsultationsService (extension)
HospitalizacionService:
inyecta:
- MascotasService
- MonitoreoService
inyectado_en:
- HospitalizacionController
- AlertasHospitalizacionService
```
---
## 4. SERVICES HEREDADOS (de erp-clinicas)
| Service | Origen | Uso en Veterinaria |
|---------|--------|-------------------|
| DoctorsService | erp-clinicas | Gestion veterinarios |
| AppointmentsService | erp-clinicas | Citas |
| ConsultationsService | erp-clinicas | Consultas (extendido) |
| NotificationsService | erp-core | Alertas y recordatorios |
| AuditService | erp-core | Trazabilidad |
---
## 5. REFERENCIAS
- Entities: @PROJ_DEF_ENTITIES
- Controllers: Ver documentacion API
- Ubicacion planificada: `backend/src/modules/*/services/`
---
*Template v1.0.0 - clinica-veterinaria - Pendiente implementacion backend*

View File

@ -0,0 +1,112 @@
# Indice de Definiciones del Proyecto
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
fecha_creacion: "2026-01-16"
descripcion: "Definiciones canonicas del proyecto clinica-veterinaria"
# ============================================================================
# REFERENCIAS A WORKSPACE (Definiciones Globales)
# ============================================================================
referencias_workspace:
protocolos:
CCA: "@WS_DEF_CCA"
CAPVED: "@WS_DEF_CAPVED"
validaciones:
backend: "@WS_DEF_VAL_BE"
frontend: "@WS_DEF_VAL_FE"
ddl: "@WS_DEF_VAL_DDL"
devops: "@WS_DEF_VAL_DEVOPS"
# ============================================================================
# DEFINICIONES LOCALES DEL PROYECTO
# ============================================================================
definiciones_locales:
database:
archivo: "DATABASE-SCHEMA.md"
alias: "@PROJ_DEF_DB"
descripcion: "Schema canonico de base de datos veterinaria"
tablas_principales:
- "veterinaria.especies"
- "veterinaria.razas"
- "veterinaria.vacunas"
- "veterinaria.propietarios"
- "veterinaria.mascotas"
- "veterinaria.cartilla_vacunacion"
- "veterinaria.desparasitaciones"
- "veterinaria.hospitalizacion"
- "veterinaria.hospitalizacion_monitoreo"
- "veterinaria.estetica"
- "veterinaria.medicamentos"
- "veterinaria.medicamentos_lotes"
- "veterinaria.dispensaciones"
- "veterinaria.movimientos_farmacia"
- "veterinaria.bitacora_controlados"
entities:
archivo: "ENTITIES-CATALOG.md"
alias: "@PROJ_DEF_ENTITIES"
descripcion: "Catalogo de entidades del proyecto"
total_entities: 0 # Pendiente implementacion backend
services:
archivo: "SERVICES-CATALOG.md"
alias: "@PROJ_DEF_SERVICES"
descripcion: "Catalogo de servicios del proyecto"
total_services: 0 # Pendiente implementacion backend
modules:
archivo: "MODULES-CATALOG.md"
alias: "@PROJ_DEF_MODULES"
descripcion: "Catalogo de modulos del proyecto"
total_modules: 6
modulos:
- id: "VET-001"
nombre: "Mascotas y Propietarios"
- id: "VET-002"
nombre: "Vacunacion"
- id: "VET-003"
nombre: "Desparasitaciones"
- id: "VET-004"
nombre: "Hospitalizacion"
- id: "VET-005"
nombre: "Estetica"
- id: "VET-006"
nombre: "Farmacia"
# ============================================================================
# HERENCIA (Nivel 3: clinica-veterinaria <- erp-clinicas <- erp-core)
# ============================================================================
herencia:
padre: "erp-clinicas"
nivel: 3
cadena:
- proyecto: "erp-core"
nivel: 1
tipo: "core base"
- proyecto: "erp-clinicas"
nivel: 2
tipo: "vertical clinicas"
- proyecto: "clinica-veterinaria"
nivel: 3
tipo: "especializacion veterinaria"
definiciones_heredadas:
- "@ERP_CORE_DEF_AUTH"
- "@ERP_CORE_DEF_TENANTS"
- "@ERP_CLINICAS_DEF_PATIENTS"
- "@ERP_CLINICAS_DEF_APPOINTMENTS"
- "@ERP_CLINICAS_DEF_CONSULTATIONS"
# ============================================================================
# ESTADISTICAS
# ============================================================================
estadisticas:
total_definiciones: 4
total_referencias_ws: 6
total_tablas_bd: 15
total_enums: 5
total_catalogos: 3
ultima_actualizacion: "2026-01-16"

166
docs/_quick/QUICK-API.yml Normal file
View File

@ -0,0 +1,166 @@
# Navegacion Rapida de API
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
# ============================================================================
# NOTA: API Pendiente de Implementacion
# ============================================================================
# Este proyecto actualmente tiene solo DDL de base de datos.
# Los endpoints de API se implementaran en fases posteriores del backend.
# Esta documentacion describe la estructura planificada de la API.
# ============================================================================
# ENDPOINTS POR MODULO (Planificados)
# ============================================================================
por_modulo:
# VET-001: Mascotas y Propietarios
mascotas:
base: "/api/v1/veterinaria/mascotas"
endpoints:
- { method: "GET", path: "/", descripcion: "Listar mascotas del tenant" }
- { method: "GET", path: "/:id", descripcion: "Obtener mascota por ID" }
- { method: "POST", path: "/", descripcion: "Crear nueva mascota" }
- { method: "PUT", path: "/:id", descripcion: "Actualizar mascota" }
- { method: "DELETE", path: "/:id", descripcion: "Eliminar mascota (soft delete)" }
- { method: "GET", path: "/:id/historial", descripcion: "Historial completo de la mascota" }
- { method: "GET", path: "/:id/vacunas", descripcion: "Cartilla de vacunacion" }
- { method: "GET", path: "/:id/hospitalizaciones", descripcion: "Historial de hospitalizaciones" }
propietarios:
base: "/api/v1/veterinaria/propietarios"
endpoints:
- { method: "GET", path: "/", descripcion: "Listar propietarios" }
- { method: "GET", path: "/:id", descripcion: "Obtener propietario" }
- { method: "POST", path: "/", descripcion: "Crear propietario" }
- { method: "PUT", path: "/:id", descripcion: "Actualizar propietario" }
- { method: "GET", path: "/:id/mascotas", descripcion: "Mascotas del propietario" }
especies:
base: "/api/v1/veterinaria/catalogos/especies"
endpoints:
- { method: "GET", path: "/", descripcion: "Listar especies" }
- { method: "GET", path: "/:id/razas", descripcion: "Razas de la especie" }
# VET-002: Vacunacion
vacunas:
base: "/api/v1/veterinaria/vacunas"
endpoints:
- { method: "GET", path: "/", descripcion: "Listar vacunas disponibles" }
- { method: "POST", path: "/aplicar", descripcion: "Registrar aplicacion de vacuna" }
- { method: "GET", path: "/pendientes", descripcion: "Vacunas con refuerzo pendiente" }
- { method: "GET", path: "/proximas", descripcion: "Proximos refuerzos (7 dias)" }
# VET-003: Desparasitaciones
desparasitaciones:
base: "/api/v1/veterinaria/desparasitaciones"
endpoints:
- { method: "GET", path: "/mascota/:mascotaId", descripcion: "Historial de desparasitaciones" }
- { method: "POST", path: "/", descripcion: "Registrar desparasitacion" }
- { method: "GET", path: "/pendientes", descripcion: "Desparasitaciones pendientes" }
# VET-004: Hospitalizacion
hospitalizacion:
base: "/api/v1/veterinaria/hospitalizacion"
endpoints:
- { method: "GET", path: "/activos", descripcion: "Pacientes hospitalizados actuales" }
- { method: "POST", path: "/ingresar", descripcion: "Ingresar paciente" }
- { method: "PUT", path: "/:id/estado", descripcion: "Actualizar estado" }
- { method: "POST", path: "/:id/monitoreo", descripcion: "Registrar signos vitales" }
- { method: "POST", path: "/:id/alta", descripcion: "Dar de alta paciente" }
- { method: "GET", path: "/:id/monitoreos", descripcion: "Historial de monitoreo" }
# VET-005: Estetica
estetica:
base: "/api/v1/veterinaria/estetica"
endpoints:
- { method: "GET", path: "/", descripcion: "Listar servicios de estetica" }
- { method: "POST", path: "/", descripcion: "Agendar servicio de estetica" }
- { method: "PUT", path: "/:id/estado", descripcion: "Actualizar estado del servicio" }
- { method: "GET", path: "/agenda/:fecha", descripcion: "Agenda del dia" }
# VET-006: Farmacia
farmacia:
base: "/api/v1/veterinaria/farmacia"
endpoints:
- { method: "GET", path: "/medicamentos", descripcion: "Listar medicamentos" }
- { method: "GET", path: "/medicamentos/:id/lotes", descripcion: "Lotes del medicamento" }
- { method: "POST", path: "/dispensar", descripcion: "Dispensar medicamento" }
- { method: "GET", path: "/stock-bajo", descripcion: "Medicamentos con stock bajo" }
- { method: "GET", path: "/proximos-caducar", descripcion: "Lotes proximos a caducar" }
- { method: "GET", path: "/controlados/bitacora", descripcion: "Bitacora de controlados" }
# ============================================================================
# ENDPOINTS POR METODO (Resumen)
# ============================================================================
por_metodo:
GET:
- "/api/v1/veterinaria/mascotas"
- "/api/v1/veterinaria/propietarios"
- "/api/v1/veterinaria/hospitalizacion/activos"
- "/api/v1/veterinaria/farmacia/stock-bajo"
POST:
- "/api/v1/veterinaria/mascotas"
- "/api/v1/veterinaria/vacunas/aplicar"
- "/api/v1/veterinaria/hospitalizacion/ingresar"
- "/api/v1/veterinaria/farmacia/dispensar"
PUT:
- "/api/v1/veterinaria/mascotas/:id"
- "/api/v1/veterinaria/hospitalizacion/:id/estado"
DELETE:
- "/api/v1/veterinaria/mascotas/:id"
# ============================================================================
# AUTENTICACION
# ============================================================================
autenticacion:
tipo: "JWT Bearer"
header: "Authorization"
formato: "Bearer {token}"
hereda_de: "erp-core (MGN-001)"
endpoints_publicos:
- "/api/v1/auth/login"
- "/api/v1/auth/register"
- "/api/v1/health"
# ============================================================================
# MULTI-TENANCY
# ============================================================================
multi_tenancy:
header: "X-Tenant-ID"
estrategia: "RLS (Row Level Security)"
hereda_de: "erp-core (MGN-002)"
# ============================================================================
# ERRORES COMUNES
# ============================================================================
errores:
400: "Bad Request - Datos invalidos"
401: "Unauthorized - Token invalido o expirado"
403: "Forbidden - Sin permisos"
404: "Not Found - Recurso no encontrado"
409: "Conflict - Mascota/Propietario ya existe"
422: "Unprocessable Entity - Validacion fallida"
500: "Internal Server Error"
# ============================================================================
# ERRORES ESPECIFICOS VETERINARIA
# ============================================================================
errores_veterinaria:
VET001: "Mascota no encontrada"
VET002: "Propietario no encontrado"
VET003: "Vacuna no aplicable a esta especie"
VET004: "Paciente ya hospitalizado"
VET005: "Stock insuficiente de medicamento"
VET006: "Lote caducado no puede dispensarse"
VET007: "Medicamento controlado requiere receta"
# ============================================================================
# REFERENCIAS
# ============================================================================
referencias:
swagger: "/api/docs (planificado)"
services: "@PROJ_DEF_SERVICES"
herencia_auth: "orchestration/00-guidelines/HERENCIA-ERP-CORE.md"

View File

@ -0,0 +1,169 @@
# Navegacion Rapida de Base de Datos
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
# ============================================================================
# SCHEMAS
# ============================================================================
schemas:
veterinaria:
descripcion: "Schema principal con tablas veterinarias"
tablas_count: 15
tablas_principales:
- especies
- razas
- vacunas
- propietarios
- mascotas
- cartilla_vacunacion
- desparasitaciones
- hospitalizacion
- hospitalizacion_monitoreo
- estetica
- medicamentos
- medicamentos_lotes
- dispensaciones
- movimientos_farmacia
- bitacora_controlados
heredados:
auth:
origen: "erp-core"
descripcion: "Autenticacion y sesiones"
tenants:
origen: "erp-core"
descripcion: "Multi-tenancy"
clinica:
origen: "erp-clinicas"
descripcion: "Doctors, appointments, consultations"
nota: "consultations extendida con mascota_id"
# ============================================================================
# TABLAS PRINCIPALES (Top 10)
# ============================================================================
tablas_principales:
- nombre: "mascotas"
schema: "veterinaria"
descripcion: "Pacientes (mascotas) de la clinica"
entity: "Mascota.entity.ts (planificado)"
relaciones: ["propietarios", "especies", "razas", "cartilla_vacunacion", "hospitalizacion"]
rls: true
- nombre: "propietarios"
schema: "veterinaria"
descripcion: "Duenos de mascotas"
entity: "Propietario.entity.ts (planificado)"
relaciones: ["mascotas"]
rls: true
- nombre: "cartilla_vacunacion"
schema: "veterinaria"
descripcion: "Historial de vacunas por mascota"
entity: "CartillaVacunacion.entity.ts (planificado)"
relaciones: ["mascotas", "vacunas"]
rls: true
- nombre: "hospitalizacion"
schema: "veterinaria"
descripcion: "Registro de internamientos"
entity: "Hospitalizacion.entity.ts (planificado)"
relaciones: ["mascotas", "hospitalizacion_monitoreo"]
rls: true
- nombre: "medicamentos"
schema: "veterinaria"
descripcion: "Catalogo de medicamentos veterinarios"
entity: "Medicamento.entity.ts (planificado)"
relaciones: ["medicamentos_lotes", "dispensaciones"]
rls: true
- nombre: "dispensaciones"
schema: "veterinaria"
descripcion: "Despacho de medicamentos"
entity: "Dispensacion.entity.ts (planificado)"
relaciones: ["medicamentos", "medicamentos_lotes", "mascotas"]
rls: true
# ============================================================================
# ENUMS
# ============================================================================
enums:
- nombre: "sexo_animal"
valores: ["macho", "hembra", "desconocido"]
usado_en: ["mascotas"]
- nombre: "estado_hospitalizacion"
valores: ["ingresado", "en_tratamiento", "estable", "critico", "alta", "fallecido"]
usado_en: ["hospitalizacion"]
- nombre: "categoria_medicamento"
valores: ["antibiotico", "antiparasitario", "analgesico", "antiinflamatorio", "vacuna", "vitamina", "dermatologico", "oftalmico", "cardiaco", "digestivo", "otro"]
usado_en: ["medicamentos"]
- nombre: "tipo_movimiento_farmacia"
valores: ["entrada", "salida", "ajuste_positivo", "ajuste_negativo", "devolucion", "merma"]
usado_en: ["movimientos_farmacia", "bitacora_controlados"]
- nombre: "fraccion_controlada"
valores: ["no_controlado", "fraccion_i", "fraccion_ii", "fraccion_iii", "fraccion_iv"]
usado_en: ["medicamentos"]
# ============================================================================
# BUSQUEDA RAPIDA
# ============================================================================
busqueda:
por_modulo:
VET-001: ["especies", "razas", "propietarios", "mascotas"]
VET-002: ["vacunas", "cartilla_vacunacion"]
VET-003: ["desparasitaciones"]
VET-004: ["hospitalizacion", "hospitalizacion_monitoreo"]
VET-005: ["estetica"]
VET-006: ["medicamentos", "medicamentos_lotes", "dispensaciones", "movimientos_farmacia", "bitacora_controlados"]
por_tipo:
catalogo:
- especies
- razas
- vacunas
- medicamentos
transaccional:
- cartilla_vacunacion
- desparasitaciones
- hospitalizacion
- hospitalizacion_monitoreo
- estetica
- dispensaciones
- movimientos_farmacia
auditoria:
- bitacora_controlados
# ============================================================================
# ARCHIVOS DDL
# ============================================================================
ddl:
ubicacion: "database/schemas/"
archivos:
- archivo: "01-veterinaria-schema-ddl.sql"
descripcion: "Schema principal veterinaria"
fecha: "2026-01-04"
- archivo: "02-veterinaria-farmacia-ddl.sql"
descripcion: "Modulo farmacia"
fecha: "2026-01-07"
seeds:
ubicacion: "database/seeds/"
archivos:
- archivo: "fase8/01-veterinaria-catalogos.sql"
descripcion: "Seeds de catalogos (especies, razas, vacunas)"
# ============================================================================
# REFERENCIAS
# ============================================================================
referencias:
schema_completo: "@PROJ_DEF_DB"
entities: "@PROJ_DEF_ENTITIES"
inventario: "orchestration/inventarios/DATABASE_INVENTORY.yml"

107
docs/_quick/QUICK-INDEX.yml Normal file
View File

@ -0,0 +1,107 @@
# Indice de Navegacion Rapida
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
fecha_creacion: "2026-01-16"
descripcion: "Navegacion rapida del proyecto clinica-veterinaria"
# ============================================================================
# PUNTO DE ENTRADA RAPIDO
# ============================================================================
inicio_rapido:
descripcion: "Accesos directos a recursos principales"
documentacion:
principal: "docs/README.md"
mapa: "docs/_MAP.md"
vision: "docs/00-vision-general/"
definiciones:
indice: "docs/_definitions/_INDEX.yml"
database: "docs/_definitions/DATABASE-SCHEMA.md"
entities: "docs/_definitions/ENTITIES-CATALOG.md"
services: "docs/_definitions/SERVICES-CATALOG.md"
modules: "docs/_definitions/MODULES-CATALOG.md"
orchestration:
indice: "orchestration/_MAP.md"
inventarios: "orchestration/inventarios/"
trazas: "orchestration/trazas/"
contexto: "orchestration/00-guidelines/CONTEXTO-PROYECTO.md"
epicas:
mascotas: "docs/01-epicas/VET-001-mascotas-propietarios.md"
vacunacion: "docs/01-epicas/VET-002-vacunacion.md"
desparasitaciones: "docs/01-epicas/VET-003-desparasitaciones.md"
hospitalizacion: "docs/01-epicas/VET-004-hospitalizacion.md"
estetica: "docs/01-epicas/VET-005-estetica.md"
farmacia: "docs/01-epicas/VET-006-farmacia.md"
# ============================================================================
# INDICES RAPIDOS
# ============================================================================
indices_rapidos:
modulos: "QUICK-MODULES.yml"
database: "QUICK-DATABASE.yml"
api: "QUICK-API.yml"
# ============================================================================
# ATAJOS POR ROL
# ============================================================================
por_rol:
veterinario:
- "docs/01-epicas/VET-001-mascotas-propietarios.md"
- "docs/01-epicas/VET-002-vacunacion.md"
- "docs/01-epicas/VET-004-hospitalizacion.md"
- "docs/01-epicas/VET-006-farmacia.md"
auxiliar_veterinario:
- "docs/01-epicas/VET-004-hospitalizacion.md"
- "docs/02-definicion-modulos/modulo-vacunacion.md"
recepcionista:
- "docs/01-epicas/VET-001-mascotas-propietarios.md"
- "docs/04-fase-saas/MGN-016-billing/"
estilista:
- "docs/01-epicas/VET-005-estetica.md"
backend_developer:
- "docs/_definitions/ENTITIES-CATALOG.md"
- "docs/_definitions/SERVICES-CATALOG.md"
- "orchestration/inventarios/DATABASE_INVENTORY.yml"
database_admin:
- "docs/_definitions/DATABASE-SCHEMA.md"
- "docs/_quick/QUICK-DATABASE.yml"
- "orchestration/inventarios/DATABASE_INVENTORY.yml"
- "database/schemas/"
architect:
- "docs/00-vision-general/VISION.md"
- "docs/_definitions/MODULES-CATALOG.md"
- "orchestration/DEPENDENCY-GRAPH.yml"
- "orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md"
# ============================================================================
# HERENCIA Y REFERENCIAS
# ============================================================================
herencia:
nivel: 3
cadena:
- proyecto: "erp-core"
referencias: "orchestration/00-guidelines/HERENCIA-ERP-CORE.md"
- proyecto: "erp-clinicas"
referencias: "orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md"
dependencias: "orchestration/referencias/DEPENDENCIAS-ERP-CORE.yml"
# ============================================================================
# REFERENCIAS A WORKSPACE
# ============================================================================
workspace:
quick_index: "@WS_QUICK_INDEX"
definitions: "@WS_DEF_*"
catalog: "shared/catalog/"
ws_references: "orchestration/_refs/WS-REFERENCES.yml"

View File

@ -0,0 +1,141 @@
# Navegacion Rapida de Modulos
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
# ============================================================================
# MODULOS POR ESTADO
# ============================================================================
por_estado:
ddl_completado:
- id: "VET-001"
nombre: "Mascotas y Propietarios"
ruta: "docs/01-epicas/VET-001-mascotas-propietarios.md"
tablas: ["especies", "razas", "propietarios", "mascotas"]
- id: "VET-002"
nombre: "Vacunacion"
ruta: "docs/01-epicas/VET-002-vacunacion.md"
tablas: ["vacunas", "cartilla_vacunacion"]
- id: "VET-003"
nombre: "Desparasitaciones"
ruta: "docs/01-epicas/VET-003-desparasitaciones.md"
tablas: ["desparasitaciones"]
- id: "VET-004"
nombre: "Hospitalizacion"
ruta: "docs/01-epicas/VET-004-hospitalizacion.md"
tablas: ["hospitalizacion", "hospitalizacion_monitoreo"]
- id: "VET-005"
nombre: "Estetica"
ruta: "docs/01-epicas/VET-005-estetica.md"
tablas: ["estetica"]
- id: "VET-006"
nombre: "Farmacia"
ruta: "docs/01-epicas/VET-006-farmacia.md"
tablas: ["medicamentos", "medicamentos_lotes", "dispensaciones", "movimientos_farmacia", "bitacora_controlados"]
heredados:
- id: "MGN-001"
nombre: "Authentication"
origen: "erp-core"
- id: "CLN-001"
nombre: "Doctors"
origen: "erp-clinicas"
- id: "CLN-002"
nombre: "Appointments"
origen: "erp-clinicas"
- id: "CLN-003"
nombre: "Consultations"
origen: "erp-clinicas"
nota: "Extendido con mascota_id"
planificado:
- id: "MGN-016"
nombre: "Billing"
ruta: "docs/04-fase-saas/MGN-016-billing/"
- id: "MGN-020"
nombre: "AI Integration"
ruta: "docs/05-fase-ia/MGN-020-ai-integration/"
- id: "MGN-022"
nombre: "MCP Server"
ruta: "docs/05-fase-ia/MGN-022-mcp-server/"
# ============================================================================
# MODULOS POR CATEGORIA
# ============================================================================
por_categoria:
core_veterinaria:
descripcion: "Modulos base especificos de veterinaria"
modulos:
- { id: "VET-001", nombre: "Mascotas y Propietarios", estado: "ddl_completado" }
- { id: "VET-002", nombre: "Vacunacion", estado: "ddl_completado" }
- { id: "VET-003", nombre: "Desparasitaciones", estado: "ddl_completado" }
servicios_clinicos:
descripcion: "Servicios clinicos veterinarios"
modulos:
- { id: "VET-004", nombre: "Hospitalizacion", estado: "ddl_completado" }
- { id: "VET-005", nombre: "Estetica", estado: "ddl_completado" }
farmacia_inventario:
descripcion: "Gestion de medicamentos e inventario"
modulos:
- { id: "VET-006", nombre: "Farmacia", estado: "ddl_completado" }
saas:
descripcion: "Capacidades SaaS"
modulos:
- { id: "MGN-016", nombre: "Billing", estado: "draft" }
- { id: "MGN-017", nombre: "Plans", estado: "draft" }
- { id: "MGN-018", nombre: "Webhooks", estado: "draft" }
- { id: "MGN-019", nombre: "Feature Flags", estado: "draft" }
inteligencia_artificial:
descripcion: "Modulos de IA"
modulos:
- { id: "MGN-020", nombre: "AI Integration", estado: "draft" }
- { id: "MGN-021", nombre: "WhatsApp Business", estado: "draft" }
- { id: "MGN-022", nombre: "MCP Server", estado: "draft" }
# ============================================================================
# BUSQUEDA RAPIDA
# ============================================================================
busqueda:
por_prefijo:
VET: "Modulo veterinaria especifico"
CLN: "Modulo heredado de erp-clinicas"
MGN: "Modulo generico compartido"
por_archivo:
especificacion: "VET-*.md"
definicion_modulo: "modulo-*.md"
por_tabla:
mascotas: "VET-001"
propietarios: "VET-001"
vacunas: "VET-002"
cartilla_vacunacion: "VET-002"
desparasitaciones: "VET-003"
hospitalizacion: "VET-004"
estetica: "VET-005"
medicamentos: "VET-006"
dispensaciones: "VET-006"
# ============================================================================
# REFERENCIAS
# ============================================================================
referencias:
catalogo_completo: "@PROJ_DEF_MODULES"
indice_general: "docs/_MAP.md"
inventario_bd: "orchestration/inventarios/DATABASE_INVENTORY.yml"

View File

@ -105,12 +105,31 @@ psql -f erp-clinicas/database/seeds/fase8/*.sql
psql -f clinica-veterinaria/database/seeds/fase8/*.sql psql -f clinica-veterinaria/database/seeds/fase8/*.sql
``` ```
## 6. Versionado ## 6. Herencia Indirecta de ERP-CORE
Este proyecto también hereda funcionalidades de `erp-core` a través de `erp-clinicas`:
### 6.1 Módulos Fase 04 - SaaS (Propagados 2026-01-13)
- MGN-016: Billing (Facturación SaaS)
- MGN-017: Plans (Planes de suscripción)
- MGN-018: Webhooks (Eventos webhook)
- MGN-019: Feature Flags (Toggles de funcionalidad)
### 6.2 Módulos Fase 05 - IA (Propagados 2026-01-13)
- MGN-020: AI Integration (Integración LLMs)
- MGN-021: WhatsApp Business (Mensajería)
- MGN-022: MCP Server (Servidor MCP)
Ver: `HERENCIA-ERP-CORE.md` para detalles completos.
## 7. Versionado
| Versión | Fecha | Cambios | | Versión | Fecha | Cambios |
|---------|-------|---------| |---------|-------|---------|
| 1.0 | 2026-01-04 | Creación inicial, herencia de erp-clinicas FASE-8 | | 1.0 | 2026-01-04 | Creación inicial, herencia de erp-clinicas FASE-8 |
| 1.1 | 2026-01-13 | Agregada herencia indirecta erp-core Fases 04-05 |
--- ---
**Última actualización:** 2026-01-04 **Última actualización:** 2026-01-13
**Propagación:** PROP-CORE-002

View File

@ -0,0 +1,139 @@
# Herencia ERP-CORE (Indirecta via ERP-Clínicas) - Clínica Veterinaria
## Información de Herencia
| Campo | Valor |
|-------|-------|
| **Proyecto:** | clinica-veterinaria |
| **Hereda de (directo):** | erp-clinicas |
| **Hereda de (indirecto):** | erp-core |
| **Cadena completa:** | template-saas -> erp-core -> erp-clinicas -> clinica-veterinaria |
| **Fecha actualización:** | 2026-01-13 |
| **Versión ERP-Core:** | 1.3.0 |
---
## 1. Cadena de Herencia
```
template-saas (PROVIDER - v1.2.1)
│ DEPENDS_ON
erp-core (INTERMEDIATE - v1.3.0)
│ EXTENDS
erp-clinicas (VERTICAL - v1.0.0)
│ SPECIALIZES
clinica-veterinaria (SUB-VERTICAL - v1.0.0) ← ESTE PROYECTO
```
## 2. Módulos Heredados de ERP-CORE (via erp-clinicas)
### 2.1 Fase 03 - Core ERP (17 módulos base)
| Código | Módulo | Descripción | Hereda |
|--------|--------|-------------|--------|
| MGN-001 | Auth | Autenticación JWT | ✅ |
| MGN-002 | Users | Gestión de usuarios | ✅ |
| MGN-003 | Roles | RBAC | ✅ |
| MGN-004 | Tenants | Multi-tenancy | ✅ |
| MGN-005 | Branches | Sucursales | ✅ |
| MGN-006 | Geo | Geolocalización | ✅ |
| MGN-007 | Mobile | APIs móviles | ✅ |
| MGN-008 | Terminals | Terminales de pago | ✅ |
| MGN-009 | Biometrics | Biométricos | ❌ No aplica |
| MGN-010 | Catalog | Catálogos | ✅ |
| MGN-011 | Products | Productos | ✅ |
| MGN-012 | Inventory | Inventario | ✅ |
| MGN-013 | Customers | Propietarios | ✅ |
| MGN-014 | Sales | Ventas | ✅ |
| MGN-015 | Invoicing | Facturación | ✅ |
### 2.2 Fase 04 - SaaS (4 módulos) - Propagados 2026-01-13
| Código | Módulo | Descripción | Hereda | Adaptación Veterinaria |
|--------|--------|-------------|--------|------------------------|
| MGN-016 | Billing | Facturación SaaS | ✅ | Planes para clínicas vet |
| MGN-017 | Plans | Planes de suscripción | ✅ | Básico/Pro/Hospital |
| MGN-018 | Webhooks | Eventos webhook | ✅ | Alertas vacunación |
| MGN-019 | Feature Flags | Toggles de funcionalidad | ✅ | Módulos opcionales |
### 2.3 Fase 05 - IA (3 módulos) - Propagados 2026-01-13
| Código | Módulo | Descripción | Hereda | Adaptación Veterinaria |
|--------|--------|-------------|--------|------------------------|
| MGN-020 | AI Integration | Integración LLMs | ✅ | Asistente diagnóstico vet |
| MGN-021 | WhatsApp Business | Mensajería WhatsApp | ✅ | Recordatorio vacunas |
| MGN-022 | MCP Server | Servidor MCP | ✅ | Tools veterinarios |
## 3. Adaptaciones Específicas Veterinaria
### 3.1 Terminología
| ERP-Core/Clínicas | Veterinaria |
|-------------------|-------------|
| Paciente | Mascota/Animal |
| Cliente | Propietario |
| Consulta | Consulta veterinaria |
| Tratamiento | Tratamiento veterinario |
| Prescripción | Receta veterinaria |
### 3.2 Módulos Específicos Veterinarios
| Código | Módulo | Descripción |
|--------|--------|-------------|
| VET-001 | Mascotas-Propietarios | Registro de animales y dueños |
| VET-002 | Vacunación | Control de vacunas |
| VET-003 | Desparasitaciones | Control de desparasitación |
| VET-004 | Hospitalización | Internamiento de animales |
| VET-005 | Estética | Servicios de estética canina |
| VET-006 | Farmacia | Farmacia veterinaria |
### 3.3 Adaptaciones IA para Veterinaria
| Funcionalidad IA | Uso Veterinario |
|------------------|-----------------|
| AI Integration | Diagnóstico por síntomas, dosis por peso |
| WhatsApp Business | Recordatorios de vacunas, seguimiento hospitalización |
| MCP Server | Tools: crear_cita_vet, cartilla_vacunacion, calcular_dosis |
## 4. Normativa Aplicable
| Normativa | Descripción |
|-----------|-------------|
| NOM-064-ZOO-2000 | Requisitos sanitarios clínicas veterinarias |
| NOM-051-ZOO-1995 | Trato humanitario de animales |
| NOM-046-ZOO-1995 | Sistema de identificación animal |
| SENASICA | Registro de establecimientos |
| SAGARPA | Regulaciones sanitarias |
## 5. Propagación
### 5.1 Estado de Propagación
| Tipo | Estado | Fecha |
|------|--------|-------|
| Documentación | ✅ Propagado | 2026-01-13 |
| Definiciones | ✅ Propagado | 2026-01-13 |
| Código | ⏳ Pendiente | - |
### 5.2 Referencia de Propagación
- ID: `PROP-CORE-002`
- Tipo: `bulk_propagation`
- Cadena: `erp-core -> erp-clinicas -> clinica-veterinaria`
## 6. Archivos Relacionados
- `HERENCIA-ERP-CLINICAS.md` - Herencia directa de erp-clinicas
- `../referencias/DEPENDENCIAS-ERP-CORE.yml` - Dependencias técnicas
- `docs/04-modelado/especificaciones-tecnicas-core/README.md` - Specs técnicas
---
**Última actualización:** 2026-01-13
**Propagación ID:** PROP-CORE-002

View File

@ -0,0 +1,191 @@
# Herencia SIMCO - clinica-veterinaria
**Sistema:** SIMCO v4.0.0 + CAPVED + SCRUM
**Fecha:** 2026-01-10
---
## Configuración del Proyecto
| Propiedad | Valor |
|-----------|-------|
| **Proyecto** | Clinica Veterinaria - Sistema para Clinicas Veterinarias |
| **Código v2** | CVT |
| **SIMCO Version** | 4.0.0 |
| **CAPVED** | Habilitado |
| **SCRUM** | Habilitado |
---
## Metodología CAPVED+SCRUM
Este proyecto utiliza la metodología integrada CAPVED+SCRUM definida en SIMCO v4.0.0.
### Ciclo CAPVED dentro de Sprint
```
Sprint Start
├── Sprint Planning (usar @TPL_SPRINT_PLANNING)
└── Por cada HU:
├── [C] Contexto → Cargar directivas, verificar DoR
├── [A] Análisis → Analizar requerimientos
├── [P] Plan → Planificar implementación
├── [V] Validación → Validar plan técnico
├── [E] Ejecución → Implementar código
└── [D] Documentar → Actualizar docs, verificar DoD
├── Sprint Review
└── Sprint Retrospective (usar @TPL_RETROSPECTIVA)
```
---
## Directivas SCRUM (SIMCO v4.0.0)
### Ejecución de Sprint
| Alias | Directiva | Propósito |
|-------|-----------|-----------|
| `@SPRINT_EXECUTION` | `SIMCO-SPRINT-EXECUTION.md` | Ciclo completo de Sprint |
| `@AGILE_METRICS` | `SIMCO-AGILE-METRICS.md` | Métricas Velocity, Burndown |
| `@SCRUM_INTEGRATION` | `SIMCO-SCRUM-INTEGRATION.md` | Integración CAPVED+SCRUM |
### Definition of Ready (DoR)
| Criterio | Descripción |
|----------|-------------|
| ID asignado | `CVT-US-NNN` |
| Historia completa | Como/Quiero/Para |
| Criterios de aceptación | 3-8 criterios |
| Story Points | Fibonacci (1,2,3,5,8,13) |
| Dependencias identificadas | Sin bloqueos |
| PO aprobado | ✓ |
### Definition of Done (DoD)
| Criterio | Descripción |
|----------|-------------|
| Código implementado | Según especificación |
| Build pasa | Sin errores |
| Tests pasando | Unitarios + integración |
| Code review | Completado |
| Documentación | Actualizada |
| TRACEABILITY.yml | Actualizado |
### Templates SCRUM
| Alias | Template | Uso |
|-------|----------|-----|
| `@TPL_DEFINICION_READY` | `TEMPLATE-DEFINICION-READY.md` | Validar DoR de HU |
| `@TPL_SPRINT_BACKLOG` | `TEMPLATE-SPRINT-BACKLOG.yml` | Tracking de Sprint |
| `@TPL_RETROSPECTIVA` | `TEMPLATE-RETROSPECTIVA.yml` | Retro Start-Stop-Continue |
| `@TPL_SPRINT_PLANNING` | `TEMPLATE-ACTA-SPRINT-PLANNING.md` | Acta de Planning |
### Checklist DoD/DoR
| Alias | Checklist | Items |
|-------|-----------|-------|
| `@CHK_DOD_DOR` | `CHECKLIST-DOD-DOR.md` | 32 items |
---
## Directivas CAPVED (Heredadas)
### Ciclo de Vida
| Alias | Archivo | Propósito |
|-------|---------|-----------|
| `@TAREA` | `SIMCO-TAREA.md` | Punto de entrada |
| `@CAPVED` | `PRINCIPIO-CAPVED.md` | Ciclo de 6 fases |
| `@INICIALIZACION` | `SIMCO-INICIALIZACION.md` | Bootstrap de agentes |
### Operaciones
| Alias | Archivo | Propósito |
|-------|---------|-----------|
| `@CREAR` | `SIMCO-CREAR.md` | Crear archivos |
| `@MODIFICAR` | `SIMCO-MODIFICAR.md` | Modificar archivos |
| `@VALIDAR` | `SIMCO-VALIDAR.md` | Validar código |
| `@DOCUMENTAR` | `SIMCO-DOCUMENTAR.md` | Documentar trabajo |
| `@BUSCAR` | `SIMCO-BUSCAR.md` | Buscar información |
---
## Directivas de Documentación
| Alias | Directiva | Propósito |
|-------|-----------|-----------|
| `@DOC_PROYECTO` | `SIMCO-DOCUMENTACION-PROYECTO.md` | Estructura docs/ |
| `@NOMENCLATURA` | `SIMCO-NOMENCLATURA.md` | Convenciones de IDs |
| `@ESTRUCTURA_DOCS` | `SIMCO-ESTRUCTURA-DOCS.md` | Estructura interna |
| `@INVENTARIOS` | `SIMCO-INVENTARIOS.md` | Inventarios YAML |
| `@MANTENIMIENTO_DOCS` | `SIMCO-MANTENIMIENTO-DOCUMENTACION.md` | Ciclo mantenimiento |
| `@SYNC_BD` | `SIMCO-SINCRONIZACION-BD.md` | Sincronización BD↔Docs |
---
## Trazabilidad v2
### TRACEABILITY-MASTER.yml
Ubicación: `docs/04-modelado/trazabilidad/TRACEABILITY-MASTER.yml`
Este archivo consolida:
- Mapeo de nomenclatura v1 → v2
- Lista de épicas con estados
- Grafo de dependencias
- Health score del proyecto
### Nomenclatura v2
| Tipo | Formato | Ejemplo |
|------|---------|---------|
| Épica | `CVT-EP-NNN` | CVT-EP-001 |
| Requerimiento | `CVT-RF-NNN` | CVT-RF-001 |
| User Story | `CVT-US-NNN` | CVT-US-001 |
| Tarea | `CVT-TT-NNN` | CVT-TT-001 |
| Bug | `CVT-BG-NNN` | CVT-BG-001 |
---
## Flujo de Trabajo Sprint
```yaml
# Sprint Planning
1. Cargar: @SPRINT_EXECUTION
2. Seleccionar HUs del backlog
3. Validar DoR con @CHK_DOD_DOR
4. Estimar con Planning Poker
5. Crear Sprint Backlog con @TPL_SPRINT_BACKLOG
# Durante Sprint (por HU)
1. Cargar: @TAREA + @CAPVED
2. Ejecutar ciclo CAPVED
3. Validar DoD con @CHK_DOD_DOR
4. Actualizar TRACEABILITY.yml
# Sprint Review
1. Demo de funcionalidades
2. Actualizar @AGILE_METRICS
# Sprint Retrospective
1. Usar @TPL_RETROSPECTIVA
2. Registrar Start-Stop-Continue
3. Crear action items
```
---
## Referencias
- Directivas SIMCO: `workspace-v2/orchestration/directivas/simco/`
- Templates SCRUM: `workspace-v2/orchestration/templates/scrum/`
- Checklists: `workspace-v2/orchestration/checklists/`
- TRACEABILITY-MASTER: `docs/04-modelado/trazabilidad/TRACEABILITY-MASTER.yml`
---
**Sistema:** SIMCO v4.0.0 + CAPVED + SCRUM
**Última actualización:** 2026-01-10

186
orchestration/BOOTLOADER.md Normal file
View File

@ -0,0 +1,186 @@
# BOOTLOADER - Clinica Veterinaria
**Sistema:** NEXUS v4.0 - Protocolo de Arranque Local
**Proyecto:** Clinica Veterinaria
**Tipo:** SUB-CONSUMER (Especializa erp-clinicas)
**Version:** 1.0.0
**Fecha:** 2026-01-24
---
## 1. Proposito
Este BOOTLOADER define la secuencia de arranque para Clinica Veterinaria.
Sub-vertical especializada en veterinaria que hereda de erp-clinicas.
---
## 2. Cadena de Herencia
```
workspace-v2 (L0)
template-saas (PROVIDER)
erp-core (INTERMEDIATE)
erp-clinicas (CONSUMER)
clinica-veterinaria (SUB-CONSUMER) ◄── ESTE PROYECTO
```
---
## 3. Secuencia de Arranque (5 Pasos)
```
┌─────────────────────────────────────────────────────────────────────────┐
│ BOOTLOADER CLINICA-VETERINARIA - 5 PASOS │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ PASO 1: Cargar L0 (Sistema - Workspace) │
│ ════════════════════════════════════════ │
│ ├── Leer workspace-v2/CLAUDE.md │
│ └── Tokens: ~4000 │
│ │ │
│ ▼ │
│ PASO 2: Cargar L1 (Proyecto) │
│ ════════════════════════════════════════ │
│ ├── Leer orchestration/CONTEXT-MAP.yml │
│ ├── Leer orchestration/_inheritance.yml (SUB-CONSUMER) │
│ └── Tokens: ~2000 │
│ │ │
│ ▼ │
│ PASO 3: Verificar Bloqueos de Herencia │
│ ════════════════════════════════════════ │
│ ├── VERIFICAR: erp-clinicas >= 50% │
│ ├── Si NO: Solo documentacion permitida │
│ └── Si SI: Desarrollo habilitado │
│ │ │
│ ▼ │
│ PASO 4: Determinar Dominio │
│ ════════════════════════════════════════ │
│ ├── ¿Modulo mascotas? │
│ ├── ¿Modulo vacunacion? │
│ ├── ¿Modulo desparasitaciones? │
│ ├── ¿Modulo hospitalizacion? │
│ ├── ¿Modulo estetica-canina? │
│ └── ¿Modulo farmacia-veterinaria? │
│ │ │
│ ▼ │
│ PASO 5: Iniciar Tarea │
│ ════════════════════════════════════════ │
│ ├── git fetch origin && git status │
│ └── Ejecutar FASE C de CAPVED │
│ │
└─────────────────────────────────────────────────────────────────────────┘
```
---
## 4. Rol SUB-CONSUMER (Especializa)
Clinica Veterinaria especializa erp-clinicas para veterinaria:
```yaml
herencia:
parent: erp-clinicas
tipo: SPECIALIZES
especializacion: veterinaria
cadena: "template-saas -> erp-core -> erp-clinicas -> clinica-veterinaria"
modulos_heredados:
de_template_saas: [auth, tenants, billing, notifications]
de_erp_core: [catalogs, inventory]
de_erp_clinicas: [pacientes*, citas, expedientes*, prescripciones]
# * adaptados para mascotas
modulos_propios:
- mascotas # Registro de mascotas (30%)
- vacunacion # Control de vacunas (25%)
- desparasitaciones # Control desparasitacion (20%)
- hospitalizacion # Cuidados intensivos (20%)
- estetica-canina # Grooming (15%)
- farmacia-veterinaria # Medicamentos vet (20%)
```
---
## 5. Bloqueos Activos
```yaml
bloqueo_activo:
regla: "BLOCK-002"
descripcion: "No puede avanzar si erp-clinicas < 50%"
estado_actual: "erp-clinicas al 10%"
acciones_permitidas:
- Documentacion de requerimientos
- Definicion de tablas DDL (sub_veterinaria.*)
- Planeacion de modulos
acciones_bloqueadas:
- Implementacion de codigo
- Testing
- Integracion con erp-clinicas
```
---
## 6. Variables Pre-Resueltas
```yaml
PROJECT_ROOT: projects/clinica-veterinaria
PARENT_PROJECT: projects/erp-clinicas
SCHEMA_PREFIX: sub_veterinaria
COMPLETITUD: ~25%
BLOQUEADO: true (hasta erp-clinicas >= 50%)
```
---
## 7. Normativa Aplicable
```yaml
normativa:
- nombre: "NOM-064-ZOO-2000"
descripcion: "Requisitos para establecimientos de atencion medica veterinaria"
aplica_a: ["todos"]
- nombre: "NOM-051-ZOO-1995"
descripcion: "Trato humanitario en movilizacion de animales"
aplica_a: ["hospitalizacion"]
- nombre: "SENASICA"
descripcion: "Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria"
aplica_a: ["vacunacion", "farmacia-veterinaria"]
```
---
## 8. Checklist de Arranque
- [ ] PASO 1: workspace-v2/CLAUDE.md leido
- [ ] PASO 2: CONTEXT-MAP.yml cargado
- [ ] PASO 2: _inheritance.yml verificado
- [ ] PASO 3: Estado de erp-clinicas verificado
- [ ] PASO 3: Bloqueo confirmado si aplica
- [ ] PASO 4: Dominio identificado
- [ ] PASO 5: Tarea iniciada (solo si permitido)
---
## 9. Referencias
- **BOOTLOADER Global:** `workspace-v2/orchestration/directivas/simco/SIMCO-BOOTLOADER.md`
- **Parent (erp-clinicas):** `../erp-clinicas/orchestration/BOOTLOADER.md`
- **CONTEXT-MAP:** `orchestration/CONTEXT-MAP.yml`
---
*BOOTLOADER Clinica Veterinaria v1.0.0 - Sistema NEXUS v4.0*
*Tipo: SUB-CONSUMER - Especializa erp-clinicas (veterinaria)*

View File

@ -9,9 +9,9 @@ metadata:
nivel: "VERTICAL" nivel: "VERTICAL"
version: "1.0.0" version: "1.0.0"
ultima_actualizacion: "2026-01-07" ultima_actualizacion: "2026-01-07"
workspace_root: "/home/isem/workspace-v1" workspace_root: "/home/isem/workspace-v2"
project_root: "/home/isem/workspace-v1/projects/clinica-veterinaria" project_root: "/home/isem/workspace-v2/projects/clinica-veterinaria"
hereda_de: "/home/isem/workspace-v1/projects/erp-clinicas" hereda_de: "/home/isem/workspace-v2/projects/erp-clinicas"
# =============================================================================== # ===============================================================================
# VARIABLES DEL PROYECTO (PRE-RESUELTAS) # VARIABLES DEL PROYECTO (PRE-RESUELTAS)
@ -26,23 +26,23 @@ variables:
# Base de datos # Base de datos
DB_NAME: "clinica_veterinaria" DB_NAME: "clinica_veterinaria"
DB_DDL_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database/schemas" DB_DDL_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database/schemas"
DB_SCRIPTS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database" DB_SCRIPTS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database"
DB_SEEDS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database/seeds" DB_SEEDS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database/seeds"
RECREATE_CMD: "drop-and-recreate-database.sh" RECREATE_CMD: "drop-and-recreate-database.sh"
# Backend # Backend
BACKEND_ROOT: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend" BACKEND_ROOT: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend"
BACKEND_SRC: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/src" BACKEND_SRC: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/src"
BACKEND_TESTS: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/tests" BACKEND_TESTS: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/tests"
# Frontend # Frontend
FRONTEND_ROOT: "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend" FRONTEND_ROOT: "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend"
FRONTEND_SRC: "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend/src" FRONTEND_SRC: "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend/src"
# Documentacion # Documentacion
DOCS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/docs" DOCS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/docs"
ORCHESTRATION_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration" ORCHESTRATION_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration"
# =============================================================================== # ===============================================================================
# ALIASES RESUELTOS # ALIASES RESUELTOS
@ -50,32 +50,32 @@ variables:
aliases: aliases:
# Directivas globales # Directivas globales
"@SIMCO": "/home/isem/workspace-v1/orchestration/directivas/simco" "@SIMCO": "/home/isem/workspace-v2/orchestration/directivas/simco"
"@PRINCIPIOS": "/home/isem/workspace-v1/orchestration/directivas/principios" "@PRINCIPIOS": "/home/isem/workspace-v2/orchestration/directivas/principios"
"@PERFILES": "/home/isem/workspace-v1/orchestration/agents/perfiles" "@PERFILES": "/home/isem/workspace-v2/orchestration/agents/perfiles"
"@CATALOG": "/home/isem/workspace-v1/shared/catalog" "@CATALOG": "/home/isem/workspace-v2/shared/catalog"
# Proyecto padre (erp-clinicas) # Proyecto padre (erp-clinicas)
"@PARENT": "/home/isem/workspace-v1/projects/erp-clinicas" "@PARENT": "/home/isem/workspace-v2/projects/erp-clinicas"
"@PARENT_CORE": "/home/isem/workspace-v1/projects/erp-core" "@PARENT_CORE": "/home/isem/workspace-v2/projects/erp-core"
# Proyecto especifico # Proyecto especifico
"@DDL": "/home/isem/workspace-v1/projects/clinica-veterinaria/database/schemas" "@DDL": "/home/isem/workspace-v2/projects/clinica-veterinaria/database/schemas"
"@SEEDS": "/home/isem/workspace-v1/projects/clinica-veterinaria/database/seeds" "@SEEDS": "/home/isem/workspace-v2/projects/clinica-veterinaria/database/seeds"
"@BACKEND": "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/src" "@BACKEND": "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/src"
"@FRONTEND": "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend/src" "@FRONTEND": "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend/src"
"@DOCS": "/home/isem/workspace-v1/projects/clinica-veterinaria/docs" "@DOCS": "/home/isem/workspace-v2/projects/clinica-veterinaria/docs"
# Inventarios # Inventarios
"@INVENTORY": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios" "@INVENTORY": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios"
"@INV_DB": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml" "@INV_DB": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
"@INV_BE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml" "@INV_BE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
"@INV_FE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml" "@INV_FE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
# Trazas # Trazas
"@TRAZA_DB": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-DATABASE.md" "@TRAZA_DB": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-DATABASE.md"
"@TRAZA_BE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-BACKEND.md" "@TRAZA_BE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-BACKEND.md"
"@TRAZA_FE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-FRONTEND.md" "@TRAZA_FE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-FRONTEND.md"
# =============================================================================== # ===============================================================================
# CONTEXTO POR NIVEL # CONTEXTO POR NIVEL
@ -87,25 +87,25 @@ contexto_por_nivel:
tokens_estimados: 4500 tokens_estimados: 4500
obligatorio: true obligatorio: true
archivos: archivos:
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-CAPVED.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-CAPVED.md"
proposito: "Ciclo de vida de tareas" proposito: "Ciclo de vida de tareas"
tokens: 800 tokens: 800
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md"
proposito: "Documentacion antes de codigo" proposito: "Documentacion antes de codigo"
tokens: 500 tokens: 500
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md"
proposito: "Verificar catalogo antes de crear" proposito: "Verificar catalogo antes de crear"
tokens: 600 tokens: 600
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md"
proposito: "Build/lint deben pasar" proposito: "Build/lint deben pasar"
tokens: 600 tokens: 600
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md"
proposito: "Limites de contexto" proposito: "Limites de contexto"
tokens: 500 tokens: 500
- path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-NO-ASUMIR.md" - path: "/home/isem/workspace-v2/orchestration/directivas/principios/PRINCIPIO-NO-ASUMIR.md"
proposito: "Preguntar si falta informacion" proposito: "Preguntar si falta informacion"
tokens: 500 tokens: 500
- path: "/home/isem/workspace-v1/orchestration/referencias/ALIASES.yml" - path: "/home/isem/workspace-v2/orchestration/referencias/ALIASES.yml"
proposito: "Resolucion de @ALIAS" proposito: "Resolucion de @ALIAS"
tokens: 400 tokens: 400
@ -114,13 +114,13 @@ contexto_por_nivel:
tokens_estimados: 3000 tokens_estimados: 3000
obligatorio: true obligatorio: true
archivos: archivos:
- path: "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" - path: "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/00-guidelines/CONTEXTO-PROYECTO.md"
proposito: "Variables y configuracion del proyecto" proposito: "Variables y configuracion del proyecto"
tokens: 1500 tokens: 1500
- path: "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/PROXIMA-ACCION.md" - path: "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/PROXIMA-ACCION.md"
proposito: "Estado actual y siguiente paso" proposito: "Estado actual y siguiente paso"
tokens: 500 tokens: 500
- path: "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md" - path: "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md"
proposito: "Herencia de modulos del padre" proposito: "Herencia de modulos del padre"
tokens: 800 tokens: 800
@ -129,23 +129,23 @@ contexto_por_nivel:
tokens_estimados: 2500 tokens_estimados: 2500
archivos_por_operacion: archivos_por_operacion:
CREAR: CREAR:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-CREAR.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-CREAR.md"
MODIFICAR: MODIFICAR:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-MODIFICAR.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-MODIFICAR.md"
VALIDAR: VALIDAR:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-VALIDAR.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-VALIDAR.md"
DELEGAR: DELEGAR:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DELEGACION.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-DELEGACION.md"
archivos_por_dominio: archivos_por_dominio:
DDL: DDL:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DDL.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-DDL.md"
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml" - "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
BACKEND: BACKEND:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-BACKEND.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-BACKEND.md"
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml" - "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
FRONTEND: FRONTEND:
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-FRONTEND.md" - "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-FRONTEND.md"
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml" - "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
L3_tarea: L3_tarea:
descripcion: "Contexto especifico de la tarea" descripcion: "Contexto especifico de la tarea"
@ -305,9 +305,9 @@ validacion_tokens:
herencia: herencia:
tipo: "VERTICAL" tipo: "VERTICAL"
hereda_de: hereda_de:
- "/home/isem/workspace-v1/projects/erp-clinicas/" - "/home/isem/workspace-v2/projects/erp-clinicas/"
- "/home/isem/workspace-v1/projects/erp-core/" - "/home/isem/workspace-v2/projects/erp-core/"
- "/home/isem/workspace-v1/orchestration/" - "/home/isem/workspace-v2/orchestration/"
# =============================================================================== # ===============================================================================
# BUSQUEDA DE HISTORICO # BUSQUEDA DE HISTORICO
@ -316,7 +316,7 @@ herencia:
busqueda_historico: busqueda_historico:
habilitado: true habilitado: true
ubicaciones: ubicaciones:
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/" - "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/"
- "/home/isem/workspace-v1/projects/erp-clinicas/orchestration/trazas/" - "/home/isem/workspace-v2/projects/erp-clinicas/orchestration/trazas/"
- "/home/isem/workspace-v1/orchestration/errores/REGISTRO-ERRORES.yml" - "/home/isem/workspace-v2/orchestration/errores/REGISTRO-ERRORES.yml"
- "/home/isem/workspace-v1/shared/knowledge-base/lessons-learned/" - "/home/isem/workspace-v2/shared/knowledge-base/lessons-learned/"

View File

@ -0,0 +1,193 @@
# Grafo de Dependencias del Proyecto
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
fecha_creacion: "2026-01-16"
# ============================================================================
# DEPENDENCIAS EXTERNAS (NPM, etc.)
# ============================================================================
dependencias_externas:
backend:
framework: "NestJS"
version: "^10.0.0"
estado: "planificado"
principales:
- nombre: "@nestjs/core"
version: "^10.0.0"
uso: "Framework core"
- nombre: "@nestjs/typeorm"
version: "^10.0.0"
uso: "ORM"
- nombre: "typeorm"
version: "^0.3.0"
uso: "ORM para PostgreSQL"
- nombre: "@nestjs/jwt"
version: "^10.0.0"
uso: "Autenticacion JWT"
frontend:
framework: "React"
version: "^18.0.0"
estado: "planificado"
principales:
- nombre: "react"
version: "^18.0.0"
- nombre: "react-router-dom"
version: "^6.0.0"
- nombre: "zustand"
version: "^4.0.0"
uso: "State management"
database:
tipo: "PostgreSQL"
version: "15+"
orm: "TypeORM"
estado: "activo"
# ============================================================================
# DEPENDENCIAS INTERNAS (Entre modulos del proyecto)
# ============================================================================
dependencias_internas:
modulos:
VET-001_mascotas:
depende_de:
- "MGN-002 (Tenants)"
dependientes:
- "VET-002 (Vacunacion)"
- "VET-003 (Desparasitaciones)"
- "VET-004 (Hospitalizacion)"
- "VET-005 (Estetica)"
- "VET-006 (Farmacia)"
VET-002_vacunacion:
depende_de:
- "VET-001 (Mascotas)"
dependientes: []
VET-003_desparasitaciones:
depende_de:
- "VET-001 (Mascotas)"
dependientes: []
VET-004_hospitalizacion:
depende_de:
- "VET-001 (Mascotas)"
- "CLN-003 (Consultations)"
dependientes: []
VET-005_estetica:
depende_de:
- "VET-001 (Mascotas)"
dependientes: []
VET-006_farmacia:
depende_de:
- "VET-001 (Mascotas)"
- "CLN-003 (Consultations)"
dependientes: []
# ============================================================================
# DEPENDENCIAS DE WORKSPACE
# ============================================================================
dependencias_workspace:
definiciones:
- "@WS_DEF_CCA"
- "@WS_DEF_CAPVED"
- "@WS_DEF_VAL_BE"
- "@WS_DEF_VAL_FE"
- "@WS_DEF_VAL_DDL"
catalogos:
- "shared/catalog/auth/"
- "shared/catalog/multi-tenancy/"
- "shared/catalog/notifications/"
# ============================================================================
# DEPENDENCIAS DE OTROS PROYECTOS (Herencia)
# ============================================================================
dependencias_proyectos:
- proyecto: "erp-core"
tipo: "herencia indirecta (via erp-clinicas)"
nivel: 1
modulos:
- "MGN-001 (Authentication)"
- "MGN-002 (Tenants)"
- "MGN-003 (Users)"
- "MGN-004 (Audit)"
- proyecto: "erp-clinicas"
tipo: "herencia directa"
nivel: 2
modulos:
- "CLN-001 (Doctors)"
- "CLN-002 (Appointments)"
- "CLN-003 (Consultations)"
# ============================================================================
# GRAFO VISUAL
# ============================================================================
grafo:
formato: "mermaid"
diagrama: |
graph TD
subgraph "erp-core (Nivel 1)"
AUTH[MGN-001 Auth]
TENANTS[MGN-002 Tenants]
USERS[MGN-003 Users]
end
subgraph "erp-clinicas (Nivel 2)"
DOCTORS[CLN-001 Doctors]
APPTS[CLN-002 Appointments]
CONSULT[CLN-003 Consultations]
end
subgraph "clinica-veterinaria (Nivel 3)"
MASC[VET-001 Mascotas]
VAC[VET-002 Vacunacion]
DESP[VET-003 Desparasitaciones]
HOSP[VET-004 Hospitalizacion]
EST[VET-005 Estetica]
FARM[VET-006 Farmacia]
end
%% Herencia
AUTH --> DOCTORS
TENANTS --> DOCTORS
DOCTORS --> MASC
CONSULT --> HOSP
CONSULT --> FARM
%% Dependencias internas
MASC --> VAC
MASC --> DESP
MASC --> HOSP
MASC --> EST
MASC --> FARM
# ============================================================================
# MATRIZ DE DEPENDENCIAS INTERNAS
# ============================================================================
matriz:
filas: ["VET-001", "VET-002", "VET-003", "VET-004", "VET-005", "VET-006"]
columnas: ["VET-001", "VET-002", "VET-003", "VET-004", "VET-005", "VET-006", "CLN-003"]
datos:
VET-001: ["-", "", "", "", "", "", ""]
VET-002: ["X", "-", "", "", "", "", ""]
VET-003: ["X", "", "-", "", "", "", ""]
VET-004: ["X", "", "", "-", "", "", "X"]
VET-005: ["X", "", "", "", "-", "", ""]
VET-006: ["X", "", "", "", "", "-", "X"]
# ============================================================================
# ESTADISTICAS
# ============================================================================
estadisticas:
total_dependencias_externas: 8
total_dependencias_internas: 7
total_dependencias_workspace: 5
total_dependencias_proyectos: 2
ultima_actualizacion: "2026-01-16"

View File

@ -0,0 +1,404 @@
# ===============================================================================
# MAPA DE DOCUMENTACION - CLINICA VETERINARIA
# ===============================================================================
#
# Proposito: Centro de referencias a toda la documentacion del proyecto
# Alias: @VET_MAPA_DOC
# Tipo: SUB-VERTICAL (hereda de erp-clinicas)
#
# ===============================================================================
version: "1.0.0"
created: "2026-01-16"
updated: "2026-01-16"
proyecto: "clinica-veterinaria"
tipo: "SUB-VERTICAL"
nivel: 3
# -------------------------------------------------------------------------------
# CADENA DE HERENCIA COMPLETA
# -------------------------------------------------------------------------------
cadena_herencia:
origen:
proyecto: "template-saas"
tipo: "PROVIDER"
nivel: 0
alias: "@TS_MAPA_DOC"
ubicacion: "projects/template-saas/orchestration/MAPA-DOCUMENTACION.yml"
abuelo:
proyecto: "erp-core"
tipo: "INTERMEDIATE"
nivel: 1
alias: "@ERP_MAPA_DOC"
ubicacion: "projects/erp-core/orchestration/MAPA-DOCUMENTACION.yml"
padre:
proyecto: "erp-clinicas"
tipo: "CONSUMER"
nivel: 2
alias: "@CLINICAS_MAPA_DOC"
ubicacion: "projects/erp-clinicas/orchestration/MAPA-DOCUMENTACION.yml"
actual:
proyecto: "clinica-veterinaria"
tipo: "SUB-VERTICAL"
nivel: 3
alias: "@VET_MAPA_DOC"
especializacion: "Veterinaria"
# -------------------------------------------------------------------------------
# DOCUMENTACION DE USUARIO (docs/)
# -------------------------------------------------------------------------------
docs:
raiz:
README.md:
alias: "@VET_README"
descripcion: "Punto de entrada del proyecto"
_MAP.md:
alias: "@VET_MAP"
descripcion: "Mapa maestro de navegacion"
vision:
ruta: "docs/00-vision-general/"
alias: "@VET_VISION"
archivos:
- VISION-CLINICA-VETERINARIA.md
- ARQUITECTURA-VETERINARIA.md
modulos:
ruta: "docs/01-modulos/"
alias: "@VET_MODULOS"
patron: "CVT-{NNN}-{nombre}.md"
archivos:
- CVT-001-Mascotas.md
- CVT-002-Vacunacion.md
- CVT-003-Desparasitaciones.md
- CVT-004-Hospitalizacion.md
- CVT-005-Estetica-Canina.md
- CVT-006-Farmacia-Veterinaria.md
normativa:
ruta: "docs/02-normativa/"
alias: "@VET_NORMATIVA"
archivos:
- NOM-064-ZOO-2000-Implementacion.md
- NOM-051-ZOO-1995-Trato-Humanitario.md
- SENASICA-Registro-Biologicos.md
definitions:
ruta: "docs/_definitions/"
alias: "@VET_DEF"
archivos:
_INDEX.yml:
alias: "@VET_DEF_INDEX"
DATABASE-SCHEMA.md:
alias: "@VET_DEF_DB"
descripcion: "Schema sub_veterinaria (15+ tablas)"
ENTITIES-CATALOG.md:
alias: "@VET_DEF_ENTITIES"
descripcion: "Catalogo de entities veterinarias"
SERVICES-CATALOG.md:
alias: "@VET_DEF_SERVICES"
descripcion: "Catalogo de services veterinarios"
MODULES-CATALOG.md:
alias: "@VET_DEF_MODULES"
descripcion: "Catalogo de 6 modulos CVT"
quick:
ruta: "docs/_quick/"
alias: "@VET_QUICK"
archivos:
QUICK-INDEX.yml:
alias: "@VET_QUICK_INDEX"
QUICK-MODULES.yml:
alias: "@VET_QUICK_MODULES"
QUICK-DATABASE.yml:
alias: "@VET_QUICK_DATABASE"
QUICK-API.yml:
alias: "@VET_QUICK_API"
# -------------------------------------------------------------------------------
# DOCUMENTACION OPERACIONAL (orchestration/)
# -------------------------------------------------------------------------------
orchestration:
raiz:
_MAP.md:
alias: "@VET_ORCH_MAP"
PROJECT-STATUS.md:
alias: "@VET_STATUS"
descripcion: "Estado actual del proyecto"
PROXIMA-ACCION.md:
alias: "@VET_NEXT"
descripcion: "Siguiente tarea a ejecutar"
trazabilidad:
TRACEABILITY.yml:
alias: "@VET_TRACEABILITY"
descripcion: "Trazabilidad de 6 modulos CVT"
DEPENDENCY-GRAPH.yml:
alias: "@VET_DEP_GRAPH"
descripcion: "Grafo de dependencias"
CONTEXT-MAP.yml:
alias: "@VET_CONTEXT"
descripcion: "Mapeo de contexto"
_inheritance.yml:
alias: "@VET_INHERITANCE"
descripcion: "Herencia: SUB-VERTICAL nivel 3"
MAPA-DOCUMENTACION.yml:
alias: "@VET_MAPA_DOC"
descripcion: "Este archivo"
inventarios:
ruta: "orchestration/inventarios/"
alias: "@VET_INV"
archivos:
MASTER_INVENTORY.yml:
alias: "@VET_INV_MASTER"
DATABASE_INVENTORY.yml:
alias: "@VET_INV_DB"
BACKEND_INVENTORY.yml:
alias: "@VET_INV_BE"
FRONTEND_INVENTORY.yml:
alias: "@VET_INV_FE"
directivas:
ruta: "orchestration/directivas/"
alias: "@VET_DIRECTIVAS"
hereda_de: "@CLINICAS_DIRECTIVAS"
archivos:
- TRIGGER-COHERENCIA-CAPAS.md
- TRIGGER-INVENTARIOS.md
agentes:
ruta: "orchestration/agents/"
alias: "@VET_AGENTS"
archivos:
perfiles:
_INDEX.yml:
alias: "@VET_AGENTS_INDEX"
PERFIL-VETERINARIO-AGENT.yml:
alias: "@VET_AGENT_VETERINARIO"
PERFIL-DDL-VET-AGENT.yml:
alias: "@VET_AGENT_DDL"
trazas:
ruta: "orchestration/agents/trazas/"
referencias:
ruta: "orchestration/referencias/"
alias: "@VET_REFS"
environment:
ruta: "orchestration/environment/"
alias: "@VET_ENV"
# -------------------------------------------------------------------------------
# REFERENCIAS AL WORKSPACE Y CADENA
# -------------------------------------------------------------------------------
referencias_cadena:
template_saas:
mapa: "@TS_MAPA_DOC"
ubicacion: "projects/template-saas/orchestration/MAPA-DOCUMENTACION.yml"
hereda:
- "Directivas base"
- "Estructura de inventarios"
- "Perfiles de agentes base"
erp_core:
mapa: "@ERP_MAPA_DOC"
ubicacion: "projects/erp-core/orchestration/MAPA-DOCUMENTACION.yml"
hereda:
- "23 modulos MGN"
- "Triggers de coherencia"
- "Modelo multi-tenant"
erp_clinicas:
mapa: "@CLINICAS_MAPA_DOC"
ubicacion: "projects/erp-clinicas/orchestration/MAPA-DOCUMENTACION.yml"
hereda:
- "Modulos de pacientes (adaptados), citas, expedientes"
- "Directivas clinicas"
- "Normativa salud base"
workspace:
archivo: "orchestration/_refs/WS-REFERENCES.yml"
alias: "@VET_WS_REFS"
contenido:
- "@WS_DIRECTIVAS"
- "@WS_PERFILES"
- "@WS_TEMPLATES"
- "@WS_DEFINITIONS"
# -------------------------------------------------------------------------------
# MODULOS CVT (CLINICA VETERINARIA)
# -------------------------------------------------------------------------------
modulos_cvt:
CVT-001:
nombre: "Mascotas"
estado: "30%"
alias: "@VET_MOD_MASCOTAS"
normativa: "NOM-064-ZOO-2000"
CVT-002:
nombre: "Vacunacion"
estado: "25%"
alias: "@VET_MOD_VACUNACION"
normativa: "SENASICA"
CVT-003:
nombre: "Desparasitaciones"
estado: "20%"
alias: "@VET_MOD_DESPARASITACION"
CVT-004:
nombre: "Hospitalizacion"
estado: "20%"
alias: "@VET_MOD_HOSPITALIZACION"
normativa: "NOM-051-ZOO-1995"
CVT-005:
nombre: "Estetica Canina"
estado: "15%"
alias: "@VET_MOD_ESTETICA"
CVT-006:
nombre: "Farmacia Veterinaria"
estado: "20%"
alias: "@VET_MOD_FARMACIA"
normativa: "SENASICA"
# -------------------------------------------------------------------------------
# NORMATIVA APLICABLE
# -------------------------------------------------------------------------------
normativa:
obligatoria:
- codigo: "NOM-064-ZOO-2000"
nombre: "Requisitos para establecimientos de atencion medica veterinaria"
aplica_a: ["CVT-001", "todos"]
alias: "@VET_NOM_064"
- codigo: "NOM-051-ZOO-1995"
nombre: "Trato humanitario en movilizacion de animales"
aplica_a: ["CVT-004"]
alias: "@VET_NOM_051"
- codigo: "SENASICA"
nombre: "Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria"
aplica_a: ["CVT-002", "CVT-006"]
alias: "@VET_SENASICA"
complementaria:
- codigo: "NOM-033-SAG/ZOO-2014"
nombre: "Metodos para dar muerte a animales domesticos y silvestres"
aplica_a: ["procedimientos-terminales"]
- codigo: "NOM-012-ZOO-1993"
nombre: "Especificaciones para la regulacion de productos quimicos"
aplica_a: ["CVT-006"]
# -------------------------------------------------------------------------------
# ESPECIES SOPORTADAS
# -------------------------------------------------------------------------------
especies:
domesticas:
- codigo: "CAN"
nombre: "Canino"
alias: "@VET_ESP_CANINO"
vacunas_basicas: ["rabia", "parvovirus", "moquillo", "leptospira"]
- codigo: "FEL"
nombre: "Felino"
alias: "@VET_ESP_FELINO"
vacunas_basicas: ["rabia", "triple_felina", "leucemia_felina"]
menores:
- codigo: "AVE"
nombre: "Aves"
alias: "@VET_ESP_AVE"
- codigo: "ROE"
nombre: "Roedores"
alias: "@VET_ESP_ROEDOR"
exoticas:
- codigo: "REP"
nombre: "Reptiles"
consideraciones: "Requiere MVZ especializado"
- codigo: "HUR"
nombre: "Hurones"
- codigo: "CON"
nombre: "Conejos"
# -------------------------------------------------------------------------------
# ESTADISTICAS
# -------------------------------------------------------------------------------
estadisticas:
docs:
total_archivos: TBD
carpetas: 8
modulos_documentados: 6
orchestration:
total_archivos: 15
inventarios: 4
trazas: 1
perfiles_agentes: 2
triggers: 2
total_aliases: 55+
cobertura_documentacion: "80%"
ultima_auditoria: "2026-01-16"
# -------------------------------------------------------------------------------
# NAVEGACION RAPIDA POR ROL
# -------------------------------------------------------------------------------
por_rol:
veterinario:
inicio: "@VET_NORMATIVA"
modulos: "@VET_MODULOS"
mascotas: "@VET_MOD_MASCOTAS"
vacunacion: "@VET_MOD_VACUNACION"
desarrollador_backend:
inicio: "@VET_DEF_ENTITIES"
api: "@VET_QUICK_API"
inventario: "@VET_INV_BE"
desarrollador_frontend:
inicio: "@VET_QUICK_MODULES"
api: "@VET_QUICK_API"
inventario: "@VET_INV_FE"
dba:
inicio: "@VET_DEF_DB"
inventario: "@VET_INV_DB"
quick: "@VET_QUICK_DATABASE"
arquitecto:
inicio: "@VET_VISION"
dependencias: "@VET_DEP_GRAPH"
herencia: "@VET_INHERITANCE"
cadena: "Ver seccion cadena_herencia"
orquestador:
inicio: "@VET_STATUS"
siguiente: "@VET_NEXT"
trazabilidad: "@VET_TRACEABILITY"
farmaceutico:
inicio: "@VET_MOD_FARMACIA"
normativa: "@VET_SENASICA"
inventario: "@VET_INV_DB"
# ===============================================================================
# FIN DEL MAPA DE DOCUMENTACION
# ===============================================================================

View File

@ -0,0 +1,454 @@
# PROJECT-PROFILE.yml - clinica-veterinaria
# Perfil de proyecto para el Agente de Propagación Automático
# Version: 1.0.0
# Fecha: 2026-01-18
project:
name: "clinica-veterinaria"
code: "VET"
type: "SUB-VERTICAL"
level: "SUB-CONSUMER"
giro: "veterinaria"
version: "1.0.0"
completeness: 15
description: |
ERP sub-vertical para clínicas y hospitales veterinarios:
- Medicina de pequeñas especies (perros, gatos)
- Medicina de grandes especies (equinos, bovinos)
- Animales exóticos
- Cirugía veterinaria
- Estética y grooming
- Pensión y hospedaje
Hereda de erp-clinicas y especializa para veterinaria.
# =============================================================================
# JERARQUÍA DE HERENCIA
# =============================================================================
inheritance:
parent: "erp-clinicas"
grandparent: "erp-core"
chain: ["erp-core", "erp-clinicas", "clinica-veterinaria"]
# =============================================================================
# ESTRUCTURA DEL PROYECTO
# =============================================================================
structure:
type: "monorepo"
root_path: "projects/clinica-veterinaria"
apps:
backend:
path: "apps/backend"
framework: "NestJS"
modules_path: "src/modules"
entities_path: "src/modules/*/entities"
frontend:
path: "apps/frontend"
framework: "React"
features_path: "src/features"
pages_path: "src/pages"
database:
path: "apps/database"
ddl_path: "ddl"
# =============================================================================
# MAPEO DE MÓDULOS: clinicas → veterinaria
# =============================================================================
module_mapping:
# Heredados de erp-clinicas (se mantienen)
auth: "auth"
users: "users"
roles: "roles"
tenants: "tenants"
catalogs: "catalogs"
patients: "pet-patients" # Pacientes → Mascotas/Animales
medical-supplies: "vet-supplies"
financial: "financial"
appointments: "vet-appointments"
purchases: "purchases"
patient-relations: "owner-relations" # Relación con dueños
audit: "audit"
notifications: "notifications"
clinical-reports: "vet-reports"
# De erp-clinicas que se especializan
medical-records: "vet-records"
scheduling: "vet-scheduling"
prescriptions: "vet-prescriptions"
insurance: "pet-insurance"
lab-integration: "vet-lab"
# =============================================================================
# ADAPTACIONES ESPECÍFICAS DE VETERINARIA
# =============================================================================
adaptations:
entities:
# Desde erp-clinicas
Patient: "Pet" # Paciente → Mascota
MedicalSupply: "VetSupply"
Appointment: "VetAppointment"
MedicalRecord: "VetRecord"
# Entidad adicional: Owner (dueño de la mascota)
new_entities:
- name: "Owner"
description: "Dueño/propietario de la mascota"
based_on: "Partner" # Basado en Partner de erp-core
fields_additions:
Pet:
- name: "owner_id"
type: "uuid"
fk: "owners.owners.id"
nullable: false
reason: "Dueño de la mascota"
- name: "species"
type: "varchar(50)"
enum: ["dog", "cat", "bird", "rabbit", "hamster", "fish", "reptile", "horse", "cattle", "pig", "other"]
nullable: false
reason: "Especie del animal"
- name: "breed"
type: "varchar(100)"
nullable: true
reason: "Raza"
- name: "sex"
type: "varchar(10)"
enum: ["male", "female", "unknown"]
reason: "Sexo del animal"
- name: "is_neutered"
type: "boolean"
default: false
reason: "Si está esterilizado/castrado"
- name: "color"
type: "varchar(100)"
nullable: true
reason: "Color del pelaje/plumaje"
- name: "weight_kg"
type: "decimal(6,2)"
nullable: true
reason: "Peso en kilogramos"
- name: "microchip_number"
type: "varchar(50)"
nullable: true
reason: "Número de microchip"
- name: "tattoo_number"
type: "varchar(50)"
nullable: true
reason: "Número de tatuaje (si aplica)"
- name: "vaccination_status"
type: "jsonb"
nullable: true
reason: "Estado de vacunación"
- name: "diet_type"
type: "varchar(50)"
nullable: true
reason: "Tipo de dieta"
- name: "behavioral_notes"
type: "text"
nullable: true
reason: "Notas de comportamiento (agresivo, miedoso, etc.)"
Owner:
- name: "pets"
type: "relation"
relation_type: "one_to_many"
target: "Pet"
reason: "Un dueño puede tener múltiples mascotas"
- name: "preferred_vet_id"
type: "uuid"
fk: "auth.users.id"
nullable: true
reason: "Veterinario preferido"
- name: "emergency_authorized"
type: "boolean"
default: false
reason: "Autoriza procedimientos de emergencia"
VetSupply:
- name: "species_applicable"
type: "jsonb"
nullable: true
reason: "Especies para las que aplica"
- name: "weight_based_dosing"
type: "boolean"
default: true
reason: "Si la dosis es por peso"
- name: "dosing_per_kg"
type: "decimal(10,4)"
nullable: true
reason: "Dosis por kg de peso"
- name: "withdrawal_period_days"
type: "integer"
nullable: true
reason: "Período de retiro (para animales de consumo)"
VetAppointment:
- name: "pet_id"
type: "uuid"
fk: "pets.pets.id"
reason: "Mascota a atender"
- name: "reason_for_visit"
type: "varchar(50)"
enum: ["checkup", "vaccination", "illness", "injury", "surgery", "grooming", "boarding", "emergency", "follow_up"]
reason: "Motivo de la visita"
- name: "weight_at_visit"
type: "decimal(6,2)"
nullable: true
reason: "Peso registrado en la visita"
- name: "temperature"
type: "decimal(4,1)"
nullable: true
reason: "Temperatura corporal"
- name: "heart_rate"
type: "integer"
nullable: true
reason: "Frecuencia cardíaca"
- name: "respiratory_rate"
type: "integer"
nullable: true
reason: "Frecuencia respiratoria"
- name: "hospitalization_required"
type: "boolean"
default: false
reason: "Si requiere hospitalización"
VetRecord:
- name: "vaccination_history"
type: "jsonb"
nullable: true
reason: "Historial de vacunación"
- name: "deworming_history"
type: "jsonb"
nullable: true
reason: "Historial de desparasitación"
- name: "surgeries"
type: "jsonb"
nullable: true
reason: "Cirugías realizadas"
- name: "chronic_conditions"
type: "jsonb"
nullable: true
reason: "Condiciones crónicas"
fields_removals:
Pet:
- "date_of_birth" # Se usa birth_date heredado, pero...
- "emergency_contact" # El contacto es el owner
# =============================================================================
# MÓDULOS ESPECÍFICOS DE VETERINARIA
# =============================================================================
vertical_modules:
- id: "VET-001"
name: "vaccination"
description: "Control de vacunación"
status: "planned"
priority: "P0"
entities:
- VaccinationRecord
- VaccinationSchedule
- Vaccine
- id: "VET-002"
name: "boarding"
description: "Pensión y hospedaje"
status: "planned"
priority: "P1"
entities:
- BoardingReservation
- Kennel
- BoardingFee
- FeedingSchedule
- id: "VET-003"
name: "grooming"
description: "Estética y grooming"
status: "planned"
priority: "P1"
entities:
- GroomingAppointment
- GroomingService
- GroomingPackage
- id: "VET-004"
name: "surgery"
description: "Cirugías veterinarias"
status: "planned"
priority: "P1"
entities:
- SurgeryRecord
- AnesthesiaLog
- PostOpCare
- id: "VET-005"
name: "vet-pharmacy"
description: "Farmacia veterinaria"
status: "planned"
priority: "P1"
entities:
- VetPrescription
- Medication
- ControlledSubstance
- id: "VET-006"
name: "pet-shop"
description: "Venta de productos para mascotas"
status: "planned"
priority: "P2"
entities:
- PetProduct
- ProductCategory
- Promotion
# =============================================================================
# TERMINOLOGÍA VETERINARIA
# =============================================================================
terminology:
# Heredado de clínicas adaptado
paciente: "paciente/mascota"
cita: "cita veterinaria"
consulta: "consulta veterinaria"
receta: "receta veterinaria"
# Específico de veterinaria
mascota: "mascota/animal"
dueno: "propietario/dueño"
especie: "especie"
raza: "raza"
vacuna: "vacuna"
desparasitacion: "desparasitación"
castracion: "castración/esterilización"
microchip: "microchip"
pension: "pensión/hospedaje"
estetica: "estética/grooming"
# =============================================================================
# ESPECIES SOPORTADAS
# =============================================================================
species_config:
small_animals:
- code: "dog"
name: "Perro"
common_vaccines: ["rabies", "distemper", "parvovirus", "hepatitis", "leptospirosis"]
- code: "cat"
name: "Gato"
common_vaccines: ["rabies", "feline_distemper", "calicivirus", "rhinotracheitis", "leukemia"]
- code: "rabbit"
name: "Conejo"
common_vaccines: ["myxomatosis", "vhd"]
exotic:
- code: "bird"
name: "Ave"
- code: "reptile"
name: "Reptil"
- code: "hamster"
name: "Hámster"
large_animals:
- code: "horse"
name: "Caballo"
requires_field_service: true
- code: "cattle"
name: "Bovino"
requires_field_service: true
food_animal: true
# =============================================================================
# REGLAS DE PROPAGACIÓN
# =============================================================================
propagation_rules:
accept_from:
- erp-clinicas # Padre directo
- erp-core # Si erp-clinicas lo propaga
auto_accept:
- documentation
- definitions
- security_fixes
- bug_fixes
- patient_base_changes
require_adaptation:
- entities
- ddl_schema
- medical_records # Adaptar a registros veterinarios
require_review:
- breaking_changes
- schema_migrations
- controlled_substances # Medicamentos controlados
reject:
- dental_features
- human_medical_features
# =============================================================================
# VALIDACIONES ESPECÍFICAS
# =============================================================================
validations:
pre_propagation:
- "Verificar que módulo padre (erp-clinicas) está actualizado"
- "Validar que entity mapping está definido"
post_propagation:
- "npm run build"
- "npm run lint"
- "npm run test:affected"
business_rules:
- "Mascotas requieren dueño asignado"
- "Mascotas requieren especie"
- "Vacunas tienen calendario según especie"
- "Medicamentos controlados requieren receta especial"
- "Animales de consumo tienen período de retiro"
- "Hospitalización requiere kennel asignado"
# =============================================================================
# HISTORIAL
# =============================================================================
history:
- date: "2026-01-18"
action: "Creación de PROJECT-PROFILE.yml"
author: "Claude-Opus-4.5"

View File

@ -26,15 +26,15 @@
| Artefacto | Estado | Prioridad | | Artefacto | Estado | Prioridad |
|-----------|--------|-----------| |-----------|--------|-----------|
| docs/00-vision-general/VISION.md | FALTA | P0 | | docs/00-vision-general/VISION.md | EXISTE | - |
| docs/00-vision-general/_MAP.md | FALTA | P1 | | docs/00-vision-general/_MAP.md | EXISTE | - |
| docs/02-definicion-modulos/_MAP.md | FALTA | P0 | | docs/02-definicion-modulos/_MAP.md | FALTA | P0 |
| modulo-mascotas.md | FALTA | P1 | | modulo-mascotas.md | FALTA | P1 |
| modulo-propietarios.md | FALTA | P1 | | modulo-propietarios.md | FALTA | P1 |
| modulo-vacunacion.md | FALTA | P1 | | modulo-vacunacion.md | FALTA | P1 |
| modulo-hospitalizacion.md | FALTA | P2 | | modulo-hospitalizacion.md | FALTA | P2 |
| modulo-farmacia.md | FALTA | P2 | | modulo-farmacia.md | FALTA | P2 |
| orchestration/_MAP.md | FALTA | P1 | | orchestration/_MAP.md | EXISTE | - |
| PROJECT-STATUS.md | FALTA | P1 | | PROJECT-STATUS.md | FALTA | P1 |
--- ---

View File

@ -0,0 +1,285 @@
# Trazabilidad del Proyecto
# clinica-veterinaria
# Creado: 2026-01-16
version: "1.0.0"
proyecto: "clinica-veterinaria"
fecha_creacion: "2026-01-16"
# ============================================================================
# TRAZABILIDAD MODULO <-> OBJETOS
# ============================================================================
trazabilidad_modulos:
VET-001:
nombre: "Mascotas y Propietarios"
documentacion:
especificacion: "docs/01-epicas/VET-001-mascotas-propietarios.md"
definicion_modulo: "docs/02-definicion-modulos/modulo-mascotas.md"
objetos_bd:
tablas:
- "veterinaria.especies"
- "veterinaria.razas"
- "veterinaria.propietarios"
- "veterinaria.mascotas"
schemas: ["veterinaria"]
enums: ["sexo_animal"]
objetos_backend:
entities: [] # Pendiente implementacion
services: [] # Pendiente implementacion
controllers: [] # Pendiente implementacion
objetos_frontend:
componentes: [] # Pendiente implementacion
stores: []
hooks: []
VET-002:
nombre: "Vacunacion"
documentacion:
especificacion: "docs/01-epicas/VET-002-vacunacion.md"
definicion_modulo: "docs/02-definicion-modulos/modulo-vacunacion.md"
objetos_bd:
tablas:
- "veterinaria.vacunas"
- "veterinaria.cartilla_vacunacion"
schemas: ["veterinaria"]
objetos_backend:
entities: []
services: []
controllers: []
VET-003:
nombre: "Desparasitaciones"
documentacion:
especificacion: "docs/01-epicas/VET-003-desparasitaciones.md"
objetos_bd:
tablas:
- "veterinaria.desparasitaciones"
schemas: ["veterinaria"]
objetos_backend:
entities: []
services: []
VET-004:
nombre: "Hospitalizacion"
documentacion:
especificacion: "docs/01-epicas/VET-004-hospitalizacion.md"
objetos_bd:
tablas:
- "veterinaria.hospitalizacion"
- "veterinaria.hospitalizacion_monitoreo"
schemas: ["veterinaria"]
enums: ["estado_hospitalizacion"]
objetos_backend:
entities: []
services: []
VET-005:
nombre: "Estetica"
documentacion:
especificacion: "docs/01-epicas/VET-005-estetica.md"
objetos_bd:
tablas:
- "veterinaria.estetica"
schemas: ["veterinaria"]
objetos_backend:
entities: []
services: []
VET-006:
nombre: "Farmacia"
documentacion:
especificacion: "docs/01-epicas/VET-006-farmacia.md"
objetos_bd:
tablas:
- "veterinaria.medicamentos"
- "veterinaria.medicamentos_lotes"
- "veterinaria.dispensaciones"
- "veterinaria.movimientos_farmacia"
- "veterinaria.bitacora_controlados"
schemas: ["veterinaria"]
enums:
- "categoria_medicamento"
- "tipo_movimiento_farmacia"
- "fraccion_controlada"
funciones:
- "get_lotes_proximos_caducar"
- "get_medicamentos_stock_bajo"
- "seleccionar_lote_fefo"
triggers:
- "trg_actualizar_stock"
- "trg_registrar_dispensacion"
objetos_backend:
entities: []
services: []
# ============================================================================
# MATRIZ DE COBERTURA
# ============================================================================
cobertura:
total_modulos: 6
con_documentacion: 6
con_ddl: 6
con_backend: 0
con_frontend: 0
con_tests: 0
con_trazabilidad_completa: 0
detalle:
VET-001:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
VET-002:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
VET-003:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
VET-004:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
VET-005:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
VET-006:
documentacion: true
ddl: true
backend: false
frontend: false
tests: false
# ============================================================================
# REFERENCIAS CRUZADAS
# ============================================================================
referencias_cruzadas:
por_tabla:
mascotas:
modulo: "VET-001"
documentos:
- "docs/01-epicas/VET-001-mascotas-propietarios.md"
- "docs/02-definicion-modulos/modulo-mascotas.md"
- "docs/_definitions/DATABASE-SCHEMA.md"
dependientes:
- "cartilla_vacunacion"
- "desparasitaciones"
- "hospitalizacion"
- "estetica"
- "dispensaciones"
hospitalizacion:
modulo: "VET-004"
documentos:
- "docs/01-epicas/VET-004-hospitalizacion.md"
- "docs/_definitions/DATABASE-SCHEMA.md"
dependientes:
- "hospitalizacion_monitoreo"
medicamentos:
modulo: "VET-006"
documentos:
- "docs/01-epicas/VET-006-farmacia.md"
- "docs/_definitions/DATABASE-SCHEMA.md"
dependientes:
- "medicamentos_lotes"
- "dispensaciones"
- "movimientos_farmacia"
- "bitacora_controlados"
# ============================================================================
# IMPACTO DE CAMBIOS
# ============================================================================
impacto:
mascotas:
tipo: "tabla"
impacta:
tablas:
- "cartilla_vacunacion"
- "desparasitaciones"
- "hospitalizacion"
- "estetica"
- "dispensaciones"
entities: [] # Pendiente
services: [] # Pendiente
modulos:
- "VET-002"
- "VET-003"
- "VET-004"
- "VET-005"
- "VET-006"
medicamentos:
tipo: "tabla"
impacta:
tablas:
- "medicamentos_lotes"
- "dispensaciones"
- "movimientos_farmacia"
- "bitacora_controlados"
entities: []
services: []
modulos:
- "VET-006"
# ============================================================================
# HISTORIAL DE CAMBIOS
# ============================================================================
historial:
- fecha: "2026-01-04"
tipo: "creacion"
descripcion: "DDL inicial schema veterinaria"
autor: "Sprint 7"
modulos: ["VET-001", "VET-002", "VET-003", "VET-004", "VET-005"]
- fecha: "2026-01-07"
tipo: "agregado"
descripcion: "DDL modulo farmacia (VET-006)"
autor: "Sprint 9"
modulos: ["VET-006"]
- fecha: "2026-01-16"
tipo: "documentacion"
descripcion: "Creacion estructura _definitions/ y _quick/"
autor: "Migracion documentacion"
modulos: ["VET-001", "VET-002", "VET-003", "VET-004", "VET-005", "VET-006"]
# ============================================================================
# ESTADISTICAS
# ============================================================================
estadisticas:
modulos_mapeados: 6
tablas_mapeadas: 15
entities_mapeadas: 0
documentos_referenciados: 12
ultima_actualizacion: "2026-01-16"

102
orchestration/_MAP.md Normal file
View File

@ -0,0 +1,102 @@
# MAPA DE ORQUESTACION: clinica-veterinaria
**Proyecto:** clinica-veterinaria
**Nivel:** SUB-CONSUMER (hereda de erp-clinicas)
**Sistema:** SIMCO-ESTANDAR-ORCHESTRATION v1.0.0
**Ultima actualizacion:** 2026-01-24
---
## Estructura Estandarizada
```
orchestration/
├── 00-guidelines/ # Guidelines locales del proyecto
│ ├── CONTEXTO-PROYECTO.md
│ ├── HERENCIA-ERP-CLINICAS.md
│ ├── HERENCIA-ERP-CORE.md
│ └── HERENCIA-SIMCO.md
├── inventarios/ # Inventarios del proyecto
│ ├── BACKEND_INVENTORY.yml
│ ├── DATABASE_INVENTORY.yml
│ ├── FRONTEND_INVENTORY.yml
│ └── MASTER_INVENTORY.yml
├── trazas/ # Trazas de ejecucion
│ ├── REPORTE-EJECUCION-SPRINT7-2026-01-07.md
│ └── TRAZA-TAREAS-DATABASE.md
├── _archive/ # Contenido archivado (no estandar)
│ ├── _definitions/
│ ├── _refs/
│ ├── agents/
│ ├── directivas/
│ ├── environment/
│ └── referencias/
├── _inheritance.yml # Modelo de herencia
├── _MAP.md # Este archivo
├── BOOTLOADER.md # Arranque del proyecto
├── CONTEXT-MAP.yml # Mapa de contexto NEXUS
├── DEPENDENCY-GRAPH.yml # Grafo de dependencias
├── MAPA-DOCUMENTACION.yml # Mapa de documentacion
├── PROJECT-PROFILE.yml # Perfil del proyecto
├── PROJECT-STATUS.md # Estado actual
├── PROXIMA-ACCION.md # Siguiente accion
└── TRACEABILITY.yml # Trazabilidad
```
---
## Archivos Obligatorios (10/10)
| # | Archivo | Estado |
|---|---------|--------|
| 1 | _inheritance.yml | OK |
| 2 | _MAP.md | OK |
| 3 | BOOTLOADER.md | OK |
| 4 | CONTEXT-MAP.yml | OK |
| 5 | DEPENDENCY-GRAPH.yml | OK |
| 6 | MAPA-DOCUMENTACION.yml | OK |
| 7 | PROJECT-PROFILE.yml | OK |
| 8 | PROJECT-STATUS.md | OK |
| 9 | PROXIMA-ACCION.md | OK |
| 10 | TRACEABILITY.yml | OK |
---
## Carpetas Obligatorias (4/4)
| Carpeta | Estado | Contenido |
|---------|--------|-----------|
| 00-guidelines/ | OK | 4 archivos |
| inventarios/ | OK | 4 archivos |
| trazas/ | OK | 2 archivos |
| _archive/ | OK | Contenido no estandar archivado |
---
## Navegacion
| Destino | Enlace |
|---------|--------|
| Padre: erp-clinicas | [../../erp-clinicas/orchestration/_MAP.md](../../erp-clinicas/orchestration/_MAP.md) |
| Orchestration Central | [../../../orchestration/_MAP.md](../../../orchestration/_MAP.md) |
| Documentacion Proyecto | [../docs/_MAP.md](../docs/_MAP.md) |
---
## Nota sobre _archive/
El contenido en `_archive/` fue movido durante la reestructuracion a SIMCO-ESTANDAR-ORCHESTRATION v1.0.0.
Este contenido era duplicacion de directivas heredadas del workspace padre.
Los proyectos SUB-CONSUMER heredan directivas automaticamente y no requieren copias locales.
**Contenido archivado:**
- `_definitions/` - Checklists, protocolos, validaciones (heredar de workspace)
- `_refs/` - Referencias (heredar de workspace)
- `agents/` - Perfiles de agentes (heredar de erp-clinicas)
- `directivas/` - Principios, SIMCO, triggers (heredar de workspace)
- `environment/` - Inventario de ambiente (mover a inventarios/ si necesario)
- `referencias/` - Dependencias ERP (mover a inventarios/ si necesario)
---
**Reestructurado:** 2026-01-24 segun SIMCO-ESTANDAR-ORCHESTRATION v1.0.0

View File

@ -0,0 +1,232 @@
# ═══════════════════════════════════════════════════════════════════════════════
# DECLARACION DE HERENCIA - CLINICA-VETERINARIA
# ═══════════════════════════════════════════════════════════════════════════════
#
# Proyecto: clinica-veterinaria
# Rol: Sub-vertical especializada en veterinaria
# Nivel: SUB-CONSUMER (Hereda de erp-clinicas)
#
# ═══════════════════════════════════════════════════════════════════════════════
version: "1.0.0"
created: "2026-01-16"
updated: "2026-01-16"
proyecto: "clinica-veterinaria"
# ─────────────────────────────────────────────────────────────────────────────────
# RELACION DE HERENCIA
# ─────────────────────────────────────────────────────────────────────────────────
herencia:
parent: "erp-clinicas"
parent_version: "1.0.0"
tipo: "SPECIALIZES"
cadena: "template-saas -> erp-core -> erp-clinicas -> clinica-veterinaria"
especializacion: "veterinaria"
# ─────────────────────────────────────────────────────────────────────────────────
# MODULOS HEREDADOS
# ─────────────────────────────────────────────────────────────────────────────────
modulos:
heredados:
# De la cadena completa
- name: "auth"
version: "1.0.0"
status: "active"
origen: "template-saas"
- name: "tenants"
version: "1.0.0"
status: "active"
origen: "template-saas"
- name: "billing"
version: "1.0.0"
status: "active"
origen: "template-saas"
- name: "notifications"
version: "1.0.0"
status: "active"
origen: "template-saas"
# De erp-core
- name: "catalogs"
version: "1.0.0"
status: "active"
origen: "erp-core"
- name: "inventory"
version: "1.0.0"
status: "active"
origen: "erp-core"
uso: "Inventario de medicamentos veterinarios"
# De erp-clinicas (adaptados)
- name: "pacientes"
version: "1.0.0"
status: "active"
origen: "erp-clinicas"
adaptacion: "Mascotas en lugar de pacientes humanos"
- name: "citas"
version: "1.0.0"
status: "active"
origen: "erp-clinicas"
uso: "Agenda veterinaria"
- name: "expedientes"
version: "1.0.0"
status: "active"
origen: "erp-clinicas"
adaptacion: "Historia clinica veterinaria"
- name: "prescripciones"
version: "1.0.0"
status: "active"
origen: "erp-clinicas"
uso: "Recetas veterinarias"
# Modulos adaptados para veterinaria
extendidos:
- name: "pacientes"
adaptacion: "Mascotas con propietarios"
campos_agregados:
- "especie"
- "raza"
- "peso"
- "propietario_id"
- "chip_id"
- name: "expedientes"
adaptacion: "Historia clinica animal"
campos_agregados:
- "cartilla_vacunacion"
- "desparasitaciones"
- "esterilizado"
# Modulos propios de clinica-veterinaria
propios:
- name: "mascotas"
id: "CVT-001"
version: "1.0.0"
estado: "30%"
descripcion: "Registro de mascotas y propietarios"
tablas:
- "sub_veterinaria.pets"
- "sub_veterinaria.pet_owners"
- "sub_veterinaria.pet_photos"
- name: "vacunacion"
id: "CVT-002"
version: "1.0.0"
estado: "25%"
descripcion: "Control de vacunacion"
tablas:
- "sub_veterinaria.vaccinations"
- "sub_veterinaria.vaccine_types"
- "sub_veterinaria.vaccination_reminders"
- name: "desparasitaciones"
id: "CVT-003"
version: "1.0.0"
estado: "20%"
descripcion: "Control de desparasitaciones"
tablas:
- "sub_veterinaria.dewormings"
- "sub_veterinaria.dewormer_types"
- name: "hospitalizacion"
id: "CVT-004"
version: "1.0.0"
estado: "20%"
descripcion: "Hospitalizacion y cuidados intensivos"
tablas:
- "sub_veterinaria.hospitalizations"
- "sub_veterinaria.kennel_spaces"
- "sub_veterinaria.hospitalization_notes"
- name: "estetica-canina"
id: "CVT-005"
version: "1.0.0"
estado: "15%"
descripcion: "Servicios de estetica y grooming"
tablas:
- "sub_veterinaria.grooming_services"
- "sub_veterinaria.grooming_appointments"
- name: "farmacia-veterinaria"
id: "CVT-006"
version: "1.0.0"
estado: "20%"
descripcion: "Farmacia y medicamentos veterinarios"
tablas:
- "sub_veterinaria.vet_medications"
- "sub_veterinaria.medication_sales"
# ─────────────────────────────────────────────────────────────────────────────────
# CONFIGURACION
# ─────────────────────────────────────────────────────────────────────────────────
configuracion:
schema_prefix: "sub_veterinaria"
schemas_propios:
- "sub_veterinaria"
normativa:
- nombre: "NOM-064-ZOO-2000"
descripcion: "Requisitos para establecimientos de atencion medica veterinaria"
aplica_a: ["todos"]
- nombre: "NOM-051-ZOO-1995"
descripcion: "Trato humanitario en movilizacion de animales"
aplica_a: ["hospitalizacion"]
- nombre: "SENASICA"
descripcion: "Servicio Nacional de Sanidad, Inocuidad y Calidad Agroalimentaria"
aplica_a: ["vacunacion", "farmacia-veterinaria"]
# ─────────────────────────────────────────────────────────────────────────────────
# CONSUMIDORES
# ─────────────────────────────────────────────────────────────────────────────────
consumidores:
# clinica-veterinaria es nodo terminal, no tiene consumidores
proyectos: []
# ─────────────────────────────────────────────────────────────────────────────────
# VALIDACION
# ─────────────────────────────────────────────────────────────────────────────────
validacion:
ultima_validacion: "2026-01-16"
parent_compatible: true
checklist:
- item: "erp-clinicas v1.0.0 existe"
status: "passed"
- item: "Modulos clinica disponibles"
status: "pending"
bloqueos:
- regla: "BLOCK-002"
descripcion: "No puede avanzar si erp-clinicas < 50%"
estado_actual: "erp-clinicas al 10%"
accion: "Solo documentacion hasta que erp-clinicas llegue a 50%"
# ─────────────────────────────────────────────────────────────────────────────────
# METADATA
# ─────────────────────────────────────────────────────────────────────────────────
metadata:
created_by: "Claude Opus 4.5"
created_at: "2026-01-16"
task_id: "TASK-2026-01-16-002"
related_documents:
- "orchestration/DEPENDENCY-GRAPH.yml"
- "orchestration/TRACEABILITY.yml"
# ═══════════════════════════════════════════════════════════════════════════════
# FIN DE DECLARACION DE HERENCIA
# ═══════════════════════════════════════════════════════════════════════════════

View File

@ -1,694 +0,0 @@
# =============================================================================
# ENVIRONMENT-INVENTORY.yml - CLINICA-VETERINARIA
# =============================================================================
# Inventario Completo de Entorno de Desarrollo y Produccion
# Generado por: @PERFIL_DEVENV
# Basado en: orchestration/templates/TEMPLATE-ENVIRONMENT-INVENTORY.yml
# =============================================================================
version: "1.1.0"
fecha_creacion: "2026-01-04"
fecha_actualizacion: "2026-01-04"
responsable: "@PERFIL_DEVENV"
# -----------------------------------------------------------------------------
# IDENTIFICACION DEL PROYECTO
# -----------------------------------------------------------------------------
proyecto:
nombre: "Clinica Veterinaria"
alias: "clinica-veterinaria"
codigo: "CV"
nivel: "NIVEL_2B.3"
tipo: "vertical-especializada"
estado: "desarrollo"
descripcion: "Sistema de gestion para clinicas veterinarias"
parent: "erp-clinicas"
herencia:
- erp-core
- erp-clinicas
# -----------------------------------------------------------------------------
# HERRAMIENTAS Y RUNTIME
# -----------------------------------------------------------------------------
herramientas:
runtime:
node:
version: "20.x"
version_minima: "18.x"
requerido: true
notas: "LTS recomendado para NestJS y React"
python:
version: ""
requerido: false
notas: "No requerido para este proyecto"
package_managers:
npm:
version: "10.x"
requerido: true
pnpm:
version: "8.x"
requerido: false
notas: "Alternativa opcional"
build_tools:
- nombre: "Vite"
version: "5.x"
uso: "Frontend build y dev server"
- nombre: "TypeScript"
version: "5.x"
uso: "Compilacion de codigo"
- nombre: "NestJS CLI"
version: "10.x"
uso: "Backend scaffolding y build"
linters:
- nombre: "ESLint"
version: "8.x"
config: ".eslintrc.js"
- nombre: "Prettier"
version: "3.x"
config: ".prettierrc"
testing:
- nombre: "Jest"
version: "29.x"
tipo: "unit backend"
config: "jest.config.js"
- nombre: "Vitest"
version: "1.x"
tipo: "unit frontend"
config: "vitest.config.ts"
- nombre: "Supertest"
version: "6.x"
tipo: "e2e"
config: "jest-e2e.config.js"
# -----------------------------------------------------------------------------
# SERVICIOS Y PUERTOS
# -----------------------------------------------------------------------------
servicios:
frontend:
nombre: "clinica-veterinaria-frontend"
framework: "React"
version: "18.x"
puerto: 3120
comando_dev: "npm run dev"
comando_build: "npm run build"
comando_preview: "npm run preview"
ubicacion: "apps/frontend/"
url_local: "http://localhost:3120"
build_output: "dist/"
backend:
nombre: "clinica-veterinaria-backend"
framework: "NestJS"
version: "10.x"
puerto: 3121
comando_dev: "npm run start:dev"
comando_build: "npm run build"
comando_prod: "npm run start:prod"
ubicacion: "apps/backend/"
url_local: "http://localhost:3121"
api_prefix: "/api/v1"
swagger_url: "http://localhost:3121/api/docs"
# -----------------------------------------------------------------------------
# BASE DE DATOS - CONFIGURACION COMPLETA
# -----------------------------------------------------------------------------
base_de_datos:
principal:
engine: "PostgreSQL"
version: "15"
host_variable: "DB_HOST"
puerto_variable: "DB_PORT"
ambientes:
development:
host: "localhost"
puerto: 5440
nombre: "clinica_veterinaria_dev"
usuario: "veterinaria_dev"
password_ref: "DB_PASSWORD en .env"
ssl: false
pool_size: 10
conexion: "postgresql://veterinaria_dev:{password}@localhost:5440/clinica_veterinaria_dev"
test:
host: "localhost"
puerto: 5440
nombre: "clinica_veterinaria_test"
usuario: "veterinaria_dev"
password_ref: "DB_PASSWORD en .env"
ssl: false
pool_size: 5
conexion: "postgresql://veterinaria_dev:{password}@localhost:5440/clinica_veterinaria_test"
staging:
host: "${DB_HOST}"
puerto: 5432
nombre: "clinica_veterinaria_staging"
usuario: "veterinaria_staging"
password_ref: "DB_PASSWORD en variables de CI/CD"
ssl: true
pool_size: 20
conexion: "postgresql://veterinaria_staging:{password}@${DB_HOST}:5432/clinica_veterinaria_staging?sslmode=require"
production:
host: "${DB_HOST}"
puerto: 5432
nombre: "clinica_veterinaria_prod"
usuario: "veterinaria_prod"
password_ref: "DB_PASSWORD en secrets manager"
ssl: true
pool_size: 50
conexion: "postgresql://veterinaria_prod:{password}@${DB_HOST}:5432/clinica_veterinaria_prod?sslmode=require"
schemas:
- nombre: "public"
descripcion: "Schema principal PostgreSQL"
- nombre: "veterinaria"
descripcion: "Entidades especificas veterinarias (especies, razas, mascotas, vacunas)"
- nombre: "clinical"
descripcion: "Heredado de erp-clinicas (consultorios, citas, historiales)"
- nombre: "financial"
descripcion: "Heredado de erp-core (pagos, facturacion)"
- nombre: "hr"
descripcion: "Heredado de erp-core (empleados, nomina)"
- nombre: "inventory"
descripcion: "Heredado de erp-core (medicamentos, insumos)"
scripts_inicializacion:
orden:
- "database/init/00-extensions.sql"
- "database/init/01-schemas.sql"
- "database/schemas/01-veterinaria-schema-ddl.sql"
- "database/seeds/fase8/01-veterinaria-catalogos.sql"
redis:
host_variable: "REDIS_HOST"
puerto_variable: "REDIS_PORT"
ambientes:
development:
host: "localhost"
puerto: 6387
database: 0
password: ""
conexion: "redis://localhost:6387/0"
production:
host: "${REDIS_HOST}"
puerto: 6379
database: 0
password_ref: "REDIS_PASSWORD en secrets"
conexion: "redis://:${REDIS_PASSWORD}@${REDIS_HOST}:6379/0"
uso:
- "Cache de sesiones"
- "Cache de consultas frecuentes"
- "Rate limiting"
- "Queue de tareas (Bull)"
# -----------------------------------------------------------------------------
# VARIABLES DE ENTORNO - DESARROLLO
# -----------------------------------------------------------------------------
variables_entorno:
archivos:
ejemplo: ".env.example"
desarrollo: ".env"
test: ".env.test"
produccion: ".env.production"
development:
- nombre: "NODE_ENV"
valor: "development"
descripcion: "Ambiente de ejecucion"
requerido: true
sensible: false
- nombre: "APP_NAME"
valor: "clinica-veterinaria"
descripcion: "Nombre de la aplicacion"
requerido: true
sensible: false
- nombre: "APP_VERSION"
valor: "1.0.0"
descripcion: "Version de la aplicacion"
requerido: false
sensible: false
# Puertos
- nombre: "FRONTEND_PORT"
valor: "3120"
descripcion: "Puerto del frontend React"
requerido: true
sensible: false
- nombre: "BACKEND_PORT"
valor: "3121"
descripcion: "Puerto del backend NestJS"
requerido: true
sensible: false
# Base de datos
- nombre: "DB_HOST"
valor: "localhost"
descripcion: "Host de PostgreSQL"
requerido: true
sensible: false
- nombre: "DB_PORT"
valor: "5440"
descripcion: "Puerto de PostgreSQL"
requerido: true
sensible: false
- nombre: "DB_NAME"
valor: "clinica_veterinaria_dev"
descripcion: "Nombre de la base de datos"
requerido: true
sensible: false
- nombre: "DB_USER"
valor: "veterinaria_dev"
descripcion: "Usuario de PostgreSQL"
requerido: true
sensible: false
- nombre: "DB_PASSWORD"
valor: ""
descripcion: "Password de PostgreSQL"
requerido: true
sensible: true
generacion: "openssl rand -base64 32"
- nombre: "DATABASE_URL"
valor: "postgresql://veterinaria_dev:${DB_PASSWORD}@localhost:5440/clinica_veterinaria_dev"
descripcion: "Connection string completo"
requerido: true
sensible: true
# Redis
- nombre: "REDIS_HOST"
valor: "localhost"
descripcion: "Host de Redis"
requerido: true
sensible: false
- nombre: "REDIS_PORT"
valor: "6387"
descripcion: "Puerto de Redis"
requerido: true
sensible: false
- nombre: "REDIS_URL"
valor: "redis://localhost:6387/0"
descripcion: "Connection string de Redis"
requerido: true
sensible: false
# Autenticacion
- nombre: "JWT_SECRET"
valor: ""
descripcion: "Secreto para firmar JWT (min 32 caracteres)"
requerido: true
sensible: true
generacion: "openssl rand -base64 64"
- nombre: "JWT_EXPIRES_IN"
valor: "24h"
descripcion: "Tiempo de expiracion del access token"
requerido: true
sensible: false
- nombre: "JWT_REFRESH_EXPIRES_IN"
valor: "7d"
descripcion: "Tiempo de expiracion del refresh token"
requerido: true
sensible: false
# CORS
- nombre: "FRONTEND_URL"
valor: "http://localhost:3120"
descripcion: "URL del frontend para CORS"
requerido: true
sensible: false
- nombre: "ALLOWED_ORIGINS"
valor: "http://localhost:3120,http://localhost:3121"
descripcion: "Origenes permitidos (comma separated)"
requerido: true
sensible: false
# Logging
- nombre: "LOG_LEVEL"
valor: "debug"
descripcion: "Nivel de logging (debug, info, warn, error)"
requerido: false
sensible: false
- nombre: "LOG_FORMAT"
valor: "pretty"
descripcion: "Formato de logs (pretty, json)"
requerido: false
sensible: false
# File Storage
- nombre: "STORAGE_TYPE"
valor: "local"
descripcion: "Tipo de storage (local, s3, minio)"
requerido: false
sensible: false
- nombre: "STORAGE_PATH"
valor: "./uploads"
descripcion: "Path para almacenamiento local"
requerido: false
sensible: false
- nombre: "MAX_FILE_SIZE"
valor: "10485760"
descripcion: "Tamano maximo de archivo en bytes (10MB)"
requerido: false
sensible: false
# Email (opcional)
- nombre: "SMTP_HOST"
valor: "localhost"
descripcion: "Host SMTP para emails"
requerido: false
sensible: false
- nombre: "SMTP_PORT"
valor: "1025"
descripcion: "Puerto SMTP (1025 para MailHog)"
requerido: false
sensible: false
production:
notas: |
En produccion, las siguientes variables deben configurarse
via secrets manager o variables de CI/CD:
- DB_PASSWORD (secreto)
- JWT_SECRET (secreto)
- REDIS_PASSWORD (secreto)
- AWS_ACCESS_KEY_ID (si usa S3)
- AWS_SECRET_ACCESS_KEY (si usa S3)
diferencias:
- nombre: "NODE_ENV"
valor: "production"
- nombre: "LOG_LEVEL"
valor: "info"
- nombre: "LOG_FORMAT"
valor: "json"
- nombre: "DB_PORT"
valor: "5432"
- nombre: "REDIS_PORT"
valor: "6379"
- nombre: "STORAGE_TYPE"
valor: "s3"
# -----------------------------------------------------------------------------
# CONTENEDORES DOCKER
# -----------------------------------------------------------------------------
docker:
compose_file: "docker-compose.yml"
compose_dev: "docker-compose.dev.yml"
compose_prod: "docker-compose.prod.yml"
services:
- nombre: "db"
imagen: "postgres:15-alpine"
puerto_host: 5440
puerto_container: 5432
variables:
POSTGRES_DB: "clinica_veterinaria_dev"
POSTGRES_USER: "veterinaria_dev"
POSTGRES_PASSWORD: "${DB_PASSWORD}"
volumes:
- "postgres_data:/var/lib/postgresql/data"
healthcheck: "pg_isready -U veterinaria_dev"
- nombre: "redis"
imagen: "redis:7-alpine"
puerto_host: 6387
puerto_container: 6379
volumes:
- "redis_data:/data"
healthcheck: "redis-cli ping"
- nombre: "mailhog"
imagen: "mailhog/mailhog"
puerto_smtp: 1025
puerto_web: 8025
uso: "Testing de emails en desarrollo"
volumes:
- nombre: "postgres_data"
descripcion: "Datos persistentes de PostgreSQL"
- nombre: "redis_data"
descripcion: "Datos persistentes de Redis"
networks:
- nombre: "clinica_veterinaria_network"
driver: "bridge"
# -----------------------------------------------------------------------------
# MIGRACIONES Y SEEDS
# -----------------------------------------------------------------------------
migraciones:
herramienta: "TypeORM"
directorio: "apps/backend/src/database/migrations"
comandos:
generar: "npm run migration:generate -- -n NombreMigracion"
ejecutar: "npm run migration:run"
revertir: "npm run migration:revert"
mostrar: "npm run migration:show"
seeds:
directorio: "database/seeds"
orden:
- "fase8/01-veterinaria-catalogos.sql"
comandos:
ejecutar: "npm run seed"
desarrollo: "npm run seed:dev"
# -----------------------------------------------------------------------------
# SCRIPTS DE DESARROLLO
# -----------------------------------------------------------------------------
scripts:
setup:
descripcion: "Configurar entorno desde cero"
pasos:
- comando: "npm install"
descripcion: "Instalar dependencias"
- comando: "cp .env.example .env"
descripcion: "Crear archivo de configuracion"
- comando: "docker-compose up -d db redis"
descripcion: "Levantar servicios de infraestructura"
- comando: "npm run db:create"
descripcion: "Crear base de datos"
- comando: "npm run migration:run"
descripcion: "Ejecutar migraciones"
- comando: "npm run seed"
descripcion: "Cargar datos iniciales"
desarrollo:
frontend: "cd apps/frontend && npm run dev"
backend: "cd apps/backend && npm run start:dev"
ambos: "npm run dev:all"
docker: "docker-compose up -d"
testing:
unit: "npm run test"
unit_watch: "npm run test:watch"
e2e: "npm run test:e2e"
coverage: "npm run test:cov"
build:
frontend: "cd apps/frontend && npm run build"
backend: "cd apps/backend && npm run build"
docker: "docker-compose -f docker-compose.prod.yml build"
database:
create: "npm run db:create"
drop: "npm run db:drop"
reset: "npm run db:reset"
migrations_run: "npm run migration:run"
migrations_revert: "npm run migration:revert"
seed: "npm run seed"
linting:
lint: "npm run lint"
lint_fix: "npm run lint:fix"
format: "npm run format"
# -----------------------------------------------------------------------------
# INSTRUCCIONES DE SETUP
# -----------------------------------------------------------------------------
setup_instrucciones: |
## Setup del Entorno de Desarrollo - Clinica Veterinaria
### Prerequisitos
- Node.js 20.x (LTS)
- PostgreSQL 15 (o Docker)
- Redis 7 (o Docker)
- npm 10.x
- Git
### Opcion 1: Setup con Docker (Recomendado)
```bash
# 1. Clonar repositorio
git clone <url_repo>
cd clinica-veterinaria
# 2. Instalar dependencias
npm install
# 3. Configurar variables de entorno
cp .env.example .env
# Editar .env - generar passwords seguros:
# openssl rand -base64 32 # para DB_PASSWORD
# openssl rand -base64 64 # para JWT_SECRET
# 4. Levantar infraestructura
docker-compose up -d db redis
# 5. Crear base de datos y ejecutar migraciones
npm run db:create
npm run migration:run
npm run seed
# 6. Iniciar desarrollo
npm run dev:all
```
### Opcion 2: Setup con PostgreSQL Local
```bash
# 1-3. Igual que arriba
# 4. Crear usuario y base de datos en PostgreSQL
sudo -u postgres psql
CREATE USER veterinaria_dev WITH PASSWORD 'tu_password';
CREATE DATABASE clinica_veterinaria_dev OWNER veterinaria_dev;
GRANT ALL PRIVILEGES ON DATABASE clinica_veterinaria_dev TO veterinaria_dev;
\q
# 5. Configurar Redis local o Docker
docker run -d --name redis-veterinaria -p 6387:6379 redis:7-alpine
# 6-7. Continuar con migraciones y seeds
```
### Verificar Instalacion
- Frontend: http://localhost:3120
- Backend API: http://localhost:3121/api/v1
- Swagger Docs: http://localhost:3121/api/docs
- Health Check: http://localhost:3121/health
### Usuarios de Prueba (despues de seed)
- Admin: admin@clinica-vet.local / Admin123!
- Veterinario: vet@clinica-vet.local / Vet123!
- Recepcion: recepcion@clinica-vet.local / Recep123!
# -----------------------------------------------------------------------------
# TROUBLESHOOTING
# -----------------------------------------------------------------------------
troubleshooting:
- problema: "Puerto 3120 o 3121 en uso"
solucion: |
Verificar con: lsof -i :3120
Terminar proceso: kill -9 <PID>
O cambiar puertos en .env
- problema: "Error de conexion a PostgreSQL"
solucion: |
1. Verificar que PostgreSQL esta corriendo:
docker-compose ps
# o: systemctl status postgresql
2. Verificar credenciales en .env
3. Verificar que la BD existe:
psql -h localhost -p 5440 -U veterinaria_dev -l
- problema: "Error de conexion a Redis"
solucion: |
1. Verificar que Redis esta corriendo:
docker-compose ps
# o: redis-cli -p 6387 ping
2. Verificar puerto en .env
- problema: "Migraciones fallan"
solucion: |
1. Verificar que la BD existe
2. Verificar permisos del usuario
3. Revisar logs: npm run migration:run --verbose
4. Si es necesario, resetear: npm run db:reset
- problema: "JWT errors"
solucion: |
Verificar que JWT_SECRET esta configurado (min 32 caracteres)
Generar nuevo: openssl rand -base64 64
- problema: "CORS errors en frontend"
solucion: |
Verificar FRONTEND_URL y ALLOWED_ORIGINS en .env
Deben coincidir con la URL del frontend
# -----------------------------------------------------------------------------
# CONFIGURACION DE PRODUCCION
# -----------------------------------------------------------------------------
produccion:
checklist:
- item: "Variables de entorno configuradas via secrets manager"
- item: "SSL/TLS habilitado para BD y Redis"
- item: "Backups automaticos configurados"
- item: "Monitoreo y alertas activas"
- item: "Rate limiting configurado"
- item: "CORS restringido a dominios autorizados"
- item: "Logs en formato JSON para agregacion"
infraestructura_recomendada:
base_de_datos: "AWS RDS PostgreSQL 15 o equivalente"
cache: "AWS ElastiCache Redis o equivalente"
storage: "AWS S3 o equivalente"
cdn: "CloudFront o equivalente"
ci_cd: "GitHub Actions / GitLab CI"
escalado:
backend_replicas: 2
pool_db_size: 50
redis_maxmemory: "256mb"
# -----------------------------------------------------------------------------
# REFERENCIAS
# -----------------------------------------------------------------------------
referencias:
perfil_devenv: "orchestration/agents/perfiles/PERFIL-DEVENV.md"
inventario_master: "orchestration/inventarios/DEVENV-MASTER-INVENTORY.yml"
inventario_puertos: "orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml"
contexto_proyecto: "orchestration/00-guidelines/CONTEXTO-PROYECTO.md"
parent_clinicas: "../erp-clinicas/orchestration/environment/ENVIRONMENT-INVENTORY.yml"
schema_veterinaria: "database/schemas/01-veterinaria-schema-ddl.sql"
# =============================================================================
# FIN DE INVENTARIO
# =============================================================================

View File

@ -0,0 +1,22 @@
# BACKEND_INVENTORY.yml - clinica-veterinaria
# Generado: 2026-01-18T13:01:47-06:00
project: "clinica-veterinaria"
layer: "backend"
modules: []
entities: []
services: []
controllers: []
total:
modules: 0
entities: 0
services: 0
controllers: 0
tests: 0
last_updated: "2026-01-18T13:01:47-06:00"

View File

@ -1,443 +1,21 @@
--- # DATABASE_INVENTORY.yml - clinica-veterinaria
# DATABASE INVENTORY - Clinica Veterinaria # Generado: 2026-01-18T13:01:47-06:00
# Version: 1.0.0
# Ultima actualizacion: 2026-01-07
proyecto: "clinica-veterinaria" project: "clinica-veterinaria"
schema_principal: "veterinaria" layer: "database"
version_ddl: "1.0"
estado: "completado"
herencia: schemas: []
vertical_padre: "erp-clinicas"
suite_core: "erp-core"
schemas_heredados:
- name: "auth"
desde: "erp-core"
- name: "tenants"
desde: "erp-core"
- name: "users"
desde: "erp-core"
- name: "clinica"
desde: "erp-clinicas"
tablas: ["doctors", "appointments", "consultations"]
enums: tables: []
- name: "sexo_animal"
values:
- "macho"
- "hembra"
- "desconocido"
- name: "estado_hospitalizacion" functions: []
values:
- "ingresado"
- "en_tratamiento"
- "estable"
- "critico"
- "alta"
- "fallecido"
catalogos: triggers: []
- name: "especies"
descripcion: "Catalogo de especies animales"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "nombre: VARCHAR(50)"
- "nombre_cientifico: VARCHAR(100)"
- "descripcion: TEXT"
- "active: BOOLEAN"
- name: "razas" total:
descripcion: "Catalogo de razas por especie" schemas: 0
rls: true tables: 0
columnas: functions: 0
- "id: UUID PK" triggers: 0
- "tenant_id: UUID FK"
- "especie_id: UUID FK"
- "nombre: VARCHAR(100)"
- "descripcion: TEXT"
- "tamanio_promedio: VARCHAR(20)"
- "peso_promedio_kg: NUMERIC(5,2)"
- "active: BOOLEAN"
- name: "vacunas" last_updated: "2026-01-18T13:01:47-06:00"
descripcion: "Catalogo de vacunas veterinarias"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "nombre: VARCHAR(100)"
- "descripcion: TEXT"
- "especie_id: UUID FK"
- "laboratorio: VARCHAR(100)"
- "dosis_ml: NUMERIC(5,2)"
- "intervalo_refuerzo_dias: INTEGER"
- "es_obligatoria: BOOLEAN"
- "active: BOOLEAN"
tablas:
- name: "propietarios"
descripcion: "Propietarios/duenos de mascotas"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "partner_id: UUID FK (opcional)"
- "nombre: VARCHAR(100)"
- "apellidos: VARCHAR(100)"
- "telefono: VARCHAR(20)"
- "telefono_emergencia: VARCHAR(20)"
- "email: VARCHAR(100)"
- "direccion: TEXT"
- "rfc: VARCHAR(13)"
- "active: BOOLEAN"
indices:
- "idx_propietarios_tenant"
- "idx_propietarios_telefono"
- name: "mascotas"
descripcion: "Mascotas/pacientes de la clinica"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "propietario_id: UUID FK"
- "especie_id: UUID FK"
- "raza_id: UUID FK"
- "nombre: VARCHAR(100)"
- "sexo: veterinaria.sexo_animal"
- "fecha_nacimiento: DATE"
- "edad_aproximada: VARCHAR(50)"
- "color: VARCHAR(50)"
- "peso_kg: NUMERIC(6,2)"
- "numero_chip: VARCHAR(50)"
- "tiene_chip: BOOLEAN"
- "esterilizado: BOOLEAN"
- "fecha_esterilizacion: DATE"
- "alergias: TEXT"
- "condiciones_especiales: TEXT"
- "notas: TEXT"
- "foto_url: VARCHAR(255)"
- "active: BOOLEAN"
indices:
- "idx_mascotas_tenant"
- "idx_mascotas_propietario"
- "idx_mascotas_especie"
- "idx_mascotas_chip"
- name: "cartilla_vacunacion"
descripcion: "Historial de vacunacion de mascotas"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "mascota_id: UUID FK"
- "vacuna_id: UUID FK"
- "veterinario_id: UUID FK"
- "fecha_aplicacion: DATE"
- "fecha_proximo_refuerzo: DATE"
- "lote: VARCHAR(50)"
- "laboratorio: VARCHAR(100)"
- "observaciones: TEXT"
indices:
- "idx_cartilla_tenant"
- "idx_cartilla_mascota"
- "idx_cartilla_fecha"
- name: "desparasitaciones"
descripcion: "Historial de desparasitaciones"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "mascota_id: UUID FK"
- "veterinario_id: UUID FK"
- "tipo: VARCHAR(50)"
- "producto: VARCHAR(100)"
- "dosis: VARCHAR(50)"
- "via_administracion: VARCHAR(50)"
- "fecha_aplicacion: DATE"
- "fecha_proxima: DATE"
- "observaciones: TEXT"
indices:
- "idx_desparasitaciones_tenant"
- "idx_desparasitaciones_mascota"
- name: "hospitalizacion"
descripcion: "Registro de hospitalizaciones"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "mascota_id: UUID FK"
- "veterinario_id: UUID FK"
- "consultation_id: UUID FK"
- "fecha_ingreso: TIMESTAMPTZ"
- "motivo_ingreso: TEXT"
- "diagnostico_ingreso: TEXT"
- "area: VARCHAR(50)"
- "numero_jaula: VARCHAR(20)"
- "estado: veterinaria.estado_hospitalizacion"
- "fecha_alta: TIMESTAMPTZ"
- "diagnostico_alta: TEXT"
- "instrucciones_alta: TEXT"
indices:
- "idx_hospitalizacion_tenant"
- "idx_hospitalizacion_mascota"
- "idx_hospitalizacion_estado"
- name: "hospitalizacion_monitoreo"
descripcion: "Monitoreo durante hospitalizacion"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "hospitalizacion_id: UUID FK"
- "fecha_hora: TIMESTAMPTZ"
- "peso_kg: NUMERIC(6,2)"
- "temperatura: NUMERIC(4,1)"
- "frecuencia_cardiaca: INTEGER"
- "frecuencia_respiratoria: INTEGER"
- "comio: BOOLEAN"
- "bebio_agua: BOOLEAN"
- "orino: BOOLEAN"
- "defeco: BOOLEAN"
- "consistencia_heces: VARCHAR(50)"
- "estado_animo: VARCHAR(50)"
- "nivel_dolor: INTEGER (0-10)"
- "observaciones: TEXT"
- "registrado_por: UUID FK"
indices:
- "idx_hospitalizacion_monitoreo_hosp"
- name: "estetica"
descripcion: "Servicios de estetica/grooming"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "mascota_id: UUID FK"
- "estilista_id: UUID FK"
- "fecha_servicio: TIMESTAMPTZ"
- "servicios: TEXT[]"
- "tipo_corte: VARCHAR(50)"
- "shampoo_usado: VARCHAR(100)"
- "estado: VARCHAR(20)"
- "hora_inicio: TIME"
- "hora_fin: TIME"
- "observaciones: TEXT"
- "observaciones_piel: TEXT"
- "precio: NUMERIC(10,2)"
indices:
- "idx_estetica_tenant"
- "idx_estetica_mascota"
- "idx_estetica_fecha"
extensiones_clinica:
tabla: "clinica.consultations"
columnas_agregadas:
- "mascota_id: UUID FK"
- "peso_actual: NUMERIC(6,2)"
- "temperatura: NUMERIC(4,1)"
# ============================================================================
# FARMACIA (VET-006) - Agregado 2026-01-07
# ============================================================================
enums_farmacia:
- name: "categoria_medicamento"
values:
- "antibiotico"
- "antiparasitario"
- "analgesico"
- "antiinflamatorio"
- "vacuna"
- "vitamina"
- "dermatologico"
- "oftalmico"
- "cardiaco"
- "digestivo"
- "otro"
- name: "tipo_movimiento_farmacia"
values:
- "entrada"
- "salida"
- "ajuste_positivo"
- "ajuste_negativo"
- "devolucion"
- "merma"
- name: "fraccion_controlada"
values:
- "no_controlado"
- "fraccion_i"
- "fraccion_ii"
- "fraccion_iii"
- "fraccion_iv"
tablas_farmacia:
- name: "medicamentos"
descripcion: "Catalogo de medicamentos veterinarios"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "codigo: VARCHAR(50)"
- "nombre: VARCHAR(150)"
- "nombre_comercial: VARCHAR(150)"
- "principio_activo: VARCHAR(200)"
- "categoria: veterinaria.categoria_medicamento"
- "presentacion: VARCHAR(100)"
- "concentracion: VARCHAR(50)"
- "contenido: VARCHAR(50)"
- "laboratorio: VARCHAR(100)"
- "requiere_receta: BOOLEAN"
- "controlado: BOOLEAN"
- "fraccion_controlada: veterinaria.fraccion_controlada"
- "stock_minimo: INTEGER"
- "stock_actual: INTEGER"
- "precio_compra: NUMERIC(10,2)"
- "precio_venta: NUMERIC(10,2)"
- "especies_aplicables: UUID[]"
- "active: BOOLEAN"
indices:
- "idx_medicamentos_tenant"
- "idx_medicamentos_codigo"
- "idx_medicamentos_nombre"
- "idx_medicamentos_categoria"
- "idx_medicamentos_controlado"
- "idx_medicamentos_stock_bajo"
- name: "medicamentos_lotes"
descripcion: "Lotes de medicamentos con control de caducidad"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "medicamento_id: UUID FK"
- "numero_lote: VARCHAR(50)"
- "fecha_caducidad: DATE"
- "cantidad_inicial: INTEGER"
- "cantidad_actual: INTEGER"
- "precio_compra: NUMERIC(10,2)"
- "factura_compra: VARCHAR(50)"
- "proveedor: VARCHAR(100)"
- "fecha_recepcion: DATE"
- "bloqueado: BOOLEAN"
- "motivo_bloqueo: TEXT"
indices:
- "idx_lotes_tenant"
- "idx_lotes_medicamento"
- "idx_lotes_caducidad"
- "idx_lotes_numero"
- "idx_lotes_proximos_caducar"
- name: "dispensaciones"
descripcion: "Registro de dispensacion de medicamentos"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "medicamento_id: UUID FK"
- "lote_id: UUID FK"
- "mascota_id: UUID FK"
- "veterinario_id: UUID FK"
- "receta_id: UUID FK"
- "consultation_id: UUID FK"
- "cantidad: INTEGER"
- "fecha_dispensacion: TIMESTAMPTZ"
- "dosis: VARCHAR(100)"
- "duracion_tratamiento: VARCHAR(50)"
- "instrucciones: TEXT"
- "dispensado_por: UUID FK"
- "notas: TEXT"
indices:
- "idx_dispensaciones_tenant"
- "idx_dispensaciones_medicamento"
- "idx_dispensaciones_mascota"
- "idx_dispensaciones_fecha"
- "idx_dispensaciones_veterinario"
- name: "movimientos_farmacia"
descripcion: "Kardex de movimientos de inventario de farmacia"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "medicamento_id: UUID FK"
- "lote_id: UUID FK"
- "tipo: veterinaria.tipo_movimiento_farmacia"
- "cantidad: INTEGER"
- "stock_anterior: INTEGER"
- "stock_posterior: INTEGER"
- "referencia_tipo: VARCHAR(50)"
- "referencia_id: UUID"
- "motivo: TEXT"
- "documento: VARCHAR(100)"
- "usuario_id: UUID FK"
indices:
- "idx_movimientos_tenant"
- "idx_movimientos_medicamento"
- "idx_movimientos_fecha"
- name: "bitacora_controlados"
descripcion: "Bitacora de medicamentos controlados (COFEPRIS)"
rls: true
columnas:
- "id: UUID PK"
- "tenant_id: UUID FK"
- "medicamento_id: UUID FK"
- "lote_id: UUID FK"
- "dispensacion_id: UUID FK"
- "tipo_movimiento: veterinaria.tipo_movimiento_farmacia"
- "cantidad: INTEGER"
- "mascota_id: UUID FK"
- "propietario_nombre: VARCHAR(200)"
- "receta_id: UUID FK"
- "veterinario_id: UUID FK"
- "veterinario_cedula: VARCHAR(50)"
- "justificacion: TEXT"
- "diagnostico: TEXT"
- "fecha_registro: TIMESTAMPTZ"
- "registrado_por: UUID FK"
- "ip_address: VARCHAR(45)"
indices:
- "idx_bitacora_tenant"
- "idx_bitacora_medicamento"
- "idx_bitacora_fecha"
funciones_farmacia:
- name: "get_lotes_proximos_caducar(tenant_id, dias)"
descripcion: "Obtiene lotes que caducaran en los proximos N dias"
- name: "get_medicamentos_stock_bajo(tenant_id)"
descripcion: "Obtiene medicamentos con stock igual o menor al minimo"
- name: "seleccionar_lote_fefo(medicamento_id, cantidad)"
descripcion: "Selecciona el lote con fecha de caducidad mas proxima (FEFO)"
triggers_farmacia:
- name: "trg_actualizar_stock"
tabla: "medicamentos_lotes"
descripcion: "Actualiza stock_actual en medicamentos cuando cambian los lotes"
- name: "trg_registrar_dispensacion"
tabla: "dispensaciones"
descripcion: "Registra movimiento y bitacora al dispensar medicamentos"
resumen:
total_enums: 5
total_catalogos: 3
total_tablas: 12
total_con_rls: 15
total_funciones: 3
total_triggers: 2
archivos_ddl:
- "database/schemas/01-veterinaria-schema-ddl.sql"
- "database/schemas/02-veterinaria-farmacia-ddl.sql"
archivos_seeds:
- "database/seeds/fase8/01-veterinaria-catalogos.sql"
ultima_actualizacion: "2026-01-07"
actualizado_por: "Orquestador Workspace (Sprint 9)"

View File

@ -0,0 +1,24 @@
# FRONTEND_INVENTORY.yml - clinica-veterinaria
# Generado: 2026-01-18T13:01:47-06:00
project: "clinica-veterinaria"
layer: "frontend"
features: []
components: []
pages: []
stores: []
hooks: []
total:
features: 0
components: 0
pages: 0
stores: 0
hooks: 0
last_updated: "2026-01-18T13:01:47-06:00"

View File

@ -1,82 +1,25 @@
--- # MASTER_INVENTORY.yml - clinica-veterinaria
# MASTER INVENTORY - Clinica Veterinaria # Generado: 2026-01-18T13:01:47-06:00
# Version: 1.0.0 # Version: 1.0.0
# Ultima actualizacion: 2026-01-07
proyecto: "clinica-veterinaria" project:
descripcion: "ERP especializado para clinicas veterinarias" name: "clinica-veterinaria"
version: "0.1.0" type: "erp-vertical"
estado: "desarrollo" parent: "erp-core"
tipo: "vertical" version: "0.1.0"
base: "erp-clinicas"
progreso: summary:
fase_actual: "Database" total_modules: 0
porcentaje: 15 backend_entities: 0
database_completado: true frontend_components: 0
backend_completado: false database_tables: 0
frontend_completado: false test_files: 0
coverage_percentage: 0
herencia: inventories:
vertical_padre: "erp-clinicas" backend: "BACKEND_INVENTORY.yml"
suite_core: "erp-core" frontend: "FRONTEND_INVENTORY.yml"
modulos_heredados: database: "DATABASE_INVENTORY.yml"
- "auth"
- "users"
- "tenants"
- "roles"
- "patients"
- "appointments"
- "billing"
modulos_especificos: last_updated: "2026-01-18T13:01:47-06:00"
- id: "VET-001" updated_by: "propagate-governance.sh"
nombre: "mascotas"
descripcion: "Registro de animales/pacientes"
estado: "ddl_completado"
- id: "VET-002"
nombre: "propietarios"
descripcion: "Duenos de mascotas"
estado: "ddl_completado"
- id: "VET-003"
nombre: "vacunacion"
descripcion: "Cartilla y control de vacunas"
estado: "ddl_completado"
- id: "VET-004"
nombre: "hospitalizacion"
descripcion: "Control de internamiento"
estado: "ddl_completado"
- id: "VET-005"
nombre: "farmacia"
descripcion: "Inventario veterinario"
estado: "pendiente"
database:
schema: "veterinaria"
archivo_ddl: "database/schemas/01-veterinaria-schema-ddl.sql"
archivo_seeds: "database/seeds/fase8/01-veterinaria-catalogos.sql"
tablas_especificas:
- "pets"
- "pet_owners"
- "vaccinations"
- "vaccination_records"
- "hospitalizations"
- "vet_consultations"
catalogos:
- "especies"
- "razas_por_especie"
- "vacunas_por_especie"
- "especialidades_veterinarias"
proximas_tareas:
- "Implementar backend modulo mascotas"
- "Crear frontend para cartilla de vacunacion"
- "Integracion con erp-clinicas"
ultima_actualizacion: "2026-01-07"
actualizado_por: "Orquestador"

View File

@ -0,0 +1,27 @@
# Indice de Tareas - clinica-veterinaria
version: "1.0.0"
proyecto: clinica-veterinaria
tipo: SUB_CONSUMER
created: "2026-01-24"
updated: "2026-01-24"
resumen:
total_tareas: 0
completadas: 0
en_progreso: 0
pendientes: 0
formato_id:
patron: "TASK-{YYYY-MM-DD}-{NNN}"
ejemplo: "TASK-2026-01-24-001"
por_fecha: {}
tareas_activas: []
instrucciones:
crear_tarea: |
1. Crear carpeta YYYY-MM-DD/ si no existe
2. Copiar _templates/TASK-TEMPLATE/ a YYYY-MM-DD/TASK-NNN-descripcion/
3. Completar METADATA.yml
4. Documentar fases CAPVED conforme avanza
5. Actualizar este indice al completar

View File

@ -0,0 +1,30 @@
# Fase C - Contexto
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
**Agente:** [agente responsable]
---
## Vinculacion
| Campo | Valor |
|-------|-------|
| Proyecto | template-saas |
| Modulo | [modulo afectado] |
| Epic | [ID de epic si aplica] |
| Feature | [ID de feature si aplica] |
## Clasificacion
- **Tipo:** [feature|bugfix|refactor|analysis|documentation]
- **Origen:** [ticket|plan|incidente|mejora]
- **Prioridad:** [P0|P1|P2|P3]
## Documentos SIMCO Cargados
1. [Lista de directivas consultadas]
## Estado Inicial
[Descripcion del estado inicial antes de la tarea]

View File

@ -0,0 +1,26 @@
# Fase A - Analisis
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
---
## Comportamiento Deseado
[Descripcion del resultado esperado]
## Objetos Impactados
| Capa | Impacto |
|------|---------|
| [DDL/Backend/Frontend] | [descripcion] |
## Dependencias
- [Lista de dependencias]
## Riesgos
| Riesgo | Mitigacion |
|--------|------------|
| [riesgo] | [mitigacion] |

View File

@ -0,0 +1,21 @@
# Fase P - Planeacion
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
---
## Subtareas
| # | Subtarea | Dominio | Criterio de Aceptacion |
|---|----------|---------|------------------------|
| 1 | [subtarea] | [dominio] | [criterio] |
## Orden de Ejecucion
[secuencia de subtareas]
## Asignacion
- Agente principal: [agente]
- Subagentes: [lista o ninguno]

View File

@ -0,0 +1,24 @@
# Fase V - Validacion
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
---
## Checklist de Validacion
### Cobertura Analisis -> Plan
- [ ] Todas las acciones del analisis tienen subtarea correspondiente
- [ ] No hay acciones huerfanas
### Dependencias
- [ ] No hay dependencias ocultas
- [ ] Orden de ejecucion respeta dependencias
### Scope Creep
- [ ] No detectado / [descripcion si hay]
## Gate de Validacion
- **Resultado:** [APROBADO|RECHAZADO]
- **Notas:** [notas adicionales]

View File

@ -0,0 +1,20 @@
# Fase E - Ejecucion
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
---
## Progreso de Subtareas
| # | Subtarea | Estado | Notas |
|---|----------|--------|-------|
| 1 | [subtarea] | [pendiente|completada] | [notas] |
## Validaciones Build/Lint
- [resultado de validaciones]
## Desviaciones
- [desviaciones del plan si las hay]

View File

@ -0,0 +1,32 @@
# Fase D - Documentacion
**Tarea:** [ID de tarea]
**Fecha:** [YYYY-MM-DD]
---
## Actualizaciones Realizadas
### Documentacion
- [ ] _MAP.md actualizado
- [ ] README.md actualizado si aplica
### Inventarios
- [ ] Inventarios actualizados si cambio codigo
### Trazas
- [ ] Registrado en indice de tareas
### ADRs
- [ ] ADR creado si decision arquitectonica
## Lecciones Aprendidas
### Que funciono bien
[descripcion]
### Que se puede mejorar
[descripcion]
### Para futuras tareas similares
[recomendaciones]

View File

@ -0,0 +1,41 @@
# METADATA.yml - Template para tareas
id: TASK-YYYY-MM-DD-NNN
fecha: "YYYY-MM-DD"
titulo: "[Titulo de la tarea]"
descripcion: "[Descripcion detallada]"
clasificacion:
tipo: "[feature|bugfix|refactor|analysis|documentation]"
origen: "[ticket|plan|incidente|mejora]"
prioridad: "[P0|P1|P2|P3]"
feature: "[ID de feature si aplica]"
proyecto:
nombre: template-saas
path: projects/template-saas
nivel: PROVIDER
estado:
actual: pendiente
progreso: 0%
fecha_inicio: null
fecha_fin: null
fases_capved:
contexto: pendiente
analisis: pendiente
planeacion: pendiente
validacion: pendiente
ejecucion: pendiente
documentacion: pendiente
agente:
principal: "[agente responsable]"
subagentes: []
commits: []
metricas:
archivos_modificados: 0
archivos_creados: 0
lineas_codigo: 0