87 Formulario para Registrar Citas Medicas del Sistema con LARAVEL(PHP-MySql) FullStack

Duración: 18 min
Módulo: 🗓️ Reserva de Citas y FullCalendar Lección 2 de 14

Descripción

🏥📝 Lección 87: Formulario y Relaciones para el Registro de Citas Médicas

Esta lección se enfoca en establecer las relaciones del Modelo Evento y en diseñar el formulario modal que el usuario utilizará para registrar una nueva cita médica dentro de su dashboard.

1. 🔗 Definición de Relaciones en el Modelo Event

Se establecen las relaciones uno a muchos (hasMany) y pertenece a (belongsTo) entre el modelo Event y otros modelos clave del sistema, como User, Doctor, y Consultorio [00:49]:

  • En el Modelo Event (Un evento pertenece a...):

    • Usuario: Un evento (Event) pertenece a un solo Usuario (User) que realiza la reserva.
    • Doctor: Un evento pertenece a un solo Doctor (Doctor) que atenderá la cita.
    • Consultorio: Un evento pertenece a un solo Consultorio (Consultorio).
  • En otros Modelos (Un... puede tener muchos eventos):

    • Se añade la relación hasMany(Event::class) a los modelos User, Doctor, y Consultorio, indicando que cada uno puede estar asociado a múltiples eventos de reserva [03:26].

2. 📝 Diseño del Formulario de Reserva (Modal)

Para una mejor experiencia de usuario, el formulario de registro de citas se implementa dentro de una ventana modal que se abre al hacer clic en el botón "Registrar Cita Médica" [07:43]:

  • Inicialización

    • Se crea un botón que activa el modal de Bootstrap 4.6, titulado "Reserva de Cita Médica" [08:04].
    • Los botones de acción del modal son "Cancelar" y "Registrar" [11:26].
  • Campos del Formulario (Inputs)

    El formulario se diseña para capturar los datos necesarios para crear un nuevo evento en la base de datos:

    • Selección de Doctor: Se crea un select que lista a todos los doctores disponibles, mostrando su nombre completo y especialidad (concatenando los campos nombres, apellidos, y especialidad del modelo Doctor) [12:08].
      • Nota: Para listar los doctores, se consulta el modelo Doctor en el controlador AdminController y se pasa la variable $doctores a la vista [10:27].
    • Fecha de Reserva: Un campo de tipo date para que el usuario seleccione el día de la cita [15:20].
    • Hora de Reserva: Un campo de tipo time para que el usuario especifique la hora de inicio deseada para la cita [16:53].
  • Lógica de Validación (Futura)

    Se explica que la lógica de reserva de cita se basará en la selección de la fecha y hora. El sistema asumirá que cada cita dura una hora (ej. si se reserva a las 10:00, el final es a las 11:00) y que el controlador deberá validar que el doctor seleccionado esté atendiendo en ese día y hora (comparando con el calendario del consultorio) y que no exista otra reserva en ese mismo slot de tiempo [17:10].

3. ➡️ Próximo Paso

El siguiente paso es trabajar en el controlador (EventController) para implementar la lógica que procesará los datos del formulario: validar la disponibilidad y registrar la cita en la base de datos, además de preparar la función que traerá los eventos ya registrados para visualizarlos en FullCalendar [17:40].