Skip to content

Repository files navigation

Рабочее место врача с AI-поддержкой

Полнофункциональное решение для эмуляции рабочего места врача с интеграцией AI для проверки медицинских решений на соответствие клиническим рекомендациям.

🚀 Возможности

Django приложение "Рабочее место врача"

  • ✅ Управление картами пациентов (ФИО, СНИЛС, полис ОМС)
  • ✅ Создание медицинских записей приемов
  • ✅ Стандартная форма медкарты РФ (жалобы, анамнез, диагноз МКБ-10, план лечения)
  • AI-проверка заключений с стримингом токенов в реальном времени
  • ✅ Анонимная отправка данных в AI (без ФИО, только возраст и пол)

Базовая инфраструктура

  • ✅ Ollama + Open WebUI с интерфейсом как ChatGPT
  • ✅ Автоматическая синхронизация документов (RAG)
  • ✅ Поддержка русского языка
  • ✅ GPU ускорение (NVIDIA)
  • ✅ Работает полностью локально

⚡ Quick Start

1. Запустите систему

docker compose up -d

2. Загрузите модели

# Основная модель для AI-проверки (рекомендуется)
docker exec -it ollama ollama pull gpt-oss:20b

# Модель для работы с документами
docker exec -it ollama ollama pull mxbai-embed-large

3. Создайте пользователя Django

docker compose exec doctor-workspace python manage.py createsuperuser

4. Настройте автосинхронизацию документов

# 1. Создайте API ключ в Open WebUI
#    http://localhost:3000 → Settings → Account → API Keys

# 2. Создайте коллекцию Knowledge
#    Workspace → Knowledge → Create new knowledge

# 3. Добавьте в .env
nano .env
# OWUI_TOKEN=ваш-api-токен
# OWUI_KNOWLEDGE_ID=id-коллекции

# 4. Перезапустите синхронизацию
docker compose restart rag-sync

5. Откройте приложения

Готово! 🎉

📋 Требования

  • Linux (Ubuntu/Mint)
  • Docker и Docker Compose
  • NVIDIA GPU с CUDA (рекомендуется 16GB+ VRAM)
  • NVIDIA Container Toolkit

🏥 Использование системы врача

Создание медицинской записи

  1. Войдите в http://localhost:8000
  2. Создайте нового пациента или выберите существующего
  3. Нажмите "Новый прием"
  4. Заполните форму медицинской карты:
    • Жалобы пациента
    • Анамнез заболевания
    • Объективный статус
    • Витальные показатели (Т, АД, пульс, ЧДД)
    • Диагноз + код МКБ-10
    • План обследования и лечения
    • Назначения

AI-проверка заключения

  1. Откройте сохраненную медицинскую запись
  2. В правой колонке нажмите "Проверить заключение"
  3. Наблюдайте стриминг токенов в реальном времени
  4. Получите анализ:
    • ✅ Если все OK - ответ будет просто "ОК"
    • ⚠️ Если есть замечания - только список проблем и рекомендаций
    • 📚 Ссылки на клинические рекомендации

Анонимность данных

AI получает только:

  • Возраст и пол пациента
  • Медицинские данные (жалобы, диагноз, назначения)

Не передаются:

  • ФИО пациента
  • СНИЛС, полис ОМС
  • Адрес, телефон

В логах используется только UUID пациента.

🤖 Настройка AI

Модель для проверки заключений

Текущая модель: gpt-oss:20b

  • 100% GPU
  • ~14 GB VRAM
  • ~126 токенов/сек на RTX 3090

Для изменения модели отредактируйте doctor-workspace/medical/services.py:181

Промпт для AI

Шаблон промпта находится в doctor-workspace/prompt.md и легко редактируется.

Текущий формат:

  • Если все OK → ответ "ОК"
  • Если есть замечания → только замечания без описания что сделано правильно

📚 Автоматическая синхронизация документов (RAG)

Как работает

Просто копируйте документы в папку documents/:

cp клинические-рекомендации.pdf documents/

Через 1-3 секунды:

  • ✅ Документ загружается в Open WebUI
  • ✅ Добавляется в коллекцию Knowledge
  • ✅ Индексируется для RAG
  • ✅ Становится доступен для AI-проверки

Поддерживаемые форматы

  • PDF, DOCX, TXT, MD, ODT, RTF

Настройка RAG для точного поиска

Settings → Admin Settings → Documents:

  • Embedding Model: mxbai-embed-large
  • Chunk Size: 200-250 (не 400!)
  • Chunk Overlap: 40-50
  • Hybrid Search: ✓ включить
  • Top K: 15

После изменения настроек переиндексируйте документы!

🏗️ Архитектура

┌─────────────┐         ┌──────────────┐         ┌─────────────┐
│   Врач      │ ──────> │    Django    │ ──────> │    Ollama   │
│  (браузер)  │ <────── │  port 8000   │ <────── │  gpt-oss    │
└─────────────┘         └──────────────┘         └─────────────┘
                              │                         │
                              │                         ↓
                              │                   ┌─────────────┐
                              └────────────────>  │     RAG     │
                                                  │ (documents) │
                                                  └─────────────┘

🔧 Управление системой

Просмотр логов

# Django
docker compose logs -f doctor-workspace

# Ollama
docker compose logs -f ollama

# Синхронизация документов
docker compose logs -f rag-sync

Перезапуск

# Все сервисы
docker compose restart

# Только Django
docker compose restart doctor-workspace

Остановка

docker compose down

Мониторинг GPU

watch -n 1 nvidia-smi

# Проверка модели в GPU
docker exec ollama ollama ps

📊 Рекомендуемые модели

Для AI-проверки заключений

Модель VRAM Скорость Качество Рекомендация
gpt-oss:20b ~14GB ~126 t/s ⭐⭐⭐⭐⭐ Текущая, лучший выбор
qwen2.5:7b ~5GB ~123 t/s ⭐⭐⭐⭐ Быстрая альтернатива
qwen2.5:14b ~9GB Средне ⭐⭐⭐⭐⭐ Если мало VRAM

Для эмбеддингов (RAG)

Модель Размер Качество
mxbai-embed-large 669MB ⭐⭐⭐⭐⭐ (Рекомендуется для русского)
nomic-embed-text 274MB ⭐⭐⭐⭐ (Универсальная)

🐛 Решение проблем

GPU не используется Ollama

# Проверьте docker-compose.yml - должен быть runtime: nvidia
# Перезапустите Ollama
docker compose restart ollama

# Проверьте загрузку модели
docker exec ollama ollama ps
# Должно быть: "100% GPU"

Медленная генерация

  1. Проверьте что модель в GPU: docker exec ollama ollama ps
  2. Уменьшите num_ctx в services.py (текущее: 2048)
  3. Используйте более легкую модель (qwen2.5:7b)

AI-проверка не работает

# Проверьте логи Django
docker compose logs doctor-workspace | grep ERROR

# Проверьте что Ollama отвечает
curl http://ollama:11434/api/generate -d '{"model":"gpt-oss:20b","prompt":"test","stream":false}'

Стриминг токенов не отображается

  1. Очистите кэш браузера (Ctrl+Shift+R)
  2. Проверьте JavaScript консоль браузера (F12)
  3. Убедитесь что используется HTTP/1.1 (не HTTP/2)

📁 Структура проекта

llm/
├── docker-compose.yml          # Конфигурация всех сервисов
├── .env                        # Переменные окружения
├── README.md                   # Эта инструкция
├── doctor-workspace/           # Django приложение "Рабочее место врача"
│   ├── config/                 # Настройки Django
│   ├── medical/                # Основное приложение
│   │   ├── models.py           # Модели: Doctor, Patient, MedicalRecord
│   │   ├── views.py            # Логика обработки запросов
│   │   ├── services.py         # Интеграция с Ollama API
│   │   └── templates/          # HTML шаблоны
│   ├── prompt.md               # Шаблон промпта для AI (легко редактировать!)
│   ├── Dockerfile
│   └── requirements.txt
├── sync-app/                   # Автосинхронизация документов
│   ├── app.py
│   └── requirements.txt
├── documents/                  # Папка для клинических рекомендаций (автосинхронизация)
└── data/                       # Данные (не в git)
    ├── ollama/                 # Модели Ollama
    ├── open-webui/             # Данные Open WebUI
    └── sync-state/             # База синхронизации

📞 Поддержка

Подробная документация:

  • doctor-workspace/README.md - Django приложение
  • documents/README.md - Работа с документами

Создайте issue на GitHub для вопросов.

About

LLM PoC

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages