diff --git a/docs/00-vision-general/VISION.md b/docs/00-vision-general/VISION.md new file mode 100644 index 0000000..210cb5f --- /dev/null +++ b/docs/00-vision-general/VISION.md @@ -0,0 +1,348 @@ +# VISION - Sistema de Gestion Clinica Dental + +**Proyecto:** clinica-dental +**Version:** 1.0.0 +**Fecha:** 2026-01-07 +**Estado:** Fase 0 - Documentacion + +--- + +## 1. PROPOSITO + +Sistema de gestion integral para clinicas odontologicas que permite administrar pacientes, expedientes clinicos, odontogramas digitales, tratamientos dentales, citas, facturacion e inventario de materiales. + +### Problema que Resuelve + +- Falta de registro digital estructurado del estado dental de pacientes +- Dificultad para dar seguimiento a tratamientos de larga duracion (ortodoncia) +- Gestion manual de citas y disponibilidad de sillones +- Control deficiente de inventario de materiales dentales +- Falta de trazabilidad en procedimientos y presupuestos + +### Propuesta de Valor + +- **Odontograma digital interactivo** con nomenclatura FDI +- **Historial por pieza dental** con fotos y radiografias +- **Seguimiento de tratamientos** con alertas de proximas citas +- **Presupuestos detallados** con planes de pago +- **Control de inventario** de materiales por procedimiento + +--- + +## 2. OBJETIVOS PRINCIPALES + +### O1: Gestion de Pacientes y Expedientes +- Registro completo de datos del paciente +- Historial clinico odontologico +- Alergias y contraindicaciones +- Consentimientos informados digitales + +### O2: Odontograma Digital +- Representacion grafica de 32 piezas (adulto) o deciduos +- Estado por pieza: sano, caries, obturacion, ausente, etc. +- Registro de caras afectadas (M, D, O, V, L) +- Historial de cambios por fecha + +### O3: Gestion de Tratamientos +- Catalogo de procedimientos dentales +- Planes de tratamiento personalizados +- Seguimiento de citas por tratamiento +- Presupuestos con opciones de pago + +### O4: Especialidades Integradas +- Ortodoncia (brackets, alineadores, retenedores) +- Endodoncia (tratamientos de conductos) +- Periodoncia (raspados, cirugia) +- Prostodoncia (coronas, puentes, implantes) +- Estetica dental (blanqueamiento, carillas) + +### O5: Operacion de Clinica +- Agenda de citas por odontologo y sillon +- Control de inventario de materiales +- Facturacion integrada +- Reportes de productividad + +--- + +## 3. USUARIOS Y ROLES + +| Rol | Descripcion | Permisos Principales | +|-----|-------------|---------------------| +| **Odontologo** | Medico tratante | Consultas, diagnosticos, tratamientos, prescripciones | +| **Auxiliar Dental** | Apoyo en procedimientos | Ver expedientes, actualizar estado, preparar materiales | +| **Recepcionista** | Atencion al paciente | Agendar citas, cobros, captura de datos | +| **Higienista** | Profilaxis dental | Limpiezas, aplicar fluor, selladores | +| **Tecnico Dental** | Trabajos protesicos | Ver ordenes de laboratorio, actualizar estatus | +| **Administrador** | Gestion general | Configuracion, reportes, usuarios, catalogs | + +--- + +## 4. FUNCIONALIDADES CORE + +### 4.1 Modulo Odontograma + +```yaml +entidad_principal: odontograma +campos: + - id: UUID + - paciente_id: UUID (FK) + - fecha_registro: TIMESTAMP + - tipo: ENUM (adulto, deciduo) + - piezas: JSONB[] + +funcionalidades: + - Vista grafica interactiva de dentadura + - Click en pieza para ver/editar estado + - Colores por estado (verde=sano, rojo=caries, gris=ausente) + - Historial de cambios por pieza + - Comparativa entre fechas +``` + +### 4.2 Modulo Tratamientos + +```yaml +entidad_principal: tratamiento +campos: + - id: UUID + - paciente_id: UUID (FK) + - pieza_id: UUID (FK, opcional) + - procedimiento_id: UUID (FK catalogo) + - fecha_inicio: DATE + - fecha_fin: DATE + - estado: ENUM (pendiente, en_proceso, completado, cancelado) + - costo: DECIMAL + - odontologo_id: UUID (FK) + +funcionalidades: + - Plan de tratamiento con multiples procedimientos + - Asociacion a pieza dental especifica + - Seguimiento de citas relacionadas + - Presupuesto automatico + - Notas clinicas por cita +``` + +### 4.3 Modulo Ortodoncia + +```yaml +entidad_principal: caso_ortodoncia +campos: + - id: UUID + - paciente_id: UUID (FK) + - tipo: ENUM (brackets_metalicos, brackets_ceramicos, alineadores, retenedores) + - fecha_colocacion: DATE + - fecha_estimada_retiro: DATE + - citas_control: INTEGER (cada cuantas semanas) + - estado: ENUM (activo, pausado, finalizado) + +funcionalidades: + - Registro de estudios iniciales (Rx, fotos, modelos) + - Seguimiento de citas de ajuste + - Fotos de progreso + - Control de retenedores post-tratamiento +``` + +### 4.4 Modulo Protesis + +```yaml +entidad_principal: trabajo_protesico +campos: + - id: UUID + - paciente_id: UUID (FK) + - tipo: ENUM (corona, puente, dentadura_parcial, dentadura_total, implante) + - piezas_involucradas: INTEGER[] + - laboratorio_id: UUID (FK) + - fecha_impresion: DATE + - fecha_entrega_estimada: DATE + - estado: ENUM (impresion, laboratorio, prueba, cementado, entregado) + +funcionalidades: + - Ordenes de trabajo a laboratorio + - Seguimiento de estatus + - Registro de pruebas y ajustes + - Garantias +``` + +--- + +## 5. NOMENCLATURA DENTAL (FDI) + +### Sistema de Numeracion + +``` + SUPERIOR + Derecho | Izquierdo + 18-11 | 21-28 + ---------|---------- + 48-41 | 31-38 + Derecho | Izquierdo + INFERIOR + +Cuadrante 1: Superior derecho (11-18) +Cuadrante 2: Superior izquierdo (21-28) +Cuadrante 3: Inferior izquierdo (31-38) +Cuadrante 4: Inferior derecho (41-48) +``` + +### Dientes Deciduos (Ninos) + +``` +Cuadrante 5: Superior derecho deciduo (51-55) +Cuadrante 6: Superior izquierdo deciduo (61-65) +Cuadrante 7: Inferior izquierdo deciduo (71-75) +Cuadrante 8: Inferior derecho deciduo (81-85) +``` + +### Caras Dentales + +| Abreviatura | Nombre | Descripcion | +|-------------|--------|-------------| +| M | Mesial | Hacia el centro de la arcada | +| D | Distal | Alejandose del centro | +| O | Oclusal | Superficie de masticacion (molares) | +| I | Incisal | Borde de corte (incisivos) | +| V | Vestibular | Hacia los labios/mejillas | +| B | Bucal | Sinonimo de vestibular | +| L | Lingual | Hacia la lengua (inferiores) | +| P | Palatino | Hacia el paladar (superiores) | + +--- + +## 6. CATALOGO DE PROCEDIMIENTOS + +### Prevencion +- Limpieza dental (profilaxis) +- Aplicacion de fluor +- Selladores de fosetas y fisuras +- Detartraje (remocion de sarro) + +### Restauracion +- Resina (por cara) +- Amalgama +- Incrustacion (inlay/onlay) +- Reconstruccion + +### Endodoncia +- Tratamiento de conductos (unirradicular) +- Tratamiento de conductos (birradicular) +- Tratamiento de conductos (multirradicular) +- Retratamiento +- Apicoectomia + +### Periodoncia +- Raspado y alisado radicular +- Cirugia periodontal +- Injerto de encia +- Ferulizacion + +### Cirugia +- Extraccion simple +- Extraccion quirurgica +- Tercer molar retenido +- Frenectomia +- Biopsia + +### Protesis +- Corona metal-porcelana +- Corona libre de metal (zirconia) +- Puente fijo +- Dentadura parcial removible +- Dentadura total +- Implante dental + +### Ortodoncia +- Colocacion de brackets +- Ajuste mensual +- Retiro de aparatologia +- Retenedor fijo +- Retenedor removible +- Alineadores transparentes + +### Estetica +- Blanqueamiento en consultorio +- Blanqueamiento casero +- Carillas de porcelana +- Carillas de resina +- Cierre de diastemas + +--- + +## 7. INTEGRACIONES + +| Sistema | Proposito | Prioridad | +|---------|-----------|-----------| +| Radiografias digitales | Captura de Rx periapicales, panoramicas | P1 | +| Laboratorio dental | Ordenes de trabajo protesico | P2 | +| Proveedores | Pedidos de materiales | P2 | +| Facturacion electronica | CFDI 4.0 | P1 | + +--- + +## 8. METRICAS DE EXITO + +| Metrica | Descripcion | Objetivo | +|---------|-------------|----------| +| Consultas/dia | Pacientes atendidos por odontologo | 8-12 | +| Tratamientos completados | Planes finalizados por mes | 80% | +| Tasa retencion ortodoncia | Pacientes que completan tratamiento | 90% | +| Ticket promedio | Ingreso por paciente | $2,500+ | +| Ocupacion sillones | Uso de unidades dentales | 85% | +| Satisfaccion paciente | NPS | 8.5+ | + +--- + +## 9. FASES DE DESARROLLO + +### Fase 1: Core (MVP) +- Gestion de pacientes +- Odontograma basico +- Agenda de citas +- Facturacion simple + +### Fase 2: Tratamientos +- Catalogo de procedimientos +- Planes de tratamiento +- Presupuestos +- Seguimiento de citas + +### Fase 3: Especialidades +- Ortodoncia completa +- Endodoncia +- Protesis y laboratorio +- Periodoncia + +### Fase 4: Optimizacion +- Reportes avanzados +- Integracion con Rx digitales +- App movil para pacientes +- Recordatorios automaticos + +--- + +## 10. HERENCIA Y DEPENDENCIAS + +### Hereda de erp-clinicas +- Modulo Pacientes +- Modulo Expedientes +- Modulo Citas +- Modulo Consultas +- Modulo Recetas + +### Hereda de erp-core +- Autenticacion y usuarios +- Roles y permisos +- Facturacion +- Inventario +- Catalogos base + +### Especifico Dental (Nuevo) +- Odontograma +- Tratamientos dentales +- Ortodoncia +- Protesis +- Nomenclatura FDI + +--- + +**Documento creado:** 2026-01-07 +**Autor:** Agente Orquestador Workspace +**Basado en:** SIMCO v2.5, CONTEXTO-PROYECTO.md diff --git a/docs/02-definicion-modulos/_MAP.md b/docs/02-definicion-modulos/_MAP.md new file mode 100644 index 0000000..5230853 --- /dev/null +++ b/docs/02-definicion-modulos/_MAP.md @@ -0,0 +1,153 @@ +# Clinica Dental - Mapa de Modulos + +**Proyecto:** clinica-dental +**Seccion:** 02-definicion-modulos +**Fecha:** 2026-01-07 + +--- + +## Estructura de Modulos + +``` +02-definicion-modulos/ +├── _MAP.md <- ESTE ARCHIVO +├── modulo-odontograma.md <- Registro grafico dental +├── modulo-tratamientos.md <- Gestion de procedimientos +├── modulo-prevencion.md <- Profilaxis y selladores +├── modulo-restauracion.md <- Resinas y amalgamas +├── modulo-ortodoncia.md <- Brackets y alineadores +├── modulo-endodoncia.md <- Tratamientos de conductos +├── modulo-periodoncia.md <- Enfermedad periodontal +├── modulo-protesis.md <- Coronas, puentes, implantes +├── modulo-cirugia.md <- Extracciones y cirugia +└── modulo-estetica.md <- Blanqueamiento, carillas +``` + +--- + +## Modulos Especializados (Odontologia) + +### Core - Prioridad P1 + +| Modulo | Archivo | Estado | Descripcion | +|--------|---------|--------|-------------| +| Odontograma | modulo-odontograma.md | EN_PROGRESO | Registro grafico del estado dental | +| Tratamientos | modulo-tratamientos.md | PENDIENTE | Gestion de procedimientos y planes | +| Prevencion | modulo-prevencion.md | PENDIENTE | Limpiezas, fluor, selladores | +| Restauracion | modulo-restauracion.md | PENDIENTE | Resinas, amalgamas, incrustaciones | + +### Especializados - Prioridad P2 + +| Modulo | Archivo | Estado | Descripcion | +|--------|---------|--------|-------------| +| Ortodoncia | modulo-ortodoncia.md | PENDIENTE | Brackets, alineadores, retenedores | +| Endodoncia | modulo-endodoncia.md | PENDIENTE | Tratamientos de conductos | +| Periodoncia | modulo-periodoncia.md | PENDIENTE | Raspados, cirugia periodontal | +| Protesis | modulo-protesis.md | PENDIENTE | Coronas, puentes, dentaduras | +| Cirugia | modulo-cirugia.md | PENDIENTE | Extracciones, implantes | +| Estetica | modulo-estetica.md | PENDIENTE | Blanqueamiento, carillas | + +--- + +## Modulos Heredados (de erp-clinicas) + +| Modulo | Fuente | Adaptacion | +|--------|--------|------------| +| Pacientes | erp-clinicas | Sin cambios | +| Expedientes | erp-clinicas | Agregar seccion odontograma | +| Citas | erp-clinicas | Sin cambios | +| Consultas | erp-clinicas | Agregar exploracion dental | +| Recetas | erp-clinicas | Sin cambios | + +--- + +## Modulos Heredados (de erp-core) + +| Modulo | Fuente | Adaptacion | +|--------|--------|------------| +| Autenticacion | erp-core | Sin cambios | +| Usuarios | erp-core | Sin cambios | +| Roles/Permisos | erp-core | Agregar roles odontologicos | +| Facturacion | erp-core | Sin cambios | +| Inventario | erp-core | Materiales dentales | +| Catalogos | erp-core | Agregar catalogos dentales | + +--- + +## Entidades por Modulo + +### Odontograma +- `odontograma` - Registro principal +- `pieza_dental` - Estado por pieza +- `historial_pieza` - Cambios historicos + +### Tratamientos +- `tratamiento` - Plan de tratamiento +- `procedimiento` - Catalogo de procedimientos +- `tratamiento_procedimiento` - Detalle +- `presupuesto` - Costos estimados + +### Ortodoncia +- `caso_ortodoncia` - Caso clinico +- `ajuste_ortodoncia` - Registro de ajustes +- `estudio_ortodoncia` - Rx, fotos, modelos + +### Protesis +- `trabajo_protesico` - Orden de trabajo +- `laboratorio_dental` - Laboratorios externos +- `prueba_protesis` - Registro de pruebas + +--- + +## Relaciones entre Modulos + +``` + ┌─────────────┐ + │ Paciente │ + │(erp-clinicas)│ + └──────┬──────┘ + │ + ┌────────────┼────────────┐ + │ │ │ + ┌──────▼──────┐ ┌───▼───┐ ┌──────▼──────┐ + │ Odontograma │ │ Citas │ │ Expediente │ + └──────┬──────┘ └───┬───┘ └──────┬──────┘ + │ │ │ + └─────┬──────┴──────┬─────┘ + │ │ + ┌──────▼──────┐ ┌────▼────┐ + │ Tratamientos│ │Consultas│ + └──────┬──────┘ └────┬────┘ + │ │ + ┌───────────────┼─────────────┤ + │ │ │ +┌───▼───┐ ┌──────▼──────┐ ┌────▼────┐ +│Ortodo-│ │ Protesis │ │ Recetas │ +│ncia │ └─────────────┘ └─────────┘ +└───────┘ +``` + +--- + +## Estado de Documentacion + +| Modulo | README | ESPECIFICACION | FLUJOS | TESTS | +|--------|--------|----------------|--------|-------| +| Odontograma | PENDIENTE | PENDIENTE | PENDIENTE | PENDIENTE | +| Tratamientos | PENDIENTE | PENDIENTE | PENDIENTE | PENDIENTE | +| Ortodoncia | PENDIENTE | PENDIENTE | PENDIENTE | PENDIENTE | +| Protesis | PENDIENTE | PENDIENTE | PENDIENTE | PENDIENTE | + +--- + +## Proximos Pasos + +1. **Completar modulo-odontograma.md** - Especificacion completa +2. **Documentar modulo-tratamientos.md** - Planes y presupuestos +3. **Definir entidades** en DATABASE_INVENTORY.yml +4. **Crear User Stories** para Sprint 1 + +--- + +**Ultima actualizacion:** 2026-01-07 +**Version:** 1.0.0 diff --git a/docs/02-definicion-modulos/modulo-odontograma.md b/docs/02-definicion-modulos/modulo-odontograma.md new file mode 100644 index 0000000..e82dfc0 --- /dev/null +++ b/docs/02-definicion-modulos/modulo-odontograma.md @@ -0,0 +1,560 @@ +# Modulo Odontograma + +**Proyecto:** clinica-dental +**Modulo:** ODT-001 +**Prioridad:** P1 - Core +**Estado:** Especificacion +**Fecha:** 2026-01-07 + +--- + +## 1. DESCRIPCION GENERAL + +El odontograma es el registro grafico del estado dental del paciente. Representa visualmente cada pieza dental con su condicion actual, tratamientos realizados e historial de cambios. + +### Proposito +- Visualizar estado completo de la dentadura +- Registrar condicion de cada pieza dental +- Documentar caras afectadas +- Mantener historial de cambios +- Facilitar diagnostico y plan de tratamiento + +### Alcance +- Adultos (32 piezas permanentes) +- Ninos (20 piezas deciduas) +- Estados por pieza +- Historial temporal +- Anotaciones por pieza + +--- + +## 2. ENTIDADES + +### 2.1 odontograma + +```yaml +tabla: dental.odontogramas +descripcion: "Registro principal del estado dental" + +campos: + - nombre: id + tipo: UUID + pk: true + descripcion: "Identificador unico" + + - nombre: paciente_id + tipo: UUID + fk: clinicas.pacientes(id) + not_null: true + descripcion: "Paciente al que pertenece" + + - nombre: tipo + tipo: ENUM + valores: ['adulto', 'deciduo', 'mixto'] + default: 'adulto' + descripcion: "Tipo de denticion" + + - nombre: fecha_registro + tipo: TIMESTAMP + default: NOW() + descripcion: "Fecha de creacion" + + - nombre: fecha_actualizacion + tipo: TIMESTAMP + descripcion: "Ultima modificacion" + + - nombre: odontologo_id + tipo: UUID + fk: core.usuarios(id) + descripcion: "Odontologo que registro" + + - nombre: notas_generales + tipo: TEXT + descripcion: "Observaciones generales" + + - nombre: activo + tipo: BOOLEAN + default: true + descripcion: "Odontograma vigente" + +indices: + - nombre: idx_odontograma_paciente + campos: [paciente_id] + - nombre: idx_odontograma_fecha + campos: [fecha_registro DESC] + +rls: + - policy: "tenant_isolation" + using: "tenant_id = current_tenant_id()" +``` + +### 2.2 pieza_dental + +```yaml +tabla: dental.piezas_dentales +descripcion: "Estado individual de cada pieza" + +campos: + - nombre: id + tipo: UUID + pk: true + + - nombre: odontograma_id + tipo: UUID + fk: dental.odontogramas(id) + not_null: true + on_delete: CASCADE + + - nombre: numero_pieza + tipo: INTEGER + not_null: true + check: "(numero_pieza BETWEEN 11 AND 48) OR (numero_pieza BETWEEN 51 AND 85)" + descripcion: "Numero FDI de la pieza" + + - nombre: estado + tipo: ENUM + valores: ['sano', 'caries', 'obturacion_resina', 'obturacion_amalgama', + 'endodoncia', 'corona', 'puente_pilar', 'puente_ponico', + 'implante', 'ausente', 'extraccion_indicada', 'supernumerario', + 'retenido', 'fracturado'] + default: 'sano' + descripcion: "Estado actual de la pieza" + + - nombre: caras_afectadas + tipo: TEXT[] + descripcion: "Array de caras: M, D, O, V, L, I, P" + + - nombre: movilidad + tipo: INTEGER + check: "movilidad BETWEEN 0 AND 3" + descripcion: "Grado de movilidad (0=normal, 3=severa)" + + - nombre: sensibilidad + tipo: BOOLEAN + default: false + descripcion: "Sensibilidad al frio/calor" + + - nombre: notas + tipo: TEXT + descripcion: "Observaciones especificas" + + - nombre: fecha_actualizacion + tipo: TIMESTAMP + default: NOW() + +indices: + - nombre: idx_pieza_odontograma + campos: [odontograma_id] + - nombre: idx_pieza_numero + campos: [odontograma_id, numero_pieza] + unique: true + +constraints: + - nombre: uk_pieza_odontograma + tipo: UNIQUE + campos: [odontograma_id, numero_pieza] +``` + +### 2.3 historial_pieza + +```yaml +tabla: dental.historial_piezas +descripcion: "Cambios historicos en cada pieza" + +campos: + - nombre: id + tipo: UUID + pk: true + + - nombre: pieza_id + tipo: UUID + fk: dental.piezas_dentales(id) + not_null: true + on_delete: CASCADE + + - nombre: estado_anterior + tipo: VARCHAR(50) + + - nombre: estado_nuevo + tipo: VARCHAR(50) + not_null: true + + - nombre: caras_anterior + tipo: TEXT[] + + - nombre: caras_nuevo + tipo: TEXT[] + + - nombre: tratamiento_id + tipo: UUID + fk: dental.tratamientos(id) + descripcion: "Tratamiento que causo el cambio" + + - nombre: fecha_cambio + tipo: TIMESTAMP + default: NOW() + + - nombre: odontologo_id + tipo: UUID + fk: core.usuarios(id) + + - nombre: motivo + tipo: TEXT + descripcion: "Razon del cambio" + +indices: + - nombre: idx_historial_pieza + campos: [pieza_id] + - nombre: idx_historial_fecha + campos: [fecha_cambio DESC] +``` + +--- + +## 3. NOMENCLATURA FDI + +### Sistema de Numeracion + +``` + SUPERIOR + ┌───────────┬───────────┐ + │ Derecho │ Izquierdo │ + │ 18-11 │ 21-28 │ + ├───────────┼───────────┤ + │ 48-41 │ 31-38 │ + │ Derecho │ Izquierdo │ + └───────────┴───────────┘ + INFERIOR +``` + +### Dientes Permanentes (32 piezas) + +| Cuadrante | Posicion | Piezas | Descripcion | +|-----------|----------|--------|-------------| +| 1 | Superior Derecho | 11-18 | Incisivo central a 3er molar | +| 2 | Superior Izquierdo | 21-28 | Incisivo central a 3er molar | +| 3 | Inferior Izquierdo | 31-38 | Incisivo central a 3er molar | +| 4 | Inferior Derecho | 41-48 | Incisivo central a 3er molar | + +### Dientes Deciduos (20 piezas) + +| Cuadrante | Posicion | Piezas | Descripcion | +|-----------|----------|--------|-------------| +| 5 | Superior Derecho | 51-55 | Incisivo a 2do molar | +| 6 | Superior Izquierdo | 61-65 | Incisivo a 2do molar | +| 7 | Inferior Izquierdo | 71-75 | Incisivo a 2do molar | +| 8 | Inferior Derecho | 81-85 | Incisivo a 2do molar | + +### Caras Dentales + +| Sigla | Nombre | Aplicable a | +|-------|--------|-------------| +| M | Mesial | Todas | +| D | Distal | Todas | +| O | Oclusal | Premolares, Molares | +| I | Incisal | Incisivos, Caninos | +| V | Vestibular | Todas | +| B | Bucal | Sinonimo de V | +| L | Lingual | Inferiores | +| P | Palatino | Superiores | + +--- + +## 4. ESTADOS DE PIEZAS + +### Catalogo de Estados + +```yaml +estados: + - codigo: SANO + nombre: "Sano" + color: "#4CAF50" + descripcion: "Pieza sin patologia" + + - codigo: CARIES + nombre: "Caries" + color: "#F44336" + descripcion: "Lesion cariosa activa" + + - codigo: OBT_RES + nombre: "Obturacion Resina" + color: "#2196F3" + descripcion: "Restauracion con resina" + + - codigo: OBT_AMG + nombre: "Obturacion Amalgama" + color: "#9E9E9E" + descripcion: "Restauracion con amalgama" + + - codigo: ENDO + nombre: "Endodoncia" + color: "#9C27B0" + descripcion: "Tratamiento de conductos" + + - codigo: CORONA + nombre: "Corona" + color: "#FFC107" + descripcion: "Corona protesica" + + - codigo: PUENTE_P + nombre: "Puente Pilar" + color: "#FF9800" + descripcion: "Pieza pilar de puente" + + - codigo: PUENTE_O + nombre: "Puente Ponico" + color: "#FF5722" + descripcion: "Pieza artificial de puente" + + - codigo: IMPLANTE + nombre: "Implante" + color: "#00BCD4" + descripcion: "Implante dental" + + - codigo: AUSENTE + nombre: "Ausente" + color: "#BDBDBD" + descripcion: "Pieza extraida" + + - codigo: EXT_IND + nombre: "Extraccion Indicada" + color: "#E91E63" + descripcion: "Requiere extraccion" + + - codigo: FRACTURADO + nombre: "Fracturado" + color: "#795548" + descripcion: "Pieza fracturada" +``` + +--- + +## 5. API ENDPOINTS + +### Odontograma + +```yaml +endpoints: + - method: GET + path: /api/v1/pacientes/{pacienteId}/odontograma + descripcion: "Obtener odontograma actual" + response: Odontograma con todas las piezas + + - method: POST + path: /api/v1/pacientes/{pacienteId}/odontograma + descripcion: "Crear nuevo odontograma" + body: + tipo: string (adulto|deciduo|mixto) + notas_generales: string (opcional) + response: Odontograma creado + + - method: PUT + path: /api/v1/odontogramas/{odontogramaId} + descripcion: "Actualizar odontograma" + body: + notas_generales: string + response: Odontograma actualizado +``` + +### Piezas Dentales + +```yaml +endpoints: + - method: GET + path: /api/v1/odontogramas/{odontogramaId}/piezas + descripcion: "Obtener todas las piezas" + response: Array de piezas + + - method: GET + path: /api/v1/odontogramas/{odontogramaId}/piezas/{numeroPieza} + descripcion: "Obtener pieza especifica" + response: Pieza con historial + + - method: PUT + path: /api/v1/odontogramas/{odontogramaId}/piezas/{numeroPieza} + descripcion: "Actualizar estado de pieza" + body: + estado: string + caras_afectadas: string[] + movilidad: number (0-3) + sensibilidad: boolean + notas: string + motivo: string + response: Pieza actualizada + entrada en historial + + - method: GET + path: /api/v1/piezas/{piezaId}/historial + descripcion: "Historial de cambios de pieza" + query: + desde: date + hasta: date + response: Array de cambios +``` + +--- + +## 6. FLUJOS DE USUARIO + +### 6.1 Crear Odontograma Inicial + +``` +1. Paciente nuevo o sin odontograma +2. Odontologo abre pantalla de odontograma +3. Sistema detecta que no existe → muestra dialogo +4. Selecciona tipo: Adulto / Deciduo / Mixto +5. Sistema crea odontograma con 32/20 piezas en estado SANO +6. Odontologo realiza exploracion +7. Marca cada pieza segun estado actual +8. Guarda odontograma +``` + +### 6.2 Actualizar Estado de Pieza + +``` +1. Odontologo abre odontograma existente +2. Click en pieza a modificar +3. Panel lateral muestra estado actual + historial +4. Selecciona nuevo estado del dropdown +5. Marca caras afectadas (checkboxes) +6. Agrega notas (opcional) +7. Indica motivo del cambio +8. Guarda cambios +9. Sistema registra en historial +``` + +### 6.3 Comparar Odontogramas + +``` +1. Odontologo solicita comparacion +2. Selecciona dos fechas +3. Sistema muestra lado a lado +4. Resalta piezas con cambios +5. Permite ver detalle de cada cambio +``` + +--- + +## 7. COMPONENTES UI + +### 7.1 OdontogramaView + +```typescript +interface OdontogramaViewProps { + pacienteId: string; + readOnly?: boolean; + onPiezaClick?: (pieza: PiezaDental) => void; +} + +// Estados visuales +const COLORES_ESTADO: Record = { + sano: '#4CAF50', + caries: '#F44336', + obturacion_resina: '#2196F3', + // ... +}; +``` + +### 7.2 PiezaDentalComponent + +```typescript +interface PiezaDentalProps { + numero: number; + estado: EstadoPieza; + carasAfectadas: string[]; + selected: boolean; + onClick: () => void; +} + +// Renderiza SVG de pieza con colores por estado +// Marca visual de caras afectadas +``` + +### 7.3 HistorialPiezaPanel + +```typescript +interface HistorialPiezaPanelProps { + piezaId: string; + onClose: () => void; +} + +// Muestra timeline de cambios +// Permite filtrar por fecha +// Link a tratamientos relacionados +``` + +--- + +## 8. VALIDACIONES + +### Reglas de Negocio + +```yaml +validaciones: + - regla: "Pieza ausente no puede tener caras afectadas" + condicion: estado == 'ausente' AND caras_afectadas.length > 0 + error: "Una pieza ausente no puede tener caras afectadas" + + - regla: "Corona cubre todas las caras" + condicion: estado == 'corona' AND caras_afectadas != ['M','D','O','V','L'] + accion: "Auto-completar todas las caras" + + - regla: "Numero de pieza valido" + condicion: NOT (numero IN rango_valido) + error: "Numero de pieza dental invalido" + + - regla: "Implante requiere pieza ausente previa" + condicion: estado == 'implante' AND estado_anterior != 'ausente' + warning: "Normalmente se coloca implante en espacio de pieza ausente" +``` + +--- + +## 9. CASOS DE USO + +### CU-ODT-001: Exploración Inicial + +**Actor:** Odontólogo +**Precondición:** Paciente registrado sin odontograma +**Flujo:** +1. Abrir expediente del paciente +2. Ir a sección Odontograma +3. Crear nuevo odontograma (tipo adulto) +4. Realizar exploración pieza por pieza +5. Marcar estados encontrados +6. Guardar odontograma + +**Postcondición:** Odontograma creado con estado inicial + +### CU-ODT-002: Registrar Tratamiento + +**Actor:** Odontólogo +**Precondición:** Odontograma existente, tratamiento a realizar +**Flujo:** +1. Abrir odontograma del paciente +2. Seleccionar pieza tratada +3. Cambiar estado (ej: caries → obturación_resina) +4. Marcar caras tratadas +5. Vincular con tratamiento +6. Guardar cambios + +**Postcondición:** Estado actualizado, historial registrado + +--- + +## 10. DEPENDENCIAS + +### Depende de +- `clinicas.pacientes` - Paciente al que pertenece +- `core.usuarios` - Odontólogo que registra +- `dental.tratamientos` - Vinculación de cambios + +### Dependientes +- `dental.tratamientos` - Referencia piezas afectadas +- `dental.presupuestos` - Calcula costos por pieza +- `reportes` - Estadísticas de salud dental + +--- + +**Documento creado:** 2026-01-07 +**Autor:** Agente Orquestador Workspace +**Version:** 1.0.0 diff --git a/docs/_MAP.md b/docs/_MAP.md new file mode 100644 index 0000000..c3390a1 --- /dev/null +++ b/docs/_MAP.md @@ -0,0 +1,137 @@ +# Clinica Dental - Mapa de Documentacion + +**Proyecto:** clinica-dental +**Tipo:** ERP Especializado (hereda de erp-clinicas) +**Fecha:** 2026-01-07 +**Estado:** Fase 0 - Preparacion + +--- + +## Estructura de Documentacion + +``` +docs/ +├── _MAP.md <- ESTE ARCHIVO +├── 00-vision-general/ +│ ├── README.md <- Indice de vision +│ └── VISION.md <- Vision estrategica [PENDIENTE] +│ +├── 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] +│ +├── 03-especificaciones/ +│ └── ... (futuras especificaciones tecnicas) +│ +└── 90-transversal/ + └── ... (documentacion transversal) +``` + +--- + +## Modulos Especializados (Odontologia) + +### Modulos Core + +| Modulo | Prioridad | Estado | Descripcion | +|--------|-----------|--------|-------------| +| Odontograma | P1 | Pendiente | Registro grafico del estado dental | +| Tratamientos | P1 | Pendiente | Gestion de procedimientos dentales | +| Prevencion | P1 | Pendiente | Limpiezas, selladores, fluor | +| Restauracion | P1 | Pendiente | Resinas, amalgamas, incrustaciones | + +### Modulos Especializados + +| Modulo | Prioridad | Estado | Descripcion | +|--------|-----------|--------|-------------| +| Ortodoncia | P2 | Pendiente | Brackets, alineadores, retenedores | +| Protesis | P2 | Pendiente | Coronas, puentes, dentaduras | +| Endodoncia | P2 | Pendiente | Tratamientos de conductos | +| Periodoncia | P2 | Pendiente | Raspados, cirugia periodontal | +| Estetica | P2 | Pendiente | Blanqueamiento, carillas | + +--- + +## Modulos Heredados (de erp-clinicas) + +| Modulo | Fuente | Adaptacion Requerida | +|--------|--------|----------------------| +| Pacientes | erp-clinicas | Ninguna | +| Expedientes | erp-clinicas | Agregar odontograma | +| Citas | erp-clinicas | Ninguna | +| Consultas | erp-clinicas | Agregar exploracion dental | +| Recetas | erp-clinicas | Ninguna | +| Facturacion | erp-core | Ninguna | +| Inventario | erp-core | Materiales dentales | + +--- + +## Entidades Especificas + +### Odontograma +Registro grafico del estado dental del paciente. + +``` +Nomenclatura FDI: +- Cuadrante 1: Superior derecho (11-18) +- Cuadrante 2: Superior izquierdo (21-28) +- Cuadrante 3: Inferior izquierdo (31-38) +- Cuadrante 4: Inferior derecho (41-48) +- Deciduos: 51-55, 61-65, 71-75, 81-85 +``` + +### Estados de Piezas +- Sano +- Caries +- Obturacion (resina/amalgama) +- Endodoncia +- Corona +- Puente +- Implante +- Ausente +- Extraccion indicada + +### Caras Dentales +- Mesial (M) +- Distal (D) +- Oclusal/Incisal (O/I) +- Vestibular/Bucal (V/B) +- Lingual/Palatino (L/P) + +--- + +## Navegacion Rapida + +### Por Rol de Usuario +- **Odontologo:** Consultas, diagnosticos, tratamientos +- **Auxiliar dental:** Apoyo en procedimientos +- **Recepcionista:** Citas, cobros +- **Higienista:** Limpiezas, profilaxis +- **Tecnico dental:** Elaboracion de protesis +- **Administrador:** Gestion general + +### Por Componente Tecnico +- **Database:** Ver orchestration/inventarios/DATABASE_INVENTORY.yml +- **Backend:** Ver orchestration/inventarios/BACKEND_INVENTORY.yml +- **Frontend:** Ver orchestration/inventarios/FRONTEND_INVENTORY.yml + +--- + +## Referencias + +- [CONTEXTO-PROYECTO.md](../orchestration/00-guidelines/CONTEXTO-PROYECTO.md) +- [HERENCIA-ERP-CLINICAS.md](../orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md) +- [PROXIMA-ACCION.md](../orchestration/PROXIMA-ACCION.md) +- [CONTEXT-MAP.yml](../orchestration/CONTEXT-MAP.yml) + +--- + +**Ultima actualizacion:** 2026-01-07 +**Version:** 1.0.0 diff --git a/orchestration/CONTEXT-MAP.yml b/orchestration/CONTEXT-MAP.yml new file mode 100644 index 0000000..b26933f --- /dev/null +++ b/orchestration/CONTEXT-MAP.yml @@ -0,0 +1,301 @@ +# CONTEXT-MAP: CLINICA-DENTAL +# Sistema: SIMCO - NEXUS v4.0 +# Proposito: Mapear contexto automatico por nivel y tarea +# Version: 1.0.0 +# Fecha: 2026-01-07 + +metadata: + proyecto: "clinica-dental" + nivel: "VERTICAL" + version: "1.0.0" + ultima_actualizacion: "2026-01-07" + workspace_root: "/home/isem/workspace-v1" + project_root: "/home/isem/workspace-v1/projects/clinica-dental" + hereda_de: "/home/isem/workspace-v1/projects/erp-clinicas" + +# =============================================================================== +# VARIABLES DEL PROYECTO (PRE-RESUELTAS) +# =============================================================================== + +variables: + # Identificacion + PROJECT: "clinica-dental" + PROJECT_NAME: "CLINICA-DENTAL" + PROJECT_LEVEL: "VERTICAL" + PARENT_PROJECT: "erp-clinicas" + + # Base de datos + DB_NAME: "clinica_dental" + DB_DDL_PATH: "/home/isem/workspace-v1/projects/clinica-dental/database/schemas" + DB_SCRIPTS_PATH: "/home/isem/workspace-v1/projects/clinica-dental/database" + DB_SEEDS_PATH: "/home/isem/workspace-v1/projects/clinica-dental/database/seeds" + RECREATE_CMD: "drop-and-recreate-database.sh" + + # Backend + BACKEND_ROOT: "/home/isem/workspace-v1/projects/clinica-dental/backend" + BACKEND_SRC: "/home/isem/workspace-v1/projects/clinica-dental/backend/src" + BACKEND_TESTS: "/home/isem/workspace-v1/projects/clinica-dental/backend/tests" + + # Frontend + FRONTEND_ROOT: "/home/isem/workspace-v1/projects/clinica-dental/frontend" + FRONTEND_SRC: "/home/isem/workspace-v1/projects/clinica-dental/frontend/src" + + # Documentacion + DOCS_PATH: "/home/isem/workspace-v1/projects/clinica-dental/docs" + ORCHESTRATION_PATH: "/home/isem/workspace-v1/projects/clinica-dental/orchestration" + +# =============================================================================== +# ALIASES RESUELTOS +# =============================================================================== + +aliases: + # Directivas globales + "@SIMCO": "/home/isem/workspace-v1/orchestration/directivas/simco" + "@PRINCIPIOS": "/home/isem/workspace-v1/orchestration/directivas/principios" + "@PERFILES": "/home/isem/workspace-v1/orchestration/agents/perfiles" + "@CATALOG": "/home/isem/workspace-v1/shared/catalog" + + # Proyecto padre (erp-clinicas) + "@PARENT": "/home/isem/workspace-v1/projects/erp-clinicas" + "@PARENT_CORE": "/home/isem/workspace-v1/projects/erp-core" + + # Proyecto especifico + "@DDL": "/home/isem/workspace-v1/projects/clinica-dental/database/schemas" + "@SEEDS": "/home/isem/workspace-v1/projects/clinica-dental/database/seeds" + "@BACKEND": "/home/isem/workspace-v1/projects/clinica-dental/backend/src" + "@FRONTEND": "/home/isem/workspace-v1/projects/clinica-dental/frontend/src" + "@DOCS": "/home/isem/workspace-v1/projects/clinica-dental/docs" + + # Inventarios + "@INVENTORY": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios" + "@INV_DB": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/DATABASE_INVENTORY.yml" + "@INV_BE": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/BACKEND_INVENTORY.yml" + "@INV_FE": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/FRONTEND_INVENTORY.yml" + + # Trazas + "@TRAZA_DB": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/trazas/TRAZA-TAREAS-DATABASE.md" + "@TRAZA_BE": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/trazas/TRAZA-TAREAS-BACKEND.md" + "@TRAZA_FE": "/home/isem/workspace-v1/projects/clinica-dental/orchestration/trazas/TRAZA-TAREAS-FRONTEND.md" + +# =============================================================================== +# CONTEXTO POR NIVEL +# =============================================================================== + +contexto_por_nivel: + L0_sistema: + descripcion: "Principios fundamentales y perfil de agente" + tokens_estimados: 4500 + obligatorio: true + archivos: + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-CAPVED.md" + proposito: "Ciclo de vida de tareas" + tokens: 800 + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md" + proposito: "Documentacion antes de codigo" + tokens: 500 + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md" + proposito: "Verificar catalogo antes de crear" + tokens: 600 + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md" + proposito: "Build/lint deben pasar" + tokens: 600 + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md" + proposito: "Limites de contexto" + tokens: 500 + - path: "/home/isem/workspace-v1/orchestration/directivas/principios/PRINCIPIO-NO-ASUMIR.md" + proposito: "Preguntar si falta informacion" + tokens: 500 + - path: "/home/isem/workspace-v1/orchestration/referencias/ALIASES.yml" + proposito: "Resolucion de @ALIAS" + tokens: 400 + + L1_proyecto: + descripcion: "Contexto especifico de CLINICA-DENTAL" + tokens_estimados: 3000 + obligatorio: true + archivos: + - path: "/home/isem/workspace-v1/projects/clinica-dental/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" + proposito: "Variables y configuracion del proyecto" + tokens: 1500 + - path: "/home/isem/workspace-v1/projects/clinica-dental/orchestration/PROXIMA-ACCION.md" + proposito: "Estado actual y siguiente paso" + tokens: 500 + - path: "/home/isem/workspace-v1/projects/clinica-dental/orchestration/00-guidelines/HERENCIA-ERP-CLINICAS.md" + proposito: "Herencia de modulos del padre" + tokens: 800 + + L2_operacion: + descripcion: "SIMCO especificos segun operacion y dominio" + tokens_estimados: 2500 + archivos_por_operacion: + CREAR: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-CREAR.md" + MODIFICAR: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-MODIFICAR.md" + VALIDAR: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-VALIDAR.md" + DELEGAR: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DELEGACION.md" + archivos_por_dominio: + DDL: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-DDL.md" + - "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/DATABASE_INVENTORY.yml" + BACKEND: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-BACKEND.md" + - "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/BACKEND_INVENTORY.yml" + FRONTEND: + - "/home/isem/workspace-v1/orchestration/directivas/simco/SIMCO-FRONTEND.md" + - "/home/isem/workspace-v1/projects/clinica-dental/orchestration/inventarios/FRONTEND_INVENTORY.yml" + + L3_tarea: + descripcion: "Contexto especifico de la tarea" + tokens_max: 8000 + dinamico: true + +# =============================================================================== +# INTEGRACION CON DOCUMENTACION (docs/) +# =============================================================================== + +integracion_docs: + mapa_docs: "@DOCS/_MAP.md" + + estructura: + vision: "@DOCS/00-vision-general/" + modulos: "@DOCS/02-definicion-modulos/" + + modulos_especializados: + - modulo_odontograma: + descripcion: "Registro grafico del estado dental" + ruta: "@DOCS/02-definicion-modulos/modulo-odontograma.md" + - modulo_tratamientos: + descripcion: "Gestion de tratamientos dentales" + ruta: "@DOCS/02-definicion-modulos/modulo-tratamientos.md" + - modulo_ortodoncia: + descripcion: "Control de tratamientos ortodonticos" + ruta: "@DOCS/02-definicion-modulos/modulo-ortodoncia.md" + - modulo_protesis: + descripcion: "Registro de trabajos protesicos" + ruta: "@DOCS/02-definicion-modulos/modulo-protesis.md" + +# =============================================================================== +# MAPA TAREA -> ARCHIVOS (Especifico CLINICA-DENTAL) +# =============================================================================== + +mapa_tarea_contexto: + database: + crear_tabla: + simco: ["SIMCO-CREAR.md", "SIMCO-DDL.md"] + inventario: "@INV_DB" + referencia: "@DDL/*.sql" + docs: "@DOCS/02-definicion-modulos/" + + crear_odontograma: + simco: ["SIMCO-CREAR.md", "SIMCO-DDL.md"] + inventario: "@INV_DB" + referencia: "@DDL/01-dental-schema-ddl.sql" + + backend: + crear_entity: + simco: ["SIMCO-CREAR.md", "SIMCO-BACKEND.md"] + inventario: "@INV_BE" + referencia: "@BACKEND/modules/*/entities/*.entity.ts" + + crear_service: + simco: ["SIMCO-CREAR.md", "SIMCO-BACKEND.md"] + inventario: "@INV_BE" + referencia: "@BACKEND/modules/*/services/*.service.ts" + + crear_controller: + simco: ["SIMCO-CREAR.md", "SIMCO-BACKEND.md"] + inventario: "@INV_BE" + referencia: "@BACKEND/modules/*/controllers/*.controller.ts" + + frontend: + crear_componente: + simco: ["SIMCO-CREAR.md", "SIMCO-FRONTEND.md"] + inventario: "@INV_FE" + referencia: "@FRONTEND/components/**/*.tsx" + + crear_pagina: + simco: ["SIMCO-CREAR.md", "SIMCO-FRONTEND.md"] + inventario: "@INV_FE" + referencia: "@FRONTEND/pages/**/*.tsx" + +# =============================================================================== +# INFORMACION ESPECIFICA DEL PROYECTO +# =============================================================================== + +info_proyecto: + tipo: "ERP Especializado - Clinica Odontologica" + estado: "Fase 0 - Preparacion" + version: "0.1.0" + + stack: + backend: "NestJS (hereda de erp-clinicas)" + frontend: "React + TailwindCSS" + database: "PostgreSQL 16+ con RLS" + + entidades_especializadas: + - odontograma + - tratamientos_dentales + - piezas_dentales + - ortodoncias + - protesis + + modulos_heredados: + - pacientes (de erp-clinicas) + - expedientes (de erp-clinicas) + - citas (de erp-clinicas) + - consultas (de erp-clinicas) + - recetas (de erp-clinicas) + - facturacion (de erp-core) + - inventario (de erp-core) + + nomenclatura_dental: + sistema: "FDI (dos digitos)" + cuadrantes: + superior_derecho: "11-18" + superior_izquierdo: "21-28" + inferior_izquierdo: "31-38" + inferior_derecho: "41-48" + deciduos: "51-55, 61-65, 71-75, 81-85" + +# =============================================================================== +# VALIDACION DE TOKENS +# =============================================================================== + +validacion_tokens: + limite_absoluto: 25000 + limite_seguro: 18000 + limite_alerta: 20000 + + presupuesto: + L0_sistema: 4500 + L1_proyecto: 3000 + L2_operacion: 2500 + L3_tarea_max: 8000 + total_base: 10000 + disponible_tarea: 8000 + +# =============================================================================== +# HERENCIA +# =============================================================================== + +herencia: + tipo: "VERTICAL" + hereda_de: + - "/home/isem/workspace-v1/projects/erp-clinicas/" + - "/home/isem/workspace-v1/projects/erp-core/" + - "/home/isem/workspace-v1/orchestration/" + +# =============================================================================== +# BUSQUEDA DE HISTORICO +# =============================================================================== + +busqueda_historico: + habilitado: true + ubicaciones: + - "/home/isem/workspace-v1/projects/clinica-dental/orchestration/trazas/" + - "/home/isem/workspace-v1/projects/erp-clinicas/orchestration/trazas/" + - "/home/isem/workspace-v1/orchestration/errores/REGISTRO-ERRORES.yml" + - "/home/isem/workspace-v1/shared/knowledge-base/lessons-learned/" diff --git a/orchestration/PROXIMA-ACCION.md b/orchestration/PROXIMA-ACCION.md new file mode 100644 index 0000000..5738907 --- /dev/null +++ b/orchestration/PROXIMA-ACCION.md @@ -0,0 +1,197 @@ +# PROXIMA ACCION - Clinica Dental + +**Proyecto:** clinica-dental +**Estado:** Fase 0 - Preparacion +**Fecha:** 2026-01-07 +**Hereda de:** erp-clinicas > erp-core + +--- + +## RESUMEN DEL ESTADO ACTUAL + +### Estructura Base: CREADA + +| Artefacto | Estado | Ubicacion | +|-----------|--------|-----------| +| README.md | EXISTE | raiz | +| CONTEXTO-PROYECTO.md | EXISTE | orchestration/00-guidelines/ | +| HERENCIA-ERP-CLINICAS.md | EXISTE | orchestration/00-guidelines/ | +| ENVIRONMENT-INVENTORY.yml | EXISTE | orchestration/environment/ | +| MASTER_INVENTORY.yml | EXISTE | orchestration/inventarios/ | +| PROJECT-STATUS.md | EXISTE | orchestration/ | +| CONTEXT-MAP.yml | CREADO | orchestration/ | +| PROXIMA-ACCION.md | CREADO | orchestration/ | +| DDL Dental | EXISTE | database/schemas/ | + +### Documentacion: MINIMA + +| Artefacto | Estado | Prioridad | +|-----------|--------|-----------| +| docs/00-vision-general/VISION.md | FALTA | P0 | +| docs/00-vision-general/_MAP.md | FALTA | P1 | +| docs/02-definicion-modulos/_MAP.md | FALTA | P0 | +| modulo-odontograma.md | FALTA | P1 | +| modulo-tratamientos.md | FALTA | P1 | +| modulo-ortodoncia.md | FALTA | P2 | +| modulo-protesis.md | FALTA | P2 | +| orchestration/_MAP.md | FALTA | P1 | + +--- + +## PROXIMA ACCION INMEDIATA + +### Tarea: Crear docs/00-vision-general/VISION.md + +**Prioridad:** P0 +**Estimacion:** 2-3 horas +**Responsable:** Agente Requirements Analyst + +**Descripcion:** +Documentar la vision estrategica del proyecto de clinica dental, incluyendo: +- Propuesta de valor +- Target market +- Diferenciadores vs erp-clinicas base +- Roadmap de funcionalidades dentales especificas + +**Contenido esperado:** +```markdown +# Vision - Clinica Dental + +## 1. Proposito +Sistema de gestion integral para clinicas odontologicas... + +## 2. Propuesta de Valor +- Odontograma digital interactivo +- Seguimiento de tratamientos dentales +- Gestion de ortodoncia +- Control de protesis + +## 3. Usuarios Objetivo +- Odontologos +- Auxiliares dentales +- Recepcionistas +- Higienistas +- Tecnicos dentales +- Administradores + +## 4. Diferenciadores +- Sistema FDI de nomenclatura dental +- Odontograma por paciente +- Historial por pieza dental +... +``` + +--- + +## BACKLOG DE TAREAS + +### Sprint 1: Vision y Navegacion (6h) + +| # | Tarea | Prioridad | Horas | +|---|-------|-----------|-------| +| 1 | Crear VISION.md | P0 | 2-3 | +| 2 | Crear docs/00-vision-general/_MAP.md | P1 | 1 | +| 3 | Crear docs/02-definicion-modulos/_MAP.md | P0 | 1-2 | +| 4 | Crear orchestration/_MAP.md | P1 | 1 | + +### Sprint 2: Modulos Core (8h) + +| # | Tarea | Prioridad | Horas | +|---|-------|-----------|-------| +| 1 | modulo-odontograma.md | P1 | 2-3 | +| 2 | modulo-tratamientos.md | P1 | 1.5-2 | +| 3 | modulo-prevencion.md | P1 | 1-1.5 | +| 4 | modulo-restauracion.md | P1 | 1-1.5 | + +### Sprint 3: Modulos Especializados (6h) + +| # | Tarea | Prioridad | Horas | +|---|-------|-----------|-------| +| 1 | modulo-ortodoncia.md | P2 | 1.5-2 | +| 2 | modulo-protesis.md | P2 | 1.5-2 | +| 3 | modulo-endodoncia.md | P2 | 1-1.5 | +| 4 | modulo-periodoncia.md | P2 | 1-1.5 | + +--- + +## DEPENDENCIAS + +### De erp-clinicas (heredados): +- Modulo Pacientes +- Modulo Expedientes +- Modulo Citas +- Modulo Consultas +- Modulo Recetas + +### De erp-core (heredados): +- Modulo Autenticacion +- Modulo Usuarios +- Modulo Facturacion +- Modulo Inventario +- Modulo Catalogs + +### Especificos Dental: +- Odontograma (nuevo) +- Tratamientos dentales (nuevo) +- Ortodoncia (nuevo) +- Protesis (nuevo) + +--- + +## ENTIDADES ESPECIALIZADAS + +### Odontograma +```yaml +campos: + - id: UUID + - paciente_id: UUID (FK) + - fecha_registro: TIMESTAMP + - tipo: ENUM (adulto, deciduo) + - piezas: JSONB[] + +pieza_dental: + - numero: INT (1-32 adulto, 51-85 deciduo) + - estado: ENUM (sano, caries, obturacion, etc) + - caras_afectadas: TEXT[] (M, D, O, V, L) + - tratamientos: FK[] +``` + +### Nomenclatura FDI +```yaml +cuadrantes: + 1: "Superior derecho (11-18)" + 2: "Superior izquierdo (21-28)" + 3: "Inferior izquierdo (31-38)" + 4: "Inferior derecho (41-48)" +deciduos: + 5: "51-55" + 6: "61-65" + 7: "71-75" + 8: "81-85" +``` + +--- + +## METRICAS DE PROGRESO + +| Metrica | Valor Actual | Objetivo | +|---------|--------------|----------| +| Archivos SIMCO | 9 | 20+ | +| Modulos documentados | 0 | 8 | +| User Stories | 0 | 25+ | +| Cobertura docs | ~30% | 100% | + +--- + +## NOTAS + +- Hereda base completa de erp-clinicas +- Especializar en odontologia +- Odontograma es el diferenciador principal +- Nomenclatura FDI es estandar internacional + +--- + +**Ultima actualizacion:** 2026-01-07 +**Autor:** Agente Orquestador Workspace +**Version:** 1.0.0 diff --git a/orchestration/inventarios/DATABASE_INVENTORY.yml b/orchestration/inventarios/DATABASE_INVENTORY.yml new file mode 100644 index 0000000..4afebab --- /dev/null +++ b/orchestration/inventarios/DATABASE_INVENTORY.yml @@ -0,0 +1,284 @@ +--- +# DATABASE INVENTORY - Clinica Dental +# Version: 1.0.0 +# Ultima actualizacion: 2026-01-07 + +proyecto: "clinica-dental" +schema_principal: "dental" +version_ddl: "1.0" +estado: "completado" + +herencia: + vertical_padre: "erp-clinicas" + suite_core: "erp-core" + schemas_heredados: + - name: "auth" + desde: "erp-core" + - name: "tenants" + desde: "erp-core" + - name: "users" + desde: "erp-core" + - name: "clinica" + desde: "erp-clinicas" + tablas: ["patients", "doctors", "appointments", "consultations"] + +enums: + - name: "estado_pieza" + values: + - "sano" + - "caries" + - "obturacion" + - "endodoncia" + - "corona" + - "puente" + - "implante" + - "ausente" + - "extraccion_indicada" + - "diente_temporal" + - "fractura" + - "movilidad" + + - name: "cara_dental" + values: + - "mesial" + - "distal" + - "oclusal" + - "incisal" + - "vestibular" + - "bucal" + - "lingual" + - "palatino" + + - name: "estado_tratamiento" + values: + - "pendiente" + - "en_proceso" + - "completado" + - "cancelado" + + - name: "tipo_ortodoncia" + values: + - "brackets_metalicos" + - "brackets_esteticos" + - "brackets_linguales" + - "alineadores" + - "removible" + - "retenedor" + +catalogos: + - name: "piezas_dentales" + descripcion: "Catalogo de piezas dentales (nomenclatura FDI)" + registros: 52 + columnas: + - "id: UUID PK" + - "numero: VARCHAR(10) UNIQUE" + - "nombre: VARCHAR(50)" + - "cuadrante: INTEGER (1-8)" + - "es_temporal: BOOLEAN" + - "descripcion: TEXT" + + - name: "tratamientos_catalogo" + descripcion: "Catalogo de tratamientos por tenant" + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "codigo: VARCHAR(20)" + - "nombre: VARCHAR(100)" + - "categoria: VARCHAR(50)" + - "duracion_minutos: INTEGER" + - "precio_base: NUMERIC(10,2)" + - "requiere_rx: BOOLEAN" + - "requiere_anestesia: BOOLEAN" + +tablas: + - name: "odontogramas" + descripcion: "Odontogramas de pacientes" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK (clinica.patients)" + - "fecha_creacion: DATE" + - "fecha_actualizacion: DATE" + - "notas: TEXT" + indices: + - "idx_odontogramas_tenant" + - "idx_odontogramas_patient" + + - name: "odontograma_piezas" + descripcion: "Estado de cada pieza en el odontograma" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "odontograma_id: UUID FK" + - "pieza_id: UUID FK (piezas_dentales)" + - "estado: dental.estado_pieza" + - "caras_afectadas: JSONB" + - "observaciones: TEXT" + indices: + - "idx_odontograma_piezas_odontograma" + - "idx_odontograma_piezas_pieza" + + - name: "tratamientos_paciente" + descripcion: "Tratamientos realizados a pacientes" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK" + - "odontograma_id: UUID FK" + - "tratamiento_id: UUID FK (tratamientos_catalogo)" + - "odontologo_id: UUID FK" + - "consultation_id: UUID FK" + - "pieza_id: UUID FK" + - "caras_tratadas: dental.cara_dental[]" + - "fecha_inicio: DATE" + - "fecha_fin: DATE" + - "estado: dental.estado_tratamiento" + - "precio: NUMERIC(10,2)" + - "descuento: NUMERIC(5,2)" + - "precio_final: NUMERIC(10,2)" + indices: + - "idx_tratamientos_paciente_tenant" + - "idx_tratamientos_paciente_patient" + - "idx_tratamientos_paciente_estado" + + - name: "ortodoncia" + descripcion: "Casos de ortodoncia" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK" + - "odontologo_id: UUID FK" + - "tipo: dental.tipo_ortodoncia" + - "marca: VARCHAR(100)" + - "fecha_inicio: DATE" + - "fecha_estimada_fin: DATE" + - "fecha_real_fin: DATE" + - "estado: dental.estado_tratamiento" + - "meses_estimados: INTEGER" + - "costo_total: NUMERIC(10,2)" + - "enganche: NUMERIC(10,2)" + - "mensualidad: NUMERIC(10,2)" + indices: + - "idx_ortodoncia_tenant" + - "idx_ortodoncia_patient" + - "idx_ortodoncia_estado" + + - name: "ortodoncia_citas" + descripcion: "Citas de seguimiento de ortodoncia" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "ortodoncia_id: UUID FK" + - "appointment_id: UUID FK" + - "fecha: DATE" + - "numero_cita: INTEGER" + - "procedimiento: TEXT" + - "arco_superior: VARCHAR(50)" + - "arco_inferior: VARCHAR(50)" + - "ligas: VARCHAR(50)" + - "proxima_cita: DATE" + indices: + - "idx_ortodoncia_citas_ortodoncia" + + - name: "protesis" + descripcion: "Trabajos protesicos" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK" + - "odontologo_id: UUID FK" + - "tipo: VARCHAR(50)" + - "piezas_involucradas: TEXT[]" + - "laboratorio_id: UUID FK" + - "fecha_envio_lab: DATE" + - "fecha_recepcion_lab: DATE" + - "material: VARCHAR(100)" + - "color: VARCHAR(50)" + - "estado: dental.estado_tratamiento" + - "fecha_colocacion: DATE" + - "tiene_garantia: BOOLEAN" + - "meses_garantia: INTEGER" + - "costo_laboratorio: NUMERIC(10,2)" + - "precio_paciente: NUMERIC(10,2)" + indices: + - "idx_protesis_tenant" + - "idx_protesis_patient" + + - name: "radiografias" + descripcion: "Radiografias dentales" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK" + - "consultation_id: UUID FK" + - "tipo: VARCHAR(50)" + - "pieza_id: UUID FK" + - "fecha: DATE" + - "url_imagen: VARCHAR(255)" + - "interpretacion: TEXT" + indices: + - "idx_radiografias_tenant" + - "idx_radiografias_patient" + + - name: "presupuestos" + descripcion: "Presupuestos de tratamiento" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "patient_id: UUID FK" + - "odontologo_id: UUID FK" + - "numero: VARCHAR(20)" + - "fecha: DATE" + - "fecha_vencimiento: DATE" + - "estado: VARCHAR(20)" + - "subtotal: NUMERIC(12,2)" + - "descuento_porcentaje: NUMERIC(5,2)" + - "descuento_monto: NUMERIC(12,2)" + - "total: NUMERIC(12,2)" + - "requiere_financiamiento: BOOLEAN" + - "enganche: NUMERIC(12,2)" + - "numero_pagos: INTEGER" + - "monto_pago: NUMERIC(12,2)" + indices: + - "idx_presupuestos_tenant" + - "idx_presupuestos_patient" + - "idx_presupuestos_estado" + + - name: "presupuesto_lineas" + descripcion: "Lineas de presupuesto" + rls: true + columnas: + - "id: UUID PK" + - "tenant_id: UUID FK" + - "presupuesto_id: UUID FK" + - "tratamiento_id: UUID FK" + - "pieza_id: UUID FK" + - "descripcion: TEXT" + - "cantidad: INTEGER" + - "precio_unitario: NUMERIC(10,2)" + - "descuento: NUMERIC(5,2)" + - "subtotal: NUMERIC(10,2)" + - "sequence: INTEGER" + indices: + - "idx_presupuesto_lineas_presupuesto" + +resumen: + total_enums: 4 + total_catalogos: 2 + total_tablas: 10 + total_con_rls: 10 + archivos_ddl: + - "database/schemas/01-dental-schema-ddl.sql" + archivos_seeds: + - "database/seeds/fase8/01-dental-catalogos.sql" + +ultima_actualizacion: "2026-01-07" +actualizado_por: "Orquestador Workspace"