Aviso Importante
Nota: MediApp es un proyecto educativo y no está diseñado ni probado para su uso en el cuidado de pacientes reales. Su propósito es ilustrar el potencial de las aplicaciones de tecnología en el apoyo a personas con Alzheimer, pero no debe utilizarse como un sustituto de sistemas de cuidado profesional. Los cuidadores y profesionales médicos deben recurrir a herramientas y equipos probados para cualquier tipo de cuidado de salud.
Descripción Técnica de la Solución
MediApp es una aplicación Android desarrollada con React Native que permite a cuidadores configurar recordatorios de medicación para pacientes con Alzheimer. La solución consiste en una aplicación móvil que envía alertas y un programa en micro:bit que muestra notificaciones visuales y sonoras.
- Configuración del Organizador de Pastillas:
El usuario, generalmente un cuidador, configura el organizador de pastillas especificando el número de filas y columnas.
- Generación de Etiquetas en PDF:
Una vez configurado el organizador, el usuario puede generar un archivo PDF que contiene etiquetas identificativas para cada celda del organizador. Este PDF puede imprimirse y colocar las etiquetas en las celdas del organizador físico.
- Creación de Medicamentos:
El usuario registra cada medicamento, especificando el nombre y la frecuencia de administración. La administración puede programarse por fechas y horas específicas o a intervalos regulares.
- Asignación de Medicamentos al Organizador:
Luego, el usuario asigna cada medicamento a una celda del organizador configurado, colocando físicamente el medicamento en la celda correspondiente.
- Notificación de Toma de Medicamentos:
Cuando es hora de tomar el medicamento, la aplicación envía una notificación en pantalla completa al dispositivo Android, mostrando la etiqueta de la celda y el nombre del medicamento. Simultáneamente, el dispositivo micro:bit muestra la etiqueta de la celda y emite una alerta sonora para informar al paciente.
- Interacción con la Notificación:
El paciente puede posponer la notificación hasta dos veces, usando el botón en el micro:bit o en la pantalla del teléfono. Alternativamente, el paciente puede confirmar que el medicamento ha sido tomado, lo cual actualiza el estado del medicamento en la aplicación.
- Uso del Servicio en Segundo Plano:
La aplicación mantiene una conexión continua con el micro:bit mediante un servicio en segundo plano, asegurando que las notificaciones se envíen correctamente y se reciban los comandos del micro:bit.
Listado de Materiales y Herramientas
- Dispositivos Físicos:
- Micro:bit v2.1 - 1 unidad
- Estuche de baterías AAA para el micro:bit (portabilidad)
- Cable USB-A a microUSB (para programar y conectar el micro:bit)
- Cable USB-A a USB-C (para conectar el teléfono Android al Mac)
- Teléfono Android para pruebas
- Software y Librerías:
- React Native con TypeScript y algo de Kotlin (para desarrollo de la aplicación Android)
- Notifee (gestión de notificaciones programadas y en pantalla completa)
- React Native HTML-to-PDF (para generación de PDF de etiquetas del organizador de pastillas)
- Lodash (para funcionalidades como debounce)
- Date-fns (formato de fechas localizadas)
- Font Awesome (iconos de la interfaz)
- Herramientas de Desarrollo:
Diseño Técnico de la Aplicación
La aplicación MediApp sigue principalmente el patrón de arquitectura MVC (Modelo-Vista-Controlador), organizando la lógica de negocio, la gestión de datos y la presentación en componentes separados para mantener la claridad y escalabilidad del código.
Componentes Principales
- React Contexts:
Se utilizan varios contextos de React para mantener los datos sincronizados a lo largo de la aplicación. Esto permite compartir y actualizar el estado entre diferentes componentes de manera eficiente, asegurando que los cambios en la configuración de pastillas, los medicamentos y los recordatorios se reflejen en toda la aplicación.
- Almacenamiento Permanente con Async Storage:
La aplicación emplea Async Storage para almacenar datos de manera persistente, garantizando que la configuración del organizador de pastillas y los registros de medicamentos permanezcan disponibles después de cerrar la aplicación. Las entidades se almacenan como JSON, utilizando UUIDs como identificadores para evitar referencias circulares.
- Entidades Clave:
La lógica de datos de la aplicación se centra en tres entidades principales:
- Pillbox (Organizador de Pastillas): Define la estructura del organizador de pastillas (filas y columnas) y los elementos que contiene.
- Medication (Medicamento): Registra los detalles de cada medicamento, incluyendo nombre, dosis, y horario.
- PBCell (Celda de Organizador): Representa cada celda dentro del organizador de pastillas, asociada a un medicamento específico en una posición particular.
- Comunicación con el micro:bit mediante Bluetooth UART:
La comunicación con el dispositivo micro:bit se realiza a través del servicio UART de Bluetooth, permitiendo el envío y recepción de datos. Esto permite que el dispositivo micro:bit muestre notificaciones y reciba respuestas del usuario, como posponer o confirmar la toma de un medicamento.
- Servicio en Segundo Plano para la Conexión Bluetooth:
La lógica Bluetooth se gestiona completamente dentro de un servicio en segundo plano, que mantiene la conexión con el micro:bit y gestiona la transmisión de datos. Este enfoque asegura que la conexión Bluetooth permanezca activa y confiable, incluso si la aplicación está en segundo plano.
- Comunicación entre Actividades y el Servicio en Segundo Plano:
Dado que la lógica Bluetooth reside en el servicio en segundo plano, las actividades en la aplicación se comunican con este servicio mediante un EventEmitter. Este diseño basado en eventos permite que las actividades envíen y reciban actualizaciones de estado, garantizando una experiencia de usuario fluida.
Consideraciones Adicionales de Diseño
- Uso de UUIDs:
Todas las entidades en la aplicación se identifican mediante UUIDs. Esto facilita el almacenamiento de datos en JSON y evita referencias circulares, que pueden causar problemas de almacenamiento y recuperación de datos.
- Patrón de Arquitectura MVC:
La separación de responsabilidades a través del patrón MVC simplifica el mantenimiento del código y mejora la escalabilidad de la aplicación, permitiendo agregar nuevas características de manera más estructurada.
- Soporte de Notificaciones en Pantalla Completa:
El diseño de la aplicación soporta notificaciones estilo alarma en pantalla completa, cruciales para los recordatorios. Este componente se implementa cuidadosamente para superar las limitaciones de React Native en cuanto a actividades de notificación.
Código Fuente
El código fuente de MediApp está disponible en el repositorio de GitHub, donde se puede acceder a la aplicación completa para Android y al programa para el dispositivo micro:bit.
Pruebas y Resultados
Supuestos de Diseño para Apoyar a Pacientes con Alzheimer
Al diseñar MediApp, nos enfocamos en crear una solución que aborde directamente las dificultades cotidianas que enfrentan los pacientes con Alzheimer, centrándonos en la simplicidad, la claridad y la accesibilidad. Las decisiones de diseño se tomaron para asegurar que la aplicación sea intuitiva y útil tanto para los pacientes como para sus cuidadores.
- Medicamento Único por Celda:
Cada celda del organizador de pastillas está limitada a un solo medicamento. Esto ayuda a reducir la confusión que podría surgir si se mezclaran varias medicaciones en una misma celda, haciendo más fácil para el paciente identificar la dosis correcta en cada toma.
- Notificaciones en Pantalla Completa:
Las notificaciones de la aplicación están diseñadas para ocupar toda la pantalla y parecer una alarma, asegurando que el recordatorio sea visible incluso si el teléfono está bloqueado. Esto facilita que el paciente vea el recordatorio sin perderse detalles críticos.
- Conectividad Continua con micro:bit:
El dispositivo micro:bit actúa como un recordatorio portátil que emite alertas visuales y sonoras. Una conexión Bluetooth en segundo plano asegura que el micro:bit esté siempre sincronizado con la aplicación, manteniendo al paciente informado incluso si el teléfono no está en uso activo.
- Interfaz Multilingüe y Adaptativa:
La aplicación ofrece soporte multilingüe para inglés, español y ruso. Además, la selección de idioma se guarda de forma persistente, de modo que no es necesario volver a configurarla, lo que facilita su uso en diferentes contextos y evita la confusión.
Dificultades y Soluciones Implementadas
- Gestión de Conectividad sin Emulador:
Sin un emulador para simular la conectividad Bluetooth, las pruebas debieron realizarse con el hardware real, lo que incrementó el tiempo de desarrollo. Para minimizar el impacto en el usuario final, la aplicación mantiene una conexión constante con el micro:bit en segundo plano, permitiendo una reconexión automática y rápida.
- Notificaciones Persistentes en Modo "No Molestar":
Para asegurarnos de que las notificaciones no pasen desapercibidas, diseñamos una actividad de pantalla completa estilo alarma que sobresale de otras aplicaciones y funciones del teléfono. Incluso en modo “No Molestar”, estas notificaciones son visibles para el paciente o cuidador.
- Arquitectura Basada en Eventos para Sincronización:
Implementamos una arquitectura de eventos para la comunicación entre el servicio en segundo plano y las actividades principales de la aplicación. Esto permite que las notificaciones, el estado de la conexión y las respuestas del micro:bit lleguen sincrónicamente, brindando una experiencia de usuario sin interrupciones.
- Diseño Adaptativo para el Organizador de Pastillas:
La vista previa del organizador de pastillas se adaptó para ser clara y accesible, independientemente del tamaño del organizador. Con etiquetas únicas por celda, el diseño es intuitivo, ayudando a los pacientes a identificar fácilmente cada dosis.
Resultados
- Conectividad Bluetooth Estable:
La aplicación mantiene una conexión estable y confiable con el micro:bit, logrando que el paciente reciba alertas portátiles en el dispositivo y pueda responderlas mediante los botones del micro:bit.
- Notificaciones Claras y Efectivas:
Las notificaciones de pantalla completa en estilo alarma permiten al paciente ver claramente la medicación que debe tomar, la celda en el organizador donde se encuentra y la opción de posponer o confirmar la toma.
- Interfaz de Configuración del Organizador:
La interfaz adaptativa permite a los cuidadores organizar el organizador de pastillas y asignar medicamentos de manera visual y ordenada, haciendo el proceso más intuitivo para los pacientes.
- Generación de Etiquetas en PDF:
Las etiquetas en PDF ayudan a los cuidadores a organizar físicamente el organizador, permitiendo que el paciente relacione visualmente las alertas de la aplicación y el micro:bit con la celda correcta en el organizador.
- Soporte Multilingüe Persistente:
La persistencia de idioma permite a la aplicación adaptarse a varios entornos culturales y lingüísticos sin necesidad de configuraciones repetidas, lo cual beneficia tanto a pacientes como a cuidadores.
En conjunto, estas características hacen que MediApp sea una herramienta confiable y accesible para ayudar a los pacientes con Alzheimer a tomar su medicación de forma segura y efectiva. La aplicación facilita tanto a los pacientes como a los cuidadores la organización y el recordatorio de la medicación, aprovechando tecnología portátil y notificaciones visuales y auditivas.
Diseño del Flujo Principal
El flujo principal de MediApp se desarrolló con el objetivo de crear una solución accesible y fácil de usar para pacientes con Alzheimer y sus cuidadores. A continuación, se describen los elementos clave del diseño y las razones detrás de cada decisión:
Organizador de Pastillas Personalizable
La estructura del organizador de pastillas permite a los cuidadores configurar el número de filas y columnas de acuerdo con la necesidad del paciente, manteniendo así un diseño adaptable. Este organizador visualiza cada dosis de manera única, lo cual facilita que el paciente encuentre y tome la medicación sin confundirse.
Generación de Etiquetas en PDF
Para aumentar la claridad y reducir el riesgo de error, MediApp ofrece una función para generar etiquetas en PDF para cada celda del organizador. Estas etiquetas están personalizadas con identificadores únicos, como “A1” o “B2”, y pueden imprimirse y colocarse en el organizador físico. De este modo, el paciente puede asociar visualmente la medicación con la celda correcta cada vez que recibe una notificación.
Vista Previa del Organizador en la Aplicación
La vista previa del organizador de pastillas en la aplicación permite a los cuidadores visualizar la disposición de los medicamentos antes de la impresión de etiquetas y la asignación física de las dosis. Esto asegura que la configuración de los medicamentos sea clara y organizada, minimizando la posibilidad de errores en la asignación y facilitando el seguimiento de las tomas.
Asignación de Medicación a Celdas
El diseño de MediApp sigue una regla de "un medicamento por celda". Esta decisión se tomó para reducir la carga cognitiva del paciente y ayudar a los cuidadores a organizar las dosis de manera eficiente. Al asignar un medicamento específico a cada celda, el paciente puede identificar fácilmente qué medicación debe tomar en cada momento, evitando confusiones que podrían ocurrir con múltiples medicamentos en una misma celda.
Recordatorios de Toma de Medicación
Cuando llega el momento de tomar una medicación, MediApp envía una notificación de pantalla completa que muestra el nombre del medicamento y la etiqueta de la celda (como “A1”). Además, el dispositivo micro:bit muestra la etiqueta de la celda y emite un sonido, ofreciendo un recordatorio auditivo y visual. Esto proporciona una experiencia accesible para el paciente, quien puede recibir el recordatorio de manera clara y sencilla.
Justificación del Flujo
El flujo de MediApp fue diseñado considerando las necesidades únicas de los pacientes con Alzheimer y sus cuidadores. La personalización del organizador, junto con las etiquetas físicas, ayuda a que el paciente relacione los recordatorios digitales y auditivos con el organizador físico, logrando una experiencia intuitiva y amigable. Al ofrecer un flujo claro y visualmente accesible, MediApp facilita la organización de medicamentos, disminuye el riesgo de errores y apoya una toma de medicación segura y constante.
<
Dificultades y Soluciones Implementadas
Durante el desarrollo de MediApp, enfrentamos varios desafíos técnicos y de diseño que exigieron soluciones específicas para mantener la aplicación sencilla y accesible para los pacientes con Alzheimer y sus cuidadores. A continuación se detallan las dificultades principales y las soluciones implementadas:
- Conectividad Bluetooth sin Emulador:
La falta de un emulador de Bluetooth nos obligó a probar la conectividad usando un teléfono y un dispositivo micro:bit físico, lo cual ralentizó el proceso de desarrollo.
- Solución: Implementamos un servicio en segundo plano para mantener activa la conexión Bluetooth entre el dispositivo y el micro:bit. Esto asegura que el paciente reciba recordatorios visuales y sonoros sin intervención manual, facilitando el uso continuo de la aplicación.
- Notificaciones en Pantalla Completa en Modo "No Molestar":
Activar notificaciones de pantalla completa en dispositivos con “No Molestar” habilitado fue un desafío en React Native.
- Solución: Diseñamos una actividad de notificación en estilo alarma que sobresale de otras aplicaciones, asegurando que el recordatorio sea visible independientemente de la configuración del dispositivo. Esto permite que el paciente reciba el recordatorio a tiempo en cualquier circunstancia.
- Sincronización entre el Servicio en Segundo Plano y las Actividades de la Aplicación:
La comunicación entre el servicio en segundo plano y las actividades de la aplicación requería una arquitectura de comunicación fluida.
- Solución: Implementamos una arquitectura basada en eventos mediante un EventEmitter, permitiendo que el estado de la conexión y las notificaciones se sincronicen en tiempo real. Esto brinda una experiencia fluida y sin interrupciones tanto para el paciente como para el cuidador.
- Adaptación Visual del Organizador de Pastillas:
Crear un organizador de pastillas adaptativo que funcione en diferentes tamaños de dispositivos y configuraciones fue un desafío.
- Solución: Desarrollamos una vista previa adaptable y fácil de interpretar que permite a los cuidadores configurar celdas y asignar medicamentos de forma intuitiva. Esto ayuda al paciente a relacionar el recordatorio digital con la celda correcta en el organizador.
- Persistencia del Selector de Idioma:
La necesidad de soportar múltiples idiomas con persistencia a través de reinicios planteó retos de implementación.
- Solución: Logramos que el idioma seleccionado se guarde y persista entre sesiones, permitiendo al cuidador ajustar el idioma una sola vez. Esta solución mejora la accesibilidad para usuarios en distintos contextos culturales y evita posibles confusiones.
Gracias a estas soluciones, MediApp se convierte en una herramienta accesible y fiable para los pacientes y sus cuidadores, permitiendo una toma de medicación segura y constante a través de recordatorios claros y sincronizados con el organizador físico y el dispositivo micro:bit.
Limitaciones del Proyecto
Aunque MediApp demuestra cómo la tecnología puede ayudar a los pacientes con Alzheimer, existen varias limitaciones que deben tomarse en cuenta antes de considerar su uso más amplio. Estas limitaciones resaltan los desafíos en la implementación y el uso práctico del sistema.
- Micro:bit como dispositivo portátil: La usabilidad del micro:bit como dispositivo portátil para pacientes no es ideal, ya que no está diseñado para llevarse como un accesorio de uso diario. Aunque una carcasa personalizada impresa en 3D podría mejorar la portabilidad, sigue siendo una solución cuestionable en comparación con dispositivos diseñados específicamente para llevarse puestos.
- Requisitos de conexión continua: Para enviar notificaciones, el micro:bit depende de la conexión Bluetooth al teléfono. Esta conexión se pierde fácilmente si el paciente se aleja del dispositivo. Aunque una solución sería implementar una lógica de notificación autónoma en el programa del micro:bit, esto puede complicar el flujo y la experiencia del usuario.
- Dependencia en teléfonos Android: MediApp asume que el paciente tiene acceso a un teléfono Android, lo cual puede ser poco práctico, ya que los smartphones pueden ser difíciles de manejar o frágiles para los pacientes. La necesidad de una interfaz más accesible o dispositivos alternativos sería ideal en un contexto real.
- Falta de notificaciones para el cuidador: Actualmente, MediApp no incluye un sistema de notificaciones para el cuidador, quien debe revisar directamente el teléfono del paciente para verificar el estado de la medicación. La implementación de notificaciones remotas para el cuidador sería un avance importante en la usabilidad de la aplicación.
Resumen
Desarrollar MediApp fue un desafío interesante y gratificante. A pesar de que mi especialidad es el desarrollo backend y mi experiencia se centra principalmente en TypeScript, abordar un proyecto de desarrollo móvil fue una experiencia educativa que me permitió expandir mis habilidades.
Este proyecto se creó con el propósito exclusivo de servir como herramienta educativa, explorando cómo la tecnología puede apoyar a pacientes con Alzheimer. Como tal, MediApp no está diseñado para su uso en entornos de cuidado reales, y no existen planes para un desarrollo adicional o una implementación fuera de este contexto de aprendizaje.
A lo largo del desarrollo, enfrenté y resolví varios desafíos técnicos, especialmente en la conexión y sincronización de dispositivos mediante Bluetooth y la creación de una experiencia accesible para el usuario final. Este proyecto ha sido una valiosa oportunidad para aprender y experimentar con tecnologías móviles, reafirmando la importancia de un diseño centrado en el usuario en aplicaciones de salud.