353 lines
12 KiB
PHP
353 lines
12 KiB
PHP
<?php
|
|
|
|
function connectDatabase()
|
|
{
|
|
$connection = 'unix_socket';
|
|
$host = '../.mysql/mysql.sock';
|
|
$charset = 'utf8mb4';
|
|
$db = 'practica';
|
|
$dsn = "mysql:$connection=$host;dbname=$db;charset=$charset";
|
|
$pdo = new PDO($dsn, "practica", "practica");
|
|
return $pdo;
|
|
}
|
|
|
|
function closeDatabase($pdo)
|
|
{
|
|
$pdo = null;
|
|
}
|
|
|
|
function listRows($pdo, $table)
|
|
{
|
|
$query = "SELECT * FROM ?";
|
|
$result = $pdo->prepare($query)->execute([$table]);
|
|
return $result;
|
|
}
|
|
|
|
function createPatient($pdo, $data)
|
|
{
|
|
$query = "INSERT INTO paciente
|
|
(nombre, apellido, fecha_de_nacimiento, documento_identificativo, tipo_documento, direccion, localidad, provincia, pais)
|
|
VALUES (?,?,?,?,?,?,?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"],
|
|
$data["documento_identificativo"], $data["tipo_documento"], $data["direccion"],
|
|
$data["localidad"], $data["provincia"], $data["pais"]]);
|
|
return "Paciente creado con éxito";
|
|
}
|
|
|
|
function editPatient($pdo, $data, $id)
|
|
{
|
|
$query = "UPDATE paciente SET nombre=?, apellido=?, fecha_de_nacimiento=?, documento_identificativo=?,
|
|
tipo_documento=?, direccion=?, localidad=?, provincia=?, pais=? WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"],
|
|
$data["documento_identificativo"], $data["tipo_documento"], $data["direccion"],
|
|
$data["localidad"], $data["provincia"], $data["pais"], $id]);
|
|
return "Paciente modificado con éxito";
|
|
}
|
|
|
|
function deletePatient($pdo, string $id)
|
|
{
|
|
$check = "SELECT * FROM informes where paciente = ?";
|
|
$result = $pdo->prepare($check);
|
|
$result->execute([$id]);
|
|
if ($result->columnCount() == 0) {
|
|
$statement = "DELETE FROM paciente where id=?";
|
|
$pdo->prepare($statement)->execute([$id]);
|
|
return "El paciente se ha eliminado correctamente";
|
|
}
|
|
return "No se puede eliminar el paciente dado que tiene citas";
|
|
}
|
|
|
|
function createHoliday($pdo, $data)
|
|
{
|
|
if (!empty($data["medico"])) {
|
|
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo, medico) VALUES (?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"]]);
|
|
} else {
|
|
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo) VALUES (?,?)";
|
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"]]);
|
|
}
|
|
return "Festivo creado con éxito";
|
|
}
|
|
|
|
function editHoliday($pdo, $data, $id)
|
|
{
|
|
$query = "UPDATE festivo SET fecha_festivo=?, tipo_festivo=?, medico=? WHERE id=?";
|
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"], $id]);
|
|
return "Festivo modificado con éxito";
|
|
}
|
|
|
|
function deleteHoliday($pdo, $id)
|
|
{
|
|
$statement = "DELETE FROM festivo where id=?";
|
|
$pdo->prepare($statement)->execute([$id]);
|
|
return "Festivo borrado con éxito";
|
|
}
|
|
|
|
function createUser($pdo, $data)
|
|
{
|
|
$query = "INSERT INTO usuario (nombre, usuario, contraseña, rol, correo) VALUES (?,?,?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"]]);
|
|
return "Usuario creado con éxito";
|
|
}
|
|
|
|
function editUser($pdo, $data, $id)
|
|
{
|
|
$query = "UPDATE usuario SET nombre=?, usuario=?, contraseña=?, rol=?, correo=? WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"], $id]);
|
|
return "Usuario modificado con éxito";
|
|
}
|
|
|
|
function deactivateUser($pdo, $data, $id)
|
|
{
|
|
$query = "UPDATE usuario SET fecha_baja=now() WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
return "Usuario desactivado con éxito";
|
|
}
|
|
|
|
function listUsers($pdo)
|
|
{
|
|
$query = "SELECT usuario.nombre, usuario.usuario, rol.nombre, usuario.correo, usuario.id, fecha_baja FROM usuario
|
|
INNER JOIN rol ON usuario.rol = rol.codigo";
|
|
$result = $pdo->query($query)->fetchAll();
|
|
return $result;
|
|
}
|
|
|
|
function fetchUserData($pdo, string $id)
|
|
{
|
|
$query = "SELECT * FROM usuario WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
function findUser($pdo, $input)
|
|
{
|
|
$input = "%$input%";
|
|
$query = "SELECT usuario.nombre, usuario.usuario, rol.nombre, usuario.correo, usuario.id, fecha_baja
|
|
FROM usuario, rol WHERE usuario.rol=rol.codigo AND (usuario.nombre LIKE ? OR usuario.usuario LIKE ? OR usuario.correo LIKE ?)";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$input, $input, $input]);
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function listPatients($pdo)
|
|
{
|
|
$query = "SELECT paciente.id, paciente.nombre, paciente.apellido, paciente.fecha_de_nacimiento, paciente.documento_identificativo,
|
|
paciente.tipo_documento, paciente.direccion, municipios.nombre, provincias.provincia, paciente.pais, cita.id, informe.titulo
|
|
FROM paciente INNER JOIN municipios ON paciente.localidad = municipios.id_municipio
|
|
INNER JOIN provincias ON paciente.provincia = provincias.id_provincia
|
|
LEFT JOIN cita ON paciente.id=cita.paciente LEFT JOIN informe ON paciente.id=informe.paciente
|
|
GROUP BY paciente.id, cita.id, informe.titulo";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
|
|
function fetchPatientData($pdo, string $id)
|
|
{
|
|
$query = "SELECT * FROM paciente WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
function findPatient($pdo, $input)
|
|
{
|
|
$input = "%$input%";
|
|
$query = "SELECT * FROM paciente WHERE nombre LIKE ? OR apellido LIKE ? OR documento_identificativo LIKE ?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$input, $input, $input]);
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function fetchCities($pdo, $id)
|
|
{
|
|
$query = "SELECT * FROM municipios WHERE id_provincia=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function fetchRegions($pdo)
|
|
{
|
|
$query = "SELECT * FROM provincias";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function fetchHolidays($pdo)
|
|
{
|
|
$query = "SELECT festivo.id, festivo.fecha_festivo, festivo.tipo_festivo, usuario.nombre
|
|
FROM festivo LEFT JOIN usuario ON festivo.medico = usuario.id";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function listDoctors($pdo)
|
|
{
|
|
$query = "SELECT * FROM usuario where rol=2";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function fetchHolidayData($pdo, string $id)
|
|
{
|
|
$query = "SELECT * FROM festivo WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
function listReports($pdo)
|
|
{
|
|
$query = "SELECT informe.id, informe.titulo, informe.fecha, informe.hora, paciente.apellido,
|
|
usuario.nombre FROM informe INNER JOIN paciente ON paciente.id = informe.paciente
|
|
INNER JOIN usuario ON usuario.id = informe.medico";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function createReport($pdo, $data)
|
|
{
|
|
$query = "INSERT INTO informe
|
|
(fecha, hora, paciente, titulo, contenido, medico)
|
|
VALUES (?,?,?,?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["paciente"],
|
|
$data["titulo"], $data["contenido"], $data["medico"]]);
|
|
return "Informe creado con éxito";
|
|
}
|
|
|
|
function editReport($pdo, $data, $id)
|
|
{
|
|
$query = "UPDATE informe SET fecha=?, hora=?, paciente=?, titulo=?, contenido=?, medico=? WHERE id=?";
|
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["paciente"],
|
|
$data["titulo"], $data["contenido"], $data["medico"], $id]);
|
|
return "Informe modificado con éxito";
|
|
}
|
|
|
|
function deleteReport($pdo, $id)
|
|
{
|
|
$statement = "DELETE FROM informe where id=?";
|
|
$pdo->prepare($statement)->execute([$id]);
|
|
return "Informe borrado con éxito";
|
|
}
|
|
|
|
function fetchPatients($pdo)
|
|
{
|
|
$query = "SELECT id, apellido from paciente";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute();
|
|
$data = $result->fetchAll();
|
|
return $data;
|
|
}
|
|
|
|
function fetchReportData($pdo, string $id)
|
|
{
|
|
$query = "SELECT * FROM informe WHERE id=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$id]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
function fetchLoginData($pdo, $data)
|
|
{
|
|
$query = "SELECT usuario, contraseña, rol FROM usuario WHERE usuario=? AND fecha_baja IS NULL";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$data["usuario"]]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
function checkExistingCalendar($pdo, $data)
|
|
{
|
|
$query = "SELECT * from calendario WHERE medico=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$data["medico"]]);
|
|
$data = $result->fetch();
|
|
return $data;
|
|
}
|
|
|
|
|
|
function configureCalendar($pdo, $data)
|
|
{
|
|
$existing = checkExistingCalendar($pdo, $data);
|
|
if (!$existing) {
|
|
$query = "INSERT INTO calendario
|
|
(hora_inicio_mañana, hora_fin_mañana, hora_inicio_tarde, hora_fin_tarde,
|
|
horario, sabado_habil, domingo_habil, duracion_cita_por_defecto, medico)
|
|
VALUES (?,?,?,?,?,?,?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["hora_inicio_mañana"], $data["hora_fin_mañana"], $data["hora_inicio_tarde"],
|
|
$data["hora_fin_tarde"], $data["horario"], $data["sabado_habil"], $data["domingo_habil"],
|
|
$data["duracion_cita_por_defecto"], $data["medico"]]);
|
|
} else {
|
|
$query = "UPDATE calendario SET hora_inicio_mañana=?, hora_fin_mañana=?,
|
|
hora_inicio_tarde=?, hora_fin_tarde=?, horario=?, sabado_habil=?, domingo_habil=?,
|
|
duracion_cita_por_defecto=?, medico=? WHERE medico=?";
|
|
$pdo->prepare($query)->execute([$data["hora_inicio_mañana"], $data["hora_fin_mañana"], $data["hora_inicio_tarde"],
|
|
$data["hora_fin_tarde"], $data["horario"], $data["sabado_habil"], $data["domingo_habil"],
|
|
$data["duracion_cita_por_defecto"], $data["medico"], $data["medico"]]);
|
|
}
|
|
return "Calendario configurado con éxito";
|
|
}
|
|
|
|
|
|
function fetchCalendarEvents($pdo, $doctor)
|
|
{
|
|
$query = "SELECT * from cita WHERE medico=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$doctor]);
|
|
$data = $result->fetchAll(PDO::FETCH_ASSOC);
|
|
return $data;
|
|
}
|
|
|
|
|
|
function fetchCalendarSettings($pdo, $doctor)
|
|
{
|
|
$query = "SELECT * from calendario WHERE medico=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$doctor]);
|
|
$data = $result->fetch(PDO::FETCH_ASSOC);
|
|
if(empty($data[8])){
|
|
$data[8] = 60;
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
|
|
function fetchDoctorHolidays($pdo, $doctor)
|
|
{
|
|
$query = "SELECT * FROM festivo WHERE medico IS NULL OR medico=?";
|
|
$result = $pdo->prepare($query);
|
|
$result->execute([$doctor]);
|
|
$data = $result->fetchAll(PDO::FETCH_ASSOC);
|
|
return $data;
|
|
}
|
|
|
|
|
|
function createAppointment($pdo, $data){
|
|
$query = "INSERT INTO cita (fecha, hora, duracion, medico, observaciones, paciente) VALUES (?,?,?,?,?,?)";
|
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["duracion"],
|
|
$data["medico"], $data["observaciones"], $data["paciente"]]);
|
|
return "Cita creada con éxito";
|
|
}
|