Spaces:
Running
Running
File size: 2,557 Bytes
542c765 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | from pydantic import BaseModel
from typing import Literal, Optional
from enum import Enum
class AnalyzeRequest(BaseModel):
image_base64: str # base64 encoded image or PDF
language: str = "EN" # HI or EN
class Finding(BaseModel):
parameter: str
value: str
unit: str
status: Literal["HIGH", "LOW", "NORMAL", "CRITICAL"]
simple_name_hindi: str
simple_name_english: str
layman_explanation_hindi: str
layman_explanation_english: str
indian_population_mean: Optional[float] = None
indian_population_std: Optional[float] = None
status_vs_india: str
normal_range: Optional[str] = None
class AnalyzeResponse(BaseModel):
is_readable: bool
report_type: Literal[
"LAB_REPORT", "DISCHARGE_SUMMARY",
"PRESCRIPTION", "SCAN_REPORT", "UNKNOWN"
]
findings: list[Finding]
affected_organs: list[str]
overall_summary_hindi: str
overall_summary_english: str
severity_level: Literal[
"NORMAL", "MILD_CONCERN",
"MODERATE_CONCERN", "URGENT"
]
dietary_flags: list[str]
exercise_flags: list[str]
ai_confidence_score: float
grounded_in: str
disclaimer: str
class ChatMessage(BaseModel):
role: Literal["user", "assistant"]
content: str
class ChatRequest(BaseModel):
message: str
history: list[ChatMessage] = []
guc: dict = {}
document_base64: Optional[str] = None # base64 image or PDF
document_type: Optional[str] = "image" # "image" or "pdf"
class ChatResponse(BaseModel):
reply: str
class NutritionRequest(BaseModel):
dietary_flags: list[str] = []
allergy_flags: list[str] = []
vegetarian: bool = True
class FoodItem(BaseModel):
food_name: str
food_name_hindi: str = ""
food_group: str = ""
energy_kcal: Optional[float] = None
protein_g: Optional[float] = None
iron_mg: Optional[float] = None
calcium_mg: Optional[float] = None
vitamin_c_mg: Optional[float] = None
vitamin_d_mcg: Optional[float] = None
fibre_g: Optional[float] = None
why_recommended: str = ""
serving_suggestion: str = ""
class NutritionResponse(BaseModel):
recommended_foods: list[FoodItem]
daily_targets: dict[str, float]
deficiencies: list[str]
class ExerciseDay(BaseModel):
day: str
activity: str
duration_minutes: int
intensity: str
notes: str = ""
class ExerciseResponse(BaseModel):
tier: str
tier_reason: str
weekly_plan: list[ExerciseDay]
restrictions: list[str]
encouragement: str
|