-- ============================================================
-- SCRIPT DE LIMPIEZA DE DATOS MÉDICOS - VERSIÓN FINAL
-- ============================================================
-- Descripción: Borra SOLO datos médicos (pacientes, atenciones, documentos)
--              PRESERVA configuraciones, usuarios, catálogos
-- Fecha: 2026-01-21
-- ADVERTENCIA: Este script es IRREVERSIBLE. Hacer backup antes de ejecutar.
-- ============================================================

-- PASO 1: DESACTIVAR VERIFICACIÓN DE CLAVES FORÁNEAS (temporalmente)
SET FOREIGN_KEY_CHECKS = 0;

-- ============================================================
-- BORRAR DATOS DE ATENCIONES Y DOCUMENTOS
-- ============================================================

-- Borrar evoluciones diarias (PRIMERO - tiene FK a atencion)
DELETE FROM `evolucion_diaria`;

-- Borrar formatos de atención (historias clínicas guardadas)
DELETE FROM `atencion_formatos`;

-- Borrar documentos médicos (PDFs firmados)
DELETE FROM `documento_medico`;

-- Borrar recetas
DELETE FROM `receta`;

-- Borrar resultados de atención (diagnósticos, tratamientos)
DELETE FROM `detalle_diagnostico`;
DELETE FROM `resultado`;

-- Borrar triaje (signos vitales)
DELETE FROM `triaje`;

-- Borrar anexos MSP (si existen)
DELETE FROM `anexo_1_ficha_familiar`;
DELETE FROM `anexo_2_prehospitalaria`;

-- Borrar formatos MSP antiguos (si existen)
DELETE FROM `msp_001_admision`;
DELETE FROM `msp_002_consulta_externa`;
DELETE FROM `msp_003_hospitalizacion`;
DELETE FROM `msp_005_evolucion`;
DELETE FROM `msp_006_epicrisis`;
DELETE FROM `msp_007_interconsulta`;
DELETE FROM `msp_008_emergencia`;
DELETE FROM `msp_009_prehospitalaria`;
DELETE FROM `msp_010_laboratorio`;
DELETE FROM `msp_012_imagenologia`;
DELETE FROM `msp_013_histopatologia`;
DELETE FROM `msp_020_signos_vitales`;
DELETE FROM `msp_021_signos_vitales`;
DELETE FROM `msp_024_consentimiento`;
DELETE FROM `msp_anexo1_ficha_familiar`;
DELETE FROM `msp_anexo2_prehospitalaria`;

-- Borrar solicitudes de exámenes
DELETE FROM `solicitud_examen`;

-- Borrar imágenes médicas
DELETE FROM `imagenes`;

-- Borrar vacunas aplicadas
DELETE FROM `vacuna_paciente`;

-- Borrar atenciones (ÚLTIMO - otras tablas dependen de esta)
DELETE FROM `atencion`;

-- ============================================================
-- BORRAR DATOS DE PACIENTES
-- ============================================================

-- Borrar pacientes (personas que NO son empleados/usuarios)
-- IMPORTANTE: Esto preserva médicos, enfermeras, administradores
DELETE FROM `persona` WHERE `idpersona` NOT IN (SELECT `idpersona` FROM `usuario`);

-- ============================================================
-- BORRAR DATOS RELACIONADOS (si existen)
-- ============================================================

-- Borrar facturas SRI (si existen)
DELETE FROM `facturas_sri`;

-- Borrar agenda local
DELETE FROM `agenda_local`;

-- ============================================================
-- REINICIAR AUTO_INCREMENT (opcional)
-- ============================================================
-- Esto hace que los IDs vuelvan a empezar desde 1

ALTER TABLE `atencion` AUTO_INCREMENT = 1;
ALTER TABLE `persona` AUTO_INCREMENT = 1;
ALTER TABLE `resultado` AUTO_INCREMENT = 1;
ALTER TABLE `triaje` AUTO_INCREMENT = 1;
ALTER TABLE `receta` AUTO_INCREMENT = 1;
ALTER TABLE `atencion_formatos` AUTO_INCREMENT = 1;
ALTER TABLE `documento_medico` AUTO_INCREMENT = 1;
ALTER TABLE `evolucion_diaria` AUTO_INCREMENT = 1;
ALTER TABLE `detalle_diagnostico` AUTO_INCREMENT = 1;

-- ============================================================
-- REACTIVAR VERIFICACIÓN DE CLAVES FORÁNEAS
-- ============================================================
SET FOREIGN_KEY_CHECKS = 1;

-- ============================================================
-- VERIFICACIÓN (ejecutar después para confirmar)
-- ============================================================
-- Descomentar estas líneas para verificar que se borraron los datos:

-- SELECT COUNT(*) as total_atenciones FROM atencion;
-- SELECT COUNT(*) as total_pacientes FROM persona WHERE idpersona NOT IN (SELECT idpersona FROM usuario);
-- SELECT COUNT(*) as total_documentos FROM documento_medico;
-- SELECT COUNT(*) as total_usuarios FROM usuario; -- Debe mantener los usuarios

-- ============================================================
-- TABLAS QUE SE PRESERVAN (NO SE TOCAN)
-- ============================================================
-- ✅ usuario (médicos, administradores)
-- ✅ persona (solo empleados/usuarios)
-- ✅ servicio (especialidades médicas)
-- ✅ diagnostico (catálogo CIE-10)
-- ✅ cuadro_basico_medicamentos (vademécum)
-- ✅ configuracion (datos de la clínica)
-- ✅ certificados_medicos (certificados .p12 para firma digital)
-- ✅ permiso, usuario_permiso (permisos de usuarios)
-- ✅ esquema_vacuna (catálogo de vacunas)
-- ✅ oms_imc, oms_pce, oms_pde, oms_tde (tablas OMS)
-- ✅ pediatria_curvas_oms (curvas de crecimiento)
-- ✅ sri_emisor (configuración SRI)

-- ============================================================
-- FIN DEL SCRIPT
-- ============================================================
