from datetime import date from pydantic import BaseModel from typing import Optional from uuid import UUID class ScheduleCreate(BaseModel): dept_id: UUID date: str shift_id: Optional[UUID] = None staff_id: UUID tag: str = "normal" note: Optional[str] = None original_staff_id: Optional[UUID] = None substitute_for_id: Optional[UUID] = None reason: Optional[str] = None class ScheduleUpdate(BaseModel): shift_id: Optional[UUID] = None staff_id: Optional[UUID] = None tag: Optional[str] = None note: Optional[str] = None original_staff_id: Optional[UUID] = None substitute_for_id: Optional[UUID] = None reason: Optional[str] = None class ScheduleResponse(BaseModel): id: UUID dept_id: UUID date: date shift_id: Optional[UUID] = None staff_id: UUID tag: str note: Optional[str] = None original_staff_id: Optional[UUID] = None substitute_for_id: Optional[UUID] = None reason: Optional[str] = None class Config: from_attributes = True class SwapRequest(BaseModel): source_id: UUID target_id: UUID class SubstituteRequest(BaseModel): item_id: UUID new_staff_id: UUID reason: Optional[str] = None class StopClinicRequest(BaseModel): dept_id: UUID date: str reason: Optional[str] = None