65 lines
1.3 KiB
Python
65 lines
1.3 KiB
Python
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 PersonAddress(BaseModel):
|
|
category: str
|
|
region: Optional[str]
|
|
city: Optional[str]
|
|
street: Optional[str]
|
|
house: Optional[str]
|
|
flat: Optional[str]
|
|
|
|
class PersonContact(BaseModel):
|
|
category: str
|
|
value: str
|
|
|
|
class PersonDocument(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[PersonAddress]] = []
|
|
contacts: Optional[List[PersonContact]] = []
|
|
documents: Optional[List[PersonDocument]] = []
|
|
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 |