# PROJECT-PROFILE.yml - clinica-dental # Perfil de proyecto para el Agente de Propagación Automático # Version: 1.0.0 # Fecha: 2026-01-18 project: name: "clinica-dental" code: "DEN" type: "SUB-VERTICAL" level: "SUB-CONSUMER" giro: "odontologia" version: "1.0.0" completeness: 15 description: | ERP sub-vertical para clínicas y consultorios dentales: - Odontología general - Ortodoncia - Endodoncia - Periodoncia - Cirugía maxilofacial - Estética dental Hereda de erp-clinicas y especializa para odontología. # ============================================================================= # JERARQUÍA DE HERENCIA # ============================================================================= inheritance: parent: "erp-clinicas" grandparent: "erp-core" chain: ["erp-core", "erp-clinicas", "clinica-dental"] # ============================================================================= # ESTRUCTURA DEL PROYECTO # ============================================================================= structure: type: "monorepo" root_path: "projects/clinica-dental" apps: backend: path: "apps/backend" framework: "NestJS" modules_path: "src/modules" entities_path: "src/modules/*/entities" frontend: path: "apps/frontend" framework: "React" features_path: "src/features" pages_path: "src/pages" database: path: "apps/database" ddl_path: "ddl" # ============================================================================= # MAPEO DE MÓDULOS: clinicas → dental # ============================================================================= module_mapping: # Heredados de erp-clinicas (se mantienen) auth: "auth" users: "users" roles: "roles" tenants: "tenants" catalogs: "catalogs" patients: "dental-patients" # Pacientes → Pacientes dentales medical-supplies: "dental-supplies" financial: "financial" appointments: "dental-appointments" purchases: "purchases" patient-relations: "patient-relations" audit: "audit" notifications: "notifications" clinical-reports: "dental-reports" # De erp-clinicas que se especializan medical-records: "dental-records" scheduling: "dental-scheduling" prescriptions: "dental-prescriptions" insurance: "dental-insurance" lab-integration: "dental-lab" # Integración con laboratorios dentales # ============================================================================= # ADAPTACIONES ESPECÍFICAS DE ODONTOLOGÍA # ============================================================================= adaptations: entities: # Desde erp-clinicas Patient: "DentalPatient" MedicalSupply: "DentalSupply" Appointment: "DentalAppointment" MedicalRecord: "DentalRecord" fields_additions: DentalPatient: - name: "odontogram" type: "jsonb" nullable: true reason: "Odontograma completo del paciente" - name: "dental_history" type: "jsonb" nullable: true reason: "Historial dental específico" - name: "orthodontic_treatment" type: "boolean" default: false reason: "Si está en tratamiento de ortodoncia" - name: "last_cleaning_date" type: "date" nullable: true reason: "Última limpieza dental" - name: "periodontal_status" type: "varchar(50)" enum: ["healthy", "gingivitis", "mild_periodontitis", "moderate_periodontitis", "severe_periodontitis"] nullable: true reason: "Estado periodontal" - name: "bruxism" type: "boolean" default: false reason: "Si presenta bruxismo" DentalSupply: - name: "dental_category" type: "varchar(50)" enum: ["restorative", "endodontic", "orthodontic", "surgical", "preventive", "prosthetic", "anesthetic", "instrument"] reason: "Categoría de insumo dental" - name: "tooth_application" type: "jsonb" nullable: true reason: "Dientes donde se puede aplicar" - name: "shade_guide" type: "varchar(20)" nullable: true reason: "Guía de color (para restauraciones)" DentalAppointment: - name: "treatment_type" type: "varchar(50)" enum: ["cleaning", "filling", "extraction", "root_canal", "crown", "implant", "orthodontic", "whitening", "veneer", "emergency"] reason: "Tipo de tratamiento dental" - name: "teeth_involved" type: "jsonb" nullable: true reason: "Dientes involucrados (notación FDI)" - name: "quadrant" type: "varchar(20)" enum: ["upper_right", "upper_left", "lower_right", "lower_left", "full_mouth"] nullable: true reason: "Cuadrante a tratar" - name: "anesthesia_required" type: "boolean" default: false reason: "Si requiere anestesia" - name: "anesthesia_type" type: "varchar(50)" nullable: true reason: "Tipo de anestesia" - name: "x_rays_required" type: "boolean" default: false reason: "Si requiere radiografías" DentalRecord: - name: "odontogram_history" type: "jsonb" nullable: true reason: "Historial de cambios en odontograma" - name: "treatment_plan" type: "jsonb" nullable: true reason: "Plan de tratamiento completo" - name: "x_ray_images" type: "jsonb" nullable: true reason: "Referencias a imágenes de rayos X" - name: "intraoral_photos" type: "jsonb" nullable: true reason: "Fotos intraorales" fields_removals: DentalPatient: - "blood_type" # Menos crítico en odontología general # ============================================================================= # MÓDULOS ESPECÍFICOS DE ODONTOLOGÍA # ============================================================================= vertical_modules: - id: "DEN-001" name: "odontogram" description: "Gestión de odontograma digital" status: "planned" priority: "P0" entities: - Odontogram - ToothStatus - ToothHistory - id: "DEN-002" name: "treatment-plans" description: "Planes de tratamiento dental" status: "planned" priority: "P0" entities: - TreatmentPlan - TreatmentPhase - TreatmentProcedure - id: "DEN-003" name: "orthodontics" description: "Módulo de ortodoncia" status: "planned" priority: "P1" entities: - OrthodonticCase - BracketPlacement - WireChange - OrthoProgress - id: "DEN-004" name: "dental-imaging" description: "Imagenología dental" status: "planned" priority: "P1" entities: - DentalImage - Panoramic - Periapical - Bitewing - id: "DEN-005" name: "dental-lab-orders" description: "Pedidos a laboratorio dental" status: "planned" priority: "P1" entities: - LabOrder - LabWork - ShadeSelection # ============================================================================= # TERMINOLOGÍA ODONTOLÓGICA # ============================================================================= terminology: # Heredado de clínicas paciente: "paciente dental" cita: "cita dental" consulta: "consulta dental" # Específico de odontología tratamiento: "tratamiento dental" limpieza: "profilaxis" empaste: "restauración" extraccion: "extracción/exodoncia" endodoncia: "tratamiento de conductos" corona: "corona dental" implante: "implante dental" ortodoncia: "ortodoncia" blanqueamiento: "blanqueamiento dental" carilla: "carilla/veneer" radiografia: "radiografía dental" odontograma: "odontograma" # ============================================================================= # NOTACIÓN DENTAL # ============================================================================= dental_notation: system: "FDI" # Federación Dental Internacional (ISO 3950) quadrants: 1: "Superior derecho (11-18)" 2: "Superior izquierdo (21-28)" 3: "Inferior izquierdo (31-38)" 4: "Inferior derecho (41-48)" tooth_surfaces: - code: "M" name: "Mesial" - code: "D" name: "Distal" - code: "V" name: "Vestibular/Bucal" - code: "L" name: "Lingual/Palatino" - code: "O" name: "Oclusal/Incisal" # ============================================================================= # REGLAS DE PROPAGACIÓN # ============================================================================= propagation_rules: accept_from: - erp-clinicas # Padre directo - erp-core # Si erp-clinicas lo propaga auto_accept: - documentation - definitions - security_fixes - bug_fixes - patient_base_changes require_adaptation: - entities - ddl_schema - medical_records # Adaptar a registros dentales require_review: - breaking_changes - schema_migrations - hipaa_related reject: - veterinary_features - general_surgery_features # ============================================================================= # VALIDACIONES ESPECÍFICAS # ============================================================================= validations: pre_propagation: - "Verificar que módulo padre (erp-clinicas) está actualizado" - "Validar que entity mapping está definido" post_propagation: - "npm run build" - "npm run lint" - "npm run test:affected" business_rules: - "Odontograma usa notación FDI" - "Tratamientos de ortodoncia requieren plan aprobado" - "Radiografías requieren consentimiento del paciente" - "Anestesia registra tipo y cantidad" - "Laboratorio dental requiere guía de color" # ============================================================================= # HISTORIAL # ============================================================================= history: - date: "2026-01-18" action: "Creación de PROJECT-PROFILE.yml" author: "Claude-Opus-4.5"