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







