cancertracker/backend/bbdd/schema.sql

139 lines
5.2 KiB
SQL

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;