from dotenv import load_dotenv from pymongo import MongoClient from bson import ObjectId from datetime import datetime import os load_dotenv(override=True) # --- Setup --- DB_URI = os.getenv("MONGODB_URI", "mongodb://localhost:27017") DB_NAME = os.getenv("MONGODB_DB", "sheami") client = MongoClient(DB_URI) db = client[DB_NAME] reports = db["reports"] migrated_count = 0 cursor = reports.find({"parsed_data.tests": {"$exists": True}}) for doc in cursor: parsed = doc.get("parsed_data", {}) tests = parsed.get("tests", []) report_date = parsed.get("report_date") # Transform old tests -> new lab_results lab_results = [] for t in tests: lab_results.append({ "test_name": t.get("name"), "result_value": str(t.get("value", "")), "test_unit": t.get("unit", ""), "test_reference_range": { "min": None, "max": None, "raw": t.get("reference_range") }, "test_date": report_date, "inferred_range": None, }) parsed_data_v2 = { "original_report_file_name": doc.get("file_name", ""), "patient_info": {}, "lab_results": lab_results, "diagnosis": [], "recommendations": [] } reports.update_one( {"_id": doc["_id"]}, {"$set": {"parsed_data_v2": parsed_data_v2}} ) migrated_count += 1 print(f"✅ Migration complete. Migrated {migrated_count} reports.")