File size: 908 Bytes
ec9e535 e46883d ec9e535 | 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 | """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
|