import uuid from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict class SubjectPdCreate(BaseModel): subject_id: uuid.UUID pd_no: Optional[str] = None pd_type: str pd_level: Optional[str] = "GENERAL" approval_status: Optional[str] = "DRAFT" description: Optional[str] = None status: Optional[str] = "OPEN" class SubjectPdUpdate(BaseModel): pd_type: Optional[str] = None pd_level: Optional[str] = None approval_status: Optional[str] = None description: Optional[str] = None status: Optional[str] = None class SubjectPdRead(BaseModel): id: uuid.UUID study_id: uuid.UUID subject_id: uuid.UUID pd_no: str pd_type: str pd_level: str approval_status: str description: Optional[str] status: str created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class SubjectPdSummaryRead(BaseModel): id: uuid.UUID study_id: uuid.UUID subject_id: uuid.UUID subject_no: str site_id: uuid.UUID pd_no: str status: str description: Optional[str] updated_at: datetime