from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime from datetime import datetime, timezone from database import Base class Device(Base): __tablename__ = "devices" id = Column(Integer, primary_key=True, index=True) device_id = Column(String, unique=True, index=True) ip_address = Column(String) status = Column(String, default="active") last_seen = Column(DateTime, default=lambda: datetime.now(timezone.utc)) class Patient(Base): __tablename__ = "patients" id = Column(Integer, primary_key=True, index=True) patient_id = Column(String, unique=True, index=True) name = Column(String) class VitalReading(Base): __tablename__ = "vital_readings" id = Column(Integer, primary_key=True, index=True) device_id = Column(String, index=True) patient_id = Column(String, index=True) timestamp = Column(DateTime, index=True) heart_rate = Column(Float, nullable=True) spo2 = Column(Float, nullable=True) systolic_bp = Column(Float, nullable=True) diastolic_bp = Column(Float, nullable=True) map_bp = Column(Float, nullable=True) respiratory_rate = Column(Float, nullable=True) temperature = Column(Float, nullable=True) transmitted = Column(Boolean, default=False, index=True) class TransmissionLog(Base): __tablename__ = "transmission_logs" id = Column(Integer, primary_key=True, index=True) reading_id = Column(Integer, index=True) status = Column(String) response_code = Column(Integer, nullable=True) error_message = Column(String, nullable=True) timestamp = Column(DateTime, default=lambda: datetime.now(timezone.utc))