Logo Studenta

Desenvolvimento de Plataforma Nutrifit

¡Este material tiene más páginas!

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

Continuar navegando