“Proyecto para el curso de Diseño y

   Programación Orientada a Objetos”

 

“Automatizador de Roles de Turno”

 

 

Descripción del Problema:

        

El problema a solucionar se presento en la Clínica Geriátrica CAPREDENA ubicada en la ciudad de Limache, esta clínica cuenta actualmente con 85 pacientes geriátricos distribuidos, por condición de salud  y sexo, en 3 módulos; para un correcto funcionamiento de la clínica, cada módulo debe contar con 5 Auxiliares de Enfermería, dedicadas a atención de los pacientes, suministro de medicamentos orales e intramusculares entre otras funciones; 2 Empleados de servicio, encargados del aseo de cada modulo; y de 1 Enfermera, quien supervisa a Auxiliares, Empleados de servicio y cuidadoras de enfermos, además de ser la responsable del modulo ante cualquier problema que este presente.

 

Para que en cada momento se cumplan estos requerimientos en la clínica, la Enfermera Jefe debe realizar la distribución de los turnos para cada persona en cada modulo, proceso muy tedioso, lento y que consume mucho tiempo que podría aprovecharse en otras labores, para esto se nos pidió un programa computacional que resolviera este problema, realizando automáticamente la distribución de turnos y entregando como resultado un archivo con la distribución realizada.

 

Documentación:

 

         Como solución al problema anteriormente explicado, se creo un programa utilizando C++, orientado a objetos.

 

Este programa ocupa una amplia variedad de recursos entregados por C++ como vectores, clases contenedoras, etc que hicieron mas fácil la resolución del problema, el programa (disponible aquí) tiene el siguiente esquema para distribuir turnos: en el directorio donde se encuentra el ejecutable del programa, deben estar además 2 archivos de texto; uno llamado “calendario.txt”, que contiene datos necesarios para el programa como numero de días de cada mes, día de inicio de cada mes y día de termino de cada mes, desde mayo del 2003 y hasta diciembre del 2010, usando este archivo, y suponiendo que este programa se usara en fechas posteriores a diciembre del 2010, se hace muy fácil el agregar más meses y años al final del archivo, y uno llamado “Empleados.txt”, que contiene los nombres de todas las Auxiliares de Enfermería, Empleados de Servicio y Enfermeras que  actualmente trabajan en la clínica, de esta manera, se puede ir actualizando este archivo para poder hacer algún cambio si se requiere; el programa lee el archivo empleados y guarda los nombres de las Auxiliares en un vector llamado Auxiliares, los nombres de los Empleados de Servicio en un vector Empleados de Servicio y los nombres de las Enfermeras en un vector Enfermeras, luego, hace lo mismo con el archivo calendario, guardando en campos separados, el mes, año, día inicio del mes, día de termino del mes y numero de días del mes, luego de esto, pide al usuario que ingrese el mes y año para el que quiere realizar la distribución de turnos, realiza la búsqueda en el vector correspondiente y crea los archivos “Auxiliares.txt”, “Empleados_de_servicio.txt” y “Enfermeria.txt”, listos para ser impresos y dados a conocer a la clínica; el programa cuenta con 14 archivos:

 

1.      Aux_de_Enfer.cpp:   Archivo que contiene todos los métodos ocupados en la clase Auxiliar de Enfermería,

como Display, reparte, add, etc.

 

2.      Empleados_de_Servicio.cpp: Archivo que contiene todos los métodos ocupados en la clase Empleado de Servicio.

 

3.      Enfermeras.cpp: Archivo con todos los métodos para la clase Enfermeras.

 

4.       Aux_de_Enfer.h:     Correspondiente archivo .h que contiene los prototipos de los métodos implementados en Aux_de_Enfer.cpp.

 

5.       Empleados_de_Servicio.h: Archivo .h con los prototipos de los métodos en Empleados_de_Servicio.cpp.

 

6.       Enfermeras.h: .h con los prototipos de las funciones implementadas en Enfermeras.cpp

 

7.      Contenedor.cpp: Archivo con métodos para la clase contenedor, que es la que busca el mes y año especificado por el usuario y retorna el vector resultado búsqueda que contiene todos los datos correspondientes al mes y año especificado (numero de días, día inicio, día termino).

 

8.      Contenedor.h: Correspondiente .h que contiene los prototipos de los métodos de contenedor.cpp.

 

9.      Item.cpp: Archivo con los métodos de la clase ítem (almacena los datos leídos desde calendario.txt).

 

10.  Item.h: Prototipos de los métodos de la clase Ítem.

 

11.   Proyecto.cpp: Archivo con el Main del programa, lee archivos txt, recoge los datos ingresados por el usuario y llama a las funciones reparte de cada objeto de las clases.

 

12.   Makefile: Archivo que facilita la compilación del programa y la creación del ejecutable.

 

Para una mayor explicación de cada archivo, se recomienda revisar el código fuente de cada uno, que esta comentado para un mejor entendimiento (“Aux_de_Enfer.cpp”, “Empleados_de_Servicio.cpp”, “Enfermeras.cpp”, “Aux_de_Enfer.h”, “Empleados_de_Servicio.h”, “Enfermeras.h”, “Contenedor.cpp”, “Contenedor.h”, “Item.cpp” “Item.h”, “Proyecto.cpp” y “Makefile”).

 

Instalación y Ejecución del Programa:

 

El programa actualmente esta hecho para ser usado usando el compilador y los comandos del servidor aragorn de la red del departamento de electrónica de la Universidad Técnica Federico Sta Maria, la próxima etapa es la implementación del programa para ambiente Windows, usando interfaces graficas mas amigables con el usuario, de manera de solucionar eficientemente el problema presentado anteriormente, para la ejecución de este programa, se necesita bajar el archivo “roles.zip”, descomprimirlo usando un programa adecuado como “winzip” (bajándolo desde aquí) o cualquier otro programa compresor, luego, estando ya en el servidor aragorn, se debe escribir make en la linea de comandos y posteriormente, ejecutar el programa usando ./proyecto, con esto, el programa lee de los respectivos archivos y crea los archivos “Auxiliares.txt”, “Empleados_de_servicio.txt” y “Enfermeria.txt”, que están listos para ser impresos y publicados.

 

El programa además calcula las horas extra trabajadas por cada Auxiliar, Empleado de Servicio y Enfermera en cada modulo, como manera de comprobar la equitatividad de los turnos, evitando que algún empleado trabaje menos o mas que otro.

 

Las principales dificultades encontradas en la solución del problema radicaron no en la programación, sino que mas bien en los requerimientos del usuario, como era de esperar, el usuario, y a medida que se le iban mostrando avances del programa, iba realizando cambios en los requerimientos de este, lo que significaba muchas veces comenzar de nuevo para satisfacer las necesidades del usuario, como ejemplo de esto, podemos mencionar el requerimiento inicial del usuario que suponía que al programa debía leer el archivo Empleados.txt y realizar el solo, la distribución aleatoria de personar por modulo, finalmente, el usuario pidió que el programa solo entregara un espacio suficiente donde llenar los nombres de cada empleado en cada modulo, ya que la rotación de Auxiliares de enfermería es muy alta y de esta manera (llenando los nombres manualmente), se haría mas rápido y se tendría mayor control sobre esto.

 

Links útiles al momento de desarrollar el programa (y relacionados con el mismo):

 

·        http://www.cplusplus.com

·        http://profesores.elo.utfsm.cl/~agv/elo329/1s03/index.html (capitulo de vectores)

·        http://www.objectcentral.com

·        http://www.capresalud.cl/

 

 

Valparaíso, 9 de Junio de 2003

Rodrigo Pinto Aránguiz

Christian Lalanne Arancibia