2023-05-12 22:03:44 +01:00
|
|
|
"""This module defines the SQL data model for devices."""
|
|
|
|
|
|
|
|
import enum
|
|
|
|
|
|
|
|
from sqlalchemy import Column, ForeignKey, Integer, String, DateTime, Uuid
|
|
|
|
from sqlalchemy.sql.functions import now
|
|
|
|
from sqlalchemy.orm import relationship
|
|
|
|
|
|
|
|
from backend.database.engine import Base
|
2023-05-15 09:34:31 +01:00
|
|
|
from backend.models import records
|
2023-05-12 22:03:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
class DeviceModel(Base):
|
|
|
|
"""Model for the device_model table."""
|
|
|
|
|
|
|
|
__tablename__ = "device_models"
|
|
|
|
|
|
|
|
id = Column('id', Integer, primary_key=True, autoincrement=True, index=True)
|
|
|
|
name = Column('name', String, unique=True, nullable=False)
|
|
|
|
picture_code = Column('picture_code', String, unique=True, nullable=False)
|
|
|
|
|
|
|
|
instances = relationship("Device", back_populates="model", uselist=True, cascade="all, delete")
|
|
|
|
|
|
|
|
|
|
|
|
class Device(Base):
|
|
|
|
"""Model for the devices table."""
|
|
|
|
|
|
|
|
__tablename__ = "devices"
|
|
|
|
|
|
|
|
id = Column('id', Integer, primary_key=True, autoincrement=True, index=True)
|
|
|
|
added = Column('added', DateTime(timezone=True), nullable=False, server_default=now())
|
|
|
|
last_seen = Column('last_seen', DateTime(timezone=True), nullable=True, server_default=None)
|
|
|
|
model_id = Column('model_id', Integer, ForeignKey('device_models.id', ondelete="CASCADE"), nullable=False)
|
|
|
|
owner_id = Column('owner_id', Integer, ForeignKey('patients.user_id', ondelete="CASCADE"), nullable=False)
|
|
|
|
|
|
|
|
model = relationship(DeviceModel, back_populates="instances", uselist=False)
|
|
|
|
owner = relationship("Patient", back_populates="devices", uselist=False)
|
2023-05-13 04:06:23 +01:00
|
|
|
|
2023-05-15 09:34:31 +01:00
|
|
|
heart_rate_records = relationship(records.HeartRateRecord, back_populates="device", uselist=True, cascade="all, delete")
|
|
|
|
avpu_score_records = relationship(records.AvpuScoreRecord, back_populates="device", uselist=True, cascade="all, delete")
|
|
|
|
blood_pressure_records = relationship(records.BloodPressureRecord, back_populates="device", uselist=True, cascade="all, delete")
|
|
|
|
blood_oxygen_records = relationship(records.BloodOxygenRecord, back_populates="device", uselist=True, cascade="all, delete")
|
|
|
|
body_temperature_records = relationship(records.BodyTemperatureRecord, back_populates="device", uselist=True, cascade="all, delete")
|
|
|
|
respiration_score_records = relationship(records.RespirationScoreRecord, back_populates="device", uselist=True, cascade="all, delete")
|