Почти три года назад на форуме «Удивительное в российском здравоохранении» бывшая тогда министром здравоохранения РФ Вероника Скворцова произнесла такие слова: «Будущее связано с тем, что каждый человек вводится в систему цифровой медицины и цифрового здравоохранения. Это огромное количество гаджетов, которые мониторируют состояние здоровья человека и становятся все более точными. Таким образом, меняется вся архитектоника современного здравоохранения. Уже сейчас наши ведущие национальные исследовательские центры занимаются персонифицированной медициной…» Что важно в этих словах? На мой взгляд, во-первых, заявление о том, что медицина должна стать цифровой. Можно по-разному интерпретировать понятие «цифровая медицина», и для меня это точно не медкарта, которая хранится в цифровом виде, даже если она защищена блокчейном. При всем уважении к коллегам, которые строят медицинские MISы, человек – вполне «аналоговое» существо, и когда ему важно избавиться от боли, а еще лучше – вылечиться, ему все равно, каким носителем информации пользуется врач. Однако ему важно получить верное назначение не методом проб и ошибок, а на основе точных измерений – то есть, цифр.
Второе – цифровая медицина должна быть такой, чтобы до состояния тяжелой болезни у пациента не дошло, чтобы технологии могли следить за здоровьем ненавязчиво, не отрывая от обыденной жизни, и работать на опережение. Ну и третье – если уж требуется лечение, то оно должно быть направлено на определенный организм и его потребности и проблемы, а не на популяцию в целом.
Технический директор РДТЕХ Андрей Майоров
Вот такая мечта об идеальной цифровой медицине, которую мы с коллегами сформулировали в 2017 году, легла в основу нашего проекта Actenzo. И мы совсем не расстроились, когда обнаружили: то, что, казалось бы, придумано нами, на самом деле уже было к тому моменту красиво сформулировано как «Медицина четырех П». Ее компоненты - предикция (выявление предрасположенности к развитию заболеваний), превентивность (предотвращение заболеваний), персонализация (индивидуальный подход) и партисипативность (мотивированное участие пациента). То есть медицина должна предсказывать возможность заболевания, предотвращать его или останавливать на очень ранних стадиях, делать это на основе индивидуального подхода к каждому человеку, а от пациента этот процесс требует мотивированного участия.
Создавая Actenzo, мы хотели построить экосистему, пользователи которой носили бы достаточно комфортные в обычной жизни гаджеты, не утруждая себя мыслями, что с ними надо что-то делать, кроме как заряжать. При этом сама такая система должна уметь многое: гаджет должен круглосуточно измерять физиологические параметры, отправлять их на сервер для пожизненного хранения, анализа, построения профилей и трендов, для дальнейшей аналитики и выработки предупреждений. Результаты анализа должны отправляться самому пользователю и при необходимости – третьим лицам, которые на него подписаны, в формате, который не предполагает глубокой вовлеченности, в виде push-уведомлений. Доступ к системе должен быть постоянным во всем ареале обитания homo mobilicus. На практике это означает, что если смартфон пользователя заряжен – пользователь автоматически в системе. И последнее, но крайне важное: доступ к данным пользователя. Сам пользователь и те лица, кому пользователь предоставил доступ к своим данным, должны видеть все абсолютно одинаково, с равной актуальностью, детализацией, включая все предупреждения, которые могут возникать в ходе мониторинга здоровья.
Потратив некоторое количество времени на разработку, мы получили продукт, который архитектурно выглядит следующим образом. Гаджеты, которые носят пользователи, регулярно делают измерения – либо самостоятельно, либо по запросу системы. Эти измерения по BLE-протоколу читаются смартфоном (как правило, с циклом раз в пару минут) и по доступной сети отправляются на сервер (если сети нет, то сохраняются на смартфоне до тех пор, пока она не появится, максимум - до недели). На сервере стоит кластер Hadoop на дистрибутиве CDH от Cloudera со всеми инструментами (HDFS, Yarn, HBase, Spark, Spark Streaming, Hive, Impala, Flume, Oozie и т.д.) и веб-сервер от Play. Соответственно, BigData отвечает за прием данных, их хранение, аналитику. На Play развернут API доступа к данным. Через этот единый API получают данные как мобильные приложения (у нас их два – Android и IOS) и веб-приложение, которое развернуто на том же веб-сервере.
Почему в качестве серверной части мы выбрали BigData? Нельзя сказать, что данных с гаджетов поступает запредельно много, но их и не мало: для очень активного пользователя до 11 Мбайт в сутки. Однако проблема здесь не столько в объеме данных от одного пользователя, а в том, что поток данных совершенно неподконтролен нам как по совокупному объему, так и по времени возникновения данных. Во-первых, количество пользователей постоянно растет. Во-вторых, объем зависит от поведения пользователя и может отличаться примерно в 25 раз. Третья вещь, которая существенна – это отсутствие какого-либо регламента появления данных. То есть, мы не можем планировать время прихода данных. Поэтому нам нужна легко горизонтально масштабируемая технология, причем масштабируемая по всему тракту прохождения данных.
Итак, данные с гаджета читаются смартфоном и, обернутые в Json, отправляются на сервер. На сервере они сначала проходят через балансировщик и распределяются по нескольким агентам Flume. Flume распределяет данные по нескольким sink’aм, чтобы записать данные в ту или иную таблицу HBase, либо отправляет их на немедленный расчет агрегатов в Spark Streaming. Значительная часть работы по анализу данных выполняется по расписанию с помощью Workflow в виде скриптов Hive или кода на Scala, исполняемого Spark’ом.
Есть еще один путь обработки данных, связанный с ручными измерениями, в которых пользователь должен немедленно получить результат более-менее сложного анализа данных, например, анализ стресса. В этом случае мы используем API, развернутый на веб-сервере. То есть, смартфон отправляет данные прямо на веб-сервер, но данные при этом обрабатываются все равно на кластере. В основном же веб-сервер используется для доступа как к сырым данным, так и результатам анализа. То есть, если пользователь открывает приложение на смартфоне, то смартфон обращается за данными к веб-серверу, который через запросы в Impalа предоставляет эти данные.
Измеряемые показатели для нашего сервиса таковы:
Безусловно, здесь можно поставить вопрос: а насколько все это действительно медицинская история, может ли подобный сервис с помощью таких измерений обнаружить серьезное нарушение здоровья?
В качестве ответа предлагаю рассмотреть несколько слайдов с реальными измерениями. Первый слайд показывает замер ЭКГ условно здорового человека и человека, имеющего некие сердечные патологии. Частота оцифровки ЭКГ у многих современных браслетов составляет 250 Hz, что соответствует текущим требованиям к сертифицированным медицинским электрокардиографам. Как видно из верхнего слайда, ЭКГ, записанная с браслета, показывает все характерные участки ЭКГ. Конечно, браслет или смарт часы не позволят вам иметь более одного отведения, но даже с одним отведением совершенно отчетливо можно видеть такие нарушения сердечной деятельности, как нарушения ритма, в том числе экстрасистолику (преждевременное сокращение до окончания полного цикла работы сердца), искажение ST-сегмента или фибрилляцию предсердий. Понятно, что для постановки точного диагноза и назначения лечения этого может быть недостаточно, но для того, чтобы обнаружить проблемы и собраться к врачу, – вполне.
Второй пример – оценка жесткости сосудов. Мы знаем, что отложения холестерина и кальцификация сосудов увеличивает их жесткость, делает их более подверженными разрыву и в целом ограничивает поток крови. Все это ведет как к проблемам с сердцем, так и к инсультам. Всегда ли участковый врач может сделать экспресс-диагностику сосудов? К сожалению, нет. А с помощью сервиса Actenzo это сделать можно. На графиках показана запись пульсовой волны, то есть, изменение объема крови в сосудах во времени. Когда мы молоды, сосуды здоровы и эластичны, и плетизмография показывает достаточно сложный рисунок распространения волны крови, что видно на верхнем графике. Когда сосуды кальцифицированы, они жесткие и не смягчают исходный импульс крови от сердца. Более того, скорость распространения волны становится настолько большой, что прямая волна складывается с отраженной в один пик, и мы получаем такую гребенку острых пиков, как показано на нижнем графике. Форму волны можно оцифровывать и дать численную оценку жесткости сосудов.
Третий пример касается измерения уровня стресса, а точнее, вариабельности сердечных сокращений как адаптационного потенциала организма. Дело в том, что время между последовательными ударами сердца не постоянно. Оно варьируется в определенных пределах и, что удивительно с точки зрения бытового восприятия, чем эти пределы более узкие – тем хуже. Мы ведь привыкли думать, что ровный пульс – это признак здорового сердца! На самом деле, не совсем так. Распределение кардиоинтервалов похоже на распределение Гаусса, причем в частотном спектре этих изменений присутствуют как высокие, так и низкие частоты. В то время, когда организм испытывает напряжение (неважно, эмоциональное или физическое), вариабельность падает. Сердце начинает биться все ровнее и ровнее, распределение становится более узким, низкая частота в вариабельности исчезает. Наступает состояние стресса. Что важно для нас, так это то, что все это можно регистрировать с помощью фитнес-браслета. То, что вы видите на рисунке слева – измерение вариабельности в покое. Индекс стресса 48, что говорит о достаточно спокойном состоянии и при этом достаточном тонусе. Правая картинка показывает состояние того же человека после часовой прогулки на велосипеде. Мы отчетливо видим, как снизилась вариабельность, индекс стресса вырос до 267. Это высокое, но не запредельное значение – организм испытывает определенный, достаточно высокий уровень нагрузки.
Интересно видеть, как мы возвращаемся от состояния напряжения к нормальному состоянию. Оказывается, методом проб и ошибок! В начале диаграммы мы видим серию попыток сбросить пульс на уровень в 45 ударов в минуту (время между сокращениями более 1300 миллисекунды), и каждый раз это заканчивается повышением частоты сердечных сокращений на уровень 85 ударов в секунду. И лишь потом организм находит некий оптимум где-то в районе 67 ударов, и индекс стресса становится чрезвычайно низким – 16. Нагрузки нет, но нет и тонуса, носитель браслета в состоянии дестресса.
Что позволяет нам считать, что наш сервис – особенный? Во-первых, мы реально делаем мониторинг показателей, а не просто считываем данные. Пользователи могут создавать свое расписание измерений. Все измерения хранятся, если можно так сказать, «вечно», и эта история доступна на любую глубину.
Мы строим индивидуальные профили, и анализ производится на этих индивидуальных профилях, а не на отклонениях от «средней температуры по палате». Ну и, наконец, в нашу систему заложен многопользовательский режим как основа предоставления помощи другими лицами, будь то близкими или лечащим врачом.
Благодаря всему этому мы можем использовать Actenzo как платформу, с одной стороны, в B2С-секторе для поддержания здорового образа жизни и заботы о здоровье близких, с другой стороны – в телемедицине для удаленного мониторинга пациента в его повседневной жизни. Плюс, что не менее важно, в охране труда, где спрос на мониторинг состояния сотрудника действительно растет.
И еще один нюанс. Наши пользователи не должны по 10 раз в день смотреть на свой гаджет (кстати, сейчас в нашей линейке три модификации браслета, пара смартчасов, электронный термометр, пара тонометров и весы). Если параметры укажут на тревожный сигнал, Actenzo сам подаст знак. Подчеркну: мы не ставим диагнозов! Но мы совершенно точно можем помочь лечащему врачу, чей пациент уехал за 100 км от поликлиники, быть в курсе того, что с ним происходит и все ли в порядке. Используйте сервис Actenzo и будьте здоровы!
Автор: Андрей Майоров, технический директор РДТЕХ