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







