- Add CONTEXT-MAP.yml and PROJECT-STATUS.md - Add _MAP.md for documentation index - Update orchestration structure 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
285 lines
7.3 KiB
YAML
285 lines
7.3 KiB
YAML
---
|
|
# 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"
|