from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Text, JSON, ARRAY from sqlalchemy.orm import relationship from sqlalchemy.dialects.postgresql import UUID from src.config.database import Base from sqlalchemy.sql import func import uuid class PayerRule(Base): __tablename__ = 'payer_rules' id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, nullable=False) rule_name = Column(String(255), nullable=False) rule_type = Column(String(255), nullable=False) rule_description = Column(Text, nullable=False) rule_logic = Column(JSON, nullable=False) affected_cpt_codes = Column(JSON, nullable=True) affected_icd10_codes = Column(JSON, nullable=True) effective_date = Column(DateTime, nullable=False) termination_date = Column(DateTime, nullable=True) denial_count = Column(Integer, nullable=False) last_denial_date = Column(DateTime, nullable=True) payer_id = Column(UUID(as_uuid=True), ForeignKey('payers.id'), nullable=False) payer = relationship('Payer', back_populates='payerRules') created_by_user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=True) creator = relationship('User', foreign_keys=[created_by_user_id], back_populates='createdPayerRules') updated_by_user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=True) updater = relationship('User', foreign_keys=[updated_by_user_id], back_populates='updatedPayerRules') created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False) def __repr__(self): return f''