Producto .NET que salva vidas

En algunas situaciones de la vida, debe actuar muy rápido. A veces, esta condición es imposible: por ejemplo, es simplemente imposible sin mucha suerte en muy poco tiempo encontrar a una persona con un tipo de sangre raro, que también esté lista para compartirla. Los chicos crearon un producto llamado DonorUA, que realmente ayuda a salvar vidas usando el bot de chat. Más detalles debajo del corte.



Doy la palabra al autor.

Hace unos años, en un hackathon para crear servicios sociales, traté de desarrollar un proyecto para automatizar las quejas sobre la operación de viviendas y servicios comunales. El desarrollo progresó fuertemente, la versión demo era compleja y tecnológicamente avanzada, por lo que el jurado no evaluó ni el esfuerzo ni la idea en sí. Pero en este evento, conocí a una niña, la directora de una organización pública, que había estado lidiando con varios problemas en el campo de la donación de sangre en Ucrania durante varios años. Palabra por palabra, y ya eres cofundador de un nuevo proyecto.

En ese momento, no sabía nada sobre la donación de sangre. El único conocimiento era que las personas a veces donan sangre a otras personas. Cómo está organizado, con qué problemas vive esta esfera, cuánto cuesta y dónde estamos, para mí fue un completo misterio.

Con una vasta experiencia en la automatización de procesos y la escritura de sistemas empresariales, decidí que crear una base de datos y automatizar ciertos procesos no tomaría mucho tiempo.

Primero, resultó que el país carece de un registro unificado de donantes de sangre. Luego descubrí que, sin excepción, todas las organizaciones nacionales de donantes, en el mejor de los casos, usan un archivo Excel con una lista de donantes, sus teléfonos y tipo de sangre. Cuando llegó la solicitud de búsqueda de donantes, los empleados de la organización se sentaron al teléfono y comenzaron a llamar a todos seguidos con la esperanza de que alguien respondiera. Como saben, la efectividad de este enfoque fue casi nula.



En todos los países, la legislación en el campo de la donación es muy, muy estricta. Por ejemplo, en Ucrania no puede donar sangre durante todo un año si se ha perforado o tatuado, o un par de meses si fue a un país exótico o simplemente cambió de pareja. La lista de contraindicaciones y limitaciones a la donación ocupa más de una página.

En los países desarrollados, donde no hay problemas obvios con la sangre donada, el problema se resuelve de manera bastante simple: el estado financia generosamente esta área. En los países menos desarrollados y subdesarrollados, la deficiencia de sangre de los donantes puede ser de hasta el 90%, lo que hace que la sangre sea un producto costoso y crea un enorme mercado oculto. Además, en muchos países postsoviéticos, el estado a menudo se abstrae de la búsqueda de donantes, transfiriendo la responsabilidad a los familiares de pacientes que, de hecho, necesitan sangre de donantes. Y dado que la vida del paciente depende en gran medida de si recibió la transfusión a tiempo o no, la cuestión de una búsqueda rápida de donantes se convierte, sin exagerar, en la cuestión de "vida y muerte".

Como resultó más tarde, esto está lejos de todos los problemas, por lo que el proyecto durante "dos semanas" se ha convertido en algo mucho más.

Primeros pasos


Un verdadero comienzo del proyecto es la participación en la conferencia IDCEE 2014, en cuyo marco se llevó a cabo el hackathon sobre innovación social. Ese día ganamos, y nos quedó claro que el tema era interesante, importante, así que con gran entusiasmo comenzamos a implementar el proyecto. Voila, y después de 4 meses, en la primavera de 2015, lanzamos la primera versión que contiene una base de datos de receptores y donantes de tabletas Excel, así como un mecanismo bastante simple para seleccionar donantes y receptores. Mirando hacia el futuro, diré que el sistema de recomendaciones ha sufrido una gran cantidad de cambios y actualmente tiene en cuenta de 10 a 15 parámetros diferentes.

El primer punto de inflexión ocurrió un mes y medio después del lanzamiento del proyecto, cuando los coordinadores pudieron encontrar un donante por primera vez dentro de los 15 minutos posteriores a la publicación de la solicitud en el sitio. Seré honesto: muchos en nuestra organización reaccionaron con gran escepticismo a la automatización y al sistema que se está desarrollando. Pero después de que el sistema completó la primera tarea, ganamos la confianza de que nos estábamos moviendo en la dirección correcta.

A finales de 2015, ya había unos 4.000 donantes en la base de datos, lo que permitió cerrar al menos la mitad de las solicitudes de búsqueda de donantes. La segunda mitad se cerró a la antigua usanza, utilizando el teléfono. Todo 2015 pasó en la lucha del viejo enfoque y el nuevo. Al final, el nuevo enfoque ganó. Prohibimos buscar donantes por teléfono y usar Excel, restringimos el acceso al sistema a todos los coordinadores sin excepción y desconectamos todas las líneas telefónicas. Nos dimos cuenta de que necesitamos un coordinador de plataforma único que tendrá una tarea: buscar donantes utilizando los medios habituales del sistema DonorUA. Fue doloroso, tuve que apretar algo, pero como resultado, el sistema funcionó completamente y nos dimos cuenta de que podíamos cerrar más aplicaciones. Pero nadie sabía sobre el proyecto (una de las publicaciones ucranianas más famosas en una sola publicación sobre nuevos proyectos sociales en 2015 ni siquiera mencionó una palabra sobre nuestro proyecto), respectivamente, un pequeño número de personas se dirigió a nosotros. A pesar de la gran cantidad de publicaciones sobre búsqueda de donantes en Facebook / Twitter / Vkontakte. Y luego ...

Monitoreo de redes sociales


... Hice una propuesta a la empresa YouScan, que se dedica a monitorear las redes sociales en ru- y ukrnet. Su sistema está dirigido a grandes y medianas empresas y, francamente, mi propuesta de utilizar su sistema para encontrar mensajes de búsqueda de donantes los ha desanimado. El representante de la compañía se tomó un descanso para realizar varias pruebas y regresó unos días después con información de que nuestra hipótesis era correcta y que su sistema se adapta bien a la tarea de encontrar mensajes. Por lo tanto, en un instante, tuvimos la oportunidad en tiempo real de monitorear todos los mensajes sobre el tema y responderlos rápidamente. Este enfoque nos permitió convertirnos en un líder en redes sociales: en la mayoría de las publicaciones sobre búsqueda de donantes hay un enlace a nuestro proyecto en los comentarios, y encontramos otras publicaciones a través de YouScan. Después de encontrar cualquier mensaje, contactamos a los autores de las publicaciones y ofrecemos diferentes opciones de cooperación.

El aumento en el número de solicitudes para la búsqueda de donantes de sangre tuvo que compensarse con un aumento en la base de donantes. Y después de algunas deliberaciones, surgió una idea para automatizar el reclutamiento de donantes de sangre a través de las redes sociales. Decidimos combinar el monitoreo de redes sociales, chatbots y sistemas de procesamiento de lenguaje natural para buscar posibles donantes. Con esta idea, llegamos a Estocolmo para Startup Weekend: Social Innovations y ... ganamos nuevamente.



A la izquierda hay un resumen general del procesamiento del lenguaje natural y el proceso de convertir texto en un objeto estructurado. A la derecha hay un ejemplo de un mensaje y entidades que se pueden extraer de él.

De los mensajes podemos extraer automáticamente datos como el nombre del destinatario, el número requerido de donantes, con urgencia o no, el tipo de sangre y el factor Rh, la ciudad y los datos de contacto. Para el entrenamiento de modelos, utilizamos WIT.AI y Microsoft LUIS. Para el idioma inglés, obtuvimos muy buenos resultados, pero, desafortunadamente, tales sistemas funcionan mal en los idiomas cirílicos: ruso y ucraniano. Y dado el hecho de que el sistema está orientado a estos idiomas, el desarrollo de esta dirección se ha pospuesto hasta tiempos mejores.

De hecho, la idea era mucho más amplia: desarrollar un chatbot, con el que pueda reclutar automáticamente donantes de sangre a través de sistemas sociales y mensajeros instantáneos.



Un ejemplo de cómo podrían ser los diálogos entre el chatbot y los posibles donantes de sangre

Lamentablemente, esta idea es difícil de implementar, en primer lugar, debido al escándalo de Facebook y Cambridge Analytica, así como después de que se adoptó la ley GPRD en Europa, que no permite la recopilación personal, el análisis y la gestión de datos personales.

Asistente personal del donante - Donante UA.Bot


Pero después de la victoria en Estocolmo, apreciamos el potencial de los chatbots y estábamos muy molestos por la falta de herramientas de PNL / NER para el idioma ucraniano. Así nació el proyecto paralelo: Donor UA.Bot.

Creando DonorUA.Bot, queríamos resolver varios problemas:

  • tratar con éxito el tema de los chatbots;
  • crear un reconocimiento de entidad con nombre para el idioma ucraniano, parcialmente exitoso;
  • recopilar una base de conocimientos sobre las contraindicaciones para la donación, así como la legislación, las restricciones y los beneficios para los donantes: con éxito, la base de datos se actualiza constantemente;
  • cree, en primer lugar, una herramienta para usted, para un servicio de soporte, porque el 80% de las preguntas, las mismas, son exitosas.

Además, con nuestro bot de chat pudimos rechazar una gran cantidad de boletines electrónicos, que fueron reemplazados por mensajes personalizados y automáticos en Viber y Telegram. El correo electrónico todavía está disponible en la lista de opciones, pero un número cada vez mayor de personas prefiere los mensajeros.



Skype y Messenger bot

Pero con los correos SMS no hemos crecido juntos. Todos los operadores nacionales rechazaron el proyecto para proporcionar una puerta de enlace SMS. Por lo tanto, el uso de chatbots y mensajería instantánea es un paso obvio, e incluso muy, muy barato.

Que ahora


Hoy, DonorUA es una plataforma CRM / CMS completa para el reclutamiento y gestión de donantes, que incluye:

  1. Oficinas del administrador, donante de sangre, centro de sangre, médico.
  2. Un sistema de recomendación que permite a los donantes ver la lista actual de receptores que necesitan su tipo de sangre, y los administradores del sistema encontrar donantes adecuados para un receptor en particular.
  3. Un sistema de notificación que envía notificaciones automáticamente a Viber / Telegram / Email cuando se encuentra una coincidencia donante-receptor.
  4. Bloodshed es un conjunto de información útil para donantes en formato wiki.
  5. Programa de bonificación para donantes.
  6. Datos oficiales abiertos (y procesados) del Ministerio de Salud de Ucrania y estadísticas abiertas.
  7. Monitoreo de redes sociales.
  8. Donante UA. Bot y AI.
  9. Aplicaciones móviles para Android, iOS, Windows.
  10. Aplicaciones móviles para socios del programa de bonificación para iOS / Android.
  11. Mapa de centros de sangre y revisiones de centros de sangre.
  12. Servicio de apoyo a donantes.
  13. Una API abierta basada en la cual se implementan varias integraciones con otros servicios.
  14. Donación corporativa
  15. Programas especiales y descuentos para donantes de socios.

Aquí, por ejemplo, parece un puesto de información en uno de los centros de sangre:



Y así es como se ve en nuestro sistema:



El color rojo significa que hay poca sangre crítica, el amarillo significa que la sangre se agota, el verde significa suficiente

O aquí hay otro ejemplo de automatización. Antes de cada donación, el donante debe completar un cuestionario, que consta de aproximadamente 30 preguntas, que toma de 1 a 3 minutos. Si imagina que un centro de sangre promedio puede recibir de 40 a 50 personas por día, entonces el ahorro será de 1-1.5 horas por cada 4-5 trabajadores por día (!). En nuestro sistema, un donante puede completar una solicitud en línea una vez y actualizarla a medida que cambia la información (lo cual ocurre muy raramente), y el centro de sangre puede descargar la solicitud completa en su oficina. Y hay muchos ejemplos en los que pudimos optimizar ciertos procesos.

Traducir todos los procesos en números tiene otro efecto positivo: podemos evaluar la situación en cualquier momento, tanto a nivel de un centro de sangre separado como a nivel de una ciudad o de todo el país en su conjunto.

Pila de arquitectura y tecnología


El proyecto se realiza en ASP.NET MVC + Web API + Entity Framework en la plataforma Microsoft Azure. Utilizamos Azure SQL Database, Azure Blob Storage, Azure Jobs, Azure CDN, Cognitive Services + Microsoft Bot Framework. Aplicaciones móviles desarrolladas en Xamarin. Para el trabajo en equipo, se utilizan Office 365, Slack, Asana y Visual Studio Team Systems. En general, la pila estándar .NET / Azure, nada especial.

Escribimos nuestro propio NER (bastante simple) para el idioma ucraniano sobre Microsoft Bot Framework + y agregamos integración con Viber, lo que nos permitió crear rápidamente chatbots QnA (preguntas y respuestas) en el idioma ucraniano (similar al QnA Maker de Microsoft, que es parte de Azure Cognitive Servicios) e impleméntelos rápidamente en todas las plataformas populares: Messenger, Viber, Telegram, Skype, Skype for Business, Slack, Microsoft Teams, correo electrónico, chat web y use la API de línea directa para integrar el chatbot en aplicaciones móviles.



Arquitectura de bot de chat estándar en Azure + Microsoft Bot Framework

Microsoft ha proporcionado amablemente recursos a nuestro proyecto de Azure a través del programa Microsoft Bizspark. Recientemente, Microsoft Bizspark fue reemplazado por Microsoft para Startups, y obtener recursos se ha vuelto mucho más difícil, pero hemos aplicado con éxito a otro programa: Microsoft para organizaciones sin fines de lucro, en el que puede obtener Office 365 para 300 usuarios y recursos de Microsoft Azure por $ 5000 por año por completo gratis. Por lo tanto, a pesar de que el proyecto, de hecho, es social, todos los procesos se construyen como en un proyecto empresarial real.

Hablando de negocios.

Modelo de negocio y posicionamiento


La cuestión de la financiación se nos hace con mucha frecuencia, así como, de hecho, sobre cómo posicionamos nuestro proyecto.

Desde el principio, posicionamos a DonorUA como un proyecto social no rentable. Pero no rentable no significa que las personas no necesiten pagar salarios y facturas. Sin embargo, en la mente de muchas personas, no rentable es igualmente gratis. No queríamos participar en la concesión de subvenciones, y, francamente, casi todos los fondos nos iniciaron en una etapa temprana de las negociaciones, dicen, no un formato. Pero no queríamos llenar interminables papeles tiernos y, en verdad, no sabemos cómo. Por lo tanto, casi todo el financiamiento del proyecto es con fondos propios y asistencia financiera parcial de una persona que no está asociada con el proyecto.

No consideramos la opción de monetizar el proyecto para los destinatarios, la mayoría de los destinatarios que recurren a nosotros y ya tienen problemas psicológicos y materiales. Y aquellos que pueden comprar nuestros servicios, por regla general, no nos contactan, sino que resuelven problemas a través de "sus canales".

Cuando el posicionamiento con el proyecto social "no funcionó", comenzamos a posicionar el proyecto como una startup de salud, que, de hecho, no está muy lejos de la realidad, pero con algunos matices. Tal posicionamiento valió la pena: regularmente comenzamos a ingresar a los medios, pudimos ganar varios concursos de inicio y comenzamos a ser invitados como expertos en tecnología cívica e innovaciones sociales. Desafortunadamente, esto no nos trajo subvenciones, socios o inversiones.

Una situación divertida sucedió en uno de los concursos de inicio en el que se suponía que el ganador obtendría alrededor de $ 75 mil para el desarrollo. Pero después de ganar este concurso, nos presentaron ... un libro. Sí, las competiciones de startups ucranianas no tienen sentido y son despiadadas :-) Luego hubo algunas finales más, victorias y participación, pero en algún momento nos dimos cuenta de que era una pérdida de tiempo.

Por el momento, ofrecemos negocios socialmente responsables para celebrar días de donantes corporativos y ser parte del desarrollo del movimiento de donantes. Estamos buscando activamente empresas de este tipo para la cooperación, ofreciendo un nivel completamente nuevo de trabajo en equipo, así como responsabilidad social corporativa.

Entonces comenzamos a ganar un poco de dinero. La palabra clave es un poco :-) ¡Y todavía tenemos muchos planes!

Aprendizaje automático e inteligencia artificial


Monitoreo de redes sociales, bots de chat, PNL / NER: de hecho, ya usamos elementos de IA separados para resolver ciertos problemas. Pero las posibilidades de usar MO e IA son más amplias.

En este momento estamos comprometidos en resolver varios problemas.

Predicción de la demanda de sangre donada basada en datos históricos.


La tarea es bastante estándar, pero el problema es que hay muy pocos datos históricos, son, en el mejor de los casos, agregados, por lo que no puede usarlos. Pero nuestros datos no son suficientes. Sin embargo, espero que en el futuro, una integración más estrecha con los centros de sangre nos permita obtener datos históricos despersonalizados y esto nos permitirá utilizar toda la potencia de los algoritmos de IA para predecir la demanda.

Predecir el evento de que el donante donará sangre en los próximos X días con una probabilidad de N


Para desarrollar modelos, utilizamos un conjunto de datos abierto: conjunto de datos del centro de servicios de transfusión de sangre , que, de hecho, contiene datos reales de uno de los centros de sangre. Habiendo entrenado en datos disponibles al público, comenzamos a analizar los datos que recopilamos usando Donor UA. Puedes leer más sobre esto aquí.

Disminución en el número de coincidencias del donante receptor


El algoritmo de coincidencia para donantes y receptores funciona bastante bien, pero tiene un inconveniente significativo: cuando aumenta la base de datos y elige grupos sanguíneos populares, obtenemos miles de coincidencias. Más no siempre es mejor. Realmente no queremos que nuestros mensajes sean percibidos por los donantes como spam. Por lo tanto, es necesario resolver el problema de reducir el número de coincidencias del donante-receptor sin pérdida de calidad. Además, debemos persuadir a los donantes no tan activos para que hagan una donación regular.

Para resolver problemas, utilizamos una gran cantidad de herramientas, comenzando desde Microsoft Azure Machine Learning, terminando con varias bibliotecas de Python y una nueva herramienta de Microsoft: la biblioteca ML.NET.

En lugar de una conclusión


Las tecnologías modernas abren una gran cantidad de nuevas oportunidades, incluso para resolver los graves problemas de la humanidad.

Con nuestro ejemplo, queremos mostrar que la sinergia de las personas activas y la tecnología moderna pueden hacer maravillas. Durante tres años, en el marco de DonorUA, ayudamos directamente a 2.5 mil receptores, y 20 mil donaciones de sangre son potencialmente 60 mil vidas salvadas.

Las tecnologías en la nube, la inteligencia artificial y los algoritmos de aprendizaje automático abren nuevas oportunidades para desarrolladores y empresas, con las que solo podría soñar durante otros diez años.

Las empresas tienen enormes recursos. Tenemos un gran deseo y una amplia experiencia en la resolución de problemas en el campo de la donación de sangre.

Resolvamos estos problemas juntos.

Sobre el autor


Alexander Krakovetsky - CEO de DevRain Solutions, CTO Donor UA, Ph.D., Microsoft Artificial Intelligence Most Valuable Professional, Microsoft Regional Director.

Source: https://habr.com/ru/post/es415017/


All Articles