import uuid from datetime import date, datetime from typing import Optional from pydantic import BaseModel, ConfigDict class VisitCreate(BaseModel): subject_id: uuid.UUID visit_code: str planned_date: Optional[date] = None window_start: Optional[date] = None window_end: Optional[date] = None class VisitUpdate(BaseModel): actual_date: Optional[date] = None status: Optional[str] = None notes: Optional[str] = None class VisitRead(BaseModel): id: uuid.UUID study_id: uuid.UUID subject_id: uuid.UUID visit_code: str planned_date: Optional[date] actual_date: Optional[date] status: str window_start: Optional[date] window_end: Optional[date] notes: Optional[str] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)