Методика
Страница описывает, откуда взято каждое число на карте и как получен каждый расчётный
показатель. Она написана для специалиста, который будет расчёт проверять, а не принимать
на веру. Константы модели выводятся здесь автоматически из файла
scripts/constants.py при сборке сайта: в вёрстке их нет, разойтись с расчётом
они не могут, и отдельный тест это проверяет.
Два определения заболеваемости и где какое работает
В проекте используются оба показателя заболеваемости, и они никогда не смешиваются внутри одного расчёта и внутри одного файла данных.
| Показатель | Что считает | Где используется |
|---|---|---|
| Первичная заболеваемость «диагноз, установленный впервые в жизни» |
Новые случаи за год | Слой «Здоровье», карточка региона и его страница — как самостоятельный показатель. В расчёт потребности не входит |
| Общая заболеваемость зарегистрировано больных, состоящие на учёте |
Все, кто живёт с заболеванием и попал в учётные формы | Слой «Обеспеченность» — база пациентов в расчёте потребности. Показывается и в карточке региона рядом с первичной |
Почему первичная заболеваемость выглядит неправдоподобно низкой
Потому что это не распространённость болезни. «Впервые выявлено ожирение — 289 на 100 тыс.» означает 0,29 % населения за год, а не 0,29 % полных людей в стране. Состоящих на учёте с ожирением в медиане по субъектам 1 681 на 100 тыс. — в 5,8 раза больше, но и это учтённая заболеваемость: диагноз E66 ставится и кодируется далеко не каждому, у кого он есть. Обследования с весами и ростомером дают величину другого порядка; такого показателя в разрезе субъектов в открытом доступе нет, и подставлять его сюда было бы подменой источника. На карте и в карточке региона показаны оба учтённых числа рядом — именно чтобы разрыв был виден, а не додумывался.
Разница между определениями — не нюанс: для сахарного диабета она примерно на порядок.
По Ставропольскому краю на учёте состоят 2 581 человек на 100 тыс., выявлено впервые — 241.
Поэтому показатели лежат в разных файлах (health.json и
prevalence.json), а не в соседних колонках одного, и каждое число на сайте
подписано тем определением, к которому относится.
Первичная заболеваемость по всем трём нозологиям — ожирение, сахарный диабет II типа, болезни системы кровообращения — взята из одного издания ЦНИИОИЗ Минздрава России за 2023 год, поэтому внутри этого набора определение гарантированно единое. Общая заболеваемость по классам МКБ-10 — из ЕМИСС, показатель 41699, тот же 2023 год. Источники, проверенные и отвергнутые именно по основанию определения, перечислены в Источниках.
Источники по слоям
| Слой | Источник | Год | Охват |
|---|---|---|---|
| Заболеваемость | ЦНИИОИЗ Минздрава России | 2023 | 85 субъектов |
| Население | Росстат, бюллетень по муниципальным образованиям | 2024 | 85 субъектов |
| Коечный фонд | Росстат, «Регионы России» | 2025 | 70 субъектов |
| Санатории | Госреестр курортного фонда, Минздрав России | 2026 | 15 субъектов Юга и СКФО |
| Природные ресурсы | Госреестр курортного фонда; координаты — Nominatim (OSM) | 2026 | 75 месторождений |
| Смертность от ССЗ | ЕМИСС, показатель 55382 | 2023 | 85 субъектов |
| Контекст: СД2 на учёте | Федеральный регистр сахарного диабета | 2026 | 89 субъектов |
| Контекст: классы МКБ | ЕМИСС, показатель 41699 | 2023 | 81 субъект |
| Контекст: ожирение у детей | ЕМИСС, показатель 62432 | 2025 | 79 субъектов |
| Питание: калорийность | ЕМИСС, показатель 33406 | 2025 | 85 субъектов |
| Питание: белки, жиры, углеводы | ЕМИСС, показатель 33432 | 2025 | 85 субъектов |
| Питание: потребление продуктов | ЕМИСС, показатель 31346 | 2023–2024 | 82 субъекта |
Расчёт потребности
Годовой поток пациентов переводят в число одновременно занятых коек две величины: длительность курса СКЛ в днях (21) и рабочих дней койки в году (340).
Обе стороны отношения измеряют одно и то же
Росстат публикует коечный фонд одним числом на субъект: все профили, все поводы, включая оздоровительный отдых. Пока по другую сторону отношения стояла потребность двух классов болезней, сравнивалось целое с долей — и каждый курортный регион выходил на десяти-двадцатикратное «превышение». Это была не находка, а арифметика, выданная за находку.
Поэтому база пациентов — вся зарегистрированная заболеваемость субъекта: та совокупность, которую фонд и обслуживает. Разбивка по эндокринным болезням и болезням системы кровообращения осталась в карточке региона, но обеспеченность больше не считает.
Доля направляемых измерена, а не назначена
Это единственное число в модели, которое раньше было экспертной оценкой. Теперь оно откалибровано по двум опубликованным величинам:
Считается по 69 субъектам, где известны оба числа. compute_deficit.py
пересчитывает отношение на каждом прогоне и отказывается работать, если оно разошлось
с константой: число не может тихо устареть вслед за данными.
Что здесь не утверждается: что трём процентам больных «положено» в санаторий. Это измеренная доля фактических направлений, а не норматив. Норматива в открытом доступе нет.
Проверка, которую модель прошла не по построению
Курс 21 дней при 340 рабочих днях койки переводит измеренный годовой поток в 440 106 коек. Росстат насчитывает 442 330 мест. Расхождение 0,5 % — и эти две константы в калибровке не участвуют, то есть согласие получено не подгонкой. Смоук-гейт проверяет баланс фонда и расчётной потребности по стране на каждой сборке.
Константы
| Константа | Значение | Происхождение |
|---|---|---|
COURSE_DAYS | 21 дней | типовая длительность курса СКЛ, 21 день |
OPERATING_DAYS | 340 дней в году | экспертная оценка ИПИИР |
REFERRAL_RATE_ALL | 0,0302 (3,02 %) | откалибровано по фактическому потоку Росстата |
REFERRAL_RATE[endocrine] | 0,02 (2,0 %) | экспертная оценка ИПИИР, только для разбивки по группам |
REFERRAL_RATE[cvd] | 0,05 (5,0 %) | экспертная оценка ИПИИР, только для разбивки по группам |
DISAGREEMENT_TOLERANCE | 0,25 (25 %) | правило проекта (CLAUDE.md E1) |
Почему слой называется «Обеспеченность», а не «Дефицит»
Проект задумывался как карта дефицита. На выправленной модели видно другое, и это интереснее: медиана по стране — 67 %, ниже ста процентов 56 субъектов из 70, а весь фонд сосредоточен в нескольких регионах. Москва — 9 %, Санкт-Петербург — 20 %, ХМАО — 18 %. На другом конце Крым (946 %), Краснодарский край (690 %) и Ставрополье (384 %). Один Краснодарский край держит почти четверть коечного фонда страны.
Это и есть содержательный результат модуля 1, а не дефект расчёта: курортный фонд стоит там, где отдыхают, а больные живут там, где работают. Регион с тяжёлым бременем болезней системы кровообращения не обязан иметь собственный фонд — но тогда его пациенты лечатся за его пределами, и это управленческий факт, который карта делает видимым.
Что значение ниже 100 % НЕ означает. Оно не означает, что жителей региона не лечат. Оно означает, что субъект держит меньшую долю коечного фонда страны, чем его доля в заболеваемости страны, — его жители едут лечиться за его пределы. Это факт о размещении фонда, а не о доступности помощи, и путать эти два утверждения нельзя.
Ограничение, которое осталось: разбивки коечного фонда по профилям лечения в открытом доступе не существует — ни реестр, ни Росстат её не публикуют. Поэтому модель отвечает на вопрос «соразмерен ли фонд субъекта его бремени болезней» и не отвечает на вопрос «хватает ли в регионе коек кардиологического профиля».
Слой по-прежнему не выносит вердикт «дефицит есть / дефицита нет», а показывает относительный показатель — кратность коечного фонда к расчётной потребности. Пороговые уровни из модели удалены в Спринте 3 и не возвращены: классы шкалы считаются квантилями по регионам с данными, и их реальные границы напечатаны в легенде.
Насколько велики названные ограничения
Модель дважды исправлялась 22 сентября 2026 года, и оба раза — в сторону сопоставимости величин. Ниже, что именно было не так.
База пациентов. Потребность считалась от первичной заболеваемости, тогда как доля направляемых всегда означала долю от контингента. Разрыв измерим: по Ставрополью на учёте с СД2 состоят 2 581 человек на 100 тыс., а впервые выявлено 241 — в 10,7 раза меньше.
Охват базы. Даже перейдя на контингент, модель сравнивала весь коечный фонд субъекта с потребностью двух классов болезней. Отсюда и брались кратности: Крым 22×, Краснодарский край 19×. Теперь по обе стороны отношения стоит вся заболеваемость, и те же субъекты дают 946 % и 690 % — по-прежнему много, но это уже осмысленная величина: во столько раз фонд региона больше, чем его собственная доля в бремени болезней.
Фактическая занятость койки. В модели заложено 340 рабочих дней койки в году — экспертная оценка. Фактическая занятость, посчитанная как число ночёвок на число мест, по стране составляет 173 дня, а средняя длительность пребывания — 10,7 дня против курса в 21 день. Константы при этом не изменены: «рабочих дней» и «фактически занятых дней» — разные величины, а короткое пребывание — это не курс лечения. Подменить одно другим значило бы выдать недозагрузку и оздоровительный отдых за лечебную потребность. Обе пары чисел видны рядом на странице региона.
Фактическая занятость койки. В модели заложено 340 рабочих дней койки в году — экспертная оценка. Фактическая занятость, посчитанная как число ночёвок на число мест, по стране составляет 173 дня. Константа при этом не изменена: «рабочих дней» и «фактически занятых дней» — разные величины, и подменить одну другой значило бы выдать недозагрузку за недоступность. Обе цифры теперь видны рядом.
Слой «Питание»
Три показателя выборочного обследования бюджетов домашних хозяйств Росстата: калорийность рациона в ккал на члена домохозяйства в сутки, состав пищевых веществ (белки, жиры, углеводы) и потребление групп продуктов на душу в год. Все три — из одного обследования, поэтому сопоставимы между собой.
Ограничение у них общее и существенное: обследование измеряет, сколько продуктов домохозяйство принесло домой, а не сколько человек съел. Питание вне дома в эти цифры не входит, потери и выбросы — входят. Калорийность здесь — характеристика структуры покупок домохозяйства, а не физиологического потребления, и на карте у легенды об этом стоит отметка.
Тип поселения зафиксирован на «Всего по территории». Городской и сельский разрезы в источнике есть и различаются сильно — по России 2 684 против 2 161 ккал, — но карта субъектов требует одного числа на субъект.
Слой описательный: он не входит ни в расчёт потребности, ни в обеспеченность. Связывать рацион с заболеваемостью на этих данных корректно нельзя — обследование бюджетов и медицинская отчётность собираются по разным основаниям и на разных совокупностях. Слой отвечает на вопрос «что в регионе покупают», и только на него.
Ограничения
- Годы показателей различаются: заболеваемость за 2023, население на 2024, коечный фонд за 2025. Год указан рядом с каждым числом и в карточке региона.
- Доля направляемых на СКЛ — экспертная оценка ИПИИР. Официальной статистики направлений на санаторно-курортное лечение в разрезе нозологий в открытом доступе нет.
- Коечность отдельных санаториев Госреестр курортного фонда не публикует ни для одной организации. Обеспеченность считается от суммарного показателя Росстата по субъекту.
- Разбивки коечного фонда по профилям лечения нет ни в одном открытом источнике. Поэтому показатель один на регион, а не отдельный по каждой нозологии.
- По 19 субъектам обеспеченность не рассчитана: Росстат не публикует их коечный фонд либо отсутствует заболеваемость. Такие регионы заштрихованы, и подсказка называет причину.
- По Донецкой и Луганской Народным Республикам, Запорожской и Херсонской областям данных нет: их исключают из своих публикаций и Росстат, и ЦНИИОИЗ.
- Перечень санаторно-курортных организаций собран по 15 субъектам Юга и Северного Кавказа. У трети организаций реестр не публикует профиль лечения.
- Зоны санитарной охраны месторождений минеральных вод и лечебных грязей не картированы: геометрии ЗСО в открытом доступе нет.
- Слой «Ресурсы» схематичен по построению. Реестр публикует название месторождения и курорт, к которому оно отнесено, но не координаты и не гидрохимическую классификацию. Точка на карте обозначает курорт, а не устье скважины; тип воды не указан, потому что источник его не даёт. Из 75 записей 49 удалось привязать к точке, остальные показаны только в перечне региона.
Что улучшило бы модель
Три набора данных превратили бы расчётную модель в измерение.
- Официальная статистика направлений на СКЛ в разрезе нозологий — вместо экспертной оценки доли направляемых.
- Коечный фонд в разрезе профилей лечения — это позволило бы считать обеспеченность отдельно по каждой нозологии.
- Заболеваемость по контингенту состоящих на учёте в единой разбивке с первичной — это привело бы базу пациентов в соответствие с тем, как калибрована доля направляемых.
Все три существуют в ведомственной отчётности. ИПИИР готов пересчитать модель на них и опубликовать результат с указанием источника. Это предложение к сотрудничеству, а не претензия к открытым данным.