-- la base de datos que hice en phpmyadmin es "clinica_db" para agregarla luego al server

-- Tabla de especialidades
CREATE TABLE Especialidades (
    IdEspecialidad INT AUTO_INCREMENT PRIMARY KEY,
    NombreEspecialidad VARCHAR(100) NOT NULL,
    Descripcion VARCHAR(250)
);

--tabla de Control_Pacientes
CREATE TABLE Control_Pacientes (
    IdPaciente INT AUTO_INCREMENT PRIMARY KEY,
    NombreCompleto VARCHAR(150) NOT NULL,
    CURP VARCHAR(18) UNIQUE,
    FechaNacimiento DATE,
    Sexo CHAR(1),
    Telefono VARCHAR(20),
    CorreoElectronico VARCHAR(100),
    Direccion VARCHAR(250),
    ContactoEmergencia VARCHAR(150),
    TelefonoEmergencia VARCHAR(20),
    Alergias VARCHAR(250),
    AntecedentesMedicos TEXT,
    FechaRegistro DATETIME DEFAULT CURRENT_TIMESTAMP,
    Estatus BIT DEFAULT 1
);
--Tabla dw Control_Medicos
CREATE TABLE Control_Medicos (
    IdMedico INT AUTO_INCREMENT PRIMARY KEY,
    NombreCompleto VARCHAR(150) NOT NULL,
    CedulaProfesional VARCHAR(50) UNIQUE,
    EspecialidadId INT,
    Telefono VARCHAR(20),
    CorreoElectronico VARCHAR(100),
    HorarioAtencion VARCHAR(100),
    FechaIngreso DATETIME DEFAULT CURRENT_TIMESTAMP,
    Estatus BIT DEFAULT 1,
    FOREIGN KEY (EspecialidadId) REFERENCES Especialidades(IdEspecialidad)
);

-- tabla: Control_Agenda
CREATE TABLE Control_Agenda (
    IdCita INT AUTO_INCREMENT PRIMARY KEY,
    IdPaciente INT NOT NULL,
    IdMedico INT NOT NULL,
    FechaCita DATETIME NOT NULL,
    MotivoConsulta VARCHAR(250),
    EstadoCita VARCHAR(20) DEFAULT 'Programada',
    Observaciones VARCHAR(250),
    FechaRegistro DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (IdPaciente) REFERENCES Control_Pacientes(IdPaciente),
    FOREIGN KEY (IdMedico) REFERENCES Control_Medicos(IdMedico)
);

--tbbla de expedientes 
CREATE TABLE Expediente_Clinico (
    IdExpediente INT AUTO_INCREMENT PRIMARY KEY,
    IdPaciente INT NOT NULL,
    IdMedico INT NOT NULL,
    FechaConsulta DATETIME DEFAULT CURRENT_TIMESTAMP,
    Sintomas TEXT,
    Diagnostico TEXT,
    Tratamiento TEXT,
    RecetaMedica TEXT,
    NotasAdicionales TEXT,
    ProximaCita DATETIME,
    FOREIGN KEY (IdPaciente) REFERENCES Control_Pacientes(IdPaciente),
    FOREIGN KEY (IdMedico) REFERENCES Control_Medicos(IdMedico)
);

--tabla Tarifas
CREATE TABLE Gestor_Tarifas (
    IdTarifa INT AUTO_INCREMENT PRIMARY KEY,
    DescripcionServicio VARCHAR(150) NOT NULL,
    CostoBase DECIMAL(10,2) NOT NULL,
    EspecialidadId INT,
    Estatus BIT DEFAULT 1,
    FOREIGN KEY (EspecialidadId) REFERENCES Especialidades(IdEspecialidad)
);

--tabla: pagos
CREATE TABLE Gestor_Pagos (
    IdPago INT AUTO_INCREMENT PRIMARY KEY,
    IdCita INT NOT NULL,
    IdPaciente INT NOT NULL,
    Monto DECIMAL(10,2) NOT NULL,
    MetodoPago VARCHAR(50),
    FechaPago DATETIME DEFAULT CURRENT_TIMESTAMP,
    Referencia VARCHAR(100),
    EstatusPago VARCHAR(20) DEFAULT 'Pendiente',
    FOREIGN KEY (IdCita) REFERENCES Control_Agenda(IdCita),
    FOREIGN KEY (IdPaciente) REFERENCES Control_Pacientes(IdPaciente)
);

--Tabla de usuarios
CREATE TABLE Usuarios_Sistema (
    IdUsuario INT AUTO_INCREMENT PRIMARY KEY,
    Usuario VARCHAR(50) UNIQUE NOT NULL,
    ContrasenaHash VARCHAR(200) NOT NULL,
    Rol VARCHAR(50) NOT NULL,
    IdMedico INT,
    Activo BIT DEFAULT 1,
    UltimoAcceso DATETIME,
    FOREIGN KEY (IdMedico) REFERENCES Control_Medicos(IdMedico)
);

-- Tabla de bitacora
CREATE TABLE Bitacora_Acceso (
    IdBitacora INT AUTO_INCREMENT PRIMARY KEY,
    IdUsuario INT NOT NULL,
    FechaAcceso DATETIME DEFAULT CURRENT_TIMESTAMP,
    AccionRealizada VARCHAR(250),
    Modulo VARCHAR(100),
    FOREIGN KEY (IdUsuario) REFERENCES Usuarios_Sistema(IdUsuario)
);

-- Tabla: Reportes
CREATE TABLE Reportes (
    IdReporte INT AUTO_INCREMENT PRIMARY KEY,
    TipoReporte VARCHAR(50) NOT NULL,
    IdPaciente INT,
    IdMedico INT,
    FechaGeneracion DATETIME DEFAULT CURRENT_TIMESTAMP,
    RutaArchivo VARCHAR(250),
    Descripcion VARCHAR(250),
    GeneradoPor VARCHAR(100),
    FOREIGN KEY (IdPaciente) REFERENCES Control_Pacientes(IdPaciente),
    FOREIGN KEY (IdMedico) REFERENCES Control_Medicos(IdMedico)
);

-- ejemplos
INSERT INTO Especialidades (NombreEspecialidad, Descripcion) VALUES
('Medicina General', 'Atención médica general y preventiva'),
('Pediatría', 'Especialidad enfocada en niños y adolescentes'),
('Cardiología', 'Especialidad del corazón y sistema cardiovascular'),
('Dermatología', 'Especialidad de la piel y sus enfermedades'),
('Ginecología', 'Salud reproductiva femenina');