Разработчик-диабетик собрал искусственную поджелудочную железу, работающую на JavaScript Статьи редакции
Лиаму Зебеди понадобились инсулиновая помпа, пара контроллеров и несколько программ с открытым исходным кодом.
Здоровая поджелудочная железа вырабатывает инсулин и знает, когда и сколько его нужно — в ответ на изменение уровня глюкозы в организме. У больных диабетом поджелудочная железа работает с нарушениями.
- Диабетики принимают инсулин для усвоения углеводов, по наитию определяя дозировки. В разной пище — разное количество углеводов со своим гликемическим индексом (скоростью усвоения). Законы разрешают производителям закладывать в информацию о пищевой ценности отклонения до 10% от того или иного значения.
- Плохой сон нарушает метаболизм, при пробуждении инсулина требуется больше — как и при стрессе или болезни.
- Организм менее восприимчив к инсулину, когда уровень сахара в крови больше положенного.
Диабетики, контролируя приём инсулина, занимаются математической оптимизацией, считает Зебеди. Его искусственная поджелудочная железа занимается тем же самым, только процесс на 80% автоматизирован.
Оборудование
- Глюкометр FreeStyle Libre CGM.
- Трансмиттер Miaomiao — передаёт данные с Libre (работает на NFC) на телефон по Bluetooth.
- Nightscout — программа с открытым исходным кодом для хранения и визуализации данных для диабетиков первого типа (инсулин практически не вырабатывается организмом). Хостинг — Heroku.
- Приложение xDrip, которое принимает данные по Bluetooth и отправляет их в Nightscout.
- Инсулиновая помпа Medtronic — для инъекций инсулина.
- Intel Edison + Explorer HAT — плата с поддержкой Wi-Fi и радиокоманд частотой 900 МГц.
- Аккумулятор на 4400 мА.
- OpenAPS — «операционная система» искусственной поджелудочной. Выгружает данные из Nightscout, прогнозирует и подстраивает доставку инсулина помпой, подгружает данные в Nightscout для непрерывного отслеживания. Исходный код открыт.
Цены
- Помпа у разработчика уже была, стоит она, как правило, около €3100.
- FreeStyle Libre CGM — €70 за считыватель (разовая трата) и €140 в месяц на сенсоры.
- Трансмиттер Miaomiao — €200.
- Хостинг Heroku для Nightscout — бесплатно.
- xDrip — Зебеди пришлось купить годовую лицензию разработчика за €93, чтобы установить программу на телефон: Apple запрещает его загрузку в App Store.
- Intel Edison обошёлся в €57. Мини-компьютер не продаётся уже два года, поэтому пришлось как следует поискать на Amazon и eBay.
- Explorer HAT — плату изготовила компания Enhanced Radio в США за €68.
- Аккумулятор Adafruit за €50 ёмкостью в два раза больше нужной — просто на всякий случай.
- OpenAPS — бесплатно, открытый исходный код.
Итого, исключая помпу: €608.
Ежемесячные траты, исключая инсулин: €140.
Сборка
На сборку Зебеди потратил около девяти часов:
- Час на чтение документации по OpenAPS, она очень большая.
- Два часа на загрузку Jubilinux и настройку Edison.
- Два с половиной часа на загрузку пакетов и библиотек с помощью APT и NPM. Поскольку OpenAPS — обычный набор простейших Bash-скриптов, всё пришлось загружать заново.
- Час на покупку лицензии разработчика Apple и установку xDrip.
- Час на настройку хостинга для Nightscout, с аутентификацией и особыми плагинами для OpenAPS.
- Два часа на устранение багов. Система почему-то не считывала показатели из Nightscout. Не сумев устранить неполадки, Зебеди обратился за помощью в Gitter. Оказалось, проблема была в приложении Tomato, которым он пользовался для отслеживания уровня сахара в крови. Поэтому разработчик переключился на xDrip.
OpenAPS предельно проста благодаря большому собранию Bash, Python и JavaScript. В этот момент Зебеди столкнулся со стектрейсом ниже (список строк кода, которые были вызваны до возникновения в приложении сбоя).
Разработчик установил xDrip на замену Tomato. Первая — с открытым исходным кодом, что, замечает Зебеди, видно по простому дизайну.
Зебеди написал в Gitter, и через час ему помогли решить проблему: не хватало параметра dateString.
После код заработал.
Использование
Ниже — интерфейс Nightgraph. Зебеди пометил цифрами четыре основных элемента:
- Статус системы.
- Динамика уровня сахара в крови.
- Прогноз OpenAPS.
- Введение инсулина помпой.
OpenAPS каждые пять минут корректирует базальные профили, или дозировки подачи инсулина («Как OpenAPS принимает решения»). Основные параметры, которые вычисляет система:
- Разница между текущим уровнем сахара в крови и средним за последние пять минут.
- Среднее изменение уровня сахара за 15 и 45 минут.
- Количество инсулина в организме: это важно, поскольку он расходуется неинтуитивно, оставаясь в теле какое-то время, а не исчезая вместе с переработанной глюкозой.
- Чувствительность к инсулину.
Кроме того, OpenAPS замечает, когда Зебеди заболевает. За сутки до первых симптомов уровень сахара в крови у него значительно повышается.
OpenAPS, отмечает разработчик, — не панацея. Ему по-прежнему нужно принимать инсулин перед едой, да и с алкоголем система тоже не поможет. Тем не менее с OpenAPS ему гораздо удобнее и спокойнее.
На языке в котором '5' - '2' = 3, а '5' + '2' = '52' я бы как-то забоялся поджелудочную гонять 😂
Вы, возможно, не поверите, но подобное поведение довольно логично и предсказуемо, если представлять себе как устроен javascript. Если вам подобная логика не нравится - вы можете писать строго типизированный код на typescript, например, где операция '5' - '2' приведет к ошибке еще на стадии компиляции.
если вы не знаете язык, то это сугубо ваши личные проблемы
Это как раз логичное поведение и не представляет особой угрозы.
Где действительно надо быть осторожным в ПО для подобного прибора, это в моментах типа 0.1 + 0.2 !== 0.3
На самом деле решение вполне логичное. Как mvp вполне подойдёт, а получив финансирование можно и научиться платы разводить и писать под микроконтроллеры. Я когда проектировал свой процессор тоже сначала писал на C++ эмулятор(тк это основной язык), а потом уже купил fpga и переписал все на verilog.
Как отец диабетика не стал читать дальше слов "по наитию". Блядь, ну хоть немного погрузитесь в тему. Извините за мат, но это же реальный пиздец.
Абсолютно те же эмоции. Пойду ща сыну бахну инсулинчика.
Как биомед инженер, который погружался в эту проблему скажу что то что он делает это ад. В принципе FDA по этой причине и выпустила свое предупреждение https://www.fda.gov/news-events/press-announcements/fda-warns-against-use-unauthorized-devices-diabetes-management
Интересно, а не яваскрипт ли довел человека до диабета?
Ваш уровень сахара в крови: NaN ммоль/л
Велосипед, такие системы есть.
Вот если бы он сделал копию сенсора из подручных средств - весь мир был бы благодарен.
Хотя, пристрелили его тогда бы.
А кстати в чем проблема этих сенсоров? Почему они так адово стоят и их нужно постоянно менять?
Неинвазивный сенсор постоянного мониторинга? Вы про такие?
I never asked for this // this undefined
ну вы понели))00
аугументация hand-made, великолепно
Надеюсь никакому хакеру не захочется взломать эту систему