52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
# schemas.py
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, EmailStr
|
|
from enums.enums import AppointmentStatus, ClinicUserRoles, UserType
|
|
|
|
|
|
# Base schemas (shared attributes for create/read operations)
|
|
class ClinicBase(BaseModel):
|
|
name: str
|
|
address: Optional[str] = None
|
|
phone: str
|
|
email: Optional[EmailStr] = None
|
|
|
|
|
|
class DoctorBase(BaseModel):
|
|
name: str
|
|
age: Optional[int] = None
|
|
email: Optional[EmailStr] = None
|
|
phone: str
|
|
address: Optional[str] = None
|
|
clinic_id: int
|
|
|
|
|
|
class PatientBase(BaseModel):
|
|
name: str
|
|
age: Optional[int] = None
|
|
email: Optional[EmailStr] = None
|
|
phone: Optional[str] = None
|
|
address: Optional[str] = None
|
|
dob: Optional[str] = None
|
|
|
|
|
|
class AppointmentBase(BaseModel):
|
|
doctor_id: int
|
|
patient_id: int
|
|
appointment_time: datetime
|
|
status: AppointmentStatus = AppointmentStatus.CONFIRMED
|
|
|
|
|
|
class CalendarBase(BaseModel):
|
|
doc_id: int
|
|
# rrule: str # Recurrence rule in iCalendar format
|
|
time: str
|
|
|
|
|
|
class UserBase(BaseModel):
|
|
username: str
|
|
email: EmailStr
|
|
password: str
|
|
clinicRole: Optional[ClinicUserRoles] = None
|
|
userType: Optional[UserType] = None |