API — Прогнозы¶
Префикс: /api/predictions
Требует: Bearer token, WRITE_ROLES для создания
POST /api/predictions/run¶
Запуск прогноза для пациента.
Тело:
{
"patient_id": 1
}
curl -X POST http://localhost:8000/api/predictions/run \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"patient_id": 1}'
Ответ 202:
{
"task_id": "abc-123",
"status": "processing",
"message": "Прогноз поставлен в очередь"
}
GET /api/predictions/patient/{patient_id}¶
История прогнозов пациента.
Ответ:
{
"items": [
{
"id": 7,
"patient_id": 1,
"readmission_risk": 0.35,
"complication_risk": 0.22,
"risk_level": "medium",
"gpt_explanation": "Пациент с сопутствующими...",
"created_at": "2026-06-20T14:30:00Z",
"validated": null
}
]
}
GET /api/predictions/high-risk¶
Пациенты с высоким риском (дашборд).
Query: department_id, limit
POST /api/predictions/{id}/validate¶
Валидация прогноза врачом.
Тело:
{
"is_accurate": true,
"comment": "Согласен с оценкой"
}
GET /api/predictions/export/excel¶
Экспорт прогнозов в Excel.
Лимиты тарифа¶
При превышении месячного лимита:
Ответ 402:
{
"detail": "Monthly analysis limit exceeded",
"limit": 5,
"used": 5
}
Асинхронность¶
Результат доступен после завершения Celery-задачи. Подпишитесь на WebSocket или опрашивайте GET /api/predictions/patient/{id}.
Fallback¶
Если GPT недоступен, gpt_explanation может быть null, риски рассчитываются rule-based.