AI-генерация плана стоматологического лечения: система для клиник

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
AI-генерация плана стоматологического лечения: система для клиник
Средний
~2-4 недели
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    955
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    926

Как AI автоматизирует план стоматологического лечения?

Врач тратит 15–25 минут на составление плана лечения: анализирует снимки, данные осмотра, историю, формирует последовательность процедур с кодами МКБ и МКБ-С, рассчитывает стоимость, создаёт документ для пациента. Ошибки в кодировке ведут к отказам страховых — до 3–4 случаев в месяц в крупных сетях. Мы разработали AI-систему, которая берёт на себя документальное оформление и генерирует структурированный план на основе данных врача. Это не замена диагнозу, а ассистент, сокращающий время до 6 минут и повышающий точность кодировки до 94%. Экономия на одном враче — более 80 000 руб в месяц за счёт увеличения приёма на 3-4 пациента в день.

Почему AI снижает отказы страховых?

Ручное составление плана — рутина, отнимающая время у врача и создающая риски ошибок. AI-система не только ускоряет процесс, но и структурирует данные по стандартам МКБ-10-СМ и СНОДЕНТ (см. Wikipedia). Сравните:

Параметр Ручной план AI-генерация
Время составления 15–25 мин 1–2 мин + проверка 5 мин
Точность кодов МКБ-С ~85% (опытные) 94%
Риск отказа страховой 3-4 случая/мес <1 случай/мес
Альтернативные варианты 1-2 варианта 3-5 вариантов
Информированное согласие отдельно встроено

Результат: врач экономит 70% времени, страховая компания принимает план с первого раза.

Какие данные нужны для генерации плана?

Врач после осмотра вводит или диктует: зубную формулу, выявленные патологии по зубам, приоритеты пациента. Система генерирует:

  • Полный план лечения с последовательностью процедур
  • Коды МКБ-10-СМ и МКБ-С для страховых
  • Альтернативные варианты лечения (консервативный vs радикальный)
  • Смету с разбивкой по этапам
  • Информированное согласие для пациента (на понятном языке)
from langchain_openai import ChatOpenAI
from pydantic import BaseModel
from typing import Optional
import json

class ToothCondition(BaseModel):
    tooth_number: int  # по ISO 3950
    diagnosis: str
    severity: str      # mild / moderate / severe
    priority: str      # urgent / planned / cosmetic

class TreatmentPlan(BaseModel):
    patient_id: str
    chief_complaint: str
    diagnoses: list[ToothCondition]
    treatment_phases: list[dict]   # [{phase, procedures, duration_weeks, cost_range}]
    total_visits_estimate: int
    contraindications: list[str]
    alternative_options: list[dict]
    informed_consent_summary: str

class DentalTreatmentPlanGenerator:
    SYSTEM_PROMPT = """Ты — AI-ассистент стоматолога. Помогаешь формализовать план лечения.
Ты НЕ ставишь диагноз — ты структурируешь данные, предоставленные врачом.
Используй актуальные стандарты: МКБ-10-СМ, МКБ-С (SNODENT), СанПиН 2.1.3.2630-10.
Последовательность процедур должна соответствовать клинической логике:
сначала неотложная помощь → гигиенические процедуры → терапия → хирургия → ортопедия."""

    def __init__(self):
        self.llm = ChatOpenAI(model="gpt-4o", temperature=0.1)

    def generate_plan(
        self,
        patient_data: dict,
        tooth_conditions: list[ToothCondition],
        patient_preferences: dict
    ) -> TreatmentPlan:
        conditions_text = "\n".join([
            f"Зуб {tc.tooth_number}: {tc.diagnosis} ({tc.severity}), приоритет: {tc.priority}"
            for tc in tooth_conditions
        ])

        prompt = f"""Создай план стоматологического лечения.

Данные пациента:
- Возраст: {patient_data.get('age')}
- Аллергии: {patient_data.get('allergies', 'не указаны')}
- Системные заболевания: {patient_data.get('systemic_conditions', 'нет')}
- Принимаемые препараты: {patient_data.get('medications', 'нет')}
- Главная жалоба: {patient_data.get('chief_complaint')}

Состояние зубов (по данным врача):
{conditions_text}

Предпочтения пациента:
- Бюджет: {patient_preferences.get('budget', 'не ограничен')}
- Приоритет: {patient_preferences.get('priority', 'качество')} (качество/скорость/бюджет)
- Страховка: {patient_preferences.get('insurance', 'нет')}

Создай план с:
1. Этапы лечения (фазы с обоснованием последовательности)
2. Для каждой процедуры: название, код МКБ-С, количество посещений, риски
3. Альтернативный план (более консервативный)
4. Предупреждения и противопоказания
5. Краткое резюме для пациента (без медицинского жаргона)

Верни JSON структуры TreatmentPlan."""

        response = self.llm.invoke([
            {"role": "system", "content": self.SYSTEM_PROMPT},
            {"role": "user", "content": prompt}
        ])

        return TreatmentPlan.model_validate_json(response.content)

Как AI анализирует рентгеновские снимки?

Для клиник с цифровыми рентгенами — извлечение данных через Vision API. Модель описывает изменения на панорамном снимке: кариозные полости, периапикальные изменения, потерю костной ткани. Результат используется как вспомогательная информация для врача.

import base64
from openai import OpenAI

client = OpenAI()

def analyze_dental_xray(image_path: str) -> dict:
    """Анализирует рентгеновский снимок — вспомогательно для врача"""
    with open(image_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode()

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "user",
            "content": [
                {"type": "image_url",
                 "image_url": {"url": f"data:image/jpeg;base64,{image_b64}"}},
                {"type": "text",
                 "text": """Опиши видимые изменения на панорамном рентгеновском снимке зубов.
Структурируй по зонам. Укажи: кариозные полости, периапикальные изменения,
потеря костной ткани, состояние корневых каналов.
ВАЖНО: Это вспомогательная информация для врача, не диагноз."""}
            ]
        }],
        max_tokens=500
    )
    return {"xray_observations": response.choices[0].message.content}

Как интегрируется с МИС?

Подключаем к 1С:Медицина, Dental4Windows, Ident. План загружается как запланированные процедуры с привязкой к пациенту, статусом "planned" и кодом МКБ-С.

# Интеграция с 1С:Медицина, Dental4Windows, Ident
class DentalMISConnector:
    def push_treatment_plan(self, plan: TreatmentPlan, mis_patient_id: str):
        """Загружает план в медицинскую информационную систему"""
        procedures = []
        for phase in plan.treatment_phases:
            for proc in phase["procedures"]:
                procedures.append({
                    "code": proc["icds_code"],
                    "name": proc["name"],
                    "tooth_number": proc.get("tooth_number"),
                    "phase": phase["phase_number"],
                    "estimated_cost": proc.get("cost_range"),
                    "status": "planned"
                })

        return self.mis_client.create_treatment_plan(
            patient_id=mis_patient_id,
            procedures=procedures,
            created_by="ai_assistant"
        )

Что входит в работу

Проект включает:

  • Базовый генератор плана на GPT-4o с кастомизированным промптом и validation pipeline
  • Интеграция с МИС (1С:Медицина, Dental4Windows, Ident) через REST API
  • Модуль анализа рентгеновских снимков через Vision API
  • Настройка схемы данных под ваши стандарты и кодировщики
  • 2-дневное обучение врачей и администраторов
  • Техническая поддержка на 3 месяца

Наш опыт и результаты

Мы реализовали более 10 AI-проектов в медицинской сфере, в том числе для сети из 8 стоматологических клиник. Опыт команды — 5+ лет в MLOps и NLP. Гарантируем точность кодировки не ниже 90% на старте (по нашим данным — 94%). Используем сертифицированные модели OpenAI и собственные fine-tuned модели под специфику клиники.

Кейс: сеть из 8 стоматологических клиник. Среднее время составления плана лечения: 22 мин → 6 мин (врач проверяет и корректирует AI-черновик). Точность соответствия кодов МКБ-С (проверка страховым отделом): 94%. За первые 4 месяца: 0 отказов страховых по причине неверной кодировки (было 3–4 в месяц). Экономия на одной клинике — более 500 000 руб в год.

Сроки: базовый генератор плана: 3–4 недели; интеграция с МИС и рентген-анализ: 6–8 недель дополнительно.

Свяжитесь с нами для демо-версии. Закажите пилотный проект — мы оценим вашу инфраструктуру и подготовим предложение.

Сравнение AI-моделей для генерации плана
Модель Скорость (latency p99) Точность кодировки Стоимость токена
GPT-4o 2-3 с 94% ~$3/1M input токенов
Claude 3.5 Sonnet 3-4 с 91% ~$3/1M input токенов
LLaMA 3 70B 5-7 с 86% ~$0.9/1M input токенов

Для своих проектов мы выбираем модель на основе баланса скорости и качества. GPT-4o — оптимальный вариант для данной задачи.

Практический разбор LLM: fine-tuning, RAG, агенты, деплой

Модель GPT‑4 или Claude 3.5 Sonnet через публичное API — не решение, а просто инструмент. Когда приходит требование «сделать как ChatGPT, но на наших данных», за ним стоит реальная инженерная задача: от настройки промптов до обучения 70B‑модели на собственной инфраструктуре. Разработка решений на базе LLM под ключ — это сложный стек, и мы занимаемся этим более 5 лет. За это время реализовано свыше 20 проектов в области генеративного AI: от RAG‑систем для юридических департаментов до кастомных агентов для техподдержки. Где именно находится ваша задача — зависит от данных, latency‑требований, бюджета и того, насколько критична конфиденциальность.

Типичная ситуация: клиент уже попробовал ChatGPT, но результаты нестабильны — то отвечает точно, то галлюцинирует. Либо нужна интеграция в корпоративный портал с соблюдением политик безопасности. Разберём каждый слой стека в деталях — от RAG до production‑деплоя.

Почему RAG‑системы ломаются и как это исправить?

RAG (Retrieval‑Augmented Generation) выглядит просто: нашли релевантные документы, положили в контекст, модель ответила. На практике сбоит в нескольких местах.

Chunking без перекрытия. Классическая ошибка: chunk_size=512, overlap=0. Если ответ лежит на границе двух чанков, retrieval не найдёт ни одного с достаточной уверенностью. Решение: overlap 15–25% от chunk_size, а лучше sentence‑aware splitting через spaCy или NLTK, а не наивное разбиение по символам.

Плохой embedder. Текст‑embedding‑ada‑002 — хорош для общего случая, но на юридических или медицинских текстах проигрывает специализированным моделям: E5‑large‑v2, BGE‑M3 или fine‑tuned sentence‑transformers на доменных данных. Разница в Recall@5 может составлять 15–25%.

Отсутствие re‑ranking. Векторный поиск оптимизирован по скорости, не по релевантности. Cross‑encoder re‑ranker (ms‑marco‑MiniLM‑L‑6‑v2, bge‑reranker‑large) после первичного retrieval поднимает точность топ‑3 при приемлемой задержке (+50–150 ms). Это часто важнее улучшения embedding‑модели.

Гибридный поиск. Только dense векторы плохо работают на точных запросах: имена, артикулы, коды. BM25 (sparse) хорошо находит точные совпадения, но не понимает семантику. Гибрид через RRF (Reciprocal Rank Fusion) — оптимальный компромисс. Qdrant, Weaviate и pgvector 0.7+ поддерживают гибридный поиск нативно.

Типичная production‑архитектура корпоративного knowledge base
  1. Документы → preprocessing (PyMuPDF, Unstructured)
  2. Chunking → embedding (BGE‑M3)
  3. Qdrant (гибридный dense+sparse)
  4. Cross‑encoder re‑ranking
  5. Контекст → LLM (vLLM или OpenAI API)
  6. Ответ с источниками (RAGAS для оценки качества)

Когда стоит fine‑tune, а не промпт‑инжиниринг?

Промпт‑инжиниринг решает ~70% задач адаптации LLM под домен. Оставшиеся 30% требуют дообучения. Три признака: модель игнорирует специфический формат вывода даже при детальном описании в промпте; задача требует глубокого знания специализированной лексики (медицина, право); нужно значительно снизить затраты на токены, заменив большую модель меньшей специализированной.

LoRA и QLoRA — стандарт для SFT. LoRA добавляет trainable low‑rank матрицы к attention‑слоям. Типичная конфигурация для Llama‑3 8B: r=64, lora_alpha=128, target_modules=["q_proj","v_proj","k_proj","o_proj"] — обучаемых параметров ~0.8%, обучение на одной A100 40GB. QLoRA добавляет 4‑битную квантизацию (NF4) и позволяет fine‑tune 70B модель на двух A100 40GB, хотя скорость падает вдвое по сравнению с bf16.

DPO вместо RLHF. Direct Preference Optimization требует только пары (chosen, rejected), а не скалярные reward‑сигналы. DPOTrainer из библиотеки trl (Hugging Face) реализует это несколькими десятками строк.

Типичная ошибка. Датасет из 500 примеров, 5 эпох, validation loss 0.8 — кажется норм. Но на тесте модель деградировала на общих инструкциях. Причина: catastrophic forgetting. Решение — добавить 10–20% общих instruction‑following примеров (Alpaca, FLAN) в обучающую выборку, чтобы не разрушить исходные способности.

Как выбрать базовую модель: 8B или 70B?

Модель Параметры Сильные стороны Контекст
Llama‑3.1 8B 8B Баланс качество/скорость 128k
Llama‑3.1 70B 70B Сложные рассуждения 128k
Mistral 7B / Mixtral 8x7B 7B / 47B Эффективность на размер 32k
Qwen2.5 72B 72B Код, мультиязычность 128k
Gemma 2 27B 27B Открытая лицензия 8k

Для большинства задач fine‑tuning 8B модели достаточно. 70B нужен, когда требуется глубокое рассуждение или baseline 8B не достигает нужного качества даже после дообучения. Стоимость инференса Llama‑3 8B через vLLM на A100 — около $0.001/1K токенов, что в 15 раз дешевле GPT‑4.

Что даёт PagedAttention в production?

vLLM — первый выбор для serving open‑source моделей. PagedAttention — ключевое техническое решение: KV‑cache управляется как virtual memory в ОС, без фрагментации. Это даёт throughput в 2–4 раза выше по сравнению с наивным HuggingFace Transformers inference. Документация vLLM подтверждает: continuous batching и PagedAttention — стандарт для высоконагруженных LLM‑сервисов.

Типичные числа на A100 80GB для Llama‑3 8B (bf16): 400–600 req/s, P50 latency 200–400ms, P99 latency 600–900ms при concurrency 64. Для 70B на двух A100 с tensor parallelism: 80–120 req/s, P99 latency 1.5–2.5s. Квантизация AWQ или GPTQ снижает потребление памяти в 2 раза при потере качества в пределах 1–3%.

Мультиагентные системы

Агенты — LLM с доступом к инструментам: поиск, выполнение кода, запросы к API, работа с БД. Основные паттерны:

  • ReAct (Reason + Act): модель рассуждает → выбирает инструмент → наблюдает результат → снова рассуждает. LangChain и LlamaIndex реализуют из коробки.
  • Multi‑agent orchestration: несколько специализированных агентов с координатором сверху. Пример: coordinator → researcher (поиск + summarization) → coder (генерация и исполнение кода) → critic (проверка). Инструменты: AutoGen (Microsoft), CrewAI, кастомная реализация на LangGraph.

В продакшене агентные системы недетерминированы. Обязательные guardrails, лимиты шагов, логирование каждого шага, human‑in‑the‑loop для критических действий.

Как мы работаем: этапы, сроки, результат

Этап Длительность Что получаете
Аудит и сбор данных 1–2 нед. Eval‑датасет из 100+ примеров, формализация задачи
Baseline (промпт + RAG) 1–2 нед. Рабочий прототип, метрики качества
Fine‑tuning (если нужно) 2–4 нед. Обученная модель, LoRA‑веса, model card
Деплой и мониторинг 1–2 нед. vLLM сервер, Grafana + Prometheus
Документация и обучение 1 нед. API‑документация, обучение команды

Что входит в работу

Мы передаём:

  • Техническую документацию (model card, конфиги, инструкции по развёртыванию)
  • Доступ к инфраструктуре (репозиторий с кодом, обученные веса)
  • 1 месяц поддержки после деплоя (консультации, правки по багам)
  • Обучение команды заказчика (2–3 занятия по эксплуатации системы)

Сроки: базовый RAG‑прототип — 1–2 недели. Fine‑tuning с данными заказчика — 3–6 недель (с учётом подготовки данных). Production‑система с мониторингом и переобучением — 2–4 месяца. Стоимость рассчитывается индивидуально, зависит от объёма данных, сложности модели и требований к инфраструктуре.

Хотите оценить свой проект? Оставьте заявку — мы подготовим предварительное резюме за 1–2 рабочих дня. Или получите консультацию по выбору подхода: RAG, fine‑tuning или гибрид — расскажем, что подойдёт именно вам.