Как 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 — оптимальный вариант для данной задачи.







