Implement CRUD operations for patients

This commit is contained in:
coolneng 2020-06-17 08:42:53 +02:00
parent da6c518d59
commit fb430dd8cc
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
6 changed files with 286 additions and 12 deletions

View File

@ -9,10 +9,11 @@ GRANT ALL PRIVILEGES ON practica.* TO practica@localhost;
USE practica; USE practica;
CREATE TABLE IF NOT EXISTS paciente ( CREATE TABLE IF NOT EXISTS paciente (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL, nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL, apellido VARCHAR(50) NOT NULL,
fecha_de_nacimiento DATE NOT NULL, fecha_de_nacimiento DATE NOT NULL,
documento_identificativo VARCHAR(50) PRIMARY KEY, documento_identificativo VARCHAR(50) UNIQUE NOT NULL,
tipo_documento VARCHAR(10) NOT NULL, tipo_documento VARCHAR(10) NOT NULL,
direccion VARCHAR(255) NOT NULL, direccion VARCHAR(255) NOT NULL,
localidad VARCHAR(100) NOT NULL, localidad VARCHAR(100) NOT NULL,
@ -51,7 +52,7 @@ CREATE TABLE IF NOT EXISTS festivo (
); );
CREATE TABLE IF NOT EXISTS calendario ( CREATE TABLE IF NOT EXISTS calendario (
id INT NOT NULL AUTO_INCREMENT, id INT AUTO_INCREMENT,
hora_inicio_mañana TIME, hora_inicio_mañana TIME,
hora_fin_mañana TIME, hora_fin_mañana TIME,
hora_inicio_tarde TIME, hora_inicio_tarde TIME,
@ -67,22 +68,22 @@ CREATE TABLE IF NOT EXISTS calendario (
); );
CREATE TABLE IF NOT EXISTS cita( CREATE TABLE IF NOT EXISTS cita(
id INT NOT NULL AUTO_INCREMENT, id INT AUTO_INCREMENT,
fecha DATE NOT NULL, fecha DATE NOT NULL,
hora TIME NOT NULL, hora TIME NOT NULL,
duracion INT, duracion INT,
medico VARCHAR(50) NOT NULL, medico VARCHAR(50) NOT NULL,
observaciones VARCHAR(255), observaciones VARCHAR(255),
paciente VARCHAR(50), paciente INT,
PRIMARY KEY (id, medico), PRIMARY KEY (id, medico),
FOREIGN KEY (medico) FOREIGN KEY (medico)
REFERENCES usuario(usuario), REFERENCES usuario(usuario),
FOREIGN KEY (paciente) FOREIGN KEY (paciente)
REFERENCES paciente(documento_identificativo) REFERENCES paciente(id)
); );
CREATE TABLE IF NOT EXISTS informe( CREATE TABLE IF NOT EXISTS informe(
id INT NOT NULL AUTO_INCREMENT, id INT AUTO_INCREMENT,
fecha DATE NOT NULL, fecha DATE NOT NULL,
hora TIME NOT NULL, hora TIME NOT NULL,
paciente VARCHAR(50) NOT NULL, paciente VARCHAR(50) NOT NULL,

View File

@ -30,17 +30,22 @@ function createPatient($pdo, $data) {
return "Paciente creado con éxito"; return "Paciente creado con éxito";
} }
function editPatient($pdo, string $attr, string $param, string $id) { function editPatient($pdo, $data, $id) {
$query = "UPDATE paciente SET ? = ? WHERE documento_identificativo = ?"; $query = "UPDATE paciente SET nombre=?, apellido=?, fecha_de_nacimiento=?, documento_identificativo=?,
$pdo->prepare($query)->execute([$attr, $param, $id]); 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"; return "Paciente modificado con éxito";
} }
function deletePatient($pdo, string $id) { function deletePatient($pdo, string $id) {
$check = "SELECT * FROM informes where paciente = ?"; $check = "SELECT * FROM informes where paciente = ?";
$result = $pdo->prepare($check)->execute([$id]); $result = $pdo->prepare($check);
$result->execute([$id]);
if($result->columnCount() == 0){ if($result->columnCount() == 0){
$statement = "DELETE FROM paciente where document_identificado = ?"; $statement = "DELETE FROM paciente where id=?";
$pdo->prepare($statement)->execute([$id]); $pdo->prepare($statement)->execute([$id]);
return "El paciente se ha eliminado correctamente"; return "El paciente se ha eliminado correctamente";
} }
@ -75,7 +80,6 @@ function editUser($pdo, $data, $id) {
$query = "UPDATE usuario SET nombre=?, usuario=?, contraseña=?, rol=?, correo=? WHERE id=?"; $query = "UPDATE usuario SET nombre=?, usuario=?, contraseña=?, rol=?, correo=? WHERE id=?";
$result = $pdo->prepare($query); $result = $pdo->prepare($query);
$result->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"], $id]); $result->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"], $id]);
$result->debugDumpParams;
return "Usuario modificado con éxito"; return "Usuario modificado con éxito";
} }
@ -115,4 +119,27 @@ function findUser($pdo, $input) {
return $data; return $data;
} }
function listPatients($pdo) {
$query = "SELECT * from paciente";
$result = $pdo->query($query)->fetchAll();
return $result;
}
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;
}
?> ?>

View File

@ -0,0 +1,54 @@
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Gestión de pacientes</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../../static/style.css" type="text/css" media="screen" />
</head>
<body>
<form method="post" action="../patient_management.php">
<div class="input-group">
<label>Nombre</label>
<input type="text" name="nombre" value="">
</div>
<div class="input-group">
<label>Apellido</label>
<input type="text" name="apellido" value="">
</div>
<div class="input-group">
<label>fecha_de_nacimiento</label>
<input type="date" name="fecha_de_nacimiento" value="">
</div>
<div class="input-group">
<label>documento_identificativo</label>
<input type="text" name="documento_identificativo" value="">
</div>
<div class="select-input">
<label>tipo_documento</label>
<select id="tipo_documento" name="tipo_documento">
<option value="DNI">DNI</option>
<option value="NIE">NIE</option>
</select>
</div>
<div class="input-group">
<label>direccion</label>
<input type="text" name="direccion" value="">
</div>
<div class="input-group">
<label>localidad</label>
<input type="text" name="localidad" value="">
</div>
<div class="input-group">
<label>provincia</label>
<input type="text" name="provincia" value="">
</div>
<div class="input-group">
<label>pais</label>
<input type="text" name="pais" value="">
</div>
<div class="input-group">
<button class="btn" type="submit" name="create" >Guardar</button>
</div>
</form>
</body>

View File

@ -0,0 +1,62 @@
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Gestión de pacientes</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../../static/style.css" type="text/css" media="screen" />
</head>
<body>
<?php
include '../database.php';
$pdo = connectDatabase();
$data = fetchPatientData($pdo, $_GET["edit"]);
?>
<form method="post" action="../patient_management.php">
<div class="input-group">
<label>Nombre</label>
<input type="text" name="nombre" value="<?php echo $data[1]; ?>">
</div>
<div class="input-group">
<label>Apellido</label>
<input type="text" name="apellido" value="<?php echo $data[2]; ?>">
</div>
<div class="input-group">
<label>fecha_de_nacimiento</label>
<input type="password" name="fecha_de_nacimiento" value="<?php echo $data[3]; ?>">
</div>
<div class="input-group">
<label>documento_identificativo</label>
<input type="text" name="documento_identificativo" value="<?php echo $data[4]; ?>">
</div>
<div class="select-input">
<label>tipo_documento</label>
<select id="tipo_documento" name="tipo_documento">
<option value="DNI">DNI</option>
<option value="NIE">NIE</option>
</select>
</div>
<div class="input-group">
<label>direccion</label>
<input type="text" name="direccion" value="<?php echo $data[6]; ?>">
</div>
<div class="input-group">
<label>localidad</label>
<input type="text" name="localidad" value="<?php echo $data[7]; ?>">
</div>
<div class="input-group">
<label>provincia</label>
<input type="text" name="provincia" value="<?php echo $data[8]; ?>">
</div>
<div class="input-group">
<label>pais</label>
<input type="text" name="pais" value="<?php echo $data[9]; ?>">
</div>
<div class="input-group">
<button class="btn" type="submit" name="edit" >Editar</button>
</div>
<input type="hidden" name="id" value="<?php echo $_GET["edit"]; ?>">
</form>
<?php closeDatabase($pdo); ?>
</body>

77
src/patient.php Normal file
View File

@ -0,0 +1,77 @@
<!doctype html>
<html class="no-js" lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Gestión de usuarios</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../static/style.css" type="text/css" media="screen" />
</head>
<body>
<div style="text-align: right; margin-top: 20px;">
<a href="forms/patient_create_form.html" class="create_btn" >Crear</a>
</div>
<table>
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Fecha de nacimiento</th>
<th>Documento identificativo</th>
<th>Tipo de documento</th>
<th>Dirección</th>
<th>Localidad</th>
<th>Provincia</th>
<th>Pais</th>
<th colspan="2">Acciones</th>
</tr>
</thead>
<?php
include 'database.php';
$pdo = connectDatabase();
if (isset($_GET["search"])) {
$list = findPatient($pdo, $_GET["search"]);
} else {
$list = listPatients($pdo);
}
foreach($list as $row) :
?>
<tr>
<td><?php echo $row[1]; ?></td>
<td><?php echo $row[2]; ?></td>
<td><?php echo $row[3]; ?></td>
<td><?php echo $row[4]; ?></td>
<td><?php echo $row[5]; ?></td>
<td><?php echo $row[6]; ?></td>
<td><?php echo $row[7]; ?></td>
<td><?php echo $row[8]; ?></td>
<td><?php echo $row[9]; ?></td>
<td>
<a href="forms/patient_edit_form.php?edit=<?php echo $row[0]; ?>" class="edit_btn">Editar</a>
</td>
<td>
<a href="patient_management.php?delete=<?php echo $row[0]; ?>" class="del_btn">Borrar</a>
</td>
</tr>
<?php endforeach ?>
<?php closeDatabase($pdo); ?>
</table>
<div>
<form method="post" action="patient_management.php">
<div class="search-group">
<input type="text" name="search_box" value="">
</div>
<div class="input-group">
<button class="btn" type="submit" name="search" >Buscar</button>
</div>
</form>
</div>
<div style="text-align: right; margin-top: 20px;">
<a href="patient.php" class="back_btn">Atrás</a>
</div>
</body>
</html>

View File

@ -0,0 +1,53 @@
<?php
include'database.php';
function patientCreation(){
$data = $_POST;
$pdo = connectDatabase();
createPatient($pdo, $data);
closeDatabase($pdo);
header('location: patient.php');
}
function patientModification(){
$data = $_POST;
$id = $_POST["id"];
$pdo = connectDatabase();
editPatient($pdo, $data, $id);
closeDatabase($pdo);
header('location: patient.php');
}
function patientDeletion(){
$id = $_GET["delete"];
$pdo = connectDatabase();
deletePatient($pdo, $id);
closeDatabase($pdo);
header('location: patient.php');
}
function patientFind(){
$data = $_POST;
$pdo = connectDatabase();
findPatient($pdo, $data);
closeDatabase($pdo);
$search = $data["search_box"];
header("location: patient.php?search=$search");
}
if (isset($_POST["create"])) {
patientCreation();
}
if (isset($_POST["edit"])) {
patientModification();
}
if (isset($_GET["delete"])) {
patientDeletion();
}
if (isset($_POST["search"])) {
patientFind();
}