CREATE TABLE IF NOT EXISTS USUARIO ( id BIGINT NOT NULL AUTO_INCREMENT, nombre VARCHAR(100) NOT NULL, apellido1 VARCHAR(100), apellido2 VARCHAR(100), email VARCHAR(254) NOT NULL, password_hash VARCHAR(255) NOT NULL, telefono VARCHAR(30), fecha_registro DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, rol VARCHAR(30) NOT NULL, PRIMARY KEY (id), UNIQUE KEY uq_usuario_email (email) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS PACIENTE ( id BIGINT NOT NULL AUTO_INCREMENT, usuario_id BIGINT NOT NULL, fecha_nacimiento DATE, genero VARCHAR(30), tipo_cancer VARCHAR(150), observaciones TEXT, PRIMARY KEY (id), CONSTRAINT fk_paciente_usuario FOREIGN KEY (usuario_id) REFERENCES USUARIO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS MEDICO ( id BIGINT NOT NULL AUTO_INCREMENT, usuario_id BIGINT NOT NULL, numero_colegiado VARCHAR(50), especialidad VARCHAR(100), hospital VARCHAR(150), PRIMARY KEY (id), CONSTRAINT fk_medico_usuario FOREIGN KEY (usuario_id) REFERENCES USUARIO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS CITA ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, medico_id BIGINT NOT NULL, fecha_hora DATETIME NOT NULL, tipo VARCHAR(50), notas TEXT, estado VARCHAR(30) NOT NULL DEFAULT 'PROGRAMADA', PRIMARY KEY (id), CONSTRAINT fk_cita_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id), CONSTRAINT fk_cita_medico FOREIGN KEY (medico_id) REFERENCES MEDICO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS SINTOMA ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, nombre VARCHAR(120) NOT NULL, severidad TINYINT UNSIGNED, descripcion TEXT, PRIMARY KEY (id), CONSTRAINT fk_sintoma_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS TRATAMIENTO ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, nombre VARCHAR(150) NOT NULL, tipo VARCHAR(80), fecha_inicio DATE, fecha_fin DATE, descripcion TEXT, PRIMARY KEY (id), CONSTRAINT fk_tratamiento_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS MEDICINA ( id BIGINT NOT NULL AUTO_INCREMENT, nombre VARCHAR(150) NOT NULL, descripcion TEXT, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS MEDICACION ( id BIGINT NOT NULL AUTO_INCREMENT, tratamiento_id BIGINT NOT NULL, medicina_id BIGINT NOT NULL, medico_id BIGINT NOT NULL, dosis VARCHAR(100), frecuencia VARCHAR(100), fecha_inicio DATETIME, fecha_fin DATETIME, observaciones TEXT, PRIMARY KEY (id), CONSTRAINT fk_medicacion_tratamiento FOREIGN KEY (tratamiento_id) REFERENCES TRATAMIENTO (id), CONSTRAINT fk_medicacion_medicina FOREIGN KEY (medicina_id) REFERENCES MEDICINA (id), CONSTRAINT fk_medicacion_medico FOREIGN KEY (medico_id) REFERENCES MEDICO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS HISTORIAL_CLINICO ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, tipo VARCHAR(80) NOT NULL, descripcion TEXT, PRIMARY KEY (id), CONSTRAINT fk_historial_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS RESUMEN_COMPARTIDO ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, medico_id BIGINT NOT NULL, fecha_creacion DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, formato VARCHAR(30), contenido TEXT, estado VARCHAR(30), PRIMARY KEY (id), CONSTRAINT fk_resumen_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id), CONSTRAINT fk_resumen_medico FOREIGN KEY (medico_id) REFERENCES MEDICO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS ARCHIVO ( id BIGINT NOT NULL AUTO_INCREMENT, paciente_id BIGINT NOT NULL, nombre VARCHAR(255) NOT NULL, tipo VARCHAR(100), ruta VARCHAR(1024) NOT NULL, fecha_subida DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), CONSTRAINT fk_archivo_paciente FOREIGN KEY (paciente_id) REFERENCES PACIENTE (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE IF NOT EXISTS NOTIFICACION ( id BIGINT NOT NULL AUTO_INCREMENT, usuario_id BIGINT NOT NULL, tipo VARCHAR(80) NOT NULL, mensaje TEXT NOT NULL, leida BOOLEAN NOT NULL DEFAULT FALSE, fecha_creacion DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), CONSTRAINT fk_notificacion_usuario FOREIGN KEY (usuario_id) REFERENCES USUARIO (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;