223 lines
8.9 KiB
Markdown
223 lines
8.9 KiB
Markdown
# 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
|