from sqlalchemy import Column, Integer, String, Date, DateTime, Float, ForeignKey, Text
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.database.base import Base
class LabOrder(Base):
__tablename__ = "lab_orders"
id = Column(Integer, primary_key=True, index=True)
patient_id = Column(Integer, ForeignKey("patients.id"), nullable=False)
doctor_id = Column(Integer, ForeignKey("doctors.id"), nullable=False)
order_date = Column(Date, nullable=False)
test_type = Column(String(100), nullable=False)
status = Column(String(50), default="ordered")
notes = Column(Text)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
class LabResult(Base):
__tablename__ = "lab_results"
id = Column(Integer, primary_key=True, index=True)
lab_order_id = Column(Integer, ForeignKey("lab_orders.id"), nullable=False)
result_date = Column(Date, nullable=False)
result_data = Column(Text)
status = Column(String(50), default="pending")
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
class DiagnosticImage(Base):
__tablename__ = "diagnostic_images"
id = Column(Integer, primary_key=True, index=True)
lab_order_id = Column(Integer, ForeignKey("lab_orders.id"), nullable=False)
image_url = Column(String(255), nullable=False)
description = Column(Text)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())