erp-clinicas/orchestration/propagacion-fase8/FASE-6-PLAN-REFINADO.md
rckrdmrd 62cfcdb9c9 feat: Add database schemas, seeds and orchestration updates
- Add database schemas and seeds directories
- Add CONTEXT-MAP.yml and ENVIRONMENT-INVENTORY.yml
- Add propagacion-fase8 directory
- Update CONTEXTO-PROYECTO.md and DEPENDENCIAS-SHARED.yml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:37:26 -06:00

7.1 KiB

FASE 6: Plan Refinado - ERP Clínicas

Proyecto: erp-clinicas Fecha: 2026-01-04 Estado: Completado Base: FASE-5-ANALISIS-DEPENDENCIAS.md


1. Estructura Final de Archivos

1.1 DDL Schemas

# Archivo Líneas Tablas ENUMs
1 04-financial-ext-schema-ddl.sql ~130 4 2
2 05-hr-ext-fase8-schema-ddl.sql ~320 11 3
3 06-inventory-ext-fase8-schema-ddl.sql ~160 5 0
4 07-purchase-ext-fase8-schema-ddl.sql ~120 1 0
5 08-clinica-ext-fase8-schema-ddl.sql ~80 2 0
Total ~810 23 5

1.2 Seed Data

# Archivo Registros Tipo
1 00-removal-strategies.sql 4 Global
2 01-clinica-skills.sql ~40 Tenant
3 02-clinica-catalogos.sql ~25 Tenant
Total ~69

2. Contenido Detallado por Archivo

2.1 04-financial-ext-schema-ddl.sql

Schemas: financial
ENUMs:
  - payment_method_type (inbound, outbound)
  - reconcile_model_type (writeoff_button, writeoff_suggestion, invoice_matching)

Tablas:
  1. payment_term_lines
     - id, tenant_id, payment_term_id, value_type, value, days
     - day_of_month, applies_to, sequence, created_at

  2. payment_methods
     - id, tenant_id, name, code, payment_type
     - aplica_seguro, requiere_factura, porcentaje_seguro
     - active, created_at

  3. reconcile_models
     - id, tenant_id, name, rule_type, auto_reconcile
     - match_partner, match_amount, tolerance
     - created_at

  4. reconcile_model_lines
     - id, tenant_id, model_id, sequence, account_id
     - amount_type, amount_value, label
     - created_at

RLS: payment_methods, payment_term_lines, reconcile_models
Índices: 6

2.2 05-hr-ext-fase8-schema-ddl.sql

Schemas: hr
ENUMs:
  - expense_status (draft, submitted, approved, posted, paid, rejected)
  - resume_line_type (experience, education, certification, internal)
  - payslip_status (draft, verify, done, cancel)

Tablas:
  1. work_locations (12 campos)
  2. skill_types (4 campos)
  3. skills (7 campos) + codigo_ssa, requiere_cedula
  4. skill_levels (6 campos)
  5. employee_skills (7 campos)
  6. expense_sheets (12 campos) + paciente_id, cita_id
  7. expenses (15 campos)
  8. employee_resume_lines (10 campos)
  9. payslip_structures (7 campos) + tipo_pago
  10. payslips (15 campos) + consultorio_id
  11. payslip_lines (10 campos)

RLS: work_locations, skill_types, skills, skill_levels,
     expense_sheets, expenses, payslip_structures, payslips
Índices: 18

2.3 06-inventory-ext-fase8-schema-ddl.sql

Schemas: inventory
ENUMs: (ninguno)

Tablas:
  1. package_types (10 campos)
  2. packages (12 campos) + lote, fecha_caducidad, laboratorio, registro_sanitario
  3. storage_categories (12 campos) + requiere_refrigeracion, temperatura, es_controlado
  4. putaway_rules (10 campos)
  5. removal_strategies (5 campos)

RLS: package_types, packages, storage_categories, putaway_rules
Índices: 8

2.4 07-purchase-ext-fase8-schema-ddl.sql

Schemas: purchase
ENUMs: (ninguno)

Tablas:
  1. product_supplierinfo (14 campos)
     - Extensiones: aplica_iva, requiere_receta, tiempo_entrega_dias

Funciones:
  1. action_create_stock_moves(UUID)

RLS: product_supplierinfo
Índices: 4

2.5 08-clinica-ext-fase8-schema-ddl.sql

Schemas: clinica (extensión)
ENUMs: (ninguno)

Tablas:
  1. personal_clinica
     - id, tenant_id, employee_id, consultorio_id
     - rol, vigencia_desde, vigencia_hasta
     - es_titular, horario, created_at

  2. ratings
     - id, tenant_id, consultation_id, patient_id, doctor_id
     - rating, feedback, rated_at
     - created_at

RLS: personal_clinica, ratings
Índices: 5

3. Seeds Detallados

3.1 00-removal-strategies.sql

INSERT INTO inventory.removal_strategies (code, name, description)
VALUES
  ('fifo', 'First In First Out', 'Por fecha de entrada'),
  ('lifo', 'Last In First Out', 'Por fecha más reciente'),
  ('fefo', 'First Expired First Out', 'Por fecha de caducidad'),
  ('closest', 'Closest Location', 'Por ubicación más cercana')
ON CONFLICT (code) DO NOTHING;

3.2 01-clinica-skills.sql

-- Tipos de habilidad médica
skill_types: Especialidad, Certificación, Subespecialidad, Curso, Idioma

-- Niveles
skill_levels: Residente, Especialista, Subespecialista, Fellow (4 x 5 tipos)

-- Skills específicos por tipo
Especialidad: Medicina General, Pediatría, Ginecología, Cardiología, etc.
Certificación: COFEPRIS, SSA, Consejo de Especialidad

3.3 02-clinica-catalogos.sql

-- Categorías de almacén
storage_categories: Farmacia General, Refrigerados, Controlados, Material Quirúrgico

-- Tipos de paquete
package_types: Caja Medicamentos, Blister, Frasco, Ampolleta, Bolsa Suero

-- Métodos de pago
payment_methods: Efectivo, Tarjeta, Transferencia, Seguro GMM, Seguro GMA

-- Estructuras de nómina
payslip_structures: Nómina Quincenal, Honorarios, Guardia

4. Orden de Ejecución Refinado

4.1 Script de Ejecución

#!/bin/bash
# ejecutar-fase8-clinicas.sh

DB_NAME="erp_clinicas"
SCRIPTS_DIR="database/schemas"
SEEDS_DIR="database/seeds/fase8"

echo "=== FASE 8: ERP Clínicas ==="

# DDL Schemas
echo "1. Financial extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/04-financial-ext-schema-ddl.sql

echo "2. HR extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/05-hr-ext-fase8-schema-ddl.sql

echo "3. Inventory extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/06-inventory-ext-fase8-schema-ddl.sql

echo "4. Purchase extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/07-purchase-ext-fase8-schema-ddl.sql

echo "5. Clinica extensions..."
psql -d $DB_NAME -f $SCRIPTS_DIR/08-clinica-ext-fase8-schema-ddl.sql

# Seeds globales
echo "6. Seeds globales..."
psql -d $DB_NAME -f $SEEDS_DIR/00-removal-strategies.sql

echo "=== Seeds por tenant (requiere tenant_id) ==="
# SET app.current_tenant_id = 'UUID';
# psql -d $DB_NAME -f $SEEDS_DIR/01-clinica-skills.sql
# psql -d $DB_NAME -f $SEEDS_DIR/02-clinica-catalogos.sql

echo "=== COMPLETADO ==="

5. Validación Pre-Ejecución

5.1 Checklist

  • Schemas base existen
  • Tablas core existen (opcional)
  • Tablas clinica base existen
  • Usuario tiene permisos DDL
  • Conexión a base de datos
  • Backups realizados

5.2 Comandos de Verificación

-- Verificar schemas
SELECT schema_name FROM information_schema.schemata
WHERE schema_name IN ('financial', 'hr', 'inventory', 'purchase', 'clinica');

-- Verificar tablas clinica existentes
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'clinica';

-- Verificar tenant_id
SELECT current_setting('app.current_tenant_id', true);

6. Métricas Finales

Métrica Valor
Archivos DDL 5
Archivos seed 3
Tablas nuevas 23
ENUMs nuevos 5
Funciones nuevas 1
Índices nuevos 41
RLS policies 18
Líneas SQL totales ~900

7. Próximos Pasos

  1. Plan refinado completado
  2. FASE 7: Crear archivos DDL y seed
  3. FASE 8: Validación final

Estado: FASE 6 COMPLETADA Siguiente: FASE 7 - Ejecución Fecha: 2026-01-04