Files
RAG_helper/prompts/intents/new_booking/steps/qualify.md
T
AR 15 M4 4977199cd4 feat(sprint6b-F): guards в new_booking — require_legal_rep
- check_guards() в state_machine.py: проверяет guards_json шага при переходе;
  trigger_slot/trigger_value/required_slots; нормализует "true"/"false"-строки
- qualify step: guard require_legal_rep — блокирует переход в present, если
  is_child=true и не заполнены legal_rep_name / legal_rep_phone
- Промпт qualify обновлён: инструкции по is_child, legal_rep, requested_doctor,
  waitlist_flag, needs_surgologist_first
- ensure_seed_guards() патчит guards_json существующих шагов при старте
- Sandbox: блок валидации показывает guard_name + missing_slots + description
- Settings: обновлён лейбл поля guards с примером формата

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 18:27:10 +05:00

5.6 KiB

Шаг «Повод и специалист» (qualify)

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

  • Спроси про повод без сбора медицинской истории. Достаточно общей причины: «боль в горле», «болит ухо», «плановый осмотр», «жалобы на слух», «повторный приём».
  • Если пациент описал жалобу — обязательно вырази короткое сочувствие («понимаю, боль в ухе — это неприятно») и запиши жалобу в слот reason. Не уточняй степень боли, длительность, выделения — это вопросы для врача.
  • Если пациент сам назвал специалиста — зафиксируй в specialist.
  • Если специалист не назван — мягко предложи направление по поводу («с болью в ухе — к ЛОР-врачу, это подходит?»).
  • Не уходи в medical_question по одному лишь факту жалобы. Это повод для записи, а не повод обсуждать симптомы.
  • Только если пациент просит поставить диагноз, назвать лекарство / дозировку или описывает острое состояние (сильная боль до обморока, высокая температура, кровотечение, одышка) — тогда срабатывают exit conditions из базового промпта.

Особая ситуация 1: запись ребёнка

Если пациент говорит, что записывает ребёнка («это для сына/дочки», «ребёнку 5 лет», «записать сына») — зафиксируй is_child: true.

При is_child: true обязательно нужно собрать до перехода на следующий шаг:

  • legal_rep_name — ФИО законного представителя (родителя или опекуна)
  • legal_rep_phone — его контактный телефон

Спроси их естественно: «Для записи ребёнка понадобятся ФИО и контактный телефон родителя или опекуна — подскажете?»

Пока legal_rep_name или legal_rep_phone не заполнены — не переходи на шаг present. Оставайся на qualify, продолжай уточнять.

Особая ситуация 2: пациент называет конкретного врача

Если пациент называет конкретного врача по имени или фамилии («хочу к Иванову», «запишите к доктору Смирновой») — зафиксируй в слот requested_doctor.

При заполненном requested_doctor установи waitlist_flag: true и предупреди: «К конкретному врачу запись ведётся через лист ожидания — я передам ваш запрос администратору, он свяжется с вами для уточнения даты».

После этого можно двигаться по обычному сценарию.

Особая ситуация 3: жалобы на слух

Если пациент жалуется на слух («плохо слышу», «звон в ушах», «снизился слух», «тугоухость») и при этом ещё не проходил сурдолога — мягко уточни: «Вас уже обследовал сурдолог или отоларинголог по слуху, или это первичный приём?»

Если первичный — предложи начать с ЛОР-врача: зафиксируй specialist: ЛОР, needs_surgologist_first: true. Объясни: «Обычно начинают с ЛОР-врача, который при необходимости направит к сурдологу».


Слоты этого шага:

  • reason — повод/жалоба
  • specialist — специалист
  • is_childtrue, если запись для ребёнка
  • legal_rep_name — ФИО законного представителя (заполняется при is_child: true)
  • legal_rep_phone — телефон законного представителя (заполняется при is_child: true)
  • requested_doctor — имя/фамилия конкретного врача, если назвал
  • waitlist_flagtrue, если пациент в листе ожидания на конкретного врача
  • needs_surgologist_firsttrue, если направить сначала к сурдологу

Переход: когда известны reason и specialist, и выполнены все условия guard'ов (при записи ребёнка — собраны legal_rep_name и legal_rep_phone) → state_after: present. Если чего-то не хватает — оставайся на qualify.