- Sign-in: centred ЕМИАС card without the sidebar; anonymous entry asks «Депрессия / ПТСР».
- Stage 1 is the same for everyone and follows the fixed order of the MVP questionnaire:
PHQ-2 → trauma filter/TSQ → RUS-AUDIT-S → C-SSRS → context; stage 2 only where stage 1
is positive. Starts without a profile.
- After stage 1 the patient sees a preliminary result (screening, not a diagnosis), stored
with the record; it switches on the diary modules (depression / PTSD).
- Stage 2 diary: morning (sleep, sleep quality, alcohol) and evening (mood, medication,
3 PHQ-9 items in rotation, short PCL-5); C-SSRS since last contact only under risk;
flags on weekly means against the personal norm; scheduled full scales with change
(remission, response, worsening).
- Questionnaire log: GET /me/{token}/results and the «Мои результаты» screen.
- Questionnaires centred without the sidebar and without scale names; «Продолжить позже»
goes home; confirmations are toasts; free-text comments are optional.
- Demo policy config/questionnaire_demo.yaml (INTAKE_DEMO only, not a clinical approval).
ADR-012.
Refs #77
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
253 lines
15 KiB
TypeScript
253 lines
15 KiB
TypeScript
/*
|
||
* All interface texts of the patient app (copy from docs/mock). Dialog content — consent, questions, scales,
|
||
* reminders — comes from the engine (config/texts/) and is NOT duplicated here.
|
||
*/
|
||
export const ru = {
|
||
product: {
|
||
name: "Сопровождение пациента",
|
||
tagline: "между визитами к врачу",
|
||
},
|
||
nav: {
|
||
today: "Сегодня",
|
||
meds: "Лекарства",
|
||
doctor: "Врач",
|
||
profile: "Профиль",
|
||
messages: "Сообщения",
|
||
signIn: "Вход",
|
||
help: "Помощь",
|
||
},
|
||
help: {
|
||
block: "Экстренная помощь",
|
||
title: "Экстренная помощь",
|
||
lead: "Если вам нужна срочная помощь, позвоните сразу.",
|
||
call: "Позвонить",
|
||
close: "Закрыть",
|
||
alwaysNote: "Вы не одни. Помощь доступна круглосуточно.",
|
||
fallbackName: "Единый номер экстренных служб",
|
||
fallbackNote: "",
|
||
},
|
||
common: {
|
||
back: "Назад",
|
||
next: "Далее",
|
||
skip: "Пропустить",
|
||
send: "Отправить",
|
||
retry: "Повторить",
|
||
toToday: "Вернуться на сегодня",
|
||
recommended: "Рекомендуем",
|
||
networkError: "Не удалось подключиться к сервису. Проверьте интернет и повторите.",
|
||
},
|
||
welcome: {
|
||
title: "Вход",
|
||
emias: {
|
||
title: "Войти через ЕМИАС",
|
||
perks: [
|
||
"Назначения врача подгружаются автоматически",
|
||
"Врач видит ответы и получает сигнал при ухудшении",
|
||
"История доступна с любого устройства",
|
||
],
|
||
},
|
||
or: "или",
|
||
anonymous: {
|
||
title: "Войти анонимно",
|
||
text: "Без имени и полиса. Врач не видит ответы, история хранится только на этом устройстве.",
|
||
},
|
||
disclaimer: "Сервис не ставит диагнозы и не назначает лечение — решения принимает врач.",
|
||
},
|
||
emias: {
|
||
title: "Введите код от врача",
|
||
lead: "Это одноразовый код. Он нужен, чтобы безопасно подключить ваши назначения и план наблюдения.",
|
||
demoNotice: "Демонстрационный режим: авторизация в ЕМИАС не выполняется, вход подтверждается кодом от врача.",
|
||
codeLabel: "Код подключения",
|
||
codePlaceholder: "Код из памятки",
|
||
submit: "Продолжить",
|
||
submitting: "Проверяем код…",
|
||
codeError: "Код не подошёл — проверьте написание или попросите врача выдать новый.",
|
||
or: "или",
|
||
demoTitle: "Демо-пациенты",
|
||
demoLead: "Нет кода? Войдите под синтетической учётной записью.",
|
||
demoDay: (day: number) => `${day}-й день терапии`,
|
||
},
|
||
anonymous: {
|
||
title: "Что вы хотите проверить?",
|
||
note: "Анонимно: врач не видит ответы, история хранится только на этом устройстве.",
|
||
focus: {
|
||
depression: { title: "Депрессия", text: "Подавленность, потеря интереса, усталость" },
|
||
ptsd: { title: "ПТСР", text: "Последствия травмы: флешбэки, кошмары, тревога" },
|
||
},
|
||
submitting: "Создаём профиль…",
|
||
},
|
||
today: {
|
||
title: "Сегодня",
|
||
takeMed: "Принять лекарство",
|
||
now: "Сейчас",
|
||
checkin: "Отметка самочувствия",
|
||
checkinHint: "меньше минуты",
|
||
done: "Уже выполнено",
|
||
medTaken: "Лекарство",
|
||
medTakenAt: (time: string) => `принято, ${time}`,
|
||
checkinDone: "Самочувствие отмечено",
|
||
allDoneTitle: "На сегодня всё сделано",
|
||
allDoneNext: (time: string) => `Следующее напоминание о лекарстве — ${time}`,
|
||
allDoneNoMeds: "Следующая отметка самочувствия — завтра",
|
||
viewMeds: "Посмотреть лекарства",
|
||
visit: "Следующий визит к врачу",
|
||
medQuestion: "Вопрос о лекарстве",
|
||
medQuestionHint: "Ответ по официальной инструкции",
|
||
messageDoctor: "Сообщение врачу",
|
||
messageDoctorHint: "Врач ответит в рабочее время",
|
||
week: "Приём на этой неделе",
|
||
weekTaken: (taken: number, total: number) => (total ? `Принято ${taken} из ${total}` : "Отметок пока нет"),
|
||
noDoctor: "Врач не подключён. Подключите ЕМИАС в профиле, чтобы назначения и визиты появились здесь.",
|
||
newMessage: "Новое сообщение",
|
||
open: "Открыть",
|
||
continue: "Продолжить",
|
||
intakeStart: "Первичный опрос",
|
||
intakeStartHint: "15–20 минут, можно прерваться и продолжить позже",
|
||
intakeResume: "Продолжить первичный опрос",
|
||
intakeResumeHint: "Ответы сохранены, можно продолжить",
|
||
intakeReview:
|
||
"Опрос приостановлен: продолжить можно после оценки специалиста, врач уже получил уведомление. Если нужна помощь сейчас — 112.",
|
||
intakeDone: "Первичный опрос пройден",
|
||
diary: "Дневник самочувствия",
|
||
diaryHint: "2–3 минуты: настроение, сон, лекарства",
|
||
diaryPart: { morning: "Дневник — утро", evening: "Дневник — вечер" },
|
||
diaryPartHint: { morning: "3 вопроса: сон и алкоголь", evening: "Настроение, лекарства и модули по результату опроса" },
|
||
results: "Мой результат",
|
||
diaryDone: "Дневник заполнен",
|
||
therapyDay: (day: number) => `День ${day} лечения`,
|
||
effectHint: "Когда ждать эффекта и что важно знать",
|
||
},
|
||
meds: {
|
||
title: "Моя схема приёма",
|
||
lead: "По назначению врача. Отмечайте приём препаратов, чтобы не пропускать.",
|
||
byDoctor: "По назначению врача",
|
||
tablet: "1 приём",
|
||
week: ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
|
||
onlyDoctor: "Схему меняет только врач. Не изменяйте дозировку самостоятельно.",
|
||
empty: "Назначения появятся здесь после входа через ЕМИАС.",
|
||
question: "Вопрос о лекарстве",
|
||
reminderTitle: "Время принять препарат",
|
||
reminderLead: "По назначению врача",
|
||
taken: "Принял(а)",
|
||
skip: "Пропущу",
|
||
sideEffects: "Есть побочные эффекты",
|
||
about: "О препарате",
|
||
reportSideEffect: "Сообщить о побочном эффекте",
|
||
therapyDay: (day: number) => `День лечения: ${day}`,
|
||
card: {
|
||
back: "К схеме приёма",
|
||
prescribed: "Назначено",
|
||
effect: "Когда ждать эффекта",
|
||
effectAt: (when: string) => `Эффект оценивают через ${when}`,
|
||
progress: (day: number) => `Вы принимаете препарат ${day} ${day % 10 === 1 && day % 100 !== 11 ? "день" : [2, 3, 4].includes(day % 10) && ![12, 13, 14].includes(day % 100) ? "дня" : "дней"}`,
|
||
course: "Сколько принимать",
|
||
courseShort: (days: number) => `Обычно не дольше ${Math.round(days / 7)} недель — срок определяет врач`,
|
||
sideEffects: "Что может беспокоить",
|
||
sideEffectsHint:
|
||
"Побочные эффекты часто ослабевают в первые недели. Если они мешают жить, сообщите врачу — он может изменить дозу или подобрать другой препарат. Не меняйте схему сами.",
|
||
sideEffectsNone: "Частые побочные эффекты в клинических рекомендациях не описаны — спросите врача.",
|
||
redFlags: "Когда срочно к врачу",
|
||
important: "Важно",
|
||
withdrawal: "Резкая отмена этого препарата может вызвать неприятные ощущения: головокружение, раздражительность, нарушения сна. Отменяют его постепенно и только с врачом.",
|
||
overdose: "Храните препарат в недоступном для других месте и принимайте строго в назначенной дозе.",
|
||
monitoring: "Врач может назначить обследования",
|
||
instruction: "Как принимать, что делать при пропуске, алкоголь и вождение",
|
||
ask: "Задать вопрос о лекарстве",
|
||
source: (sources: string) => `Источник: ${sources}. Черновик справочника, проверяется врачом-психиатром.`,
|
||
offLabel: "Назначение вне зарегистрированных показаний — так бывает, решение принимает врач.",
|
||
unknown: "Справки по этому препарату пока нет. Уточните у врача или в инструкции к препарату.",
|
||
},
|
||
},
|
||
doctor: {
|
||
title: "Врач",
|
||
visit: "Следующий визит",
|
||
visitNone: "Дата следующего визита пока не назначена",
|
||
attending: "Ваш лечащий врач",
|
||
write: "Написать врачу",
|
||
writeNote: "Обычно врач отвечает в рабочее время. Если срочно — 112.",
|
||
earlier: "Записаться к врачу раньше",
|
||
plan: "Мой план безопасности",
|
||
noDoctor: "Врач не подключён. Подключите ЕМИАС в профиле, чтобы связаться с лечащим врачом.",
|
||
},
|
||
profile: {
|
||
title: "Профиль",
|
||
signInMode: "Способ входа",
|
||
emias: "ЕМИАС",
|
||
anonymous: "Анонимно",
|
||
connectEmias: "Подключить ЕМИАС",
|
||
data: "Мои данные",
|
||
revoke: "Отозвать согласие",
|
||
revokeTitle: "Отозвать согласие?",
|
||
revokeText: "Ваши ответы больше не будут обрабатываться в приложении.",
|
||
revokeConfirm: "Да, отозвать",
|
||
cancel: "Отмена",
|
||
wipe: "Удалить данные с устройства",
|
||
wipeNote: "Для анонимного режима: история на этом устройстве будет удалена.",
|
||
logout: "Выйти",
|
||
messages: "Сообщения",
|
||
result: "Предварительный результат",
|
||
resultNone: "Появится после первичного опроса.",
|
||
history: "История опросов",
|
||
historySub: "Все опросы и дневники с датами и результатами",
|
||
},
|
||
results: {
|
||
title: "Мои результаты",
|
||
conclusion: "Предварительный результат",
|
||
conclusionDay: (d: string) => `Первичный опрос от ${d}`,
|
||
modules: { depression: "Модуль «Депрессия»", veteran: "Модуль «ПТСР»" },
|
||
history: "История опросов",
|
||
empty: "Здесь появятся пройденные опросы.",
|
||
noResult: "Пройдите первичный опрос — после него здесь будет результат.",
|
||
toIntake: "Пройти первичный опрос",
|
||
},
|
||
flow: {
|
||
question: (n: number, total: number) => `Вопрос ${n} из ${total}`,
|
||
period: "За последний месяц",
|
||
textPlaceholder: "Напишите несколько слов",
|
||
sending: "Отправляем…",
|
||
doneTitle: "Готово",
|
||
resultTitle: "Результат",
|
||
sendEmpty: "Отправить без комментария",
|
||
doneLead: "Врач увидит отметку.",
|
||
breathe: "Вдох на 4 — выдох на 6",
|
||
breatheIn: "Вдох",
|
||
breatheOut: "Выдох",
|
||
openPlan: "Открыть мой план безопасности",
|
||
supportTitle: "Вы не одни",
|
||
exit: "К главной",
|
||
planTitle: "Мой план безопасности",
|
||
consentTitle: "Согласие на обработку данных о здоровье",
|
||
sections: {
|
||
safety: "Безопасность",
|
||
mood: "Настроение",
|
||
trauma: "Пережитый опыт",
|
||
alcohol: "Алкоголь",
|
||
about: "О вас",
|
||
diary: "Дневник",
|
||
scale: "Опросник",
|
||
},
|
||
questionN: (n: number) => `Вопрос ${n}`,
|
||
recall: (period: string) => `Период: ${period}`,
|
||
hoursLabel: "Сколько часов",
|
||
hoursUnit: "ч",
|
||
hoursHint: "От 0 до 24, можно с половиной: 6,5",
|
||
portionsLabel: "Сколько порций",
|
||
portionsUnit: "порц.",
|
||
portionsHint: "Если не пили — 0. Можно дробное: 1,5",
|
||
drinks: "Таблица стандартных порций",
|
||
drinksLead: "Посчитайте, сколько порций выходит в обычный день, когда вы выпиваете.",
|
||
noticeTitle: "Опрос приостановлен",
|
||
},
|
||
messages: {
|
||
title: "Сообщения",
|
||
inputLabel: "Сообщение",
|
||
inputPlaceholder: "Напишите сообщение",
|
||
you: "Вы",
|
||
empty: "Здесь будут сообщения помощника.",
|
||
},
|
||
footer: {
|
||
law: "Обработка данных о здоровье — только с вашего согласия (152‑ФЗ).",
|
||
prototype: "Прототип для хакатона MedITron. Используются только синтетические данные.",
|
||
},
|
||
} as const;
|