health-apps-backend/schemas/BaseSchemas.py

96 lines
2.4 KiB
Python

# schemas.py
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, EmailStr
from enums.enums import AppointmentStatus, ClinicDoctorStatus, ClinicDoctorType, ClinicUserRoles, UserType, Integration
# Base schemas (shared attributes for create/read operations)
class ClinicBase(BaseModel):
name: str
address: Optional[str] = None
phone: str
email: Optional[EmailStr] = None
integration: Integration
pms_id: str
practice_name: str
logo: Optional[str] = None
country: Optional[str] = None
postal_code: Optional[str] = None
city: Optional[str] = None
state: Optional[str] = None
abn_doc: Optional[str] = None
abn_number: Optional[str] = None
contract_doc: Optional[str] = None
clinic_phone: Optional[str] = None
is_clinic_phone_enabled: Optional[bool] = None
other_info: Optional[str] = None
greeting_msg: Optional[str] = None
voice_model: Optional[str] = None
voice_model_provider: Optional[str] = None
voice_model_gender: Optional[str] = None
scenarios: Optional[str] = None
general_info: Optional[str] = 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
class ClinicDoctorBase(BaseModel):
name: str
role: ClinicDoctorType
status: ClinicDoctorStatus
clinic_id: int
class CallTranscriptsBase(BaseModel):
patient_name:str
patient_number:str
call_duration:str
call_received_time:str
transcript_key_id:str
class NotificationBase(BaseModel):
title: str
message: str
is_read: bool
sender_id: int
receiver_id: int