HEALTHTECH · 2023
Clinio
Онлайн-консультации с врачами: от записи на приём до заключения в медицинской карте.
Результат
- Платформа запущена с нуля с кабинетами пациента и врача.
- В продукт вошли онлайн-консультации, медкарта, чаты, вопросы врачам, рекомендации, закрытый клуб и консилиумы.
- Передал функции в разработку и участвовал в их тестировании и доработке.
Задача
Нужно было спроектировать сервис с кабинетами пациента и врача. Их работа связана данными консультации: пациент готовится к приёму, врач изучает анамнез и составляет заключение. Я связал подготовку и результат приёма: бот передаёт ответы врачу заранее, а заключение и рекомендации остаются в медкарте пациента.
Вопрос и доступ к медкарте
Для ответа врачу может понадобиться история пациента. Я связал вопрос с медкартой, сохранив отдельное разрешение на доступ. Врач может учитывать медицинские данные в ответе, а пациент определяет, открывать ли их в этом вопросе.
Подготовка вопроса проходит через четыре шага: содержание, сведения о пациенте, условия публикации и документы. После отправки доступны дополнения, загрузка материалов, выбор полезных ответов и отзыв врачу. Ожидание оплаты и закрытие вопроса показаны отдельно.
Обзор раздела
Разные записи в медицинской карте
Консультация, результат анализа и запись о прививке требуют разных деталей. Поэтому я выделил типы записей в медкарте и предусмотрел для них отдельные страницы. Заключения и рекомендации сохраняются здесь после приёма, а показатели анализов можно смотреть в динамике.
В медкарте семь типов записей: консультации, анализы, обследования, направления, выписки, справки и прививки. Для них показаны списки, детали и доступные формы добавления; основные данные пациента редактируются отдельно.
Все записи и основные показатели
Консультация со стороны пациента
У пациента собственный путь: выбрать специалиста, подготовить обращение, подтвердить контакт и оплатить консультацию. После оплаты открывается чат. Бот уточняет сведения перед ответом врача; документы, ответ и рекомендации остаются рядом с обсуждением. Завершение, жалоба и отмена предусмотрены отдельными состояниями.
Только спросить · форма
Заключение по консультации
Для заключения врачу нужны вопрос и сведения о пациенте. Я включил их в работу с выбранной консультацией, рядом с редактором заключения. Врач изучает анамнез и документы, затем передаёт пациенту ответ, рекомендации и направления на анализы или обследования.
Рекомендации связываются с выбранными врачами, клиниками, услугами и лекарствами. Выбор клиники продолжается выбором специалиста; выбранные позиции возвращаются в заключение.
Обзор раздела
Закрытый клуб врачей
Профиль для пациентов и общение с коллегами рассчитаны на разных читателей. Поэтому я отделил закрытый клуб от кабинета консультаций. В клубе есть собственный профиль автора, публикации и монетизация контента; доступ к сообществу запрашивается отдельно.
В клубном профиле собраны опыт, образование, научные работы, награды и документы. Заявка на доступ, лента, редактор публикации и материалы автора показаны самостоятельными экранами.
Доступ в закрытый клуб
Обсуждение и заключения консилиума
Участники консилиума обсуждают один случай, при этом каждый врач готовит своё заключение. Я разделил общий чат и персональные выводы: обсуждение помогает сопоставить гипотезы, а организатор получает заключения от каждого участника.
При создании организатор задаёт тему, число мест и приглашает коллег. Входящие приглашения, заявки на участие, архив и полученные заключения имеют отдельные представления для организатора и участника.
Обзор раздела
Баланс и способы оплаты
В кабинете собраны баланс, СКоины, сохранённые карты и история операций. Пополнение проходит через выбор суммы и способа оплаты. Привязка и удаление карты, а также заявка на вывод оформлены отдельными действиями.
Баланс, карты и транзакции
Аккаунт, профиль и условия работы
Настройки разделяют данные аккаунта, профессиональные сведения, условия приёмов и два профиля врача — публичный и клубный. Врач задаёт расписание, отпуск, цены и доступные форматы обращения. Контакты и уведомления настраиваются отдельно от информации, которую видят пациенты и коллеги.
Данные аккаунта
Статистика специалиста
В кабинете специалиста заявки на консультацию, записи на приём, отзывы и просмотры профиля показаны отдельными группами. Просмотры сравниваются с предыдущей неделей и месяцем. В этой демонстрации структура раннего макета перенесена в текущую оболочку кабинета.
Статистика специалиста
Главная и выбор врача
Формат консультации меняет следующий шаг: запись в клинику требует времени приёма, а вопрос адресуется выбранному врачу. Я сохранил эти варианты рядом с профилем специалиста. Перед отправкой вопроса пациент отдельно выбирает доступ к медкарте и анонимность.
Главная страница
Каталог врачей и форматы обращения
Профиль врача и запись доступны в демо в начале кейса.
Компоненты для двух кабинетов
В разных сценариях повторяются подтверждение действий и ввод данных. Я вынес кнопки и поля в компоненты, а общие значения — в токены. Правила их применения заданы для кабинетов врача и пациента, чтобы каждую новую форму не приходилось собирать заново.
От компонента к исходному значению
Свойство компонента ссылается на семантическую роль. Роль задаёт назначение, а примитив хранит цвет или размер.
Палитра исходной библиотеки
34 переменные · Figmacontent/blackbox#121836content/dracula#097670content/shutterIsland#2A3F7Fcontent/doctorwho#127D49content/founder#DEB100content/bunker#B44646content/batman#3C415Ccontent/obsession#FC6FC3content/jobs#03669Bcontent/jango#6EC277content/attackontitan#EBC83Econtent/zodiac#DE8CFBcontent/arrival#70748Bcontent/getknives#9C8CFBcontent/legend#42AEDCcontent/strange#8CA4FBcontent/cosmopolis#FDAC62content/lost#FFFFFFbg/prestige#DDDEDFbg/backtofuture#F0F0F0bg/oppenheimer#FAFAFBbg/cityz#06BFB5bg/starwars#E6F9F8bg/supernatural#F3FCFBbg/squidgame#CDE8F7bg/hungergames#E6F4FBbg/jumanji#F2F9FDbg/lordotrings#E1F9EDbg/greenbook#F2FDF8bg/flash#FEF5D0bg/dune#FFFCF3bg/aloneathome#FFEEEEbg/kingsman#FFF7F7bg/hobbit#FFFFFFРазмерные токены
14 значений · модуль 4 × 4 pxx00 pxx14 pxx28 pxx312 pxx416 pxx520 pxx624 pxx832 pxx1144 pxx1352 pxx1456 pxx1560 pxx1768 pxx25100 pxВыше — названия и значения из Figma. Ниже — кодовые alias и их привязки, используемые в интерактивных образцах.
Цветовые примитивы
17 значенийcolor.white#FFFFFFcolor.teal.500#06BFB5color.teal.700#06BFB5color.teal.800#097670color.teal.900#35D8CFcolor.teal.50#E6F9F8color.teal.100#C5EEECcolor.slate.900#121836color.slate.600#70748Bcolor.slate.100#F0F0F0color.slate.150#EEF0F3color.slate.200#E3E7EDcolor.purple.500#DE8CFBcolor.green.400#127D49color.green.50#F2FDF8color.red.400#B44646color.red.50#FFEEEEПривязки кнопок
Component → Semantic → Primitivebutton.primary.backgroundsurface.actionОсновное действиеcolor.teal.700#06BFB5button.primary.labeltext.on-actionТекст на основной кнопкеcolor.white#FFFFFFbutton.secondary.backgroundsurface.action.subtleВторичное действиеcolor.teal.50#E6F9F8button.secondary.labeltext.actionСсылки и текстовые действияcolor.teal.800#097670button.tertiary.labeltext.actionСсылки и текстовые действияcolor.teal.800#097670button.focus.borderborder.focusФокус клавиатурыcolor.purple.500#DE8CFBbutton.radiuscontrol.radiusСкругление контейнераradius.control12pxbutton.gapcontrol.gapМежду иконкой и подписьюspace.28pxbutton.label.weightcontrol.label.weightНачертание действияfont.bold700button.disabled.opacitycontrol.disabled.opacityНедоступный компонентopacity.disabled.32Привязки полей
Component → Semantic → Primitiveinput.backgroundsurface.subtleПоля и вторичные областиcolor.slate.100#F0F0F0input.labeltext.secondaryПодписи и подсказкиcolor.slate.600#70748Binput.focus.borderborder.focusФокус клавиатурыcolor.purple.500#DE8CFBinput.positive.borderborder.positiveВалидное значениеcolor.green.400#127D49input.positive.backgroundsurface.positiveФон валидного поляcolor.green.50#F2FDF8input.negative.borderborder.negativeОшибка значенияcolor.red.400#B44646input.negative.backgroundsurface.negativeФон поля с ошибкойcolor.red.50#FFEEEEinput.disabled.backgroundsurface.subtleПоля и вторичные областиcolor.slate.100#F0F0F0input.radiuscontrol.radiusСкругление контейнераradius.control12pxinput.paddingcontrol.paddingВнутренние поляspace.416pxinput.disabled.opacitycontrol.disabled.opacityНедоступный компонентopacity.disabled.32input.focus.widthcontrol.focus.widthТолщина границы фокусаborder.focus.width2pxОбщие семантические роли
Поверхности, состояния, ритмsurface.canvasКарточки и формыcolor.white#FFFFFFsurface.action.hoverНаведение на действиеcolor.teal.900#35D8CFsurface.action.subtle.hoverНаведение на вторичноеcolor.teal.100#C5EEECsurface.disabledНедоступное полеcolor.slate.150#EEF0F3text.primaryЗаголовки и основной текстcolor.slate.900#121836border.defaultГраницы областейcolor.slate.200#E3E7EDsection.gapМежду группами формыspace.624pxСемейства и состояния сверены с библиотекой Clinio. Имена связей и HEX-коды описывают эту кодовую реализацию; шкалы размеров и шрифта раскрыты в разделе «Типографика и ритм».
Шрифт и геометрия
Manrope
heading.page · 32/48Консультации и приёмы
heading.section · 24/36Заключение врача
body.large · 18/24Вопрос пациента
body.default · 14/20Документы перед консультацией
В исходнике line-height рассчитывается с коэффициентом ×1.5 и приводится к ритму: пример 18 × 1.5 = 27 → 24.
Ритм и размеры
Базовый шаг · 4 px
space.18space.212space.316space.424space.632space.8size.x11- 44px
size.x14- 56px
size.x17- 68px
size.icon- 20px
radius.control- 12px
radius.chip- 4px
border.thin- 1px
border.focus.width- 2px
opacity.disabled- .32
font.family- Manrope
font.medium- 500
font.semibold- 600
font.bold- 700
Текстовые стили из Figma
10 стилей · Manrope| Стиль | Размер / строка | Вес | Образец |
|---|---|---|---|
headers/alexandria | 36 / 40 | 600 | Аа |
headers/landmarks | 32 / 26 | 600 | Аа |
headers/amatory | 24 / 28 | 600 | Аа |
headers/quenn | 20 / 24 | 600 | Аа |
text/attila | 16 / 24 | 500 | Аа |
subtext/adept | 14 / 20 | 600 | Аа |
subtext/abel | 14 / 20 | 700 | Аа |
controls/radiohead | 14 / 20 | 700 | Аа |
controls/zimmer | 16 / 24 | 700 | Аа |
controls/paterlini | 20 / 28 | 700 | Аа |
В таблице — фактические text styles файла. Учебная таблица на холсте задаёт другие высоты строк для заголовков: 36/54, 32/48, 24/36 и 20/30. Примеры выше сохраняют шкалу кодовой демонстрации.
space.4 → control.padding → кнопка и поле
space.2 → control.gap → иконка и подпись
space.6 → section.gap → группы формы
Семейство + вес + размер + высота строки.
Действия и состояния
Контейнер, иконка, подпись
Иконка занимает отдельный слот. Подпись остаётся по центру; состояния не меняют размер кнопки.
Три размера
| Размер | Высота | Текст | Поля ↔ | Иконка |
|---|---|---|---|---|
| x11 | 44 | 14/20 | 12 | 20 |
| x14 | 56 | 16/24 | 16 | 24 |
| x17 | 68 | 20/28 | 20 | 28 |
- Начертание
- Manrope · Bold 700
- Граница / радиус
- focus 2 px / 12 px
- Между слотами
- space.2 · 8 px
- Ширина
- По содержимому / Fill
Меняется поверхность. Подпись, размер и положение сохраняются.
Фиолетовая граница обозначает фокус. Клавиатура: Tab, Enter и Space.
Краткое подтверждение нажатия. В демо — внутренний слой; размер контейнера остаётся прежним.
В исходнике opacity .32. Кнопка исключена из Tab и не вызывает действие.
Три уровня действия
x11 / x14 / x17, Primary / Secondary / Tertiary, focus, pressed и opacity .32 показаны в Figma. Паддинги, радиус и размеры слотов сверены с исходными компонентами. Исходная палитра сохранена в токенах; Primary в макетах и образцах использует бирюзовый акцент, второстепенные действия — серые поверхности. Pressed — интерактивная демонстрация правила нажатия.
Ввод данных
Ввод текста и раскрытый список
Normal содержит текстовый слот. Select добавляет шеврон и отдельное состояние list: варианты продолжают поле, не перекрывая следующий образец.
Normal, Select, Password, Email, телефон и Textarea. Все примеры используют осмысленные подписи и одинаковые значения во всех состояниях.
Имя пациента
Текст и числа
Специализация
Одно значение из списка
Пароль
Скрытие и показ символов
Электронная почта
Адрес электронной почты
Номер телефона
Клавиатура телефона
Комментарий
Длинный текст · высота 112 px
Пять исходных состояний сохранены; добавлена загрузка. Все состояния имеют одинаковую высоту 112 px и показывают многострочный ввод. Радиус 12 px, подсказка под контейнером.
56 / 68 px — размеры контейнера из библиотеки. Текст и внутренние поля выше — спецификация реализации.
Одна фиолетовая граница без второго внешнего кольца. Список: стрелки, Enter, Escape.
Светлая поверхность и тонкая граница; ошибка дополнительно передаётся через aria-invalid.
В исходнике opacity .32. Геометрия сохранена, ввод и открытие списка недоступны.
Normal / Select, состояние list, x14 / x17 и пять состояний сверены с Figma. Цвета, Manrope SemiBold и радиус 12 px сверены с исходными компонентами. Password, Email, телефон и loading добавлены в развитие демонстрации; выпадающее меню оформлено в общем стиле.
Выбор и изменение значения
Phosphor · контур и заливка
В обычном состоянии иконки контурные, в выбранном — залитые. Нажмите, чтобы сравнить.
Один вариант
Unselected / Selected · Enable, Hover, Focus, Disabled.
Несколько вариантов
Unselected / Selected / Indeterminate. В исходнике выбранное значение отмечено квадратом.
Диапазон
Enable / Focus / Disabled / Sliding. Дорожка 4 px, бегунок 20 px.
По одному шагу
Кнопки 32 × 32 px, иконка в слоте 20 px, радиус 4 px. Enable / Hover / Focus / Disabled.
Выбор даты и элементов списка
Дата
В библиотеке: Date, Date & Time, Year и Time picker. Состояния дня: Normal, Hover, Selected, Diapason, начало и конец диапазона, Disable.
Группа значений
Default / Checkbox / Icon. Enable, Hover, Selected / Pressed, Disable · opacity .32. В группе — не больше 5–6 видимых строк до скролла.
Переход между страницами
Страницы
Кнопки «Назад» и «Вперёд» всегда видимы. Enable / Hover / Selected / Focus / Disabled. В библиотеке есть и Slider-пагинация.
Текстовое действие
Small / Medium / Large · без иконки, с иконкой до или после текста. Enable / Hover / Focus / Disabled.
Показаны дополнительные семейства Molecules из Figma. В исходнике также есть Tab, Navigation, Balance, Medical card, Tag и отдельная библиотека иконок.



















