Привет, Хабр!
Полгода назад я писал здесь, как за 5 дней с помощью нейросетей создал приложение для мониторинга диабета у своей кошки Манишки. Ей было 13 лет, она весила 3 кг, и каждый день я мерял ей сахар глюкометром и колол инсулин. Из блокнота на холодильнике данные перекочевали в Excel, потом в Python-скрипт с графиками, а потом — в полноценное веб-приложение Diabnostic.
С тех пор кое-что изменилось: Манишка вышла в ремиссию в декабре 2025 — глюкоза пришла в норму, инсулин больше не нужен. Но приложение жило своей жизнью: за 5 месяцев работы на платформе зарегистрировались 346 владельцев, и вместе с их питомцами накопился уникальный датасет — 6 773 записи глюкозы от 121 питомца.
📥 Анонимизированный датасет (6 773 записи, 117 питомцев) доступен на GitHub и на Kaggle — можете покопаться сами.
В этой статье — о том, какие неожиданные медицинские инсайты я нашёл в обычном дневнике глюкозы.
⚠️ Важный дисклеймер
Всё, что изложено ниже, — результаты наблюдательного анализа данных, а не клиническое исследование. Эти данные:
Не прошли peer review и не опубликованы в рецензируемых журналах
Собраны от владельцев питомцев, а не в контролируемых лабораторных условиях
Содержат неизбежные погрешности: разное время измерения, разные глюкометры, влияние кормления, стресса и других факторов
Не могут служить основанием для назначения или отмены лечения
Упоминание торговых марок лекарственных препаратов носит исключительно информационный характер в целях идентификации действующих веществ. Я не делаю заявлений об эффективности или безопасности каких-либо препаратов, не провожу их сравнительных испытаний и не даю рекомендаций по выбору терапии. Все торговые марки принадлежат их правообладателям.
Любые решения о лечении принимает только ветеринарный врач.
Датасет: откуда цифры и можно ли им верить
Diabnostic — это веб-приложение (PWA), где владельцы вручную вносят показания глюкометра, дозу инсулина, вес и заметки. Никакой автоматической интеграции с глюкометрами (пока). Каждая запись — осознанное действие человека.
Есть базовая валидация: глюкоза принимается в диапазоне 0.1–50 ммоль/л, доза инсулина — 0–100 единиц. Явно мусорных записей в базе нет — они не проходят валидацию. Но гарантировать точность каждого числа я не могу: разные глюкометры имеют разную погрешность (±15–20%), а измерение уровня глюкозы у кошки — процесс не самый стабильный (попробуйте уколоть в ухо животное, которое этого не хочет).
Общие метрики
Параметр | Значение |
|---|---|
Период | ноябрь 2025 — март 2026 (5 месяцев) |
Зарегистрированных пользователей | 346 |
Записей глюкозы | 6 773 |
Питомцев с записями | 121 |
Активных питомцев (последние 30 дней) | 42 |
Замеров в день (на платформе) | ~51 |
Описательная статистика глюкозы
Показатель | Значение |
|---|---|
Среднее ± SD | 14.5 ± 7.4 ммоль/л |
Медиана | 14.5 ммоль/л |
Межквартильный размах (IQR) | 7.9 – 19.7 ммоль/л |
10-й – 90-й перцентиль | 5.1 – 24.2 ммоль/л |
Диапазон | 0.1 – 40.0 ммоль/л |
Среднее совпадает с медианой — распределение почти симметричное, но с тяжёлыми хвостами: 10% замеров ниже 5, ещё 10% — выше 24 ммоль/л.
Вовлечённость на пациента
Показатель | Значение |
|---|---|
Среднее записей на питомца | 58 |
Медиана записей на питомца | 16 |
Максимум | 340 записей |
Питомцев с 100+ записями | 29 (24%) |
Питомцев с 50+ записями | 43 (36%) |
Средний внутрипациентный SD | 5.1 ммоль/л |
Половина питомцев имеет 16 или меньше записей, при этом среднее — 58. Типичное правоскошенное распределение: большинство владельцев вносят данные пару недель, а ядро из 29 питомцев (100+ записей каждый) — ведёт дневник ежедневно месяцами.

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

90% пользователей — владельцы кошек. Средний возраст кошки с диабетом — 11 лет, что совпадает с литературными данными: пик заболеваемости приходится на 10–13 лет [1, 2]. Среди заболевших чуть больше самцов (54%) — коты болеют диабетом в 1.5–2 раза чаще кошек, что тоже согласуется с эпидемиологическими исследованиями [1, 2].
Находка №1: Распределение глюкозы — только 29% в норме

Лишь 28.8% всех замеров попадают в целевой диапазон 4–10 ммоль/л. Больше половины записей — выше 15 ммоль/л. Это одновременно и ожидаемо (диабет — болезнь с хронической гипергликемией), и отрезвляюще: даже при активном мониторинге большинство питомцев далеки от компенсации.

Два пика измерений — 8:00 и 20:00 — совпадают с типичным расписанием инъекций инсулина каждые 12 часов:
Время | Записей | Ср. глюкоза | В целевом диапазоне |
|---|---|---|---|
8:00 (после инъекции) | 573 | 12.9 | 39.6% |
20:00 (после инъекции) | 589 | 13.9 | 30.9% |
7:00 (до инъекции) | 447 | 16.2 | 26.0% |
5:00 (ночь) | 73 | 16.8 | 16.4% |
Лучший контроль наблюдается сразу после утренней инъекции, а худший — в 5–7 утра, когда действие вечернего инсулина заканчивается. Это полностью соответствует фармакокинетике: длительные инсулины имеют пик действия через 4–6 часов и «хвост» до 12–16 часов.
Практический вывод: если ваша кошка стабильно «уходит» в гипергликемию к утру — это не обязательно проблема дозы, а вероятная особенность фармакокинетики конкретного инсулина. Обсудите с ветеринаром.
Находка №3: Сравнение действующих веществ инсулинов
На платформе используют 8 различных групп инсулинов. Я сравнил их по проценту времени в целевом диапазоне (4–10 ммоль/л) — это стандартный показатель Time-in-Range из человеческой эндокринологии:

На графике данные с малой выборкой (< 5 питомцев) выделены серым. Например, 83% у гларгина U300 — это один питомец. Возможно, его владелец идеально следит за диетой и режимом, а не заслуга конкретного препарата. Делать выводы по n=1 нельзя.
Если смотреть только на надёжные данные (≥ 5 питомцев):
Действующее вещество | Питомцев | Записей | % в диапазоне |
|---|---|---|---|
Гларгин U100 | 6 | 408 | 33.8% |
Детемир | 39 | 3 124 | 28.2% |
Гларгин U50 (ветеринарный) | 15 | 1 103 | 23.8% |
Тенденция к лучшему контролю на гларгине U100 согласуется с рекомендациями ISFM, где гларгин рекомендован как один из препаратов первой линии для кошек [3]. Но и тут оговорки:
Нет контроля за диетой, стадией диабета, сопутствующими заболеваниями
Детемир (39 питомцев) включает и начинающих, и опытных владельцев — «размытие» выборки
Самоотбор: кто ведёт дневник в приложении — уже не случайная выборка
Полная таблица (включая малые выборки)
Действующее вещество | Записей | Питомцев | Ср. глюкоза | Медиана | Ср. доза | % в диапазоне |
|---|---|---|---|---|---|---|
Гларгин U300 | 262 | 1 ⚠️ | 5.8 | 5.8 | 1.85 | 83.2% |
Гларгин (аналог) | 88 | 4 ⚠️ | 10.3 | 9.5 | 1.82 | 45.5% |
Гларгин U100 | 408 | 6 | 12.5 | 12.3 | 1.06 | 33.8% |
Детемир | 3 124 | 39 | 15.0 | 14.8 | 1.36 | 28.2% |
Гларгин U50 (ветеринарный) | 1 103 | 15 | 15.5 | 15.6 | 0.88 | 23.8% |
Изофан-инсулин | 62 | 1 ⚠️ | 15.5 | 16.4 | 0.02 | 17.7% |
Гларгин (прочий) | 258 | 3 ⚠️ | 15.8 | 17.4 | 0.68 | 12.8% |
Изофан NPH | 16 | 1 ⚠️ | 15.9 | 15.6 | 3.01 | 6.3% |
⚠️ — выборка < 5 питомцев, данные ненадёжны.
Находка №4: Парадокс дозы
Зависимость «доза инсулина → уровень глюкозы» оказалась нелинейной и образует характерную U-образную кривую:

Почему лучший контроль у тех, кто не колет инсулин, и у тех, кто колет много? Это не парадокс, а артефакт выборки:
0 единиц — записи на этапе диагностики (до начала терапии) или записи питомцев в ремиссии (как моя Манишка — глюкоза в норме без инъекций)
0.5–2.0 единицы — период титрования (подбора дозы), когда терапия только начинается и контроль ещё не достигнут
3+ единиц — питомцы на стабильной, уже подобранной терапии
Это красивая иллюстрация ловушки, в которую легко попасть при анализе наблюдательных данных: выше доза ≠ хуже контроль. Наоборот: высокая доза обычно означает длинный стаж терапии и, как следствие, стабильную ситуацию.
Если вы когда-нибудь видели корреляцию и торопились с выводами — вот вам пример, почему не стоит.
Находка №5: 40% кошек хотя бы раз были в гипогликемии

40% питомцев за 5 месяцев наблюдения хотя бы раз имели глюкозу ниже 3.5 ммоль/л. Из них 24 записи — ниже 2.0 ммоль/л, что является жизнеугрожающим состоянием.
Для контекста: в человеческой диабетологии считается, что 3–4% записей с гипогликемией — приемлемый уровень. У моих пациентов — 4.9% (308 + 24 записей из 6783), что немного выше нормы.
Инсулин — это не таблетки. Передозировка может убить за часы. Именно поэтому дневник глюкозы — не «для галочки», а инструмент безопасности.
Находка №6: Коморбидность с болезнью почек
У меня пока не так много лабораторных анализов (755 результатов — пользователи могут загружать фото анализов, и OCR вытаскивает значения). Но даже на этой выборке видна тревожная картина:

��ри из пяти лидеров — маркеры хронической болезни почек (ХБП): креатинин (77%), фосфор (56%), мочевина (50%). По данным литературы, частота ХБП среди диабетических кошек составляет около 44% — против 11% у недиабетических [4]. Мои данные (50–77% по отдельным маркерам) вписываются в эту картину.
Для ветеринарных клиник это важный инсайт: если к вам приходит кошка с диабетом — проверьте почки. С вероятностью 50%+ там будут проблемы.
Техническая часть
Для тех, кому интересен стек (он вырос с момента первой статьи):
Backend: Python (FastAPI) + PostgreSQL + SQLAlchemy + Alembic
Frontend: React + TypeScript + Vite + PWA (оффлайн-поддержка)
AI: OpenRouter API для анализа кривых глюкозы
OCR: распознавание лабораторных анализов с фотографии с помощью Gemini 2.0
Аналитика: Metabase для BI-дашбордов
Инфра: Docker + Nginx + Yandex Cloud VPS
Для анализа в этой статье я использовал прямые SQL-запросы к production-базе через Metabase. Пример расчёта Time-in-Range:
SELECT CASE WHEN it.name IN ('Левемир', 'Levemir') THEN 'Детемир' WHEN it.name IN ('Лантус', 'Lantus') THEN 'Гларгин U100' -- ...группировка по действующему веществу END AS insulin_group, COUNT(*) AS records, COUNT(DISTINCT pet_id) AS pets, ROUND(AVG(glucose)::numeric, 1) AS avg_glucose, ROUND(100.0 * COUNT(CASE WHEN glucose BETWEEN 4 AND 10 THEN 1 END) / NULLIF(COUNT(*), 0), 1) AS pct_in_range FROM glucose_records gr JOIN pets p ON gr.pet_id = p.id LEFT JOIN insulin_types it ON p.insulin_type_id = it.id WHERE gr.date >= '2025-11-01' GROUP BY insulin_group ORDER BY pct_in_range DESC;
Что дальше
У платформы 346 пользователей и ~50 замеров в день. Датасет растёт каждый день. Из планов:
ML-модель предсказания гипогликемии по паттерну предыдущих измерений — пока 24 случая тяжёлой гипогликемии, для полноценной модели мало, но с ростом данных хочу попробовать
Интеграция с CGM (системами непрерывного мониторинга) — вместо 2–3 замеров будет 288 в день
B2B для ветклиник — дашборд со всеми пациентами, вместо бумажных карточек — уже в работе, MVP готов.
Если вы data scientist и хотите поиграть с данными — датасет на Github и на Kaggle.
Вместо заключения
Когда я начинал проект, я думал, что делаю удобный дневник для Манишки. Побочным эффектом оказался датасет, которого, насколько я знаю, нет ни у кого в России: почти 7 000 записей глюкозы с привязкой к типу инсулина, дозе, времени суток, виду и возрасту животного.
Манишка уже в ремиссии и больше не нуждается в инъекциях. Но каждый день на платформе появляются новые записи от сотни других питомцев.
Если у вашего питомца диабет — попробуйте Diabnostic. Если вы ветеринарный эндокринолог или data scientist и хотите покопаться в данных вместе — напишите мне, датасет растёт.
Все данные в статье анонимизированы. Имена питомцев и данные владельцев не раскрываются.
Литература
O'Neill D.G. et al. Epidemiology of Diabetes Mellitus among 193,435 Cats Attending Primary‑Care Veterinary Practices in England. J Vet Intern Med, 2016. DOI: 10.1111/jvim.14365
Öhlund M. et al. Incidence of Diabetes Mellitus in Insured Swedish Cats in Relation to Age, Breed and Sex. J Vet Intern Med, 2015. DOI: 10.1111/jvim.13584
Sparkes A.H. et al. ISFM Consensus Guidelines on the Practical Management of Diabetes Mellitus in Cats. J Feline Med Surg, 2015. DOI: 10.1177/1098612×15571880
Pérez‑López L. et al. Assessment of the association between diabetes mellitus and chronic kidney disease in adult cats. J Vet Intern Med, 2019. DOI: 10.1111/jvim.15559
