- 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>
296 lines
7.1 KiB
Markdown
296 lines
7.1 KiB
Markdown
# 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
|
|
|
|
```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
|
|
|
|
```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
|
|
|
|
```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
|
|
|
|
```bash
|
|
#!/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
|
|
|
|
- [x] Schemas base existen
|
|
- [x] Tablas core existen (opcional)
|
|
- [x] Tablas clinica base existen
|
|
- [x] Usuario tiene permisos DDL
|
|
- [x] Conexión a base de datos
|
|
- [x] Backups realizados
|
|
|
|
### 5.2 Comandos de Verificación
|
|
|
|
```sql
|
|
-- 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
|