146 lines
3.5 KiB
Python
146 lines
3.5 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
|
|
|
|
class SNSBase(BaseModel):
|
|
Type: str
|
|
MessageId: str
|
|
Token: str
|
|
TopicArn: str
|
|
SubscribeURL: str
|
|
Message: str
|
|
|
|
class AuthOTP(BaseModel):
|
|
email: EmailStr
|
|
otp: str
|
|
|
|
class ClinicFileVerificationBase(BaseModel):
|
|
abn_doc_is_verified: Optional[bool] = None
|
|
contract_doc_is_verified: Optional[bool] = None
|
|
logo_is_verified: Optional[bool] = None
|
|
last_changed_by: Optional[int] = None
|
|
|
|
|
|
class SignupPricingMasterBase(BaseModel):
|
|
setup_fees: Optional[float] = None
|
|
subscription_fees: Optional[float] = None
|
|
per_call_charges: Optional[float] = None
|
|
|
|
class AuthBase(BaseModel):
|
|
email: EmailStr
|
|
password: str
|
|
|
|
|
|
class ResetPasswordBase(BaseModel):
|
|
token: str
|
|
password: str
|
|
|
|
class CreateSuperAdmin(BaseModel):
|
|
username:str
|
|
email:EmailStr
|
|
|
|
# Base schemas (shared attributes for create/read operations)
|
|
class ClinicBase(BaseModel):
|
|
name: str
|
|
address: Optional[str] = None
|
|
phone: str
|
|
emergency_phone: Optional[str] = None
|
|
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
|
|
creator_id: Optional[int] = None
|
|
fax: 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 MasterAppointmentTypeBase(BaseModel):
|
|
type: str
|
|
|
|
class UserBase(BaseModel):
|
|
username: str
|
|
email: EmailStr
|
|
password: str
|
|
clinicRole: Optional[ClinicUserRoles] = None
|
|
userType: Optional[UserType] = None
|
|
mobile: Optional[str] = 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
|
|
|
|
|
|
class ClinicOffersBase(BaseModel):
|
|
clinic_email: str
|
|
setup_fees_waived: bool
|
|
special_offer_for_month: str
|
|
|