Blog de Amazon Web Services (AWS)
Apoyando la prescripción médica con Alexa Skills
Por Carlos Balcázar, Arquitecto de Soluciones, Sector Público en AWS Latinoamérica y
Cristian Castellanos, Arquitecto de Soluciones, Sector Público en AWS Latinoamérica
Usando un Skill de Alexa es posible que los médicos prescriban los medicamentos a sus pacientes sin tocar algún teclado o pantalla, solo usando la voz. Esto minimiza el riesgo que algunos dispositivos se conviertan en portadores de bacterias o virus, reduce los errores de transcripción y maximiza el tiempo de interacción entre médico y paciente.
El reporte publicado por la Organización Mundial de la Salud (WHO)¹ presenta que el gasto en salud a nivel mundial había alcanzado los 8.3 trillones de dólares, cerca del 10% del producto interno bruno mundial (GDP). En el 2021, de acuerdo a FDA², 1.4 trillones están relacionados con la medicación, y desafortunadamente por errores en el proceso de prescripción, aproximadamente se administra de manera incorrecta a los pacientes³ el 10% de los medicamentos, generando perdidas económicas y problemas de salud.
Según la organización mundial de la salud (WHO⁴) y la librería nacional de medicina (NIH⁵), las causas más comunes que generan el 50% de los errores en el proceso de prescripción son:
- Distracciones.
- Distorsiones (Escritura, ortografía, nombres no comerciales, problemas de dialecto).
- Semejanza en nombre de medicamentos – NO mencionar el diagnóstico en la prescripción.
- Uso de abreviaciones / Errores en manejo de decimales y escalas (K/m/mg, etc).
Solución
Se plantea usar un sistema de autómata de voz, que pueda entender los términos médicos y a la vez conozca la información de los pacientes y sus posible afecciones. Esto reduciría considerablemente las distorsiones, errores por semejanzas en nombres de medicamentos y el uso de abreviaciones. Se propone el uso de Amazon Alexa como centro de la solución presentada en la siguiente arquitectura:
Alexa es el servicio de voz nativo en la nube de Amazon disponible en los dispositivos de Amazon y de terceros. Con Alexa, puedes crear experiencias de voz naturales para ofrecer a los clientes una forma más intuitiva de interactuar con la tecnología que usan a diario. Los Skills de Alexa son como apps que proporcionan un nuevo canal para tu contenido y servicios. Los Skills de Alexa permiten a los clientes usar su voz para realizar tareas cotidianas, como consultar noticias, escuchar música, jugar y más. Las organizaciones y los individuos pueden publicar habilidades en Alexa Skills Store para llegar y satisfacer a sus clientes en cientos de millones de dispositivos Alexa.
En la solución propuesta el médico tratante (Physician) seguiría los siguientes pasos para generar una prescripción:
- Acceso: El médico invoca el skill de Alexa usando «Alexa, abre asistente médico” e interactúa con él usando la voz de la siguiente manera.
a) Este asistente validará la identidad del médico por medio del backend (AWS Lambda y Amazon Cognito).
b) Esta identidad quedará ligada al dispositivo, de manera que solo se podrán utilizar dispositivos autorizados. - Id Paciente:
a) El skill le preguntará al médico que mencione el nombre del paciente.
b) El médico, podrá mencionar únicamente el nombre o el apellido, o los dos.
c) El skill apoyado en AWS Step Functions buscará el paciente en base de datos en Amazon DynamoDB de pacientes, en caso de encontrar homónimos, el skill le presentará al médico las opciones diferenciadas por segundo nombre, segundo apellido o última cita.
d) El médico confirmará el paciente a tratar. - Prescripción: Alexa le preguntará al médico si desea continuar con el tratamiento.
a) El médico iniciará la prescripción, con el nombre del medicamento, al mismo tiempo el skill consultará el nombre del medicamento en la base de datos de medicamentos en Amazon DynamoDB, cargando información como unidades y tamaños.
b) El skill le preguntará al médico de acuerdo al inventario disponible, las opciones de las unidades, tamaños, regularidad y duración.
c) El médico usando términos habituales de su profesión cómo “miligramos, microgramos, cápsulas, etc.” dará respuesta a las preguntas del skill.
d) Finalmente, el skill repetirá la prescripción al médico para que sea aprobada.
e) El medico aprueba la prescripción de ese medicamento, y puede continuar con el siguiente medicamento para el mismo paciente o terminar la prescripción. - Validación versus el diagnóstico: Una vez cerrada la interacción con el médico, el proceso en AWS Step Functions llama a un modelo de aprendizaje de máquina (machine learning) previamente entrenado en Amazon SageMaker con la información de varios pacientes con el mismo diagnóstico usando un algoritmo de detección de anomalías (Random Cut Forest⁶). Este modelo de SageMaker permite evaluar la probabilidad de un error de dosificación para alguno de los medicamentos al compararlo con las dosis habituales para el mismo diagnóstico de acuerdo al perfil del paciente. Si un valor atípico es detectado, se notifica al médico tratante para que intente corregirlo o confirme la dosificación.
- Validación versus historial del paciente: Una vez terminada la “validación versus el diagnóstico”, el proceso en AWS Step Functions, valida si este tipo de medicamento es altamente recurrente o permanente para el paciente. Si es así, se llama a un análisis de desviación estándar en AWS Lambda para verificar que tan cerca o lejos está la dosificación diaria versus la media aritmética del historial del paciente. Si el valor está fuera de rango, la anomalía es detectada, se notifica al médico tratante para que intente corregirlo o confirme la dosificación.
- En caso de requerirse algún tipo de integración con sistemas externos para lograr una aprobación, AWS StepFunctions es capaz de integrarse con terceros usando AWS Lambda y exponiendo APIs a través de Amazon API Gateway.
- Tanto el personal médico, como los auditores y otros analistas de datos, pueden acceder a tableros de control para hacer seguimiento a los resultados de los tratamientos de los pacientes o analizar las tendencias de la población frente a alguna enfermedad. Para esto, servicios como Amazon Athena, Amazon QuickSight, y Amazon Redshift.
Retomando las 4 causas más comunes de errores de prescripción, a continuación se presenta cómo se mitiga cada una de ellas.
- Distracciones
o La identificación del paciente se realiza consultando la base de datos de pacientes
o La identificación del medicamento se realiza consultando la base de datos de medicamentos
o La prescripción es analizada buscando anomalías vs los datos de personas con el mismo diagnóstico y en caso de tratamientos recurrentes, se busca anomalías vs el histórico del paciente.
- Distorsiones (Escritura, ortografía, nombres no comerciales, problemas de dialecto)
o La identificación del medicamento se realiza consultando la base de datos de medicamentos, la cual debe ser alimentada por el sistema de inventario.
- Semejanza en nombre de medicamentos cuando no se menciona el diagnóstico en la prescripción
o La identificación del medicamento se realiza consultando la base de datos de medicamentos, la cual debe ser alimentada por el sistema de inventario y se incluye el diagnóstico en la prescripción.
- Uso de abreviaciones / Errores en manejo de decimales y escalas (K/m/mg, etc)
o Las unidades y tamaños son obtenidos del inventario existente y la dosificación se contrasta con información de referencia.
Deep Dive
Amazon Alexa
Alexa es el servicio que permite al médico usar la voz para interactuar con la solución, Alexa está compuesta de 3 tecnologías: ASR, NLU y Sintetizador. Siendo el ASR (Automatic Speech Recognition) el encargado de convertir el lenguaje hablado en texto, luego el NLU (Natural Language Understanding) es responsable de entender e identificar el sentido o la intención de las frases que dice el usuario. Finalmente el sintetizador o TTS (Text To Speech) toma las respuestas de texto del NLU y las convierte en un audio entendible para el ser humano.
Como estas 3 tecnologías están integradas en el servicio Alexa, a continuación se explica la configuración del NLU, que es donde de definen las conversaciones:
Intents (intenciones): Definen las intenciones que se buscarán en la conversión, se pueden configurar por medio de ejemplos de manera que el NLU pueda aprender a detectar la intención. El skill desarrollado en este blogpost usa 9 intents:
- AMAZON.CancelIntent
- AMAZON.HelpIntent
- AMAZON.StopIntent
- HelloWorldIntent
- AMAZON.NavigateHomeIntent
- pacienteIntent
- CambiarInfoPaciente
- diagnosticoIntent
- planMedicacionIntent
Slot Types (Tipos de información): Es la información valiosa que se captura desde las frases dichas por el usuario, por ejemplo, el usuario dice: “dame un vaso de agua”, podría tener 3 slot types: “un” cantidad (numérico), “vaso” recipiente (lista) y “agua” tipo de fluido (lista). Alexa tiene preconfigurados varios slot types o se pueden personalizar. Para este skill se personalizaron:
- antecedenteSlotType
- apellidoSlotType
- epsSlotType
- medicamentoSlotType
- medioSlotType
- nombreSlotType
- presentacionSlotType
- regularidadSlotType
- unidadSlotType
Como backend de Alexa, fueron desarrolladas funciones en AWS Lambda, desde las cuales es posible integrar los demás servicios de AWS. Desde AWS Lambda se invoca el flujo de trabajo diseñado en AWS Step Functions.
AWS Step Functions
Servicio que permite crear y administrar flujos de trabajo de manera gráfica. Estos flujos de trabajo pueden orquestar microservicios, automatizar procesos o incluyo apoyar el desarrollo de aplicaciones distribuidas por medio de pasos llamados “estados”. A continuación, se presenta el resumen del flujo de trabajo usado en la solución:
- El flujo de trabajo inicia con los datos del paciente y medicación provistos por la skill de Alexa. Luego los pasos (estados): “Datos del Paciente Disponible” y “Tratamiento Disponible?” validan que la información esté en la entrada del flujo, de lo contrario se genera un error (“Fail State”).
- Una vez se tiene la información, el flujo pasa al estado “revisa base Paciente” el cual invoca una función Lambda para verificar que la medicación ordenada esté en unos rangos válidos a partir del historial de medicamentos suministrados al paciente. En caso que no se cumpla con esa verificación, se notifica al doctor vía correo electrónico (AWS SES) de la posible anomalía para que autorice o modifique. En caso que la verificación sea exitosa, se continúa con el flujo.
- El estado “revisa base de enfermedad SageMaker” invoca una función Lambda que consume un punto de enlace (endpoint) de SageMaker el cual llama un modelo de machine learning para asignar un puntaje al medicamento ordenado contra el historial de la población con el mismo perfil y a la enfermedad a tratar. Si la medicación es una anomalía, se notifica al médico para que haga una validación adicional, de lo contrario, el flujo continúa.
- Una vez terminadas las validaciones previas, se registra la medicación y se llama el siguiente estado para que se ejecute en paralelo dos flujos.
- El estado “envía a paciente”, invoca una función Lambda que envía una notificación con SES al paciente con la medicación ordenada.
- En paralelo, se invocan unas funciones Lambda que consultan a una API externa simulando una verificación del medicamento dentro del plan de salud del Ministerio de Salud, y una vez recibida la respuesta, se finaliza el flujo.
Lago de datos
Es un repositorio centralizado que permite almacenar datos estructurados y no estructurados a cualquier escala. En el lago de datos es posible almacenar datos crudos, sin necesidad de estructurarlos primero, lo cual permite ejecutar diferentes técnicas de analítica y aprendizaje de máquina de manera ágil.
En el anterior diagrama se detalla la interacción del backend desde la orquestación de Step Functions hasta las diferentes fuentes de datos:
- Desde el flujo de trabajo de Step Functions (ver Figura 2) se invocan las funciones Lambda que se encargan de consultar o escribir datos clínicos en las diferentes fuentes.
- La función Lambda Revisa base de pacientes, se conecta con Athena para ejecutar un consulta SQL del historial de medicación del paciente y validar si la dosificación está dentro de los rangos.
- Athena permite consultar datos no estructurados directamente sobre S3 aprovechando el cátalogo de datos de Glue que gestiona los metadatos.
- Una vez validada la información de medicación provista por el médico, se registra la orden en DynamoDB.
Base de datos
Como base de datos de configuraciones y parametrización se usó Amazon DynamoDB, Es una base de datos NoSQL , de tipo llave valor, administrada por AWS y serverless, diseñada para atender requerimientos de aplicaciones con un esquema de datos dinámico y con baja latencia.
Las tablas que se configuraron en Amazon DynamoDB fueron: pacientes, medicamentos, usuarios y médicos. A continuación algunas muestras de la información de las tablas:
Aprendizaje de máquina (Machine Learning)
Detectar anomalías en un conjunto de datos con múltiples variables como enfermedad, diagnóstico, medicamentos, edad, género, alergias, ubicación, nivel económico, etc., resulta muy difícil aplicando técnicas tradicionales. El reto es mayor cuando se considera que cada día hay nuevos tratamientos que requieren más variables. La mejor solución es utilizar técnicas de aprendizaje de máquina (ML) que permite construir modelos a partir de datos complejos, aplicando diferentes algoritmos, en este caso Random Cut Forest (RCF), un algoritmo no supervisado que permite detectar anomalías sobre un conjunto de datos.
Amazon SageMaker permite entrenar un modelo a partir de este u otros algoritmos sin preocuparse por los servidores o motores de ML. SageMaker es un servicio totalmente administrado que incluye herramientas de ML y flujos de trabajo.
Usando un SageMaker notebook se desarrollaron los scripts que limpiaban y normalizaban los datos, después se alistaron los datos para ML usando técnicas como variables dummy, corrimientos, etc. Estos datos se usaron para entrenar el modelo y finalmente usando SageMaker Endpoint se publicó un sistema de inferencia aplicando el modelo previamente entrenado. Este endpoint es consumido por funciones Lambda para invocar el análisis de anomalía de la prescripción específica.
Conclusiones
Usando servicios de Amazon y aprendizaje automático es posible apoyar a organizaciones de salud a mejorar el proceso de prescripción de medicamentos y optimizar procesos operativos. Una prescripción exacta y sin errores permite aumentar la calidad de vida de los pacientes.
Interactuar usando la voz resulta la manera más rápida y natural de expresar una idea o un requerimiento. Alexa y los servicios de AWS permiten a los médicos hacer sus requerimientos por medio de la voz, incluso en un contexto médico, siendo posible para Alexa aprender nuevos términos especializados.
Bibliografía
¹ https://www.who.int/publications/i/item/9789240017788
² https://www.fdanews.com/ext/resources/files/2021/04-30-21-IQVIA.pdf?1619810914
³ https://www.ncbi.nlm.nih.gov/books/NBK519065/
⁴ https://apps.who.int/iris/bitstream/handle/10665/252274/9789241511643-eng.pdf?sequence=1
⁵ https://www.ncbi.nlm.nih.gov/books/NBK519065/
⁶ https://docs.thinkwithwp.com/sagemaker/latest/dg/randomcutforest
Sobre los autores
Carlos Balcazar es Arquitecto de Soluciones, ha apoyado a múltiples organizaciones de gobierno en su viaje a la nube. Igualmente ha liderado empresas de tecnología en modelos ISV.
Cristian Castellanos es Arquitecto de Soluciones para el Sector Público. Cristian ha ayudado a múltiples instituciones del sector salud en la adopción de nuevas tecnologías e implementación de soluciones de analítica sobre AWS.