File "casos_medicos.sql"

Full Path: C:/wamp64/www/casos_medicos/casos_medicos.sql
File size: 4.07 KB
MIME-type: text/plain
Charset: utf-8

-- 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).