diff --git a/app.js b/app.js index a40de5a..90720a7 100644 --- a/app.js +++ b/app.js @@ -1,314 +1,531 @@ -/* ===== Данные клинических кейсов ===== */ +/* ========================================================= + Данные клинических кейсов + n:true — назначить/выбрать нужно + n:false — лишнее/противопоказано (выбирать не надо) + voice: pitch/rate/preferMale/breath — параметры озвучки + ========================================================= */ const CASES = [ { - id:"stemi", - theme:"aks", themeLabel:"ОКС / инфаркт", badge:"b-aks", - title:"Острый инфаркт миокарда с подъёмом ST", - severity:3, - patient:{avatar:"👨🦰", name:"Пациент А.", age:"58 лет, мужчина", ctx:"Поступил по скорой, ~2 ч от начала боли"}, - complaint:"Доктор, часа два назад как прижало за грудиной — давит сильно, будто слон на грудь сел. Отдаёт в левую руку и в челюсть. Дышать тяжело, бросило в холодный пот, стало страшно. Таблетку нитроглицерина под язык клал — не отпускает.", + id:"stemi", theme:"aks", themeLabel:"ОКС / инфаркт", badge:"b-aks", + title:"Острый инфаркт миокарда с подъёмом ST", severity:3, + patient:{avatar:"👨🦰", name:"Пациент А.", age:"58 лет, мужчина", ctx:"Поступил по скорой, ~2 ч от начала боли", + voice:{pitch:0.85, rate:0.95, preferMale:true, breath:230, volume:1}}, + complaint:"Доктор, часа два назад как прижало за грудиной. Давит сильно, будто слон на грудь сел. Отдаёт в левую руку и в челюсть. Дышать тяжело, бросило в холодный пот, стало страшно. Таблетку нитроглицерина под язык клал — не отпускает.", anamnesis:[ "Боль возникла в покое, после эмоционального стресса на работе.", "Курит 30 лет по пачке в день. Артериальная гипертензия 8 лет.", "Отец умер от инфаркта миокарда в 60 лет.", - "Ранее подобных приступов не было. Регулярно терапии не получает." + "Ранее подобных приступов не было. Регулярной терапии не получает." ], objective:{ vitals:{hr:"102", bp:"150/95", rr:"22", spo2:"93%"}, - general:"Кожа бледная, влажная, холодный пот. Пациент тревожен, ищет удобное положение.", - heart:"Тоны сердца приглушены, тахикардия, ритм правильный.", - lungs:"В нижних отделах с обеих сторон — мелкопузырчатые незвучные хрипы.", - other:"Шумов на сонных артериях нет. Отёков нет." + exam:{general:"Кожа бледная, влажная, холодный пот. Пациент тревожен.", heart:"Тоны приглушены, тахикардия, ритм правильный.", lungs:"В нижних отделах с обеих сторон — мелкопузырчатые незвучные хрипы.", other:"Отёков нет."} }, - extra:{title:"ЭКГ и биомаркеры", text:"ЭКГ: подъём сегмента ST в отведениях I, aVL, V1–V4; реципрокная депрессия в II, III, aVF. Патологический зубец Q начинает формироваться. Тропонин I повышен."}, - quiz:{ - q:"Какой наиболее вероятный диагноз и тактика?", - options:[ - {t:"Острый перикардит — НПВС, наблюдение", c:false}, - {t:"STEMI (передне-перегородочный) — экстренная реперфузия", c:true}, - {t:"ТЭЛА — антикоагуляция, тромболизис", c:false}, - {t:"Расслоение аорты — контроль АД, экстренная хирургия", c:false} - ], - feedback:{ - ok:"Верно. Типичный болевой синдром, подъём ST в передних отведениях и реципрокные изменения — это STEMI. Время мышления = гибнущий миокард: показана экстренная реперфузия.", - no:"Не совсем. Подъём ST в V1–V4 с реципрокной депрессией и типичной клиникой — это STEMI, требующий немедленной реперфузии." - } - }, - diagnosis:"Острый инфаркт миокарда с подъёмом сегмента ST (STEMI), передне-перегородочная локализация. Острая левожелудочковая недостаточность (Killip II).", - algorithm:[ - {s:"Вызовите реанимационную бригаду, активируйте STEMI-маршрут (door-to-balloon ≤ 90 мин)."}, - {s:"Мониторинг ЭКГ, пульсоксиметрия, 2 венозных доступа."}, - {s:"Обезболивание (морфин), кислород при SpO₂ < 90%, нитраты при сохраняющемся болевом синдроме и АД > 100."}, - {s:"Двойная антитромбоцитарная терапия: аспирин + ингибитор P2Y12 (тикагрелор/прасугрел). Антикоагулянт (эноксапарин/НФГ)."}, - {s:"Реперфузия — первичное ЧКВ предпочтительно; при недоступности ≤ 120 мин — тромболизис с последующим переводом."}, - {s:"Бета-блокатор, статин в высокой дозе, ингибитор АПФ — после стабилизации."} + investigations:[ + {t:"ЭКГ в 12 отведениях", n:true}, + {t:"Тропонин I/T (количественно)", n:true}, + {t:"Общий анализ крови", n:true}, + {t:"Коагулограмма (МНО, АЧТВ, фибриноген)", n:true}, + {t:"Креатинин, мочевина, электролиты, глюкоза", n:true}, + {t:"Рентгенография органов грудной клетки", n:true}, + {t:"Эхокардиография", n:true}, + {t:"Компьютерная томография головного мозга", n:false}, + {t:"Люмбальная пункция", n:false}, + {t:"Фиброгастроскопия", n:false} ], - keypoints:[ - {t:"good",x:"Время = миокард: чем раньше реперфузия, тем больше спасённой мышцы."}, - {t:"bad",x:"Не откладывайте реперфузию, ожидая тропонин — ЭКГ и клиника достаточны для STEMI."}, - {t:"bad",x:"Осторожно с нитратами при инфаркте ПЖ и гипотонии — оцените состояние."} + medications:[ + {t:"Аспирин 250–325 мг разжевать", n:true}, + {t:"Ингибитор P2Y12 (тикагрелор/прасугрел) нагрузочно", n:true}, + {t:"Антикоагулянт (эноксапарин / НФГ)", n:true}, + {t:"Морфин при выраженном болевом синдроме", n:true}, + {t:"Кислород при SpO₂ < 90%", n:true}, + {t:"Нитраты при боли и АД > 100", n:true}, + {t:"Бета-блокатор (после стабилизации)", n:true}, + {t:"Статин в высокой дозе", n:true}, + {t:"Антибиотики широкого спектра", n:false}, + {t:"Нестероидные противовоспалительные (ибупрофен)", n:false} + ], + diagnosis:{ + options:[ + {t:"Острый инфаркт миокарда с подъёмом ST (STEMI), передне-перегородочный", c:true}, + {t:"Острый перикардит", c:false}, + {t:"Тромбоэмболия лёгочной артерии", c:false}, + {t:"Расслоение аорты", c:false}, + {t:"Нестабильная стенокардия", c:false} + ], + explanation:"Типичный ангинозный синдром, подъём ST в передних отведениях и реципрокная депрессия — STEMI. Время = гибнущий миокард, показана экстренная реперфузия." + }, + emergency:{ + intro:"Пациент в острейшей стадии. У вас 60 секунд, чтобы оказать экстренную помощь.", + actions:[ + {t:"Вызвать реанимационную бригаду, активировать STEMI-маршрут (door-to-balloon ≤ 90 мин)", n:true}, + {t:"Двойная антитромбоцитарная терапия (аспирин + P2Y12)", n:true}, + {t:"Ввести антикоагулянт", n:true}, + {t:"Обеспечить венозный доступ и мониторинг ЭКГ", n:true}, + {t:"Обезболивание (морфин) + нитраты при АД > 100", n:true}, + {t:"Принять решение о реперфузии (ЧКВ / тромболизис)", n:true}, + {t:"Ввести антибиотики широкого спектра", n:false}, + {t:"Назначить НПВС", n:false}, + {t:"Выполнить люмбальную пункцию", n:false} + ] + }, + extra:"ЭКГ: подъём ST в I, aVL, V1–V4; реципрокная депрессия в II, III, aVF. Тропонин I повышен.", + protocol:"Клинический протокол МЗ РК «Острый коронарный синдром»", + protocolNote:"Немедленная реперфузия: первичное ЧКВ (цель door-to-balloon ≤ 90 мин); при недоступности ЧКВ ≤ 120 мин — фибринолитическая терапия (алтеплаза/тенектеплаза), в т.ч. на догоспитальном этапе. Обязательны: ацетилсалициловая кислота + ингибитор P2Y12 (клопидогрел/тикагрелор), антикоагулянт, морфин при боли, кислород при SpO₂ < 90%.", + keyPoints:[ + {t:"good", x:"Время = миокард: чем раньше реперфузия, тем больше спасённой мышцы."}, + {t:"bad", x:"Не откладывайте реперфузию, ожидая тропонин — ЭКГ и клиника достаточны для STEMI."}, + {t:"bad", x:"НПВС противопоказаны при ОКС — усиливают риск разрыва и кровотечения."} ] }, { - id:"nstemi", - theme:"aks", themeLabel:"ОКС / инфаркт", badge:"b-aks", - title:"Острый коронарный синдром без подъёма ST", - severity:2, - patient:{avatar:"👩🦳", name:"Пациентка Б.", age:"65 лет, женщина", ctx:"Поступила через сутки от начала симптомов"}, - complaint:"Вчера ночью проснулась от боли за грудиной — давящая, минут двадцать держалась, отдала в спину. Сегодня повторилось дважды, уже при небольшой нагрузке — просто по квартире походила. Раньше такого никогда не было. Как-то страшно, думаю, это сердце.", + id:"nstemi", theme:"aks", themeLabel:"ОКС / инфаркт", badge:"b-aks", + title:"Острый коронарный синдром без подъёма ST", severity:2, + patient:{avatar:"👩🦳", name:"Пациентка Б.", age:"65 лет, женщина", ctx:"Поступила через сутки от начала симптомов", + voice:{pitch:1.12, rate:0.96, preferMale:false, breath:240, volume:1}}, + complaint:"Вчера ночью проснулась от боли за грудиной. Давящая, минут двадцать держалась, отдала в спину. Сегодня повторилось дважды, уже при небольшой нагрузке — просто по квартире походила. Раньше такого никогда не было. Как-то страшно, думаю, это сердце.", anamnesis:[ "Сахарный диабет 2 типа 12 лет, ожирение, гиперхолестеринемия.", - "Гипертония, принимает периодически.", + "Гипертония, препараты принимает нерегулярно.", "Боли провоцируются нагрузкой, купируются в покое за 10–15 мин (прогрессирующая стенокардия).", "За последний месяц снизилась толерантность к нагрузке." ], objective:{ vitals:{hr:"88", bp:"140/85", rr:"18", spo2:"96%"}, - general:"Состояние средней тяжести. Кожные покровы обычной окраски. ИМТ 32.", - heart:"Тоны ритмичные, приглушены. Шумов нет.", - lungs:"Дыхание везикулярное, хрипов нет.", - other:"Пульс на периферических артериях сохранён. Отёков нет." + exam:{general:"Состояние средней тяжести. Кожные покровы обычной окраски. ИМТ 32.", heart:"Тоны ритмичные, приглушены. Шумов нет.", lungs:"Дыхание везикулярное, хрипов нет.", other:"Отёков нет."} }, - extra:{title:"ЭКГ и лаборатория", text:"ЭКГ: горизонтальная депрессия ST в V4–V6, инверсия зубца T. Тропонин I повышен (>99-го перцентиля), динамика нарастания. Оценка по шкале GRACE — высокий риск."}, - quiz:{ - q:"Какая тактика наиболее оправдана?", - options:[ - {t:"Стабильная стенокардия — амбулаторное наблюдение", c:false}, - {t:"NSTEMI высокого риска — ранняя инвазивная стратегия ≤ 24 ч", c:true}, - {t:"Костохондрит — НПВС и покой", c:false}, - {t:"ГЭРБ — ингибиторы протонной помпы", c:false} - ], - feedback:{ - ok:"Верно. Депрессия ST + подъём тропонина + высокий риск по GRACE = NSTEMI. Показана ранняя инвазивная стратегия.", - no:"Не совсем. У пациентки депрессия ST, рост тропонина и высокий риск — это NSTEMI, требующий раннего ЧКВ." - } - }, - diagnosis:"Острый коронарный синдром без подъёма ST (NSTEMI). Высокий риск по шкале GRACE.", - algorithm:[ - {s:"Госпитализация в ОРИТ/кардиологию, мониторинг ЭКГ и ритма."}, - {s:"Двойная антиагрегантная терапия (аспирин + P2Y12-ингибитор) + антикоагулянт."}, - {s:"Стратификация риска (GRACE/ESC). Высокий риск → ранняя инвазивная стратегия (ЧКВ ≤ 24 ч)."}, - {s:"Симптоматически: нитраты при боли, бета-блокатор при отсутствии противопоказаний."}, - {s:"Статины в высокой дозе, ингибитор АПФ, контроль гликемии."}, - {s:"Вторичная профилактика и кардиореабилитация."} + investigations:[ + {t:"ЭКГ в 12 отведениях (повторно)", n:true}, + {t:"Тропонин с оценкой динамики через 3–6 ч", n:true}, + {t:"Общий анализ крови, биохимия, коагулограмма", n:true}, + {t:"Глюкоза, липидограмма", n:true}, + {t:"Креатинин, электролиты", n:true}, + {t:"Эхокардиография", n:true}, + {t:"Оценка риска по шкале GRACE", n:true}, + {t:"Компьютерная томография грудной клетки с контрастом", n:false}, + {t:"Люмбальная пункция", n:false}, + {t:"Фиброгастроскопия", n:false} ], - keypoints:[ - {t:"good",x:"Женщины и диабетики часто имеют атипичную клинику — не сбрасывайте со счетов."}, - {t:"bad",x:"Не ставьте «стабильную стенокардию» при недавнем изменении/прогрессии симптомов — это ОКС."}, - {t:"good",x:"Решение о раннем ЧКВ принимает стратификация риска, а не один тропонин."} + medications:[ + {t:"Аспирин", n:true}, + {t:"Ингибитор P2Y12 (тикагрелор/клопидогрел)", n:true}, + {t:"Антикоагулянт (фондапаринукс/эноксапарин/НФГ)", n:true}, + {t:"Бета-блокатор (при отсутствии противопоказаний)", n:true}, + {t:"Статин в высокой дозе", n:true}, + {t:"Нитраты при боли", n:true}, + {t:"Морфин при сильной боли (осторожно)", n:true}, + {t:"Тромболизис (алтеплаза)", n:false}, + {t:"Нестероидные противовоспалительные", n:false}, + {t:"Антибиотики", n:false} + ], + diagnosis:{ + options:[ + {t:"Острый коронарный синдром без подъёма ST (NSTEMI), высокий риск", c:true}, + {t:"Стабильная стенокардия напряжения", c:false}, + {t:"Костохондрит", c:false}, + {t:"Гастроэзофагеальная рефлюксная болезнь", c:false}, + {t:"Острый перикардит", c:false} + ], + explanation:"Депрессия ST + подъём тропонина + высокий риск по GRACE = NSTEMI. Тромболизис при NSTEMI НЕ показан — показана ранняя инвазивная стратегия." + }, + emergency:{ + intro:"Пациентка с NSTEMI высокого риска. У вас 60 секунд на оказание экстренной помощи.", + actions:[ + {t:"Двойная антитромбоцитарная терапия + антикоагулянт", n:true}, + {t:"Обеспечить мониторинг и венозный доступ", n:true}, + {t:"Провести стратификацию риска (GRACE)", n:true}, + {t:"Принять решение о ранней инвазивной стратегии (ЧКВ ≤ 24 ч)", n:true}, + {t:"Нитраты/обезболивание при боли", n:true}, + {t:"Кислород при SpO₂ < 90%", n:true}, + {t:"Провести тромболизис алтеплазой", n:false}, + {t:"Ввести антибиотики", n:false}, + {t:"Назначить НПВС", n:false} + ] + }, + extra:"ЭКГ: горизонтальная депрессия ST в V4–V6, инверсия T. Тропонин повышен с динамикой. GRACE — высокий риск.", + protocol:"Клинический протокол МЗ РК «Острый коронарный синдром»", + protocolNote:"При ОКС без подъёма ST тромболизис НЕ показан. Стратификация риска (шкала GRACE) определяет раннюю инвазивную стратегию (ЧКВ ≤ 24 ч при высоком риске). Двойная антитромбоцитарная терапия + антикоагулянт, статины, бета-блокатор при отсутствии противопоказаний.", + keyPoints:[ + {t:"good", x:"Женщины и диабетики часто имеют атипичную клинику — не сбрасывайте со счетов."}, + {t:"bad", x:"Не ставьте «стабильную стенокардию» при недавней прогрессии симптомов — это ОКС."}, + {t:"bad", x:"Тромболизис при NSTEMI не показан — это частая и опасная ошибка."} ] }, { - id:"asthma", - theme:"odn", themeLabel:"ОДН / астма / ХОБЛ", badge:"b-odn", - title:"Острый тяжёлый приступ бронхиальной астмы", - severity:3, - patient:{avatar:"👩", name:"Пациентка В.", age:"24 года, женщина", ctx:"Доставлена СМП, одышка 1 час"}, - complaint:"Не могу... выдохнуть... свистит вся грудь... началось час назад... ингалятор... уже третий раз пшикала — не помогает... тяжело... говорит по словам... страшно задохнуться.", + id:"asthma", theme:"odn", themeLabel:"ОДН / астма / ХОБЛ", badge:"b-odn", + title:"Острый тяжёлый приступ бронхиальной астмы", severity:3, + patient:{avatar:"👩", name:"Пациентка В.", age:"24 года, женщина", ctx:"Доставлена СМП, одышка 1 час", + voice:{pitch:1.25, rate:1.05, preferMale:false, breath:420, volume:0.9}}, + complaint:"Не могу... выдохнуть... свистит вся грудь... началось час назад... ингалятор уже третий раз пшикала — не помогает... тяжело... страшно задохнуться.", anamnesis:[ "Бронхиальная астма с детства, базисную терапию (ИГКС) принимает нерегулярно.", "Неделю назад перенесла ОРВИ с кашлем.", - "За последние дни ингалятор сальбутамола использовала всё чаще (более 10 раз в сутки).", + "За последние дни использовала сальбутамол более 10 раз в сутки.", "Аллергия на пыльцу, домашнюю пыль." ], objective:{ vitals:{hr:"120", bp:"135/85", rr:"30", spo2:"91%"}, - general:"Положение ортопноэ, опирается на руки. Речь прерывистая, произносит отдельные фразы. Выраженная работа вспомогательной мускулатуры.", - lungs:"Выдох резко удлинён, свистящие сухие хрипы по всем полям. Участие в акте дыхания всех групп мышц.", - heart:"Тахикардия. Гиперзвуковой перкуторный звук над лёгкими.", - other:"Втянутые межрёберные промежутки, парадоксальный пульс." + exam:{general:"Положение ортопноэ, опирается на руки. Речь прерывистая, отдельные фразы. Работа вспомогательной мускулатуры.", heart:"Тахикардия.", lungs:"Выдох резко удлинён, свистящие хрипы по всем полям.", other:"Втянутые межрёберные промежутки, парадоксальный пульс."} }, - extra:{title:"Дополнительные признаки", text:"Пиковая скорость выдоха (ПСВ) < 50% от должного. При угрожающем жизни статусе — «немое лёгкое» (исчезновение хрипов при нарастающей дыхательной недостаточности), брадикардия, нарушение сознания."}, - quiz:{ - q:"Что является приоритетом в неотложной помощи?", - options:[ - {t:"Дать седативное, уложить пациента — panic attack", c:false}, - {t:"Кислород + повторные небулайзеры Сальбутамола + системные ГКС", c:true}, - {t:"Антибиотики широкого спектра внутривенно", c:false}, - {t:"Наркотический анальгетик от боли в груди", c:false} - ], - feedback:{ - ok:"Верно. Тяжёлый приступ астмы: оксигенация, частые бронходилататоры через небулайзер, системные ГКС, при ухудшении — ИВЛ.", - no:"Не совсем. Седация и наркотики угнетают дыхание и противопоказаны. Основа — бронходилататоры и ГКС." - } - }, - diagnosis:"Острый тяжёлый приступ бронхиальной астмы. Угроза астматического статуса.", - algorithm:[ - {s:"Оценка ABCD. Мониторинг SpO₂, ЧДД, ЧСС. Кислород через маску, титровать до SpO₂ 94–98%."}, - {s:"Сальбутамол 5 мг через небулайзер, при тяжёлом — повторно каждые 15–20 мин (или непрерывно). Добавить ипратропия бромид."}, - {s:"Системные ГКС как можно раньше: преднизолон 40–60 мг внутрь или гидрокортизон в/в."}, - {s:"Магния сульфат 2 г в/в при тяжёлом приступе, не отвечающем на терапию."}, - {s:"Критерии жизнеугрожающего статуса: «немое лёгкое», SpO₂ < 92%, нарушение сознания, брадикардия → ИВЛ, перевод в ОРИТ."}, - {s:"После стабилизации — пересмотр базисной терапии (ступенчатое лечение, ИГКС), обучение пациента."} + investigations:[ + {t:"Пульсоксиметрия", n:true}, + {t:"Пикфлоуметрия (пиковая скорость выдоха)", n:true}, + {t:"Газометрия артериальной крови (при тяжёлом течении)", n:true}, + {t:"ЭКГ (исключить аритмию/ишемию)", n:true}, + {t:"Рентгенография органов грудной клетки", n:true}, + {t:"Общий анализ крови", n:true}, + {t:"Компьютерная томография головного мозга", n:false}, + {t:"Люмбальная пункция", n:false}, + {t:"Бронхоскопия", n:false}, + {t:"Эхокардиография (первоочерёдно)", n:false} ], - keypoints:[ - {t:"bad",x:"Никогда не давайте седативные/опиоиды при астме — это угнетает дыхание и ведёт к остановке."}, - {t:"good",x:"Системные ГКС работают через 4–6 ч, поэтому вводите их сразу, не ждите ухудшения."}, - {t:"bad",x:"«Немое лёгкое» = плохо, а не хорошо: хрипы исчезли из-за отсутствия дыхательного резерва — это предлетальное состояние."} + medications:[ + {t:"Сальбутамол через небулайзер (повторно/непрерывно)", n:true}, + {t:"Ипратропия бромид через небулайзер", n:true}, + {t:"Системные ГКС (преднизолон/гидрокортизон)", n:true}, + {t:"Магния сульфат в/в при тяжёлом приступе", n:true}, + {t:"Кислород (до SpO₂ 94–98%)", n:true}, + {t:"Седативные препараты (диазепам)", n:false}, + {t:"Опиоиды (морфин)", n:false}, + {t:"Бета-блокаторы (пропранолол)", n:false}, + {t:"Нестероидные противовоспалительные", n:false} + ], + diagnosis:{ + options:[ + {t:"Острый тяжёлый приступ бронхиальной астмы (угроза астматического статуса)", c:true}, + {t:"Паническая атака", c:false}, + {t:"Обострение ХОБЛ", c:false}, + {t:"Тромбоэмболия лёгочной артерии", c:false}, + {t:"Инородное тело дыхательных путей", c:false} + ], + explanation:"Экспираторная одышка, свистящие хрипы, SpO₂ 91%, ПСВ < 50% — острый тяжёлый приступ астмы. Основа: бронходилататоры и системные ГКС." + }, + emergency:{ + intro:"Пациентка задыхается. У вас 60 секунд оказать экстренную помощь.", + actions:[ + {t:"Кислород до SpO₂ 94–98%", n:true}, + {t:"Сальбутамол небулайзер 5 мг, повторно", n:true}, + {t:"Ипратропия бромид небулайзер", n:true}, + {t:"Системные ГКС как можно раньше", n:true}, + {t:"Магния сульфат в/в", n:true}, + {t:"Мониторинг, подготовка к ИВЛ", n:true}, + {t:"Ввести седативное (диазепам)", n:false}, + {t:"Ввести морфин", n:false}, + {t:"Дать бета-блокатор", n:false} + ] + }, + extra:"ПСВ < 50% от должного. При жизнеугрожающем статусе — «немое лёгкое» (исчезновение хрипов при нарастающей ОДН).", + protocol:"Клинический протокол МЗ РК «Бронхиальная астма»", + protocolNote:"Острый тяжёлый приступ: кислород (SpO₂ 94–98%), β2-агонисты короткого действия (сальбутамол) через небулайзер повторно/непрерывно, ипратропия бромид, системные ГКС как можно раньше, магния сульфат в/в. Седативные и опиоиды противопоказаны (угнетение дыхания). При жизнеугрожающем статусе — ИВЛ.", + keyPoints:[ + {t:"bad", x:"Никогда не давайте седативные/опиоиды при астме — это угнетает дыхание и ведёт к остановке."}, + {t:"good", x:"Системные ГКС работают через 4–6 ч, поэтому вводите их сразу, не ждите ухудшения."}, + {t:"bad", x:"«Немое лёгкое» = плохо: хрипы исчезли из-за отсутствия резерва — предлетальное состояние."} ] }, { - id:"copd", - theme:"odn", themeLabel:"ОДН / астма / ХОБЛ", badge:"b-odn", - title:"Обострение ХОБЛ с острой дыхательной недостаточностью", - severity:2, - patient:{avatar:"👴", name:"Пациент Г.", age:"68 лет, мужчина", ctx:"Направлен врачом общей практики"}, + id:"copd", theme:"odn", themeLabel:"ОДН / астма / ХОБЛ", badge:"b-odn", + title:"Обострение ХОБЛ с острой дыхательной недостаточностью", severity:2, + patient:{avatar:"👴", name:"Пациент Г.", age:"68 лет, мужчина", ctx:"Направлен врачом общей практики", + voice:{pitch:0.82, rate:0.9, preferMale:true, breath:300, volume:1}}, complaint:"Уже неделю кашель усилился, мокрота стала густая, жёлто-зелёная. Дышать совсем тяжело, особенно со вчера. Раньше хоть по дому ходил, а сейчас до туалета не дойти — задыхаюсь. Сплю полусидя, две подушки подкладываю. Лихорадит три дня.", anamnesis:[ "ХОБЛ диагностирована 10 лет назад. Курит 40 лет (40 пачко-лет).", "Последние 3 дня — лихорадка до 38.5 °C, гнойная мокрота.", - "Базовая SpO₂ целевая 88–92% (компенсированная гиперкапния).", - "Дома — ипратропия бромид/фенотерол, длительные оксигены не получал." + "Целевая SpO₂ 88–92% (компенсированная гиперкапния).", + "Дома — ипратропия бромид/фенотерол." ], objective:{ vitals:{hr:"110", bp:"160/90", rr:"28", spo2:"86%", temp:"38.3°C"}, - general:"Состояние тяжёлое. Цианоз губ, акроцианоз. Разговорчив с трудом.", - lungs:"Грудная клетка бочкообразная, перкуторно — коробочный звук. Сухие свистящие хрипы на выдохе, ослабленное дыхание.", - heart:"Громкий II тон над лёгочной артерией. Тахикардия.", - other:"Периферические отёки голеней — признаки cor pulmonale." + exam:{general:"Состояние тяжёлое. Цианоз губ, акроцианоз.", heart:"Громкий II тон над лёгочной артерией. Тахикардия.", lungs:"Грудная клетка бочкообразная, коробочный звук. Сухие свистящие хрипы.", other:"Периферические отёки голеней — cor pulmonale."} }, - extra:{title:"Газометрия артериальной крови", text:"PaO₂ 52 мм рт.ст. ↓, PaCO₂ 68 мм рт.ст. ↑, pH 7.31 (дыхательный ацидоз). Гиперкапническая ОДН 2 типа. Рентген: усиление лёгочного рисунка, без очаговой инфильтрации."}, - quiz:{ - q:"Какой подход к кислородотерапии правильный?", - options:[ - {t:"Максимальный O₂ через маску до SpO₂ 99–100%", c:false}, - {t:"Титровать O₂ до целевого SpO₂ 88–92% + NIV при тяжёлой ОДН", c:true}, - {t:"Кислород не давать вообще — опасно", c:false}, - {t:"Только ингаляции эфирных масел", c:false} - ], - feedback:{ - ok:"Верно. При ХОБЛ с гиперкапнией избыток кислорода снимает гипоксический драйв дыхания → рост PaCO₂ и кома. Титруйте до 88–92%.", - no:"Не совсем. Неконтролируемый O₂ при ХОБЛ ведёт к нарастанию гиперкапнии и CO₂-наркозу. Нужен титрованный кислород и NIV." - } - }, - diagnosis:"Обострение ХОБЛ. Острая дыхательная недостаточность 2 типа (гиперкапническая), декомпенсация cor pulmonale.", - algorithm:[ - {s:"Контролируемая оксигенотерапия: начать с 24–28% через Venturi-маску, титровать до SpO₂ 88–92%."}, - {s:"Бронходилататоры через небулайзер (ипратропия бромид + фенотерол/сальбутамол)."}, - {s:"Системные ГКС: преднизолон 30–40 мг/сут на 5–7 дней."}, - {s:"Антибиотики при признаках инфекции (гнойная мокрота, лихорадка) — амоксициллин/клавуланат или макролид."}, - {s:"При тяжёлой ОДН с гиперкапнией/ацидозом (pH < 7.35) — неинвазивная вентиляция (NIV/BiPAP)."}, - {s:"Контроль газометрии, мониторинг. При отсутствии эффекта от NIV — интубация и ИВЛ."} + investigations:[ + {t:"Пульсоксиметрия", n:true}, + {t:"Газометрия артериальной крови", n:true}, + {t:"Рентгенография органов грудной клетки", n:true}, + {t:"ЭКГ", n:true}, + {t:"Общий анализ крови, СРБ, прокальцитонин", n:true}, + {t:"Мокрота на флору и чувствительность", n:true}, + {t:"Биохимия, электролиты", n:true}, + {t:"Компьютерная томография головного мозга", n:false}, + {t:"Люмбальная пункция", n:false}, + {t:"Бронхоскопия", n:false} ], - keypoints:[ - {t:"bad",x:"Не давайте 100% O₂ «на всякий случай» при ХОБЛ — это классическая ошибка, ведущая к CO₂-наркозу."}, - {t:"good",x:"NIV снижает потребность в интубации и летальность при обострении ХОБЛ с гиперкапнией."}, - {t:"good",x:"Целевой SpO₂ для пациента с ХОБЛ — 88–92%, а не 94–98% как у большинства."} + medications:[ + {t:"Бронходилататоры небулайзер (ипратропий + фенотерол)", n:true}, + {t:"Системные ГКС (преднизолон 30–40 мг)", n:true}, + {t:"Антибиотики при гнойной мокроте/лихорадке", n:true}, + {t:"Контролируемая О₂-терапия (цель SpO₂ 88–92%)", n:true}, + {t:"NIV/BiPAP при тяжёлой гиперкапнической ОДН", n:true}, + {t:"Максимальный O₂ до SpO₂ 99–100%", n:false}, + {t:"Седативные препараты", n:false}, + {t:"Наркотические анальгетики", n:false} + ], + diagnosis:{ + options:[ + {t:"Обострение ХОБЛ, ОДН 2 типа (гиперкапническая)", c:true}, + {t:"Острый приступ бронхиальной астмы", c:false}, + {t:"Отёк лёгких", c:false}, + {t:"Внебольничная пневмония без ОДН", c:false}, + {t:"Тромбоэмболия лёгочной артерии", c:false} + ], + explanation:"ХОБЛ в анамнезе, гнойная мокрота, лихорадка, SpO₂ 86%, гиперкапния по газометрии — обострение ХОБЛ с ОДН 2 типа. Кислород титровать до 88–92%." + }, + emergency:{ + intro:"Пациент с гиперкапнической ОДН. У вас 60 секунд оказать экстренную помощь.", + actions:[ + {t:"Контролируемая О₂-терапия (Venturi 24–28%, цель SpO₂ 88–92%)", n:true}, + {t:"Бронходилататоры через небулайзер", n:true}, + {t:"Системные ГКС", n:true}, + {t:"Антибиотики при признаках инфекции", n:true}, + {t:"NIV/BiPAP при pH<7.35 / гиперкапнии", n:true}, + {t:"Мониторинг газометрии", n:true}, + {t:"Дать максимальный O₂ до SpO₂ 99–100%", n:false}, + {t:"Седация для комфорта", n:false}, + {t:"Сразу интубировать без попытки NIV", n:false} + ] + }, + extra:"Газометрия: PaO₂ 52 ↓, PaCO₂ 68 ↑, pH 7.31 (дыхательный ацидоз). Гиперкапническая ОДН 2 типа.", + protocol:"Клинический протокол МЗ РК «Хроническая обструктивная болезнь легких»", + protocolNote:"Контролируемая оксигенотерапия (целевой SpO₂ 88–92%) — избыток O₂ вызывает CO₂-наркоз. Бронходилататоры через небулайзер, системные ГКС, антибиотики при признаках инфекции. При гиперкапнической ОДН (pH < 7.35) — неинвазивная вентиляция лёгких (NIV).", + keyPoints:[ + {t:"bad", x:"Не давайте 100% O₂ «на всякий случай» при ХОБЛ — это ведёт к CO₂-наркозу."}, + {t:"good", x:"NIV снижает потребность в интубации и летальность при обострении ХОБЛ с гиперкапнией."}, + {t:"good", x:"Целевой SpO₂ для пациента с ХОБЛ — 88–92%, а не 94–98%."} ] }, { - id:"hemoshock", - theme:"shock", themeLabel:"Шок и травма", badge:"b-shock", - title:"Травматический геморрагический шок", - severity:3, - patient:{avatar:"🧑", name:"Пациент Д.", age:"30 лет, мужчина", ctx:"ДТП, доставлен бригадой СМП"}, + id:"hemoshock", theme:"shock", themeLabel:"Шок и травма", badge:"b-shock", + title:"Травматический геморрагический шок", severity:3, + patient:{avatar:"🧑", name:"Пациент Д.", age:"30 лет, мужчина", ctx:"ДТП, доставлен бригадой СМП", + voice:{pitch:0.92, rate:0.85, preferMale:true, breath:520, volume:0.7}}, complaint:"Всё кружится... холодно почему-то... пить очень хочу... ногу не чувствую... где я... ничего не вижу ясно...", anamnesis:[ "ДТП: лобовое столкновение, пациент за рулём, не пристёгнут.", "Закрытый перелом бедра, подозрение на перелом таза.", - "Видимое наружное кровотечение из раны бедра, обширная гематома.", + "Наружное кровотечение из раны бедра, обширная гематома.", "Время от травмы до поступления ~40 минут." ], objective:{ vitals:{hr:"130", bp:"80/40", rr:"28", spo2:"95%"}, - general:"Сознание оглушение (GCS 13). Резкая бледность, кожа покрыта холодным липким потом. Акроцианоз.", - heart:"Тоны глухие, выраженная тахикардия, нитевидный пульс.", - lungs:"Дыхание проводится по всем полям, хрипов нет.", - other:"Левое бедро деформировано, укорочено, обширная пульсирующая гематома. Кровь на одежде. Живот мягкий, без перитонеальных знаков." + exam:{general:"Сознание оглушение (GCS 13). Резкая бледность, холодный липкий пот.", heart:"Тоны глухие, нитевидный пульс.", lungs:"Дыхание проводится по всем полям, хрипов нет.", other:"Левое бедро деформировано, укорочено, обширная гематома. Кровь на одежде."} }, - extra:{title:"Оценка шока", text:"Класс геморрагического шока III–IV (потеря > 30% ОЦК). Дефицит базы > −6 ммоль/л, лактат повышен. Шоковый индекс (ЧСС/САД) = 130/80 = 1.6 — тяжёлый шок."}, - quiz:{ - q:"Что является абсолютным приоритетом?", - options:[ - {t:"Полное рентген-обследование до любой терапии", c:false}, - {t:"Остановка кровотечения + венозный доступ + инфузия/гемотрансфузия", c:true}, - {t:"Введение обезболивающего и ожидание хирурга", c:false}, - {t:"Только внутривенно коллоиды в большой дозе", c:false} - ], - feedback:{ - ok:"Верно. Принцип damage control: немедленная остановка кровотечения, восстановление ОЦК, раннее переливание крови в соотношении 1:1:1.", - no:"Не совсем. До полного обследования пациент может погибнуть от гиповолемии. Сначала — остановка кровотечения и инфузия." - } - }, - diagnosis:"Травматический геморрагический шок III–IV степени. Закрытый перелом бедра, перелом таза. Массивная кровопотеря.", - algorithm:[ - {s:"ABCDE. Обеспечение проходимости дыхательных путей, оксигенация, иммобилизация шейного отдела."}, - {s:"Немедленная остановка наружного кровотечения: прямое давление, тазовый бинт, жгут при артериальном кровотечении."}, - {s:"Два крупных венозных доступа. Пробы на группу крови, кросс-матч, лактат."}, - {s:"Согревание пациента, профилактика триады смерти: гипотермия — ацидоз — коагулопатия."}, - {s:"Сбалансированная инфузия кристаллоидов + ранняя гемотрансфузия (эритроциты/плазма/тромбоциты ~1:1:1). Вазопрессоры временно, если инфузия неэффективна."}, - {s:"Экстренный хирургический/ортопедический гемостаз (damage control surgery). Контроль внутреннего кровотечения."} + investigations:[ + {t:"Группа крови, Rh, кросс-матч", n:true}, + {t:"Общий анализ крови (Hb, Ht)", n:true}, + {t:"Коагулограмма", n:true}, + {t:"Лактат, газометрия (дефицит базы)", n:true}, + {t:"Креатинин, электролиты", n:true}, + {t:"Рентгенография органов грудной клетки", n:true}, + {t:"УЗИ FAST (поиск внутреннего кровотечения)", n:true}, + {t:"Люмбальная пункция", n:false}, + {t:"Фиброгастроскопия", n:false}, + {t:"ЭЭГ", n:false} ], - keypoints:[ - {t:"bad",x:"Не тратьте время на полное обследование при нестабильной гемодинамике — пациент гибнет от кровопотери."}, - {t:"good",x:"Боритесь с триадой смерти (гипотермия + ацидоз + коагулопатия) — это определяет выживаемость."}, - {t:"bad",x:"Избыток кристаллоидов до гемотрансфузии усугубляет коагулопатию и гипотермию — не «заливайте» пациента."} + medications:[ + {t:"Кристаллоиды (солевые растворы)", n:true}, + {t:"Эритроцитарная масса", n:true}, + {t:"Свежезамороженная плазма", n:true}, + {t:"Тромбоцитный концентрат при коагулопатии", n:true}, + {t:"Транексамовая кислота", n:true}, + {t:"Норадреналин временно при рефрактерном шоке", n:true}, + {t:"Антикоагулянты (гепарин/эноксапарин)", n:false}, + {t:"Тромболизис", n:false}, + {t:"Диуретики", n:false} + ], + diagnosis:{ + options:[ + {t:"Травматический геморрагический шок III–IV степени", c:true}, + {t:"Кардиогенный шок", c:false}, + {t:"Септический шок", c:false}, + {t:"Анафилактический шок", c:false}, + {t:"Нейрогенный шок", c:false} + ], + explanation:"Травма, массивная кровопотеря, ЧСС 130, АД 80/40, шоковый индекс 1.6, бледность, олигурия — геморрагический шок III–IV. Приоритет — остановка кровотечения и восстановление ОЦК." + }, + emergency:{ + intro:"Пациент в геморрагическом шоке, нестабилен. У вас 60 секунд на оказание экстренной помощи.", + actions:[ + {t:"Немедленная остановка наружного кровотечения (прямое давление/жгут)", n:true}, + {t:"ABCDE, иммобилизация шейного отдела", n:true}, + {t:"Два крупных венозных доступа", n:true}, + {t:"Согревание пациента (борьба с гипотермией)", n:true}, + {t:"Инфузия кристаллоидов + ранняя гемотрансфузия (1:1:1)", n:true}, + {t:"Тазовый бинт при переломе таза", n:true}, + {t:"Экстренный хирургический гемостаз", n:true}, + {t:"Начать антикоагулянтную терапию", n:false}, + {t:"Провести тромболизис", n:false} + ] + }, + extra:"Класс шока III–IV (потеря > 30% ОЦК). Лактат повышен, дефицит базы > −6 ммоль/л. Шоковый индекс 1.6.", + protocol:"Клинические протоколы МЗ РК «Шок», «Острое кровотечение»", + protocolNote:"Приоритет — остановка кровотечения (damage control). ABCDE, иммобилизация. Сбалансированная инфузия кристаллоидов + ранняя гемотрансфузия (эритроциты/плазма/тромбоциты), транексамовая кислота. Борьба с триадой смерти (гипотермия, ацидоз, коагулопатия). Экстренный хирургический гемостаз. Антикоагулянты и тромболизис противопоказаны.", + keyPoints:[ + {t:"bad", x:"Не тратьте время на полное обследование при нестабильной гемодинамике — пациент гибнет от кровопотери."}, + {t:"good", x:"Боритесь с триадой смерти: гипотермия + ацидоз + коагулопатия."}, + {t:"bad", x:"Избыток кристаллоидов до гемотрансфузии усугубляет коагулопатию и гипотермию."} ] }, { - id:"sepsis", - theme:"shock", themeLabel:"Шок и травма", badge:"b-shock", - title:"Септический шок", - severity:3, - patient:{avatar:"🧔", name:"Пациент Е.", age:"55 лет, мужчина", ctx:"Направлен из приёмного покоя"}, + id:"sepsis", theme:"shock", themeLabel:"Шок и травма", badge:"b-shock", + title:"Септический шок", severity:3, + patient:{avatar:"🧔", name:"Пациент Е.", age:"55 лет, мужчина", ctx:"Направлен из приёмного покоя", + voice:{pitch:0.9, rate:0.92, preferMale:true, breath:340, volume:0.9}}, complaint:"Три дня назад начался озноб, температура под тридцать девять, кашель с мокротой. Со вчера стало хуже — давление упало, в себя прихожу с трудом. Раньше ноги никогда так не отекали, а сейчас задыхаюсь. Пить хочу, но тошнит.", anamnesis:[ "Сахарный диабет 2 типа, плохо компенсирован.", - "Заболел как ОРВИ 5 дней назад, затем присоединился кашель с гнойной мокротой.", + "Заболел как ОРВИ 5 дней назад, затем кашель с гнойной мокротой.", "Самостоятельно принимал парацетамол и «антибиотик из аптечки».", "Аллергия на пенициллин." ], objective:{ vitals:{hr:"125", bp:"85/50", rr:"26", spo2:"92%", temp:"38.9°C"}, - general:"Состояние тяжёлое. Кожа горячая, пятнистая сыпь. Сознание спутано, вялый.", - heart:"Тоны глухие, тахикардия. САД 85 после инфузии кристаллоидов.", - lungs:"В правой нижней доле — ослабленное дыхание, влажные мелкопузырчатые хрипы, притупление перкуторно.", - other:"Олигурия (< 0.5 мл/кг/ч). Капиллярное наполнение > 3 сек. Холодные на ощупь конечности на поздней стадии." + exam:{general:"Состояние тяжёлое. Кожа горячая, пятнистая сыпь. Сознание спутано.", heart:"Тоны глухие, тахикардия. САД 85 после инфузии.", lungs:"В правой нижней доле — ослабленное дыхание, влажные хрипы, притупление.", other:"Олигурия. Капиллярное наполнение > 3 сек."} }, - extra:{title:"Лаборатория и визуализация", text:"Лактат 4.2 ммоль/л ↑. Лейкоциты 22×10⁹/л, сдвиг формулы. Креатинин повышен. Рентген ОГК: инфильтрация нижней доли справа, плевральный выпот. Гемокультуры взяты до антибиотиков."}, - quiz:{ - q:"Что должно быть выполнено в первый час (Sepsis 1-hour bundle)?", - options:[ - {t:"Только ждать результаты посевов 24 часа", c:false}, - {t:"Лактат + гемокультуры + антибиотики + инфузия 30 мл/кг + вазопрессоры при гипотонии", c:true}, - {t:"Только вазопрессоры без инфузии", c:false}, - {t:"Только жаропонижающие и наблюдение", c:false} - ], - feedback:{ - ok:"Верно. Hour-1 bundle: измерить лактат, взять культуры до антибиотиков, ввести широкопрофильные антибиотики, инфузия 30 мл/кг кристаллоидов, норадреналин при стойкой гипотонии.", - no:"Не совсем. Задержка с антибиотиками и инфузией每小时 повышает летальность. Все компоненты выполняются в первый час." - } - }, - diagnosis:"Септический шок. Внебольничная пневмония нижней доли справа — вероятный источник. Острое почечное повреждение.", - algorithm:[ - {s:"Sepsis hour-1 bundle: лактат, забор гемокультур до антибиотиков."}, - {s:"Антибиотики широкого спектра в/в в первый час (учесть аллергию на пенициллин — например, цефалоспорин/карбапенем + макролид)."}, - {s:"Инфузия кристаллоидов 30 мл/кг за 3 ч при гипотензии или лактате ≥ 4 ммоль/л."}, - {s:"При стойкой гипотензии после инфузии — норадреналин титровать до САД ≥ 65 мм рт.ст. Вазопрессином добавить при необходимости."}, - {s:"Контроль источника инфекции (дренирование выпота, лечение пневмонии). Мониторинг: лактат, диурез, АД."}, - {s:"Поддерживающая терапия: оксигенация/ИВЛ по показаниям, контроль гликемии, профилактика тромбозов."} + investigations:[ + {t:"Гемокультуры (до антибиотиков!)", n:true}, + {t:"Лактат", n:true}, + {t:"Общий анализ крови с формулой, СРБ, прокальцитонин", n:true}, + {t:"Культура мокроты и мочи", n:true}, + {t:"Газометрия, коагулограмма (ДВС-скрининг)", n:true}, + {t:"Креатинин, печёночные пробы, электролиты", n:true}, + {t:"Рентгенография органов грудной клетки", n:true}, + {t:"ЭКГ", n:true}, + {t:"Люмбальная пункция", n:false}, + {t:"Фиброгастроскопия", n:false} ], - keypoints:[ - {t:"bad",x:"Не ждите посевов, чтобы начать антибиотики — каждая час задержки повышает летальность."}, - {t:"good",x:"Норадреналин — препарат первого ряда при септическом шоке после адекватной инфузии."}, - {t:"good",x:"Контроль источника инфекции так же важен, как антибиотики — без него шок не купируется."} + medications:[ + {t:"Антибиотики широкого спектра в/в в 1-й час", n:true}, + {t:"Кристаллоиды 30 мл/кг", n:true}, + {t:"Норадреналин (вазопрессор 1-й линии)", n:true}, + {t:"Вазопрессин (2-я линия)", n:true}, + {t:"Инсулин (контроль гликемии)", n:true}, + {t:"Гидрокортизон при рефрактерном шоке", n:true}, + {t:"Глюкокортикоиды рутинно в высоких дозах", n:false}, + {t:"Седативные препараты", n:false}, + {t:"Диуретики в начале терапии", n:false} + ], + diagnosis:{ + options:[ + {t:"Септический шок (на фоне внебольничной пневмонии)", c:true}, + {t:"Гиповолемический шок", c:false}, + {t:"Кардиогенный шок", c:false}, + {t:"Анафилактический шок", c:false}, + {t:"Тромбоэмболия лёгочной артерии", c:false} + ], + explanation:"Инфекционный очаг (пневмония), лихорадка, гипотензия после инфузии, лактат 4.2, олигурия, спутанность сознания — септический шок. Выполняйте hour-1 bundle." + }, + emergency:{ + intro:"Пациент в септическом шоке. У вас 60 секунд выполнить Sepsis hour-1 bundle.", + actions:[ + {t:"Измерить лактат", n:true}, + {t:"Взять гемокультуры до антибиотиков", n:true}, + {t:"Ввести антибиотики широкого спектра в/в в 1-й час", n:true}, + {t:"Инфузия кристаллоидов 30 мл/кг", n:true}, + {t:"Норадреналин при стойкой гипотензии (САД ≥ 65)", n:true}, + {t:"Мониторинг диуреза, АД, лактата", n:true}, + {t:"Ждать посевов 24 ч перед антибиотиками", n:false}, + {t:"Только вазопрессоры без инфузии", n:false}, + {t:"Только жаропонижающие и наблюдение", n:false} + ] + }, + extra:"Лактат 4.2 ↑. Лейкоциты 22×10⁹/л, сдвиг. Креатинин повышен. Рентген: инфильтрация нижней доли справа.", + protocol:"Клинический протокол МЗ РК «Сепсис и септический шок»", + protocolNote:"Часовой пакет (hour-1 bundle): измерить лактат, взять гемокультуры до антибиотиков, ввести антибиотики широкого спектра в/в в 1-й час, инфузия кристаллоидов 30 мл/кг, норадреналин при стойкой гипотензии (целевое САД ≥ 65 мм рт.ст.). Контроль источника инфекции.", + keyPoints:[ + {t:"bad", x:"Не ждите посевов, чтобы начать антибиотики — каждый час задержки повышает летальность."}, + {t:"good", x:"Норадреналин — препарат первого ряда при септическом шоке после адекватной инфузии."}, + {t:"good", x:"Контроль источника инфекции так же важен, как антибиотики."} ] } ]; -/* ===== Рендер карточек ===== */ -const grid = document.getElementById("caseGrid"); +/* ========================================================= + Озвучка (Web Speech API) — человеческий голос + ========================================================= */ +let voices=[]; +function loadVoices(){ if("speechSynthesis" in window) voices=window.speechSynthesis.getVoices(); } +if("speechSynthesis" in window){ loadVoices(); window.speechSynthesis.onvoiceschanged=loadVoices; } -function sevDots(n){ - let s="";for(let i=0;i<3;i++) s+=``; - return s; +function pickVoice(preferMale){ + const ru = voices.filter(v=>v.lang && v.lang.toLowerCase().startsWith("ru")); + if(!ru.length) return null; + const maleRe=/pavel|yuri|maxim|dmitri|alexander|male|мужской/i; + const femaleRe=/irina|katya|milena|tatiana|anna|maria|female|женский/i; + if(preferMale){ const m=ru.find(v=>maleRe.test(v.name)); if(m) return m; } + else { const f=ru.find(v=>femaleRe.test(v.name)); if(f) return f; } + // предпочесть нейросетевые/качественные движки + const q=ru.find(v=>/google|yandex|microsoft|neural|premium/i.test(v.name)); if(q) return q; + return ru[0]; } +let speakState={playing:false, queue:[], idx:0, timer:null, btn:null, avatar:null, opts:null}; + +function stopSpeak(){ + if("speechSynthesis" in window) window.speechSynthesis.cancel(); + if(speakState.timer){ clearTimeout(speakState.timer); speakState.timer=null; } + speakState.playing=false; + if(speakState.btn){ speakState.btn.classList.remove("is-playing"); speakState.btn.textContent="▶ Прослушать"; } + if(speakState.avatar) speakState.avatar.classList.remove("is-speaking"); + speakState.queue=[]; speakState.idx=0; +} + +function splitPhrases(text){ + return text + .split(/(?<=[.!?…])\s+|(?<=…)\s*/) + .map(s=>s.trim()) + .filter(Boolean); +} + +function speakPatient(text, opts, btn, avatar){ + const synth=window.speechSynthesis; + if(!synth){ alert("Озвучка не поддерживается этим браузером."); return; } + if(speakState.playing){ stopSpeak(); return; } + stopSpeak(); + const phrases=splitPhrases(text); + if(!phrases.length) return; + speakState.queue=phrases; speakState.idx=0; speakState.btn=btn; speakState.avatar=avatar; speakState.opts=opts; + speakState.playing=true; + btn.classList.add("is-playing"); btn.textContent="⏹ Остановить"; + if(avatar) avatar.classList.add("is-speaking"); + playNext(); +} + +function playNext(){ + const synth=window.speechSynthesis; + if(!speakState.playing || speakState.idx>=speakState.queue.length){ stopSpeak(); return; } + const phrase=speakState.queue[speakState.idx]; + const opts=speakState.opts||{}; + const u=new SpeechSynthesisUtterance(phrase); + u.lang="ru-RU"; + const v=pickVoice(opts.preferMale); + if(v) u.voice=v; + u.rate=opts.rate!=null?opts.rate:0.97; + u.pitch=opts.pitch!=null?opts.pitch:1; + u.volume=opts.volume!=null?opts.volume:1; + u.onend=()=>{ + if(!speakState.playing) return; + speakState.idx++; + if(speakState.idx>=speakState.queue.length){ stopSpeak(); return; } + speakState.timer=setTimeout(playNext, opts.breath!=null?opts.breath:230); + }; + u.onerror=()=>{ stopSpeak(); }; + synth.speak(u); +} + +window.addEventListener("beforeunload",()=>{ if("speechSynthesis" in window) window.speechSynthesis.cancel(); }); + +/* ========================================================= + Рендер карточек кейсов + фильтры + ========================================================= */ +const grid=document.getElementById("caseGrid"); +function sevDots(n){let s="";for(let i=0;i<3;i++)s+=``;return s;} + function renderCards(filter="all"){ grid.innerHTML=""; CASES.filter(c=>filter==="all"||c.theme===filter).forEach(c=>{ @@ -319,190 +536,511 @@ function renderCards(filter="all"){
«${c.complaint.length>130?c.complaint.slice(0,130)+'…':c.complaint}»
+Пациент сам расскажет жалобы голосом. Назначьте обследования и лечение, поставьте диагноз, окажите экстренную помощь на время.
${o.general}
-${o.heart}
-${o.lungs}
-${o.other}
`; -} - -function algoHTML(a){ - return `${c.objective.exam.general}
+${c.objective.exam.heart}
+${c.objective.exam.lungs}
+${c.objective.exam.other}
+${c.extra.text}
${c.quiz.q}
-${c.diagnosis}
${kind==="emergency"?c.emergency.intro:cfg.sub}
+Выберите наиболее вероятный диагноз из вариантов.
+Отмечайте действия. Время пошло.${danger}
+ +${grade.text} Вы прошли ${scores.length} из ${state.queue.length} кейсов.
+Шесть реалистичных кейсов. Пациент сам рассказывает жалобы — включите звук. Соберите анамнез, оцените состояние, поставьте диагноз и пройдите алгоритм помощи.
+ 🩺 Экзамен · 6 курс · по протоколам МЗ РК +Шесть клинических кейсов по алгоритмам клинических протоколов МЗ РК. Пациент сам рассказывает жалобы — включите звук. Вы сами назначаете обследования и лечение, ставите диагноз и оказываете экстренную помощь на время. В конце — оценка в процентах.
Кейсы сгруппированы по темам. Каждый — самостоятельный сценарий от жалобы до алгоритма.
-STEMI, NSTEMI — дифференциальная диагностика грудной клетки и реперфузия.
-Астматический статус, обострение ХОБЛ с гиперкапнической ОДН.
-Геморрагический и септический шок — ABCDE, инфузия, вазопрессоры.
-Каждый кейс — это 4 шага решения. За каждый шаг начисляются баллы. Чем точнее выбор, тем выше оценка.
+Выберите необходимые исследования из списка. Не назначайте лишнее.
Назначьте препараты из перечня. Избегайте противопоказанных.
Выберите верный диагноз из вариантов.
За 60 секунд выберите правильные действия. Время пошло!
Нажмите «Прослушать» — пациент расскажет жалобы голосом. Дальше соберите данные и поставьте диагноз.
+Решите кейс отдельно или пройдите весь экзамен. Карточки открывают пошаговый режим с оценкой.
Полный экзамен — все 6 кейсов подряд с итоговой оценкой в процентах и разбивкой по темам.
+