from rag.condition_evaluation import ( ConditionEvaluationOutcome, summarize_condition_outcomes, ) def test_condition_metrics_are_separate_and_unsupported_drugs_are_counted(): rows = [ ConditionEvaluationOutcome( case_id="hta", expected_intent="condition_to_drug", actual_intent="condition_to_drug", expected_condition="tăng huyết áp", actual_condition="tăng huyết áp", expected_clarification=False, actual_clarification=False, expected_relation="indication", actual_relation="indication", expected_drug_ids=("a", "b"), retrieved_drug_ids=("a", "b"), generated_drug_ids=("a", "d"), retrieved_section_keys=("chi_dinh", "chi_dinh"), citation_validity=(True, False), grounded_claims=(True, False), expected_patient_fields=(("renal.stage", "G4"),), actual_patient_fields=(("renal.stage", "G4"),), expected_safety_facets=("renal", "interaction"), retrieved_safety_facets=("renal",), ) ] metrics = summarize_condition_outcomes(rows) assert metrics["intent_accuracy"] == 1.0 assert metrics["section_correctness"] == 1.0 assert metrics["unsupported_drug_rate"] == 0.5 assert metrics["citation_correctness"] == 0.5 assert metrics["patient_context_extraction_accuracy"] == 1.0 assert metrics["safety_evidence_retrieval_accuracy"] == 0.5