Spaces:
Runtime error
Runtime error
| """ | |
| Seed reference_ranges table in Supabase from data/reference_ranges.json | |
| Usage: | |
| cd labcard-backend | |
| python scripts/seed_reference_ranges.py | |
| Requires SUPABASE_URL and SUPABASE_SERVICE_KEY in .env | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import sys | |
| from pathlib import Path | |
| # Allow running from repo root | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from dotenv import load_dotenv | |
| load_dotenv(".env") | |
| from app.config import get_settings | |
| from app.db.supabase import get_supabase | |
| def main() -> None: | |
| settings = get_settings() | |
| if not settings.has_supabase: | |
| print("❌ SUPABASE_URL / SUPABASE_SERVICE_KEY not set in .env") | |
| sys.exit(1) | |
| db = get_supabase() | |
| if db is None: | |
| print("❌ Supabase client failed to initialise") | |
| sys.exit(1) | |
| data_file = Path(__file__).parent.parent / "data" / "reference_ranges.json" | |
| payload = json.loads(data_file.read_text()) | |
| ranges = payload["ranges"] | |
| rows = [] | |
| for r in ranges: | |
| rows.append({ | |
| "biomarker": r["name"], | |
| "std_name": r.get("std", r["name"]), | |
| "gender": r.get("gender", "A"), | |
| "age_min": r.get("age_min", 0), | |
| "age_max": r.get("age_max", 120), | |
| "normal_low": r.get("low"), | |
| "normal_high": r.get("high"), | |
| "critical_low": r.get("critical_low"), | |
| "critical_high": r.get("critical_high"), | |
| "unit": r.get("unit", ""), | |
| "category": r.get("category", "Other"), | |
| "notes": r.get("notes", ""), | |
| }) | |
| # Upsert — safe to re-run | |
| result = db.table("reference_ranges").upsert(rows, on_conflict="biomarker,gender").execute() | |
| print(f"✅ Seeded {len(rows)} reference ranges") | |
| print(f" Supabase response rows: {len(result.data)}") | |
| if __name__ == "__main__": | |
| main() | |