46 lines
2.0 KiB
Python
46 lines
2.0 KiB
Python
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) # MRN from monitor PID-3
|
|
mrn = Column(String, index=True, nullable=True) # explicit MRN (same as patient_id)
|
|
name = Column(String, nullable=True) # full name from PID-5
|
|
gender = Column(String, nullable=True) # M/F/U from PID-8
|
|
dob = Column(String, nullable=True) # YYYYMMDD from PID-7
|
|
bed_id = Column(String, nullable=True) # bed from PV1-3
|
|
|
|
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))
|