Хабрахабр

Продукт на .NET, помогающий спасать жизни

В некоторых жизненных ситуациях нужно действовать очень быстро. Иногда это условие невыполнимо: например, просто невозможно без огромного везения за очень короткое время найти человека с редкой группой крови, так еще и готового ей поделиться. Ребята создали продукт под названием DonorUA, который действительно помогает спасать жизни при помощи чат-бота. Подробнее под катом.

Передаю слово автору.

Разработка продвигалась туго, демо версия была сложной и технологичной, поэтому жюри не оценило ни усилий, ни саму идею. Несколько лет назад на хакатоне по созданию социальных сервисов я пытался разработать проект для автоматизации жалоб на работу ЖКХ. Слово за слово — и ты уже кофаундер нового проекта. Но на этом мероприятии я познакомился с девушкой, руководителем общественной организации, которая до этого уже несколько лет занималась решением различных проблем в сфере донорства крови в Украине.

Единственным знанием был тот факт, что люди иногда сдают кровь другим людям. В тот момент о донорстве крови я не знал ровным счетом ничего. Как это всё организовано, с какими проблемами живет эта сфера, сколько это стоит и где мы находимся — для меня было полной загадкой.

Имея огромный опыт автоматизации процессов и написания корпоративных систем, я решил, что создание базы данных и автоматизация тех или иных процессов не займет много времени.

Потом я узнал, что все без исключения отечественные донорские организации, в лучшем случае, используют Excel файл со списком доноров, их телефонов и группой крови. Сначала оказалось, в стране отсутствует единый реестр доноров крови. Как вы понимаете, эффективность такого подхода была практически нулевой. Когда поступала заявка на поиск доноров, сотрудники организации садились за телефон и начинали звонить всем подряд в надежде, что кто-то таки откликнется.

К примеру, в Украине нельзя сдавать кровь целый год, если сделал пирсинг или татуировку, или пару месяцев, если съездил в экзотическую страну или просто поменял партнера. Во всех странах законодательство в сфере донорства очень и очень строгое. Список противопоказаний и ограничений к донорству занимает не одну страницу.

В менее развитых и в слаборазвитых странах дефицит донорской крови может составлять до 90%, что делает кровь дорогим товаром и создает огромный теневой рынок. В развитых странах, где явных проблем с донорской кровью нет, вопрос решается достаточно просто — государство щедро финансирует эту сферу. А с учетом того, что жизнь пациента очень сильно зависит от того, сделали вовремя переливание или нет, то вопрос быстрого поиска доноров становится без преувеличения вопросом «жизни и смерти». Также во многих постсоветских странах государство часто абстрагируется от поиска доноров, перекладывая ответственность на родственников пациентов, которым, собственно, и нужна донорская кровь.

Как оказалось впоследствии, это далеко не все проблемы, поэтому проект на “две недели” перерос в нечто гораздо большее.

Первые шаги

Реальным стартом проекта можно назвать участие в конференции IDCEE 2014, в рамках которой проходил хакатон по социальным инновациям. В тот день мы победили, и нам стало ясно, что тема интересная, важная, поэтому с большим энтузиазмом мы приступили к реализации проекта. Вуаля и через 4 месяца, весной 2015 года, мы запустили первую версию, содержащую базу реципиентов и доноров из Excel таблички, а также достаточно простой механизм подбора доноров и реципиентов. Забегая наперед скажу, что система рекомендаций претерпела огромное количество изменений и в данный момент учитывает от 10 до 15 различных параметров.

Буду честным — многие в нашей организации отнеслись с большим скептицизмом к автоматизации и разрабатываемой системе. Первый переломный момент случился через месяц-полтора после запуска проекта, когда координаторы впервые смогли найти донора в течение 15 минут после размещенной заявки на сайте. Но после того, как система справилась с первым заданием, мы обрели уверенность в том, что движемся в правильном направлении.

Вторая половина закрывалась по старинке — с помощью телефона. К концу 2015 года в базе было уже около 4000 доноров, что позволило закрывать, как минимум, половину запросов на поиск доноров. В конце концов, новый подход победил. Весь 2015 год прошел в борьбе старого подхода и нового. Мы поняли, что нам нужен единый координатор платформы, у которого будет одна задача — искать доноров с помощью штатных средств системы ДонорUA. Мы запретили искать доноров по телефону и пользоваться Excel, ограничили доступ к системе всем координаторам без исключения и отключили все телефонные линии. Но о проекте никто не знал (одно из наиболее известных украинских изданий в единственной публикации о новых социальных проектах в 2015 году даже словом не обмолвилось о нашем проекте), соответственно, к нам обращалось малое количество людей. Было больно, что-то пришлось докрутить, но в результате система полноценно заработала, и мы поняли, что можем закрывать больше заявок. И тогда… Несмотря на огромное количество сообщений о поиске доноров в Facebook/Twitter/Вконтакте.

Мониторинг социальных сетей

… я обратился с предложением к компании YouScan, которая занимается мониторингом социальных сетей в ру- и укрнете. Их система заточена на большой и средний бизнес, и, откровенно говоря, моё предложение об использовании их системы для нахождения сообщений о поиске доноров их обескуражило. Представитель компании взял паузу, чтобы провести несколько тестов и вернулся через несколько дней с информацией, что наша гипотеза верна и что их система хорошо справляется с задачей поиска сообщений. Таким образом, в один миг мы получили возможность в реальном времени мониторить все сообщения по теме и быстро на них реагировать. Этот подход позволил нам стать лидером в социальных сетях — в большинстве публикациях о поиске доноров в комментариях идет ссылка на наш проект, а остальные публикации мы находим через YouScan. После нахождения тех или иных сообщений мы связываемся с авторами публикаций и предлагаем разные варианты сотрудничества.

И после недолгих раздумий возникла идея автоматизировать рекрутинг доноров крови через социальные сети. Возросшее количество заявок на поиск доноров крови нужно было компенсировать увеличением базы доноров. С этой идеей мы приехали в Стокгольм на Startup Weekend: Social Innovations и… снова выиграли. Мы решили объединить мониторинг социальных сетей, чатботов и системы обработки естественного языка (Natural Language Processing) для поиска потенциальных доноров.

Справа — пример сообщения и сущностей, которые могут быть извлечены из него. Слева — общая схема работы Natural Language Processing и процесса преобразования текста в структурированный объект.

Для обучения моделей мы использовали WIT. Из сообщений мы можем автоматически извлекать такие данные как имя реципиента, необходимое количество доноров, срочно или нет, группу крови и резус фактор, город и контактные данные. Для английского языка мы получили очень хорошие результаты, но, к сожалению, подобные системы достаточно плохо работают кириллическими языками — русским и украинским. AI и Microsoft LUIS. А с учетом того, что система заточена на эти языки, развитие этого направления отложили до лучших времен.

На самом деле идея была гораздо шире: разработать чатбот, с помощью которого можно автоматически рекрутить доноров крови через социальные системы и мессенджеры.

Пример того, как могли бы выглядеть диалоги между чат-ботом и потенциальными донорами крови

Увы, эту идею сложно реализовать — в первую очередь, из-за скандала Facebook и Cambridge Analytica, а также после того, как в Европе приняли закон GPRD, не позволяющая вольготно собирать, анализировать и распоряжаться персональными данными.

Персональный ассистент донора — ДонорUA.Бот

Но после победы в Стокгольме мы оценили потенциал чатботов и очень расстроились отсутствием NLP/NER инструментов для украинского языка. Так родился сайд проект — ДонорUA.Бот.

Создавая ДонорUA.Бот, мы хотели решить несколько проблем:

  • разобраться с темой чатботов — успешно;
  • создать Named Entity Recognition для украинского языка — частично успешно;
  • собрать базу знаний по противопоказаниям к донорству, а также законодательству, ограничениях и льготах для донорах — успешно, база постоянно дополняется;
  • создать, в первую очередь, инструмент для себя — для службы поддержки, ведь 80% вопросов — одни и те же — успешно.

Кроме того, с нашим чат-ботом мы смогли отказаться от большого количества email-рассылок, которые заменили персонифицированными и автоматическими сообщениями в Viber и Telegram. Электронная почта по-прежнему доступна в списке вариантов, но всё большее количество людей предпочитают мессенджеры.

Бот в Skype и Messenger

Все национальные операторы отказали проекту в предоставлении SMS шлюза. А вот с SMS рассылками у нас не срослось. Поэтому использование чатботов и мессенджеров — очевидный шаг, да ещё и очень и очень дешевый.

Что сейчас?

На сегодняшний день ДонорUA — полноценная CRM/CMS платформа для рекрутинга доноров и их управления, которая включает в себя:

  1. Кабинеты администратора, донора крови, центра крови, доктора.
  2. Система рекомендаций, позволяющая донорам увидеть актуальный список реципиентов, которые нуждаются в их группе крови, а администраторам системы — подходящих доноров для конкретного реципиента.
  3. Система нотификаций, которая автоматически рассылает уведомления в Viber/Telegram/Email при нахождении совпадения донор-реципиент.
  4. Кровопедия — набор полезной информации для доноров в формате вики.
  5. Бонусная программа для доноров.
  6. Официальные открытые (и обработанные) данные от Министерства Здравоохранения Украины и открытая статистика.
  7. Мониторинг социальных сетей.
  8. ДонорUA.Бот и ИИ.
  9. Мобильные приложения для Android, iOS, Windows.
  10. Мобильные приложения для партнеров бонусной программы для iOS/Android.
  11. Карта центров крови и отзывы на центры крови.
  12. Служба поддержки доноров.
  13. Открытое API, на базе которого реализовано несколько интеграций с другими сервисами.
  14. Корпоративное донорство.
  15. Специальные программы и скидки для доноров от партнеров.

Вот так, например, выглядит информационный стенд в одном из центров крови:

И вот так это выглядит в нашей системе:

Красный цвет значит, что крови критично мало, желтый — кровь заканчивается, зеленый — достаточно

Перед каждой сдачей крови донор должен заполнить анкету, которая состоит из примерно 30 вопросов, что занимает от 1 до 3 минут. Или вот еще один пример автоматизации. В нашей системе донор может заполнить анкету онлайн один раз и обновлять её по мере изменения информации (что происходит очень редко), а центр крови может скачать заполненные анкеты в своем кабинете. Если представить, что в день центр крови может принять в среднем 40-50 человек, то экономия составит 1-1,5 часа из 4-5 рабочих в день (!). И таких примеров, где мы смогли оптимизировать те или иные процессы, достаточно много.

Перевод всех процессов в цифру имеет еще один положительный эффект: мы можем оценить ситуацию в любой момент — как на уровне отдельного центра крови, так и на уровне города или всей страны в целом.

Архитектура и технологический стек

Проект сделан на ASP.NET MVC + Web API + Entity Framework на платформе Microsoft Azure. Мы используем Azure SQL Database, Azure Blob storage, Azure Jobs, Azure CDN, Cognitive Services + Microsoft Bot Framework. Мобильные приложения разработаны на Xamarin. Для командной работы используется Office 365, Slack, Asana и Visual Studio Team Systems. В целом, стандартный .NET/Azure стек, ничего особенного.

Мы написали собственный (достаточно простой) NER для украинского языка поверх Microsoft Bot Framework + дописали интеграцию с Viber, что позволило нам быстро создавать QnA (questions and answers) чат-боты на украинском языке (аналог QnA Maker от Microsoft, который является частью Azure Cognitive Services) и быстро их разворачивать на всех популярных платформах — Messenger, Viber, Telegram, Skype, Skype for Business, Slack, Microsoft Teams, email, web chat и использовать Direct Line API для интеграции чат-бота в мобильные приложения.

Стандартная архитектура чат-бота на Azure + Microsoft Bot Framework

С недавних пор Microsoft Bizspark заменили на программу Microsoft for Startups, и получить ресурсы стало намного сложнее, но мы успешно подались на другую программу — Microsoft for Nonprofit, в рамках которой можно получить Office 365 на 300 пользователей и ресурсы Microsoft Azure на $5000 в год совершенно безвозмездно. Компания Microsoft любезно предоставила нашему проекту Azure ресурсы в рамках программы Microsoft Bizspark. Таким образом, несмотря на то, что проект, по факту, является социальным, все процессы построены как в реальном бизнес-проекте.

Кстати, о бизнесе.

Бизнес модель и позиционирование

Вопрос о финансировании нам задают очень часто, как и, собственно, о том, как мы позиционируем наш проект.

Но неприбыльный не значит, что людям не нужно платить зарплату и оплачивать счета. С самого начала мы позиционировали ДонорUA как неприбыльный социальный проект. Грантоедством мы заниматься не хотели, да и, честно говоря, практически все фонды отфутболили нас на раннем этапе переговоров — мол, не формат. Все же в сознании многих людей не прибыльный равно бесплатно. Поэтому практически всё финансирование проекта — это собственные средства и частично — финансовая помощь одного человека, не связанного с проектом. А заполнять бесконечные тендерные бумажки мы не хотели, да и, по правде говоря, и не умеем.

А те, кто могут купить наши услуги, как правило, к нам не обращаются, а решают проблемы по “своим каналам”. Вариант монетизации проекта на реципиентах мы не рассматривали — большинство реципиентов, которые к нам обращаются и так испытывают проблемы как психологического, так и материального плана.

Такое позиционирование принесло свои плоды — мы регулярно начали попадать в СМИ, смогли выиграть несколько стартап-конкурсов и нас начали приглашать как экспертов по civic tech и social innovations. Когда позиционирование с социальным проектом «не пошло», мы начали позиционировать проект как ehealth-стартап, что, на самом деле, не очень далеко от правды, но с некоторыми нюансами. К сожалению, грантов, партнеров и инвестиций это нам не принесло.

на развитие. Забавная ситуация произошла на одном из стартап-конкурсов, в котором победитель должен был получить около $75 тыс. Да, украинские стартап-конкурсы — бессмысленные и беспощадные 🙂 Потом было еще несколько финалов, побед и участий, но в какой-то момент мы поняли, что это пустая трата времени. Но после того, как мы выиграли и это состязание, нам подарили… книгу.

Мы активно ищем такие компании для сотрудничества, предлагая абсолютно новый уровень тимбилдинга, а также корпоративно-социальной ответственности. В данный момент мы предлагаем социально ответственному бизнесу проводить корпоративные дни донора и быть частью развития донорского движения.

Ключевое слово — немного 🙂 А планов у нас еще очень много! Так мы начали немного зарабатывать.

Машинное обучение и искусственный интеллект

Мониторинг социальных сетей, чат-боты, NLP/NER — фактически, мы уже используем отдельные элементы ИИ для решения тех или иных задач. Но возможности применения МО и ИИ шире.

В данный момент мы занимаемся решением нескольких задач.

Прогнозирование спроса на донорскую кровь исходя из исторических данных

Задача достаточно стандартная, но проблема в том, что исторических данных очень мало, они, в лучшем случае, агрегированы, поэтому использовать их нельзя. А наших данных пока не достаточно. Тем не менее, надеюсь, что в будущем более тесная интеграция с центрами крови позволит нам получить деперсонифицированные исторические данные и это позволит нам использовать всю мощь алгоритмов ИИ для прогнозирования спроса.

Прогнозирование события, что донор повторно сдаст кровь в ближайшие X дней с вероятностью N

Для разработки моделей мы использовали открытый датасет — Blood Transfusion Service Center Data Set, который, собственно, содержит реальные данные одного из центров крови. Потренировавшись на общедоступных данных, мы занялись анализом данных, которые собрали с помощью ДонорUA. Более детально об этом можно почитать здесь.

Уменьшение количества совпадений донор-реципиент

Алгоритм матчинга доноров и реципиентов работает достаточно хорошо, но в нем есть один существенный недостаток: при увеличении базы данных и выборе популярных групп крови мы получаем тысячи совпадений. Больше — не всегда лучше. Мы очень не хотим, чтобы сообщения от нас воспринимались донорами как спам. Таким образом, необходимо решить задачу уменьшения количества совпадений донор-реципиент без утраты качества. Кроме того, мы должны склонять не очень активных доноров к регулярному донорству.

NET. Для решения задач мы используем большое количество инструментов — начиная от Microsoft Azure Machine Learning, заканчивая различными python библиотеками и новым инструментом от Microsoft — библиотекой ML.

Вместо заключения

Современные технологии открывают огромное количество новых возможностей, в том числе для решения острых проблем человечества.

За три года в рамках ДонорUA мы непосредственно помогли 2,5 тыс. Своим примером мы хотим показать, что синергия активных людей и современных технологий может творить чудеса. сдач крови — это потенциально 60 тыс. реципиентам, а 20 тыс. спасенных жизней.

Облачные технологии, алгоритмы искусственного интеллекта и машинного обучения открывают новые возможности для разработчиков, бизнеса, о которых еще десять лет можно было только мечтать.

У нас есть огромное желание и большой опыт решения проблем в сфере донорства крови. Бизнес обладает огромными ресурсами.

Давайте решать эти проблемы вместе.

Об авторе

Александр Краковецкий — CEO DevRain Solutions, CTO ДонорUA, к.т.н., Microsoft Artificial Intelligence Most Valuable Professional, Microsoft Regional Director.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть