API Endpoints
Diagnosis Prediction
POST /api/v1/diagnosis/predict
Predict disease diagnosis based on patient anamnesis.
Request Body:
{
"age": 45,
"gender": "male",
"bodyLocation": "trunk",
"symptoms": [
{
"type": "redness",
"severity": 7,
"duration": 14
}
],
"images": [
{
"url": "https://storage.blob.core.windows.net/...",
"quality": 0.95
}
]
}Response:
{
"diagnoses": [
{
"disease": "Psoriasis",
"probability": 0.85,
"confidence": "high"
},
{
"disease": "Eczema",
"probability": 0.12,
"confidence": "medium"
}
],
"metadata": {
"model_version": "v2.1.0",
"inference_time_ms": 245
}
}Red Flags Detection
POST /api/v1/diagnosis/red_flags
Detect urgent medical conditions requiring immediate attention.
Request Body: Same as diagnosis prediction
Response:
{
"hasRedFlags": true,
"flags": [
{
"type": "rapid_growth",
"severity": "high",
"description": "Lesion shows rapid growth pattern"
},
{
"type": "bleeding",
"severity": "medium",
"description": "Spontaneous bleeding reported"
}
],
"urgency": "high",
"recommendation": "Immediate physician consultation required"
}Image Quality Validation
POST /api/v1/image_quality/validate
Validate image quality and suitability for diagnosis.
Request Body:
{
"imageUrl": "https://storage.blob.core.windows.net/...",
"imageData": "base64_encoded_image_optional"
}Response:
{
"isValid": true,
"score": 0.92,
"issues": [],
"feedback": {
"blur": 0.05,
"lighting": 0.95,
"framing": 0.90
}
}Example with Issues:
{
"isValid": false,
"score": 0.45,
"issues": [
"Image is too blurry",
"Poor lighting detected",
"Lesion not properly framed"
],
"feedback": {
"blur": 0.65,
"lighting": 0.30,
"framing": 0.40
}
}Patient Triage
POST /api/v1/diagnosis/triage
Assess patient urgency and assign priority level.
Request Body: Same as diagnosis prediction
Response:
{
"priority": "high",
"urgencyScore": 8.5,
"estimatedWaitTime": "24 hours",
"recommendedAction": "physician_review_within_24h",
"reasoning": [
"Red flags detected",
"Symptoms indicate potential urgent condition"
]
}Adaptive Questionnaire
POST /api/v1/questionnaire/next
Get next question in adaptive questionnaire flow.
Request Body:
{
"previousAnswers": [
{
"questionId": "chief_complaint",
"answer": "rash"
},
{
"questionId": "duration",
"answer": "2_weeks"
}
],
"bodyLocation": "trunk"
}Response:
{
"questionId": "symptom_itching",
"questionText": "Is the rash itchy?",
"questionType": "yes_no",
"options": [
{
"value": "yes",
"label": "Yes"
},
{
"value": "no",
"label": "No"
}
],
"importance": "high",
"isRequired": true
}Questionnaire Complete:
{
"questionId": null,
"questionText": null,
"isComplete": true,
"completeness": 0.95,
"readyForDiagnosis": true
}Error Responses
All endpoints return standard error format:
400 Bad Request
{
"error": "Validation error",
"details": [
{
"field": "age",
"message": "must be between 0 and 120"
}
]
}500 Internal Server Error
{
"error": "Model inference failed",
"message": "TensorFlow model error: ..."
}503 Service Unavailable
{
"error": "Service temporarily unavailable",
"message": "Model loading in progress"
}Last updated on