#!/usr/bin/env python3 """ Test script to verify the fix for 'NoneType' object is not iterable error in parse_ehr_chartsummarydtl function. """ import sys import os sys.path.append(os.path.join(os.path.dirname(__file__), 'ai_med_extract')) from ai_med_extract.utils.openvino_summarizer_utils import parse_ehr_chartsummarydtl def test_parse_with_none_entries(): """Test parsing with None entries in chartsummarydtl""" print("Testing parse_ehr_chartsummarydtl with None entries...") # Sample data with None entries chartsummarydtl_with_none = [ { "chartdate": "2023-01-01", "vitals": ["BP: 120/80", "Weight: 70kg"], "diagnosis": ["Hypertension"], "medications": ["Lisinopril"], "labtests": [{"name": "HbA1c", "value": "5.5"}], "radiologyorders": [{"name": "Chest X-ray"}] }, None, # None entry { "chartdate": "2023-02-01", "vitals": None, # None vitals "diagnosis": None, "medications": None, "labtests": None, "radiologyorders": None }, { "chartdate": "2023-03-01", "vitals": ["BP: 130/85"], "diagnosis": ["Diabetes"], "medications": ["Metformin"], "labtests": [None, {"name": "Creatinine", "value": "1.2"}], # None in labtests "radiologyorders": [None, {"name": "MRI"}] } ] try: visits = parse_ehr_chartsummarydtl(chartsummarydtl_with_none) print(f"āœ… Parsing successful! Parsed {len(visits)} visits.") for i, visit in enumerate(visits): print(f"Visit {i+1}: {visit}") return True except Exception as e: print(f"āŒ Parsing failed with error: {e}") return False def test_parse_normal_data(): """Test parsing with normal data""" print("\nTesting parse_ehr_chartsummarydtl with normal data...") normal_chartsummarydtl = [ { "chartdate": "2023-01-01", "vitals": ["BP: 120/80", "Weight: 70kg"], "diagnosis": ["Hypertension"], "medications": ["Lisinopril"], "labtests": [{"name": "HbA1c", "value": "5.5"}], "radiologyorders": [{"name": "Chest X-ray"}] } ] try: visits = parse_ehr_chartsummarydtl(normal_chartsummarydtl) print(f"āœ… Normal parsing successful! Parsed {len(visits)} visits.") return True except Exception as e: print(f"āŒ Normal parsing failed with error: {e}") return False if __name__ == "__main__": print("Running tests for parse_ehr_chartsummarydtl fix...") test1_passed = test_parse_with_none_entries() test2_passed = test_parse_normal_data() if test1_passed and test2_passed: print("\nšŸŽ‰ All tests passed! The fix is working correctly.") sys.exit(0) else: print("\nšŸ’„ Some tests failed. Please check the implementation.") sys.exit(1)