CPS-API / models /schemas.py
Ali2206's picture
Update models/schemas.py
2912388 verified
from pydantic import BaseModel, EmailStr
from typing import Optional, List, Literal
from datetime import date, time
# --- USER SCHEMAS ---
class SignupForm(BaseModel):
email: EmailStr
password: str
full_name: str
role: Literal['admin', 'doctor', 'patient']
class TokenResponse(BaseModel):
access_token: str
token_type: str
# --- DOCTOR CREATION SCHEMA (Admin use only) ---
class DoctorCreate(BaseModel):
matricule: str
email: EmailStr
password: str
full_name: str
specialty: str # ✅ added field
# --- CONTACT INFO ---
class ContactInfo(BaseModel):
email: Optional[EmailStr] = None
phone: Optional[str] = None
# --- PATIENT SCHEMA ---
class PatientCreate(BaseModel):
full_name: str
date_of_birth: date
gender: str
notes: Optional[str] = ""
address: Optional[str] = None
national_id: Optional[str] = None
blood_type: Optional[str] = None
allergies: Optional[List[str]] = []
chronic_conditions: Optional[List[str]] = []
medications: Optional[List[str]] = []
emergency_contact_name: Optional[str] = None
emergency_contact_phone: Optional[str] = None
insurance_provider: Optional[str] = None
insurance_policy_number: Optional[str] = None
contact: Optional[ContactInfo] = None
# --- APPOINTMENT SCHEMA ---
class AppointmentCreate(BaseModel):
patient_id: str # MongoDB ObjectId as string
doctor_id: str # MongoDB ObjectId as string
date: date
time: time
reason: Optional[str] = None