Методика

Страница описывает, откуда взято каждое число на карте и как получен каждый расчётный показатель. Она написана для специалиста, который будет расчёт проверять, а не принимать на веру. Константы модели выводятся здесь автоматически из файла 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 год. Источники, проверенные и отвергнутые именно по основанию определения, перечислены в Источниках.

Источники по слоям

СлойИсточникГодОхват
ЗаболеваемостьЦНИИОИЗ Минздрава России202385 субъектов
НаселениеРосстат, бюллетень по муниципальным образованиям202485 субъектов
Коечный фондРосстат, «Регионы России»202570 субъектов
СанаторииГосреестр курортного фонда, Минздрав России202615 субъектов Юга и СКФО
Природные ресурсыГосреестр курортного фонда; координаты — Nominatim (OSM)202675 месторождений
Смертность от ССЗЕМИСС, показатель 55382202385 субъектов
Контекст: СД2 на учётеФедеральный регистр сахарного диабета202689 субъектов
Контекст: классы МКБЕМИСС, показатель 41699202381 субъект
Контекст: ожирение у детейЕМИСС, показатель 62432202579 субъектов
Питание: калорийностьЕМИСС, показатель 33406202585 субъектов
Питание: белки, жиры, углеводыЕМИСС, показатель 33432202585 субъектов
Питание: потребление продуктовЕМИСС, показатель 313462023–202482 субъекта

Расчёт потребности

случаи(регион) = общая_заболеваемость_все_болезни × население ÷ 100 000 потребность(регион) = случаи × 0,0302 × 21 ÷ 340 обеспеченность(регион) = мест_в_СКО ÷ потребность(регион) × 100 %

Годовой поток пациентов переводят в число одновременно занятых коек две величины: длительность курса СКЛ в днях (21) и рабочих дней койки в году (340).

Обе стороны отношения измеряют одно и то же

Росстат публикует коечный фонд одним числом на субъект: все профили, все поводы, включая оздоровительный отдых. Пока по другую сторону отношения стояла потребность двух классов болезней, сравнивалось целое с долей — и каждый курортный регион выходил на десяти-двадцатикратное «превышение». Это была не находка, а арифметика, выданная за находку.

Поэтому база пациентов — вся зарегистрированная заболеваемость субъекта: та совокупность, которую фонд и обслуживает. Разбивка по эндокринным болезням и болезням системы кровообращения осталась в карточке региона, но обеспеченность больше не считает.

Доля направляемых измерена, а не назначена

Это единственное число в модели, которое раньше было экспертной оценкой. Теперь оно откалибровано по двум опубликованным величинам:

размещено в СКО за год (Росстат, 2025): 7 125 530 человек зарегистрировано больных, все болезни (ЦНИИОИЗ, 2023): 235 781 464 случая отношение: 0,0302

Считается по 69 субъектам, где известны оба числа. compute_deficit.py пересчитывает отношение на каждом прогоне и отказывается работать, если оно разошлось с константой: число не может тихо устареть вслед за данными.

Что здесь не утверждается: что трём процентам больных «положено» в санаторий. Это измеренная доля фактических направлений, а не норматив. Норматива в открытом доступе нет.

Проверка, которую модель прошла не по построению

Курс 21 дней при 340 рабочих днях койки переводит измеренный годовой поток в 440 106 коек. Росстат насчитывает 442 330 мест. Расхождение 0,5 % — и эти две константы в калибровке не участвуют, то есть согласие получено не подгонкой. Смоук-гейт проверяет баланс фонда и расчётной потребности по стране на каждой сборке.

Константы

КонстантаЗначениеПроисхождение
COURSE_DAYS21 днейтиповая длительность курса СКЛ, 21 день
OPERATING_DAYS340 дней в годуэкспертная оценка ИПИИР
REFERRAL_RATE_ALL0,0302 (3,02 %)откалибровано по фактическому потоку Росстата
REFERRAL_RATE[endocrine]0,02 (2,0 %)экспертная оценка ИПИИР, только для разбивки по группам
REFERRAL_RATE[cvd]0,05 (5,0 %)экспертная оценка ИПИИР, только для разбивки по группам
DISAGREEMENT_TOLERANCE0,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 ккал, — но карта субъектов требует одного числа на субъект.

Слой описательный: он не входит ни в расчёт потребности, ни в обеспеченность. Связывать рацион с заболеваемостью на этих данных корректно нельзя — обследование бюджетов и медицинская отчётность собираются по разным основаниям и на разных совокупностях. Слой отвечает на вопрос «что в регионе покупают», и только на него.

Ограничения

Что улучшило бы модель

Три набора данных превратили бы расчётную модель в измерение.

  1. Официальная статистика направлений на СКЛ в разрезе нозологий — вместо экспертной оценки доли направляемых.
  2. Коечный фонд в разрезе профилей лечения — это позволило бы считать обеспеченность отдельно по каждой нозологии.
  3. Заболеваемость по контингенту состоящих на учёте в единой разбивке с первичной — это привело бы базу пациентов в соответствие с тем, как калибрована доля направляемых.

Все три существуют в ведомственной отчётности. ИПИИР готов пересчитать модель на них и опубликовать результат с указанием источника. Это предложение к сотрудничеству, а не претензия к открытым данным.