Skip to content

Удобство консоли для психологов и врачей: формулировки, карточка, результаты, сигналы риска, расписание, каталог - #229

Merged
4booser merged 84 commits into
mainfrom
ux-clinician
Oct 27, 2026

Conversation

@4booser

@4booser 4booser commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Проход удобства консоли для психологов и врачей. Перед правками консоль была пройдена глазами специалиста на ширине ноутбука 1280×800, на украинском и русском: около 40 экранов и основные диалоги. Ниже собрано всё, что было неудобно, неточно или звучало непрофессионально, и что с этим сделано.

Что меняется для специалиста

«Сьогодні»

  • Экран называется так же, как пункт рельсы. Вкладки: «Зведення / Прийом / Запрошення».
  • Фиолетовая «Створити запрошення» осталась только на вкладке «Запрошення».
  • Счёт отделения («Проходження за останній час», «Методики та збір») по умолчанию включён у заведующего и выше. Без права analytics.read виджетов аналитики нет совсем. Раньше зведення в таком случае гасло ошибкой 403.
  • При малой базе рост показывается числом («на 152 більше»), а не «+1900 %».
  • Счёт дня один и тот же в шапке, на виджете и в конце таймлайна: «4 сесії: 1 проведено, 1 без відмітки явки, 1 триває, 1 попереду».
  • Под именем сотрудника без должности стоит «Співробітник відділення», а не «Адміністратор групи».
  • Запрошення: «Набір» по-украински, «1 людина», короткие подсказки.
  • Обліковий запис: «Email (логін)». В списке разделов меню остались только доступные человеку разделы.

Карточка пациента

  • Действия дня в шапке подписаны на 1280: «Написати», «Нотатка», «Заключення», «Записати на прийом», «Призначити методику».
  • «Призначити методику» открывает ящик:
    • поиск по названию и коду;
    • срок и комментарий для пациента;
    • переключатель «Методика / Набір»;
    • пометка «вже призначено до …».
  • Таблица «Методики» читается на 1280. Методика из многих шкал занимает одну строку, остальные шкалы раскрываются.
  • Вкладка «Заміри» вместо «Тести». Служебной «Статистики» с кодами в ней больше нет.
  • Графики:
    • без абзацев-подсказок под каждым;
    • «Методики разом» рисуются линией;
    • ось доходит до верха шкалы.
  • В меню «…»: «Закріпити за собою / Зняти закріплення» вместо «Підписатись».
  • Вкладки «Графіки» и «Події» больше не тёзки «Динаміки» и «Хронології» клинической карты.
  • Реестр:
    • «не записано» без янтаря;
    • сохранённые «Відбори»;
    • колонки на 1280 не режутся.
  • Исправлена ошибка: «Подій за тиждень» обнулял недели до перевода часов.

Результат прохождения и заключение

  • «Результат» стоит над ответами. Длинная лестница смуг свёрнута до той, в которую попал результат.
  • Протокол и заключение открываются в разделе «Пацієнти», без колонки подразделов (это ещё 232 px).
  • Формулировки: «Хід заповнення», «Завершено», безличные формы вместо мужского рода.
  • Лист заключения:
    • замок подписи одной строкой;
    • «Призначити набір методик»;
    • пустые панели скрыты.
  • «Провести методику»: пациент выбирается в одном поле с поиском, выбранный показан плашкой с «Змінити».

Сигналы риска, расписание, приём

  • «Відповідальний», «Взяти в роботу» (клавиша T). Строки «норму розбору не задано» больше нет.
  • Сроки в очереди словами: «останній сигнал 9 дн. тому», «відкрито 27 дн. тому».
  • Подпись сигнала показывается на языке читателя (lib/alertLabels.ts). Русская консоль больше не показывает украинские подписи.
  • Хронология случая короткими строками.
  • Расписание:
    • «Записати пацієнта» — главная кнопка; запись открывается и щелчком по свободному окну;
    • конструктор недели доступен только в правке.
  • Экран приёма:
    • у пришедшего пациента нет «Не прийшов»;
    • «Шаблони й формулювання», «Відкликати згоду»;
    • печать карты в «…».
  • Явка без рода: «Явка / Неявка», «явку відмічено». Направления: «Показано 3 з 3».

Каталог методик и наборы

  • Пометки «ключі не звірено» и «права не з’ясовано» видны только суперадмину. Остальные видят нейтральные строки в паспорте методики.
  • Каталог:
    • 50 методик на странице, выбор запоминается в профиле;
    • порядок по названию на языке экрана (?sort=title, правила ICU);
    • колонка группы появляется, только когда различает строки.
  • Описания 64 методик каталога и СР-45 переписаны для обследуемого: что и за какой срок спрашивают.
    • Происхождение текста и порогов перенесено в «Джерело» паспорта.
    • «Джерело» видят только сотрудники; из ответов пациенту поле убрано.
  • «Огляд» методики:
    • «Де переривають заповнення», «Завершеність», «перервано»;
    • пустые графики заменены строкой;
    • тексты сводки на языке читателя.
  • Набори: имена и коды целиком, «прострочено 3 дн.».

Терминология и прочие экраны

  • Термины:
    • «тест» → «методика», «батарея» → «набір», «здано» → «завершено»;
    • «доходимість» → «завершеність», «покинуто» → «перервано»;
    • без мужского рода о пациенте;
    • «Відбір» для сохранённых отборов везде;
    • «випадки ризику» там, где считаются случаи.
  • Кабинет пациента сохраняет «тест». Термины конструктора «Конкретний / Комплексний тест» не тронуты.
  • В аналитике и статистике шкалы показаны названиями вместо кодов: «Знижений настрій ≥ 10» вместо «mood ≥ 10».
  • Листування: открытый по ссылке разговор виден в списке. Вместо «без запису» показана дата ближайшего приёма.
  • Пошук, конструктор, группы пациентов и розсилки:
    • внутренности сервера в текстах больше не упоминаются;
    • разговорные пояснения убраны.
  • Исправлена ошибка: «Якість даних» в техпанели падала ошибкой 500 на методике с названием без языков.

Что произойдёт при выкатке

  • Новая редакция каталога. Описание входит в отпечаток редакции. Поэтому установщик выпустит новую версию с пометкой «Редакція каталогу» у каждой методики каталога, которую учреждение не правило.
    • Ключи, шкалы и смуги не меняются, динамика остаётся сравнимой.
    • Методики, последнюю версию которых выпустило учреждение, не трогаются.
    • source_note заполняется без новой версии.
  • 18 методик на проде с прежними описаниями. У них после прошлой выкатки остались старые описание и инструкция. Установщик считает это правкой учреждения и оставит их и теперь. Чтобы пациент видел новые описания, после выкатки нужен catalog-force по этим ключам. Решение за владельцем.
  • API.
    • GET /api/surveys?sort=title. Без параметра порядок прежний.
    • PUT /api/auth/me/workspace принимает catalogPer.
    • Подписи сигналов и аналитика методики отдаются на языке запроса.
    • sourceNote не уходит обследуемому.
  • Эталоны. Визуальные эталоны и записанные ответы API для visual.e2e.ts переписаны заново.

Проверки

Всё прогнано локально на объединённой ветке.

Проверка Результат
bun run typecheck api, mobile, web: чисто
bun run lint чисто
web bun test 2091 прошли
shared bun test 249 прошли
mobile bun test 381 прошли
API bun test 3388 прошли
API test:app-role 1282 прошли
e2e, все спеки, кроме визуальной 148 прошли, 1 пропущен самим тестом
visual.e2e.ts ответы API записаны заново, эталоны darwin и linux пересняты

Слияние шести участков дало две стыковки, обе исправлены отдельными коммитами:

  • «Якість даних» падала на названии методики без языков;
  • в реестре длинная подпись случаев выталкивала колонку «Наступний прийом» за край.

Добавлены тесты:

  • источник для персонала не уходит обследуемому;
  • название без языков в «Якості даних»;
  • счёт дня с неотмеченной явкой;
  • слово «перервано» в проверке «одна форма слова».

Вопросы владельцу

  1. СР-45. Название «Схильність до суїцидальних реакцій» пациент видит на первом экране. Описание переписано, а название оставлено: это решение за вами.
  2. Версии каталога. Нужны ли новые версии из-за одного текста? Если нет, описание и инструкцию нужно исключить из отпечатка редакции.
  3. catalog-force. Запускать ли его для 18 методик после выкатки?
  4. Названия наборов одноязычные. Чтобы сделать их двуязычными, нужна миграция batteries.title и правки API, кабинета и мобилки.
  5. «Джерело» написано только по-украински, как и поле source каталога.
  6. Панель «Призначено» в карточке показывает только наборы. Чтобы там появлялись и методики, нужно поле открытых выдач в GET /patients/:id/card.
  7. Баллы в протоколе. Переключатель попыток показывает сырой балл, а «Результат» — нормированный. Сервер отдаёт для попыток только сырой.
  8. Макет f36. Пункт «Надіслати поштою» и выключенные кнопки форматирования пока не работают. Убрать их, пока функций нет?
  9. Вид приёма (первичный или повторный) при записи с расписания ставит сервер по истории пациента. Нужен ли выбор?
  10. Названия записей. «Нотатки» в карточке и «Записи прийому» в клинической карте — одни и те же записи. Свести к одному названию?
  11. Шкалы-доли (СР-45). График курса показывает «0,34», таблицы — «34 %».
  12. Наборы и заполнение. Шаг «заповнює фахівець» открывает заполнение без выбранного пациента. Чтобы подставлять пациента, нужен поиск пациента по id в API.
  13. Листування. Закрытый разговор или разговор за пределами первых 200 открывается по ссылке без поля ответа: API разговора не отдаёт patientId.
  14. Демо-посев. У демо-скрининга верх шкалы 22, а смуги заканчиваются на 21.

…» с подсказкой T, без «норму розбору не задано»

Строка «Відповідальний» называет взявшего (или «Ви», «не призначено») один
раз — в шапке панели разбора её больше нет. Нормы у методики нет — таймер
показывает только прошедшее время, и в ящике разбора тоже. Пояснение «Розбирати
одну людину вдвох не потрібно» убрано; «взяв: …» (род) — «відповідальний: …».
…ал 9 дн. тому», «відкрито 27 дн. тому»

Пилюля «сигнал 9 дн.» и голое «27 дн» рядом не говорили, что есть что. Пилюля
теперь считает от последнего сигнала, справа — с какого времени человек ждёт
(у разобранного — «розібрано за …»). Срок нормы по-прежнему в строке
«Розібрати до …». Дни — «дн.» с точкой, как в таймере (dur.day и dur.hour
больше не нужны).
…йом / Запрошення»

Пункт рельсы назывался «Сьогодні», экран — «Зведення», а его вкладки — «Огляд / Сьогодні / Запрошення»:
нажав «Сьогодні», человек попадал на «Огляд» рядом с другой, невыбранной вкладкой «Сьогодні». Теперь
заголовок совпадает с рельсой, первая вкладка — «Зведення» (как «Налаштувати зведення» и стартовый
экран в настройках), день приёма — «Прийом»: у него листание дней, и «Сьогодні» на завтрашнем дне было
бы неправдой. Палитра команд называет вкладки так же, находит их и по слову «Сьогодні», а «Зведення»
ведёт на зведення и тогда, когда на «/» стоит другой стартовый экран (overviewHref переехал в shell/nav).
Смоуки ждут вкладку «Приём» вместо «Сегодня».
…ля процентом, названия в две строки

«0.2», «42.5» печатались как пришли с сервера; теперь тем же shownValue, что в
карточке: «20 %», «42,5». Названия методик и шкал в колонке 300 — в две строки
вместо обрезка «Поведінкова регуля…».
…ько на вкладке «Запрошення»

Кнопка стояла главной на обзоре смены и читалась главным делом дня. Запрошення — в один щелчок по
вкладке рядом, где форма уже открыта; команда палитры «Створити запрошення» теперь ведёт прямо к форме
(?new=1 ставит в неё фокус), а не к списку.
…ке, а не о каталоге методик

Рельса подсвечивала «Методики», колонка — «Каталог» и пункт «Інструменти
екрана: Чернетка заключення», который вёл на тот же лист вторым адресом.
Теперь адреса прохождения и заключения относятся к «Пацієнтам» и идут без
колонки подразделов — шапкой пациента во всю ширину, как клиническая карта.
К методике ведёт её название в панели «Проходження» и в шапке листа.
Прежний адрес /responses/:id/conclusion/draft — перенаправление на лист.
…ько суперадмину, врачу — фактами паспорта

Янтарь «ключі не звірено» на каждой из 64 строк, пилюли «Ключі не звірено … +68» и «Права на текст … +68» над таблицей и те же пометки в шапке методики — дела учреждения, которые решает суперадмин (PATCH /rights — только ему). Ему всё остаётся как было. Остальным: в строках и шапке их нет, колонка «Версія і ключі» становится «Версія» (снятая методика по-прежнему говорит, когда снята), а в «Про методику» и «Коротко про методику» — две нейтральные строки: «Права: не з’ясовано» и «Ключ звірено з оригіналом: ні / так, 12.09».
… только у другого дня

Полоса приложения уже показывает «Пн, 26 жовтня, 12:19», а шапка ниже повторяла «пн, 26 жовтня». На
зведенні дата убрана совсем (оно всегда про сегодня), на «Прийом» — показывается, только когда листанием
открыт другой день: тогда число — главное, что о дне нужно знать. Смоук перевода проверяет склонение
месяца по часам на полосе приложения.
… две строки, дата заголовком дня

В колонке 300 каждое событие «Сигнал: СР-45, пункт 40: ствердна відповідь…»
ложилось в четыре-пять строк. Теперь «13:48 п. 40 Одного разу наважувався…»,
не длиннее двух строк. Номера и тексты пунктов — из основания случая, которое
панель «Підстава» уже читает под тем же именем: второго запроса нет.
…йна: «1 проведено, 1 триває, 2 попереду»

Шапка дня считала пришедшего и неотмеченного «попереду», віджет и конец дня — только пришедшего, а
неотмеченного не считали вовсе: над «1 проведено, 2 попереду» стояло «4 сесії: 1 проведено, 3 попереду».
Теперь счёт один (today/model.ts, dayTally) и по состоянию записи, а не по часам: идущий приём — «триває»,
время прошло без отметки — по-прежнему «попереду», неявка — своей частью; нулевые части не называются,
слова — формой по числу, и части всегда складываются в число сессий. Проверка счёта — в todayModel.test.ts.
…ёрнута до попавшей

Результат стоял под всеми пунктами — у СР-45 это 2500 px прокрутки на 1280,
а протокол открывают ради него. Теперь «Результат» вверху колонки, ответы
под ним. Лестница длиннее трёх полос свёрнута до смысла и рекомендации
попавшей полосы, остальные — под «Усі смуги: N»; профиль многошкальных
методик (Адаптивність-200, Міні-мульт) — как был. Сдвиг от прежнего замера и
от старта больше не повторяется в панели «Проходження»: его показывает
результат, а у многошкальных строка не называла шкалу.
…показывает украинскую подпись

risk_alerts.label — снимок на языке прохождения. Теперь при чтении он
сопоставляется с двуязычными источниками той версии методики, что человек
видел (подпись риска варианта, «пункт — вариант», порог, «шкала: полоса»), и
отдаётся на языке запроса; не совпал — снимок как есть (lib/alertLabels.ts,
тот же приём, что у слова полосы). Очередь случаев, основание (ящик разбора),
контекст прохождения (баннер заключения), сводка, хронология, список тревог и
«Що змінилося» на экране приёма — там же названия методик были зашиты
украинскими. Тест под ролью приложения: alertLabelLang.test.ts.
…о названию на языке экрана, колонка группы — только когда различает строки

Семьдесят методик отделения листались семью страницами по десять в порядке «новые сверху» — то есть в том, в каком их поставил установщик одной секундой. Теперь: 50 строк по умолчанию; выбранное в селекте сохраняется в профиле (workspace.catalogPer, PUT /me/workspace — только ступени 10/20/50/100) и действует на любой машине, число в адресе (старая закладка) главнее. Сервер научился ?sort=title — по названию на языке запроса с запасными языками как у t() и по правилам языка (ICU uk-x-icu / ru-x-icu): в байтовом порядке І, Ї, Є, Ґ уезжали за Я; без параметра порядок прежний. Колонка «Група і папка» больше не печатает «Каталог методик / у корені групи» на каждой строке: группа — когда видно несколько групп и фильтра нет, папка — только у строк не из открытой папки; различать нечего — колонки нет. Ключ mc.inGroupRoot удалён. Проверки: catalogFilters (порядок uk/ru, страницы, строка без языков, отказ на мусор), platform (catalogPer), catalogue.test (cataloguePer, sort).
…справи», подвал случаев без канцелярита, название методики в строке очереди один раз

«не здав методик: N» и «Не здано призначених: N» → «не заповнено методик: N», «Не заповнено призначених
методик: N»; подсказка под ней — одной строкой. «Між сесіями: 2 швидкі дії, кожна відкривається тут же» →
«2 справи». Подвал віджета случаев — «Відкрито 12, термінових 12. Прострочено 0. Найдовше очікування —
27 дн.». Строка «Показано 7 віджетів з 7. Стартовий екран — …. Змінити» под зведенням убрана: она
повторяла «Налаштувати зведення» из шапки. В строке очереди название методики стояло трижды (пилюля,
«…: строк вийшов, 3 дн. прострочення», «Нагадати про …»): теперь оно только в пилюле, «чому тут» —
«Строк вийшов 3 дн. тому», действие — «Нагадати пацієнтові» / «Повторити замір»; поиск очереди по
названию методики работает по пилюле. Неиспользуемые ключи удалены.
…дміністратор групи»

Полоса приложения и «Обліковий запис» подписывали так каждого психолога без заведённой посады: подпись
обещала права, которых у него нет. Посада, если она заведена, по-прежнему стоит первой.
…ючателе попыток названо

«Як відповідав» стояло и над протоколом женщины — теперь «Хід заповнення»;
«Здано» и «не здано: після здачі» — «Завершено» и «не завершено: після
завершення»; «Змінював відповідь», «сам», «заповнив фахівець», «розібрав»,
«Підписав» — безличными формами. Голое «12» в переключателе попыток рядом с
«частка 0,34» результата — сырой балл главной шкалы: так говорит подсказка
пилюли и скрытая подпись для диктора, переключатель шире не стал. Пояснение
под «Ходом заповнення» на графиках — одной строкой; «полос» в украинском — «смуг».
…«проходження/завершення», «доходимість» → «завершеність», «покинуто» → «перервано» — в аналитике, статистике, конструкторе, группах пациентов и выдачах

Карта терминов без ключей, которые ведут другие разделы. Сверено в контексте:
«запропонує пацієнтові» без второго «методику» — пунктир на месте не
выбранной методики говорит это сам; подписи под заголовками «Моделі
аналітики» и «Нова модель» короче прежних, и кнопки шапки снова в одной
строке на 1280; «надсилання» → «відправлення», как во всём словаре
(одна форма слова); статус «Перервано» и вкладка «Перервані». Поиск в
перечне моделей 200 вместо 260 — русская полоса фильтров с «Методика»
иначе переносила порядок. Подписи в e2e и проверках — по новым словам.
…о відкритого» убрано

На 13-дюймовом ноутбуке (1280 со списком) пять действий шапки были значками
без слов. Теперь они стоят своей строкой под именем, справа: «Написати»,
«Нотатка», «Заключення», «Записати на прийом», «Призначити методику» и «…»;
уже 750 px у первых трёх остаётся значок с подсказкой и клавишей. Строка
действий у любого человека на одном месте, пилюли открытого — под ней и
переносятся, а не уезжают за край. ФИО больше не обрезается; при черновике
на кнопке точка. Кнопка назначения — только с правом assignments.manage
(сервер отказал бы). Пустая строка «Нічого відкритого» не рисуется.
…то окна с селектом

Окно с выпадающим списком из семи десятков методик и полем даты заменено
ящиком components/AssignDrawer (вид «що призначити»): поиск по названию и
коду, срок кнопками, комментарий для пациента, адресат — этот человек; ящик
встаёт под полосу с ним. В том же ящике — «Методика / Набір»: набор
назначается тем же маршрутом, что на экране наборов (POST /api/batteries/:id/
assign), срок у него — «пройти до», по умолчанию неделя; после назначения
перечитывается только хронология (назначение — её событие и пилюля шапки).
Новые возможности ящика включаются экраном (comment, sets) — у групп всё как
было. Окно AssignSurveyDialog больше никто не открывает — удалено.
Словарь: «Методика», «Методику призначено» вместо «Тест», «Тест призначено».
…ь»; рост от малой базы — числом, а не «на 1900 %»

«Проходження за останній час» и «Методики та збір» — аналитика отделения, а не день специалиста. У
профиля, где зведення не настраивали, они выключены, пока человек не смотрит на отделение целиком:
заведующий и выше по лестнице (ступень 2+, та же, что открывает «Права») с правом analytics.read, или
суперадмин. Одного права analytics.read мало — встроенная роль «психолог» несёт его вместе со всей
клиникой. Сохранённые настройки главнее умолчаний, «Випадки ризику» по-прежнему не выключаются, «Повернути
як було» возвращает умолчания своей роли. Без права analytics.read віджетов аналитики нет вовсе — ни на
экране, ни в «Налаштувати зведення»: раньше /api/analytics/overview отвечал специалисту отказом и гасил
всё зведення. Сводка аналитики грузится своей загрузкой и только когда её віджет на экране.
«Доходимість» → «Завершеність» («завершили з тих, хто почав»); изменение к прошлому окну при базе меньше
20 — числом («на 152 більше»), а не процентом.
…оловок окна без «формою не заводять», шаг «що отримає пацієнт» без «закріплений»

В украинской форме стоял русский «Набор»; при числе входов — «людей» при любом числе (теперь формой по
числу). Подзаголовок «Запросити пацієнта» — «Пацієнт реєструється за посиланням сам і одразу отримує
призначення.» Выноска «Для групового обстеження…» в обеих формах убрана: о группе говорит подсказка у
числа входов («для групи — збільште»), о подразделении — подсказка у подразделения («замість уведеного
пацієнтом»). Последний шаг «що отримає пацієнт» — «З’являється у вашому реєстрі пацієнтів» или «…, лікар —
{ім’я}» вместо «закріплений: За мною».
… относится к выводу

Заметка о замке перечисляла все пять сигналов сплошным абзацем с таймером,
а ниже те же сигналы шли списком: теперь «Підписати можна після розбору
сигналів ризику цього проходження: 5» и «Розібрати» в одной строке.
«Додати тест: призначити батарею» — «Призначити набір методик»; названия
методик в «Результатах для заключення» — в две строки, а не обрезком.
«Моделі аналітики» — только когда к методике есть модель; «Пропозиції
правил» (и «Що далі за правилами» на протоколе) и «Історія» — только когда
им есть что показать. Ушли постоянная заметка «пошту не підключено» и
приписка «з розбору сигналу»; «правка створить нову версію» — только при
подписанной версии; подсказка выключенного форматирования — без «сервер оголосить».
…но»; пустое — строкой, а не графиком нулей; тексты сводки — на языке читателя

Слова: «Де губляться респонденти» → «Де переривають заповнення», «Ніхто не кинув тест на півдорозі» → «Перерваних проходжень немає», «Доходимість» → «Завершеність», «покинуто/Покинуті» → «перервано/Перервані», абзац про «середнє трьох людей» → «Середнє не показується для тижнів, де менше 5 проходжень.»; те же слова во вкладках «Час», «Якість», «Проходження» (ant.*, dq.completion*), «до здачі» → «до завершення». Ru — так же.

Пустые данные: без проходжень — одна строка «Проходжень ще немає» вместо четырнадцати столбцов «0» и строки нулей; медиана «0» на полосе «Мінімальна тривога» и «Завершеність 0 %, перервано 0 з 0» без данных не печатаются; за 14 недель пусто — «За 14 тижнів проходжень немає».

Язык: GET /api/analytics/surveys/:id читал методику по-украински при любом языке — русская консоль видела «Нижче середнього» в распределении рядом с русской лестницей полос, и текущая полоса не подсвечивалась. Теперь getSurvey и bandLabelsIn — на языке запроса (проверка в bandLabelLang.test.ts). Переключатель шкал — названиями, а не кодами ключа («DENIAL», «anxiety»), больше трёх шкал — списком; у панели полос — название шкалы вместо кода. Границы полос — с запятой и в одну строку («0,24–0,38»), и в «Коротко про методику»; медиана с полосой больше не вылезает за панель на 1280.
…о разделы своей рельсы

«Email, він же логін» → «Email (логін)». Список разделов считался от полного набора суперадмина, и
психологу предлагали убрать «Консоль», «Техпанель», «Права», «Адміністратори» — разделы, которых у него нет.
Теперь строки — разделы его рельсы с тем же доступом и составом, что у оболочки (navAccess + railEntries),
названные как на рельсе («Сьогодні», а не «Зведення»); выключатель убирает раздел целиком — все его пункты
разом, как и решает рельса. «Аналітика» и «Адмін» скрытия не знают и в списке не стоят, как и прежде.
Абзац «Прибрані розділи не зникають…» убран: подзаголовок панели говорит то же.
…нь одним рядком» — только в правке недели

«Записати пацієнта» в шапке и нажатие на свободное окно недели открывают ящик
записи: поиск человека по зоне (usePatientSearch), время (выбранное окно или
свободные окна по дням), формат и повод; запись — тот же POST
/api/clinic/appointments, что в карточке, с правом вести приёмы (без права ни
кнопки, ни окон). Вид приёма сервер определяет по истории сам. «Змінити
тиждень» — второстепенной кнопкой; «Додати виняток» — из своей панели.

«Скласти тиждень одним рядком» больше не стоит раскрытым под чтением недели:
он в ящике правки и заполняет правку, сохраняет «Зберегти тиждень» (окно
«Скласти тиждень заново?» больше не нужно). В блоках приёма — фамилия и
инициалы («Гончаренко Т.І.»): полное имя обрезалось до «Гончаренко …».
…огих шкал — одной строкой

На 1280 со списком (таблица 500 px) имя получало 110 px и обрезалось до
«Поведінк…», подстрочник «краще ↑ БО…» был нечитаем, заголовок «Зміна від
старту» срезан. Теперь имя — гибкая колонка в две строки, числа — узкие
колонки постоянной ширины, заголовок изменения переносится, длинное число
(«39,8») — на ступень мельче, слово надёжности и «поріг 19 в. п.» в узкой
колонке переносятся, а не уходят за край (ChangeCell).

Шкалы одной методики идут группой под её названием, а не с обрезком
названия под каждой. Методика больше чем из трёх шкал встаёт одной строкой
(самая тяжёлая шкала, прочие — в раскрытии «Інші шкали»): прежде восемь шкал
«Адаптивності-200» занимали все строки, и СР-45 того же дня в таблицу не
попадал. Строк — до восьми. Подпись под таблицей — одной фразой.
…ій ≥ 10» вместо «mood ≥ 10» в перечне моделей, «Тривога за смугами» без «шкала anxiety», дрейф, баллы прохождений, динамика пациента, сравнение версий, качество данных, строки отчёта статистики

Код остаётся там, где его вписывают: условие «будь-яка методика, шкала …».
В выборе шкалы формы модели — название (код — только при совпавших
названиях); линейка порога называет шкалу, а не методику. Перечень
моделей дочитывает методики своих условий тем же ключом, что форма, и
называет методику один раз над условиями: пилюля «методика + шкала» не
помещалась в колонку, и таблица уезжала вбок на 1280 — теперь не уезжает
ни по-украински, ни по-русски. Ключ ant.scaleCode больше не нужен.
…лам: без «устигніть», «що з людиною зараз», «і це не формальність», «можна краще»

Подготовка: что откроет «Показати підготовку» — подсказкой на кнопке, под ней одна строка про журнал
доступа; «На цей день сесій попереду немає. Виберіть сесію…, щоб побачити, що з людиною зараз» → «Сесій
попереду немає — виберіть сесію в списку.»; «Перша сесія тут / Людина ще не була на прийомі…» → «Перший
прийом у відділенні / Порівнювати поки немає з чим.»; перетин — «Перенесіть один із них або скоротіть
сесію». «Устигніть розібрати сигнал до …» → «Розберіть сигнал до …». Подсказка клавиши M — «відповісти на
лист», без одного имени пациента. «Випадки ризику» в «Налаштувати зведення»: «видно завжди» вместо
неверного «поки є відкриті». Черга: подсказка пустого экрана — одной фразой, «решта підтягнеться» →
«решта з’явиться, коли черга зменшиться». Обліковий запис: «Захист: частковий / повний» вместо «можна краще /
добрий», «Видалення облікового запису» — одним предложением без «і це не формальність». На шкале дня час
под плашкой «зараз» больше не печатается под ней (порог шире: русская плашка длиннее украинской).
… строке, «Статистика» убрана

Панель вкладки называлась «Тести», колонка — «Результат тесту», а
«Статистика» повторяла дату и печатала служебные коды шкал с долей от
максимума («26 жовт., anxiety 68,2%, mood 58,3%») без слова, что это за
процент. Теперь: «Заміри», «Результат» — каждая шкала своей строкой
(название, балл, полоса), «Протокол недостовірний» — при результате.
«Пройдених тестів ще немає» → «Пройдених методик ще немає»; ключ top.tests
больше никто не зовёт — удалён.
…аключения без лишнего, заполнение за пациента одним полем с поиском
… сигнала на языке читателя; запись с расписания; экран приёма; «Явка» / «Неявка» без рода; реестр направлений
… в строке убрано, ближайший приём — датой с календарём; розсилки и запись без «хто ще мовчить», «чернетки на сервері» и «v3»

Ссылки в листування («У листування» из карточки, «Відкрити листування»
после письма из реестра) ведут в /messages/:id — разговор открывался
верно, но при длинном списке его строка оставалась где-то ниже: теперь
колонка прокручивается к ней при открытии и первой загрузке списка.
«Відповісти» в «Сьогодні» и черге открывает ящик с тем же разговором —
проверено на стенде. В строке разговора «без запису» читалось как «без
записи разговора»; приёма нет — пусто, есть — «пт 31.10» со значком и
подписью для диктора. Розсилки: «хто ще не відповів»; перечитывание —
«збережена чернетка»; «План безпеки, версія 3».
… и спор с подсказкой о формах слова; пусто — «Спробуйте інше або споріднене слово», до поиска — без «знайдемо»
…ереносится, «краще ↓» встаёт под ним, а не висит справа от трёх строк
…ке (у методики — что она меряет), а не то же название второй раз
… случаев риска («Відповідального не призначено», «норма розбору»), чтобы одна и та же вещь называлась одинаково
…ыбранной методики, до нажатия «Призначити»

Всех открытых выдач человека приложение одним запросом не отдаёт, поэтому
пометку «вже призначено» в списке карточка поставить не могла. Теперь ящик
спрашивает прежнюю выдачу выбранной методики (тем же GET
/api/access/surveys/:id/grants, что реестр при «Призначити» выбранным) и
говорит у строки «вже призначено» и под списком «Вже призначено до 02.11.
Нове призначення замінить строк і коментар.»; пройденная прежняя выдача — не
помеха. Опция ящика existingFor — у групп всё как было. Строка над кнопкой
короче («Пацієнт побачить у застосунку») — рядом встаёт «чернетку збережено».
…о» — тем же словом, что «фахівця не закріплено» в клинической карте и «не закріплено» в реестре
…и, что у них: «Проходжень цього пацієнта … немає» вместо «Пацієнт не проходив» (мужской род о пациенте), корень каталога «Каталог», «початих», короткая подпись длительности; черновик назначения — «призначення»

Карта терминов и соседние участки правили одни и те же записи. Где их
формулировка не хуже, она взята дословно — при слиянии строки совпадут,
а не столкнутся. Своими остались три подписи аналитики методик: без
повтора заголовка панели («Скільки людей не дійшло до наступного
пункту»), подписи «тло — сходи тяжкості» и «Оберіть пацієнта».
… дн.»

Под янтарной датой в колонке «Строк» стояло «−3 дн.» без слова — теперь как на «Сьогодні» и в черзі (dayA.overdueDays): «прострочено 3 дн.» / «просрочено 3 дн.». Колонка узкая, строка переносится; неразрывный пробел держит «3 дн.» вместе. Проверено на 1280 по-украински и по-русски.
…, 50 на странице по названию; описания методик для обследуемого, происхождение — в «Джерело»; набори
…ие методики или набора ящиком, читаемая таблица методик, «Заміри», графики без подсказок-абзацев; клиническая карта и реестр
…и» вылезало за край рядом с подсказками клавиш, а число и так стоит в шапке и на вкладках отбора
… JSON; методика до двуязычия роняла весь маршрут пятисоткой
…ерервано»), шкалы названиями вместо кодов в аналитике и статистике; тексты аналитики, статистики, конструктора, групп, листування и пошуку

# Conflicts:
#	packages/shared/src/uiStrings.ts
…учаи риска — «випадки», а не «сигнали», одна панель правил — «Що далі за правилами», просрочка — «прострочено N дн.», техпанель — без «здано»
…ет час, «Изменение» в пунктах карточки и коды каталога не режутся, в реестре — «3 случая» вместо длинной подписи, заметка об отчёте на листе заключения — один раз, «Первый приём в отделении» и на экране приёма
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-26T14:09:42.021894Z a88a252 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a88a252156

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +120 to +121
const fold = clinical.length > FOLD;
const scales = fold ? [heaviest(clinical)] : clinical;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restrict scale folding to the overview table

For instruments with more than three clinical scales, this now removes all but the heaviest scale from the patient card's “Graphs” tab as well. PatientCard.tsx supplies these rows to DynamicsTab in TabViews.tsx, which renders only r.scale and never consumes r.folded. For example, an eight-scale instrument now has only one chart there, and the chart shown can change when another scale becomes more severe. Keep the complete scale rows for the graphs tab and apply this reduction only to the overview table.

Useful? React with 👍 / 👎.

Comment on lines +166 to +169
if (e.key === "Enter" && listed) {
e.preventDefault();
const p = items[at];
if (p) onPick(p);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Prevent Enter from selecting results for an earlier search

When a clinician changes the patient search and presses Enter before the new results arrive, this selects the highlighted patient from the previous search. usePatientSearch debounces the query for 300 ms, and useResource retains previous results during fetching, so listed remains true and items[at] can belong to a different query. This newly added keyboard shortcut can therefore associate an examination with the wrong patient. Disable selection or clear the selectable results until they correspond to the current input; the new PatientChooser in schedule/Booking.tsx needs the same guard.

Useful? React with 👍 / 👎.

…осу (заполнение и запись с расписания); «Графіки» карточки — все шкалы методики, свёртка — только в таблице «Методики»
@4booser
4booser merged commit 45e5c2f into main Oct 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant