El Profe Arci – Mtro. Fernando Arciniega –

Sistema de gestión de citas médicas con PHP y MySQL usando Bootstrap

Publicado el 31 octubre, 2024
por Mtro. Fernando Omar Arciniega Martínez

Sistema de gestión de citas médicas con PHP y MySQL usando Bootstrap

Este sistema de gestión de citas médicas permite a los usuarios administrar pacientes y citas de manera sencilla y eficiente. Es un proyecto de aplicación web con una interfaz profesional y responsive, que emplea principalmente PHP y MySQL para la funcionalidad del backend y Bootstrap para el diseño frontend. La interfaz es fácil de usar e intuitiva, facilitando la gestión de citas médicas y el manejo de información de los pacientes.

Funcionalidades principales

  • Inicio de sesión: Permite a los usuarios autorizados acceder al sistema.
  • Menú principal: Ofrece una interfaz clara con botones de acceso directo a la gestión de pacientes y citas.
  • Gestión de Pacientes: Opciones para agregar, ver, editar y eliminar información de los pacientes.
  • Gestión de Citas: Permite agendar citas para los pacientes registrados, incluyendo fecha, hora y notas adicionales. También es posible modificar o eliminar las citas.

Tecnologías utilizadas

  1. PHP: Lenguaje de programación del lado del servidor, utilizado para manejar la lógica de backend, las consultas a la base de datos y la autenticación de usuarios.
  2. MySQL: Base de datos relacional para almacenar la información de usuarios, pacientes y citas.
  3. Bootstrap: Framework de CSS para construir una interfaz de usuario responsive y atractiva, con componentes preconstruidos como botones y formularios.
  4. Font Awesome: Biblioteca de íconos que se usa para agregar íconos en los botones y en el menú, mejorando la experiencia visual.

Estructura de archivos del sistema

1. Conexión a la base de datos (db.php)

Conecta la aplicación a la base de datos MySQL y maneja errores en la conexión.

<?php
$host = 'localhost';
$user = 'arci';
$password = '123';
$db = 'citas_medicas';

$conexion = mysqli_connect($host, $user, $password, $db);

if (!$conexion) {
    die("Error en la conexión: " . mysqli_connect_error());
}
?>

2. Página de inicio de sesión (index.php)

Permite el acceso al sistema tras verificar el usuario y la contraseña almacenados en la tabla usuarios.

<?php
session_start();
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $usuario = $_POST['usuario'];
    $password = $_POST['password'];

    $query = "SELECT * FROM usuarios WHERE usuario = '$usuario' AND password = '$password'";
    $result = mysqli_query($conexion, $query);

    if (mysqli_num_rows($result) == 1) {
        $_SESSION['logueado'] = true;
        header("Location: menu.php");
        exit();
    } else {
        $error = "Usuario o contraseña incorrectos";
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Inicio de sesión</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet">
</head>
<body>
    <div class="container mt-5">
        <h2 class="text-center"><i class="fas fa-sign-in-alt"></i> Inicio de sesión</h2>
        <?php if (isset($error)): ?>
            <div class="alert alert-danger"><?= $error ?></div>
        <?php endif; ?>
        <form method="post" class="mt-3">
            <div class="form-group">
                <label><i class="fas fa-user"></i> Usuario</label>
                <input type="text" name="usuario" class="form-control" required>
            </div>
            <div class="form-group">
                <label><i class="fas fa-lock"></i> Contraseña</label>
                <input type="password" name="password" class="form-control" required>
            </div>
            <button type="submit" class="btn btn-primary btn-block"><i class="fas fa-sign-in-alt"></i> Iniciar sesión</button>
        </form>
    </div>
</body>
</html>

3. Menú principal (menu.php)

Página principal del sistema tras el inicio de sesión, con botones de acceso a pacientes y citas.

<?php
session_start();
if (!isset($_SESSION['logueado'])) {
    header("Location: index.php");
    exit();
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Menú principal</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet">
</head>
<body>
    <nav class="navbar navbar-expand navbar-dark bg-dark">
        <a class="navbar-brand" href="#"><i class="fas fa-clinic-medical"></i> Citas Médicas</a>
        <ul class="navbar-nav">
            <li class="nav-item"><a class="nav-link" href="menu.php"><i class="fas fa-home"></i> Inicio</a></li>
            <li class="nav-item"><a class="nav-link" href="pacientes.php"><i class="fas fa-user"></i> Pacientes</a></li>
            <li class="nav-item"><a class="nav-link" href="citas.php"><i class="fas fa-calendar-alt"></i> Citas</a></li>
            <li class="nav-item"><a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i> Cerrar sesión</a></li>
        </ul>
    </nav>
    <div class="container mt-5 text-center">
        <h3>Bienvenido al sistema de gestión de citas médicas</h3>
        <div class="d-flex justify-content-center">
            <a href="pacientes.php" class="btn btn-primary btn-lg rounded-circle d-flex flex-column align-items-center justify-content-center mx-3" style="width: 200px; height: 200px; text-decoration: none;">
                <i class="fas fa-user fa-3x"></i><span class="mt-2">Pacientes</span>
            </a>
            <a href="citas.php" class="btn btn-success btn-lg rounded-circle d-flex flex-column align-items-center justify-content-center mx-3" style="width: 200px; height: 200px; text-decoration: none;">
                <i class="fas fa-calendar-alt fa-3x"></i><span class="mt-2">Citas</span>
            </a>
        </div>
    </div>
</body>
</html>

4. Página de gestión de pacientes (pacientes.php)

Permite agregar, ver, editar y eliminar información de los pacientes.

// Código completo de pacientes.php se muestra en las respuestas anteriores.

5. Página de gestión de citas (citas.php)

Permite agregar, ver, editar y eliminar citas para los pacientes registrados.

// Código completo de citas.php se muestra en las respuestas anteriores.

6. Edición de pacientes (editar_paciente.php) y citas (editar_cita.php)

Permite editar la información de un paciente o cita específica.

// Código completo de editar_paciente.php y editar_cita.php se muestra en las respuestas anteriores.

Código de la base de datos en MySQL

Ejecuta el siguiente código en MySQL para crear la base de datos citas_medicas y las tablas necesarias.

CREATE DATABASE citas_medicas;
USE citas_medicas;

CREATE TABLE usuarios (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    usuario VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL
);

CREATE TABLE pacientes (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL,
    telefono VARCHAR(20) NOT NULL
);

CREATE TABLE citas (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    paciente_id INT(11) NOT NULL,
    fecha DATE NOT NULL,
    hora TIME NOT NULL,
    nota VARCHAR(255),
    FOREIGN KEY (paciente_id) REFERENCES pacientes(id) ON DELETE CASCADE
);

Este sistema es ideal para proyectos básicos de administración de citas en clínicas o consultorios médicos pequeños, ofreciendo funcionalidades fundamentales y escalabilidad.

2 respuestas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *