-- Base de datos y tablas para el proyecto "casos_medicos" CREATE DATABASE IF NOT EXISTS casos_medicos; USE casos_medicos; -- Tabla usuarios CREATE TABLE IF NOT EXISTS usuarios ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100), usuario VARCHAR(50) UNIQUE, clave VARCHAR(255), perfil ENUM('Administrador','Medico','Auxiliar') DEFAULT 'Auxiliar' ); -- Tablas maestras CREATE TABLE IF NOT EXISTS afp (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100)); CREATE TABLE IF NOT EXISTS eps (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100)); CREATE TABLE IF NOT EXISTS arl (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100)); CREATE TABLE IF NOT EXISTS empresa (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100)); CREATE TABLE IF NOT EXISTS planta ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100), id_empresa INT, FOREIGN KEY (id_empresa) REFERENCES empresa(id) ); CREATE TABLE IF NOT EXISTS diagnostico (id INT AUTO_INCREMENT PRIMARY KEY, codigo VARCHAR(20), descripcion VARCHAR(255)); CREATE TABLE IF NOT EXISTS estado (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50)); -- Hoja de vida CREATE TABLE IF NOT EXISTS hoja_vida ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20) UNIQUE, nombre VARCHAR(150), foto VARCHAR(255), fecha_nacimiento DATE, edad INT, id_afp INT, id_eps INT, id_arl INT, tipo_contrato VARCHAR(50), id_empresa INT, id_planta INT, regional VARCHAR(100), centro_trabajo VARCHAR(100), cargo_inicial VARCHAR(100), fecha_inicio DATE, tipo_rehabilitacion VARCHAR(100), cargo_reubicado VARCHAR(100), productividad DECIMAL(5,2), semanas_cotizacion INT, id_estado INT, FOREIGN KEY (id_afp) REFERENCES afp(id), FOREIGN KEY (id_eps) REFERENCES eps(id), FOREIGN KEY (id_arl) REFERENCES arl(id), FOREIGN KEY (id_empresa) REFERENCES empresa(id), FOREIGN KEY (id_planta) REFERENCES planta(id), FOREIGN KEY (id_estado) REFERENCES estado(id) ); -- Diagnóstico CREATE TABLE IF NOT EXISTS diagnostico_paciente ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), peso DECIMAL(5,2), id_diagnostico INT, talla DECIMAL(5,2), origen VARCHAR(100), calificacion VARCHAR(100), fecha DATE, imc DECIMAL(5,2), estado VARCHAR(50), tipo_reintegro VARCHAR(100), tipo_recomendacion VARCHAR(100), FOREIGN KEY (id_diagnostico) REFERENCES diagnostico(id) ); -- Historiales CREATE TABLE IF NOT EXISTS historial_recomendaciones ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), fecha_inicio DATE, fecha_fin DATE, recomendacion TEXT, tiempo INT GENERATED ALWAYS AS (DATEDIFF(fecha_fin, fecha_inicio)) STORED ); CREATE TABLE IF NOT EXISTS historial_incapacidades ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), fecha_inicio DATE, fecha_fin DATE, id_diagnostico INT, tiempo INT GENERATED ALWAYS AS (DATEDIFF(fecha_fin, fecha_inicio)) STORED, FOREIGN KEY (id_diagnostico) REFERENCES diagnostico(id) ); CREATE TABLE IF NOT EXISTS seguimiento ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), fecha DATE, observaciones TEXT, responsable VARCHAR(100) ); CREATE TABLE IF NOT EXISTS calificaciones ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), fecha DATE, entidad VARCHAR(100), porcentaje DECIMAL(5,2), origen VARCHAR(100), observaciones TEXT, responsable VARCHAR(100) ); CREATE TABLE IF NOT EXISTS observaciones_mesas ( id INT AUTO_INCREMENT PRIMARY KEY, cedula VARCHAR(20), fecha DATE, observaciones TEXT, responsable VARCHAR(100), estado VARCHAR(50) ); -- Insertar usuario administrador por defecto (clave: admin123 -> hashed) INSERT INTO usuarios (nombre, usuario, clave, perfil) SELECT 'Administrador','admin', '$2y$10$m3Yb7bQ8z3vQ1b8m3nVqKeYH1s3hK1b8q8lq9Qz1pQ0b6M1yK6eG', 'Administrador' WHERE NOT EXISTS(SELECT 1 FROM usuarios WHERE usuario='admin'); -- Nota: la contraseña 'admin123' hasheada con password_hash en PHP resulta en el valor insertado arriba (puede regenerarse).