Hetansh Waghela commited on
Commit
3ed7a65
·
1 Parent(s): a595195

tryna fix things

Browse files
Files changed (1) hide show
  1. backend/app/models.py +15 -15
backend/app/models.py CHANGED
@@ -132,7 +132,7 @@ class Report(Base):
132
  category = Column(String(50), nullable=True, index=True) # lab/dental/mri/xray/prescription/sleep
133
  doc_type = Column(String(50), nullable=True, index=True) # blood_panel/lipid_panel/checkup/etc.
134
  classification_confidence = Column(Float, nullable=True) # 0-1
135
- classification_rules_matched = Column(JSONB, nullable=True) # List of rules that matched
136
 
137
  # Extraction results
138
  raw_text = Column(Text, nullable=True) # Full OCR text
@@ -341,7 +341,7 @@ class ProfileAnswer(Base):
341
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
342
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
343
  question_id = Column(String(100), nullable=False, index=True)
344
- answer_data = Column(JSONB, nullable=False) # { "value": any, "unit": str?, "unknown": bool, "skipped": bool }
345
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
346
  updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
347
 
@@ -475,7 +475,7 @@ class DerivedFeature(Base):
475
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
476
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
477
  feature_name = Column(String(100), nullable=False, index=True)
478
- feature_value = Column(JSONB, nullable=False)
479
  computed_at = Column(DateTime, default=datetime.utcnow, nullable=False)
480
  valid_until = Column(DateTime, nullable=True)
481
 
@@ -494,7 +494,7 @@ class ProfileRecommendation(Base):
494
  title = Column(String(500), nullable=False)
495
  description = Column(Text, nullable=True)
496
  priority = Column(Integer, default=5) # 1-10, 1 being highest
497
- evidence_jsonb = Column(JSONB, nullable=True)
498
  is_active = Column(Boolean, default=True)
499
  dismissed_at = Column(DateTime, nullable=True)
500
  completed_at = Column(DateTime, nullable=True)
@@ -552,7 +552,7 @@ class DocumentOCR(Base):
552
  document_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, unique=True, index=True)
553
 
554
  ocr_text = Column(Text, nullable=True) # Full extracted text
555
- ocr_json = Column(JSONB, nullable=True) # Page stats, confidence per page, method used
556
  extraction_method = Column(String(20), nullable=True) # text/ocr/hybrid
557
  total_chars = Column(Integer, nullable=True)
558
  total_pages = Column(Integer, nullable=True)
@@ -594,8 +594,8 @@ class HealthIndexSnapshot(Base):
594
 
595
  score = Column(Float, nullable=False) # 0-100
596
  confidence = Column(Float, nullable=True) # 0-1
597
- contributions = Column(JSONB, nullable=True) # Factor breakdown {"sleep": 0.25, "glucose": 0.18}
598
- missing_inputs = Column(JSONB, nullable=True) # What data was missing ["hba1c", "ldl"]
599
 
600
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
601
 
@@ -615,7 +615,7 @@ class ReportAISummary(Base):
615
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
616
  report_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, index=True)
617
 
618
- summary_json = Column(JSONB, nullable=False) # AI summary output
619
  model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
620
  source_hash = Column(String(64), nullable=False, index=True) # Hash of source text for cache invalidation
621
 
@@ -634,8 +634,8 @@ class ReportAIComparison(Base):
634
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
635
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
636
 
637
- report_ids_json = Column(JSONB, nullable=False) # List of report IDs being compared
638
- comparison_json = Column(JSONB, nullable=False) # AI comparison output
639
  model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
640
  source_hash = Column(String(64), nullable=False, index=True) # Hash of combined source texts
641
 
@@ -678,7 +678,7 @@ class UserSavedMedicine(Base):
678
  strength = Column(String(100), nullable=False)
679
  form = Column(String(100), nullable=False)
680
  release_type = Column(String(50), nullable=True)
681
- schedule_json = Column(JSONB, nullable=True)
682
  notes = Column(Text, nullable=True)
683
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
684
 
@@ -692,8 +692,8 @@ class SubstituteQuery(Base):
692
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
693
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
694
  query_raw = Column(Text, nullable=False)
695
- normalized_json = Column(JSONB, nullable=True)
696
- results_json = Column(JSONB, nullable=True)
697
  results_count = Column(Integer, default=0)
698
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
699
 
@@ -774,7 +774,7 @@ class Reminder(Base):
774
 
775
  # Schedule configuration
776
  schedule_type = Column(String(30), nullable=False) # fixed_times|interval|cron
777
- schedule_json = Column(JSONB, nullable=False)
778
  # schedule_json examples:
779
  # fixed_times: {"times": ["08:00", "14:00", "20:00"]}
780
  # interval: {"interval_minutes": 120, "start_time": "08:00", "end_time": "22:00"}
@@ -819,7 +819,7 @@ class ReminderEvent(Base):
819
  sent_at = Column(DateTime, default=datetime.utcnow, nullable=False)
820
  status = Column(String(20), nullable=False) # sent|failed|mocked|skipped
821
  provider = Column(String(30), nullable=False) # twilio|mock|in_app
822
- provider_response = Column(JSONB, nullable=True)
823
 
824
  # Message content (for audit)
825
  message_sent = Column(Text, nullable=True)
 
132
  category = Column(String(50), nullable=True, index=True) # lab/dental/mri/xray/prescription/sleep
133
  doc_type = Column(String(50), nullable=True, index=True) # blood_panel/lipid_panel/checkup/etc.
134
  classification_confidence = Column(Float, nullable=True) # 0-1
135
+ classification_rules_matched = Column(JSONB(), nullable=True) # List of rules that matched
136
 
137
  # Extraction results
138
  raw_text = Column(Text, nullable=True) # Full OCR text
 
341
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
342
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
343
  question_id = Column(String(100), nullable=False, index=True)
344
+ answer_data = Column(JSONB(), nullable=False) # { "value": any, "unit": str?, "unknown": bool, "skipped": bool }
345
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
346
  updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
347
 
 
475
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
476
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
477
  feature_name = Column(String(100), nullable=False, index=True)
478
+ feature_value = Column(JSONB(), nullable=False)
479
  computed_at = Column(DateTime, default=datetime.utcnow, nullable=False)
480
  valid_until = Column(DateTime, nullable=True)
481
 
 
494
  title = Column(String(500), nullable=False)
495
  description = Column(Text, nullable=True)
496
  priority = Column(Integer, default=5) # 1-10, 1 being highest
497
+ evidence_jsonb = Column(JSONB(), nullable=True)
498
  is_active = Column(Boolean, default=True)
499
  dismissed_at = Column(DateTime, nullable=True)
500
  completed_at = Column(DateTime, nullable=True)
 
552
  document_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, unique=True, index=True)
553
 
554
  ocr_text = Column(Text, nullable=True) # Full extracted text
555
+ ocr_json = Column(JSONB(), nullable=True) # Page stats, confidence per page, method used
556
  extraction_method = Column(String(20), nullable=True) # text/ocr/hybrid
557
  total_chars = Column(Integer, nullable=True)
558
  total_pages = Column(Integer, nullable=True)
 
594
 
595
  score = Column(Float, nullable=False) # 0-100
596
  confidence = Column(Float, nullable=True) # 0-1
597
+ contributions = Column(JSONB(), nullable=True) # Factor breakdown {"sleep": 0.25, "glucose": 0.18}
598
+ missing_inputs = Column(JSONB(), nullable=True) # What data was missing ["hba1c", "ldl"]
599
 
600
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
601
 
 
615
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
616
  report_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, index=True)
617
 
618
+ summary_json = Column(JSONB(), nullable=False) # AI summary output
619
  model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
620
  source_hash = Column(String(64), nullable=False, index=True) # Hash of source text for cache invalidation
621
 
 
634
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
635
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
636
 
637
+ report_ids_json = Column(JSONB(), nullable=False) # List of report IDs being compared
638
+ comparison_json = Column(JSONB(), nullable=False) # AI comparison output
639
  model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
640
  source_hash = Column(String(64), nullable=False, index=True) # Hash of combined source texts
641
 
 
678
  strength = Column(String(100), nullable=False)
679
  form = Column(String(100), nullable=False)
680
  release_type = Column(String(50), nullable=True)
681
+ schedule_json = Column(JSONB(), nullable=True)
682
  notes = Column(Text, nullable=True)
683
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
684
 
 
692
  id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
693
  user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
694
  query_raw = Column(Text, nullable=False)
695
+ normalized_json = Column(JSONB(), nullable=True)
696
+ results_json = Column(JSONB(), nullable=True)
697
  results_count = Column(Integer, default=0)
698
  created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
699
 
 
774
 
775
  # Schedule configuration
776
  schedule_type = Column(String(30), nullable=False) # fixed_times|interval|cron
777
+ schedule_json = Column(JSONB(), nullable=False)
778
  # schedule_json examples:
779
  # fixed_times: {"times": ["08:00", "14:00", "20:00"]}
780
  # interval: {"interval_minutes": 120, "start_time": "08:00", "end_time": "22:00"}
 
819
  sent_at = Column(DateTime, default=datetime.utcnow, nullable=False)
820
  status = Column(String(20), nullable=False) # sent|failed|mocked|skipped
821
  provider = Column(String(30), nullable=False) # twilio|mock|in_app
822
+ provider_response = Column(JSONB(), nullable=True)
823
 
824
  # Message content (for audit)
825
  message_sent = Column(Text, nullable=True)