Полгода назад я писал здесь, как за 5 дней с помощью нейросетей создал приложение для мониторинга диабета у своей кошки Манишки. Ей было 13 лет, она весила 3 кг, и каждый день я мерял ей сахар глюкометром и колол инсулин. Из блокнота на холодильнике данные перекочевали в Excel, потом в Python-скрипт с графиками, а потом — в полноценное веб-приложение Diabnostic.

С тех пор кое-что изменилось: Манишка вышла в ремиссию в декабре 2025 — глюкоза пришла в норму, инсулин больше не нужен. Но приложение жило своей жизнью: за 5 месяцев работы на платформе зарегистрировались 346 владельцев, и вместе с их питомцами накопился уникальный датасет — 6 773 записи глюкозы от 121 питомца.
📥 Анонимизированный датасет (6 773 записи, 117 питомцев) доступен на GitHub — можете покопаться сами.
В этой статье — о том, какие неожиданные медицинские инсайты я нашёл в обычном дневнике глюкозы.
⚠️ Важный дисклеймер
Всё, что изложено ниже, — результаты наблюдательного анализа данных, а не клиническое исследование. Эти данные:
-
Не прошли 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.
Вместо заключения
Когда я начинал проект, я думал, что делаю удобный дневник для Манишки. Побочным эффектом оказался датасет, которого, насколько я знаю, нет ни у кого в России: почти 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
Автор: teamfighter


