| from dotenv import load_dotenv |
| from pymongo import MongoClient |
| from bson import ObjectId |
| from datetime import datetime |
| import os |
|
|
| load_dotenv(override=True) |
|
|
| |
| 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") |
|
|
| |
| 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.") |
|
|