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
|
||||
|
||||
**Proyecto:** clinica-veterinaria
|
||||
**Tipo:** ERP Especializado (hereda de erp-clinicas)
|
||||
**Fecha:** 2026-01-07
|
||||
**Estado:** Fase 0 - Preparacion
|
||||
**Tipo:** ERP Especializado (hereda de erp-clinicas -> erp-core)
|
||||
**Fecha:** 2026-01-16
|
||||
**Estado:** Estructura _definitions/ y _quick/ completada
|
||||
**Nivel de Herencia:** 3 (clinica-veterinaria <- erp-clinicas <- erp-core)
|
||||
|
||||
---
|
||||
|
||||
@ -12,23 +13,46 @@
|
||||
```
|
||||
docs/
|
||||
├── _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/
|
||||
│ ├── README.md <- Indice de vision
|
||||
│ └── VISION.md <- Vision estrategica [PENDIENTE]
|
||||
│ └── VISION.md <- Vision estrategica
|
||||
│
|
||||
├── 01-epicas/
|
||||
│ └── VET-XXX-*.md <- Epicas veterinarias
|
||||
│
|
||||
├── 02-definicion-modulos/
|
||||
│ ├── _MAP.md <- Indice de modulos [PENDIENTE]
|
||||
│ ├── modulo-mascotas.md <- Registro de pacientes [PENDIENTE]
|
||||
│ ├── modulo-propietarios.md <- Duenos de mascotas [PENDIENTE]
|
||||
│ ├── modulo-vacunacion.md <- Cartilla de vacunas [PENDIENTE]
|
||||
│ ├── 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]
|
||||
│ ├── _MAP.md <- Indice de modulos
|
||||
│ ├── modulo-mascotas.md <- Registro de pacientes
|
||||
│ ├── modulo-vacunacion.md <- Cartilla de vacunas
|
||||
│ └── ... <- Otros modulos veterinarios
|
||||
│
|
||||
├── 03-especificaciones/
|
||||
│ └── ... (futuras especificaciones tecnicas)
|
||||
├── 04-fase-saas/ <- Modulos SaaS
|
||||
│ ├── 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/
|
||||
└── ... (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 Core
|
||||
@ -140,6 +175,43 @@ campos_principales:
|
||||
| SENASICA | Reportes de vacunacion | Pendiente |
|
||||
| Laboratorios | Resultados de analisis | 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
|
||||
```
|
||||
|
||||
## 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 |
|
||||
|---------|-------|---------|
|
||||
| 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"
|
||||
version: "1.0.0"
|
||||
ultima_actualizacion: "2026-01-07"
|
||||
workspace_root: "/home/isem/workspace-v1"
|
||||
project_root: "/home/isem/workspace-v1/projects/clinica-veterinaria"
|
||||
hereda_de: "/home/isem/workspace-v1/projects/erp-clinicas"
|
||||
workspace_root: "/home/isem/workspace-v2"
|
||||
project_root: "/home/isem/workspace-v2/projects/clinica-veterinaria"
|
||||
hereda_de: "/home/isem/workspace-v2/projects/erp-clinicas"
|
||||
|
||||
# ===============================================================================
|
||||
# VARIABLES DEL PROYECTO (PRE-RESUELTAS)
|
||||
@ -26,23 +26,23 @@ variables:
|
||||
|
||||
# Base de datos
|
||||
DB_NAME: "clinica_veterinaria"
|
||||
DB_DDL_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database/schemas"
|
||||
DB_SCRIPTS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database"
|
||||
DB_SEEDS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/database/seeds"
|
||||
DB_DDL_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database/schemas"
|
||||
DB_SCRIPTS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database"
|
||||
DB_SEEDS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/database/seeds"
|
||||
RECREATE_CMD: "drop-and-recreate-database.sh"
|
||||
|
||||
# Backend
|
||||
BACKEND_ROOT: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend"
|
||||
BACKEND_SRC: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/src"
|
||||
BACKEND_TESTS: "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/tests"
|
||||
BACKEND_ROOT: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend"
|
||||
BACKEND_SRC: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/src"
|
||||
BACKEND_TESTS: "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/tests"
|
||||
|
||||
# Frontend
|
||||
FRONTEND_ROOT: "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend"
|
||||
FRONTEND_SRC: "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend/src"
|
||||
FRONTEND_ROOT: "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend"
|
||||
FRONTEND_SRC: "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend/src"
|
||||
|
||||
# Documentacion
|
||||
DOCS_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/docs"
|
||||
ORCHESTRATION_PATH: "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration"
|
||||
DOCS_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/docs"
|
||||
ORCHESTRATION_PATH: "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration"
|
||||
|
||||
# ===============================================================================
|
||||
# ALIASES RESUELTOS
|
||||
@ -50,32 +50,32 @@ variables:
|
||||
|
||||
aliases:
|
||||
# Directivas globales
|
||||
"@SIMCO": "/home/isem/workspace-v1/orchestration/directivas/simco"
|
||||
"@PRINCIPIOS": "/home/isem/workspace-v1/orchestration/directivas/principios"
|
||||
"@PERFILES": "/home/isem/workspace-v1/orchestration/agents/perfiles"
|
||||
"@CATALOG": "/home/isem/workspace-v1/shared/catalog"
|
||||
"@SIMCO": "/home/isem/workspace-v2/orchestration/directivas/simco"
|
||||
"@PRINCIPIOS": "/home/isem/workspace-v2/orchestration/directivas/principios"
|
||||
"@PERFILES": "/home/isem/workspace-v2/orchestration/agents/perfiles"
|
||||
"@CATALOG": "/home/isem/workspace-v2/shared/catalog"
|
||||
|
||||
# Proyecto padre (erp-clinicas)
|
||||
"@PARENT": "/home/isem/workspace-v1/projects/erp-clinicas"
|
||||
"@PARENT_CORE": "/home/isem/workspace-v1/projects/erp-core"
|
||||
"@PARENT": "/home/isem/workspace-v2/projects/erp-clinicas"
|
||||
"@PARENT_CORE": "/home/isem/workspace-v2/projects/erp-core"
|
||||
|
||||
# Proyecto especifico
|
||||
"@DDL": "/home/isem/workspace-v1/projects/clinica-veterinaria/database/schemas"
|
||||
"@SEEDS": "/home/isem/workspace-v1/projects/clinica-veterinaria/database/seeds"
|
||||
"@BACKEND": "/home/isem/workspace-v1/projects/clinica-veterinaria/backend/src"
|
||||
"@FRONTEND": "/home/isem/workspace-v1/projects/clinica-veterinaria/frontend/src"
|
||||
"@DOCS": "/home/isem/workspace-v1/projects/clinica-veterinaria/docs"
|
||||
"@DDL": "/home/isem/workspace-v2/projects/clinica-veterinaria/database/schemas"
|
||||
"@SEEDS": "/home/isem/workspace-v2/projects/clinica-veterinaria/database/seeds"
|
||||
"@BACKEND": "/home/isem/workspace-v2/projects/clinica-veterinaria/backend/src"
|
||||
"@FRONTEND": "/home/isem/workspace-v2/projects/clinica-veterinaria/frontend/src"
|
||||
"@DOCS": "/home/isem/workspace-v2/projects/clinica-veterinaria/docs"
|
||||
|
||||
# Inventarios
|
||||
"@INVENTORY": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios"
|
||||
"@INV_DB": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
|
||||
"@INV_BE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
|
||||
"@INV_FE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
|
||||
"@INVENTORY": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios"
|
||||
"@INV_DB": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
|
||||
"@INV_BE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
|
||||
"@INV_FE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
|
||||
|
||||
# Trazas
|
||||
"@TRAZA_DB": "/home/isem/workspace-v1/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_FE": "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-FRONTEND.md"
|
||||
"@TRAZA_DB": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-DATABASE.md"
|
||||
"@TRAZA_BE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-BACKEND.md"
|
||||
"@TRAZA_FE": "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/TRAZA-TAREAS-FRONTEND.md"
|
||||
|
||||
# ===============================================================================
|
||||
# CONTEXTO POR NIVEL
|
||||
@ -87,25 +87,25 @@ contexto_por_nivel:
|
||||
tokens_estimados: 4500
|
||||
obligatorio: true
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
tokens: 500
|
||||
- path: "/home/isem/workspace-v1/orchestration/referencias/ALIASES.yml"
|
||||
- path: "/home/isem/workspace-v2/orchestration/referencias/ALIASES.yml"
|
||||
proposito: "Resolucion de @ALIAS"
|
||||
tokens: 400
|
||||
|
||||
@ -114,13 +114,13 @@ contexto_por_nivel:
|
||||
tokens_estimados: 3000
|
||||
obligatorio: true
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
tokens: 800
|
||||
|
||||
@ -129,23 +129,23 @@ contexto_por_nivel:
|
||||
tokens_estimados: 2500
|
||||
archivos_por_operacion:
|
||||
CREAR:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-CREAR.md"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-CREAR.md"
|
||||
MODIFICAR:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-MODIFICAR.md"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-MODIFICAR.md"
|
||||
VALIDAR:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-VALIDAR.md"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-VALIDAR.md"
|
||||
DELEGAR:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DELEGACION.md"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-DELEGACION.md"
|
||||
archivos_por_dominio:
|
||||
DDL:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DDL.md"
|
||||
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-DDL.md"
|
||||
- "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/DATABASE_INVENTORY.yml"
|
||||
BACKEND:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-BACKEND.md"
|
||||
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-BACKEND.md"
|
||||
- "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/BACKEND_INVENTORY.yml"
|
||||
FRONTEND:
|
||||
- "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-FRONTEND.md"
|
||||
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
|
||||
- "/home/isem/workspace-v2/orchestration/directivas/simco/SIMCO-FRONTEND.md"
|
||||
- "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/inventarios/FRONTEND_INVENTORY.yml"
|
||||
|
||||
L3_tarea:
|
||||
descripcion: "Contexto especifico de la tarea"
|
||||
@ -305,9 +305,9 @@ validacion_tokens:
|
||||
herencia:
|
||||
tipo: "VERTICAL"
|
||||
hereda_de:
|
||||
- "/home/isem/workspace-v1/projects/erp-clinicas/"
|
||||
- "/home/isem/workspace-v1/projects/erp-core/"
|
||||
- "/home/isem/workspace-v1/orchestration/"
|
||||
- "/home/isem/workspace-v2/projects/erp-clinicas/"
|
||||
- "/home/isem/workspace-v2/projects/erp-core/"
|
||||
- "/home/isem/workspace-v2/orchestration/"
|
||||
|
||||
# ===============================================================================
|
||||
# BUSQUEDA DE HISTORICO
|
||||
@ -316,7 +316,7 @@ herencia:
|
||||
busqueda_historico:
|
||||
habilitado: true
|
||||
ubicaciones:
|
||||
- "/home/isem/workspace-v1/projects/clinica-veterinaria/orchestration/trazas/"
|
||||
- "/home/isem/workspace-v1/projects/erp-clinicas/orchestration/trazas/"
|
||||
- "/home/isem/workspace-v1/orchestration/errores/REGISTRO-ERRORES.yml"
|
||||
- "/home/isem/workspace-v1/shared/knowledge-base/lessons-learned/"
|
||||
- "/home/isem/workspace-v2/projects/clinica-veterinaria/orchestration/trazas/"
|
||||
- "/home/isem/workspace-v2/projects/erp-clinicas/orchestration/trazas/"
|
||||
- "/home/isem/workspace-v2/orchestration/errores/REGISTRO-ERRORES.yml"
|
||||
- "/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 |
|
||||
|-----------|--------|-----------|
|
||||
| docs/00-vision-general/VISION.md | FALTA | P0 |
|
||||
| docs/00-vision-general/_MAP.md | FALTA | P1 |
|
||||
| docs/00-vision-general/VISION.md | EXISTE | - |
|
||||
| docs/00-vision-general/_MAP.md | EXISTE | - |
|
||||
| docs/02-definicion-modulos/_MAP.md | FALTA | P0 |
|
||||
| modulo-mascotas.md | FALTA | P1 |
|
||||
| modulo-propietarios.md | FALTA | P1 |
|
||||
| modulo-vacunacion.md | FALTA | P1 |
|
||||
| modulo-hospitalizacion.md | FALTA | P2 |
|
||||
| modulo-farmacia.md | FALTA | P2 |
|
||||
| orchestration/_MAP.md | FALTA | P1 |
|
||||
| orchestration/_MAP.md | EXISTE | - |
|
||||
| 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 - Clinica Veterinaria
|
||||
# Version: 1.0.0
|
||||
# Ultima actualizacion: 2026-01-07
|
||||
# DATABASE_INVENTORY.yml - clinica-veterinaria
|
||||
# Generado: 2026-01-18T13:01:47-06:00
|
||||
|
||||
proyecto: "clinica-veterinaria"
|
||||
schema_principal: "veterinaria"
|
||||
version_ddl: "1.0"
|
||||
estado: "completado"
|
||||
project: "clinica-veterinaria"
|
||||
layer: "database"
|
||||
|
||||
herencia:
|
||||
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"]
|
||||
schemas: []
|
||||
|
||||
enums:
|
||||
- name: "sexo_animal"
|
||||
values:
|
||||
- "macho"
|
||||
- "hembra"
|
||||
- "desconocido"
|
||||
tables: []
|
||||
|
||||
- name: "estado_hospitalizacion"
|
||||
values:
|
||||
- "ingresado"
|
||||
- "en_tratamiento"
|
||||
- "estable"
|
||||
- "critico"
|
||||
- "alta"
|
||||
- "fallecido"
|
||||
functions: []
|
||||
|
||||
catalogos:
|
||||
- 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"
|
||||
triggers: []
|
||||
|
||||
- name: "razas"
|
||||
descripcion: "Catalogo de razas por especie"
|
||||
rls: true
|
||||
columnas:
|
||||
- "id: UUID PK"
|
||||
- "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"
|
||||
total:
|
||||
schemas: 0
|
||||
tables: 0
|
||||
functions: 0
|
||||
triggers: 0
|
||||
|
||||
- name: "vacunas"
|
||||
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)"
|
||||
last_updated: "2026-01-18T13:01:47-06:00"
|
||||
|
||||
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 - Clinica Veterinaria
|
||||
# MASTER_INVENTORY.yml - clinica-veterinaria
|
||||
# Generado: 2026-01-18T13:01:47-06:00
|
||||
# Version: 1.0.0
|
||||
# Ultima actualizacion: 2026-01-07
|
||||
|
||||
proyecto: "clinica-veterinaria"
|
||||
descripcion: "ERP especializado para clinicas veterinarias"
|
||||
version: "0.1.0"
|
||||
estado: "desarrollo"
|
||||
tipo: "vertical"
|
||||
base: "erp-clinicas"
|
||||
project:
|
||||
name: "clinica-veterinaria"
|
||||
type: "erp-vertical"
|
||||
parent: "erp-core"
|
||||
version: "0.1.0"
|
||||
|
||||
progreso:
|
||||
fase_actual: "Database"
|
||||
porcentaje: 15
|
||||
database_completado: true
|
||||
backend_completado: false
|
||||
frontend_completado: false
|
||||
summary:
|
||||
total_modules: 0
|
||||
backend_entities: 0
|
||||
frontend_components: 0
|
||||
database_tables: 0
|
||||
test_files: 0
|
||||
coverage_percentage: 0
|
||||
|
||||
herencia:
|
||||
vertical_padre: "erp-clinicas"
|
||||
suite_core: "erp-core"
|
||||
modulos_heredados:
|
||||
- "auth"
|
||||
- "users"
|
||||
- "tenants"
|
||||
- "roles"
|
||||
- "patients"
|
||||
- "appointments"
|
||||
- "billing"
|
||||
inventories:
|
||||
backend: "BACKEND_INVENTORY.yml"
|
||||
frontend: "FRONTEND_INVENTORY.yml"
|
||||
database: "DATABASE_INVENTORY.yml"
|
||||
|
||||
modulos_especificos:
|
||||
- id: "VET-001"
|
||||
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"
|
||||
last_updated: "2026-01-18T13:01:47-06:00"
|
||||
updated_by: "propagate-governance.sh"
|
||||
|
||||
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