Buenas, estoy implementando un sistema de turnos con PHP y MySQL.
No sé como resolver lo siguiente y apelo a vuestra experiencia para que me ayuden.
La situación que tengo que resolver es la siguiente :
- Los médicos atienden, cada uno, en dos turnos diarios ( mañana y tarde ). Y cada médico tiene una frecuencia de turnos diferente ( 10, 15, 20, 25, 30 minutos ).
Eso se guarda en una base de datos así :
- TABLA: profesionales
| profesional_id | nombre | apellido | frecuencia_turnos |
- TABLA: horarios_profesionales_mañana
| profesional_id | hora_inicio | hora_fin |
- TABLA: horarios_profesionales_tarde
| profesional_id | hora_inicio | hora_fin |
- TABLA: turnos
|turno_id | fecha | nombre_dia | hora | profesional_id | paciente_id | observaciones
- Luego, en base a esa información se debe armar una página php/html con una tabla en donde los administrativos dan turnos para los médicos. A saber:
1) Primero, elijen de un select armado de la db al profesional.
2) Se muestran los horarios libres y ocupados para el profesional elegido para la semana actual. Pero también debe funcionar para la semana próxima o para cualquier fecha N.
La tabla que se le muestra al administrativo debe ser, masomenos así:
Hora | Lunes 25-06-2012 | Martes 26-06-2012 | Miercoles 27-06-2012 | Jueves 28-06-2012 | Viernes 29-06-2012 |
8:00 | disponible | disponible | Turno dado. | disponible | Turno dado. |
Obviamente que esta información sale de la base de datos. Pero no sé como implementarlo.
Primero tengo que fijarme los turnos ocupados para la semana actual. Eso quiere decir que tengo que fijarme para cada día todos los horarios en sus dos turnos. Eso para los 5 dias de la semana.
Tengo que comparar los turnos dados con los turnos posibles. A su vez, debo conocer para cada fecha ( por ej 20-06-2012 ) el día de la semana que es, para ver los horarios en los que atiende.
Empecé a trabajarlo armando dos arrays, uno con turnos ocupados y otro con turnos disponibles. Y los comparaba. Usaba un formato tipo : 2012-06-15Viernes1530.
Entonces, si ya tenia un turno asignado el Viernes 16-06-2012 a las 15.30, lo ponia en el array de turnos asignados.
Ahi ya conocia los turnos ocupados. Luego podria compararlo con in_array de PHP con el otro array.
De todas maneras no tengo muy en claro cómo armar el array con los turnos disponibles. Yo conozco los datos de inicio y fin de atención para cada día.
Pero se me complica para armar el for con que va haciendo la tabla, por que si la tabla tiene el formato mecionado, tendria que ir iterando para una columna ( día lunes ) todos los horarios, luego otro for para el martes y así, dentro del for principal de la tabla.
En fin, me gustaría que me ayuden a ver cómo lo resolverian ustedes. Si lo harian comparando dos arrays, o lo resolverian todo directamente desde MySQL con consultas.
SIéntanse totalmente libres de sugerir otras opciones.
La verdad estoy bastante ofuscado con esto.
Cualquier ayuda es muy bienvenida.
Saludos.
Juan.