from pydantic import BaseModel from pydantic.types import UUID4, Json from typing import List, Optional, Any from datetime import date, datetime class Person(BaseModel): full_name: str birth_date: date class MedicalCardResponse(BaseModel): id: UUID4 number: Optional[str] person: Person created_at: Optional[datetime] class MedicalCardCreate(BaseModel): number: str person_id: UUID4 class MedicalCardBase(BaseModel): id: UUID4 class Config: orm_mode = True class AddressCreate(BaseModel): category: str region: Optional[str] city: Optional[str] street: Optional[str] house: Optional[str] flat: Optional[str] class ContactCreate(BaseModel): category: str value: str class DocumentCreate(BaseModel): category: str series: str number: str issued_by: str issued_at: Optional[date] attachments: Optional[List[str]] class PersonDetail(BaseModel): first_name: str last_name: str patronymic: Optional[str] gender: Optional[str] birth_date: Optional[date] addresses: Optional[List[AddressCreate]] = [] contacts: Optional[List[ContactCreate]] = [] documents: Optional[List[DocumentCreate]] = [] photos: Optional[List[str]] = [] class MedicalCardDetail(BaseModel): id: UUID4 number: str created_at: datetime person_id: UUID4 person: Optional[PersonDetail] class Config: orm_mode = True