Mostrar Turnos de profesionales programadas

Estoy diseñando un software para un hospital, por un lado en la base de datos esta su correspondiente carga, relacionada con una especialidad, y con una tabla agenda, que esta tabla tiene los campos, id_agenda, id_profesional, fecha_ini, fecha_fin, hora_ini, hora_fin, día, intervalo.

Que es lo que debe almacenar la tabla esta:

Que el medico con un POR Id, atiende los días Lunes de 14:00 Hs a 16:00 Hs desde la fecha 01/01/20019 hasta el 30/01/2019, entonces de esa forma en pantalla, en código HTML me va a mostrar todos los turnos disponibles que hay para dar de este medico.

Por otro lado va haber una tabla llamada CITA que va a contener un ID_cita, un ID_medico un ID_paciente, dia_tuno, hora_turno, detalle_turno (esta se relación con otra tabla que almacena los código correspondiente a esa atención-

Ahora el problema lo tengo en como hago para mostrar todos los días, ¿y dentro de ese día todos los horarios disponibles de un profesional? Que a su vez va a tener que verificar con la tabla CITA que si alguno esta ocupado ya lo muestre como NO DISPONIBLE.

Lo que logre hacer hasta ahora manipulando 5 variables, en código PHP sin conectarlo a la base de datos, es mostrar una tabla con turnos de 01/01/2019 hasta 30/01/2019 correspondiente a los días lunes del horario de 8:00 a 10:00 con intervalo de 15 minutos. Hasta ahora perfecto, luego deberé verificar cuales de los que muestra estén ocupado o no. Peor ahora el problema es que al conectarlo a la BD, tengo en la tabla agenda varias filas de las cuales puedo mostrar turnos para generar la grilla y ahí tengo el problema como poder realizar esto.

Respuesta

Lo que buscas es mostrar los espacios dentro de la agenda de cada profesional donde no hay citas.

Si un profesional atiende los Lunes entre el 01-01-2019 y el 10-12-2019, de 10:00 a 16:00 y cada cita dura 30 minutos.

Con esta información puedes generar todas las potenciales citas.

Lo que te queda es consultar a la base de datos cuáles de estas están efectivamente reservadas y quitarlas de las opciones a ofrecer...

Sería algo así como armar un SQL:

SELECT ID_cita,  dia_tuno, hora_turno
FROM CITA
WHERE (dia_turno = ? and hora_turno = ? AND ID_medico = ?) OR...

Y repetir el OR para todos los turnos que haz generado.

Al final, recorres el resultado y simplemente quitas de tu opción los turnos que aparezcan allí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas