En la situación actual de pandemia mundial, casi todas las empresas y servicios públicos han tenido que recurrir a una gestión de citas para mantener la distancia social entre las personas.
Este ejemplo es un posible sistema de gestión de Cita Previa o al menos, así lo he querido identificar yo.
El ejemplo más sencillo es pensar en las necesidades de los servicios médicos, aunque he intentado que pudiera ser válido para cualquier otra necesidad.
Requisitos funcionales
Cuando he estado pensando qué es lo que una empresa requiere para esta gestión, he definido:
- He creado un “Objeto de negocio”, que le he llamado “Reserva”, que es la unidad a la que vamos a asociar los huecos de la gestión de citas. Este “Objeto”, puede ser un Médico, un Servicio Médico, una Unidad de Registro, un Agente bancario, etc., cualquier Objeto que requiera una lista de personas a las que atender.
- Estas “Reservas” estarán asociadas a 2 niveles de agrupación. En el sistema he asociado “Compañía” y “Departamento”, pero podría ser cualquier otra estructura.
- El registro de “Reserva” tiene que tener los datos que se requieran para establecer los huecos del calendario de la Cita Previa.
- El análisis de huecos disponibles debe ser muy fácil de identificar y gestionar, con posibilidad de que se pueda facilitar en un sistema de autogestión (que el usuario solicite la fecha y hora de cita). Se debe ofrecer la posibilidad de solicitar fecha de cita para cualquier día y hora de las disponibles.
- También, el sistema debe ofrecer listas o conteos, de os huecos o citas que se han cerrado a la fecha que se requiera.
Solución
DEMO : http://fhumanes.com/citations
Usuario y password: admin/admin
El ejemplo funciona para los idiomas inglés y español.
Una vez que nos hayamos identificado aparecerá el menú con todas las opciones.
Las principales opciones son las que están en el grupo “Citations” y desde cualquiera de ellas se podrá ir a la gestión de reserva de la Cita y del listado de las citas acordadas.
Las “Reservas” requieren un nombre corto o clave, un color para su identificación, su nombre y unos datos que se requieren para la planificación de las agendas:
- Fecha inicial o alta del recurso. Antes de esta fecha no se puede agendar nada.
- Fecha final. Después de esta fecha no se puede agendar nada.
- Hora de comienzo de la agenda. Este y los 2 siguientes datos fijan horario de agenda.
- Hora de final de la agenda.
- Tiempo que durará los huecos de la agenda.
Los registros de “Planificación” definen los rangos de fecha que se establecen para crear la agenda. Para cada “Reserva”, se debe establecer una fecha de inicio y fecha final. Hay controles para que no haya solapamientos de fechas y para que estás no excedan de la fecha de la “Reserva”.
Mientras no está activa, se podrá modificar e incluso borrar, pero una vez que esté activa (y se haya creado la agenda) ya no deja modificar ni borrar la Planificación.
La agenda o hueco de cita, tiene datos básicos y quedará por completar 3 campos:
- Nombre .-Datos de la persona que ha suscrito la cita.
- Descripción.- Cualquier otro dato que se aporte a la cita.
- Ocupado?.- Cuando el hueco de la agenda ha sido ocupado (de forma automática) se pone a 1.
En las tablas de “Compañías”, “Departamentos” y “Reservas”, todas ellas disponen de un botón “Calendario”, que nos lleva a la presentación de la agenda con los huecos disponibles. Las citas disponibles serán de las “Reservas” de acuerdo a donde hayamos pulsado el botón. Nos pueden interesar las citas disponibles de un médico, de un servicio, de un departamento o de un hospital.
Nos vamos a poder desplazar por un calendario en donde nos va a facilitar información de las citas que están libres. Muestra las 3 primeras disponibles y el número total de las que no puede mostrar. Pulsando en el enlace de las otras nos aparece una lista de todas las citas disponibles para ese día.
Sólo requiere hacer clic sobre una de ella, para iniciar la solicitud de esa cita.
En la ventana “popup” que nos aparece cuando se selecciona una cita, aparecen los datos básicos de la agenda y la fecha y hora de la cita, permitiendo que introduzcamos el nombre de la persona de la cita y un campo de descripción que puede cumplimentarse con el objeto de la cita.
Al igual que hemos podido ver las agendas disponibles por “Compañía”, “Departamento” y “Reserva”, se puede obtener la relación de citas agendadas, para si se requiere, obtener un listado de las mismas.
Solución Técnica
He utilizado 2 plugines que podéis descargar de mi portal (Color y Toogle).
Para la presentación del calendario he utilizado la librería de JavaScript FullCalendar https://fullcalendar.io/. Una buenísima librería para todo lo que tenga que ver con calendarios y planificaciones.
Explico brevemente algunos códigos, para que veáis la simplicidad del ejemplo.
control_plannig.php – Controles de fechas para validar la planificación
create_planning.php – Crear las agendas desde los datos de planificación y reservas.
calendar.php – Para mostrar la rejilla del calendario
calendar_ajax_own.php – Para cargar dinámicamente las citas disponibles.
Como siempre, podréis contactar conmigo, para cualquier necesidad en [email protected]
También, como es habitual, os dejo todos los ficheros que necesitáis para que instaléis el ejemplo en vuestros equipos.