40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
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
|