Старый Python-микросервис, определяет canonical normalizationId биомаркеров. Появился до loinc-harmonization-service (когда команда не знала про LOINC и придумывала свои canonical-имена). Сейчас parallel путь в тренды (ParameterV2Id vs LOINC TrendingGroupId). Целевая судьба — TS-port + merge as fallback внутри LOINC service. См. loinc-unification-direction.

Использование в BloodGPT

  • Что делает: raw biomarker name → canonical normalizationId (внутренний справочник, не LOINC)
  • Consumers: .NET API, analysis-worker (legacy путь)
  • Storage: PostgreSQL + Redis cache
  • Deploy: GCP staging EU + AF (мигрировал с Azure Jan 2026), общая нормализация для обоих регионов
  • Repo: часть BloodGPT-инфраструктуры, отдельный codebase от LOINC-сервиса

Status и направление

Production-running, parallel с LOINC-сервисом. Mar 20 1:1 (Ильдар + Артур) зафиксировано направление: Ильдар активно портирует Python LLM workflow на TypeScript, target — merge as fallback внутри LOINC service (не полный phase-out). Артур: «TS-вариант выглядит более правильным, чем то, что хранится в базе».

Сервис эволюционирует постоянно — конкретные технические детали (cache schema, queue config, worker tuning) могут устареть быстро. Эта страница описывает общую картину; точечные проблемы — в Slack-тредах и session digests.

Известная история сложностей (для контекста)

С декабря 2025 — хронические stability issues (OOM, 503s, queue backlog, cache consistency). Команда систематически работала над улучшениями: повышение Azure плана, оптимизация памяти, добавление job polling, переезд на GCP, отдельные имена очередей. Многое resolved или обошли через изменения архитектуры; часть могла устареть.

Конкретные эпизоды описаны в Slack-тредах (см. ~/Desktop/loinc-digest/normalization-digest.md, 22 треда) — здесь не дублируем.

Carry-over: при следующей verify-итерации проверить какие из исторических проблем (cache consistency, SampleMaterial mismatch, queue isolation, OOM workers) реально актуальны на 2026-04-26 и какие resolved через эволюцию.

Архитектура → Inngest direction

Сервис использует свой ad-hoc queue (Redis BZPOPMIN, worker pod), job polling, hand-coded fallbacks. Это дублирует функциональность, которую даёт inngest из коробки. Ильдар (Feb 27 2026): «каждый сервис переизобретает очереди — это дело мы изменим». Direction: pipeline-шаги переезжают в Inngest functions inside TS Mastra — параллельно с TS-портом workflow самого нормализатора.

Открытые вопросы

  • Точный current status каждой исторической проблемы — carry-over для verify-pass
  • Когда retire — зависит от прогресса loinc-unification-direction и cutover criteria

Связанные решения

Связано

  • loinc-harmonization-service — replacement target (merge as fallback)
  • loinc — стандарт
  • inngest — substrate-кандидат для замены ad-hoc queue-логики
  • team-dynamics — transparency / trust обсуждался в контексте этого сервиса (March 12 2026)
  • multi-tenant-fhir-storage — нормализация как сервис не была добавлена в ingest для B2B (FDA digest 2026-04-23)

Источники

Источники: 1.

Сноски

  1. Mar 20 1:1 (Ильдар + Артур), accessed 2026-05-17, https://github.com/Realai-plus/meeting-digests/blob/main/data/digest/2026/03/2026-03-20T13%3A09%3A00.000Z_Про_портирование_нормализации_01KM5NSEK9TYP3QZM5YYNDSF7Q.md.