visus-plus/api/app/domain/models/appointments.py

26 lines
1.1 KiB
Python

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.domain.models.base import BaseModel
from app.settings import settings
class Appointment(BaseModel):
__tablename__ = 'appointments'
__table_args__ = {"schema": settings.SCHEMA}
results = Column(String)
days_until_the_next_appointment = Column(Integer)
appointment_datetime = Column(DateTime, nullable=False, server_default=func.now())
patient_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.patients.id', ondelete='CASCADE'), nullable=False)
doctor_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.users.id', ondelete='SET NULL'), nullable=True)
type_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.appointment_types.id', ondelete='CASCADE'), nullable=False)
patient = relationship('Patient', back_populates='appointments')
doctor = relationship('User', back_populates='appointments')
type = relationship('AppointmentType', back_populates='appointments')
files = relationship('AppointmentFile', back_populates='appointment', cascade="all, delete")