= SPEC-001: Гібридна система AI Assistant для інтеграції з Medical Brain :sectnums: :toc: :source-highlighter: rouge :icons: font :experimental: == Background Medical Brain (MB) є потужною rule-based системою, яка аналізує клінічні дані та генерує рекомендації для лікарів і пацієнтів. Хоча MB демонструє стабільність і швидкість прийняття рішень, її ефективність обмежується строго визначеними правилами, що не дозволяють враховувати всі контексти пацієнта. Для подолання цих обмежень пропонується розробити AI Assistant, який інтегрується з MB, забезпечуючи: - Постійний моніторинг рекомендацій MB. - Контекстну перевірку точності на основі широкого спектру даних (історія хвороб, лабораторні результати, взаємодії у чатах). - Блокування потенційно некоректних рекомендацій із сповіщенням лікарів. Система буде реалізована поступово з можливістю масштабування до більш складних функцій. Основні задачі: підвищення точності, безпеки, ефективності та гнучкості роботи MB. == Requirements Вимоги до системи AI Assistant для інтеграції з Medical Brain (MB) структуровані за методологією MoSCoW. === Must-have (Обов'язкові) 1. Постійний моніторинг рекомендацій MB у реальному часі. 2. Зіставлення рекомендацій MB з клінічними даними пацієнта, включаючи: - Історію хвороб. - Лабораторні результати. - Поточний стан пацієнта. 3. Блокування некоректних рекомендацій MB до їхньої передачі лікарю чи пацієнту. 4. Генерація сповіщень до Supervisor Module у випадку виявлення помилок або невідповідностей. 5. Інтеграція з базою даних EHR для збереження та обробки даних пацієнта. 6. Підтримка механізмів Retrieval-Augmented Generation (RAG) для оптимізації використання ресурсів. === Should-have (Бажані) 1. Режими пам'яті (постійна й оперативна) для ефективного управління даними пацієнта. 2. Аналіз текстової взаємодії у чатах між пацієнтами й лікарями. 3. Масштабованість до Level 2 (рекомендації лікарям) і Level 3 (рекомендації пацієнтам). 4. Логування всіх дій системи для забезпечення трасування помилок. === Could-have (Можливі) 1. Зворотній зв'язок із лікарями для покращення моделей AI. 2. Кешування рекомендацій для підвищення швидкості. 3. Інтеграція з зовнішніми AI-платформами для вдосконалення моделей. === Won't-have (Виключення) 1. Пряма взаємодія з пацієнтами (поза межами рівнів, визначених системою). 2. Прогнозування складних сценаріїв без додаткового тестування й пілотування. == Method === Архітектура системи Система AI Assistant складається з таких основних компонентів: [plantuml] ---- @startuml !define RECTANGLE #White rectangle "Medical Brain (MB)" as MB rectangle "AI Assistant" as Assistant { rectangle "LLM API\n(External Service)" as LLM_API rectangle "Prompt Formation\nand Caching Module" as Prompt_Module rectangle "Memory Module\n(Permanent/Operational)" as Memory_Module } rectangle "EHR Database" as EHR rectangle "Supervisor Module" as Supervisor MB --> Assistant: MB Recommendations Assistant --> Supervisor: Notifications LLM_API --> Assistant: Results EHR --> Memory_Module: Patient Data Prompt_Module --> LLM_API: Optimized Queries Memory_Module --> Prompt_Module: Context @enduml ---- === Основні компоненти: 1. **Medical Brain (MB)** Використовує rule-based логіку для первинного аналізу даних пацієнта та формування рекомендацій. 2. **AI Assistant** Виконує розширений аналіз і перевірку рекомендацій MB. - Взаємодія з LLM через зовнішнє API для отримання текстових відповідей на основі контексту. - Формування оптимізованих prompts із використанням: - Постійної пам'яті (історія хвороб, хронічні захворювання, протоколи лікування). - Оперативної пам'яті (актуальні дані за останні 24–48 годин). - Кешування повторюваних частин prompts для зменшення витрат. 3. **Модуль формування prompts** - Генерує prompts для запитів до LLM, які враховують: - Персоналізацію для конкретного пацієнта. - Медичний контекст (включно з протоколами лікування). - Кешує частини prompts, які не змінюються між запитами, наприклад: - Загальні дані пацієнта (ім'я, хронічні стани). - Протоколи лікування для спеціалізованих напрямків. 4. **Модуль пам'яті** - **Постійна пам'ять**: - Інтегрується з EHR для зберігання ключової інформації про пацієнта. - Може використовувати RAG для динамічного отримання додаткових даних із протоколів лікування чи баз знань. - **Оперативна пам'ять**: - Реалізує ковзне вікно останніх подій, включно з взаємодіями у чатах і змінами стану пацієнта. 5. **Supervisor Module** Виконує роль наглядача для контролю роботи MB і AI Assistant. - Отримує нотифікації про виявлені помилки чи невідповідності. - Підтримує інтерактивний інтерфейс для лікарів-контролерів. 6. **LLM API** - Зовнішній сервіс для обробки текстових запитів. - Підтримує великий контекстний обсяг (long-context window). - Інтегрується через REST або gRPC API. === Алгоритм роботи: 1. **Збір даних** - Дані з EHR інтегруються до постійної пам'яті через модуль пам'яті. - Поточні події додаються до оперативної пам'яті в реальному часі. 2. **Формування запиту (prompt)** - AI Assistant генерує запит до LLM, використовуючи: - Кешовані статичні частини (загальні дані пацієнта, протоколи лікування). - Динамічний контекст (поточні події, стан пацієнта). 3. **Використання RAG** - За потреби дані для запиту отримуються з довготривалої пам'яті або баз знань. - LLM формує відповідь, враховуючи релевантні матеріали. 4. **Аналіз рекомендацій MB** - AI Assistant перевіряє відповідність рекомендацій MB протоколам і загальному контексту. - Некоректні рекомендації блокуються, а сповіщення надсилаються до Supervisor Module. 5. **Кешування** - Частини prompts, що залишаються незмінними між запитами, кешуються для оптимізації. 6. **Нотифікація Supervisor Module** - У разі виявлення невідповідностей формується нотифікація з деталями проблеми. === Візуалізація [plantuml] ---- @startuml rectangle "Long-term Memory (EHR)" as LongMemory rectangle "Short-term Memory (Operational)" as ShortMemory rectangle "RAG Module" as RAG rectangle "Context Caching" as Cache rectangle "LLM API" as LLM LongMemory --> Cache : Static Data Caching ShortMemory --> Cache : Dynamic Data Updates RAG --> Cache : Loading Specific Knowledge Cache --> LLM : Prompt Formation LLM --> AI_Assistant : Analysis Result @enduml ----