""" 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'", 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'
' f'
Confidence Score
' f'
{conf_emoji} {conf:.1%}
' f'
{result.get("confidence_level", "")}
' f"
", unsafe_allow_html=True, ) with c2: st.markdown( f'
' f'
Classification
' f'
{tier_icon} {tier}
' f'
{result.get("severity", "")} Severity
' f"
", unsafe_allow_html=True, ) with c3: st.markdown( f'
' f'
Diagnosis
' f'
đŸ”Ŧ {result["predicted_class"]}
' f'
AI Prediction
' f"
", unsafe_allow_html=True, )