Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN NUTRIFIT: PLATAFORMA DE ADMINISTRACIÓN DE PAUTAS NUTRICIONALES INCORPORADO CON RUTINAS DE EJERCICIO MEMORIA PARA OPTAR AL TÍTULO DE INGENIERA CIVIL EN COMPUTACIÓN DANIELA CATALINA CHACÓN SALAZAR PROFESORA GUÍA: JOCELYN SIMMONDS WAGEMANN MIEMBROS DE LA COMISIÓN: MARÍA CECILIA BASTARRICA PIÑEYRO PATRICIO INOSTROZA FAJARDIN SANTIAGO DE CHILE 2021 Resumen Nutrifit Training es una empresa especializada en la salud nutricional y física. Ellos realizan consultas integrales con un equipo interdisciplinario que desarrolla planes de nutrición y entrenamiento de acuerdo a los objetivos y necesidades de sus pacientes. Estas consultas se ven limitadas en tiempo debido a que los procesos manuales que se deben realizar para crear los planes son tediosos y repetitivos. Es por esto que la empresa decidió invertir en el desarrollo de una herramienta propia que automatice estas acciones. Durante el año 2019 se implementó la aplicación web que serviría para la generación de planes de ejercicio en Nutrifit. La implementación de la parte de nutrición de esta plataforma corresponde al trabajo de esta memoria. Para lograr integrar un nuevo módulo que permitiera generar pautas nutricionales y fuera de utilidad para los trabajadores de Nutrifit se debió seguir una serie de pasos. Primero, se estudió a fondo el sistema de ejercicios existente, el cual permite ingresar pacientes al sistema, crear, enviar y responder encuestas sobre ejercicio, generar planes de ejercicio a partir de esta información y descargarlos en archivos. Además, se estudiaron y aprendieron las tecnologías que se utilizaron para crear esta plataforma. Luego se recabó información acerca del contexto, problemas y procesos que se llevan a cabo dentro de las consultas de Nutrifit. Al analizar esta información se pudo comprender las necesidades de los usuarios del nuevo módulo y acotar el problema a resolver. Con toda esta información se diseñó un prototipo de las interfaces y de la extensión al modelo de datos de la plataforma. Posteriormente, se utilizó este diseño como base para la implementación de la plataforma, la cual permite a nutricionistas generar, editar y descargar pautas nutricionales para sus pacientes. Además, se extendieron las encuestas a los pacientes para incluir información sobre su estado nutricional. Finalmente, se validó esta solución con los usuarios finales del sistema, quienes, luego de utilizar esta plataforma por más de un mes, se mostraron satisfechos con los niveles de utilidad y usabilidad del programa. Por lo que el trabajo realizado a lo largo de esta memoria demostró ser una herramienta beneficiosa y valiosa, pudiendo así mejorar y facilitar el trabajo de los profesionales de Nutrifit. i Para Loki, que me salvó en más de una manera. ii Agradecimientos Me gustaría agradecer a mi familia: Sandra, Marco y Paulina, quienes me tuvieron que aguantar a lo largo de mi camino universitario y que, a pesar de todo, me dieron su amor y apoyo incondicional. Gracias a mis chacones que me hacen tanto reir y a mis salazares que siempre tienen una sonrisa para entregar. Quiero agradecer a mi amiga de la vida Natalia, mi hermana de otra madre y que no importa el tiempo que pase, siempre va a estar ahí para escucharme y alegrar mi día. A mi familia del volei: Javier, Javiera, Sofía y Tamara, quienes me han enseñado a crecer como deportista y aún más como persona. Gracias a todas las personas maravillosas que conocí en mi paso por beauchef. A mis narnieros: Barbi, Danielito y Pelao, sin ustedes no hubiese sobrevivido a plan común, ni tampoco lo hubiese pasado tan bien. A toda la comunidad del DCC, una pequeña comunidad amable, encantadora y por sobre todo humana. En especial, agradecer a mis frens: Checho, Sven, Peibl, Mati, Piña, Cirolo, Jordo, Tito, Franquito, Seba3 y Leca, el mejor grupo de amigos que se podría tener y con quienes espero, algún día, poder volver a la salita una última vez. Muchísimas gracias a todas las personas que me ayudaron a hacer realidad esta memoria. A mi profesora guía Jocelyn, que me animó en cada paso y me empujó en los momentos en que más lo necesitaba. A las personas de Nutrifit: Ñancu, Jose y Maite, quienes confiaron y creyeron en mi para realizar este proyecto y que me tuvieron demasiada paciencia en este proceso. Finalmente, gracias infinitas a Felipe, mi mejor amigo, mi compañero y el amor de mi vida, quien me ha entregado tanto amor, tanto apoyo y tantas enseñanzas, que ni en 100 vidas se lo podría devolver. Y a nuestra gata Lio, que lo único que hace es comer y dormir. Gracias a todos y cada uno de ustedes. iii Tabla de Contenido 1. Introducción 1 1.1. Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3. Situación actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4.2. Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5. Solución propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6. Metodología a seguir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.7. Estructura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Marco teórico 7 2.1. Conceptos nutricionales y generación de dietas . . . . . . . . . . . . . . . . . 7 2.1.1. Composición corporal . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.2. Requerimiento calórico . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.3. Macronutrientes y micronutrientes . . . . . . . . . . . . . . . . . . . . 11 2.1.4. Información nutricional de los alimentos . . . . . . . . . . . . . . . . 12 2.2. Estructura de una consulta de Nutrifit . . . . . . . . . . . . . . . . . . . . . 13 2.3. Proceso actual de generación de dietas durante una consulta . . . . . . . . . 15 2.3.1. Captación de Información . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.2. Generación de la pauta nutricional . . . . . . . . . . . . . . . . . . . 17 2.3.3. Explicación al paciente . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3. Sistema de ejercicios actual 22 3.1. Principales funcionalidades e interfaces . . . . . . . . . . . . . . . . . . . . . 22 3.1.1. Administración de pacientes . . . . . . . . . . . . . . . . . . . . . . . 22 3.1.2. Encuesta de ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.3. Programas de ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.1.4. Descarga de pauta de ejercicio . . . . . . . . . . . . . . . . . . . . . . 25 3.2. Tecnologías del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.1. Django y Django Rest . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.2. VueJS y VueX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2.3. Versionamiento y Entrega Continua . . . . . . . . . . . . . . . . . . . 31 3.3. Arquitectura del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.1. Arquitectura física . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 iv 3.3.2. Arquitectura lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4. Modelo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5. Métricas del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4. Análisis y diseño del nuevo módulo 37 4.1. Necesidades de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.1. Proceso de captación de información . . . . . . . . . . . . . . . . . . 37 4.1.2. Historias de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.1.3. Requisitos del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2. Solución propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2.1. Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2.2. Modelo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5. Implementación de la solución 49 5.1. Metodología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2. Encuesta de ingreso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2.1. Creación de la encuesta de nutrición . . . . . . . . . . . . . . . . . . 50 5.2.2. Refactorización de las encuestas . . . . . . . . . . . . . . . . . . . . . 52 5.2.3. Vistas de la encuesta según tipo de usuario . . . . . . . . . . . . . . . 56 5.3. Generación de una pauta nutricional . . . . . . . . . . . . . . . . . . . . . . 57 5.3.1. Parametros de la dieta . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.3.2. Minuta de la dieta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.3.3. Barra lateral de la pauta . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.3.4. Generación y descarga del archivo . . . . . . . . . . . . . . . . . . . . 70 5.3.5. Flujo de creación de pautas . . . . . . . . . . . . . . . . . . . . . . . 73 5.4. Puesta en marcha del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.4.1. Fixture de los modelos de nutrición . . . . . . . . . . . . . . . . . . . 76 5.4.2. Adaptación de base de datos del servidor . . . . . . . . . . . . . . . . 79 5.4.3. Proceso de despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.5. Metricas del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6. Validación 82 6.1. Validaciones durante el desarrollo . . . . . . . . . . . . . . . . . . . . . . . . 82 6.2. Validación al finalizar el desarrollo . . . . . . . . . . . . . . . . . . . . . . . . 85 6.2.1. Pruebas de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6.2.2. Encuesta de usabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.3. Valoraciones de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.3.1. Primera semana de uso . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.3.2. Segunda semana de uso . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.3.3. Tercera semana de uso . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.3.4. Cuarta y quinta semana de uso . . . . . . . . . . . . . . . . . . . . . 91 6.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7. Conclusiones 95 v Bibliografía 97 vi Índice de Tablas 2.1. Clasificación del estado nutricional de acuerdo con el IMC . . . . . . . . . . 8 2.2. Ecuaciones TMB según Harris & Benedict . . . . . . . . . . . . . . . . . . . 9 2.3. Ecuaciones TMB según FAO/OMS/UNU . . . . . . . . . . . . . . . . . . . . 9 2.4. Ecuaciones TMB según Carrasco . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5. Ajuste de TMB según ejercicio por Harris & Benedict . . . . . . . . . . . . . 10 2.6. Pasos de una consulta de ingreso en Nutrifit. . . . . . . . . . . . . . . . . . . 13 3.1. Líneas de código del backend . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2. Líneas de código del frontend . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.1. Líneas de código del backend actualizado . . . . . . . . . . . . . . . . . . . . 81 5.2. Líneas de código del frontend actualizado . . . . . . . . . . . . . . . . . . . . 81 6.1. Resultados de cuestionario SUS aplicado a usuarios de Nutrifit. . . . . . . . 88 vii Índice de Ilustraciones 2.1. Fórmula de cálculo de requerimiento calórico. . . . . . . . . . . . . . . . . . 9 2.2. Relación entre ingesta y gasto calórico. . . . . . . . . . . . . . . . . . . . . . 11 2.3. Ejemplo de etiquetado nutricional según la ley chilena. . . . . . . . . . . . . 12 2.4. Fragmento de la encuesta en Reservo. . . . . . . . . . . . . . . . . . . . . . . 15 2.5. Sección de encuesta alimentaria de 24 horas en Reservo. . . . . . . . . . . . . 16 2.6. Sección de tendencia de consumo en Reservo. . . . . . . . . . . . . . . . . . 17 2.7. Tabla de cálculo de distribución de macronutrientes. . . . . . . . . . . . . . . 18 2.8. Cálculo de porciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.9. Fragmento de la minuta de la pauta. . . . . . . . . . . . . . . . . . . . . . . 20 2.10. Fragmento de la explicación de los grupos alimentarios. . . . . . . . . . . . . 21 3.1. Pantalla inicial con lista de pacientes registrados en el sistema. . . . . . . . . 23 3.2. Vista del perfil de un paciente. . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3. Vista al crear una nueva encuesta. . . . . . . . . . . . . . . . . . . . . . . . . 24 3.4. Pantalla de generación de un programa de ejercicio. . . . . . . . . . . . . . . 24 3.5. Rutina en pantalla de generación de un programa de ejercicio. . . . . . . . . 25 3.6. Información de una rutina de ejercicios en archivo generado. . . . . . . . . . 26 3.7. Imágenes de una rutina de ejercicios en archivo generado. . . . . . . . . . . . 26 3.8. Interacción entre componentes de Django. . . . . . . . . . . . . . . . . . . . 27 3.9. Interacción entre componentes de Django y Django Rest. . . . . . . . . . . . 28 3.10. Abstracción de estructura de una página utilizando componentes de Vue. . . 30 3.11. Arquitectura física del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.12. Patrón de arquitectura lógica del sistema. . . . . . . . . . . . . . . . . . . . 32 3.13. Arquitectura lógica del sistema basada en un modelo de tres capas. . . . . . 33 3.14. Modelo de datos del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1. Encuesta nutricional vista por el paciente. . . . . . . . . . . . . . . . . . . . 40 4.2. Encuesta de ejercicio vista por la nutricionista. . . . . . . . . . . . . . . . . . 41 4.3. Etapa de cálculo de requerimientos. . . . . . . . . . . . . . . . . . . . . . . . 42 4.4. Etapa de distribución de macronutrientes. . . . . . . . . . . . . . . . . . . . 43 4.5. Etapa de cálculo de porciones. . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6. Creación de la minuta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.7. Menú lateral que muestra parámetros de la pauta. . . . . . . . . . . . . . . . 46 4.8. Modelo de datos propuesto para el sistema. . . . . . . . . . . . . . . . . . . . 48 5.1. Sección de nutrición de la encuesta. . . . . . . . . . . . . . . . . . . . . . . . 53 5.2. Modelo de encuesta de ingreso. . . . . . . . . . . . . . . . . . . . . . . . . . 55 viii 5.3. Vista de encuesta de ingreso vista por un paciente. . . . . . . . . . . . . . . 55 5.4. Encuesta de ingreso no contestada vista por un nutricionista. . . . . . . . . . 56 5.5. Sección de ejercicio de una encuesta contestada, vista por un nutricionista. . 57 5.6. Sección de cálculo de requerimientos al crear una pauta nutricional. . . . . . 59 5.7. Sección de distribución de macronutrientes al crear una pauta nutricional. . . 60 5.8. Sección de cálculo de porciones al crear una pauta nutricional. . . . . . . . . 62 5.9. Tabla de porciones expandida. . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.10. Vista de la minuta de una pauta nutricional. . . . . . . . . . . . . . . . . . . 63 5.11. Comidas de una minuta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.12. Fragmento de tabla con reglas de repartición para cada grupo de alimentos. . 66 5.13. Modelo de plantillas de minutas. . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.14. Secciones del paciente y de la pauta en la barra lateral. . .. . . . . . . . . . 68 5.15. Sección de alimentos de la barra lateral. . . . . . . . . . . . . . . . . . . . . 69 5.16. Comida agregada a una minuta. . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.17. Sección de la minuta de la plantilla del archivo de pauta nutricional. . . . . . 71 5.18. Sección de indicaciones de la plantilla del archivo de pauta nutricional. . . . 72 5.19. Sección de grupos alimenticios de la plantilla del archivo de pauta nutricional. 72 5.20. Sección de la minuta en archivo generado. . . . . . . . . . . . . . . . . . . . 73 5.21. Sección de tips en archivo generado. . . . . . . . . . . . . . . . . . . . . . . . 74 5.22. Sección de los grupos alimenticios en archivo generado. . . . . . . . . . . . . 74 5.23. Perfil de un paciente en el sistema, visto por un nutricionista. . . . . . . . . 75 5.24. Tabla con sugerencia de porciones para dieta omnívora de 1100 a 1200 calorías. 78 5.25. Fases del despliegue en Amazon CodePipeline. . . . . . . . . . . . . . . . . . 80 6.1. Primera aseveración del cuestionario SUS en Google Forms. . . . . . . . . . . 88 ix Índice de Fragmentos de Código 3.1. Estructura de un componente Vue . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1. Modelos de la encuesta nutricional (models.py) . . . . . . . . . . . . . . . . . 50 5.2. Serializadores de la encuesta nutricional (serializers.py) . . . . . . . . . . . . 51 5.3. Viewset de la encuesta nutricional (viewsets.py) . . . . . . . . . . . . . . . . 51 5.4. Ejemplo de encuesta nutricional serializada . . . . . . . . . . . . . . . . . . . 52 5.5. Extracto de fixture para modelo de grupos alimenticios. . . . . . . . . . . . . 76 x Capítulo 1 Introducción 1.1. Contexto Según la Organización Mundial de la Salud (OMS), en los últimos 45 años la obesidad se ha triplicado en la población mundial y de continuar esta tendencia, la mitad de la población tendrá sobrepeso u obesidad para el 2030 [35]. Pero para Chile esa realidad no es un problema del futuro, ya que de acuerdo con el informe ‘Health at a Glance 2019’ de la Organización para la Cooperación y el Desarrollo Económico (OCDE), el 74,2% de la población adulta tiene algún grado de obesidad o sobrepeso. Durante el 2019, Chile se transformó por primera vez en el país con más sobrepeso y obesidad entre los miembros de la OCDE, superando incluso a México (72,5%) y a Estados Unidos (71%) [22] [23]. Las causas fundamentales de la obesidad y el sobrepeso son la mala nutrición y el sedenta- rismo. Ambos factores están altamente asociados al entorno cultural y social de una persona, y son acrecentados aún más por la falta de políticas gubernamentales. A nivel individual, la OMS recomienda mantener una dieta baja en grasas y azúcares, y alta en frutas y verduras; además de realizar actividad física regularmente [35] [34]. Nutrifit Training (www.nft.cl) es una empresa que busca ayudar a chilenos a mejorar su estado de salud. Esto lo logran realizando consultas personalizadas a cada cliente. En estas, un equipo interdisciplinario evalúa a los pacientes y desarrolla pautas nutricionales y planes de entrenamiento de acuerdo a los objetivos y necesidades de cada persona, mejorando así la mala nutrición y el sedentarismo de sus pacientes. 1.2. Motivación Actualmente, Nutrifit Training está buscando maneras de aumentar la rentabilidad de su negocio y así abrir nuevas posibilidades de crecimiento para la empresa. Las opciones que se consideraron para cumplir este objetivo fueron aumentar el precio de las consultas y/o aumentar la cantidad de consultas que se realizan a la semana. La primera opción es la 1 https://nft.cl más fácil de implementar, pero Nutrifit no quiere aumentar los costos a sus pacientes, ya que desean que las consultas tengan un precio accesible, alzar sus precios podría significarles perder clientes que no pueden o no están dispuestos a pagar un precio más elevado. Es por esto que han decidido realizar más consultas durante la semana. Nutrifit decidió abrir más horarios en la agenda de sus profesionales para lograr aumentar la cantidad de consultas semanales, pero esto solo significó un pequeño aumento en la cantidad de consultas que se podían realizar. Por lo que, además, han decidido disminuir el tiempo que toma realizar cada consulta, esto sin disminuir la calidad de su servicio. Así los profesionales podrán realizar más consultas a la semana, lo que aumentará los ingresos de la empresa. Las consultas ofrecidas por Nutrifit Training son llevadas a cabo en conjunto por una nutricionista y una kinesióloga. Ellas evalúan el estado físico y nutricional del paciente, crean las pautas y explican los detalles de estas al paciente. Más específicamente, estas consultas pueden ser de dos tipos: de ingreso de un paciente nuevo o de seguimiento de un paciente antiguo. Las consultas de ingreso se realizan cuando una persona asiste por primera vez a Nutrifit Training y tienen un duración de una hora. En ellas se le da especial énfasis a conocer la rutina, contexto y hábitos del paciente. Para esto, se realiza una entrevista y se utiliza maquinaria especializada para medir su estado físico actual. A partir de los datos recopilados las profesionales generan el plan nutricional y de entrenamiento que el paciente deberá seguir para mejorar su salud física. La parte final de la consulta consiste en explicar cada uno de los planes al cliente y resolver todas sus dudas. Sin embargo, en la mayoría de las consultas de ingreso el tiempo se hace muy corto, por lo que las consultas normalmente se pasan de su tiempo, atrasando la agenda de todo el día. En un intento por recuperar el tiempo perdido debido a los retrasos, las profesionales en muchas ocasiones no terminan las pautas dentro de la duración de la consulta y pasan directamente a la explicación pero sin tenerlas totalmente terminadas. Luego, deben completar las pautas fuera de su horario de trabajo y enviárselas por correo electrónico a los pacientes. Por otra parte, las consultas de seguimiento se realizan para revisar el avance del paciente y, de ser necesario, ajustar su plan nutricional y/o de ejercicio. Estas tienen una duración de 30 minutos, no tienen una estructura definida y se realizan cada uno o dos meses, según las profesionales lo estimen conveniente. En las consultas se habla del progreso, problemas y dificultades que podría haber tenido el paciente y en base a esta información se modifican las pautas de su programa. Debido a que cada paciente tiene pautas y experiencias únicas, estas consultas varían mucho de persona a persona. Debido a que las consultas de ingreso son las que tienen la mayor duración y que tienen etapas repetitivas que pueden ser optimizadas y automatizadas, es que Nutrifit Training decidió invertir en el desarrollo de una herramienta que ayude a disminuir el tiempo de estas. De ahora en adelante, cuando en este informe se use la palabra consulta, se referirá a las consultas de ingreso. 2 1.3. Situación actual Nutrifit Training ha intentado durante años encontrar una herramienta que agilice sus consultas. En un principio buscaron software existente en el mercado, pero no encontraron herramientas que se adapten a sus necesidades. Existen muchas aplicaciones que ayudan a crear pautas nutricionales o a crear programas de ejercicio, pero el usuario objetivo de la mayoría de ellas es la persona que quiere mejorar su condición física y no un profesional del área. Es así cómo decidieron desarrollar un software propio. Si bien la razón principal detrás de esta decisión es tener una herramienta hecha a la medida, otra razón poderosa que convenció al equipo de Nutrifit fue que al ser dueños de este software lo podrían vender a otras empresas. Esta no es la primera vez que Nutrifit Training intenta realizar este software. En un principio un grupo de estudiantes del curso CC5402 Proyecto de Software realizó una versión que nunca fue usada por los profesionales, ya que no cumplia con los requisitos necesarios para ser de utilidad. El segundo intentoterminó siendo una estafa, por lo que tampoco se obtuvo un software usable en esa ocasión. Actualmente, en esta tercera versión se ha decidido separar el desarrollo en dos: la parte de ejercicio y la de nutrición. Durante el último trimestre del 2019, Nutrifit contrató a un grupo de ingenieros en compu- tación de la Universidad de Chile. Ellos desarrollaron un sistema para la parte de ejercicio, el cual está siendo utilizado por los profesionales y ha mostrado ser una buena herramienta de trabajo para ellos. Este sistema corresponde a una aplicación web disponible en pro- gramas.nftchile.cl. Este sitio permite ingresar pacientes, crear y responder encuestas sobre actividad física y generar programas de ejercicio en base a las respuestas de la encuesta. Más adelante se detallará y dará más información sobre este sistema. Actualmente, la generación de una pauta de nutrición es un proceso que se realiza a mano, por lo que es lento, tedioso y requiere de mucho trabajo mental de parte de la nutricionista. Por lo que, el desarrollo e integración de la parte de nutrición será el trabajo de esta memoria. 1.4. Objetivos 1.4.1. Objetivo General El principal objetivo de esta memoria es crear un nuevo módulo en el sistema de manejo de pautas que ayude a los nutricionistas de Nutrifit Training a automatizar el proceso de generación de pautas nutricionales, para así agilizar sus consultas y alivianar su trabajo. 1.4.2. Objetivos Específicos Para lograr el objetivo general se necesitará completar los siguientes puntos: 1. Comprender la implementación del sistema de pautas de ejercicio ya existente. Estu- diando el código actual y aprendiendo las tecnologías utilizadas en aquel proyecto. 2. Analizar las necesidades y requerimientos de los usuarios del nuevo módulo. 3 http://programas.nftchile.cl http://programas.nftchile.cl 3. Diseñar el nuevo módulo de pautas nutricionales, esto incluye: diseño del modelo de datos y diseño de interfaces. 4. Implementar el sistema de pautas nutricionales, extendiendo el código del sistema de ejercicios. 5. Validar el sistema implementado. Se evaluará la usabilidad y la utilidad de la platafor- ma, a través de user testing y encuestas a usuarios y clientes. 1.5. Solución propuesta Para realizar el trabajo de esta memoria se desarrollará un módulo que se integre al sistema de generación de programas de ejercicio. El sistema a implementar considerará tres grandes funcionalidades, cada una con desafíos distintos: 1. Encuestas antes de la consulta: Se extenderá la encuesta existente en el sistema, creando una nueva sección sobre infor- mación nutricional con temas que se preguntan actualmente durante las consultas. Esta encuesta podrá ser contestada por los pacientes antes de su consulta de ingreso. Para esto, las profesionales deberán generar un link que luego enviará al paciente vía correo electrónico. Luego las profesionales podrán acceder a la encuesta y revisar si ha sido rellenada. Esto para que al momento de realizar la consulta, solo se tenga que hacer una revisión de la información, editarla y aclarar dudas que podrían haber surgido. Esto busca disminuir el tiempo de captación de información dentro de la consulta. Para realizar esta funcionalidad será necesario modificar y extender el modelo de datos, ya que actualmente solo soporta la encuesta de actividad física, la cual está codificada en duro en el sistema. No se requiere que el paciente tenga una cuenta de usuario en el sistema, por lo que se manejará el acceso a la encuesta utilizando tokens de acceso, los cuales ya se encuentran implementados para el programa de ejercicio. Además, se propone agregar otra sección a la encuesta, que será de captación de infor- mación personal del paciente. Esto es necesario para que la encuesta esté dividida por temas, ya que actualmente estas preguntas están dentro de la encuesta de actividad física, a pesar de que esta información no se relaciona directamente con la actividad física del paciente, esto también significará una refactorización sobre el código existente. Finalmente, el enlace generado por la nutricionista deberá permitir que el paciente acceda a las encuestas disponibles, para que así no tenga que recibir un link por cada tipo de encuesta que deba rellenar. La refactorización del modelo de datos debe ser compatible con la información ya gene- rada por el uso de la encuesta existente y además, debe ser extensible y modular. Esto para facilitar la creación de nuevas encuestas en el futuro. 4 2. Generación de pautas nutricionales: Se incorporarán todos los pasos de generación de pautas que la nutricionista realiza en la aplicación. Esto para centralizar el proceso y así evitar que la nutricionista tenga que estar ‘saltando’ entre aplicaciones y teniendo que hacer cálculos mentales que podrían ser fácilmente automatizados y estandarizados por el sistema. Esta funcionalidad presenta el desafío de crear una interfaz (o serie de interfaces) que pueda mostrar toda la información necesaria de una manera simple y entendible al usuario, ya que la pauta debe ser creada mientras la nutricionista habla con el paciente y con la kinesióloga. Mostrando información del paciente, de la encuesta, de la pauta y de los distintos alimentos. Toda esta información debe ser mostrada de forma de no sobrecargar las interfaces. Otro aspecto que se planea agregar es la generación de una pauta o plantilla sugerida a partir de la información ingresada por la nutricionista y por el paciente a través de la encuesta, la cual podrá ser editada y personalizada posteriormente. Esto permitirá ahorrar tiempo dentro de la consulta. Además, la interfaz debe presentar elementos interactivos (como drag and drop) para facilitar la manipulación de comidas y porciones al crear la pauta nutricional. Esta funcionalidad es la más compleja y es la que tomará más tiempo de desarrollo, ya que crear una pauta nutricional es un proceso complejo que abarca muchas variables que deben ser consideradas y balanceadas de una manera adecuada. 3. Exportar documento: Además, este sistema debe ser capaz de exportar toda esta información a un archivo Word (.docx). Este archivo debe seguir la estructura de las pautas nutricionales de Nutrifit, asemejándose lo más posible al producto que entregan actualmente. La decisión de no exportar directamente a PDF se debe a que, normalmente, mientras se le explica la pauta al cliente se suelen hacer pequeños ajustes a la minuta. Por lo que así, la nutricionista podrá hacer estas pequeñas modificaciones directamente en el archivo y luego exportarlo a un PDF que enviará al correo del cliente 1.6. Metodología a seguir Como se mencionó en la sección de objetivos, el desarrollo comenzará con la fase de análisis, donde se estudiará el código actual de la aplicación y las necesidades de los usuarios. Para cumplir con lo primero, será necesario aprender las tecnologías utilizadas en el sistema de ejercicios, en particular: VueJS, VueX, Django REST, CSS Flexbox, entre otros. Para comprender las necesidades de los usuarios se realizarán entrevistas semi-estructuradas y no-estructuradas con la nutricionista y la kinesióloga de Nutrifit. Además, se presenciarán consultas de ingreso para poder observar el proceso completo de generación de las pautas. 5 Posteriormente, se diseñarán las interfaces y el modelo de datos de la plataforma. Las in- terfaces a diseñar deben ser intuitivas e interactivas, debido a que Nutrifit desea comercializar este sistema para que más profesionales lo usen en su consulta, por lo que se pondrá espe- cial énfasis en la experiencia de usuario durante el desarrollo. En este proceso se realizarán bocetos que serán probados y validados por los usuarios. Luego se implementarán las funcionalidades descritas y se validará el avance en reuniones periódicas con los funcionarios de Nutrifit, las cuales se realizarán cada dos semanas o cuando se estime conveniente. Para implementar estas funcionalidades se utilizará una metodología iterativa-incremental,la cual permitirá recibir feedback de los usuarios tempranamente y así facilitar los ajustes al producto. Finalmente, se validará la usabilidad y la utilidad del sistema terminado. Para evaluar la usabilidad se realizarán pruebas con usuarios, es decir, con los trabajadores de Nutrifit. Se le pedirá a cada usuario realizar tareas en el sistema y luego se analizará la duración y la tasa de éxito de cada tarea. Además, se realizarán entrevistas a los usuarios para saber su opinión de la plataforma (nivel de satisfacción, frustración, etc.). La utilidad de este sistema se evaluará comparando la diferencia en el tiempo que toma una consulta sin y con el nuevo módulo nutricional. Además, se realizará una cuestionario a los trabajadores de Nutrifit en que evaluarán la calidad del sistema. 1.7. Estructura de la memoria Este documento se estructura en siete capítulos. El capítulo 2 presenta conceptos sobre el área nutricional y el proceso actual en Nutrifit, los cuales deben ser conocidos para poder comprender el resto de esta memoria. Luego el capítulo 3 describe el sistema que se debe extender, mostrando sus interfaces, funcionalidades, arquitectura y modelo de datos. En el capítulo 4 se describe el proceso que se llevó a cabo para estudiar el problema e idear el nuevo módulo de nutrición, y se muestra el prototipo de sus interfaces y modelo de datos. El capítulo 5 describe el resultado del trabajo de implementación del nuevo módulo y cómo este se desplegó para el uso de los profesionales en Nutrifit. Posteriormente, el capítulo 6 presenta la validación realizada a la nueva plataforma. Finalmente, el capítulo 7 expone las distintas conclusiones obtenidas a lo largo de esta memoria y se describen posibles mejoras para el futuro del proyecto. 6 Capítulo 2 Marco teórico A lo largo de esta memoria se mencionan variados conceptos relacionados con la nutrición y las consultas de Nutrifit. Estos temas no son de conocimiento general y resultan ser cruciales para comprender el trabajo realizado. Es por esto, que este capítulo busca explicar aquellos conceptos para facilitar la lectura de este documento. En la sección 2.1 se explican conceptos básicos de alimentación, nutrición y dietética. La sección 2.2 describe los distintos procesos que se llevan a cabo dentro de una consulta de ingreso en Nutrifit. Finalmente, la información expuesta en estas dos secciones servirá para comprender cómo se generan las dietas en Nutrifit, lo cual se expone en la sección 2.3. 2.1. Conceptos nutricionales y generación de dietas La nutrición es la ciencia que comprende todos aquellos procesos mediante los cuales el organismo incorpora, transforma y utiliza las sustancias químicas contenidas en los alimentos [28]. La generación de una dieta nutritiva y balanceada es un proceso complejo que requiere mucho conocimiento sobre la nutrición y salud humana. A continuación se explican algunos conceptos básicos de esta ciencia. 2.1.1. Composición corporal El cuerpo humano está compuesto por agua, proteínas, grasas, carbohidratos, vitaminas y minerales. La composición corporal es la distribución que estos distintos componentes tienen en el cuerpo. Analizar esto ayuda a determinar la salud física de cada persona [14]. Las divisiones más importantes a analizar son: la Masa Grasa Corporal (MGC) y la Masa Magra Corporal (MMC). La primera corresponde al tejido graso almacenado en el cuerpo y la segunda incluye el músculo, agua, huesos y órganos. La proporción entre estas dos componentes indica qué tan buen estado físico tiene una persona. Un alto Porcentaje de Grasa Corporal (PGC) está relacionado con mayor riesgo de enfermedades cardiovasculares, hipertensión y diabetes[14]. 7 La disminución en el peso de una persona no necesariamente indica una perdida de Masa Grasa Corporal, ya que al no realizar actividad física también se pierde masa muscular, es decir, Masa Magra Corporal. Por lo que la mejor forma de disminuir el Porcentaje de Grasa Corporal es seguir una dieta nutritiva que ayude a reducir la grasa y ejercitarse regularmente para desarrollar la musculatura. Existen diversas técnicas para medir la composición corporal de una persona [33], entre ellas destacan: • Pliegues de la piel: Se mide el grosor de la grasa subcutánea en múltiples lugares del cuerpo con una herramienta llamada pinza. • Circunferencias y otras medidas: Se realizan mediciones y cálculos simples que incluyen la circunferencia del brazo, del vientre, entre otros. • Bioimpedancia eléctrica: Se mide la resistencia que los distintos tipos de tejidos corporales tienen ante un flujo eléctrico enviado a través del cuerpo. • Ultrasonidos, rayos X, desplazamiento de aire, entre otros. Otro indicador importante del estado de una persona es el Índice de Masa Corporal (IMC)[30]. Este es un valor numérico que relaciona el peso de una persona con su altura, tal como se muestra en la ecuación 2.1. Según el resultado se clasifica el estado nutricional de la persona como se muestra en la tabla 2.1 IMC = peso estatura2 [kg] [m2] (2.1) Clasificación IMC Bajo peso <18,5 Rango normal 18,5 - 24,9 Sobrepeso 24,9 - 29,9 Obesidad >30 Tabla 2.1: Clasificación del estado nutricional de acuerdo con el IMC Si bien el IMC es ampliamente utilizado, este debe complementarse con las técnicas men- cionadas anteriormente para entregar una buena evaluación corporal, debido a que es un índice sobre-simplificado que no distingue entre masa magra y masa grasa. A modo de ejem- plo, muchos fisicoculturistas son categorizados como obesos según el IMC. 2.1.2. Requerimiento calórico Las calorías (kcal) son una unidad de medida que indican cuanta energía contienen los distintos alimentos ingeridos. En cambio, el requerimiento calórico es la cantidad de calorías que una persona debe consumir diariamente para lograr cierto objetivo, como por ejemplo: bajar de peso o aumentar la masa muscular [15]. 8 Determinar el requerimiento calórico de una persona depende de muchos factores, como: género, edad, peso, composición corporal, nivel de actividad física, niveles hormonales, entre otros. Para lograr estimar un valor adecuado se sigue la fórmula 2.1. A continuación, se describe cada uno de los componentes de la fórmula. Figura 2.1: Fórmula de cálculo de requerimiento calórico. Tasa metabólica basal La tasa metabólica basal (TMB) es la cantidad de energía mínima que el cuerpo de una persona, en reposo, necesita diariamente para llevar a cabo sus funciones vitales, como respirar, bombear sangre, regular la temperatura corporal, etc. Es decir, lo que el cuerpo necesita diariamente para seguir funcionando. Para estimar la tasa metabólica basal de cada persona se utilizan ecuaciones establecidas y aprobadas por la comunidad científica. Algunas de las fórmulas más conocidas son: Harris- Benedict [17] (tabla 2.2), FAO/OMS/UNU [19] (tabla 2.3) y Carrasco [9] (tabla 2.4). Todas estas fórmulas utilizan el sistema métrico, es decir, el peso se mide en kg, la estatura en cm y la edad en años. Sexo Tasa Metabólica Basal Hombre 66,5 + ( 13,75 × Peso ) + ( 5,003 × Estatura ) − ( 6,755 × Edad) Mujer 655 + ( 9,563 × Peso ) + ( 1,845 × Estatura ) − ( 4,676 × Edad ) Tabla 2.2: Ecuaciones TMB según Harris & Benedict Edad Hombres Mujeres 0 - 3 años ( 60,9 × Peso ) − 54 ( 61 × Peso ) − 51 3 - 10 años ( 22,7 × Peso ) + 495 ( 22,5 × Peso ) + 499 10 - 18 años ( 17,5 × Peso ) + 651 ( 12,2 × Peso ) + 746 18 - 30 años ( 15,3 × Peso ) + 679 ( 14,7 × Peso ) + 496 30 - 60 años ( 11,6 × Peso ) + 879 ( 8,7 × Peso ) + 829 >60 años ( 13,5 × Peso ) + 487 ( 10,5 × Peso ) + 596 Tabla 2.3: Ecuaciones TMB según FAO/OMS/UNU Ajuste por actividad física Como ya se mencionó, la tasa metabólica basal es lo que el cuerpo necesita en reposo. Este reposo no considera ningún tipo de actividad física, de hecho, podría considerarse como lo que el cuerpo humano necesita al estar en coma. Por lo tanto, para adecuarse a la vida cotidiana, la TMB debe ajustarse considerando el nivel de actividad física de la persona. 9Estado nutricional (según IMC) TMB Bajo peso 40 × Peso Normal 30 × Peso Sobrepeso 25 × Peso Obesidad 20 × Peso Tabla 2.4: Ecuaciones TMB según Carrasco Para calcular este ajuste, Harris & Benedict [17] proponen multiplicar la TMB por un coeficiente de actividad física según el nivel de ejercicio, tal como se puede ver en la tabla 2.5. Nivel de actividad física Calorías diarias necesarias Poco o ningún ejercicio TMB × 1,2 Ejercicio ligero (1-3 días por semana) TMB × 1,375 Ejercicio moderado (3-5 días por semana) TMB × 1,55 Ejercicio fuerte (6-7 días por semana) TMB × 1,725 Ejercicio muy fuerte (2 veces al día) TMB × 1,9 Tabla 2.5: Ajuste de TMB según ejercicio por Harris & Benedict Una vez se ha realizado este ajuste, se obtiene el total de energía que el cuerpo gasta diariamente. Ajuste por objetivo La diferencia entre las calorías gastadas por el cuerpo y las calorías ingeridas define en gran parte lo que ocurrirá con el peso de una persona [31][10]. La figura 2.2 ilustra estos conceptos y a continuación se describe cada una de las opciones: • Balance energético: Para mantener el peso actual se ingiere la misma cantidad de calorías que el cuerpo gasta, por lo que no se requiere ajuste por objetivo. • Superávit calórico: Normalmente, cuando se busca subir de peso es para aumentar la masa muscular corporal. Para cumplir este objetivo se debe aumentar levemente la ingesta calórica (aproximadamente +200 kcal) y se debe dar énfasis en realizar ejercicios con pesas y en consumir mucha proteína. • Déficit calórico: Para bajar de peso, se deben restar calorías al gasto energético diario. Una diferencia de 500 calorías permite perder aproximadamente medio kilo de peso en una semana, lo que es considerado una baja de peso saludable. Como vimos anterior- mente, se busca que esta disminución de peso sea de masa grasa y no de musculatura, por lo que se debe complementar con actividad física para no perder masa muscular. 10 Figura 2.2: Relación entre ingesta y gasto calórico. Una vez realizado el ajuste por objetivo, finalmente se obtiene el requerimiento calórico de una persona. 2.1.3. Macronutrientes y micronutrientes Conocer el requerimiento calórico no es lo único necesario para crear una buena dieta, también se debe considerar el aporte nutricional de los alimentos que se ingieren[27]. Por ejemplo: una persona con un requerimiento calórico de 2.000 kcal puede consumir dos ham- burguesas con papas fritas a lo largo del día y cumplir con su requerimiento calórico, pero esto no significa que estas sean comidas saludables. Los nutrientes son los compuestos químicos que forman los alimentos y que son necesa- rios para el metabolismo de un ser vivo. Existen dos grandes tipos de nutrientes requeridos en la dieta humana: los micronutrientes y los macronutrientes[36]. Los micronutrientes son vitaminas y minerales que el cuerpo necesita en pequeñas cantidades (miligramos) para man- tenerse saludable, sin embargo, estos no aportan energía al cuerpo. En cambio, los macro- nutrientes son requeridos en grandes cantidades (gramos) por el cuerpo humano y además aportan la energía necesaria para las diversas reacciones metabólicas y funciones corporales esenciales[26]. Existen tres tipos de macronutrientes: carbohidratos, proteínas y lípidos. Carbohidratos Los hidratos de carbono o glúcidos en el cuerpo humano funcionan principalmente en forma de glucosa y constituyen la mayor fuente de energía para las reacciones metabólicas. Cada gramo de este macronutriente produce 4 kcal, sin importar su origen. La fuente principal de carbohidratos se encuentra en alimentos de origen vegetal, como: cereales, frutas y verduras, con excepción de la lactosa (azúcar de la leche) que es de origen animal. La OMS sugiere que entre un 50% y 75% de la ingesta calórica diaria debe provenir de carbohidratos. 11 Proteínas Las proteínas o aminoácidos de la dieta participan en la síntesis de tejido proteico, en procesos hormonales, en construir y mantener los tejidos corporales. También aportan energía al proveer 4 kcal por cada gramo. Sin embargo, su aporte no es tan eficiente como el de los carbohidratos, ya que se requiere una gran cantidad de energía para su digestión. Las fuentes principales de las proteínas las constituyen algunos alimentos de origen animal (como la carne), legumbres y frutos secos. Además, la mayoría de los alimentos tienen alguna cantidad de proteínas en su composición. Se recomienda que las proteínas compongan entre un 15% y 20% de las calorías ingeridas. Lípidos Los lípidos, ácidos grasos o simplemente grasas son almacenadas en el tejido adiposo y forman las reservas energéticas del organismo. Las grasas son necesarias para aislar los órganos del cuerpo contra el shock, para mantener la temperatura del cuerpo estable y para mantener la salud de la piel y el cabello. Estos aportan un alto contenido de energía con 9 kcal por cada gramo. Las fuentes principales las constituyen alimentos de origen animal, grasas y aceites vege- tales. Los lípidos deben componer entre un 15% y 30% de una dieta saludable. 2.1.4. Información nutricional de los alimentos Todos los alimentos están formados por nutrientes en distintas proporciones, por ejemplo: una manzana mediana está compuesta por 0,23g de grasa, 19.06g de carbohidratos y 0,36g de proteína, teniendo en total 79,8 kcal, es decir, el desglose de calorías de una manzana sería 3% grasa, 96% carbohidrato y 2% proteína. Según la ley chilena de etiquetado de alimentos, la información nutricional de todos los alimentos debe ser mostrada en sus empaques, tal como se muestra en la figura 2.3. Figura 2.3: Ejemplo de etiquetado nutricional según la ley chilena.1 1Ejemplo tomado desde el manual de etiquetado nutricional de alimentos del Minsal en www.minsal.cl 12 https://www.minsal.cl/wp-content/uploads/2018/01/Manual-Etiquetado-Nutricional-Ed.-Minsal-2017v2.pdf Muchos alimentos tienen distribuciones de macronutrientes similares y por lo tanto se pueden agrupar en una misma categoría de alimentos[16], por ejemplo: una pera contiene 1,5% de grasa, 96% de carbohidratos y 2,5% de proteínas. Al tener un aporte tan similar a la manzana, estos se pueden considerar un mismo grupo alimenticio: las frutas. Utilizando los distintos grupos alimenticios se puede calcular cuánto de cada tipo de ali- mento se debe consumir a diario para alcanzar el requerimiento calórico y los macronutrientes necesarios para una dieta. Esto facilita el cálculo de porciones, ya que elimina la necesidad de hacer cálculos para cada alimento específico que se consume. Luego, la cantidad de porciones de los distintos grupos alimenticios que componen la dieta deben repartirse en las distintas comidas del día (desayuno, almuerzo, cena y colaciones) y así, finalmente, se obtiene una dieta adecuada al individuo. 2.2. Estructura de una consulta de Nutrifit Las consultas de ingreso de Nutrifit tienen una estructura bien definida que ha sido probada y validada por la empresa, en ellas participan una nutricionista, una kinesióloga o entrenadora deportiva y el paciente. Las consultas parten con una fase de captación de información del paciente, donde se busca conocer su rutina y hábitos, además se realizan evaluaciones corporales al paciente utilizando maquinaria especializada para conocer su estado físico actual. Luego, utilizando la información recopilada, las profesionales crean las pautas de sus respectivas áreas. Finalmente, se le explica al paciente cada una de las pautas, esto incluye: demostración y corrección de ejercicios, respuestas a inquietudes y adaptaciones de los planes de ser necesario. Más específicamente, las consultas siguen una estructura de pasos, tal como se muestra en la tabla 2.6. Paso Nutricionista Kinesióloga 1 Captación de información personal del paciente - 2 - Captación de información sobre actividad física 3 Captación de información sobre estado nutricional Generación de programa de ejercicio(*) 4 Generación de pauta nutricional(*) Explicación deprograma de ejercicio al paciente 5 Explicación de pauta nutricional al paciente - (*) Acciones que no requieren de interacción con el paciente. Tabla 2.6: Pasos de una consulta de ingreso en Nutrifit. A continuación se explica con mayor detalle cada una de las acciones realizadas por cada profesional: 13 1. Captación de información personal del paciente: La nutricionista es la encargada de entablar la primera conversación con el paciente, ella debe explicarle el proceso al paciente y luego comenzar a realizarle preguntas para conocerle mejor. Además, es en este momento donde se evalúa el estado físico del paciente. Información relevante que se busca obtener en este paso es: en qué trabaja el paciente, cual es su rutina diaria, si tiene alguna enfermedad o consume medicamentos, medir su peso y estatura, entre otros. Finalmente, las profesionales y el paciente fijan en conjunto el objetivo del tratamiento, basándose en la información antes obtenida. Esta meta puede ser: bajar de peso, aumentar la musculatura, entre otros. 2. Captación de información sobre actividad física: En esta etapa la kinesióloga comienza a hacer preguntas sobre el estado físico del paciente para realizar un programa de ejercicios adecuado. Información importante en esta etapa: si el paciente realiza actividad física actualmente, el lugar donde planea realizar el programa de ejercicio, el tiempo que tiene disponible para hacerlo, presencia de lesiones o enfermedades que impidan algún tipo de actividad. 3a. Captación de información sobre estado nutricional: La nutricionista vuelve a hacer las preguntas, pero esta vez sobre la nutrición del pa- ciente. En esta parte se busca conocer cómo se alimenta el paciente y a qué hora, si es que tiene alergias alimentarias o si sigue algún tipo de dieta especial: como vege- tarianismo por ejemplo. Toda esta información se obtiene para personalizar de mejor manera la dieta del paciente, acomodándose a las comidas que le gusta comer y en los horarios que le acomode. 3b. Generación del programa de ejercicio: Mientras la nutricionista hace las preguntas de nutrición, la kinesióloga comienza la siguiente etapa: la generación del plan de entrenamiento. Para esto utiliza la plataforma desarrollada para Nutrifit. Una vez ha terminado con el programa, lo descarga en un archivo Docx que abre en Word para posteriormente mostrárselo al paciente. 4a. Generación de pauta nutricional: Mientras la kinesióloga le explica la pauta de ejercicio al paciente, la nutricionista realiza la pauta nutricional, siguiendo el proceso descrito en la sección 2.1. Toda esa información es plasmada en un archivo Docx que luego muestra al paciente. 4b. Explicación de pauta de ejercicio: La kinesióloga comienza a explicarle la estructura del documento generado al paciente. Luego explica cada uno de los ejercicios y se le pide al paciente que los realice y se le corrige en caso de que tenga una mala postura. En el caso en que haya algo que modificar de la rutina, esto se hace directamente en el archivo Docx. Una vez queda todo claro, la kinesióloga pasa este documento a un PDF que luego imprime y/o envía al paciente vía email. 5. Explicación de pauta nutricional: Finalmente, la nutricionista le muestra la dieta al paciente: le explica la estructura del archivo, el significado de cada porción asignada y las cantidades asociadas, además le entrega ejemplos de cada comida del día. 14 2.3. Proceso actual de generación de dietas durante una consulta En esta sección se detallará el proceso y las herramientas que la nutricionista de Nutrifit utiliza actualmente para poder realizar las consultas de ingreso. 2.3.1. Captación de Información Como se explicó en la sección anterior, la nutricionista debe entrevistar al paciente en dos oportunidades, una para obtener su información personal y otra para conocer su estado nutricional. En ambas ocasiones, la nutricionista anota toda esta información en una página web llamada Reservo (www.reservo.cl), la cual es utilizada para manejar los horarios de consulta de Nutrifit. Este software permite ingresar datos de un paciente registrado en la plataforma, se pueden añadir campos a la información del paciente pero estos se limitan solo a cuadros de texto. Además, la información escrita en Reservo no puede ser exportada. La imagen 2.4 muestra el aspecto de esta herramienta. Figura 2.4: Fragmento de la encuesta en Reservo. Captación de información personal Durante la captación de información personal se debe medir el estado corporal del paciente. Para esto Nutrifit cuenta con una InBody 370S, la cual utiliza bioimpedancia eléctrica para medir la composición corporal de los pacientes. Esta máquina es un analizador de composición corporal que en minutos entrega mediciones como: peso, distribución de músculo y grasa, cantidad de agua corporal, entre otros [24]. La InBody entrega todos estos datos a través de un informe digital y la nutricionista anota los datos más relevantes en el sistema Reservo. 15 https://reservo.cl Captación de información nutricional La encuesta nutricional que se realiza al paciente durante la consulta se compone de 3 partes: la anamnesis, la encuesta de 24 horas y la encuesta de tendencia de consumo. La sección de anamnesis busca tener una especie de historia clínica del paciente. Se le pre- gunta al paciente sobre su alimentación actual, sobre su digestión, si sufre de algún desorden alimenticio, etc. Esto sirve para reconocer factores de su vida cotidiana que podrían influir en su dieta, por ejemplo: si el paciente suele sufrir de constipación, se le dará una dieta alta en fibra. La encuesta de 24 horas consiste en pedirle al paciente que describa todos los alimentos que consume en un día, indicando: hora, ingredientes, gramaje y estimación de calorías. Esto se utiliza para identificar la rutina alimentaria del paciente, pudiendo reconocer la cantidad de comidas diarias que consume, sus horarios habituales para comer, etc. La pauta nutricional se crea tratando de mantener estos factores. La figura 2.5 muestra la tabla que se utiliza en el sistema Reservo para guardar esta información. Figura 2.5: Sección de encuesta alimentaria de 24 horas en Reservo. En la encuesta de tendencia de consumo se listan distintos tipos de alimentos y se le pide al paciente que indique la frecuencia con que consume este tipo de alimento (cantidad de veces por semana). Esto sirve para adecuar el cálculo de porciones a una que le acomode al paciente y que no sea un cambio tan drástico en su rutina. Por ejemplo, si un paciente consume regularmente alcohol, la dieta que se cree debe considerar alguna porción más saludable de este elemento, ya que removerlo completamente puede resultar en un cambio muy grande que el paciente no va a seguir. 16 Figura 2.6: Sección de tendencia de consumo en Reservo. 2.3.2. Generación de la pauta nutricional Una vez obtenida la información del paciente, se puede comenzar a generar la pauta nutricional siguiendo el proceso descrito en la sección 2.1. Cálculo de requerimientos La nutricionista utiliza una calculadora y los datos guardados en el sistema Reservo para estimar la cantidad de calorías diarias que el paciente debe consumir. En estricto rigor se debería hacer cálculos con distintas fórmulas para luego promediarlos, pero actualmente solo se realiza la fórmula más simple (Carrasco, tabla 2.4). Esto, debido a que la nutricionista debe realizar este cálculo rápido y con una calculadora básica. Finalmente, anota este cálculo en un archivo Excel (figura 2.7). Distribución de macronutrientes La distribución exacta de las calorías de la dieta en los tres macronutrientes depende de diferentes variables y cada nutricionista tiene un método distinto para realizarlo. La regla que sigue actualmente la nutricionista de Nutrifit es: calcular aproximadamente 2 gramos de proteína por cada kilo de peso del paciente, dejar un valor cercano al 25% de las calorías en lípidos y el resto en carbohidratos. Para realizar esto, la nutricionistautiliza la siguiente tabla (fig. 2.7). Esta tabla muestra en su primera fila el total de calorías de la dieta. Luego en la primera columna se muestra cada macronutriente, en la segunda la cantidad de calorías que aporta cada gramo de ese macronutriente, la siguiente columna permite ingresar una cantidad de 17 gramos para cada uno y la última columna muestra los porcentajes que cada macronutriente aporta al total de calorías, según los gramos que ingrese la nutricionista. Figura 2.7: Tabla de cálculo de distribución de macronutrientes. La nutricionista calcula la cantidad de gramos de proteínas utilizando una calculadora y luego lo anota en la tabla 2.7). Luego va ‘probando’ gramos de lípidos hasta que se acerca al 25% y hace lo mismo para estimar el resto de carbohidratos. Cálculo de porciones El archivo Excel antes mencionado tiene una tabla para el cálculo de porciones, la cual se muestra en la figura 2.8. Cada fila de esta tabla muestra un grupo alimenticio. En la parte izquierda de esta se puede ver la distribución de macronutrientes de cada grupo (en gramos por porción). Luego en la columna central se puede ingresar la cantidad de porciones de cada alimento, lo que actualiza la parte derecha de la tabla. Aquellas columnas muestran el gramaje total que las porciones de cada grupo aportan a la dieta. En las ultimas filas se calcula la suma total de las calorías de todos estos alimentos y la suma de cada macronutriente, que debe ser similar a los cálculos hechos en la tabla 2.7. Figura 2.8: Cálculo de porciones. 18 Si bien, la nutricionista tiene una estimación de la cantidad de porciones que una pauta debe tener, estas pueden variar mucho de persona a persona, ya sea por que el paciente no consume algún tipo de alimento o tiene algún tipo especial de dieta. Es por esto que la nutricionista debe ir ‘probando’ con distintas cantidades de porciones hasta encontrar la adecuada. Además, debe asegurarse de considerar el consumo actual que el paciente tiene de cada tipo de alimento, por lo que, debe estar saltando entre el Excel y Reservo para ver la encuesta nutricional. En caso de que el paciente tenga un tipo de dieta especial, por ejemplo: vegetarianismo o veganismo, la nutricionista cuenta con otros archivos Excel con grupos de alimentos que se adecuan mejor a esas dietas. Creación de la minuta Finalmente, la nutricionista pasa esta información a un archivo Docx en Word que tiene una pauta estándar. Ella duplica este archivo y luego lo edita para agregar los datos del paciente. Este archivo tiene cuatro secciones: la minuta de la dieta, una sección de tips y sugerencias, la explicación de las porciones de cada grupo alimenticio y finalmente una ejemplo de minuta semanal. La primera sección, que se puede ver en la figura 2.9, muestra un detalle de cada comida del día. La nutricionista debe editar la cantidad de comidas y horarios en base a lo que le acomode al paciente, por lo que revisa constantemente el sistema Reservo para basarse en la información de la encuesta nutricional. Luego, reparte las porciones de cada grupo alimenticio que se calcularon en las comidas, por lo que, abre constantemente el Excel para hacer calzar la información. 19 Figura 2.9: Fragmento de la minuta de la pauta. La sección de tips y sugerencias muestra una lista de marcas, productos y consejos que se recomiendan al paciente. Esta sección no se modifica al realizar las pautas, pero en algunas ocasiones la nutricionista agrega comentarios específicos para un paciente en esta sección. Luego, se muestra una tabla (figura 2.10) con el detalle de cada grupo de alimentos, indicando qué alimentos pertenecen a ese grupo y cuántos gramos corresponden a una porción. Aquí la nutricionista anota el total de porciones que calculó en el Excel. Finalmente, se incluye una tabla con ejemplos de comidas que incluyen distintos tipos de alimentos. Toda esta sección es estándar y se mantiene igual para todas las pautas. Al igual que con el Excel de cálculo de porciones, la nutricionista tiene otros archivos Word para vegetarianos y veganos. 2.3.3. Explicación al paciente Para explicar la dieta, la nutricionista debe compartir su pantalla con el paciente y explicar la pauta directamente desde Word. Una vez todo queda claro y no se deben hacer más modificaciones, el archivo se exporta a un PDF que luego se le envía por correo electrónico al paciente. 20 Figura 2.10: Fragmento de la explicación de los grupos alimentarios. 21 Capítulo 3 Sistema de ejercicios actual Para poder diseñar una solución adecuada a los problemas de Nutrifit, primero es necesario conocer el sistema que se extenderá. Es por eso que se estudió el software de generación de rutinas de ejercicio a fondo y los conocimientos adquiridos fueron plasmados en este capítulo. En la sección 3.1 se hace una revisión de las principales funcionalidades del sistema, junto con sus respectivas interfaces. La sección 3.2 explica conceptos básicos sobre las tecnologías que fueron utilizadas para desarrollar el programa de ejercicio, lo cuál ayuda a comprender de mejor manera las siguientes secciones y capítulos. La sección 3.3 describe la arquitectura física y lógica del sistema, mientras que la sección 3.4 entrega detalles sobre el modelo de datos existente. Finalmente, la sección 3.5 muestra métricas del código fuente del software. 3.1. Principales funcionalidades e interfaces Este sistema le permite a la kinesióloga de Nutrifit realizar su trabajo de una manera fácil y rápida. Utilizando esta herramienta puede ingresar pacientes, crear y responder encuestas sobre actividad física y generar programas de ejercicio para los pacientes. A continuación se detallan las principales funcionalidades de este software junto con sus interfaces correspon- dientes. 3.1.1. Administración de pacientes La página inicial de esta plataforma tras autenticarse (fig. 3.1) permite administrar los pacientes de Nutrifit, se muestra una lista de todos los pacientes junto con distintas opciones de acciones a realizar. En esta vista se pueden crear, buscar, editar, eliminar o ir al perfil de cada paciente. Al seleccionar ir al perfil de un paciente se muestra la lista de programas y encuestas asociadas a él, junto a botones que permiten la administración de estos elementos (crear, ver o eliminar), tal como se muestra en la figura 3.2. 22 Figura 3.1: Pantalla inicial con lista de pacientes registrados en el sistema. Figura 3.2: Vista del perfil de un paciente. 3.1.2. Encuesta de ejercicio Desde el perfil de un paciente se puede crear, eliminar o ver una encuesta. Cuando la kinesióloga crea una nueva encuesta se le redirige a la vista de la figura 3.3, donde se muestran todas las preguntas del cuestionario y se puede copiar el enlace de la encuesta y enviárselo al paciente. Cuando el paciente abre un enlace a una encuesta podrá ver esta misma vista, sin necesidad de crearse una cuenta de usuario, y podrá responder la encuesta. La kinesióloga al volver a entrar a esta pantalla podrá ver las respuestas del usuario, revisarlas y editarlas de ser necesario. Actualmente, la kinesióloga no envía la encuesta al paciente y rellena ella misma la infor- mación directamente en el sistema. Esto debido a que los trabajadores de Nutrifit consideran que debido a que la encuesta solo contempla preguntas de ejercicio, entonces no aporta la suficiente información para ser relevante el envío de esta antes de la consulta. 23 Figura 3.3: Vista al crear una nueva encuesta. 3.1.3. Programas de ejercicio Cuando la kinesióloga ha terminado de revisar la encuesta puede generar un programa de ejercicio en base a ella. También se puede crear un programa desde cero o clonar uno ya existente desde el perfil del paciente. Las siguientes figuras (3.4 y 3.5) muestran la vista de edición de un programa de ejercicio. Figura 3.4: Pantalla de generación de un programa de ejercicio. 24 Figura 3.5: Rutina en pantalla de generación de un programa de ejercicio. En esta vista se pueden agregarindicaciones al paciente en cuadros de texto que ofrecen algunas opciones de indicaciones predeterminadas, las cuales pueden editarse. También se pueden crear rutinas para distintos días de la semana, cada una de ellas puede contener: rutina de calentamiento, rutina de enfriamiento y ejercicios junto con su número de series, repeticiones, peso de carga, tiempo de descanso y observaciones. Los botones que se pueden ver en el costado derecho permiten, en orden descendente: ver un resumen de la información del paciente, buscar y agregar ejercicios a las rutinas, agregar una rutina en blanco, guardar el programa y descargar el programa. 3.1.4. Descarga de pauta de ejercicio Al apretar el botón lateral que permite descargar el programa, se genera un archivo Docx que contiene la información de la pauta de ejercicio que el paciente deberá seguir (ver figuras 3.6 y 3.7). Este archivo contiene una sección con información del paciente e indicaciones generales de la pauta. Luego, en cada página, se muestra cada rutina con su información correspondiente, como: nombre de la rutina (por ejemplo: ‘rutina de piernas’), días en que se debe ejecutar, una tabla con los ejercicios a realizar y su detalle, y otra página con todas las imágenes de la correcta ejecución de los ejercicios. Finalmente, el archivo tiene una sección con indicaciones e imágenes para el correcto calentamiento y elongación que acompañan cada rutina. 25 Figura 3.6: Información de una rutina de ejercicios en archivo generado. Figura 3.7: Imágenes de una rutina de ejercicios en archivo generado. 3.2. Tecnologías del proyecto Este sistema corresponde a una aplicación web alojada en Amazon Web Services [1]. El backend de esta aplicación fue desarrollado utilizando el lenguaje Python [25], el framework Django [11] y con una base de datos relacional PostgreSQL [32]. Mientras que en el frontend se utilizó el lenguaje Javascript [18] junto con el framework VueJs [37] y la librería VueX [38] para el manejo de estado en la aplicación. 26 A continuación se describe de forma general el funcionamiento de estas tecnologías. 3.2.1. Django y Django Rest Django es un framework de desarrollo web escrito en Python. Los frameworks son un con- junto de componentes que realizan funcionalidades que son típicas al crear un sitio web. Djan- go sigue el patrón de diseño conocido como modelo-vista-controlador y su meta fundamental es facilitar la creación de sitios web complejos, dando énfasis en el re-uso, la conectividad y extensibilidad de sus componentes. Una de las herramientas destacables de Django es su interfaz para acceso a la base de datos, la cual permite crear, recuperar, actualizar y borrar objetos. A esta interfaz se le conoce como el Django Admin. La estructura típica de una aplicación de Django consiste en cuatro secciones principales: las URLs, las vistas, los modelos y las plantillas. La figura 3.8 muestra una ilustración de la interacción entre estas secciones y a continuación se listan sus principales características: Figura 3.8: Interacción entre componentes de Django. • URLs: Django utiliza un mapeador que redirige desde la ruta (URL) de una petición HTTP a la vista apropiada. El mapeador URL puede también emparejar patrones de caracteres o dígitos específicos que aparecen en una URL y los pasan a las vistas como datos. • Modelos: Los modelos son objetos de Python que definen la estructura de los datos de una aplicación y proporcionan mecanismos para gestionar (añadir, modificar y borrar) y consultar registros en la base de datos. • Vistas: Una vista es una función que contiene la lógica necesaria para gestionar in- formación recibida desde peticiones HTTP y devuelve respuestas HTTP. Las vistas acceden a los datos (modelos) que necesitan y realizan acciones sobre ellos para satis- facer las peticiones, y delegan el formateo de la respuesta a las plantillas (templates). 27 • Plantillas: Una plantilla es un archivo de texto que define la estructura de la respuesta HTTP (por ejemplo una página HTML), con marcadores que se utilizan para repre- sentar el contenido real de esta. Una vista puede crear una página HTML usando una plantilla y rellenándola con datos extraídos desde un modelo. Sin embargo, la respuesta no necesariamente es un archivo HTML, puede ser cualquier tipo de archivo. En el caso del sistema de ejercicios no se utiliza la sección de plantillas debido a que se usa un framework en el frontend para generar las interfaces, por lo que se envían directamente los datos de los modelos en la respuesta HTTP. Por otro lado, el Django Rest Framework es una aplicación de Django que permite construir proyectos de software bajo la arquitectura REST, es decir, crea una interfaz entre Django y el frontend a través de una API que usa HTTP para obtener o generar operaciones sobre los datos. Esta herramienta incluye una gran cantidad de código para reutilizar y además genera un sitio web interactivo donde es posible realizar pruebas sobre los endpoints de la API, lo cual agiliza el trabajo de los desarrolladores. Este framework introduce otras dos secciones a las antes descritas: los conjuntos de vistas (o viewsets) y los serializadores (o serializers). La figura 3.9 muestra la interacción entre los componentes de Django y Django Rest. Figura 3.9: Interacción entre componentes de Django y Django Rest. Los viewsets corresponden, como su nombre indica, a agrupar y combinar la lógica de un conjunto de vistas relacionadas entre sí. Esto incluye una abstracción que permite construir automáticamente el mapeador de URLs basándose en algunas convenciones establecidas. Por ejemplo: si se quiere crear una API para administrar frutas, solo basta con crear un viewset e indicarle que se debe vincular con el modelo Frutas y luego se registra en el archivo de URLs. Esto genera automáticamente una API para las frutas con los siguientes endpoints : • Crear: Se puede crear una nueva fruta realizando una petición HTTP de tipo POST a la ruta http://dominio.com/frutas/. 28 • Actualizar: Para actualizar la información de una fruta se debe realizar una peti- ción de tipo POST indicando el id de la fruta en la ruta, de la siguiente manera: http://dominio.com/frutas/ID123/. • Listar elementos: Para listar todas las frutas se debe realizar una petición GET a http://dominio.com/frutas/. • Obtener elemento: Para mostrar una fruta en particular se realiza un petición GET junto a su identificador: http://dominio.com/frutas/ID123/. • Borrar: Para eliminar una fruta se debe hacer una petición DELETE junto con el id de la fruta: http://dominio.com/frutas/ID123/. • Otras acciones: Además, se pueden crear otros endpoints para realizar acciones más especificas, por ejemplo: si se quiere filtrar las frutas según un parámetro se puede crear un endpoint llamado ‘filtro’ que se puede acceder a través de una petición GET del estilo http://dominio.com/frutas/filtro/parametro1/. Estas son las acciones creadas por defecto, pero cada una se puede sobre escribir para personalizar su comportamiento, o se puede agregar características al viewset completo, como por ejemplo: agregar restricciones de autorización o permisos de usuario. La forma en que los endpoints reciben y entregan la información de las frutas es el trabajo de los serializadores. Estos transforman la información compleja de los modelos en tipos de datos que son más simples de manejar y de enviar, además permiten realizar otras acciones sobre los datos, como: filtrar, combinar o crear nuevos datos. También se puede de-serializar datos simples, convirtiéndolos en datos complejos. Durante este proceso los de-serializadores permiten validar los datos recibidos antes de realizar cualquier cambio sobre la base de datos. En este sistema los serializadores transforman la información de los modelos de datos a un formato JSON que luego se envía al frontend. 3.2.2. VueJS y VueX VueJS es un framework de JavaScript para la construcción de interfaces de usuario y apli- caciones. Se centra en la composiciónde componentes, los cuales son, en palabras simples, código encapsulado que extiende desde elementos básicos de HTML. El uso de componentes permite desarrollar proyectos a gran escala compuestos por componentes pequeños, inde- pendientes y reutilizables. La estructura de una interfaz desarrollada utilizando Vue puede abstraerse a un árbol de componentes, tal como se muestra en la figura 3.10. Dentro de cada componente Vue se pueden encontrar tres secciones bien definidas: el template, el script y el style. A continuación se describe brevemente qué es cada una de estas secciones: • Sección de template: Contiene código HTML que forma la estructura del componen- te. Además de una sintaxis especial que permite referenciar otros componentes, datos, métodos y propiedades declarados en el script. 29 Figura 3.10: Abstracción de estructura de una página utilizando componentes de Vue2 • Sección de script : Código Javascript que describe el estado, la lógica y el comporta- miento del componente. • Sección de style: Código CSS que define el estilo de los elementos HTML. El fragmento de código 3.1 muestra un ejemplo de la estructura de un componente simple llamado mi-componente. El cual muestra un título basándose en la información contenida en el script. Código 3.1: Estructura de un componente Vue 1 <template > 2 <h1 class="blue -text"> Hola {{ nombre }} {{ apellido }} !! </h1> 3 </template > 4 5 <script > 6 Vue.component("mi -componente", { 7 data: { 8 nombre: "Daniela", 9 apellido: "Chacon" 10 } 11 }) 12 </script > 13 14 <style > 15 .blue -text: { 16 color: blue; 17 } 18 </style > Ahora mi-componente puede ser utilizado dentro de otros componentes simplemente es- cribiendo la etiqueta <mi-componente/> en su template, el título resultante al hacerlo sería ‘Hola Daniela Chacón !!’. El nombre y apellido almacenados en el componente pueden ser modificados utilizando métodos definidos en el script, lo cual resultaría en una recarga del componente, pero esto no actualiza la página completa, sino que solo los elementos del com- ponente que fueron alterados. A esta característica se le conoce como la reactividad de Vue, la cual permite alterar la página constantemente utilizando llamadas a métodos, condicionales o bucles. Por otro lado, VueX es una librería de VueJS que permite instaurar un patrón de manejo del estado de la aplicación. Este sirve como una fuente única de información para todos los componentes de la página con reglas asociadas para poder mutar esta información. 2Imagen obtenida desde la documentación de Vue en es.vuejs.org/v2/guide/index.html 30 https://es.vuejs.org/v2/guide/index.html 3.2.3. Versionamiento y Entrega Continua El código de este programa está alojado en un repositorio en Github, el cual utiliza el sistema de control de versiones Git. Este repositorio está integrado con AWS Code Pipeline, el cual es un servicio de entrega continua que permite automatizar el lanzamiento y actualización de aplicaciones de manera rápida y fiable. Code Pipeline automatiza las fases de compilación, prueba e implementación del proceso de lanzamiento cada vez que se realiza una modificación en el código alojado en Github. La rama ‘master’ de Github es la que se conecta con Code Pipeline y por lo tanto es una rama protegida, es decir, no se pueden realizar cambios directamente en ella, solo se puede actualizar ese código haciendo un solicitud en Github que debe ser revisada y aprobada antes de incorporar los cambios. Como segunda medida de seguridad este proceso de lanzamiento no realiza las migraciones (cambios) en la base de datos de forma automática, sino que estas se deben hacer manual- mente en el servidor. Esto para evitar cambios no deseados en la base de datos que podrían hacer perder información. 3.3. Arquitectura del sistema 3.3.1. Arquitectura física La arquitectura física del sistema corresponde a un modelo cliente-servidor, donde el usua- rio accede a la plataforma a través de un navegador web y se conecta vía internet al servidor AWS (Amazon Web Services) [1], tal como se muestra en la figura 3.11. Figura 3.11: Arquitectura física del sistema. Más detalladamente, el sistema se encuentra alojado en un servidor Amazon EC2 (Elastic Compute Cloud) [13] con sistema operativo Ubuntu 18.04, una base de datos alojada en Amazon RDS (Relational Database Service) [2] con un motor PostgreSQL 11.5 y se utiliza el servicio Amazon S3 (Amazon Simple Storage Service) [3] para almacenar archivos multimedia. Además, se utiliza el servicio Route 53 [4], el cual es un sistema de nombres de dominio para infraestructura en AWS. Este servicio enruta programas.nftchile.cl a la IP del servidor. 31 http://programas.nftchile.cl 3.3.2. Arquitectura lógica La arquitectura lógica está basada en un modelo de tres capas, el cual consiste en separar las componentes importantes de un sistema de software en tres conjuntos jerárquicos: una capa de presentación o interfaz, otra que se encargue de la lógica de negocios, y por último, una capa donde residen los datos. La figura 3.12 muestra de manera simple cómo interactúan las distintas tecnologías dentro de estas capas. Figura 3.12: Patrón de arquitectura lógica del sistema. La figura 3.13 muestra más detalladamente los módulos en cada una de estas capas y las interacciones entre ellos. En la capa de datos de la figura 3.13 se muestran dos elementos: una base de datos relacional, la cual corresponde a PostgreSQL y guarda la información de los modelos de la aplicación, y además se muestra el almacenamiento de archivos multimedia, es decir, Amazon S3, donde se guardan las imágenes de los ejercicios para las rutinas. En la capa de lógica se muestran seis módulos, a continuación se describe cada uno de ellos junto con su relación a la capa de datos y de presentación. • Users: Este módulo se encarga de las cuentas de usuario de la plataforma, es decir, las cuentas de los trabajadores de Nutrifit, las cuales se leen y escriben en la base de datos relacional. Las interfaces que se vinculan con este módulo son la pantalla de inicio y de inicio de sesión. • Patients: En este módulo se maneja la información de los pacientes, la vista relacionada es la del perfil del paciente. • Polls: Módulo de encuestas, donde se administra todo el funcionamiento de las encues- tas de ingreso. Esta se relaciona principalmente con dos vistas: la de encuesta vista por un paciente y la de encuesta vista por un usuario autenticado. • Programs: Administración de los programas de ejercicio de los pacientes, se relaciona con la vista de generación de programas. • Exercises: Módulo que maneja los ejercicios disponibles en la plataforma, este solo lee 32 Figura 3.13: Arquitectura lógica del sistema basada en un modelo de tres capas. desde la base de datos relacional, ya que la escritura de datos se realiza solo a través del Admin de Django. Al igual que Programs, este módulo se utiliza en la vista de generación de programas. • Django Admin: El administrador de Django tiene acceso para escribir y leer toda la información almacenada en ambas bases de datos. Además, su interfaz gráfica también corresponde al módulo de Django Admin. 3.4. Modelo de datos El equipo que desarrolló este sistema optó por una base de datos relacional. En la figura 3.14 se muestra un esquema de las tablas existentes. En la siguiente lista se detallan las entidades del modelo de datos: • User: Corresponde a las cuentas de los usuarios del sistema, es decir, los empleados de Nutrifit. 33 Figura 3.14: Modelo de datos del sistema. • Notification: Son las notificaciones o avisos que se relacionan a un usuario, actual- mente esta tabla no se está utilizando. • Patient: Cada fila de esta tabla representa un paciente de Nutrifit. Se guarda su información de contacto y algunos datos generales como: nombre, sexo, estatura, etc. • PatientPoll: Esta tabla guarda las respuestas que el paciente da a la encuesta de ejer- cicio. Contiene datos como: nivel de actividad física, instrumentos con los que
Compartir