%208.26.11%E2%80%AFp.m..png)
Introducción
La gestión de citas médicas es un aspecto fundamental en el funcionamiento de los consultorios. Este proyecto desarrolla un Sistema de Gestión de Reservas para Consultorios Médicos, utilizando Python con Flask, permitiendo a los usuarios registrar, consultar y eliminar citas médicas de manera eficiente.
Este sistema almacena las reservas en un archivo de texto (reservas.txt
), evitando la complejidad de una base de datos, lo que lo hace ligero y fácil de mantener.
Tecnologías Utilizadas
Para el desarrollo del sistema, se han utilizado las siguientes tecnologías:
Python 3: Lenguaje de programación principal.
Flask: Framework para el desarrollo web en Python.
HTML + CSS: Para la interfaz de usuario.
Bootstrap (opcional): Para mejorar la apariencia del diseño.
Archivos de texto (
.txt
): Para el almacenamiento de reservas.
Características del Sistema
✅ Registro de citas médicas con datos de paciente, médico, fecha, hora y motivo.
✅ Listado de todas las citas registradas.
✅ Eliminación de una cita específica.
✅ Interfaz web amigable y responsive.
✅ Almacenamiento de datos en un archivo reservas.txt
.
Estructura del Proyecto
📂 Ubicación del Proyecto: Documentos/python/ReservasConsultorio
ReservasConsultorio/
│── app.py # Archivo principal de la aplicación Flask
│── templates/
│ ├── index.html # Página de inicio con formulario de reserva
│ ├── reservas.html # Página que muestra la lista de reservas
│── static/
│ ├── styles.css # Archivo CSS para mejorar la UI
│── reservas.txt # Archivo donde se almacenan las reservas
Código Fuente
📌 Archivo Principal: app.py
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
RUTA_ARCHIVO = "reservas.txt"
def leer_reservas():
reservas = []
try:
with open(RUTA_ARCHIVO, "r") as file:
for linea in file:
datos = linea.strip().split("|")
if len(datos) == 5:
reservas.append({
"paciente": datos[0],
"medico": datos[1],
"fecha": datos[2],
"hora": datos[3],
"motivo": datos[4]
})
except FileNotFoundError:
pass
return reservas
def guardar_reserva(paciente, medico, fecha, hora, motivo):
with open(RUTA_ARCHIVO, "a") as file:
file.write(f"{paciente}|{medico}|{fecha}|{hora}|{motivo}\n")
def eliminar_reserva(paciente, fecha, hora):
reservas = leer_reservas()
nuevas_reservas = [r for r in reservas if not (r["paciente"] == paciente and r["fecha"] == fecha and r["hora"] == hora)]
with open(RUTA_ARCHIVO, "w") as file:
for r in nuevas_reservas:
file.write(f"{r['paciente']}|{r['medico']}|{r['fecha']}|{r['hora']}|{r['motivo']}\n")
@app.route("/")
def index():
return render_template("index.html")
@app.route("/reservas")
def mostrar_reservas():
reservas = leer_reservas()
return render_template("reservas.html", reservas=reservas)
@app.route("/agregar_reserva", methods=["POST"])
def agregar_reserva():
paciente = request.form["paciente"]
medico = request.form["medico"]
fecha = request.form["fecha"]
hora = request.form["hora"]
motivo = request.form["motivo"]
guardar_reserva(paciente, medico, fecha, hora, motivo)
return redirect(url_for("mostrar_reservas"))
@app.route("/eliminar_reserva", methods=["POST"])
def eliminar():
paciente = request.form["paciente"]
fecha = request.form["fecha"]
hora = request.form["hora"]
eliminar_reserva(paciente, fecha, hora)
return redirect(url_for("mostrar_reservas"))
if __name__ == "__main__":
app.run(debug=True)
📌 Página de Inicio: templates/index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Reservas de Consultorio</title>
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
<div class="container">
<h1>Reservar una Cita Médica</h1>
<form action="/agregar_reserva" method="POST">
<label>Paciente:</label>
<input type="text" name="paciente" required>
<label>Médico:</label>
<input type="text" name="medico" required>
<label>Fecha:</label>
<input type="date" name="fecha" required>
<label>Hora:</label>
<input type="time" name="hora" required>
<label>Motivo:</label>
<input type="text" name="motivo" required>
<button type="submit">Reservar</button>
</form>
<a href="/reservas">Ver todas las reservas</a>
</div>
</body>
</html>
📌 Estilos CSS: static/styles.css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
padding: 20px;
}
.container {
width: 100%;
max-width: 800px;
background: #ffffff;
padding: 25px;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
text-align: center;
}
h1 {
font-size: 24px;
color: #333;
margin-bottom: 15px;
}
No hay comentarios