96 lines
2.4 KiB
Python
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
|