Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2023ВКР750301ИСАКОВ

.pdf
Скачиваний:
25
Добавлен:
04.09.2023
Размер:
3.37 Mб
Скачать

как макронутриенты (белки, жиры, углеводы) и микронутриенты (витамины,

минеральные вещества, микроэлементы).

Дополняют набор признаков данные опроса, систематизирующие количественную информацию о приемах некоторых категорий продуктов в течение недели. Пациент дает оценку частоте употребления фруктов, овощей,

выпечки, пирожных, шоколада, кофе, алкоголя, молочных продуктов, мяса и рыбы по шкале от 0 до 3 (0 – не употребляет, 1 – редко, 2 – умеренно, 3 – часто).

В ходе предыдущего этапа исследования мы также выяснили, что некоторые анализируемые величины могут оказывать отложенный накопительный эффект и их необходимо рассматривать в качестве кумулятивной величины за предшествующий текущему приему пищи промежуток времени [48]. Поэтому мы добавили во входные параметры модели информацию о суммарном количестве употребленных белков, жиров,

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

Гликемический индекс и гликемическая нагрузка – еще одна пара хорошо обобщающих характеристик приема пищи. Гликемический индекс характеризует величину уровня сахара в крови у здорового человека после приема некоторого заданного количества пищи в сравнении с таким же количеством чистой глюкозы. Величина, получаемая в основном экспериментальным путем. Для составления первой в Российской Федерации базы данных гликемических индексов была использована база данных продуктов питания университета Сиднея [49]. В соответствии с целями нашей работы, мы определили следующие границы ГИ: до 20 – низкий, от 20 до 55 –

умеренный, свыше 55 – высокий.

Функция расчета гликемической нагрузки приема пищи использует в качестве входных переменных гликемические индексы продуктов или компонентов одного блюда относительно количества углеводов в них. Таким образом этот показатель оценивает не только количество углеводов, но и их качество. Считается, что продукты с ГН выше 20 на 100 грамм оказывают

41

выраженное влияние на механизм биосинтеза инсулина, от 10 до 20 – среднее и меньше 10 – низкое. Впрочем, т.к. ГН зависит от количества грамм, то границы цветовой дифференциации (зеленый – безопасно, желтый – средний риск, красный – опасно) внутри мобильного приложения будут отличается от приведенной выше.

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

после приема углеводов и смешанной пищи выше [50]. Поэтому мы разбили сутки на промежутки в соответствии с трехразовым питанием: с 7:00 до 10:00

– завтрак, с 12:00 до 15:00 – обед, с 18:00 до 20:00 – ужин, и попросили пациентов указывать тип приема пищи в приложении в соответствии с этим расписанием (см. рисунок 8). Все, дополнительные приемы пищи, должны были обозначаться как перекусы.

Рисунок 8 – Моделирование кривых уровня глюкозы и инсулина в крови в разное время суток

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

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

42

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

тридцать, шестьдесят и сто двадцать минут, а также сформировавшийся тренд изменения уровня глюкозы в плазме крови за шестьдесят минут до приема пищи (см. рисунок 9).

Рисунок 9 – Совокупность кривых УСК, собранных для одного пациента на разных приемах пищи

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

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

Ультракороткий;

Короткий;

Пролонгированный.

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

отличие от упомянутых ранее предикторов, физическая нагрузка должна рассматриваться как до, так и незадолго после приема пищи. Часто, в рамках

43

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

Ходьба;

Бег;

Плавание;

Велоезда.

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

предлагаемых нагрузок в мобильном приложении будет скорректирован:

Зарядка;

Ходьба;

Спорт (бег, плавание, велоезда);

Уборка в квартире;

Работа в огороде.

Последняя и экспериментальная, в некотором смысле, категория признаков – бактериальный состав микрофлоры кишечника человека.

Существуют заметные различия между микробиомом здорового человека и больного сахарным диабетом. В целом, неясно, являются ли эти различия следствием или одной из возможных причин заболевания, но ряд исследований в различных областях диетологии отметили положительный результат использования данных о микробиоте кишечника при работе с пациентами, страдающими метаболическими нарушениями [51–54]. Данные микробиома представляют собой подсчет общего числа представителей внутри каждой фракции, например, кокки (стрептококк, стафилококк) или бациллы (стрептобациллы, диплобациллы). В результате иерархической классификации полученных копрограмм, всего получилось более 200

уникальных признаков.

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

44

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

Исследование длилось неделю. В течение оговоренного срока 96

пациентов (65 представителей с ГСД и 31 здоровый человек) вели электронный дневник в разработанном приложении. Предварительно каждому пациенту был установлен подкожный монитор содержания глюкозы в плазме крови, также каждый пациент сдал общий анализ крови, мочи и кала.

Программный код для обработки набора сырых данных следовал следующим шагам:

1.Исходные сигналы записывались системой системы непрерывного мониторинга уровня глюкозы в плазме крови и загружались на централизированный сервер. Позже они извлекались в виде CSV файлов.

2.Дневники, экспортированные из мобильного приложения в формате

Excel, и CSV файлы с сервера должны были обрабатываться таким образом,

чтобы каждый прием пищи сохранялся вместе с параметрами,

характеризующими предыдущие события. Например, любой прием пищи за 3

часа до текущего приема пищи и любые физические упражнения или сон.

3.Записи из электронных дневников сопоставлялись с соответствующими сигналами системы непрерывного мониторинга уровня глюкозы для каждого пациента, так что каждому приему пищи в дневнике соответствовали сигналы уровня сахара в крови за 3 часа до и после еды.

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

5.Полученные данные дополнялись данными, использованными для создания прототипов пациентов (данные истории болезни, данные обследования, биохимические параметры). Данные от разных пациентов объединялись в единый массив данных, который представлял собой подготовленные входные данные для моделей прогнозирования уровня сахара

вкрови.

45

2.3Информационное обеспечение системы

2.3.1Программная структура приложения

Согласно принципам «Clean Architecture», структура программного кода iOS приложения представлена заданным набором уровней организации (см.

рисунок 10).

Рисунок 10 – Архитектура организации iOS приложения

Уровень или слой – это логический механизм упорядочивания элементов, из которых состоит приложение. Уровни организации подчиняются общему правилу: верхние уровни могут вызывать процедуры нижних слоев, но не наоборот. Так, это значит, что сервисный слой приложения никогда не должен вызывать методы пользовательского интерфейса напрямую, при этом поток данных может быть двусторонним.

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

46

iOS приложения используют для этих целей фреймворки UIKit и SwiftUI. Для поддержания чистоты кода и правильности архитектуры следует придерживаться современных паттернов программирования MV (MVC, MVP, MVVM) или Viper.

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

Не имеют собственных целей и задач, они полностью клиент ориентированы;

Взаимодействуют с глобальными переменными состояния, но не имеют собственных;

Входные и выходные переменные служб определены в терминах других сущностей или языковых примитивов.

Службы призваны описывать следующий набор сценариев:

Вычисления;

CRUD (Create, Read, Update, Delete) операции работы с базами данных;

Сетевые запросы;

Проверка корректности введенной информации.

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

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

47

этом уровне, по-разному реализуют следующие составляющие: шлюз,

репозиторий и объект передачи данных.

Шлюз и репозиторий инкапсулируют объекты, содержащиеся во внешнем источнике данных, и операции над ними. Шлюз предоставляет доступ к одной единственной таблице в базе данных, сильно упрощая работу с высоконагруженными API, в то время как репозитории реализуют сложную эвристику запросов, следовательно, позволяют извлекать более разветвленные структуры данных по сравнению со шлюзами.

Объект передачи данных – это некоторая модель или примитив,

содержащий данные без каких-либо методов взаимодействия с ними. Его назначение – пересечь некую логическую (различные уровни архитектуры)

или физическую (iOS приложение / сетевой ресурс) границу и передать данные клиенту.

2.3.2 Файловая структура приложения

Следующим уровнем организации является файловая структура приложения (см. рисунок 11).

Рисунок 11 – Файловая структура проекта

48

Внутри iOS проекта файлы обычно разделены на несколько логических контейнеров.

Архив приложения представляет собой сжатую папку формата «.app» и

содержит скомпилированный код, а также некоторые другие сопровождающие файлы, которые разработчик поместил в текущую версию сборки:

Ресурсы приложения (иконки, изображения, PDF файлы);

Метаданные;

Файлы локализации (English / Русский);

Подписанные цифровые сертификаты на имя разработчика;

Эскизы.

Данные внутри «.app» остаются неизменными на протяжении всего цикла жизни приложения. Внутри одного проекта может находиться несколько подобных сжатых папок, например, созависимые проекты.

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

Документы содержат:

Пользовательские документы (сформированные Excel отчеты);

Фотографии (изображения готовых блюд и ингредиентов);

Таблицы и базы данных;

Библиотеки содержат:

Модифицируемые копии ресурсов приложения;

Кэш;

Параметры настроек (темная / светлая тема, выбор языка приложения).

49

Временные файлы хранят любые данные, удаляющиеся после того, как работа с ними завершится.

iCloud осуществляет резервное копирование хранилища данных при условии, что пользователь выдал набор дополнительных разрешений.

Разрабатываемое приложение может быть модифицировано таким образом, чтобы самостоятельно осуществлять резервное копирование данных на сервера медицинского центра. Учитывая смешанный механизм авторизации, допустимо будет сохранить пару логин / пароль в базе данных в изолированном разделе хранилища данных. При этом пару валидационных токенов (Access и Refresh), выдаваемых после аутенфикации, следует рассматривать как временные файлы.

2.3.3 Компиляция проекта

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

Swift использует среду выполнения Objective-C и компилятор LVVM.

Ключевым преимуществом реализации является возможность обратной совместимости Swift кода с Objective-C и C. В частности, это открывает широкие возможности интеграции в проект C-библиотек. Так одной из решаемых задач разрабатываемого приложения является экспорт в формат распределенных таблиц Excel через C-порт библиотеки libxlsxwriter.

При компиляции необходимо указать конкретную версию платформы: x86, x86-64 или ARM. Программа, скомпилированная под процессоры Intel Core на MacBook, не запустится на iPad / iPhone. Тем не менее универсальные программы, написанные на фреймворке SwiftUI и скомпилированные под современные ARM процессоры, могут быть запущены как на iPhone, так и на любом другом устройстве Apple под управлением M1 / M2.

50