File size: 2,457 Bytes
782e635
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Result Card Components for DermaScan AI
"""
import streamlit as st

TIER_ICONS = {
    "CANCER": "πŸ”΄",
    "PRE-CANCER": "🟑",
    "BENIGN": "🟒",
    "DISEASE": "πŸ”΅",
}


def render_severity_banner(result):
    """Render the severity banner"""
    severity = result.get("severity", "LOW").lower()
    tagline = result.get("tagline", "Analysis Complete")
    action = result.get("action", "Consult a doctor")
    
    severity_emoji = {
        "critical": "🚨",
        "high": "⚠️",
        "medium": "⚑",
        "low": "βœ…"
    }.get(severity, "ℹ️")

    st.markdown(
        f'<div class="severity-banner banner-{severity}">'
        f"<h2>{severity_emoji} {tagline}</h2>"
        f"<h3>πŸ“‹ {action}</h3>"
        f"</div>",
        unsafe_allow_html=True,
    )


def render_metrics(result):
    """Render the key metrics cards"""
    c1, c2, c3 = st.columns(3)
    
    conf = result["confidence"]
    conf_color = "#10b981" if conf > 0.7 else "#f59e0b" if conf > 0.4 else "#ef4444"
    conf_emoji = "🎯" if conf > 0.7 else "⚑" if conf > 0.4 else "⚠️"
    
    tier = result.get("tier", "UNKNOWN")
    tier_icon = TIER_ICONS.get(tier, "βšͺ")
    tier_color = {
        "CANCER": "#ef4444",
        "PRE-CANCER": "#f59e0b",
        "BENIGN": "#10b981",
        "DISEASE": "#3b82f6",
    }.get(tier, "#94a3b8")

    with c1:
        st.markdown(
            f'<div class="metric-card">'
            f'<div class="label">Confidence Score</div>'
            f'<div class="value" style="color:{conf_color};">{conf_emoji} {conf:.1%}</div>'
            f'<div class="sublabel">{result.get("confidence_level", "")}</div>'
            f"</div>",
            unsafe_allow_html=True,
        )

    with c2:
        st.markdown(
            f'<div class="metric-card">'
            f'<div class="label">Classification</div>'
            f'<div class="value" style="color:{tier_color};">{tier_icon} {tier}</div>'
            f'<div class="sublabel">{result.get("severity", "")} Severity</div>'
            f"</div>",
            unsafe_allow_html=True,
        )

    with c3:
        st.markdown(
            f'<div class="metric-card">'
            f'<div class="label">Diagnosis</div>'
            f'<div class="value" style="font-size:1.3rem;color:#3b82f6;">πŸ”¬ {result["predicted_class"]}</div>'
            f'<div class="sublabel">AI Prediction</div>'
            f"</div>",
            unsafe_allow_html=True,
        )