55 lines
1.2 KiB
Python

from datetime import datetime
from typing import Optional
from enum import Enum
from pydantic import BaseModel
class AppointmentStatus(str, Enum):
SCHEDULED = "scheduled"
CONFIRMED = "confirmed"
COMPLETED = "completed"
CANCELLED = "cancelled"
NO_SHOW = "no_show"
# Shared properties
class AppointmentBase(BaseModel):
appointment_datetime: Optional[datetime] = None
duration_minutes: Optional[int] = 30
status: Optional[AppointmentStatus] = AppointmentStatus.SCHEDULED
reason: Optional[str] = None
notes: Optional[str] = None
# Properties to receive via API on creation
class AppointmentCreate(AppointmentBase):
patient_id: int
doctor_id: int
appointment_datetime: datetime
# Properties to receive via API on update
class AppointmentUpdate(AppointmentBase):
pass
class AppointmentInDBBase(AppointmentBase):
id: Optional[int] = None
patient_id: int
doctor_id: int
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
# Additional properties to return via API
class Appointment(AppointmentInDBBase):
pass
# Additional properties stored in DB
class AppointmentInDB(AppointmentInDBBase):
pass