# Herencia de Base de Datos - ERP Core -> Clínicas

**Fecha:** 2025-12-08
**Versión:** 1.0
**Vertical:** Clínicas
**Nivel:** 2B.2

---

## RESUMEN

La vertical de Clínicas hereda los schemas base del ERP Core y extiende con schemas específicos del dominio de gestión médica y expediente clínico.

**Ubicación DDL Core:** `apps/erp-core/database/ddl/`

---

## ARQUITECTURA DE HERENCIA

```
┌─────────────────────────────────────────────────────────────────┐
│                        ERP CORE (Base)                          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐   │
│  │  auth   │ │  core   │ │financial│ │inventory│ │    hr   │   │
│  │ 26 tbl  │ │ 12 tbl  │ │ 15 tbl  │ │ 15 tbl  │ │  6 tbl  │   │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘   │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐               │
│  │ sales   │ │analytics│ │ system  │ │   crm   │               │
│  │  6 tbl  │ │  5 tbl  │ │ 10 tbl  │ │  5 tbl  │               │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘               │
│                        TOTAL: ~100 tablas heredadas             │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ HEREDA
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    CLÍNICAS (Extensiones)                       │
│  ┌───────────────┐ ┌───────────────┐ ┌───────────────┐         │
│  │   medical     │ │ appointments  │ │   patients    │         │
│  │ (expediente)  │ │    (citas)    │ │  (pacientes)  │         │
│  └───────────────┘ └───────────────┘ └───────────────┘         │
│                   EXTENSIONES: ~35 tablas (planificadas)        │
└─────────────────────────────────────────────────────────────────┘
```

---

## SCHEMAS HEREDADOS DEL CORE

| Schema | Tablas | Uso en Clínicas |
|--------|--------|-----------------|
| `auth` | 26 | Autenticación, usuarios médicos |
| `core` | 12 | Partners (pacientes), catálogos |
| `financial` | 15 | Facturas de servicios médicos |
| `inventory` | 15 | Medicamentos, insumos |
| `hr` | 6 | Personal médico |
| `sales` | 6 | Servicios médicos |
| `crm` | 5 | Seguimiento de pacientes |
| `analytics` | 5 | Estadísticas médicas |
| `system` | 10 | Recordatorios, notificaciones |

**Total heredado:** ~100 tablas

---

## SCHEMAS ESPECÍFICOS DE CLÍNICAS (Planificados)

### 1. Schema `patients` (estimado 10+ tablas)

**Propósito:** Gestión de pacientes

```sql
-- Tablas principales planificadas:
patients.patients                -- Pacientes (extiende core.partners)
patients.patient_contacts        -- Contactos de emergencia
patients.insurance_policies      -- Pólizas de seguro
patients.medical_history         -- Antecedentes médicos
patients.allergies               -- Alergias
patients.family_history          -- Antecedentes familiares
```

### 2. Schema `medical` (estimado 15+ tablas)

**Propósito:** Expediente clínico electrónico

```sql
-- Tablas principales planificadas:
medical.consultations           -- Consultas médicas
medical.diagnoses               -- Diagnósticos (CIE-10)
medical.prescriptions           -- Recetas médicas
medical.prescription_lines      -- Medicamentos recetados
medical.vital_signs             -- Signos vitales
medical.lab_results             -- Resultados de laboratorio
medical.imaging_studies         -- Estudios de imagen
medical.clinical_notes          -- Notas clínicas
medical.treatments              -- Tratamientos
```

### 3. Schema `appointments` (estimado 10+ tablas)

**Propósito:** Gestión de citas

```sql
-- Tablas principales planificadas:
appointments.doctors             -- Médicos
appointments.specialties         -- Especialidades
appointments.doctor_schedules    -- Horarios de médicos
appointments.consulting_rooms    -- Consultorios
appointments.appointments        -- Citas
appointments.appointment_types   -- Tipos de cita
appointments.reminders           -- Recordatorios
```

---

## SPECS DEL CORE APLICABLES

**Documento detallado:** `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`

### Correcciones de DDL Core (2025-12-08)

El DDL del ERP-Core fue corregido para resolver FK inválidas:

1. **stock_valuation_layers**: Campos `journal_entry_id` y `journal_entry_line_id` (antes `account_move_*`)
2. **stock_move_consume_rel**: Nueva tabla de trazabilidad (antes `move_line_consume_rel`)
3. **category_stock_accounts**: FK corregida a `core.product_categories`
4. **product_categories**: ALTERs ahora apuntan a schema `core`

### SPECS Obligatorias

| Spec Core | Aplicación en Clínicas | SP | Estado |
|-----------|----------------------|----:|--------|
| SPEC-SISTEMA-SECUENCIAS | Foliado de expedientes y citas | 8 | ✅ DDL LISTO |
| SPEC-SEGURIDAD-API-KEYS-PERMISOS | Control de acceso a expedientes | 31 | ✅ DDL LISTO |
| SPEC-INTEGRACION-CALENDAR | Agenda de citas médicas | 8 | PENDIENTE |
| SPEC-RRHH-EVALUACIONES-SKILLS | Credenciales médicas | 26 | ✅ DDL LISTO |
| SPEC-MAIL-THREAD-TRACKING | Historial de comunicación | 13 | ✅ DDL LISTO |
| SPEC-WIZARD-TRANSIENT-MODEL | Wizards de receta y referencia | 8 | PENDIENTE |
| SPEC-FIRMA-ELECTRONICA-NOM151 | Firma de expedientes clínicos | 13 | PENDIENTE |
| SPEC-TWO-FACTOR-AUTHENTICATION | Seguridad de acceso | 13 | ✅ DDL LISTO |
| SPEC-OAUTH2-SOCIAL-LOGIN | Portal de pacientes | 8 | ✅ DDL LISTO |

### SPECS Opcionales

| Spec Core | Decisión | Razón |
|-----------|----------|-------|
| SPEC-VALORACION-INVENTARIO | EVALUAR | Solo si hay farmacia interna |
| SPEC-PRICING-RULES | EVALUAR | Para paquetes de servicios |
| SPEC-TAREAS-RECURRENTES | EVALUAR | Para citas periódicas |

### SPECS No Aplican

| Spec Core | Razón |
|-----------|-------|
| SPEC-PORTAL-PROVEEDORES | No hay compras complejas |
| SPEC-BLANKET-ORDERS | No aplica en servicios médicos |
| SPEC-INVENTARIOS-CICLICOS | Solo si hay farmacia grande |
| SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | No hay proyectos de este tipo |

### Cumplimiento Normativo

| Norma | Descripción | SPECS Relacionadas |
|-------|-------------|-------------------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | SPEC-SEGURIDAD, SPEC-MAIL-THREAD |
| LFPDPPP | Protección de datos personales | SPEC-SEGURIDAD, SPEC-2FA |
| NOM-004-SSA3-2012 | Expediente clínico | SPEC-FIRMA-ELECTRONICA |

---

## CUMPLIMIENTO NORMATIVO

Este sistema debe cumplir con:

| Norma | Descripción | Impacto |
|-------|-------------|---------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | Estructura de datos |
| LFPDPPP | Protección de datos personales | Seguridad y acceso |
| NOM-004-SSA3-2012 | Expediente clínico | Contenido mínimo |

---

## ORDEN DE EJECUCIÓN DDL (Futuro)

```bash
# PASO 1: Cargar ERP Core (base)
cd apps/erp-core/database
./scripts/reset-database.sh --force

# PASO 2: Cargar extensiones de Clínicas
cd apps/verticales/clinicas/database
psql $DATABASE_URL -f init/00-extensions.sql
psql $DATABASE_URL -f init/01-create-schemas.sql
psql $DATABASE_URL -f init/02-patients-tables.sql
psql $DATABASE_URL -f init/03-medical-tables.sql
psql $DATABASE_URL -f init/04-appointments-tables.sql
```

---

## MAPEO DE NOMENCLATURA

| Core | Clínicas |
|------|----------|
| `core.partners` | Pacientes base |
| `hr.employees` | Personal médico |
| `inventory.products` | Medicamentos, insumos |
| `sales.sale_orders` | Servicios médicos |
| `financial.invoices` | Facturas de consultas |

---

## REFERENCIAS

- ERP Core DDL: `apps/erp-core/database/ddl/`
- ERP Core README: `apps/erp-core/database/README.md`
- Directivas: `orchestration/directivas/`
- Inventarios: `orchestration/inventarios/`

---

**Documento de herencia oficial**
**Última actualización:** 2025-12-08
