File size: 4,137 Bytes
402b8ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"""Integration test — validates the full agent pipeline."""
import sys
sys.path.insert(0, '.')

from intent_parser import parse_intent
from health_store import HealthStore
from agent_engine import run_agent

def test_full_pipeline():
    store = HealthStore()
    print("=" * 60)
    print("THUNA INTEGRATION TEST")
    print("=" * 60)

    # 1. Add condition
    r = run_agent("I have diabetes", store)
    assert r.intent_type == "add_condition", f"Expected add_condition, got {r.intent_type}"
    assert r.badge == "🏥"
    print("✓ Add condition: diabetes")

    # 2. Add medication
    r = run_agent("metformin 500mg twice daily after food", store)
    assert r.intent_type == "add_medication", f"Expected add_medication, got {r.intent_type}"
    assert r.badge == "💊 ⏰"
    assert len(r.tools_executed) >= 2
    print("✓ Add medication: metformin 500mg")

    # 3. Add BP vital
    r = run_agent("BP 145/92", store)
    assert r.intent_type == "add_vital", f"Expected add_vital, got {r.intent_type}"
    assert r.badge == "❤️"
    assert r.alert and "ഉയർന്നത" in r.alert  # High BP alert in Malayalam
    print(f"✓ Add vital (BP 145/92) — Alert: {r.alert[:30]}...")

    # 4. Add sugar vital (high - compound risk)
    r = run_agent("sugar 250", store)
    assert r.intent_type == "add_vital"
    assert r.alert  # Should trigger alert (diabetes + high sugar)
    print(f"✓ Add vital (sugar 250) — Alert: {r.alert[:30]}...")

    # 5. Mark taken
    r = run_agent("took metformin", store)
    assert r.intent_type == "mark_taken"
    assert r.badge == "✅"
    print("✓ Mark taken: metformin")

    # 6. Query medications
    r = run_agent("my medicines", store)
    assert r.intent_type == "query_medications"
    assert "metformin" in r.context_for_llm.lower() or "Metformin" in r.context_for_llm
    print("✓ Query medications")

    # 7. Query today's doses
    r = run_agent("did I take medicine today", store)
    assert r.intent_type == "query_today_doses"
    print("✓ Query today's doses")

    # 8. Set reminder
    r = run_agent("remind me at 9pm to take medicine", store)
    assert r.intent_type == "set_reminder"
    assert r.badge == "⏰"
    print("✓ Set reminder")

    # 9. Symptom report
    r = run_agent("I have headache and fever", store)
    assert r.intent_type == "symptom_report"
    assert r.badge == "🤒"
    print("✓ Symptom report")

    # 10. General chat (Malayalam)
    r = run_agent("ബോറടിക്കുന്നു", store)
    assert r.intent_type == "general_chat"
    print("✓ General chat (Malayalam)")

    # 11. Drug interaction
    r = run_agent("glimepiride 2mg once daily morning", store)
    assert r.intent_type == "add_medication"
    assert r.alert and "hypoglycemia" in r.alert.lower() or "Monitor" in str(r.alert)
    print(f"✓ Drug interaction detected: {r.alert[:50]}...")

    # 12. Lab result
    r = run_agent("HbA1c 7.2", store)
    assert r.intent_type == "add_lab_result"
    assert r.badge == "🧪"
    print("✓ Lab result: HbA1c 7.2")

    # 13. Health report
    report = store.generate_health_report("Test Patient")
    assert "THUNA HEALTH REPORT" in report
    assert "Metformin" in report
    assert "Diabetes" in report
    print("✓ Health report generated")

    # 14. Family status
    status = store.generate_family_status("Test Patient")
    assert "Test Patient" in status
    print("✓ Family status generated")

    # 15. Adherence
    adherence = store.get_adherence_rate()
    assert "rate" in adherence
    print(f"✓ Adherence rate: {adherence['rate']}%")

    # 16. Stop medication
    r = run_agent("stop metformin", store)
    assert r.intent_type == "stop_medication"
    assert any(t['success'] for t in r.tools_executed)
    print("✓ Stop medication")

    # Verify it's stopped
    active = store.get_active_medications()
    assert not any(m.name == "Metformin" for m in active)
    print("✓ Metformin confirmed deactivated")

    print()
    print("=" * 60)
    print("ALL 16 TESTS PASSED ✓")
    print("=" * 60)


if __name__ == "__main__":
    test_full_pipeline()