Compare commits
No commits in common. "master" and "main" have entirely different histories.
76
.gitignore
vendored
Normal file
76
.gitignore
vendored
Normal 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
11
.gitmodules
vendored
Normal 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
42
CLAUDE.md
Normal 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
7
apps/_MAP.md
Normal 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
1
apps/backend
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit fd9f7004bc8b02a01aba03addcdbf881fdc9ca9b
|
||||||
1
apps/database
Submodule
1
apps/database
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 8ed6366b3006457a5a16dfa58fb3ad0c09eb7ac5
|
||||||
1
apps/frontend-web
Submodule
1
apps/frontend-web
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 36a84875a4367a91b303c8159454594f84d7aeb9
|
||||||
@ -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
|
|
||||||
-- ============================================================================
|
|
||||||
@ -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
|
|
||||||
-- ============================================================================
|
|
||||||
@ -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;
|
|
||||||
37
docs/00-vision-general/_MAP.md
Normal file
37
docs/00-vision-general/_MAP.md
Normal 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
|
||||||
187
docs/04-fase-saas/MGN-016-billing/README.md
Normal file
187
docs/04-fase-saas/MGN-016-billing/README.md
Normal 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*
|
||||||
48
docs/04-fase-saas/MGN-016-billing/_MAP.md
Normal file
48
docs/04-fase-saas/MGN-016-billing/_MAP.md
Normal 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*
|
||||||
161
docs/04-fase-saas/MGN-017-plans/README.md
Normal file
161
docs/04-fase-saas/MGN-017-plans/README.md
Normal 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*
|
||||||
49
docs/04-fase-saas/MGN-017-plans/_MAP.md
Normal file
49
docs/04-fase-saas/MGN-017-plans/_MAP.md
Normal 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*
|
||||||
177
docs/04-fase-saas/MGN-018-webhooks/README.md
Normal file
177
docs/04-fase-saas/MGN-018-webhooks/README.md
Normal 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*
|
||||||
50
docs/04-fase-saas/MGN-018-webhooks/_MAP.md
Normal file
50
docs/04-fase-saas/MGN-018-webhooks/_MAP.md
Normal 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*
|
||||||
165
docs/04-fase-saas/MGN-019-feature-flags/README.md
Normal file
165
docs/04-fase-saas/MGN-019-feature-flags/README.md
Normal 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*
|
||||||
50
docs/04-fase-saas/MGN-019-feature-flags/_MAP.md
Normal file
50
docs/04-fase-saas/MGN-019-feature-flags/_MAP.md
Normal 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*
|
||||||
73
docs/04-fase-saas/README.md
Normal file
73
docs/04-fase-saas/README.md
Normal 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
117
docs/04-fase-saas/_MAP.md
Normal 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*
|
||||||
34
docs/04-modelado/trazabilidad/TRACEABILITY-MASTER.yml
Normal file
34
docs/04-modelado/trazabilidad/TRACEABILITY-MASTER.yml
Normal 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"
|
||||||
248
docs/05-fase-ia/MGN-020-ai-integration/README.md
Normal file
248
docs/05-fase-ia/MGN-020-ai-integration/README.md
Normal 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*
|
||||||
59
docs/05-fase-ia/MGN-020-ai-integration/_MAP.md
Normal file
59
docs/05-fase-ia/MGN-020-ai-integration/_MAP.md
Normal 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*
|
||||||
281
docs/05-fase-ia/MGN-021-whatsapp-business/README.md
Normal file
281
docs/05-fase-ia/MGN-021-whatsapp-business/README.md
Normal 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*
|
||||||
49
docs/05-fase-ia/MGN-021-whatsapp-business/_MAP.md
Normal file
49
docs/05-fase-ia/MGN-021-whatsapp-business/_MAP.md
Normal 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*
|
||||||
275
docs/05-fase-ia/MGN-022-mcp-server/README.md
Normal file
275
docs/05-fase-ia/MGN-022-mcp-server/README.md
Normal 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*
|
||||||
63
docs/05-fase-ia/MGN-022-mcp-server/_MAP.md
Normal file
63
docs/05-fase-ia/MGN-022-mcp-server/_MAP.md
Normal 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
103
docs/05-fase-ia/README.md
Normal 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
131
docs/05-fase-ia/_MAP.md
Normal 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
50
docs/README.md
Normal 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)
|
||||||
120
docs/_MAP.md
120
docs/_MAP.md
@ -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
34
docs/_SSOT/README.md
Normal 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
|
||||||
534
docs/_definitions/DATABASE-SCHEMA.md
Normal file
534
docs/_definitions/DATABASE-SCHEMA.md
Normal 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*
|
||||||
181
docs/_definitions/ENTITIES-CATALOG.md
Normal file
181
docs/_definitions/ENTITIES-CATALOG.md
Normal 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*
|
||||||
244
docs/_definitions/MODULES-CATALOG.md
Normal file
244
docs/_definitions/MODULES-CATALOG.md
Normal 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*
|
||||||
135
docs/_definitions/SERVICES-CATALOG.md
Normal file
135
docs/_definitions/SERVICES-CATALOG.md
Normal 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*
|
||||||
112
docs/_definitions/_INDEX.yml
Normal file
112
docs/_definitions/_INDEX.yml
Normal 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
166
docs/_quick/QUICK-API.yml
Normal 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"
|
||||||
169
docs/_quick/QUICK-DATABASE.yml
Normal file
169
docs/_quick/QUICK-DATABASE.yml
Normal 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
107
docs/_quick/QUICK-INDEX.yml
Normal 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"
|
||||||
141
docs/_quick/QUICK-MODULES.yml
Normal file
141
docs/_quick/QUICK-MODULES.yml
Normal 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"
|
||||||
@ -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
|
||||||
|
|||||||
139
orchestration/00-guidelines/HERENCIA-ERP-CORE.md
Normal file
139
orchestration/00-guidelines/HERENCIA-ERP-CORE.md
Normal 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
|
||||||
191
orchestration/00-guidelines/HERENCIA-SIMCO.md
Normal file
191
orchestration/00-guidelines/HERENCIA-SIMCO.md
Normal 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
186
orchestration/BOOTLOADER.md
Normal 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)*
|
||||||
@ -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/"
|
||||||
|
|||||||
193
orchestration/DEPENDENCY-GRAPH.yml
Normal file
193
orchestration/DEPENDENCY-GRAPH.yml
Normal 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"
|
||||||
404
orchestration/MAPA-DOCUMENTACION.yml
Normal file
404
orchestration/MAPA-DOCUMENTACION.yml
Normal 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
|
||||||
|
# ===============================================================================
|
||||||
454
orchestration/PROJECT-PROFILE.yml
Normal file
454
orchestration/PROJECT-PROFILE.yml
Normal 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"
|
||||||
@ -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 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
285
orchestration/TRACEABILITY.yml
Normal file
285
orchestration/TRACEABILITY.yml
Normal 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
102
orchestration/_MAP.md
Normal 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
|
||||||
232
orchestration/_inheritance.yml
Normal file
232
orchestration/_inheritance.yml
Normal 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
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
@ -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
|
|
||||||
# =============================================================================
|
|
||||||
22
orchestration/inventarios/BACKEND_INVENTORY.yml
Normal file
22
orchestration/inventarios/BACKEND_INVENTORY.yml
Normal 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"
|
||||||
@ -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)"
|
|
||||||
|
|||||||
24
orchestration/inventarios/FRONTEND_INVENTORY.yml
Normal file
24
orchestration/inventarios/FRONTEND_INVENTORY.yml
Normal 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"
|
||||||
@ -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"
|
|
||||||
|
|||||||
27
orchestration/tareas/_INDEX.yml
Normal file
27
orchestration/tareas/_INDEX.yml
Normal 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
|
||||||
30
orchestration/tareas/_templates/TASK-TEMPLATE/01-CONTEXTO.md
Normal file
30
orchestration/tareas/_templates/TASK-TEMPLATE/01-CONTEXTO.md
Normal 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]
|
||||||
26
orchestration/tareas/_templates/TASK-TEMPLATE/02-ANALISIS.md
Normal file
26
orchestration/tareas/_templates/TASK-TEMPLATE/02-ANALISIS.md
Normal 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] |
|
||||||
@ -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]
|
||||||
@ -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]
|
||||||
@ -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]
|
||||||
@ -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]
|
||||||
41
orchestration/tareas/_templates/TASK-TEMPLATE/METADATA.yml
Normal file
41
orchestration/tareas/_templates/TASK-TEMPLATE/METADATA.yml
Normal 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
|
||||||
Loading…
Reference in New Issue
Block a user