diff --git a/docs/_MAP.md b/docs/_MAP.md index 980641d..aabd3c5 100644 --- a/docs/_MAP.md +++ b/docs/_MAP.md @@ -2,8 +2,9 @@ **Proyecto:** clinica-dental **Tipo:** ERP Especializado (hereda de erp-clinicas) -**Fecha:** 2026-01-13 +**Fecha:** 2026-01-16 **Estado:** Fase 0 - Preparacion + Fases SaaS/IA Propagadas +**Nivel Herencia:** 3 (erp-core -> erp-clinicas -> clinica-dental) --- @@ -12,22 +13,36 @@ ``` docs/ +-- _MAP.md <- ESTE ARCHIVO ++-- _definitions/ <- NUEVO: Definiciones canonicas +| +-- _INDEX.yml <- Indice de definiciones +| +-- DATABASE-SCHEMA.md <- Schema de base de datos +| +-- ENTITIES-CATALOG.md <- Catalogo de entidades +| +-- SERVICES-CATALOG.md <- Catalogo de servicios +| +-- MODULES-CATALOG.md <- Catalogo de modulos +| ++-- _quick/ <- NUEVO: Navegacion rapida +| +-- QUICK-INDEX.yml <- Indice de accesos rapidos +| +-- QUICK-MODULES.yml <- Modulos por estado/categoria +| +-- QUICK-DATABASE.yml <- Tablas y schemas +| +-- QUICK-API.yml <- Endpoints planificados +| +-- 00-vision-general/ | +-- README.md <- Indice de vision | +-- VISION.md <- Vision estrategica [PENDIENTE] | ++-- 01-epicas/ +| +-- DENTAL-001-odontograma.md <- Odontograma digital +| +-- DENTAL-002-tratamientos.md <- Tratamientos dentales +| +-- DENTAL-003-ortodoncia.md <- Control ortodoncia +| +-- DENTAL-004-protesis.md <- Trabajos protesicos +| +-- DENTAL-005-radiografias.md <- Radiografias dentales +| +-- DENTAL-006-presupuestos.md <- Presupuestos de tratamiento +| +-- 02-definicion-modulos/ | +-- _MAP.md <- Indice de modulos [PENDIENTE] | +-- modulo-odontograma.md <- Odontograma digital [PENDIENTE] -| +-- modulo-tratamientos.md <- Tratamientos dentales [PENDIENTE] -| +-- modulo-ortodoncia.md <- Control ortodoncia [PENDIENTE] -| +-- modulo-protesis.md <- Trabajos protesicos [PENDIENTE] -| +-- modulo-endodoncia.md <- Tratamientos conductos [PENDIENTE] -| +-- modulo-periodoncia.md <- Enfermedad periodontal [PENDIENTE] -| +-- modulo-prevencion.md <- Profilaxis, selladores [PENDIENTE] -| +-- modulo-estetica.md <- Blanqueamiento, carillas [PENDIENTE] | -+-- 04-fase-saas/ <- NUEVO: Capacidades SaaS ++-- 04-fase-saas/ <- Capacidades SaaS (Heredado) | +-- README.md <- Vision de fase SaaS | +-- _MAP.md <- Indice de modulos SaaS | +-- MGN-016-billing/ <- Facturacion y suscripciones @@ -35,7 +50,7 @@ docs/ | +-- MGN-018-webhooks/ <- Integraciones externas | +-- MGN-019-feature-flags/ <- Control de features odontologicas | -+-- 05-fase-ia/ <- NUEVO: Inteligencia Artificial ++-- 05-fase-ia/ <- Inteligencia Artificial (Heredado) | +-- README.md <- Vision de fase IA | +-- _MAP.md <- Indice de modulos IA | +-- MGN-020-ai-integration/ <- Gateway LLM dental @@ -45,12 +60,38 @@ docs/ +-- 03-especificaciones/ | +-- ... (futuras especificaciones tecnicas) | ++-- 04-modelado/ +| +-- trazabilidad/ +| +-- TRACEABILITY-MASTER.yml <- Trazabilidad de modulos +| +-- 90-transversal/ +-- ... (documentacion transversal) ``` --- +## Navegacion Rapida + +### Definiciones Canonicas (@PROJ_DEF_*) + +| Alias | Archivo | Descripcion | +|-------|---------|-------------| +| @PROJ_DEF_DB | [DATABASE-SCHEMA.md](./_definitions/DATABASE-SCHEMA.md) | Schema de base de datos dental | +| @PROJ_DEF_ENTITIES | [ENTITIES-CATALOG.md](./_definitions/ENTITIES-CATALOG.md) | Catalogo de entidades | +| @PROJ_DEF_SERVICES | [SERVICES-CATALOG.md](./_definitions/SERVICES-CATALOG.md) | Catalogo de servicios | +| @PROJ_DEF_MODULES | [MODULES-CATALOG.md](./_definitions/MODULES-CATALOG.md) | Catalogo de modulos | + +### Accesos Rapidos (@PROJ_QUICK_*) + +| Alias | Archivo | Descripcion | +|-------|---------|-------------| +| @PROJ_QUICK_INDEX | [QUICK-INDEX.yml](./_quick/QUICK-INDEX.yml) | Punto de entrada rapido | +| @PROJ_QUICK_MODULES | [QUICK-MODULES.yml](./_quick/QUICK-MODULES.yml) | Modulos por estado | +| @PROJ_QUICK_DB | [QUICK-DATABASE.yml](./_quick/QUICK-DATABASE.yml) | Tablas y schemas | +| @PROJ_QUICK_API | [QUICK-API.yml](./_quick/QUICK-API.yml) | Endpoints planificados | + +--- + ## Modulos Especializados (Odontologia) ### Modulos Core @@ -209,6 +250,19 @@ Modulos de IA especializados en odontologia con herramientas MCP dentales. --- -**Ultima actualizacion:** 2026-01-13 -**Version:** 1.1.0 +## Orchestration + +### Referencias y Trazabilidad + +| Archivo | Descripcion | +|---------|-------------| +| [WS-REFERENCES.yml](../orchestration/_refs/WS-REFERENCES.yml) | Referencias a workspace (nivel=3) | +| [DEPENDENCY-GRAPH.yml](../orchestration/DEPENDENCY-GRAPH.yml) | Grafo de dependencias | +| [TRACEABILITY.yml](../orchestration/TRACEABILITY.yml) | Trazabilidad modulo-objetos | +| [CONTEXT-MAP.yml](../orchestration/CONTEXT-MAP.yml) | Contexto del proyecto | + +--- + +**Ultima actualizacion:** 2026-01-16 +**Version:** 1.2.0 **Propagacion:** PROP-CDT-002 (Fases SaaS + IA desde erp-core via erp-clinicas) diff --git a/docs/_definitions/DATABASE-SCHEMA.md b/docs/_definitions/DATABASE-SCHEMA.md new file mode 100644 index 0000000..fc33c1d --- /dev/null +++ b/docs/_definitions/DATABASE-SCHEMA.md @@ -0,0 +1,526 @@ +# Database Schema - clinica-dental + +**Alias:** @PROJ_DEF_DB +**Version:** 1.0.0 +**Ultima actualizacion:** 2026-01-16 + +--- + +## 1. RESUMEN + +| Metrica | Valor | +|---------|-------| +| **Total Schemas** | 1 (dental) | +| **Total Tablas** | 11 | +| **Total Catalogos** | 2 | +| **Total Enums** | 4 | +| **Total Relaciones** | 15+ | + +--- + +## 2. HERENCIA DE SCHEMAS + +```yaml +herencia: + desde_erp_core: + - auth # Autenticacion y sesiones + - tenants # Multi-tenancy + - users # Usuarios del sistema + desde_erp_clinicas: + - clinica # Pacientes, citas, consultas + propio: + - dental # Especializacion odontologica +``` + +--- + +## 3. ENUMS + +```yaml +enums: + estado_pieza: + valores: ["sano", "caries", "obturacion", "endodoncia", "corona", "puente", "implante", "ausente", "extraccion_indicada", "diente_temporal", "fractura", "movilidad"] + uso: "Estado de una pieza dental" + + cara_dental: + valores: ["mesial", "distal", "oclusal", "incisal", "vestibular", "bucal", "lingual", "palatino"] + uso: "Caras de una pieza dental" + + estado_tratamiento: + valores: ["pendiente", "en_proceso", "completado", "cancelado"] + uso: "Estado de un tratamiento" + + tipo_ortodoncia: + valores: ["brackets_metalicos", "brackets_esteticos", "brackets_linguales", "alineadores", "removible", "retenedor"] + uso: "Tipo de tratamiento ortodontico" +``` + +--- + +## 4. CATALOGOS + +### 4.1 dental.piezas_dentales + +```yaml +tabla: "piezas_dentales" +schema: "dental" +tipo: "catalogo_global" +descripcion: "Catalogo de piezas dentales (nomenclatura FDI)" +registros: 52 +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "numero" + tipo: "VARCHAR(10)" + unique: true + descripcion: "Numero FDI (11-48, 51-85)" + - nombre: "nombre" + tipo: "VARCHAR(50)" + not_null: true + - nombre: "cuadrante" + tipo: "INTEGER" + check: "BETWEEN 1 AND 8" + - nombre: "es_temporal" + tipo: "BOOLEAN" + default: false + - nombre: "descripcion" + tipo: "TEXT" +``` + +### 4.2 dental.tratamientos_catalogo + +```yaml +tabla: "tratamientos_catalogo" +schema: "dental" +tipo: "catalogo_tenant" +descripcion: "Catalogo de tratamientos dentales por tenant" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "codigo" + tipo: "VARCHAR(20)" + not_null: true + - nombre: "nombre" + tipo: "VARCHAR(100)" + not_null: true + - nombre: "categoria" + tipo: "VARCHAR(50)" + descripcion: "prevencion, restauracion, endodoncia, etc." + - nombre: "duracion_minutos" + tipo: "INTEGER" + default: 30 + - nombre: "precio_base" + tipo: "NUMERIC(10,2)" + - nombre: "requiere_rx" + tipo: "BOOLEAN" + default: false + - nombre: "requiere_anestesia" + tipo: "BOOLEAN" + default: false + - nombre: "active" + tipo: "BOOLEAN" + default: true +constraints: + - nombre: "uq_tratamientos_tenant_codigo" + tipo: "UNIQUE" + columnas: ["tenant_id", "codigo"] +``` + +--- + +## 5. TABLAS PRINCIPALES + +### 5.1 dental.odontogramas + +```yaml +tabla: "odontogramas" +schema: "dental" +modulo: "DENTAL-001" +descripcion: "Odontogramas de pacientes" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + fk: "clinica.patients" + - nombre: "fecha_creacion" + tipo: "DATE" + default: "CURRENT_DATE" + - nombre: "fecha_actualizacion" + tipo: "DATE" + - nombre: "notas" + tipo: "TEXT" +indices: + - "idx_odontogramas_tenant" + - "idx_odontogramas_patient" +``` + +### 5.2 dental.odontograma_piezas + +```yaml +tabla: "odontograma_piezas" +schema: "dental" +modulo: "DENTAL-001" +descripcion: "Estado de cada pieza en el odontograma" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "odontograma_id" + tipo: "UUID" + not_null: true + fk: "dental.odontogramas" + - nombre: "pieza_id" + tipo: "UUID" + not_null: true + fk: "dental.piezas_dentales" + - nombre: "estado" + tipo: "dental.estado_pieza" + default: "sano" + - nombre: "caras_afectadas" + tipo: "JSONB" + descripcion: '{"mesial": "caries", "oclusal": "obturacion"}' + - nombre: "observaciones" + tipo: "TEXT" +constraints: + - nombre: "uq_odontograma_pieza" + tipo: "UNIQUE" + columnas: ["odontograma_id", "pieza_id"] +``` + +### 5.3 dental.tratamientos_paciente + +```yaml +tabla: "tratamientos_paciente" +schema: "dental" +modulo: "DENTAL-002" +descripcion: "Tratamientos realizados a pacientes" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + - nombre: "odontograma_id" + tipo: "UUID" + fk: "dental.odontogramas" + - nombre: "tratamiento_id" + tipo: "UUID" + fk: "dental.tratamientos_catalogo" + - nombre: "odontologo_id" + tipo: "UUID" + fk: "clinica.doctors" + - nombre: "consultation_id" + tipo: "UUID" + fk: "clinica.consultations" + - nombre: "pieza_id" + tipo: "UUID" + fk: "dental.piezas_dentales" + - nombre: "caras_tratadas" + tipo: "dental.cara_dental[]" + - nombre: "fecha_inicio" + tipo: "DATE" + default: "CURRENT_DATE" + - nombre: "fecha_fin" + tipo: "DATE" + - nombre: "estado" + tipo: "dental.estado_tratamiento" + default: "pendiente" + - nombre: "precio" + tipo: "NUMERIC(10,2)" + - nombre: "descuento" + tipo: "NUMERIC(5,2)" + default: 0 + - nombre: "precio_final" + tipo: "NUMERIC(10,2)" +indices: + - "idx_tratamientos_paciente_tenant" + - "idx_tratamientos_paciente_patient" + - "idx_tratamientos_paciente_estado" +``` + +### 5.4 dental.ortodoncia + +```yaml +tabla: "ortodoncia" +schema: "dental" +modulo: "DENTAL-003" +descripcion: "Casos de ortodoncia" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + - nombre: "odontologo_id" + tipo: "UUID" + - nombre: "tipo" + tipo: "dental.tipo_ortodoncia" + not_null: true + - nombre: "marca" + tipo: "VARCHAR(100)" + - nombre: "fecha_inicio" + tipo: "DATE" + not_null: true + - nombre: "fecha_estimada_fin" + tipo: "DATE" + - nombre: "fecha_real_fin" + tipo: "DATE" + - nombre: "estado" + tipo: "dental.estado_tratamiento" + default: "en_proceso" + - nombre: "meses_estimados" + tipo: "INTEGER" + - nombre: "costo_total" + tipo: "NUMERIC(10,2)" + - nombre: "enganche" + tipo: "NUMERIC(10,2)" + - nombre: "mensualidad" + tipo: "NUMERIC(10,2)" +indices: + - "idx_ortodoncia_tenant" + - "idx_ortodoncia_patient" + - "idx_ortodoncia_estado" +``` + +### 5.5 dental.protesis + +```yaml +tabla: "protesis" +schema: "dental" +modulo: "DENTAL-004" +descripcion: "Trabajos protesicos" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + - nombre: "odontologo_id" + tipo: "UUID" + - nombre: "tipo" + tipo: "VARCHAR(50)" + not_null: true + descripcion: "corona, puente, parcial, total, implante" + - nombre: "piezas_involucradas" + tipo: "TEXT[]" + - nombre: "laboratorio_id" + tipo: "UUID" + - nombre: "fecha_envio_lab" + tipo: "DATE" + - nombre: "fecha_recepcion_lab" + tipo: "DATE" + - nombre: "material" + tipo: "VARCHAR(100)" + - nombre: "color" + tipo: "VARCHAR(50)" + - nombre: "estado" + tipo: "dental.estado_tratamiento" + default: "en_proceso" + - nombre: "fecha_colocacion" + tipo: "DATE" + - nombre: "tiene_garantia" + tipo: "BOOLEAN" + default: false + - nombre: "meses_garantia" + tipo: "INTEGER" + - nombre: "costo_laboratorio" + tipo: "NUMERIC(10,2)" + - nombre: "precio_paciente" + tipo: "NUMERIC(10,2)" +indices: + - "idx_protesis_tenant" + - "idx_protesis_patient" +``` + +### 5.6 dental.radiografias + +```yaml +tabla: "radiografias" +schema: "dental" +modulo: "DENTAL-005" +descripcion: "Radiografias dentales" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + - nombre: "consultation_id" + tipo: "UUID" + - nombre: "tipo" + tipo: "VARCHAR(50)" + not_null: true + descripcion: "periapical, panoramica, cefalometrica, oclusal" + - nombre: "pieza_id" + tipo: "UUID" + fk: "dental.piezas_dentales" + - nombre: "fecha" + tipo: "DATE" + default: "CURRENT_DATE" + - nombre: "url_imagen" + tipo: "VARCHAR(255)" + - nombre: "interpretacion" + tipo: "TEXT" +indices: + - "idx_radiografias_tenant" + - "idx_radiografias_patient" +``` + +### 5.7 dental.presupuestos + +```yaml +tabla: "presupuestos" +schema: "dental" +modulo: "DENTAL-006" +descripcion: "Presupuestos de tratamiento" +columnas: + - nombre: "id" + tipo: "UUID" + pk: true + - nombre: "tenant_id" + tipo: "UUID" + not_null: true + - nombre: "patient_id" + tipo: "UUID" + not_null: true + - nombre: "odontologo_id" + tipo: "UUID" + - nombre: "numero" + tipo: "VARCHAR(20)" + - nombre: "fecha" + tipo: "DATE" + default: "CURRENT_DATE" + - nombre: "fecha_vencimiento" + tipo: "DATE" + - nombre: "estado" + tipo: "VARCHAR(20)" + default: "pendiente" + descripcion: "pendiente, aprobado, rechazado, vencido" + - nombre: "subtotal" + tipo: "NUMERIC(12,2)" + default: 0 + - nombre: "descuento_porcentaje" + tipo: "NUMERIC(5,2)" + default: 0 + - nombre: "descuento_monto" + tipo: "NUMERIC(12,2)" + default: 0 + - nombre: "total" + tipo: "NUMERIC(12,2)" + default: 0 + - nombre: "requiere_financiamiento" + tipo: "BOOLEAN" + default: false + - nombre: "enganche" + tipo: "NUMERIC(12,2)" + - nombre: "numero_pagos" + tipo: "INTEGER" + - nombre: "monto_pago" + tipo: "NUMERIC(12,2)" +indices: + - "idx_presupuestos_tenant" + - "idx_presupuestos_patient" + - "idx_presupuestos_estado" +``` + +--- + +## 6. RELACIONES + +``` +dental Schema: + + ┌─────────────────────┐ + │ piezas_dentales │ (catalogo global) + └──────────┬──────────┘ + │ + ┌─────────────────┼─────────────────┬───────────────────┐ + │ │ │ │ + ▼ ▼ ▼ ▼ +┌──────────┐ ┌─────────────┐ ┌───────────┐ ┌─────────────┐ +│odontograma│ │tratamientos │ │radiografias│ │presupuesto_ │ +│_piezas │ │_paciente │ │ │ │lineas │ +└────┬─────┘ └──────┬──────┘ └───────────┘ └──────┬──────┘ + │ │ │ + │ │ │ + ▼ │ ▼ +┌──────────┐ │ ┌─────────────┐ +│odontogramas│◄────────┘ │presupuestos │ +└────┬─────┘ └─────────────┘ + │ + │ clinica Schema (heredado): + │ + ▼ +┌──────────┐ ┌──────────┐ ┌────────────────┐ +│ patients │◄────────│ doctors │◄────────│ specialties │ +└──────────┘ └──────────┘ └────────────────┘ + │ │ + │ │ + ▼ ▼ +┌──────────┐ ┌──────────────┐ +│ortodoncia│ │consultations │ +└────┬─────┘ └──────────────┘ + │ + ▼ +┌──────────────┐ +│ortodoncia_ │ +│citas │ +└──────────────┘ +``` + +--- + +## 7. ROW LEVEL SECURITY + +Todas las tablas del schema `dental` tienen RLS habilitado con politica de aislamiento por tenant: + +```sql +-- Patron aplicado a todas las tablas +CREATE POLICY tenant_isolation_{tabla} ON dental.{tabla} + USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); +``` + +--- + +## 8. REFERENCIAS + +- DDL completo: `database/schemas/01-dental-schema-ddl.sql` +- Seeds: `database/seeds/fase8/01-dental-catalogos.sql` +- Inventario: `orchestration/inventarios/DATABASE_INVENTORY.yml` +- Entities: Ver @PROJ_DEF_ENTITIES +- Herencia: `orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md` + +--- + +*Database Schema | clinica-dental | v1.0.0* +*Ultima actualizacion: 2026-01-16* diff --git a/docs/_definitions/ENTITIES-CATALOG.md b/docs/_definitions/ENTITIES-CATALOG.md new file mode 100644 index 0000000..62d0aaa --- /dev/null +++ b/docs/_definitions/ENTITIES-CATALOG.md @@ -0,0 +1,216 @@ +# Entities Catalog - clinica-dental + +**Alias:** @PROJ_DEF_ENTITIES +**Version:** 1.0.0 +**Ultima actualizacion:** 2026-01-16 + +--- + +## 1. RESUMEN + +| Metrica | Valor | +|---------|-------| +| **Total Entities Propias** | 0 (Pendiente implementacion) | +| **Total Entities Heredadas** | 10 (de erp-clinicas) | +| **Estado** | Planificado | + +--- + +## 2. ENTITIES PLANIFICADAS + +### 2.1 Modulo: Odontograma (DENTAL-001) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| Odontograma | `odontograma.entity.ts` | dental.odontogramas | Registro de odontograma | +| OdontogramaPieza | `odontograma-pieza.entity.ts` | dental.odontograma_piezas | Estado de piezas | +| PiezaDental | `pieza-dental.entity.ts` | dental.piezas_dentales | Catalogo de piezas | + +### 2.2 Modulo: Tratamientos (DENTAL-002) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| TratamientoCatalogo | `tratamiento-catalogo.entity.ts` | dental.tratamientos_catalogo | Catalogo de tratamientos | +| TratamientoPaciente | `tratamiento-paciente.entity.ts` | dental.tratamientos_paciente | Tratamientos realizados | + +### 2.3 Modulo: Ortodoncia (DENTAL-003) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| Ortodoncia | `ortodoncia.entity.ts` | dental.ortodoncia | Casos de ortodoncia | +| OrtodonciaCita | `ortodoncia-cita.entity.ts` | dental.ortodoncia_citas | Seguimiento ortodontico | + +### 2.4 Modulo: Protesis (DENTAL-004) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| Protesis | `protesis.entity.ts` | dental.protesis | Trabajos protesicos | + +### 2.5 Modulo: Radiografias (DENTAL-005) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| Radiografia | `radiografia.entity.ts` | dental.radiografias | Radiografias dentales | + +### 2.6 Modulo: Presupuestos (DENTAL-006) + +| Entity | Archivo Planificado | Tabla BD | Descripcion | +|--------|---------------------|----------|-------------| +| Presupuesto | `presupuesto.entity.ts` | dental.presupuestos | Presupuestos de tratamiento | +| PresupuestoLinea | `presupuesto-linea.entity.ts` | dental.presupuesto_lineas | Lineas de presupuesto | + +--- + +## 3. UBICACION PLANIFICADA + +``` +backend/src/modules/ +├── odontograma/ +│ └── entities/ +│ ├── odontograma.entity.ts +│ ├── odontograma-pieza.entity.ts +│ └── pieza-dental.entity.ts +├── tratamientos/ +│ └── entities/ +│ ├── tratamiento-catalogo.entity.ts +│ └── tratamiento-paciente.entity.ts +├── ortodoncia/ +│ └── entities/ +│ ├── ortodoncia.entity.ts +│ └── ortodoncia-cita.entity.ts +├── protesis/ +│ └── entities/ +│ └── protesis.entity.ts +├── radiografias/ +│ └── entities/ +│ └── radiografia.entity.ts +└── presupuestos/ + └── entities/ + ├── presupuesto.entity.ts + └── presupuesto-linea.entity.ts +``` + +--- + +## 4. RELACIONES PLANIFICADAS + +```yaml +relaciones: + Odontograma: + belongs_to: [Patient] + has_many: [OdontogramaPieza, TratamientoPaciente] + + OdontogramaPieza: + belongs_to: [Odontograma, PiezaDental] + + PiezaDental: + has_many: [OdontogramaPieza, TratamientoPaciente, Radiografia, PresupuestoLinea] + + TratamientoCatalogo: + has_many: [TratamientoPaciente, PresupuestoLinea] + + TratamientoPaciente: + belongs_to: [Patient, Doctor, Odontograma, TratamientoCatalogo, PiezaDental, Consultation] + + Ortodoncia: + belongs_to: [Patient, Doctor] + has_many: [OrtodonciaCita] + + OrtodonciaCita: + belongs_to: [Ortodoncia, Appointment] + + Protesis: + belongs_to: [Patient, Doctor] + + Radiografia: + belongs_to: [Patient, Consultation, PiezaDental] + + Presupuesto: + belongs_to: [Patient, Doctor] + has_many: [PresupuestoLinea] + + PresupuestoLinea: + belongs_to: [Presupuesto, TratamientoCatalogo, PiezaDental] +``` + +--- + +## 5. ENTIDADES HEREDADAS (de erp-clinicas) + +| Entity | Origen | Uso en clinica-dental | +|--------|--------|----------------------| +| Patient | erp-clinicas | Pacientes dentales | +| Doctor | erp-clinicas | Odontologos | +| Specialty | erp-clinicas | Especialidades dentales | +| Appointment | erp-clinicas | Citas dentales | +| AppointmentSlot | erp-clinicas | Horarios de odontologos | +| Consultation | erp-clinicas | Consultas dentales | +| Diagnosis | erp-clinicas | Diagnosticos | +| Prescription | erp-clinicas | Recetas | +| PrescriptionItem | erp-clinicas | Items de receta | +| VitalSigns | erp-clinicas | Signos vitales | + +--- + +## 6. ENUMS TYPESCRIPT (Planificados) + +```typescript +// Definidos en el schema SQL, replicados en TypeScript + +enum EstadoPieza { + SANO = 'sano', + CARIES = 'caries', + OBTURACION = 'obturacion', + ENDODONCIA = 'endodoncia', + CORONA = 'corona', + PUENTE = 'puente', + IMPLANTE = 'implante', + AUSENTE = 'ausente', + EXTRACCION_INDICADA = 'extraccion_indicada', + DIENTE_TEMPORAL = 'diente_temporal', + FRACTURA = 'fractura', + MOVILIDAD = 'movilidad' +} + +enum CaraDental { + MESIAL = 'mesial', + DISTAL = 'distal', + OCLUSAL = 'oclusal', + INCISAL = 'incisal', + VESTIBULAR = 'vestibular', + BUCAL = 'bucal', + LINGUAL = 'lingual', + PALATINO = 'palatino' +} + +enum EstadoTratamiento { + PENDIENTE = 'pendiente', + EN_PROCESO = 'en_proceso', + COMPLETADO = 'completado', + CANCELADO = 'cancelado' +} + +enum TipoOrtodoncia { + BRACKETS_METALICOS = 'brackets_metalicos', + BRACKETS_ESTETICOS = 'brackets_esteticos', + BRACKETS_LINGUALES = 'brackets_linguales', + ALINEADORES = 'alineadores', + REMOVIBLE = 'removible', + RETENEDOR = 'retenedor' +} +``` + +--- + +## 7. REFERENCIAS + +- Database Schema: @PROJ_DEF_DB +- Services: @PROJ_DEF_SERVICES +- Ubicacion futura: `backend/src/modules/*/entities/` +- DDL: `database/schemas/01-dental-schema-ddl.sql` +- Herencia erp-clinicas: `orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md` + +--- + +*Entities Catalog | clinica-dental | v1.0.0* +*Ultima actualizacion: 2026-01-16* diff --git a/docs/_definitions/MODULES-CATALOG.md b/docs/_definitions/MODULES-CATALOG.md new file mode 100644 index 0000000..d1cb8f3 --- /dev/null +++ b/docs/_definitions/MODULES-CATALOG.md @@ -0,0 +1,332 @@ +# Modules Catalog - clinica-dental + +**Alias:** @PROJ_DEF_MODULES +**Version:** 1.0.0 +**Ultima actualizacion:** 2026-01-16 + +--- + +## 1. RESUMEN + +| Metrica | Valor | +|---------|-------| +| **Total Modulos Propios** | 6 | +| **Total Modulos Heredados (erp-core)** | 16 | +| **Total Modulos Heredados (erp-clinicas)** | 10 | +| **Documentados** | 6 | +| **En Desarrollo** | 0 | +| **Planificados** | 6 | + +--- + +## 2. INDICE DE MODULOS + +### 2.1 Modulos Core (Heredados de erp-core) + +| ID | Nombre | Herencia | Estado | Documentacion | +|----|--------|----------|--------|---------------| +| MGN-001 | Authentication | 100% | Heredado | @WS_DEF_CCA | +| MGN-002 | Users | 100% | Heredado | @WS_DEF_CCA | +| MGN-003 | Roles | 100% | Heredado | @WS_DEF_CCA | +| MGN-004 | Tenants | Extendido | Heredado | @WS_DEF_CCA | +| MGN-005 | Catalogs | Extendido | Heredado | @WS_DEF_CCA | +| MGN-007 | Audit | 100% | Heredado | @WS_DEF_CCA | +| MGN-008 | Notifications | 100% | Heredado | @WS_DEF_CCA | +| MGN-009 | Reports | Extendido | Heredado | @WS_DEF_CCA | +| MGN-010 | Financial | Extendido | Heredado | @WS_DEF_CCA | + +### 2.2 Modulos SaaS (Heredados - Fase 4) + +| ID | Nombre | Estado | Documentacion | +|----|--------|--------|---------------| +| MGN-016 | Billing | Heredado | docs/04-fase-saas/MGN-016-billing/ | +| MGN-017 | Plans | Heredado | docs/04-fase-saas/MGN-017-plans/ | +| MGN-018 | Webhooks | Heredado | docs/04-fase-saas/MGN-018-webhooks/ | +| MGN-019 | Feature Flags | Heredado | docs/04-fase-saas/MGN-019-feature-flags/ | + +### 2.3 Modulos IA (Heredados - Fase 5) + +| ID | Nombre | Estado | Documentacion | +|----|--------|--------|---------------| +| MGN-020 | AI Integration | Heredado | docs/05-fase-ia/MGN-020-ai-integration/ | +| MGN-021 | WhatsApp Business | Heredado | docs/05-fase-ia/MGN-021-whatsapp-business/ | +| MGN-022 | MCP Server | Heredado | docs/05-fase-ia/MGN-022-mcp-server/ | + +### 2.4 Modulos Clinicos (Heredados de erp-clinicas) + +| ID | Nombre | Herencia | Adaptacion Dental | +|----|--------|----------|-------------------| +| CL-001 | Fundamentos | 100% | Ninguna | +| CL-002 | Pacientes | Extendido | + odontograma_activo_id, tiene_ortodoncia, tiene_protesis | +| CL-003 | Citas | Extendido | + tipos cita dental | +| CL-004 | Consultas | Extendido | + exploracion dental | +| CL-005 | Recetas | 100% | Ninguna | +| CL-006 | Laboratorio | Parcial | Solo laboratorio dental | +| CL-008 | Facturacion | 100% | Ninguna | +| CL-009 | Reportes | Extendido | + reportes odontologicos | +| CL-011 | Expediente | Extendido | + odontograma | +| CL-012 | Imagenologia | Extendido | + radiografias dentales | + +### 2.5 Modulos Propios (Odontologicos) + +| ID | Nombre | Estado | Documentacion | +|----|--------|--------|---------------| +| DENTAL-001 | Odontograma | Planificado | docs/01-epicas/DENTAL-001-odontograma.md | +| DENTAL-002 | Tratamientos | Planificado | docs/01-epicas/DENTAL-002-tratamientos.md | +| DENTAL-003 | Ortodoncia | Planificado | docs/01-epicas/DENTAL-003-ortodoncia.md | +| DENTAL-004 | Protesis | Planificado | docs/01-epicas/DENTAL-004-protesis.md | +| DENTAL-005 | Radiografias | Planificado | docs/01-epicas/DENTAL-005-radiografias.md | +| DENTAL-006 | Presupuestos | Planificado | docs/01-epicas/DENTAL-006-presupuestos.md | + +--- + +## 3. DETALLE POR MODULO PROPIO + +### DENTAL-001: Odontograma + +```yaml +modulo: + id: "DENTAL-001" + nombre: "Odontograma" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-001-odontograma.md" + requerimientos: [] + historias: [] + + descripcion: | + Registro grafico del estado dental del paciente: + - Nomenclatura FDI (32 piezas permanentes + 20 temporales) + - Estados por pieza (sano, caries, obturacion, etc.) + - Estados por cara (mesial, distal, oclusal, etc.) + - Historial de cambios + + objetos: + tablas: ["dental.odontogramas", "dental.odontograma_piezas", "dental.piezas_dentales"] + entities: ["Odontograma", "OdontogramaPieza", "PiezaDental"] + services: ["OdontogramaService", "OdontogramaPiezaService"] + controllers: [] + + story_points: + backend: 21 + frontend: 21 + total: 42 + + dependencias: + modulos: ["CL-002"] + externos: [] +``` + +### DENTAL-002: Tratamientos + +```yaml +modulo: + id: "DENTAL-002" + nombre: "Tratamientos" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-002-tratamientos.md" + + descripcion: | + Gestion de tratamientos dentales: + - Catalogo de tratamientos por tenant + - Registro de tratamientos realizados + - Vinculacion con odontograma y piezas + - Seguimiento de estado + + objetos: + tablas: ["dental.tratamientos_catalogo", "dental.tratamientos_paciente"] + entities: ["TratamientoCatalogo", "TratamientoPaciente"] + services: ["TratamientoCatalogoService", "TratamientoPacienteService"] + + story_points: + backend: 21 + frontend: 13 + total: 34 + + dependencias: + modulos: ["DENTAL-001", "CL-002", "CL-004"] +``` + +### DENTAL-003: Ortodoncia + +```yaml +modulo: + id: "DENTAL-003" + nombre: "Ortodoncia" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-003-ortodoncia.md" + + descripcion: | + Control de tratamientos de ortodoncia: + - Registro de casos (brackets, alineadores, etc.) + - Seguimiento de citas de ajuste + - Control de pagos mensuales + - Estimacion de duracion + + objetos: + tablas: ["dental.ortodoncia", "dental.ortodoncia_citas"] + entities: ["Ortodoncia", "OrtodonciaCita"] + services: ["OrtodonciaService", "OrtodonciaCitaService"] + + story_points: + backend: 21 + frontend: 21 + total: 42 + + dependencias: + modulos: ["CL-002", "CL-003"] +``` + +### DENTAL-004: Protesis + +```yaml +modulo: + id: "DENTAL-004" + nombre: "Protesis" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-004-protesis.md" + + descripcion: | + Gestion de trabajos protesicos: + - Coronas, puentes, parciales, totales + - Seguimiento con laboratorio + - Control de materiales y colores + - Garantias + + objetos: + tablas: ["dental.protesis"] + entities: ["Protesis"] + services: ["ProtesisService"] + + story_points: + backend: 13 + frontend: 13 + total: 26 + + dependencias: + modulos: ["CL-002", "DENTAL-001"] +``` + +### DENTAL-005: Radiografias + +```yaml +modulo: + id: "DENTAL-005" + nombre: "Radiografias" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-005-radiografias.md" + + descripcion: | + Gestion de radiografias dentales: + - Periapicales, panoramicas, cefalometricas + - Almacenamiento de imagenes + - Interpretacion y notas + + objetos: + tablas: ["dental.radiografias"] + entities: ["Radiografia"] + services: ["RadiografiaService"] + + story_points: + backend: 13 + frontend: 13 + total: 26 + + dependencias: + modulos: ["CL-002", "CL-004", "CL-012"] +``` + +### DENTAL-006: Presupuestos + +```yaml +modulo: + id: "DENTAL-006" + nombre: "Presupuestos" + estado: "planificado" + version: "1.0.0" + + documentacion: + especificacion: "docs/01-epicas/DENTAL-006-presupuestos.md" + + descripcion: | + Presupuestos de tratamiento dental: + - Lineas de tratamiento con precios + - Descuentos y financiamiento + - Generacion de PDF + - Conversion a tratamientos + + objetos: + tablas: ["dental.presupuestos", "dental.presupuesto_lineas"] + entities: ["Presupuesto", "PresupuestoLinea"] + services: ["PresupuestoService"] + + story_points: + backend: 21 + frontend: 13 + total: 34 + + dependencias: + modulos: ["CL-002", "DENTAL-002"] +``` + +--- + +## 4. MATRIZ DE DEPENDENCIAS + +``` +┌────────────┬──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ +│ │ DENTAL-1 │ DENTAL-2 │ DENTAL-3 │ DENTAL-4 │ DENTAL-5 │ DENTAL-6 │ +├────────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ +│ DENTAL-001 │ - │ │ │ │ │ │ +│ DENTAL-002 │ X │ - │ │ │ │ │ +│ DENTAL-003 │ │ │ - │ │ │ │ +│ DENTAL-004 │ X │ │ │ - │ │ │ +│ DENTAL-005 │ │ │ │ │ - │ │ +│ DENTAL-006 │ │ X │ │ │ │ - │ +└────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘ + +X = depende de +``` + +--- + +## 5. STORY POINTS TOTALES + +| Modulo | SP Backend | SP Frontend | SP Total | +|--------|-----------|-------------|----------| +| DENTAL-001 | 21 | 21 | 42 | +| DENTAL-002 | 21 | 13 | 34 | +| DENTAL-003 | 21 | 21 | 42 | +| DENTAL-004 | 13 | 13 | 26 | +| DENTAL-005 | 13 | 13 | 26 | +| DENTAL-006 | 21 | 13 | 34 | +| **Total** | **110** | **94** | **204** | + +--- + +## 6. REFERENCIAS + +- Database: @PROJ_DEF_DB +- Entities: @PROJ_DEF_ENTITIES +- Services: @PROJ_DEF_SERVICES +- Navegacion rapida: docs/_quick/QUICK-MODULES.yml +- Herencia: orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md + +--- + +*Modules Catalog | clinica-dental | v1.0.0* +*Ultima actualizacion: 2026-01-16* diff --git a/docs/_definitions/SERVICES-CATALOG.md b/docs/_definitions/SERVICES-CATALOG.md new file mode 100644 index 0000000..b6517cb --- /dev/null +++ b/docs/_definitions/SERVICES-CATALOG.md @@ -0,0 +1,202 @@ +# Services Catalog - clinica-dental + +**Alias:** @PROJ_DEF_SERVICES +**Version:** 1.0.0 +**Ultima actualizacion:** 2026-01-16 + +--- + +## 1. RESUMEN + +| Metrica | Valor | +|---------|-------| +| **Total Services Propios** | 0 (Pendiente implementacion) | +| **Total Services Heredados** | 10+ (de erp-clinicas) | +| **Estado** | Planificado | + +--- + +## 2. SERVICES PLANIFICADOS + +### 2.1 Modulo: Odontograma (DENTAL-001) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| OdontogramaService | `odontograma.service.ts` | CRUD de odontogramas | +| OdontogramaPiezaService | `odontograma-pieza.service.ts` | Gestion de piezas | + +### 2.2 Modulo: Tratamientos (DENTAL-002) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| TratamientoCatalogoService | `tratamiento-catalogo.service.ts` | Catalogo de tratamientos | +| TratamientoPacienteService | `tratamiento-paciente.service.ts` | Tratamientos realizados | + +### 2.3 Modulo: Ortodoncia (DENTAL-003) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| OrtodonciaService | `ortodoncia.service.ts` | Gestion casos ortodoncia | +| OrtodonciaCitaService | `ortodoncia-cita.service.ts` | Seguimiento de citas | + +### 2.4 Modulo: Protesis (DENTAL-004) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| ProtesisService | `protesis.service.ts` | Gestion trabajos protesicos | + +### 2.5 Modulo: Radiografias (DENTAL-005) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| RadiografiaService | `radiografia.service.ts` | Gestion radiografias | + +### 2.6 Modulo: Presupuestos (DENTAL-006) + +| Service | Archivo Planificado | Descripcion | +|---------|---------------------|-------------| +| PresupuestoService | `presupuesto.service.ts` | Gestion presupuestos | + +--- + +## 3. UBICACION PLANIFICADA + +``` +backend/src/modules/ +├── odontograma/ +│ └── services/ +│ ├── odontograma.service.ts +│ └── odontograma-pieza.service.ts +├── tratamientos/ +│ └── services/ +│ ├── tratamiento-catalogo.service.ts +│ └── tratamiento-paciente.service.ts +├── ortodoncia/ +│ └── services/ +│ ├── ortodoncia.service.ts +│ └── ortodoncia-cita.service.ts +├── protesis/ +│ └── services/ +│ └── protesis.service.ts +├── radiografias/ +│ └── services/ +│ └── radiografia.service.ts +└── presupuestos/ + └── services/ + └── presupuesto.service.ts +``` + +--- + +## 4. SERVICES HEREDADOS (de erp-clinicas) + +| Service | Origen | Uso en clinica-dental | +|---------|--------|----------------------| +| PatientsService | erp-clinicas | Gestion pacientes | +| DoctorsService | erp-clinicas | Gestion odontologos | +| SpecialtiesService | erp-clinicas | Especialidades dentales | +| AppointmentsService | erp-clinicas | Citas dentales | +| AppointmentSlotsService | erp-clinicas | Horarios disponibles | +| AppointmentSchedulerService | erp-clinicas | Programacion de citas | +| ConsultationsService | erp-clinicas | Consultas dentales | +| DiagnosesService | erp-clinicas | Diagnosticos | +| PrescriptionsService | erp-clinicas | Recetas | +| VitalSignsService | erp-clinicas | Signos vitales | + +--- + +## 5. OPERACIONES PRINCIPALES POR SERVICE + +### OdontogramaService + +```yaml +operaciones: + crear: + descripcion: "Crear nuevo odontograma para paciente" + parametros: [patient_id, notas] + retorna: Odontograma + + obtenerActivo: + descripcion: "Obtener odontograma activo del paciente" + parametros: [patient_id] + retorna: Odontograma + + actualizarPieza: + descripcion: "Actualizar estado de pieza dental" + parametros: [odontograma_id, pieza_id, estado, caras_afectadas] + retorna: OdontogramaPieza + + obtenerHistorial: + descripcion: "Historial de odontogramas del paciente" + parametros: [patient_id] + retorna: Odontograma[] +``` + +### TratamientoPacienteService + +```yaml +operaciones: + crear: + descripcion: "Registrar tratamiento realizado" + parametros: [patient_id, tratamiento_id, pieza_id, caras_tratadas, precio] + retorna: TratamientoPaciente + + completar: + descripcion: "Marcar tratamiento como completado" + parametros: [tratamiento_id] + retorna: TratamientoPaciente + + obtenerPorPaciente: + descripcion: "Listar tratamientos de un paciente" + parametros: [patient_id, estado?] + retorna: TratamientoPaciente[] + + obtenerPendientes: + descripcion: "Listar tratamientos pendientes" + parametros: [patient_id] + retorna: TratamientoPaciente[] +``` + +### PresupuestoService + +```yaml +operaciones: + crear: + descripcion: "Crear presupuesto de tratamiento" + parametros: [patient_id, odontologo_id, lineas] + retorna: Presupuesto + + aprobar: + descripcion: "Aprobar presupuesto" + parametros: [presupuesto_id] + retorna: Presupuesto + + rechazar: + descripcion: "Rechazar presupuesto" + parametros: [presupuesto_id, motivo] + retorna: Presupuesto + + generarPDF: + descripcion: "Generar PDF del presupuesto" + parametros: [presupuesto_id] + retorna: Buffer + + convertirATratamientos: + descripcion: "Convertir presupuesto aprobado a tratamientos" + parametros: [presupuesto_id] + retorna: TratamientoPaciente[] +``` + +--- + +## 6. REFERENCIAS + +- Entities: @PROJ_DEF_ENTITIES +- Database: @PROJ_DEF_DB +- Ubicacion futura: `backend/src/modules/*/services/` +- Herencia erp-clinicas: `orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md` + +--- + +*Services Catalog | clinica-dental | v1.0.0* +*Ultima actualizacion: 2026-01-16* diff --git a/docs/_definitions/_INDEX.yml b/docs/_definitions/_INDEX.yml new file mode 100644 index 0000000..3ec26e2 --- /dev/null +++ b/docs/_definitions/_INDEX.yml @@ -0,0 +1,135 @@ +# Indice de Definiciones del Proyecto +# Proyecto: clinica-dental +# Sistema de Gestion para Clinicas Dentales + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" +descripcion: "Definiciones canonicas del proyecto Clinica Dental" + +# ============================================================================ +# 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 dental" + tablas_principales: + - "dental.piezas_dentales" + - "dental.tratamientos_catalogo" + - "dental.odontogramas" + - "dental.odontograma_piezas" + - "dental.tratamientos_paciente" + - "dental.ortodoncia" + - "dental.ortodoncia_citas" + - "dental.protesis" + - "dental.radiografias" + - "dental.presupuestos" + - "dental.presupuesto_lineas" + + entities: + archivo: "ENTITIES-CATALOG.md" + alias: "@PROJ_DEF_ENTITIES" + descripcion: "Catalogo de entidades del proyecto" + total_entities: 0 # Pendiente de implementacion + + services: + archivo: "SERVICES-CATALOG.md" + alias: "@PROJ_DEF_SERVICES" + descripcion: "Catalogo de servicios del proyecto" + total_services: 0 # Pendiente de implementacion + + modules: + archivo: "MODULES-CATALOG.md" + alias: "@PROJ_DEF_MODULES" + descripcion: "Catalogo de modulos del proyecto" + total_modules: 6 + +# ============================================================================ +# HERENCIA (Nivel 3: erp-core -> erp-clinicas -> clinica-dental) +# ============================================================================ +herencia: + padre: "erp-clinicas" + nivel: 3 + cadena_herencia: + - { proyecto: "erp-core", nivel: 1, tipo: "core" } + - { proyecto: "erp-clinicas", nivel: 2, tipo: "vertical" } + - { proyecto: "clinica-dental", nivel: 3, tipo: "sub-vertical" } + definiciones_heredadas: + - "@WS_DEF_CCA" + - "@WS_DEF_VAL_BE" + - "@WS_DEF_VAL_FE" + - "@WS_DEF_VAL_DDL" + modulos_heredados_erp_core: + fase_1_3_base: + - { id: "MGN-001", nombre: "Authentication", herencia: "100%" } + - { id: "MGN-002", nombre: "Users", herencia: "100%" } + - { id: "MGN-003", nombre: "Roles", herencia: "100%" } + - { id: "MGN-004", nombre: "Tenants", herencia: "extendido" } + - { id: "MGN-005", nombre: "Catalogs", herencia: "extendido" } + - { id: "MGN-007", nombre: "Audit", herencia: "100%" } + - { id: "MGN-008", nombre: "Notifications", herencia: "100%" } + - { id: "MGN-009", nombre: "Reports", herencia: "extendido" } + - { id: "MGN-010", nombre: "Financial", herencia: "extendido" } + fase_4_saas: + - { id: "MGN-016", nombre: "Billing", herencia: "100%" } + - { id: "MGN-017", nombre: "Plans", herencia: "100%" } + - { id: "MGN-018", nombre: "Webhooks", herencia: "100%" } + - { id: "MGN-019", nombre: "Feature Flags", herencia: "100%" } + fase_5_ia: + - { id: "MGN-020", nombre: "AI Integration", herencia: "100%" } + - { id: "MGN-021", nombre: "WhatsApp Business", herencia: "100%" } + - { id: "MGN-022", nombre: "MCP Server", herencia: "100%" } + modulos_heredados_erp_clinicas: + - { id: "CL-001", nombre: "Fundamentos", herencia: "100%" } + - { id: "CL-002", nombre: "Pacientes", herencia: "extendido" } + - { id: "CL-003", nombre: "Citas", herencia: "extendido" } + - { id: "CL-004", nombre: "Consultas", herencia: "extendido" } + - { id: "CL-005", nombre: "Recetas", herencia: "100%" } + - { id: "CL-006", nombre: "Laboratorio", herencia: "parcial" } + - { id: "CL-008", nombre: "Facturacion", herencia: "100%" } + - { id: "CL-009", nombre: "Reportes", herencia: "extendido" } + - { id: "CL-011", nombre: "Expediente", herencia: "extendido" } + - { id: "CL-012", nombre: "Imagenologia", herencia: "extendido" } + +# ============================================================================ +# CONSIDERACIONES ODONTOLOGICAS +# ============================================================================ +odontologia: + nomenclatura: + sistema: "FDI (Federacion Dental Internacional)" + cuadrantes_permanentes: [1, 2, 3, 4] + cuadrantes_temporales: [5, 6, 7, 8] + total_piezas_permanentes: 32 + total_piezas_temporales: 20 + regulaciones: + - { nombre: "NOM-013-SSA2-2015", estado: "planificado", descripcion: "Prevencion enfermedades bucales" } + - { nombre: "NOM-004-SSA3-2012", estado: "planificado", descripcion: "Expediente clinico" } + - { nombre: "COFEPRIS", estado: "planificado", descripcion: "Regulacion sanitaria" } + - { nombre: "LFPDPPP", estado: "planificado", descripcion: "Proteccion datos personales" } + +# ============================================================================ +# ESTADISTICAS +# ============================================================================ +estadisticas: + total_definiciones: 4 + total_referencias_ws: 6 + total_modulos_heredados_core: 16 + total_modulos_heredados_clinicas: 10 + total_modulos_propios: 6 + ultima_actualizacion: "2026-01-16" diff --git a/docs/_quick/QUICK-API.yml b/docs/_quick/QUICK-API.yml new file mode 100644 index 0000000..4ec86e8 --- /dev/null +++ b/docs/_quick/QUICK-API.yml @@ -0,0 +1,157 @@ +# Navegacion Rapida de API +# Proyecto: clinica-dental + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" +estado: "planificado" + +# ============================================================================ +# ENDPOINTS PLANIFICADOS POR MODULO +# ============================================================================ +por_modulo: + odontograma: + base: "/api/v1/dental/odontogramas" + estado: "planificado" + endpoints: + - { method: "POST", path: "/", descripcion: "Crear odontograma" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Obtener odontograma activo" } + - { method: "GET", path: "/paciente/:patientId/historial", descripcion: "Historial de odontogramas" } + - { method: "PATCH", path: "/:id/pieza", descripcion: "Actualizar estado de pieza" } + - { method: "GET", path: "/:id", descripcion: "Obtener odontograma por ID" } + + tratamientos: + base: "/api/v1/dental/tratamientos" + estado: "planificado" + endpoints: + - { method: "GET", path: "/catalogo", descripcion: "Listar catalogo de tratamientos" } + - { method: "POST", path: "/catalogo", descripcion: "Crear tratamiento en catalogo" } + - { method: "POST", path: "/", descripcion: "Registrar tratamiento a paciente" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Tratamientos de paciente" } + - { method: "PATCH", path: "/:id/completar", descripcion: "Marcar como completado" } + - { method: "GET", path: "/pendientes", descripcion: "Tratamientos pendientes" } + + ortodoncia: + base: "/api/v1/dental/ortodoncia" + estado: "planificado" + endpoints: + - { method: "POST", path: "/", descripcion: "Crear caso de ortodoncia" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Casos de ortodoncia del paciente" } + - { method: "GET", path: "/:id", descripcion: "Detalle de caso" } + - { method: "POST", path: "/:id/citas", descripcion: "Registrar cita de seguimiento" } + - { method: "GET", path: "/:id/citas", descripcion: "Historial de citas" } + - { method: "PATCH", path: "/:id/completar", descripcion: "Finalizar tratamiento" } + + protesis: + base: "/api/v1/dental/protesis" + estado: "planificado" + endpoints: + - { method: "POST", path: "/", descripcion: "Crear trabajo protesico" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Protesis del paciente" } + - { method: "GET", path: "/:id", descripcion: "Detalle de protesis" } + - { method: "PATCH", path: "/:id/laboratorio", descripcion: "Actualizar estado laboratorio" } + - { method: "PATCH", path: "/:id/colocar", descripcion: "Registrar colocacion" } + + radiografias: + base: "/api/v1/dental/radiografias" + estado: "planificado" + endpoints: + - { method: "POST", path: "/", descripcion: "Subir radiografia" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Radiografias del paciente" } + - { method: "GET", path: "/:id", descripcion: "Detalle de radiografia" } + - { method: "PATCH", path: "/:id/interpretacion", descripcion: "Agregar interpretacion" } + + presupuestos: + base: "/api/v1/dental/presupuestos" + estado: "planificado" + endpoints: + - { method: "POST", path: "/", descripcion: "Crear presupuesto" } + - { method: "GET", path: "/paciente/:patientId", descripcion: "Presupuestos del paciente" } + - { method: "GET", path: "/:id", descripcion: "Detalle de presupuesto" } + - { method: "PATCH", path: "/:id/aprobar", descripcion: "Aprobar presupuesto" } + - { method: "PATCH", path: "/:id/rechazar", descripcion: "Rechazar presupuesto" } + - { method: "GET", path: "/:id/pdf", descripcion: "Generar PDF" } + - { method: "POST", path: "/:id/convertir", descripcion: "Convertir a tratamientos" } + +# ============================================================================ +# ENDPOINTS HEREDADOS +# ============================================================================ +heredados: + erp_clinicas: + pacientes: + base: "/api/v1/patients" + heredado_de: "erp-clinicas" + citas: + base: "/api/v1/appointments" + heredado_de: "erp-clinicas" + consultas: + base: "/api/v1/consultations" + heredado_de: "erp-clinicas" + + erp_core: + auth: + base: "/api/v1/auth" + heredado_de: "erp-core" + users: + base: "/api/v1/users" + heredado_de: "erp-core" + tenants: + base: "/api/v1/tenants" + heredado_de: "erp-core" + +# ============================================================================ +# ENDPOINTS POR METODO (Planificados) +# ============================================================================ +por_metodo: + GET: + - "/api/v1/dental/odontogramas/paciente/:patientId" + - "/api/v1/dental/tratamientos/catalogo" + - "/api/v1/dental/tratamientos/paciente/:patientId" + - "/api/v1/dental/ortodoncia/paciente/:patientId" + - "/api/v1/dental/protesis/paciente/:patientId" + - "/api/v1/dental/radiografias/paciente/:patientId" + - "/api/v1/dental/presupuestos/paciente/:patientId" + POST: + - "/api/v1/dental/odontogramas" + - "/api/v1/dental/tratamientos" + - "/api/v1/dental/tratamientos/catalogo" + - "/api/v1/dental/ortodoncia" + - "/api/v1/dental/protesis" + - "/api/v1/dental/radiografias" + - "/api/v1/dental/presupuestos" + PATCH: + - "/api/v1/dental/odontogramas/:id/pieza" + - "/api/v1/dental/tratamientos/:id/completar" + - "/api/v1/dental/ortodoncia/:id/completar" + - "/api/v1/dental/presupuestos/:id/aprobar" + +# ============================================================================ +# AUTENTICACION +# ============================================================================ +autenticacion: + tipo: "JWT Bearer" + header: "Authorization" + formato: "Bearer {token}" + endpoints_publicos: + - "/api/v1/auth/login" + - "/api/v1/auth/register" + - "/api/v1/health" + +# ============================================================================ +# ERRORES COMUNES +# ============================================================================ +errores: + 400: "Bad Request - Datos invalidos" + 401: "Unauthorized - Token invalido o expirado" + 403: "Forbidden - Sin permisos" + 404: "Not Found - Recurso no encontrado" + 422: "Unprocessable Entity - Validacion fallida" + 500: "Internal Server Error" + +# ============================================================================ +# REFERENCIAS +# ============================================================================ +referencias: + swagger: "/api/docs" + services: "@PROJ_DEF_SERVICES" + modules: "@PROJ_DEF_MODULES" diff --git a/docs/_quick/QUICK-DATABASE.yml b/docs/_quick/QUICK-DATABASE.yml new file mode 100644 index 0000000..4008b08 --- /dev/null +++ b/docs/_quick/QUICK-DATABASE.yml @@ -0,0 +1,197 @@ +# Navegacion Rapida de Base de Datos +# Proyecto: clinica-dental + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" + +# ============================================================================ +# SCHEMAS +# ============================================================================ +schemas: + dental: + descripcion: "Schema principal de especializacion dental" + tablas_count: 11 + tablas_principales: + - piezas_dentales + - tratamientos_catalogo + - odontogramas + - odontograma_piezas + - tratamientos_paciente + - ortodoncia + - ortodoncia_citas + - protesis + - radiografias + - presupuestos + - presupuesto_lineas + + clinica: + descripcion: "Schema heredado de erp-clinicas" + desde: "erp-clinicas" + tablas_principales: + - patients + - doctors + - specialties + - appointments + - consultations + + auth: + descripcion: "Schema de autenticacion" + desde: "erp-core" + + tenants: + descripcion: "Schema de multi-tenancy" + desde: "erp-core" + +# ============================================================================ +# TABLAS PRINCIPALES (Top 10) +# ============================================================================ +tablas_principales: + - nombre: "odontogramas" + schema: "dental" + descripcion: "Odontogramas de pacientes" + modulo: "DENTAL-001" + relaciones: ["odontograma_piezas", "tratamientos_paciente"] + + - nombre: "odontograma_piezas" + schema: "dental" + descripcion: "Estado de cada pieza en el odontograma" + modulo: "DENTAL-001" + relaciones: ["odontogramas", "piezas_dentales"] + + - nombre: "piezas_dentales" + schema: "dental" + descripcion: "Catalogo de piezas dentales (FDI)" + tipo: "catalogo_global" + registros: 52 + + - nombre: "tratamientos_catalogo" + schema: "dental" + descripcion: "Catalogo de tratamientos por tenant" + modulo: "DENTAL-002" + tipo: "catalogo_tenant" + + - nombre: "tratamientos_paciente" + schema: "dental" + descripcion: "Tratamientos realizados a pacientes" + modulo: "DENTAL-002" + relaciones: ["tratamientos_catalogo", "odontogramas", "piezas_dentales"] + + - nombre: "ortodoncia" + schema: "dental" + descripcion: "Casos de ortodoncia" + modulo: "DENTAL-003" + relaciones: ["ortodoncia_citas"] + + - nombre: "protesis" + schema: "dental" + descripcion: "Trabajos protesicos" + modulo: "DENTAL-004" + + - nombre: "radiografias" + schema: "dental" + descripcion: "Radiografias dentales" + modulo: "DENTAL-005" + relaciones: ["piezas_dentales"] + + - nombre: "presupuestos" + schema: "dental" + descripcion: "Presupuestos de tratamiento" + modulo: "DENTAL-006" + relaciones: ["presupuesto_lineas"] + + - nombre: "presupuesto_lineas" + schema: "dental" + descripcion: "Lineas de presupuesto" + modulo: "DENTAL-006" + relaciones: ["presupuestos", "tratamientos_catalogo", "piezas_dentales"] + +# ============================================================================ +# BUSQUEDA RAPIDA +# ============================================================================ +busqueda: + por_modulo: + DENTAL-001: ["odontogramas", "odontograma_piezas", "piezas_dentales"] + DENTAL-002: ["tratamientos_catalogo", "tratamientos_paciente"] + DENTAL-003: ["ortodoncia", "ortodoncia_citas"] + DENTAL-004: ["protesis"] + DENTAL-005: ["radiografias"] + DENTAL-006: ["presupuestos", "presupuesto_lineas"] + + por_tipo: + catalogo_global: + - piezas_dentales + catalogo_tenant: + - tratamientos_catalogo + transaccional: + - odontogramas + - odontograma_piezas + - tratamientos_paciente + - ortodoncia + - ortodoncia_citas + - protesis + - radiografias + - presupuestos + - presupuesto_lineas + +# ============================================================================ +# ENUMS +# ============================================================================ +enums: + estado_pieza: + schema: "dental" + valores: ["sano", "caries", "obturacion", "endodoncia", "corona", "puente", "implante", "ausente", "extraccion_indicada", "diente_temporal", "fractura", "movilidad"] + cara_dental: + schema: "dental" + valores: ["mesial", "distal", "oclusal", "incisal", "vestibular", "bucal", "lingual", "palatino"] + estado_tratamiento: + schema: "dental" + valores: ["pendiente", "en_proceso", "completado", "cancelado"] + tipo_ortodoncia: + schema: "dental" + valores: ["brackets_metalicos", "brackets_esteticos", "brackets_linguales", "alineadores", "removible", "retenedor"] + +# ============================================================================ +# ARCHIVOS DDL +# ============================================================================ +ddl: + ubicacion: "database/schemas/" + archivos: + - archivo: "01-dental-schema-ddl.sql" + descripcion: "Schema dental completo" + fecha: "2026-01-04" + +# ============================================================================ +# SEEDS +# ============================================================================ +seeds: + ubicacion: "database/seeds/fase8/" + archivos: + - archivo: "01-dental-catalogos.sql" + descripcion: "Seeds de catalogos dentales" + +# ============================================================================ +# RLS (Row Level Security) +# ============================================================================ +rls: + habilitado: true + patron: "tenant_id = current_setting('app.current_tenant_id', true)::UUID" + tablas_con_rls: + - tratamientos_catalogo + - odontogramas + - odontograma_piezas + - tratamientos_paciente + - ortodoncia + - ortodoncia_citas + - protesis + - radiografias + - presupuestos + - presupuesto_lineas + +# ============================================================================ +# REFERENCIAS +# ============================================================================ +referencias: + schema_completo: "@PROJ_DEF_DB" + entities: "@PROJ_DEF_ENTITIES" + inventario: "orchestration/inventarios/DATABASE_INVENTORY.yml" diff --git a/docs/_quick/QUICK-INDEX.yml b/docs/_quick/QUICK-INDEX.yml new file mode 100644 index 0000000..58eb8f7 --- /dev/null +++ b/docs/_quick/QUICK-INDEX.yml @@ -0,0 +1,162 @@ +# Indice de Navegacion Rapida +# Proyecto: clinica-dental +# Sistema de Gestion para Clinicas Dentales + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" +descripcion: "Navegacion rapida del proyecto Clinica Dental" + +# ============================================================================ +# 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/" + referencias: "orchestration/_refs/WS-REFERENCES.yml" + + codigo: + database_schemas: "database/schemas/" + database_seeds: "database/seeds/" + +# ============================================================================ +# INDICES RAPIDOS +# ============================================================================ +indices_rapidos: + modulos: "QUICK-MODULES.yml" + database: "QUICK-DATABASE.yml" + api: "QUICK-API.yml" + +# ============================================================================ +# MODULOS DENTALES - ACCESO DIRECTO +# ============================================================================ +modulos_dentales: + odontograma: + id: "DENTAL-001" + docs: "docs/01-epicas/DENTAL-001-odontograma.md" + tablas: ["dental.odontogramas", "dental.odontograma_piezas"] + estado: "planificado" + tratamientos: + id: "DENTAL-002" + docs: "docs/01-epicas/DENTAL-002-tratamientos.md" + tablas: ["dental.tratamientos_catalogo", "dental.tratamientos_paciente"] + estado: "planificado" + ortodoncia: + id: "DENTAL-003" + docs: "docs/01-epicas/DENTAL-003-ortodoncia.md" + tablas: ["dental.ortodoncia", "dental.ortodoncia_citas"] + estado: "planificado" + protesis: + id: "DENTAL-004" + docs: "docs/01-epicas/DENTAL-004-protesis.md" + tablas: ["dental.protesis"] + estado: "planificado" + radiografias: + id: "DENTAL-005" + docs: "docs/01-epicas/DENTAL-005-radiografias.md" + tablas: ["dental.radiografias"] + estado: "planificado" + presupuestos: + id: "DENTAL-006" + docs: "docs/01-epicas/DENTAL-006-presupuestos.md" + tablas: ["dental.presupuestos", "dental.presupuesto_lineas"] + estado: "planificado" + +# ============================================================================ +# FASES HEREDADAS +# ============================================================================ +fases_heredadas: + saas: + descripcion: "Fase 4 - Capacidades SaaS" + mapa: "docs/04-fase-saas/_MAP.md" + modulos: + - { id: "MGN-016", nombre: "Billing", ruta: "docs/04-fase-saas/MGN-016-billing/" } + - { id: "MGN-017", nombre: "Plans", ruta: "docs/04-fase-saas/MGN-017-plans/" } + - { id: "MGN-018", nombre: "Webhooks", ruta: "docs/04-fase-saas/MGN-018-webhooks/" } + - { id: "MGN-019", nombre: "Feature Flags", ruta: "docs/04-fase-saas/MGN-019-feature-flags/" } + ia: + descripcion: "Fase 5 - Inteligencia Artificial" + mapa: "docs/05-fase-ia/_MAP.md" + modulos: + - { id: "MGN-020", nombre: "AI Integration", ruta: "docs/05-fase-ia/MGN-020-ai-integration/" } + - { id: "MGN-021", nombre: "WhatsApp Business", ruta: "docs/05-fase-ia/MGN-021-whatsapp-business/" } + - { id: "MGN-022", nombre: "MCP Server", ruta: "docs/05-fase-ia/MGN-022-mcp-server/" } + +# ============================================================================ +# ATAJOS POR ROL +# ============================================================================ +por_rol: + backend_developer: + - "docs/_definitions/ENTITIES-CATALOG.md" + - "docs/_definitions/SERVICES-CATALOG.md" + - "docs/_definitions/DATABASE-SCHEMA.md" + - "database/schemas/" + + frontend_developer: + - "docs/_quick/QUICK-API.yml" + - "docs/_definitions/MODULES-CATALOG.md" + + database_admin: + - "docs/_definitions/DATABASE-SCHEMA.md" + - "docs/_quick/QUICK-DATABASE.yml" + - "database/schemas/01-dental-schema-ddl.sql" + - "orchestration/inventarios/DATABASE_INVENTORY.yml" + + architect: + - "docs/00-vision-general/" + - "docs/_definitions/MODULES-CATALOG.md" + - "orchestration/DEPENDENCY-GRAPH.yml" + + odontologo: + - "docs/01-epicas/DENTAL-001-odontograma.md" + - "docs/01-epicas/DENTAL-002-tratamientos.md" + - "docs/01-epicas/DENTAL-006-presupuestos.md" + + auxiliar_dental: + - "docs/01-epicas/DENTAL-003-ortodoncia.md" + - "docs/01-epicas/DENTAL-005-radiografias.md" + + recepcionista: + - "docs/04-fase-saas/MGN-017-plans/" + - "docs/05-fase-ia/MGN-021-whatsapp-business/" + + administrador_clinica: + - "docs/01-epicas/DENTAL-006-presupuestos.md" + - "docs/04-fase-saas/MGN-016-billing/" + +# ============================================================================ +# HERENCIA Y PADRES +# ============================================================================ +herencia: + padre: "erp-clinicas" + nivel: 3 + cadena: + - { proyecto: "erp-core", nivel: 1 } + - { proyecto: "erp-clinicas", nivel: 2 } + - { proyecto: "clinica-dental", nivel: 3 } + referencias_padre: "orchestration/_refs/WS-REFERENCES.yml" + +# ============================================================================ +# REFERENCIAS A WORKSPACE +# ============================================================================ +workspace: + quick_index: "@WS_QUICK_INDEX" + definitions: "@WS_DEF_*" + catalog: "shared/catalog/" + templates: "shared/templates/" diff --git a/docs/_quick/QUICK-MODULES.yml b/docs/_quick/QUICK-MODULES.yml new file mode 100644 index 0000000..d0b6bfb --- /dev/null +++ b/docs/_quick/QUICK-MODULES.yml @@ -0,0 +1,122 @@ +# Navegacion Rapida de Modulos +# Proyecto: clinica-dental + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" + +# ============================================================================ +# MODULOS POR ESTADO +# ============================================================================ +por_estado: + produccion: [] + + desarrollo: [] + + planificado: + - id: "DENTAL-001" + nombre: "Odontograma" + ruta: "docs/01-epicas/DENTAL-001-odontograma.md" + - id: "DENTAL-002" + nombre: "Tratamientos" + ruta: "docs/01-epicas/DENTAL-002-tratamientos.md" + - id: "DENTAL-003" + nombre: "Ortodoncia" + ruta: "docs/01-epicas/DENTAL-003-ortodoncia.md" + - id: "DENTAL-004" + nombre: "Protesis" + ruta: "docs/01-epicas/DENTAL-004-protesis.md" + - id: "DENTAL-005" + nombre: "Radiografias" + ruta: "docs/01-epicas/DENTAL-005-radiografias.md" + - id: "DENTAL-006" + nombre: "Presupuestos" + ruta: "docs/01-epicas/DENTAL-006-presupuestos.md" + +# ============================================================================ +# MODULOS POR CATEGORIA +# ============================================================================ +por_categoria: + clinico_dental: + descripcion: "Modulos especificos de odontologia" + modulos: + - { id: "DENTAL-001", nombre: "Odontograma", estado: "planificado" } + - { id: "DENTAL-002", nombre: "Tratamientos", estado: "planificado" } + - { id: "DENTAL-005", nombre: "Radiografias", estado: "planificado" } + + especialidades: + descripcion: "Especialidades odontologicas" + modulos: + - { id: "DENTAL-003", nombre: "Ortodoncia", estado: "planificado" } + - { id: "DENTAL-004", nombre: "Protesis", estado: "planificado" } + + administrativo: + descripcion: "Gestion administrativa dental" + modulos: + - { id: "DENTAL-006", nombre: "Presupuestos", estado: "planificado" } + + heredados_clinicas: + descripcion: "Modulos heredados de erp-clinicas" + modulos: + - { id: "CL-001", nombre: "Fundamentos", herencia: "100%" } + - { id: "CL-002", nombre: "Pacientes", herencia: "extendido" } + - { id: "CL-003", nombre: "Citas", herencia: "extendido" } + - { id: "CL-004", nombre: "Consultas", herencia: "extendido" } + - { id: "CL-005", nombre: "Recetas", herencia: "100%" } + - { id: "CL-008", nombre: "Facturacion", herencia: "100%" } + - { id: "CL-009", nombre: "Reportes", herencia: "extendido" } + - { id: "CL-011", nombre: "Expediente", herencia: "extendido" } + - { id: "CL-012", nombre: "Imagenologia", herencia: "extendido" } + + heredados_saas: + descripcion: "Capacidades SaaS heredadas" + modulos: + - { id: "MGN-016", nombre: "Billing", herencia: "100%" } + - { id: "MGN-017", nombre: "Plans", herencia: "100%" } + - { id: "MGN-018", nombre: "Webhooks", herencia: "100%" } + - { id: "MGN-019", nombre: "Feature Flags", herencia: "100%" } + + heredados_ia: + descripcion: "Capacidades IA heredadas" + modulos: + - { id: "MGN-020", nombre: "AI Integration", herencia: "100%" } + - { id: "MGN-021", nombre: "WhatsApp Business", herencia: "100%" } + - { id: "MGN-022", nombre: "MCP Server", herencia: "100%" } + +# ============================================================================ +# BUSQUEDA RAPIDA +# ============================================================================ +busqueda: + por_prefijo: + DENTAL: "Modulo dental especializado" + CL: "Modulo clinico (heredado de erp-clinicas)" + MGN: "Modulo generico (heredado de erp-core)" + + por_archivo: + epica: "DENTAL-*.md" + especificacion: "ET-*.md" + requerimiento: "RF-*.md" + historia: "US-*.md" + +# ============================================================================ +# STORY POINTS +# ============================================================================ +story_points: + por_modulo: + DENTAL-001: { backend: 21, frontend: 21, total: 42 } + DENTAL-002: { backend: 21, frontend: 13, total: 34 } + DENTAL-003: { backend: 21, frontend: 21, total: 42 } + DENTAL-004: { backend: 13, frontend: 13, total: 26 } + DENTAL-005: { backend: 13, frontend: 13, total: 26 } + DENTAL-006: { backend: 21, frontend: 13, total: 34 } + totales: + backend: 110 + frontend: 94 + total: 204 + +# ============================================================================ +# REFERENCIAS +# ============================================================================ +referencias: + catalogo_completo: "@PROJ_DEF_MODULES" + indice_general: "docs/_MAP.md" diff --git a/orchestration/DEPENDENCY-GRAPH.yml b/orchestration/DEPENDENCY-GRAPH.yml new file mode 100644 index 0000000..e68805a --- /dev/null +++ b/orchestration/DEPENDENCY-GRAPH.yml @@ -0,0 +1,198 @@ +# Grafo de Dependencias del Proyecto +# Proyecto: clinica-dental + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" + +# ============================================================================ +# DEPENDENCIAS EXTERNAS (NPM, etc.) +# ============================================================================ +dependencias_externas: + backend: + framework: "NestJS" + version: "^10.0.0" + principales: + - nombre: "@nestjs/core" + version: "^10.0.0" + uso: "Framework core" + - nombre: "@nestjs/typeorm" + version: "^10.0.0" + uso: "ORM integration" + - nombre: "typeorm" + version: "^0.3.0" + uso: "ORM" + - nombre: "pg" + version: "^8.0.0" + uso: "PostgreSQL driver" + + frontend: + framework: "React" + version: "^18.0.0" + principales: + - nombre: "react" + version: "^18.0.0" + - nombre: "react-router-dom" + version: "^6.0.0" + + database: + tipo: "PostgreSQL" + version: "15+" + orm: "TypeORM" + +# ============================================================================ +# DEPENDENCIAS INTERNAS (Entre modulos del proyecto) +# ============================================================================ +dependencias_internas: + modulos: + DENTAL-001: + nombre: "Odontograma" + depende_de: ["CL-002"] + dependientes: ["DENTAL-002", "DENTAL-004"] + descripcion: "Depende de Pacientes (CL-002)" + + DENTAL-002: + nombre: "Tratamientos" + depende_de: ["DENTAL-001", "CL-002", "CL-004"] + dependientes: ["DENTAL-006"] + descripcion: "Depende de Odontograma, Pacientes, Consultas" + + DENTAL-003: + nombre: "Ortodoncia" + depende_de: ["CL-002", "CL-003"] + dependientes: [] + descripcion: "Depende de Pacientes y Citas" + + DENTAL-004: + nombre: "Protesis" + depende_de: ["CL-002", "DENTAL-001"] + dependientes: [] + descripcion: "Depende de Pacientes y Odontograma" + + DENTAL-005: + nombre: "Radiografias" + depende_de: ["CL-002", "CL-004", "CL-012"] + dependientes: [] + descripcion: "Depende de Pacientes, Consultas, Imagenologia" + + DENTAL-006: + nombre: "Presupuestos" + depende_de: ["CL-002", "DENTAL-002"] + dependientes: [] + descripcion: "Depende de Pacientes y Tratamientos" + +# ============================================================================ +# DEPENDENCIAS DE WORKSPACE +# ============================================================================ +dependencias_workspace: + definiciones: + - "@WS_DEF_CCA" + - "@WS_DEF_VAL_BE" + - "@WS_DEF_VAL_FE" + - "@WS_DEF_VAL_DDL" + + catalogos: + - "shared/catalog/auth/" + - "shared/catalog/notifications/" + +# ============================================================================ +# DEPENDENCIAS DE OTROS PROYECTOS (Herencia) +# ============================================================================ +dependencias_proyectos: + proyectos: + - proyecto: "erp-clinicas" + tipo: "herencia" + nivel: 2 + modulos_usados: + - { id: "CL-001", nombre: "Fundamentos", uso: "100%" } + - { id: "CL-002", nombre: "Pacientes", uso: "extendido" } + - { id: "CL-003", nombre: "Citas", uso: "extendido" } + - { id: "CL-004", nombre: "Consultas", uso: "extendido" } + - { id: "CL-005", nombre: "Recetas", uso: "100%" } + - { id: "CL-006", nombre: "Laboratorio", uso: "parcial" } + - { id: "CL-008", nombre: "Facturacion", uso: "100%" } + - { id: "CL-009", nombre: "Reportes", uso: "extendido" } + - { id: "CL-011", nombre: "Expediente", uso: "extendido" } + - { id: "CL-012", nombre: "Imagenologia", uso: "extendido" } + + - proyecto: "erp-core" + tipo: "herencia indirecta" + nivel: 1 + modulos_usados: + core: + - { id: "MGN-001", nombre: "Authentication" } + - { id: "MGN-002", nombre: "Users" } + - { id: "MGN-003", nombre: "Roles" } + - { id: "MGN-004", nombre: "Tenants" } + - { id: "MGN-005", nombre: "Catalogs" } + - { id: "MGN-007", nombre: "Audit" } + - { id: "MGN-008", nombre: "Notifications" } + - { id: "MGN-009", nombre: "Reports" } + - { id: "MGN-010", nombre: "Financial" } + saas: + - { id: "MGN-016", nombre: "Billing" } + - { id: "MGN-017", nombre: "Plans" } + - { id: "MGN-018", nombre: "Webhooks" } + - { id: "MGN-019", nombre: "Feature Flags" } + ia: + - { id: "MGN-020", nombre: "AI Integration" } + - { id: "MGN-021", nombre: "WhatsApp Business" } + - { id: "MGN-022", nombre: "MCP Server" } + +# ============================================================================ +# GRAFO VISUAL +# ============================================================================ +grafo: + formato: "mermaid" + diagrama: | + graph TD + subgraph "Nivel 1: erp-core" + CORE[MGN-001..022
Core + SaaS + IA] + end + + subgraph "Nivel 2: erp-clinicas" + CL002[CL-002
Pacientes] + CL003[CL-003
Citas] + CL004[CL-004
Consultas] + CL012[CL-012
Imagenologia] + end + + subgraph "Nivel 3: clinica-dental" + D001[DENTAL-001
Odontograma] + D002[DENTAL-002
Tratamientos] + D003[DENTAL-003
Ortodoncia] + D004[DENTAL-004
Protesis] + D005[DENTAL-005
Radiografias] + D006[DENTAL-006
Presupuestos] + end + + CORE --> CL002 + CORE --> CL003 + CORE --> CL004 + CORE --> CL012 + + CL002 --> D001 + D001 --> D002 + CL004 --> D002 + D002 --> D006 + + CL002 --> D003 + CL003 --> D003 + + D001 --> D004 + CL002 --> D004 + + CL002 --> D005 + CL004 --> D005 + CL012 --> D005 + +# ============================================================================ +# ESTADISTICAS +# ============================================================================ +estadisticas: + total_dependencias_externas: 6 + total_dependencias_internas: 12 + total_dependencias_workspace: 6 + total_modulos_heredados: 26 + total_modulos_propios: 6 + ultima_actualizacion: "2026-01-16" diff --git a/orchestration/TRACEABILITY.yml b/orchestration/TRACEABILITY.yml new file mode 100644 index 0000000..5dea493 --- /dev/null +++ b/orchestration/TRACEABILITY.yml @@ -0,0 +1,285 @@ +# Trazabilidad del Proyecto +# Proyecto: clinica-dental + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" + +# ============================================================================ +# TRAZABILIDAD MODULO <-> OBJETOS +# ============================================================================ +trazabilidad_modulos: + DENTAL-001: + nombre: "Odontograma" + documentacion: + especificacion: "docs/01-epicas/DENTAL-001-odontograma.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.odontogramas" + - "dental.odontograma_piezas" + - "dental.piezas_dentales" + schemas: ["dental"] + + objetos_backend: + entities: + - "Odontograma" + - "OdontogramaPieza" + - "PiezaDental" + services: + - "OdontogramaService" + - "OdontogramaPiezaService" + controllers: + - "OdontogramaController" + + objetos_frontend: + componentes: [] + stores: [] + hooks: [] + + DENTAL-002: + nombre: "Tratamientos" + documentacion: + especificacion: "docs/01-epicas/DENTAL-002-tratamientos.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.tratamientos_catalogo" + - "dental.tratamientos_paciente" + schemas: ["dental"] + + objetos_backend: + entities: + - "TratamientoCatalogo" + - "TratamientoPaciente" + services: + - "TratamientoCatalogoService" + - "TratamientoPacienteService" + controllers: + - "TratamientoController" + + DENTAL-003: + nombre: "Ortodoncia" + documentacion: + especificacion: "docs/01-epicas/DENTAL-003-ortodoncia.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.ortodoncia" + - "dental.ortodoncia_citas" + schemas: ["dental"] + + objetos_backend: + entities: + - "Ortodoncia" + - "OrtodonciaCita" + services: + - "OrtodonciaService" + - "OrtodonciaCitaService" + controllers: + - "OrtodonciaController" + + DENTAL-004: + nombre: "Protesis" + documentacion: + especificacion: "docs/01-epicas/DENTAL-004-protesis.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.protesis" + schemas: ["dental"] + + objetos_backend: + entities: + - "Protesis" + services: + - "ProtesisService" + controllers: + - "ProtesisController" + + DENTAL-005: + nombre: "Radiografias" + documentacion: + especificacion: "docs/01-epicas/DENTAL-005-radiografias.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.radiografias" + schemas: ["dental"] + + objetos_backend: + entities: + - "Radiografia" + services: + - "RadiografiaService" + controllers: + - "RadiografiaController" + + DENTAL-006: + nombre: "Presupuestos" + documentacion: + especificacion: "docs/01-epicas/DENTAL-006-presupuestos.md" + requerimientos: [] + historias: [] + + objetos_bd: + tablas: + - "dental.presupuestos" + - "dental.presupuesto_lineas" + schemas: ["dental"] + + objetos_backend: + entities: + - "Presupuesto" + - "PresupuestoLinea" + services: + - "PresupuestoService" + controllers: + - "PresupuestoController" + +# ============================================================================ +# 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: + DENTAL-001: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + DENTAL-002: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + DENTAL-003: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + DENTAL-004: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + DENTAL-005: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + DENTAL-006: + documentacion: true + ddl: true + backend: false + frontend: false + tests: false + +# ============================================================================ +# REFERENCIAS CRUZADAS +# ============================================================================ +referencias_cruzadas: + por_tabla: + "dental.odontogramas": + modulos: ["DENTAL-001"] + entities: ["Odontograma"] + documentos: ["DENTAL-001-odontograma.md"] + + "dental.odontograma_piezas": + modulos: ["DENTAL-001"] + entities: ["OdontogramaPieza"] + documentos: ["DENTAL-001-odontograma.md"] + + "dental.tratamientos_catalogo": + modulos: ["DENTAL-002"] + entities: ["TratamientoCatalogo"] + documentos: ["DENTAL-002-tratamientos.md"] + + "dental.tratamientos_paciente": + modulos: ["DENTAL-002"] + entities: ["TratamientoPaciente"] + documentos: ["DENTAL-002-tratamientos.md"] + + "dental.ortodoncia": + modulos: ["DENTAL-003"] + entities: ["Ortodoncia"] + documentos: ["DENTAL-003-ortodoncia.md"] + + "dental.protesis": + modulos: ["DENTAL-004"] + entities: ["Protesis"] + documentos: ["DENTAL-004-protesis.md"] + + "dental.radiografias": + modulos: ["DENTAL-005"] + entities: ["Radiografia"] + documentos: ["DENTAL-005-radiografias.md"] + + "dental.presupuestos": + modulos: ["DENTAL-006"] + entities: ["Presupuesto"] + documentos: ["DENTAL-006-presupuestos.md"] + +# ============================================================================ +# IMPACTO DE CAMBIOS +# ============================================================================ +impacto: + "dental.odontogramas": + tipo: "tabla" + impacta: + entities: ["Odontograma"] + services: ["OdontogramaService"] + modulos: ["DENTAL-001", "DENTAL-002", "DENTAL-004"] + + "dental.tratamientos_catalogo": + tipo: "tabla" + impacta: + entities: ["TratamientoCatalogo"] + services: ["TratamientoCatalogoService", "TratamientoPacienteService", "PresupuestoService"] + modulos: ["DENTAL-002", "DENTAL-006"] + + "clinica.patients": + tipo: "tabla heredada" + impacta: + modulos: ["DENTAL-001", "DENTAL-002", "DENTAL-003", "DENTAL-004", "DENTAL-005", "DENTAL-006"] + +# ============================================================================ +# HISTORIAL DE CAMBIOS +# ============================================================================ +historial: + - fecha: "2026-01-16" + tipo: "creacion" + descripcion: "Trazabilidad inicial del proyecto" + autor: "Claude" + +# ============================================================================ +# ESTADISTICAS +# ============================================================================ +estadisticas: + modulos_mapeados: 6 + tablas_mapeadas: 11 + entities_mapeadas: 0 + documentos_referenciados: 6 + ultima_actualizacion: "2026-01-16" diff --git a/orchestration/_refs/WS-REFERENCES.yml b/orchestration/_refs/WS-REFERENCES.yml new file mode 100644 index 0000000..a0f1217 --- /dev/null +++ b/orchestration/_refs/WS-REFERENCES.yml @@ -0,0 +1,172 @@ +# Referencias a Workspace +# Proyecto: clinica-dental +# Nivel de Herencia: 3 (erp-core -> erp-clinicas -> clinica-dental) + +version: "1.0.0" +proyecto: "clinica-dental" +fecha_creacion: "2026-01-16" + +# ============================================================================ +# REFERENCIAS A DEFINICIONES GLOBALES +# ============================================================================ +definiciones_workspace: + protocolos: + CCA: + alias: "@WS_DEF_CCA" + archivo: "orchestration/_definitions/protocols/CCA-PROTOCOL.md" + uso: "Protocolo de Carga de Contexto Automatica" + + CCA_LIGHT: + alias: "@WS_DEF_CCA_LIGHT" + archivo: "orchestration/_definitions/protocols/CCA-LIGHT.md" + uso: "Version ligera para subagentes" + + validaciones: + backend: + alias: "@WS_DEF_VAL_BE" + archivo: "orchestration/_definitions/validations/VALIDATION-BACKEND.md" + comandos: ["npm run build", "npm run lint", "npm run test"] + + frontend: + alias: "@WS_DEF_VAL_FE" + archivo: "orchestration/_definitions/validations/VALIDATION-FRONTEND.md" + comandos: ["npm run build", "npm run lint", "npm run typecheck"] + + ddl: + alias: "@WS_DEF_VAL_DDL" + archivo: "orchestration/_definitions/validations/VALIDATION-DDL.md" + + devops: + alias: "@WS_DEF_VAL_DEVOPS" + archivo: "orchestration/_definitions/validations/VALIDATION-DEVOPS.md" + +# ============================================================================ +# REFERENCIAS A NAVEGACION RAPIDA GLOBAL +# ============================================================================ +navegacion_workspace: + indice: + alias: "@WS_QUICK_INDEX" + archivo: "orchestration/_quick/QUICK-INDEX.yml" + + perfiles: + alias: "@WS_QUICK_PERFILES" + archivo: "orchestration/_quick/QUICK-PERFILES.yml" + + directivas: + alias: "@WS_QUICK_DIRECTIVAS" + archivo: "orchestration/_quick/QUICK-DIRECTIVAS.yml" + +# ============================================================================ +# REFERENCIAS A CATALOGO COMPARTIDO +# ============================================================================ +catalogo_compartido: + indice: + alias: "@WS_CATALOG" + archivo: "shared/catalog/CATALOG-INDEX.yml" + + funcionalidades: + auth: "shared/catalog/auth/" + notifications: "shared/catalog/notifications/" + payments: "shared/catalog/payments/" + multi_tenancy: "shared/catalog/multi-tenancy/" + +# ============================================================================ +# HERENCIA DE PROYECTO (Nivel 3) +# ============================================================================ +herencia: + padre: "erp-clinicas" + nivel: 3 + cadena_completa: + - proyecto: "erp-core" + nivel: 1 + tipo: "core" + hereda: "definiciones + codigo base" + - proyecto: "erp-clinicas" + nivel: 2 + tipo: "vertical" + hereda: "definiciones + codigo clinico" + - proyecto: "clinica-dental" + nivel: 3 + tipo: "sub-vertical" + hereda: "especializacion dental" + + hereda_de: + - proyecto: "erp-clinicas" + tipo: "definiciones + codigo" + modulos: + - CL-001 # Fundamentos + - CL-002 # Pacientes + - CL-003 # Citas + - CL-004 # Consultas + - CL-005 # Recetas + - CL-006 # Laboratorio (parcial) + - CL-008 # Facturacion + - CL-009 # Reportes + - CL-011 # Expediente + - CL-012 # Imagenologia + - proyecto: "erp-core" + tipo: "definiciones base + codigo core" + modulos: + - MGN-001 # Authentication + - MGN-002 # Users + - MGN-003 # Roles + - MGN-004 # Tenants + - MGN-005 # Catalogs + - MGN-007 # Audit + - MGN-008 # Notifications + - MGN-009 # Reports + - MGN-010 # Financial + - MGN-016 # Billing (SaaS) + - MGN-017 # Plans (SaaS) + - MGN-018 # Webhooks (SaaS) + - MGN-019 # Feature Flags (SaaS) + - MGN-020 # AI Integration (IA) + - MGN-021 # WhatsApp Business (IA) + - MGN-022 # MCP Server (IA) + +# ============================================================================ +# PROPAGACION +# ============================================================================ +propagacion: + mirror: "shared/mirrors/clinica-dental/" + status: "shared/mirrors/clinica-dental/PROPAGATION-STATUS.yml" + consumidores: [] # Sin sub-proyectos actualmente + proveedores: + - proyecto: "erp-clinicas" + tipo: "padre" + - proyecto: "erp-core" + tipo: "abuelo" + +# ============================================================================ +# DEFINICIONES LOCALES +# ============================================================================ +definiciones_locales: + database: + alias: "@PROJ_DEF_DB" + archivo: "docs/_definitions/DATABASE-SCHEMA.md" + entities: + alias: "@PROJ_DEF_ENTITIES" + archivo: "docs/_definitions/ENTITIES-CATALOG.md" + services: + alias: "@PROJ_DEF_SERVICES" + archivo: "docs/_definitions/SERVICES-CATALOG.md" + modules: + alias: "@PROJ_DEF_MODULES" + archivo: "docs/_definitions/MODULES-CATALOG.md" + +# ============================================================================ +# NAVEGACION RAPIDA LOCAL +# ============================================================================ +navegacion_local: + indice: + alias: "@PROJ_QUICK_INDEX" + archivo: "docs/_quick/QUICK-INDEX.yml" + modulos: + alias: "@PROJ_QUICK_MODULES" + archivo: "docs/_quick/QUICK-MODULES.yml" + database: + alias: "@PROJ_QUICK_DB" + archivo: "docs/_quick/QUICK-DATABASE.yml" + api: + alias: "@PROJ_QUICK_API" + archivo: "docs/_quick/QUICK-API.yml"