Полнофункциональное решение для эмуляции рабочего места врача с интеграцией AI для проверки медицинских решений на соответствие клиническим рекомендациям.
- ✅ Управление картами пациентов (ФИО, СНИЛС, полис ОМС)
- ✅ Создание медицинских записей приемов
- ✅ Стандартная форма медкарты РФ (жалобы, анамнез, диагноз МКБ-10, план лечения)
- ✅ AI-проверка заключений с стримингом токенов в реальном времени
- ✅ Анонимная отправка данных в AI (без ФИО, только возраст и пол)
- ✅ Ollama + Open WebUI с интерфейсом как ChatGPT
- ✅ Автоматическая синхронизация документов (RAG)
- ✅ Поддержка русского языка
- ✅ GPU ускорение (NVIDIA)
- ✅ Работает полностью локально
docker compose up -d# Основная модель для AI-проверки (рекомендуется)
docker exec -it ollama ollama pull gpt-oss:20b
# Модель для работы с документами
docker exec -it ollama ollama pull mxbai-embed-largedocker compose exec doctor-workspace python manage.py createsuperuser# 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- Django (Рабочее место врача): http://localhost:8000
- Open WebUI: http://localhost:3000
Готово! 🎉
- Linux (Ubuntu/Mint)
- Docker и Docker Compose
- NVIDIA GPU с CUDA (рекомендуется 16GB+ VRAM)
- NVIDIA Container Toolkit
- Войдите в http://localhost:8000
- Создайте нового пациента или выберите существующего
- Нажмите "Новый прием"
- Заполните форму медицинской карты:
- Жалобы пациента
- Анамнез заболевания
- Объективный статус
- Витальные показатели (Т, АД, пульс, ЧДД)
- Диагноз + код МКБ-10
- План обследования и лечения
- Назначения
- Откройте сохраненную медицинскую запись
- В правой колонке нажмите "Проверить заключение"
- Наблюдайте стриминг токенов в реальном времени
- Получите анализ:
- ✅ Если все OK - ответ будет просто "ОК"
⚠️ Если есть замечания - только список проблем и рекомендаций- 📚 Ссылки на клинические рекомендации
AI получает только:
- Возраст и пол пациента
- Медицинские данные (жалобы, диагноз, назначения)
Не передаются:
- ФИО пациента
- СНИЛС, полис ОМС
- Адрес, телефон
В логах используется только UUID пациента.
Текущая модель: gpt-oss:20b
- 100% GPU
- ~14 GB VRAM
- ~126 токенов/сек на RTX 3090
Для изменения модели отредактируйте doctor-workspace/medical/services.py:181
Шаблон промпта находится в doctor-workspace/prompt.md и легко редактируется.
Текущий формат:
- Если все OK → ответ "ОК"
- Если есть замечания → только замечания без описания что сделано правильно
Просто копируйте документы в папку documents/:
cp клинические-рекомендации.pdf documents/Через 1-3 секунды:
- ✅ Документ загружается в Open WebUI
- ✅ Добавляется в коллекцию Knowledge
- ✅ Индексируется для RAG
- ✅ Становится доступен для AI-проверки
- PDF, DOCX, TXT, MD, ODT, RTF
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-workspacedocker compose downwatch -n 1 nvidia-smi
# Проверка модели в GPU
docker exec ollama ollama ps| Модель | VRAM | Скорость | Качество | Рекомендация |
|---|---|---|---|---|
| gpt-oss:20b | ~14GB | ~126 t/s | ⭐⭐⭐⭐⭐ | Текущая, лучший выбор |
| qwen2.5:7b | ~5GB | ~123 t/s | ⭐⭐⭐⭐ | Быстрая альтернатива |
| qwen2.5:14b | ~9GB | Средне | ⭐⭐⭐⭐⭐ | Если мало VRAM |
| Модель | Размер | Качество |
|---|---|---|
| mxbai-embed-large | 669MB | ⭐⭐⭐⭐⭐ (Рекомендуется для русского) |
| nomic-embed-text | 274MB | ⭐⭐⭐⭐ (Универсальная) |
# Проверьте docker-compose.yml - должен быть runtime: nvidia
# Перезапустите Ollama
docker compose restart ollama
# Проверьте загрузку модели
docker exec ollama ollama ps
# Должно быть: "100% GPU"- Проверьте что модель в GPU:
docker exec ollama ollama ps - Уменьшите
num_ctxвservices.py(текущее: 2048) - Используйте более легкую модель (qwen2.5:7b)
# Проверьте логи Django
docker compose logs doctor-workspace | grep ERROR
# Проверьте что Ollama отвечает
curl http://ollama:11434/api/generate -d '{"model":"gpt-oss:20b","prompt":"test","stream":false}'- Очистите кэш браузера (Ctrl+Shift+R)
- Проверьте JavaScript консоль браузера (F12)
- Убедитесь что используется 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 для вопросов.