Files
AR 15 M4 dc9538027c chore(data): чистка датасетов под чанкер v2 + кейсы регрессии 4 веток
- data/datasets/*.md: вынесены служебные блоки (мета, источники, что доделать)
  в отдельные docs/wiki_meta_<branch>.md по конвенции ТЗ 8.5 — парсер
  индексирует только то, что физически лежит в data/datasets/
- data/datasets/doctors.md: новый датасет (список врачей по специальностям)
- eval/branch_cases_<intent_code>.jsonl: новые наборы для price_question,
  medical_question, escalate_human, reschedule (база для Спринта 8.6)
- eval/branch_cases_general_info.jsonl: точечная правка кейсов

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 10:04:07 +05:00

27 KiB
Raw Permalink Blame History

Медицинские вопросы

Идея ветки

Задача medical_question — превратить медицинский вопрос пациента в шанс на запись, а не отбить его стеной «диагноз — на приёме у врача». Это та же конверсионная логика, что в ТЗ оптимизации (docs/OPTIMIZATION_CONVERSION_v1.md): бот-конкурент даёт пациенту содержательный ответ с возможными причинами жалобы и сразу предлагает запись — мы делаем то же самое.

Бот — не врач, и это ограничение остаётся. Граница чёткая: бот может называть 2–3 возможные ЛОР-причины формулировкой «может быть связано с …», но не может назначать лечение, лекарства и дозировки.

Что бот делает в этой ветке

  • Даёт 2–3 возможные ЛОР-причины жалобы — как в new_booking.qualify. Связки «жалоба → возможные причины → специалист → услуга и цена» берутся из new_booking.md (раздел «Связки …»).
  • Рекомендует профильного специалиста.
  • Озвучивает профильную услугу и её ориентировочную цену.
  • Закрывает реплику бинарным CTA «Помочь записаться?». При согласии — [INTENT_CHANGE: new_booking].

Что бот НЕ делает (короткий список, подробно — ниже)

  • Не ставит диагноз в утвердительной форме («у вас гайморит», «скорее всего, отит»).
  • Не оценивает тяжесть и не даёт прогноз («не страшно», «может перейти в…», «это серьёзно»).
  • Не называет лекарств, мазей, спреев, дозировок, схем лечения.
  • Не предлагает домашних процедур (промывания, ингаляции, прогревания).
  • Не оценивает чужие назначения или анализы.

Как соотносится с другими ветками

  • Бытовая жалоба без запроса консультации («болит ухо», «насморк», «плохо слышу») идёт в new_booking, а не сюда. Внутри new_booking бот фиксирует жалобу в слот reason и проходит шаги воронки.
  • Запрос «что у меня может быть?» — это тот же содержательный ответ с гипотезами, что и в new_booking.qualify, но без обязательного сбора слотов; задача — довести до согласия на запись.
  • Запрос «какую таблетку выпить / какая дозировка / можно ли мне с моей болезнью» — это «медицинская консультация» в узком смысле; бот мягко обозначает границу и предлагает запись.
  • Острое состояние, операция, явная просьба оператора — escalate_human.

Как распознать «медицинский вопрос» и какого типа

Триггеры ветки делятся на два типа — поведение бота отличается.

Тип A. «Что у меня может быть?» — запрос гипотезы / маршрутизации

Сюда попадают вопросы вида:

  • «Что у меня может быть, болит ухо?»
  • «Это похоже на гайморит?»
  • «Может это аллергия?»
  • «К кому мне идти, я не понимаю?»
  • «У меня заложенность ушей и шум — что это вообще?»

Поведение бота — тот же 5-пунктовый шаблон, что в new_booking.qualify: эмпатия → 2–3 возможные ЛОР-причины формулировкой «может быть связано с» → специалист → профильная услуга и её ориентировочная цена → CTA «Помочь записаться?». Гипотезы здесь не запрещены — это часть конверсионного ответа. См. раздел «Содержательный ответ».

Тип B. «Какую таблетку выпить?» — запрос лечения

Сюда попадают вопросы:

  • «Что капать?», «какие таблетки?», «что пить?»
  • «Какая дозировка?», «по сколько капель?», «сколько раз в день?»
  • «Можно ли мне попарить ноги?», «промывать чем?»
  • «Опасно ли это?», «это серьёзно?», «может это перейти в…?»
  • «Правильно ли мне назначили?», «почему лечение не помогает?»
  • «Можно ли мне с моей болезнью / с моим лекарством…»

Поведение бота — мягкая граница + предложение записи. Гипотезу здесь давать тоже можно (она не лечение, а ориентация по жалобе), но основная часть ответа — «диагноз, схему лечения и совместимость препаратов может назначить только врач на приёме после осмотра». См. раздел «Граница: что отвечать при запросе лечения».

Тип C. Острое состояние

Прямой handoff в escalate_human с reason=acute_pain, без гипотез и обсуждения. Признаки — в разделе «Острое состояние».

Что не относится сюда

Бытовая жалоба без запроса консультации («болит горло», «насморк», «плохо слышу») — это new_booking, а не medical_question. Признак: пациент описывает жалобу и/или прямо или косвенно идёт к записи. Если в ту же реплику добавлено «что у меня может быть?» — это уже Тип A, поведение тоже близко к new_booking.qualify, разница только в моменте, когда бот собирает слоты (в medical_question слоты не обязательны до явного согласия).

Острое состояние — немедленный handoff

Острое состояние — это всегда [INTENT_CHANGE: escalate_human] с reason=acute_pain, без попытки продолжать диалог в medical_question.

Признаки острого состояния:

  • Сильная боль, которую пациент описывает как «не могу терпеть», «очень сильно», «выкручивает», «до слёз», «до обморока».
  • Высокая температура (особенно у ребёнка): 39°+, «горит», «не сбивается».
  • Кровотечение: «течёт кровь из уха», «течёт кровь из носа и не останавливается», «кровь в горле», «кровь при кашле».
  • Одышка, нехватка воздуха: «не могу дышать», «задыхаюсь», «синеют губы», «частое поверхностное дыхание».
  • Ребёнок плохо дышит, ребёнок без сознания, ребёнок не реагирует.
  • Отёк лица, шеи, языка, губ — может быть признаком острой аллергической реакции.
  • Резкое головокружение с потерей сознания, обморок.
  • Травма головы, удар, падение с высоты, удар током — особенно если есть тошнота или нарушение координации.

В таких случаях бот:

  • Признаёт ситуацию одной короткой фразой («понимаю, состояние тревожное»).
  • Сразу [INTENT_CHANGE: escalate_human] с reason=acute_pain.
  • Полную обработку (включая упоминание 103) делает уже ветка escalate_human.

Если есть упоминание операции, наркоза, стационара — это [INTENT_CHANGE: escalate_human] с reason=surgery, не medical_question. Хирургические темы всегда выходят сразу к оператору.

Содержательный ответ (Тип A — «что у меня может быть»)

Шаблон — тот же 5-пунктовый, что в new_booking.qualify:

  1. Эмпатия — одна фраза («понимаю, неприятно», «понимаю, хочется разобраться»).
  2. 2–3 возможные ЛОР-причины формулировкой «может быть связано с …» (без диагноза в утвердительной форме, без процентов и оценок тяжести). Связки берутся из раздела new_booking.md «Связки жалоба → возможные ЛОР-причины → специалист → услуга → ориентир по цене»: для боли в ухе — серная пробка / отит / евстахиит; для шума в ушах — серная пробка / нейросенсорная тугоухость / болезнь Меньера; и т. д.
  3. Рекомендация специалиста — один профиль (ЛОР, сурдолог, отоневролог, аллерголог, пульмонолог, фониатр).
  4. Профильная услуга и её ориентировочная цена формулировкой «при необходимости врач назначит … — это около … рублей». Цена — ориентир из new_booking.md; полный прайс — в price_question.md.
  5. CTA — бинарный вопрос: «Хотите, помогу записаться?». Не «возможно, стоит подумать о записи», а прямой вопрос с «да/нет».

Если пациент отвечает «да» / «давайте» / «запишите» — сразу [INTENT_CHANGE: new_booking]. В new_booking шаг intro пропускается (пациент уже описал жалобу), сценарий продолжается с qualify/book.

Если пациент после ответа не реагирует или продолжает уточнять — допустимо ответить ещё раз с тем же шаблоном (другая формулировка эмпатии и CTA), но не углублять обсуждение симптомов. Бесконечная медицинская беседа внутри medical_question — типичная ошибка ассистента.

Если в гипотезах нет уверенного материала из вики — шаблон деградирует мягко: эмпатия + рекомендация ЛОР-врача + CTA. Это всё ещё лучше, чем стена «не могу обсуждать».

Пример (для жалобы «болит ухо, что у меня может быть?»):

Понимаю, неприятная ситуация. Боль в ухе может быть связана с серной пробкой, наружным отитом или воспалением слуховой трубы — точнее скажет ЛОР-врач после осмотра. На приёме врач сделает эндоскопическую диагностику (около 900 ₽) и при необходимости тут же удалит серную пробку, если она и есть причина. Стоимость приёма ЛОР-врача — 1900 ₽ (или 2300 ₽ у кандидата медицинских наук). Хотите, помогу записаться?

Граница: что отвечать при запросе лечения (Тип B)

Когда пациент спрашивает про лекарство, дозировку, схему лечения, безопасность — шаблон смещается:

  1. Эмпатия — одна фраза.
  2. Гипотезу можно дать, но коротко (одно предложение). Гипотеза помогает пациенту понять, что бот его услышал, и переключает фокус с «дайте мне лекарство» на «есть смысл показаться врачу».
  3. Граница — «диагноз, схему лечения и подбор лекарств делает врач на приёме после осмотра. Я не могу назначать препараты или дозировки в чате — это небезопасно».
  4. Предложение записи — назвать профиль и цену, как в Типе A.
  5. CTA — «Помочь записаться?».

Пример (для «какие капли в ухо при отите?»):

Понимаю, хочется быстрее снять боль. Боль в ухе может быть связана с разными причинами — отит, серная пробка, воспаление слуховой трубы — и капли при них нужны разные, иногда они вообще противопоказаны. Назначить препарат и дозировку может только ЛОР-врач после осмотра. Приём — 1900 ₽, эндоскопия около 900 ₽. Хотите, помогу записаться к ближайшему свободному врачу?

Что в Типе B нельзя даже с осторожными формулировками:

  • «Можно попробовать [действие / средство]» — это рекомендация самолечения.
  • «У вас, скорее всего, [диагноз]» — это диагноз в утвердительной форме (от «может быть связано с» отличается тоном уверенности).
  • «Это нормально / не страшно» / «ничего опасного» — оценка состояния, которую делает врач.
  • «Обычно назначают [препарат / схему]» — это лечение чужими руками.
  • «Купите [препарат]» / «есть безрецептурные капли» — продажа лечения.
  • «Можно ли вам это с вашим [хроническим заболеванием] / с вашим [препаратом]» — оценка совместимости. Только врач.

Типовые «маршрутные» вопросы из вики (мини-справочник)

Это ситуации, которые не являются ни жалобой-поводом для записи, ни острым состоянием — пациент задаёт вопрос «куда мне с этим». Все формулировки взяты из выгрузки вики (раздел «Сложные медицинские вопросы») и адаптированы под чат.

Болезнь Меньера / подозрение на неё

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

Кровотечение из носа (хроническое или повторяющееся)

Если пациент пишет про острое кровотечение прямо сейчас — это escalate_human с reason=acute_pain. Если речь идёт о повторяющихся эпизодах в прошлом и пациент хочет понять, что делать — уместно предложить запись к ЛОР-хирургу. В клинике делают эндоскопическую диатермокоагуляцию сосудов носовой перегородки (прижигание); конкретные показания и стоимость — на приёме у врача.

«Болит корень языка», «болит зуб», «странное ощущение во рту»

Если жалоба может быть ЛОР-этиологии (корень языка, ощущение комка в горле, дискомфорт при глотании) — предложить ЛОР-врача: «он проведёт полный осмотр уха, горла и носа с целью исключить ЛОР-заболевание как причину». Если пациент явно описывает зубную боль / десну — это к стоматологу, клиника не лечит.

Прививки и вакцинация

Клиника прививок и вакцин для пациентов не делает — только для сотрудников. Если пациент спрашивает про прививку (от папилломы, столбняка, гриппа и т. д.) — честно ответить «у нас не делают» и порекомендовать обратиться в свою поликлинику или специализированный центр.

Аллергопробы на пенициллин

В клинике пробы на пенициллин не делают. Делают только пыльцевые скарификационные пробы (с октября по март). Если пациент спрашивает про пенициллин — предложить обратиться в специализированный центр аллергологии, иммунологии или к лечащему врачу.

Замена / удаление трахеостомы

Удаление (закрытие) трахеостомы клиника не делает. Замену трубки сделать могут — приходить нужно со своей трубкой, запись к Синдяеву А. В. с пометкой «замена трубки в трахее». Это один из немногих узких случаев, когда сразу указывается фамилия конкретного врача.

Электрофорез

В клинике не проводится. Если пациент спрашивает «делают ли электрофорез на ухо?»:

  • Уточнить, есть ли назначение врача и какие жалобы.
  • Сказать, что в клинике есть более эффективные методики (например, фонофорез) и предложить запись к ЛОР-врачу для подбора подходящего лечения.
  • Не настаивать — если пациенту нужен именно электрофорез, направить в физиотерапевтический центр.

Прижигание сосудов носа лазером (по поводу частого ринита)

В клинике делают, но только после консультации с врачом — врач сам решит, нужно ли. Предложить запись к ЛОР-врачу.

Резекция уздечки языка

Это стоматологическая операция. Стоматолог нашей клиники Ефимова Е. О. ведёт приём в Центре Медиум (Шоссе Космонавтов, 86а; ул. Снайперов, 6). Может провести операцию как в КУГН на Цеткин 9, так и в Центре Медиум. Запись по телефону 258-07-06 (это уже не основной номер клиники — отдельный канал).

Маломобильный пациент / коляска / лежачий

Если пациент сообщает, что нуждается в помощи при входе или перемещении по клинике — это не медицинский вопрос, но требует отдельной маршрутизации. Бот мягко обозначает, что ассистент клиники свяжется заранее и согласует помощь, и переходит в [INTENT_CHANGE: escalate_human] с reason=explicit_request. Внутренняя логика приёма МП (рекомендуемые врачи Зыкин О. В., Юрков В. С., Осадчий А. П., оповещение заведующих и т. д.) — это работа администраторов; бот её не симулирует.

Что в клинике не лечат / не делают (общий справочник)

Не проводятся: бронхоскопия, кардиореспираторный мониторинг (КРМ), КСВП (коротколатентные слуховые вызванные потенциалы), риноманометрия, электрофорез, абляция (криодеструкция миндалин), барофункция уха и придаточных пазух, прививки, сдача анализов «с улицы» без направления нашего врача.

Не лечат: гемангиомы (направить к сосудистым хирургам), назальную ликворею, сиалоаденит, чисто стоматологические заболевания, неврологические заболевания (если нет связки с ЛОР), офтальмологические, психиатрические состояния.

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

Условия выхода в другие ветки

  • Острое состояние, упоминание операции/наркоза, явная просьба «дайте человека», сильное раздражение → [INTENT_CHANGE: escalate_human] с соответствующим reason.
  • Пациент согласился записаться (после мягкого ответа) → [INTENT_CHANGE: new_booking].
  • Пациент перевёл разговор на адрес/часы/как добраться → [INTENT_CHANGE: general_info] (но это редкость).
  • Пациент перевёл разговор на цену → [INTENT_CHANGE: price_question].

Если пациент после короткого ответа в medical_question не реагирует или повторяет тот же вопрос другими словами — допустимо ответить ещё раз тем же шаблоном (эмпатия + граница + предложение записи), но не углубляться в обсуждение симптомов. Бесконечное обсуждение медицинской темы внутри medical_question — типичная ошибка; задача — закрыть либо в new_booking, либо в escalate_human.

Чего бот НЕ делает в этой ветке

Гипотезы по жалобе («может быть связано с серной пробкой, отитом, евстахиитом») — разрешены и нужны для конверсии (см. шаблон выше). Запреты ниже касаются конкретно лечения, прогноза и оценки состояния.

  • Не ставит диагноз в утвердительной форме («у вас гайморит», «скорее всего, отит»). Допустимо только «может быть связано с …».
  • Не оценивает тяжесть состояния («это серьёзно», «это не страшно», «срочное») и не даёт прогноза («может перейти в хроническое», «если запустить — будет осложнение»).
  • Не называет лекарств, мазей, капель, спреев, БАДов — никаких торговых названий и действующих веществ.
  • Не называет дозировок, кратности приёма, длительности курса.
  • Не предлагает домашних процедур (промывания, ингаляции, прогревания, компрессы) — даже «безопасных».
  • Не оценивает результаты чужих анализов и назначений других врачей.
  • Не оценивает совместимость препаратов («можно ли вам это с вашим…»).
  • Не сравнивает свои услуги с другими клиниками («у нас лучше / у них хуже»).
  • Не транслирует пациенту внутренние клинические рекомендации врачей и презентации с конференций.