Все файлы пользователь загружает в один drop-zone, без отдельных полей для «тестов», «медконтекста», «медицинских заметок». Система автоматически определяет тип каждого файла (анализ / выписка / рецепт / imaging report) и структурирует данные. Применяется к общей технологии распознавания — она лежит и за FHIR Gravity (B2B middleware), и за B2C-порталом, поэтому решение работает в обоих случаях.
API-сторона — отдельный endpoint, существующий B2B контракт неизменен — bulk-upload-endpoint.
Контекст
Текущий интерфейс заставляет пользователя выбирать куда грузить файл — есть отдельные поля «тесты», «medical context», «medical notes». Это создаёт значительный frication: даже мотивированные, технически продвинутые пользователи не справляются с задачей без значительной живой помощи1. Наблюдённые failure modes:
- Загрузка нескольких файлов как одного отчёта без получения трендов
- Непонимание разницы между «тесты» и «медконтекст»
- Вставка медконтекста в поле «Medical Notes», которое раздувается на весь экран
«Это было удивительное наблюдение за поведением. Максимально мотивированный пользователь, который вообще не справился с задачей.»1
Если мотивированный пользователь не справляется — массовый сегмент (обычные пациенты / врачи) не справится тем более. Сценарий «человек, который хочет загрузить и не может» — конец воронки adoption.
Выбрали: единый drop-zone, AI определяет тип
Пользователь грузит все файлы в одно место. Backend сам определяет тип каждого, маршрутизирует в подходящий recognition path, структурирует в FHIR. Вопрос «куда загружать» исчезает на уровне UX.
Это продолжение архитектурного направления analytical routing2 — определение типа документа на загрузке. К 2026 эта функция стала частью FHIR Gravity middleware.
Сопутствующие UX-изменения в том же направлении:
- «Тесты» → «мои файлы» / «мои документы». Текущий термин «тесты» не покрывает выписки / рецепты / imaging, и массовому пользователю он непонятен. Имя «my health» в этой раздел не идёт — оно занято под отдельную концепцию (отчёты по здоровью, см. health-report-vision).
- Автоматическая группировка файлов на стороне backend (по дате, типу, источнику). Группировка — не задача пользователя. Конкретные сигналы и стратегия не зафиксированы — см. multi-image-file-grouping (draft).
- Lazy generation отчётов — генерируется только последний / актуальный, исторические — по запросу. Снижает время ожидания.
UI-концепт «file manager»
Замена текущего «java-style» загрузчика3:
- Drop-зона в центре с крупным текстом: «грузи сюда любые медицинские файлы — PDF, изображения, анализы, справки, рецепты»
- Список загруженных файлов рядом / под drop-зоной; пользователь видит весь набор и может добавить ещё
- Раздельные шаги загрузка → обработка: пользователь сначала набирает все файлы, потом по кнопке «Дальше» стартует recognition. Снимает confusion и даёт контроль
- Lazy generation: тренды / overview конкретного файла генерируются при открытии, не batch’ем на upload
- Один и тот же flow на мобайле и десктопе
- Переименование приложения с «BloodGPT» — текущее название создаёт впечатление, что продукт только про кровь, а реальный scope шире (любые медицинские документы). Конкретное новое имя ещё не выбрано — см. project-rename (draft).
Почему
- Несправляющиеся мотивированные пользователи = конец воронки adoption. Без unified upload даже early-adopter retention теряется.
- AI-routing технически готов через FHIR Gravity (см. fhir-gravity) — recognition pipeline уже определяет тип документа. Перенос на пользовательский UX — продуктовая реализация уже-существующей capability.
- Соответствует позиционированию «прибор, не рекомендация» (см. medical-as-instrument-not-recommendation) — прибор должен «просто работать», не задавать вопросов о routing.
- Уход от тестов как нативной модели — пользователь думает в категориях «моё здоровье», «мой файл», не «лабораторный тест №3» (см. use-cases).
Связь с верхней частью «песочных часов»
Решение относится к верхнему конусу recognition-enrichment-hourglass (input side — recognition): расширение типов unstructured input, который мы принимаем, и точки входа в pipeline. Через эту же связь пересекается с health-report-vision (paradigm shift тест-центрик → snapshot-центрик):
- Раньше: каждый файл → отдельный
BloodTest→ отдельный отчёт. Юнит вывода = тест. - Сейчас: единый drop-zone → всё сохраняется в FHIR-базу → генерация snapshot только для последнего / актуального состояния (или summary в контексте последнего).
То есть тест перестаёт быть юнитом вывода. Output — point-in-time snapshot пациента, привязанный к дате. Загруженные файлы остаются в FHIR полностью как данные; вопрос, какие именно события / правила запускают snapshot generation (триггеры), пока не зафиксирован. Что было exploratory paradigm shift — получило конкретный production-trigger в части unified upload.
Следствия
- «FHIR Gravity» middleware — обязательная часть upload pipeline (не опциональная). Без неё единый drop-zone технически невозможен. «FHIR Gravity» — маркетинговое имя для backend-распознавания: превращение unstructured входа (PDF / image / текст) в FHIR-структуры. Технически это уже-существующий recognition pipeline, упакованный под brand.
- Recognition должен корректно определять не-blood-test файлы (медицинские выписки, prescriptions, imaging reports) — расширение coverage за пределы blood tests.
- Поле «Medical Notes» убирается из UI — содержимое медконтекста автоматически извлекается из любого загруженного файла или текстового ввода и хранится в FHIR.
- Grouping логика должна жить на backend (по дате, типу, источнику) — UI показывает сгруппированный результат, не просит пользователя группировать. Как именно реализовать — открытый вопрос, см. multi-image-file-grouping (draft).
Открытые вопросы
- Proactive data clarification — текущая модель «спросить про беременность на каждый загруз» наивна; целевая — agent на этапе generation определяет нехватку данных и формирует follow-up. Это глубокая тема, вынесена в proactive-data-clarification (draft).
- Группировка multi-image upload — как backend понимает, что N фото = один документ. Отдельная decision-страница (draft): multi-image-file-grouping.
Связано
- bulk-upload-endpoint — API-сторона того же решения (separate endpoint, B2B контракт неизменен)
- recognition-enrichment-hourglass — место в архитектуре (расширение верхнего конуса песочных часов)
- health-report-vision — теоретическая основа paradigm shift (тест-центрик → snapshot-центрик)
- fhir-gravity — маркетинговое имя для backend recognition (unstructured → FHIR), на котором этот flow технически держится
- use-cases — пересечение с B2C self-service сценарием
- medical-as-instrument-not-recommendation — позиционирование как прибор требует frictionless UX
- recognition — расширение recognition coverage за пределы blood tests
Сноски
-
«Про FDA?», 2026-04-23, https://github.com/Realai-plus/meeting-digests/blob/main/data/digest/2026/04/2026-04-23T11%3A58%3A47.000Z_Про_FDA%3F_01KPX39YPADYSZX7281KJM0Y0F.md — Георгий не справился с задачей (Н1); переименование «тесты» → «my health» (Р1); только последний отчёт (Р2); единый загрузчик в рамках FIRE (Р4); medical notes → FHIR (О1); smart-questions (О2). ↩ ↩2
-
«Daily StandUp», 2025-12-17, https://github.com/Realai-plus/meeting-digests/blob/main/data/digest/2025/12/2025-12-17T09%3A00%3A00.000Z_Daily_StandUp_01KC94FNRQQXT2363F4MK7T9RA.md — архитектурный шаг analytical routing: определение типа документа на загрузке (Р1). ↩
-
«Daily + Sprint Review & Planning», 2026-04-27, https://github.com/Realai-plus/meeting-digests/blob/main/data/digest/2026/04/2026-04-27T08%3A00%3A00.000Z_Daily_%2B_Sprint_Review%26Planning_01KPX39F5EMF092HA0PGKSX1FV.md — file manager UI (Р2); раздельные шаги загрузки/обработки (Р3); Ильдар на конец недели (Э2). ↩