TheJackBright's picture
Deploy GitHub root master to Space
c296d62
"""API schemas."""
from __future__ import annotations
from typing import Any, Optional
from pydantic import BaseModel, ConfigDict, Field
from app.common.enums import ActionType, DecisionMode, Difficulty, DoseBucket, SubEnvironment
class StrictSchema(BaseModel):
model_config = ConfigDict(extra="forbid")
class ResetRequest(StrictSchema):
task_id: Optional[str] = None
seed: Optional[int] = None
difficulty: Optional[Difficulty] = None
sub_environment: Optional[SubEnvironment] = None
scenario_id: Optional[str] = None
patient_id: Optional[str] = None
class StepRequest(StrictSchema):
mode: DecisionMode
action_type: ActionType
target_drug: Optional[str] = None
replacement_drug: Optional[str] = None
dose_bucket: DoseBucket
taper_days: Optional[int] = None
monitoring_plan: Optional[str] = None
evidence_query: Optional[str] = None
new_drug_name: Optional[str] = None
candidate_components: list[str] = Field(default_factory=list)
candidate_id: str
confidence: float
rationale_brief: str
class StepCandidateRequest(StrictSchema):
candidate_id: str
confidence: float
rationale_brief: str
class OrchestrateRequest(StrictSchema):
coordination_mode: Optional[str] = None
class BatchInferRequest(StrictSchema):
batch_size: int = 4
class EvidenceQueryRequest(StrictSchema):
query: str
top_k: int = 5
class MedicationAlternativesRequest(StrictSchema):
"""FDA / external tool: suggest other labeled drugs in a similar pharmacologic class."""
query_drug: Optional[str] = None
regimen_drugs: list[str] = Field(default_factory=list)
max_suggestions: int = Field(default=10, ge=1, le=25)