"""TrialCandidate v1 -- Normalized ClinicalTrials MCP search results.""" from __future__ import annotations from typing import Optional from pydantic import BaseModel, Field class TrialLocation(BaseModel): country: str city: Optional[str] = None class AgeRange(BaseModel): min: Optional[int] = None max: Optional[int] = None class EligibilityText(BaseModel): inclusion: str exclusion: str class TrialCandidate(BaseModel): nct_id: str = Field(description="NCT identifier e.g. 'NCT01234567'") title: str conditions: list[str] = Field(default_factory=list) phase: Optional[str] = None status: Optional[str] = None locations: list[TrialLocation] = Field(default_factory=list) age_range: Optional[AgeRange] = None fingerprint_text: str = Field(description="Short text for Gemini reranking") eligibility_text: Optional[EligibilityText] = None