cdss-backend / dataFusion /tests /test_data.py
shak3008's picture
Deploy CDSS Multi-Agent Biomedical System
82d7112
Raw History Blame Contribute Delete
7.88 kB
"""Reusable mock data structures for Clinical Data Fusion tests."""
from app.schemas import (
Agent2Output,
Agent3Output,
ConflictEvidence,
EvidencePriority,
KnowledgeGraphEvidence,
MedicalEvidence,
MergedFinding,
RAGEvidence,
Relationship,
SourceTraceability,
SupportingEvidence,
UnifiedClinicalContext,
)
VALID_AGENT2_OUTPUT = Agent2Output(
rag_evidence=[
RAGEvidence(
retrieved_literature=[
" ST-elevation myocardial infarction (STEMI) requires immediate reperfusion. ",
"Patient exhibits acute chest pain."
],
similarity_score=0.92,
confidence_score=0.88,
supporting_research_info=["Research paper on reperfusion timing."]
)
],
kg_evidence=[
KnowledgeGraphEvidence(
disease_info="ami",
relationships=[
Relationship(source="AMI", target="SOB", type="associated_symptom"),
Relationship(source="AMI", target="aspirin", type="treatment_option")
],
confidence_score=0.85
)
]
)
VALID_AGENT3_OUTPUT = Agent3Output(
medical_evidence=[
MedicalEvidence(
latest_evidence="Administer Aspirin 325 mg orally. Contraindicated in patients with active aspirin allergy or severe bleeding.",
pubmed_articles=[],
europe_pmc_articles=[],
clinical_guidelines=[
"A 12-lead Electrocardiogram (ECG) must be performed immediately for patients presenting with chest pain.",
"Beta-blockers may be considered if no contraindications are present."
],
abstracts=["Abstract on acute coronary syndrome treatments."],
source_info={"database": "guideline_clearinghouse"}
)
]
)
VALID_FUSION_REQUEST_DICT = {
"agent2_output": {
"rag_evidence": [
{
"retrieved_literature": [
" ST-elevation myocardial infarction (STEMI) requires immediate reperfusion. ",
"Patient exhibits acute chest pain."
],
"similarity_score": 0.92,
"confidence_score": 0.88,
"supporting_research_info": ["Research paper on reperfusion timing."]
}
],
"kg_evidence": [
{
"disease_info": "ami",
"relationships": [
{"source": "AMI", "target": "SOB", "type": "associated_symptom"},
{"source": "AMI", "target": "aspirin", "type": "treatment_option"}
],
"confidence_score": 0.85
}
]
},
"agent3_output": {
"medical_evidence": [
{
"latest_evidence": "Administer Aspirin 325 mg orally. Contraindicated in patients with active aspirin allergy or severe bleeding.",
"pubmed_articles": [],
"europe_pmc_articles": [],
"clinical_guidelines": [
"A 12-lead Electrocardiogram (ECG) must be performed immediately for patients presenting with chest pain.",
"Beta-blockers may be considered if no contraindications are present."
],
"abstracts": ["Abstract on acute coronary syndrome treatments."],
"source_info": {"database": "guideline_clearinghouse"}
}
]
}
}
EXPECTED_RULE_BASED_CONTEXT = UnifiedClinicalContext(
merged_findings=[
MergedFinding(finding="Electrocardiogram (ECG)", sources=["Latest Medical Evidence"]),
MergedFinding(finding="Aspirin", sources=["Knowledge Graph", "Latest Medical Evidence"]),
MergedFinding(finding="Acute Myocardial Infarction", sources=["Knowledge Graph"]),
MergedFinding(finding="Shortness of Breath", sources=["Knowledge Graph"]),
],
normalized_medical_terms=[
"Electrocardiogram (ECG)",
"Aspirin",
"Acute Myocardial Infarction",
"Shortness of Breath",
],
supporting_evidence=[
SupportingEvidence(finding="Electrocardiogram (ECG)", source_attribution="Latest Medical Evidence"),
SupportingEvidence(finding="Aspirin", source_attribution="Knowledge Graph, Latest Medical Evidence"),
SupportingEvidence(finding="Acute Myocardial Infarction", source_attribution="Knowledge Graph"),
SupportingEvidence(finding="Shortness of Breath", source_attribution="Knowledge Graph"),
],
conflicting_evidence=[
ConflictEvidence(
type="Treatment Conflict",
finding="Aspirin",
description="Treatment 'Aspirin' is suggested by some findings, but another source warns: 'Administer Aspirin 325 mg orally. Contraindicated in patients with active aspirin allergy or severe bleeding.'"
)
],
evidence_priority=[
EvidencePriority(finding="Electrocardiogram (ECG)", priority_score=1.0, primary_source="Latest Medical Evidence"),
EvidencePriority(finding="Aspirin", priority_score=1.0, primary_source="Knowledge Graph"),
EvidencePriority(finding="Acute Myocardial Infarction", priority_score=0.8, primary_source="Knowledge Graph"),
EvidencePriority(finding="Shortness of Breath", priority_score=0.8, primary_source="Knowledge Graph"),
],
source_traceability=[
SourceTraceability(finding="Electrocardiogram (ECG)", sources=["Latest Medical Evidence"], upstream_agents=["Agent 3"]),
SourceTraceability(finding="Aspirin", sources=["Knowledge Graph", "Latest Medical Evidence"], upstream_agents=["Agent 2", "Agent 3"]),
SourceTraceability(finding="Acute Myocardial Infarction", sources=["Knowledge Graph"], upstream_agents=["Agent 2"]),
SourceTraceability(finding="Shortness of Breath", sources=["Knowledge Graph"], upstream_agents=["Agent 2"]),
],
fusion_summary="Clinical Data Fusion consolidated 4 medical finding(s) across Agent 2 and Agent 3 evidence sources. Identified 1 conflict(s).",
confidence_score=0.89,
)
EXPECTED_LLM_RESULT_DICT = {
"unified_context": {
"merged_findings": [
{"finding": "Acute Myocardial Infarction", "sources": ["Knowledge Graph", "Biomedical RAG"]},
{"finding": "Aspirin 325 mg", "sources": ["Latest Medical Evidence"]}
],
"normalized_medical_terms": [
"Acute Myocardial Infarction",
"Shortness of Breath",
"Electrocardiogram (ECG)",
"Aspirin 325 mg"
],
"supporting_evidence": [
{"finding": "Acute Myocardial Infarction", "source_attribution": "Knowledge Graph, Biomedical RAG"},
{"finding": "Aspirin 325 mg", "source_attribution": "Latest Medical Evidence"}
],
"conflicting_evidence": [
{
"type": "Treatment Conflict",
"finding": "Aspirin",
"description": "Suggested by guidelines, but contraindicated if patient has severe aspirin allergy."
}
],
"evidence_priority": [
{"finding": "Aspirin 325 mg", "priority_score": 1.0, "primary_source": "Latest Medical Evidence"},
{"finding": "Acute Myocardial Infarction", "priority_score": 0.8, "primary_source": "Knowledge Graph"}
],
"source_traceability": [
{"finding": "Acute Myocardial Infarction", "sources": ["Knowledge Graph", "Biomedical RAG"], "upstream_agents": ["Agent 2"]},
{"finding": "Aspirin 325 mg", "sources": ["Latest Medical Evidence"], "upstream_agents": ["Agent 3"]}
],
"fusion_summary": "Llama 3.1 enhanced semantic fusion of clinical evidence.",
"confidence_score": 0.95
}
}
VALID_LLM_FUSION_RESULT = EXPECTED_LLM_RESULT_DICT