# ЭКГ-пресеты для болезней без пресета

Статус: черновик · 12.10.2026 · issue #127
Выполняет пункт 4 этапа B спеки [интерактива в статьях](2026-10-12-article-interactivity.md). Формат и правило для чисел — из [спеки пресетов этапа 3](2026-10-11-stage-3-presets.md); модель — [часы сердца](2026-10-11-stage-2-heart-clock.md), параметры в `packages/heart-clock/src/params.ts`.

## Зачем

В статьях о ФП, ИБС, ХСН и ещё четырёх болезнях читатель переключает «норма / болезнь» на живой ЭКГ. В статьях о нарушениях ритма и проводимости, где ЭКГ — главный способ диагностики, пресета нет. Поток статей прямо просил пресет АВ-блокады ([спека статей этапа 6](2026-10-12-stage-6-tof-av-block-svt.md), раздел «Пресеты ЭКГ»).

## Отбор кандидатов

Пресет берёт только признак, который статья сама называет с `<Cite>`, и только то, что модель уже умеет рисовать.

| Кандидат | Что статья говорит об ЭКГ | Решение |
|---|---|---|
| АВ-блокада | Признаки по степеням, у I степени есть число (PR > 0,20 с) | Берём I степень |
| НЖТ | ЧСС 120–250 в минуту, ровный ритм, узкий QRS, P′ сливается с QRS | Берём, с ЧСС пресета (см. «ЧСС пресета») |
| Перикардит | Только «изменения на ЭКГ в динамике» (Минздрав) и «изменения ЭКГ — признак вовлечения миокарда» (ESC 2025). Диффузного подъёма ST и депрессии PR в статье нет | Не берём |
| ТЭЛА | ЭКГ и тахикардия в статье не упоминаются; модель к тому же показывает только левое сердце | Не берём |
| ГКМП | «ЭКГ при ГКМП часто изменена» без признаков; градиент в ВТЛЖ — это не ЭКГ, а клапанный градиент модели его не изображает | Не берём |

Перикардит, ТЭЛА и ГКМП вернутся в отбор, если поток статей добавит в них ЭКГ-признаки с источником.

## Что входит

Остальные параметры — значения по умолчанию (норма: 75 в минуту, PR 160 мс при 60 в минуту, QRS 90 мс, ровный ритм).

| Пресет | Параметр | Значение | Источник / assumption | Фраза статьи |
|---|---|---|---|---|
| `av-block-first-degree` | `prInterval` | 260 мс (при 60 в минуту) | Порог — MSD Manuals «Atrioventricular Block», 2024 (источник 2 статьи `av-block`). Само число — assumption: модель масштабирует PR как √RR, и при 260 мс PR остаётся больше 200 мс во всём диапазоне ЧСС, который пресет допускает (40–96 в минуту по `heartRateLimits`; при 75 в минуту PR ≈ 233 мс). При 240 мс PR падал бы ниже 200 мс уже с 87 в минуту | «I степень: за каждым нормальным зубцом P следует QRS, но интервал PR длиннее нормы (более 0,20 с).<Cite n={2} />» |
| `supraventricular-tachycardia` | `heartRate` | 170 в минуту | Диапазон — MSD Manuals «Reentrant (Paroxysmal) SVT», 2024 (источник 3 статьи) и > 100 в покое (источники 1, 2). Само число — assumption: внутри 120–250 и ниже предела модели 180 | «…ритм частый — от 120 до 250 ударов в минуту — и ровный.<Cite n={3} />»; «…больше 100 ударов в минуту в покое…<Cite n={[1, 2]} />» |
| | `rrIrregularity` | 0 (по умолчанию) | MSD, там же: ритм ровный | та же фраза |
| | `qrsDuration` | 90 мс (по умолчанию) | Минздрав 2025 «Наджелудочковые тахикардии» (источник 1): узкий QRS ≤ 120 мс | «Узкие комплексы QRS (≤120 мс)…<Cite n={1} />» |
| | `pAmplitude` | 0 | Минздрав 2025 и MSD: при типичной АВУРТ P′ обычно сливается с QRS. 0 — выражение «отдельного зубца P не видно» в модели (assumption: вариант «P′ в конце QRS» модель не рисует) | «При типичной АВУРТ ретроградные зубцы P′ обычно сливаются с QRS или видны в его конце…<Cite n={[1, 3]} />» |

Пресет НЖТ показывает типичную АВУРТ, а не всякую НЖТ; название — «Наджелудочковая тахикардия (АВУРТ)». Подписи (`summary`, `ecg`) прямо говорят, чего модель не показывает: для АВ-блокады — что II и III степень не изображаются; для НЖТ — внезапное начало и конец приступа и зубец P′ в конце QRS. Английские фразы статей совпадают по смыслу и числам (`content/en/disease/*.mdx`, строки 104 и 35/104).

Перед кодом PR 1 порог 0,20 с сверяется с источником 1 статьи (Минздрав 2025, «Брадиаритмии»); если там другое число, это вопрос к потоку статей, а не правка пресета.

## Что не входит

- II степень (Мобитц I и II, 2:1) и III степень АВ-блокады: нужны выпавшие QRS, растущий от удара к удару PR и АВ-диссоциация с замещающим ритмом. Это новая механика модели (у удара сейчас всегда есть и P, и QRS); отдельная спека позже, если о ней попросят.
- Синдром WPW (короткий PR, дельта-волна), ретроградный P′ после QRS, внезапное начало и конец приступа НЖТ.
- Перикардит (депрессия PR и диффузный подъём ST требуют и источника в статье, и новой механики), ТЭЛА, ГКМП — см. отбор.
- Новые параметры модели и изменения ЭКГ-формы в `ecg.ts`, `timing.ts`.
- 3D-признаки: у АВ-блокады и НЖТ нет формы в `packages/viewer`, `presetShape` для них `null`.

## Где регистрируется пресет

`packages/heart-clock` и `packages/viewer` общие: изменение согласуется через координатора до PR.

- `packages/heart-clock/src/presets.ts` — id в `presetIds` и параметры с комментарием-источником у каждого числа.
- `packages/heart-clock/test/presets.test.ts` — пределы ЧСС у AV-блокады не полные (40–96), тест «keeps every preset valid» сейчас ждёт полный диапазон у всех, кроме ДМПП.
- `packages/viewer/src/disease.ts` — `presetShape` типа `Record<PresetId, …>`: без новой строки (`null`) не соберётся типизация.
- `apps/web/src/i18n/messages/en.json` (эталон), `ru.json`, `apps/web/test/fixtures/i18n/qps-plocm.json` — ключи `heartClock.preset.<id>`, `.summary`, `.ecg` (с `{rate}`).
- `apps/web/src/components/heart-clock/sources.ts` — `presetSources`: MSD «Atrioventricular Block», MSD «Reentrant (Paroxysmal) SVT», Минздрав 2025 «Наджелудочковые тахикардии»; страница часов сердца перечисляет их сама.
- `content/{ru,en}/disease/av-block.mdx`, `supraventricular-tachycardia.mdx` — поле `preset` во frontmatter. Схема (`apps/web/src/lib/content.ts`) и `ArticleClock` берут id из `presetIds` и не меняются; страница часов сердца и форма встраивания (`embed/index.astro`) тоже подхватят новые id сами.
- Дословные цитаты к числам — раздел в [2026-10-11-stage-3-presets-sources.md](2026-10-11-stage-3-presets-sources.md), как у пресетов этапа 3.

## ЧСС пресета

Этап 3 решил «ЧСС пресеты не меняют», и `HeartClockDemo.changePreset` сохраняет ЧСС читателя при переключении. У НЖТ частота — сам признак, поэтому решение (Никита поручил выбирать по умолчанию самим): пресет может задать `heartRate` и нижнюю границу слайдера. При переключении на такой пресет ЧСС становится его значением, а слайдер не опускается ниже 120 в минуту (нижняя граница диапазона статьи, источник 3); при уходе с него на норму ЧСС возвращается к 75 и граница снимается. Остальные пресеты по-прежнему ЧСС не трогают. Оно идёт отдельным PR вместе с пресетом НЖТ.

Как сделано (PR 3). Новых параметров модели нет; меняется только `packages/heart-clock/src/presets.ts`:

- ЧСС пресета — обычный `heartRate` в его наборе параметров (`presets`), поэтому `presetParams('supraventricular-tachycardia')` уже даёт 170, и статья, страница часов и встраивание с `?preset=` без `?rate=` стартуют с него без отдельной логики.
- Нижняя граница — карта `presetRateFloors` (`{ 'supraventricular-tachycardia': 120 }`) и функция `presetRateLimits(id, params?)`: `heartRateLimits` параметров, поднятые до границы. Ей пользуются остров (слайдер и обрезка `?rate=` встраивания) и форма встраивания (`data-min`/`data-max`). `heartRateLimits` не меняется: он про то, на каких частотах параметры валидны, а граница — свойство пресета.
- Правило переключения — чистая функция `switchedHeartRate(from, to, rate, startRate?)`: если пресет, с которого или на который переключаются, задаёт ЧСС (`setsHeartRate`), результат — стартовая ЧСС нового пресета (у нормы 75), иначе ЧСС читателя. `HeartClockDemo.changePreset` вызывает её и обрезает результат по `presetRateLimits`. Уход с НЖТ на любой другой пресет (на странице часов, где их больше двух) тоже возвращает его стартовую ЧСС, а не только уход на норму: частота 170 была признаком НЖТ, а не выбором читателя.

## Проверки

- Unit (`presets.test.ts`): значения пресетов; у AV-блокады PR удара больше 200 мс на каждой ЧСС из `heartRateLimits` и ровно 40–96; у НЖТ нет зубца P перед QRS, RR одинаковые, QRS ≤ 120 мс; оба пресета валидны во всём своём диапазоне ЧСС. Для правила ЧСС — `switchedHeartRate` и `presetRateLimits` (граница 120, `RangeError`, если выше границы ничего не остаётся).
- `packages/viewer/test/disease.test.ts`: `diseaseView(undefined, '<новый id>', …)` даёт `null`.
- e2e (`article.spec.ts` или новый тест, пропуск при `HA_TEST_CONTENT=1`, как `disease-model.spec.ts`): на `en/disease/av-block/` монитор открыт с пресетом, переключатель норма / AV-блокада работает, axe без нарушений. На `en/disease/supraventricular-tachycardia/` монитор стартует с 170 (минимум слайдера 120), переход на норму даёт 75. `heart-clock.spec.ts` и `embed.spec.ts`: новые пресеты есть в переключателе и в форме; у НЖТ в форме `data-min` 120, встраивание с `?preset=supraventricular-tachycardia` стартует с 170, а `&rate=90` поднимается до 120.
- Движение: новый код анимации не добавляется; пресеты идут через тот же остров, который слушается `html[data-motion]` и `prefers-reduced-motion` (при «Стоп» часы на паузе, смысл передаёт текстовое описание ЭКГ). e2e `motion.spec.ts` остаётся зелёным.
- Lighthouse: бюджет JS не меняется для страниц без часов; статьи AV-блокады и НЖТ получают тот же остров `client:visible`, что статьи с пресетами, и укладываются в их бюджет.
- Поток статей проверяет подписи `summary` по тем же источникам, что текст.

## Разбиение на PR

| PR | Содержание | Условие |
|---|---|---|
| 1 | Эта спека | Согласована через координатора |
| 2 | Пресет `av-block-first-degree`: presets, viewer, i18n, sources, тесты, `preset` в статьях ru и en | Порог сверен с Минздравом 2025 |
| 3 | ЧСС пресета (`heartRate` в пресете, `presetRateFloors`, `presetRateLimits`, `switchedHeartRate` в `heart-clock`; правило в `HeartClockDemo`, граница в форме встраивания) и пресет `supraventricular-tachycardia` | PR 2 в `main` |

## Дополнение: ЖТ и удлинённый QT

12.10.2026, после пресетов АВ-блокады и НЖТ. Статьи `long-qt-syndrome` и `ventricular-tachycardia` называют ЭКГ-признаки с `<Cite>`, и модель умеет их нарисовать имеющимися параметрами. Правило то же: значения — только из фраз статьи с источником, остальное помечено assumption; новых параметров модели и новой ЭКГ-механики нет. Дословные цитаты — разделы 10 и 11 [2026-10-11-stage-3-presets-sources.md](2026-10-11-stage-3-presets-sources.md) (Минздрав 2025 «Желудочковые нарушения ритма сердца. Внезапная сердечная смерть» и страницы MSD открыты 12.10.2026 через `curl`).

| Пресет | Параметр | Значение | Источник / assumption | Фраза статьи |
|---|---|---|---|---|
| `long-qt-syndrome` | `qtc` | 500 мс (при 60 в минуту) | Порог ≥ 480 мс — Минздрав 2025 (критерии ЕОК 2022, источник 1); «особенно больше 500 мс» — Минздрав и MSD «Long QT Interval Syndromes» (источники 1, 2). Само число — assumption: выше порога и там, где статья говорит о росте риска. Модель масштабирует QT как √RR, то есть по Базетту, поэтому QTc модели ровно 500 мс на любой ЧСС. QT такой длины помещается в удар только до 137 в минуту: пресет допускает 40–137 (`heartRateLimits`), при 75 в минуту QT 447 мс против 358 мс в норме | «…диагноз ставят при QTc 480 мс и больше или при сумме больше 3 баллов по шкале Шварца…<Cite n={1} />»; «Риск тахикардии типа «пируэт» тем выше, чем длиннее QTc, особенно больше 500 мс…<Cite n={[1, 2]} />» |
| | `heartRate` | не задаёт (ЧСС читателя) | Признак — длина QT, а не частота; переключение на пресет сохраняет ЧСС и обрезает её до 137 | — |
| `ventricular-tachycardia` | `heartRate` | 150 в минуту | Определение — Минздрав 2025, источник 1: ≥ 3 сокращения подряд из желудочков с частотой > 100 в минуту. Само число — assumption: выше 100 и внутри диапазона, который допускает широкий QRS (до 169) | «Российские рекомендации называют ЖТ три и более сокращения подряд из желудочков с частотой более 100 в минуту.<Cite n={1} />» |
| | нижняя граница (`presetRateFloors`) | 101 в минуту | Минздрав 2025: «более 100». 101 — наименьшая целая ЧСС выше порога, поэтому слайдер не показывает частоту, которая по определению статьи не ЖТ. Не assumption. MSD (источник 2) даёт ≥ 120, но этого числа в статье нет; частоты 101–119 — ЖТ только по Минздраву | та же фраза |
| | `qrsDuration` | 130 мс | Минздрав 2025: широкий QRS ≥ 120 мс. Само число — assumption: ширина, которой модель уже рисует полную блокаду ножки при ДМПП. Шире — меньше верхний предел (R-пик должен быть раньше открытия аортального клапана, `timing.ts`): 140 мс — до 157, 160 мс — до 132 в минуту; при 130 — до 169, и 150 помещается с запасом | «Общие ЭКГ-признаки желудочковых нарушений ритма: широкий деформированный комплекс QRS (≥ 120 мс), отсутствие предшествующего зубца P, дискордантность зубца T по отношению к основному зубцу комплекса, сливные комплексы.<Cite n={1} />» |
| | `pAmplitude` | 0 | Минздрав 2025: отсутствие предшествующего зубца P. Задержка от начала удара до QRS в модели остаётся ровной линией | та же фраза |
| | `tAmplitude` | −0,3 мВ | Минздрав 2025: T дискордантен основному зубцу QRS. QRS модели в основном положительный (R 1 мВ, S −0,25 мВ, `ecg.ts`), поэтому T отрицательный. Амплитуда — assumption: зубец T по умолчанию (0,3), перевёрнутый | та же фраза |
| | `rrIrregularity` | 0 (по умолчанию) | Мономорфная ЖТ — ровный ритм, одинаковые QRS (Минздрав 2025; MSD «Ventricular Tachycardia», источник 2) | «…поэтому ритм частый и ровный, а комплексы QRS на ЭКГ одинаковые (мономорфная ЖТ).<Cite n={[1, 2]} />» |

Пределы ЧСС: `long-qt-syndrome` 40–137, `ventricular-tachycardia` 101–169 (`presetRateLimits`); оба пресета валидны на каждой целой ЧСС внутри (проверено скриптом и тестом). ЖТ задаёт свою ЧСС так же, как НЖТ: `switchedHeartRate` при переходе на ЖТ ставит 150, при уходе с неё — стартовую ЧСС следующего пресета (75; у `long-qt-syndrome` тоже 75). Название — «Желудочковая тахикардия (мономорфная)». Английские фразы статей совпадают по смыслу и числам (`content/en/disease/long-qt-syndrome.mdx`, строки 47–53; `ventricular-tachycardia.mdx`, строки 53, 68–69, 131).

### Что не входит

- Тахикардия типа «пируэт» (torsades de pointes) и вообще полиморфная ЖТ: QRS, меняющиеся от удара к удару, — новая механика модели. Подписи обоих пресетов прямо говорят, что «пируэт» не показан.
- АВ-диссоциация (предсердия работают независимо от желудочков) и сливные комплексы при ЖТ: у удара модели одна общая схема P → QRS, и диаграмма Виггерса сохраняла вклад предсердий в наполнение в такт каждому удару. Подпись ЖТ говорит, что АВ-диссоциация и сливные комплексы не показаны. С #389 (`ventricularRhythm`) у ЖТ нет систолы предсердий и их вклада в наполнение, а 3D-модель не подсвечивает АВ-узел и ножки.
- Фибрилляция желудочков и трепетание желудочков; ЖТ быстрее 169 в минуту (предел модели при широком QRS).
- Падение давления при длительной ЖТ (статья, источник 3): давление пресет не снижает.
- Форма T при СУИQT (зазубрины, альтернация) и разница типов 1–3.
- 3D: формы в `packages/viewer` нет, `presetShape` для обоих `null`.

### Движение

Новой анимации нет: оба пресета идут через тот же остров `HeartClockDemo`. Проверено по коду: часы стартуют на паузе (`playing` = `false` при SSR и до эффектов); эффект запускает их, только если нет `prefers-reduced-motion: reduce` и уровень движения сайта (`html[data-motion]`) не `off`; переход на `off` позже ставит паузу. Смена пресета и ЧСС не трогает `playing`, поэтому при «Стоп» статья ЖТ открывается с неподвижной лентой, и ритм передаёт текстовое описание ЭКГ («Ventricular tachycardia at 150 beats per minute…»). Запустить ленту может только сам читатель: кнопкой «Пуск» или «Звук». При уровне `calm` (без системного reduced motion) лента запускается сама, как у всех пресетов, — общее поведение острова, его этот PR не меняет. e2e: статья ЖТ с сохранённым уровнем `off` — кнопка «Пуск», описание с частотой, смена пресета не запускает ленту.

### PR

| PR | Содержание | Условие |
|---|---|---|
| 4 | Пресеты `long-qt-syndrome` и `ventricular-tachycardia`: presets (граница 101 для ЖТ), viewer, i18n, sources, тесты, `preset` в статьях ru и en, это дополнение и цитаты в 2026-10-11-stage-3-presets-sources.md | PR 3 в `main`; согласовано через координатора |

## Дополнение: трепетание предсердий и СССУ

13.10.2026, после механики ритмов (`2026-10-13-heart-clock-rhythms.md`, issue #192: паузы, частота ниже 40, волны F трепетания, `presetRateCeilings`). Статьи `atrial-flutter` и `sick-sinus-syndrome` называют признаки с `<Cite>`, и теперь модель умеет их нарисовать. Правило то же: значения — из источников самой статьи (frontmatter `sources:` и evidence-файлы `evidence/atrial-flutter.md`, `evidence/sick-sinus-syndrome.md`), остальное помечено assumption. Новых параметров модели нет. Дословные цитаты — разделы 12 и 13 [2026-10-11-stage-3-presets-sources.md](2026-10-11-stage-3-presets-sources.md); 13.10.2026 они заново сверены с текстами, открытыми через `curl` (JSON Минздрава 382_2 и 160_2, страницы MSD, PDF русских переводов ESC 2019 НЖТ и ESC 2021 ЭКС).

Номера источников ниже — порядок во frontmatter статьи.

| Пресет | Параметр | Значение | Источник / assumption | Фраза статьи |
|---|---|---|---|---|
| `atrial-flutter` | `heartRate` | 150 в минуту | MSD «Atrial Flutter» (источник 4): предсердия 250–350, обычно 300; обычно проходит каждый второй импульс (2:1) — ровный ритм желудочков 150. Число источника, не assumption. Волны F — 2 × 150 = 300 в минуту | «Предсердия возбуждаются обычно около 300 раз в минуту; … чаще до желудочков доходит каждый второй — около 150 в минуту…<Cite n={4} />» |
| | `flutterConduction` | 2 | Минздрав 2025 «Фибрилляция и трепетание предсердий» (источник 1), §2: обычно кратное проведение от 4:1 до 2:1, редко 1:1; MSD: обычно 2:1. Модель держит проведение постоянным | «…обычно проведение на желудочки кратное, от 4:1 до 2:1, редко 1:1…<Cite n={1} />» |
| | нижняя граница (`presetRateFloors`) | 126 в минуту | Минздрав 2025, §2: волны F 250–350 в минуту с циклом менее 240 мс. При 2:1 волны F вдвое чаще желудочков. При 125 цикл ровно 240 мс, то есть не «менее 240»; 126 — наименьшая целая ЧСС, при которой выполнены оба условия (F 252 в минуту, цикл 238 мс). Не assumption | «…регулярный предсердный ритм (волны F с циклом менее 240 мс) с частотой 250–350 в минуту…<Cite n={1} />» |
| | верхняя граница (`presetRateCeilings`) | 175 в минуту | Минздрав 2025, §1.1 и §2; MSD: до 350 в минуту; 350 / 2 = 175. ESC 2019 НЖТ (источник 2, §11.1.4.1.2) даёт 250–330 для трепетания против часовой стрелки, поэтому 166–175 — трепетание только по Минздраву и MSD | та же фраза; «…при котором предсердия возбуждаются с частотой 250–350 в минуту.» (статья, введение; ссылка на источник 1 стоит после следующего предложения) |
| | `flutterAmplitude` | 0,2 мВ (размах) | assumption: ни один источник не даёт амплитуду волн F. Форма — «пила», лучше видна в II, III, aVF (Минздрав 2025 §2; MSD); при трепетании против часовой стрелки отрицательная в нижних отведениях (ESC 2019 НЖТ, §11.1.4.1.2) — пила модели направлена вниз в отведении II | «…волны F при типичном ТП имеют вид «пилообразной» кривой, особенно отчётливой в нижних отведениях (II, III, aVF).<Cite n={1} /> При ТП против часовой стрелки зубцы F отрицательные в нижних отведениях и положительные в V1.<Cite n={2} />» |
| | `pAmplitude` | 0 | Минздрав 2025, §1.1: «волны трепетания» с отсутствием изолинии; MSD: непрерывная регулярная активация предсердий. Отдельного зубца P нет, его место занимают волны F | «На ней видны частые одинаковые волны трепетания, которые при типичной форме похожи на зубья пилы.<Cite n={[1, 4]} />» |
| | `atrialContribution` | 0 | ESC 2019 НЖТ, §11.1.4.1.2: симптомы, связанные с высокой ЧСС и потерей систолы предсердий | «Кроме симптомов, связанных с высокой частотой сердечных сокращений и потерей систолы предсердий, нередко встречаются симптомы обратимой систолической дисфункции левого желудочка…<Cite n={2} />» |
| | `fWaveAmplitude`, `rrIrregularity`, `pauseEvery` | 0 (по умолчанию) | Механика: трепетание исключает их (`resolveParams`). Ровный ритм при 2:1 — MSD («regular ventricular rate of 150») | — |
| `sick-sinus-syndrome` | `heartRate` | 35 в минуту | ДСУ включает синусовую брадикардию и отказ синусового узла (Минздрав 2025 «Брадиаритмии и нарушения проводимости», источник 1, §1.5; MSD «Sick Sinus Syndrome», источник 3). Нижняя граница нормы днём в покое — 40, ночью — 35 (Минздрав, §2.4.2); ESC 2021 ЭКС (источник 2, §5.1.1.1): 40–50 в покое и 30 во сне могут быть физиологическими. Само число — assumption: ниже 40, то есть ниже дневной нормы в покое по обоим документам. Для ночи пресет не претендует на патологию (ночью 35 — граница Минздрава, а 30 во сне ESC называет физиологическим) | «Российские рекомендации считают предельным нормальным снижением частоты 40 имп/мин днём в покое и 35 имп/мин ночью…<Cite n={1} /> ESC пишет, что синусовая брадикардия 40–50 уд./мин в покое и 30 уд./мин во сне… может быть физиологической…<Cite n={2} />» |
| | нижняя граница (`presetRateFloors`) | 30 в минуту | Нижняя граница модели (`paramRanges.heartRate`), не число источника | — |
| | верхняя граница (`presetRateCeilings`) | 39 в минуту | Наибольшая целая ЧСС ниже 40 (Минздрав §2.4.2; нижний край 40–50 у ESC §5.1.1.1): ползунок не показывает частоту, которую любой из документов называет нормой в покое. Не assumption | та же фраза |
| | `pauseDuration` | 3000 мс | Пауза — временное прекращение работы синусового узла, зубцы P исчезают на секунды и минуты (MSD). Минздрав допускает паузы не длиннее 2 с (§2.4.2); ESC: у здоровых паузы > 2,5 с редки, но сами по себе не патология (§5.1.1.1). Само число — assumption: длиннее обоих порогов. Модель добавляет паузу после RR ритма, поэтому от QRS до QRS через паузу 4,5 с (39 в минуту) — 5 с (30 в минуту); это меньше порога 6 с для ЭКС при обмороках (ESC/Минздрав, IIb C), который пресет не использует | «…допускают синусовые паузы не длиннее 2 секунд.<Cite n={1} /> … паузы длиннее 2,5 с у здоровых людей встречаются редко, но сами по себе не должны считаться патологией.<Cite n={2} />»; «…на ЭКГ зубцы P исчезают на время от секунд до минут.<Cite n={3} />» |
| | `pauseEvery` | 3 | assumption: пауза после каждого третьего удара, чтобы она чаще попадала на полосу. Настоящие паузы нерегулярны (MSD: «for seconds to minutes»), а выскальзывающих сокращений («escape activity in lower pacemakers», MSD) модель не рисует — это в `summary` | «…во время паузы включаются нижележащие водители ритма и сохраняют ритм<Cite n={3} />…» |

Пределы ЧСС: `atrial-flutter` 126–175, `sick-sinus-syndrome` 30–39 (`presetRateLimits`); оба пресета валидны на каждой целой ЧСС внутри: тайминг удара у них тот же, что у нормы (40–180 и 30–39 укладываются, `heartRateLimits(defaultParams)` = 30–180), волны F на `beatTiming` не влияют, а пауза добавляется после RR ритма (`clock.ts`) и `checkParams` не меняет; это проверяет тест «keeps every preset valid…». Оба пресета задают свою ЧСС (`switchedHeartRate`): переход на трепетание ставит 150, на СССУ — 35, уход с них — стартовую ЧСС следующего пресета (75). Отведение — II (`presetLeads` не задан). Названия: «Трепетание предсердий (проведение 2:1)», «Синдром слабости синусового узла (паузы)». Английские фразы статей совпадают по смыслу и числам (`content/en/disease/atrial-flutter.mdx`, строки 44, 54–56, 114; `sick-sinus-syndrome.mdx`, строки 53–57, 86).

### Что не входит

- Трепетание: другие соотношения проведения (4:1, 3:1, меняющееся с неровным ритмом, 1:1), атипичное трепетание, волны F в других отведениях (положительные в V1), обратное (по часовой стрелке) трепетание. Подпись говорит про другие соотношения, атипичное трепетание и V1.
- СССУ: выскальзывающие сокращения в паузе, нерегулярные паузы, синоатриальная блокада, синдром тахи-брадикардии, хронотропная несостоятельность, ночная брадикардия. Подпись говорит про нерегулярность пауз, выскальзывающие сокращения, тахи-бради и пульс без прироста при нагрузке.
- Гемодинамика: в паузе ЛЖ и ЛП держатся, аорта стекает (механика #192); более низкого диастолического давления после паузы модель не показывает.
- 3D: формы в `packages/viewer` нет, `presetShape` для обоих `null`.

### Движение

Новой анимации нет: оба пресета идут через тот же остров `HeartClockDemo`, правила запуска и паузы те же, что в разделе «Движение» дополнения про ЖТ.

### PR

| PR | Содержание | Условие |
|---|---|---|
| 5 | Пресеты `atrial-flutter` и `sick-sinus-syndrome`: presets (граница и потолок у обоих), снимок `curves-unchanged`, viewer, i18n, sources, тесты, e2e, `preset` в статьях ru и en, это дополнение и цитаты в 2026-10-11-stage-3-presets-sources.md | Механика #192 в `main` |

## Дополнение: синдром WPW и синдром Бругада

13.10.2026, после механики ритмов (`2026-10-13-heart-clock-rhythms.md`, issue #192: дельта-волна, отведение V1, «сводчатый» ST) и пресетов трепетания и СССУ. Статьи `wpw-syndrome` и `brugada-syndrome` называют признаки ЭКГ с `<Cite>`, и теперь модель умеет их нарисовать. Правило то же: значения — из источников самой статьи (frontmatter `sources:`), остальное помечено assumption. Новых параметров модели нет. Дословные цитаты — разделы 14 и 15 [2026-10-11-stage-3-presets-sources.md](2026-10-11-stage-3-presets-sources.md); 13.10.2026 они сверены с текстами, открытыми через `curl` (JSON Минздрава 619_3 и 569_2, страницы MSD, PDF русского перевода ESC 2019 НЖТ).

Номера источников ниже — порядок во frontmatter статьи.

| Пресет | Параметр | Значение | Источник / assumption | Фраза статьи |
|---|---|---|---|---|
| `wpw-syndrome` | отведение | II (`presetLeads` не задан) | MSD «WPW Syndrome» (источник 3), рисунок «Classic WPW Pattern»: короткий PR и дельта-волна при синусовом ритме видны в I, II, III, V3–V6 | — |
| | `heartRate` | не задаётся (частота читателя, 75 при открытии) | Признак виден при синусовом ритме вне приступа (MSD, тот же рисунок), частота не входит в признак | — (частоты вне приступа статья не называет) |
| | `prInterval` | 90 мс при 60 в минуту | Порог: PR < 120 мс (Минздрав 2025 «Наджелудочковые тахикардии», источник 1, §2.4; ESC 2019 НЖТ, источник 2, §11.3.2). Само число — assumption: модель масштабирует PR с √RR (не дальше RR 1500 мс), и при 90 PR = 110 мс при 40 в минуту, около 80 мс при 75 и около 56 мс при 153 — ниже 120 мс на всём ползунке. Нижней границы PR источники не дают. P занимает 60% PR (assumption модели, этап 2), поэтому P тоже короче нормы — ограничение модели | «На ЭКГ это короткий интервал PR (меньше 120 мс), дельта-волна в начале комплекса QRS и широкий QRS (больше 120 мс).<Cite n={[1, 2]} />»; «Типичная ЭКГ покоя при манифестирующем ДПП: короткий интервал PR (менее 120 мс), дельта-волна в начальной части комплекса QRS и широкий QRS (более 120 мс).<Cite n={[1, 2]} />» |
| | `qrsDuration` | 130 мс | Порог: QRS > 120 мс (Минздрав 2025, §2.4; ESC 2019 НЖТ, §11.3.2). Само число — assumption: выше порога, та же ширина, что у пресетов ДМПП и ЖТ | те же фразы |
| | `deltaWave` | 40 мс | Дельта-волна — пологое («смазанное») начало QRS (Минздрав 2025, §2.4; ESC 2019 НЖТ, §11.3.2; MSD: «initial slurred component»). Длительность — assumption: ни один источник её не даёт; при 40 мс остальная часть комплекса (90 мс) равна ширине QRS модели по умолчанию, то есть дельта-волна добавляет к обычному QRS свои 40 мс. Высота пологого подъёма 0,3 от R — assumption механики (раздел 3 спеки ритмов) | те же фразы |
| | верхняя граница | 153 в минуту | Не число источника: поздний пик R при дельта-волне (`timing.ts`) должен прийти до открытия аортального клапана, `heartRateLimits` = 40–153 | — |
| | `tAmplitude`, `stShift` | по умолчанию (0,3 и 0) | MSD: «secondary repolarization changes», «the T-wave vector may be abnormal». Направление и величину источник не даёт, поэтому пресет T не меняет; подпись говорит, что вторичные изменения ST–T не показаны | — |
| `brugada-syndrome` | отведение (`presetLeads`) | V1 | Минздрав 2025 «Желудочковые нарушения ритма сердца. ВСС» (источник 1), §3.3.15: подъём ST 1-го типа в V1 и/или V2; MSD «Brugada Syndrome» (источник 2): V1 и V2, иногда V3. Модель рисует одно отведение — V1; норма в статье тоже в V1 (`ArticleClock` передаёт `lead`). Базовый комплекс V1 — rS из `leadBaselines` (StatPearls, амплитуды — assumption спеки ритмов) | «При ЭКГ-картине 1-го типа точка J и сегмент ST в V1 и V2 заметно приподняты…<Cite n={2} />» |
| | `stShift` | 0,3 мВ | Порог: подъём ST 1-го типа ≥ 2 мм (Минздрав 2025, §3.3.15) = 0,2 мВ при стандартных 10 мм/мВ (сетка полосы модели тоже 10 мм/мВ; перевод мм в мВ — наша арифметика). Само число — assumption: выше порога; с хвостом глубокого S в V1 кривая в точке J около 0,28 мВ на любой частоте (тест проверяет ≥ 0,2) | «Российские рекомендации ставят диагноз при подъёме ST такой формы на 2 мм и больше хотя бы в одном из отведений V1–V2 — спонтанном или после провокационной лекарственной пробы.<Cite n={1} />» |
| | `stSlope` | 1 («сводчатый») | MSD: «The ST segment is coved and descends to an inverted T-wave». `stSlope: 1` — подъём максимален в точке J и выпуклой дугой уходит в T (механика, раздел 4 спеки ритмов) | «…сегмент ST выпуклый («куполом») и опускается в отрицательный зубец T.<Cite n={2} />» |
| | `tAmplitude` | −0,3 мВ | Направление — отрицательный T (MSD, там же). Величина — assumption: зубец T по умолчанию с обратным знаком, как у ЖТ; источник амплитуды не даёт | та же фраза |
| | `heartRate` | не задаётся (частота читателя) | Картина 1-го типа не привязана к частоте в источниках статьи; ритм синусовый (P перед каждым QRS — модель по умолчанию) | — |

Пределы ЧСС: `wpw-syndrome` 40–153 (поздний пик R при дельта-волне), `brugada-syndrome` 40–180 (`defaultRateLimits`, тайминг удара не меняется). Оба пресета валидны на каждой целой ЧСС внутри (тест «keeps every preset valid…»). Ни один не задаёт свою ЧСС: `switchedHeartRate` оставляет частоту читателя. Названия: «Синдром WPW (предвозбуждение)», «Синдром Бругада (тип 1, отведение V1)» — отведение есть в названии, в подписи (`summary`) и в подписи полосы («Синтетическая ЭКГ, отведение V1»). Английские фразы статей совпадают по смыслу и числам (`content/en/disease/wpw-syndrome.mdx`, строки 58–59, 115; `brugada-syndrome.mdx`, строки 41, 93).

### Что не входит

- WPW: сами тахикардии (ортодромная и антидромная АВРТ), фибрилляция и трепетание предсердий с проведением по ДПП (предвозбуждённая ФП), интермиттирующее и латентное предвозбуждение, псевдоинфарктные зубцы Q, вторичные изменения ST–T, другие отведения, разная форма дельта-волны в зависимости от места ДПП. Название «синдром WPW» оставлено как у статьи, но подпись прямо говорит, что синдром — это предвозбуждение вместе с приступами тахикардии, а модель показывает только ЭКГ между приступами.
- WPW: S1 в модели идёт за поздним пиком R (`rPeak`) — это свойство модели, а не признак WPW, и подпись его не описывает. Дополнительного пути на 3D-модели нет (`presetShape` — `null`); подпись это говорит.
- Бругада: волна, похожая на r′ (картина, напоминающая блокаду правой ножки), — модель рисует приподнятую точку J как начало сегмента ST; отведения V2 и V3; запись V1–V2 на одно-два межреберья выше; картины 2-го и 3-го типов и переход между типами; появление картины при лихорадке, от лекарств и при провокационной пробе; полиморфная ЖТ и фибрилляция желудочков. Подпись называет всё это.
- 3D: формы в `packages/viewer` нет, `presetShape` для обоих `null`.

### Движение

Новой анимации нет: оба пресета идут через тот же остров `HeartClockDemo`, правила запуска и паузы те же, что в разделе «Движение» дополнения про ЖТ.

### PR

| PR | Содержание | Условие |
|---|---|---|
| 6 | Пресеты `wpw-syndrome` и `brugada-syndrome`: presets (`presetLeads` для Бругада), снимок `curves-unchanged`, viewer, i18n, sources, тесты, e2e, `preset` в статьях ru и en, это дополнение и цитаты в 2026-10-11-stage-3-presets-sources.md | PR 5 (трепетание и СССУ, #216) в `main` |
