# Выбор болезни на 3D-модели и новые изменения формы

Статус: принята · 13.10.2026 · issue #307. Никита спросил 13.10.2026: «А можно ли еще сделать 3d модель, когда выбираешь какую-то болезнь, модель изменяется».
Продолжает спеку [признаков болезней на 3D-модели](2026-10-12-disease-signs-3d.md) и опирается на неё: формы болезней, шейдер, ограничения модели, правила источников.

## Что уже есть и чего не хватает

- Формы болезней уже есть у восьми статей (`packages/viewer/src/disease.ts`): ЛЖ увеличен при ДКМП, зона инфаркта при ИБС, суженный аортальный клапан, подсветка ЛЖ при АГ и ГКМП, значок ДМПП, слабое сжатие при СН и ФП. Они видны только в статьях этих болезней, в разделе «Как это выглядит в модели».
- На странице 3D (`/anatomy/`) болезнь выбрать нельзя, поэтому читатель, который пришёл к модели, этих форм не видит.
- В статье нельзя сравнить с нормой на той же модели, если у статьи нет пресета часов.
- Форма меняется только у ЛЖ и аортального клапана. Регургитации, стенозы других клапанов, расширение предсердий и правого желудочка не показаны, хотя статьи о них есть и источники это описывают.

## PR 1. Выбор болезни и «норма / болезнь»

- Вьюер получает проп `diseases?: { id: DiseaseId; label: string; href: string }[]`. Если он задан, в панели над списком структур появляется выпадающий список «Показать на модели»: «Нормальное сердце» и болезни по алфавиту. Выбор меняет форму, подпись и источники так же, как проп `disease`, и даёт ссылку на статью болезни.
- Выбор сохраняется в адресе (`?disease=<id>`), чтобы ссылкой можно было поделиться; неизвестный id игнорируется. Состояние читается на клиенте, страница остаётся статической.
- На `/anatomy/` список строится из статей о болезнях этой локали, у которых есть форма, видимая без пресета часов (статичные признаки или признаки, которые вьюер рисует сам). СН и ФП показываются только через пресет часов, поэтому их на этой странице нет. Если признак виден только в движении (стеноз клапана), подпись предлагает запустить сердцебиение. Название в списке это заголовок статьи, ссылка через `localePath` и `BASE_URL`. Под списком ссылки на статьи с моделями сердец пациентов (тетрада Фалло, ТМА): это другие модели, их не подменяем в этом вьюере.
- Вьюер с собственной болезнью без часов (статья без пресета) получает переключатель из двух радиокнопок «Норма / При болезни», как у схем. В статье с пресетом выбор один, у часов: пресет «Норма» убирает с модели и форму болезни, второй переключатель не нужен.
- Строки en/ru и тестовой RTL-локали, e2e: выбор на `/anatomy/` меняет подпись и адрес, адрес с `?disease=` открывает форму, переключатель в статье убирает подпись, axe без нарушений.

## PR 2. Новые изменения формы

Техника та же, шейдер вершин, без новых моделей:

- **Расширение камеры**: любая из четырёх камер растёт относительно своего центра; за ней идут её сосочковые мышцы и атриовентрикулярный клапан (за желудочком). Сейчас так умеет только ЛЖ.
- **Сужение клапана**: множитель раскрытия для любого клапана, а не только аортального.
- **Регургитация**: клапан не смыкается полностью, в закрытом положении остаётся небольшое отверстие. Видно и в покое.
- **Значок**: как у ДМПП, на якоре межжелудочковой перегородки.

| Статья | Что видно на модели |
|---|---|
| `mitral-stenosis` | Митральный клапан раскрывается узко, левое предсердие расширено |
| `mitral-regurgitation` | Митральный клапан не смыкается, расширены левое предсердие и левый желудочек |
| `aortic-regurgitation` | Аортальный клапан не смыкается, левый желудочек расширен |
| `tricuspid-regurgitation` | Трёхстворчатый клапан не смыкается, расширены правое предсердие и правый желудочек |
| `pulmonary-valve-stenosis` | Клапан лёгочной артерии раскрывается узко |
| `pulmonary-hypertension` | Правый желудочек выделен цветом (стенка утолщается) и расширен |
| `ventricular-septal-defect` | Значок на межжелудочковой перегородке, расширены левое предсердие и левый желудочек |
| `restrictive-cardiomyopathy` | Оба предсердия расширены, желудочки нормального размера |

Во всех восьми статьях модель уже стоит в тексте (`<HeartModel highlight>`). Такая модель в статье о болезни с формой сама показывает форму этой статьи, а страница не добавляет вторую модель в раздел «Как это выглядит в модели».

Каждый признак опирается на предложение статьи с `<Cite>`, источник которого уже проверен при написании статьи (номер в `sources.article`, как в первой спеке). Цитаты источников собраны в `/mnt/project-files/evidence/disease-shapes-3d.md`. Величины (во сколько раз больше камера, насколько уже отверстие, размер щели) источники не дают: это допущения с пометкой `assumption` и проверкой на пересечение с соседними камерами. Если статья не подтверждает признак, признак не рисуем.

## PR 3. Стиль панели 3D (issue #318)

Переключатели «прозрачные камеры» и «только выбранное» в виде таблеток, как структуры; кнопка сердцебиения, списки и ползунки в цветах сайта; «Норма / При болезни» как переключатель схем. Кнопка «Показать 3D-модель» в одну строку в углу постера. На широком экране модель остаётся на виду, пока читатель листает список структур. «Разрез» остаётся выпадающим списком: четыре длинных названия в сегментах не помещаются в строку на телефоне.

## PR 4. Аневризма грудной аорты

Трубчатая часть восходящей аорты над нормальным корнем расширяется поперёк оси аортального клапана, как на схеме статьи `thoracic-aortic-aneurysm`. Единого размера аневризмы нет; российские рекомендации и MSD считают аневризмой расширение больше чем на 50% (статья, [2, 4]), ACC/AHA для восходящей аорты берёт размер в сантиметрах [3]. Подпись это не упрощает, модель показывает 60%, это допущение. Границы участка измерены на модели (`AORTA_BULGE` в `disease-geometry.ts`), ось расширения проходит по середине трубчатой части. Расширение, как и рост камер, рисует только шейдер: выбор структуры наведением попадает по исходной поверхности. Модель уже стоит в тексте статьи и получает форму сама.

## Чего не делаем

- Утолщение стенки формой: желудочки модели это поверхности полостей (см. первую спеку). Гипертрофия остаётся цветом и подписью.
- Вырез отверстия в перегородке: у перегородок нет своего меша, остаётся значок.
- Подмену модели в вьюере на модели пациентов: у них нет названных структур, они живут в статьях.
- Дозы, показания, прогнозы и обещания излечения в подписях. Подпись говорит только, что изменено на модели, и что всё показано схематично.
