Назад в архив
II. Клинический AI и медицинские платформывитриналидклиент анонимизирован

Lab Processor — Temporal × LangGraph

Медицинский микросервис (платформа Healthcare platform): анализ лабораторных результатов с помощью AI. Двухслойная оркестрация — Temporal (надёжность) поверх LangGraph (параллельный LLM-DAG), PydanticAI для типобезопасных LLM-выводов, HL7/PDF на входе.

Статус
активный
Период
2025-09-05 → 2025-12-09
AI-сессий
Стек
Языки
Python
Фреймворки · Инфра
FastAPITemporalLangGraphPydanticAIPydantic v2Keycloak
§01

Обзор

  • Что это: Python-микросервис, который принимает лабораторные данные (HL7-сообщение, PDF или структурированный JSON), прогоняет их через AI-пайплайн (медицинские консультации по каждой панели, health summary, консультация верхнего уровня, рекомендации по образу жизни) и собирает итоговый отчёт (JSON + HTML), отправляя его в PHI-сервис. Часть медицинской платформы Healthcare platform.
  • Тип / статус / роль: api (микросервис) · active · lead — 44 из 72 коммитов от пользователя (Davron 42 + Dave93 2), соавтор aniashev (27, тот же человек, что и в deutsch-cookbook), Ramiro (3), Alisher (1).
  • Окно активности: 2025-09-05 → 2025-12-09 (~3 месяца плотной работы).
§02

Стек

  • Языки: Python 3.11+.
  • Фреймворки/библиотеки: FastAPI + Uvicorn; Temporal (temporalio) — надёжная оркестрация воркфлоу с ретраями; LangGraph (StateGraph) — параллельный AI-DAG; PydanticAI (Azure OpenAI / Groq) — типобезопасные интерфейсы к LLM; Pydantic v2 + pydantic-settings; hl7 + hl7conv2 (медицинский стандарт HL7); PyMuPDF (PDF); Jinja2 (HTML-отчёты); python-jose (JWT); Keycloak (авторизация на основе realm); HashiCorp Vault (hvac); loguru; httpx.
  • Инфраструктура/деплой: Docker (отдельный Dockerfile для API и Dockerfile.worker для Temporal-воркера), docker-compose (внешняя temporal-network); двойной CI — GitLab CI (.gitlab-ci.yml, стадии install/lint/build/deploy) + GitHub Actions; uv (пакетный менеджер, uv.lock); pre-commit; ruff + mypy (строгая типизация).
  • Данные: сам данные не хранит; интегрируется с микросервисами PII (поиск/создание пациента) и PHI (обработка HL7, отправка анализов); Vault для секретов.
  • Заметный тулинг: тестовые утилиты PydanticAI для мокинга LLM; чекпоинтинг через MemorySaver в LangGraph.
§03

Что реализовано

Основные авторские коммиты (по диффу/файлам):

  • Оркестрация на Temporal (587a922, 2025-10-30, 20 файлов, +1449): LabReportProcessingWorkflow с активностями generate_lab_analysissubmit_analysis_to_phi_service, воркер, политики ретраев.
  • Авторизация Keycloak + HL7 (4fcdb98, 2025-10-21, 19 файлов, +1791): валидация JWT, AuthenticationMiddleware, обработка HL7 на лабораторных эндпоинтах, новые зависимости.
  • Мульти-realm Keycloak (9f57ea8): валидация токена без захардкоженного realm → на эндпоинтах поддерживается несколько realm.
  • Динамический матчинг публичных эндпоинтов (d794004): нормализация путей + префикс API v1 из настроек.
  • Docker + CI (13bf773 Docker +220, 999210a GitLab CI +95, d92cb3e GitHub Actions +114): полный пайплайн деплоя, отдельный образ воркера.
  • mypy / типизация (bc1fc18, e484245): type stubs (hvac, jinja2), строгая типизация LLM-выводов.
  • Объём: 72 коммита за 3 месяца; пользователь — ведущий автор архитектуры (Temporal + авторизация + инфраструктура).
§04

Технические челленджи

По фактическому коду (авторство пользователя подтверждено крупными коммитами):

  • Двухслойная оркестрация Temporal × LangGraph (src/temporal/workflows.py, src/workflows/lab_graph.py): внешний слой Temporal обеспечивает надёжность (пер-активность RetryPolicy с экспоненциальным backoff: initial_interval=5s, maximum_interval=30s, backoff_coefficient=2.0, maximum_attempts=3, явный start_to_close_timeout), внутренний слой LangGraph — параллельный DAG: медицинская цепочка (consultations → health_summary → high_level) и рекомендации по образу жизни выполняются параллельно, затем сходятся в report_assembly. Правильная идиома Temporal workflow.unsafe.imports_passed_through() для импорта активностей. → Демонстрирует: durable execution, восстановление после краха воркера, параллелизм AI-пайплайна, инженерную зрелость.
  • Типобезопасный AI-пайплайн (PydanticAI + LabAnalysisState TypedDict): все LLM-выводы — Pydantic-модели; общий стейт мёржится LangGraph между параллельными ветками; абстракция провайдера Azure/Groq. → Типобезопасные LLM, тестируемость через моки.
  • Enterprise-авторизация (realm Keycloak: partner-api / internal-service / b2c; два типа токенов — service для PII, partner для PHI; DI на основе прав require_permission). → Серьёзная модель доступа к медицинским данным.
  • Медицинские стандарты: парсинг входящих HL7-сообщений, PDF (PyMuPDF), Vault для секретов. → Доменная зрелость в healthcare.
§05

AI-разработка

  • Найдено сессий: 0 по ключу с полной нормализацией пути для этого проекта (проверено). Вероятно, работа шла из монорепо / основного репозитория healthcare-platform. Подробный CLAUDE.md (365 строк) + PYTHON_SERVICE_INTEGRATION_GUIDE.md (33 КБ) — признак AI-ассистированной разработки.
  • Что делалось с AI: транскриптов здесь нет; но сам проект — это AI-сервис (оркестрация LLM), а документация структурирована под Claude Code.
  • Паттерны AI-воркфлоу: CLAUDE.md как архитектурный референс + интеграционный гайд.
§06

Достижения и метрики

  • Продакшн-микросервис медицинского AI: 6 узлов LangGraph, 2 активности Temporal, 2 API-роутера (partner/B2C), интеграция с 2 микросервисами (PII/PHI) + Vault + Keycloak.
  • Двойной CI/CD, контейнеризация API+воркера, строгая типизация (mypy) и линт (ruff).
§07

Контрибьюторы

git shortlog · все ветки

  1. Dave9344
  2. aniashev27
  3. Ramiro3
  4. Alisher Mukhtorov1
4 контрибьютора75 коммитов всего
Сейчас

Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.

Связаться