import gradio as gr import time from threading import Thread # =========================== # Malaria Symptom Rules # =========================== malaria_rules = { "fever": {"diagnosis":["Patient may have malaria."],"treatment":["Recommend antimalarial therapy."],"prognosis":["Mild if treated early."]}, "chills": {"diagnosis":["Chills often accompany malaria fever."],"treatment":["Supportive care, hydration, antipyretics."],"prognosis":["Typically resolves with treatment."]}, "headache": {"diagnosis":["Common in malaria patients."],"treatment":["Analgesics as needed."],"prognosis":["Improves with treatment."]}, "nausea": {"diagnosis":["May indicate malaria or gastrointestinal infection."],"treatment":["Anti-nausea medications if severe."],"prognosis":["Resolves with malaria treatment."]}, "vomiting": {"diagnosis":["May indicate severe malaria if combined with fever."],"treatment":["Consider oral or IV hydration."],"prognosis":["Monitor for dehydration."]}, "muscle_aches": {"diagnosis":["Common symptom of malaria."],"treatment":["Analgesics if necessary."],"prognosis":["Improves with antimalarial therapy."]}, "fatigue": {"diagnosis":["Common symptom, may persist during recovery."],"treatment":["Rest and supportive care."],"prognosis":["Gradual improvement expected."]}, "sweating": {"diagnosis":["Sweating often follows fever spikes."],"treatment":["Supportive care."],"prognosis":["Normalizes with treatment."]}, "anemia": {"diagnosis":["Severe malaria can cause hemolytic anemia."],"treatment":["Monitor hemoglobin; blood transfusion if critical."],"prognosis":["Serious if untreated."]}, "jaundice": {"diagnosis":["May indicate liver involvement; risk for severe malaria."],"treatment":["Monitor liver function, supportive care."],"prognosis":["Can be severe if untreated."]}, "seizures": {"diagnosis":["Cerebral malaria, medical emergency."],"treatment":["Immediate hospitalization, IV antimalarials."],"prognosis":["Life-threatening without prompt care."]}, # Combined symptom rules ("fever","chills"): {"diagnosis":["Classic malaria presentation."],"treatment":["Prompt antimalarial therapy."],"prognosis":["Good if treated early."]}, ("fever","vomiting"): {"diagnosis":["Possible severe malaria."],"treatment":["Monitor hydration, antimalarials."],"prognosis":["Serious if untreated."]}, ("jaundice","anemia"): {"diagnosis":["Severe malaria with liver involvement."],"treatment":["Hospitalization recommended."],"prognosis":["Severe, close monitoring required."]}, ("seizures","fever"): {"diagnosis":["Cerebral malaria; emergency."],"treatment":["Immediate IV therapy and ICU support."],"prognosis":["Life-threatening."]} } # =========================== # Analysis Functions # =========================== def analyze_malaria(symptoms): diagnosis = set() treatment = set() prognosis = set() # Combined symptoms first for combo in [k for k in malaria_rules if isinstance(k, tuple)]: if all(sym in symptoms for sym in combo): diagnosis.update(malaria_rules[combo]["diagnosis"]) treatment.update(malaria_rules[combo]["treatment"]) prognosis.update(malaria_rules[combo]["prognosis"]) # Single symptoms for sym in symptoms: if sym in malaria_rules: diagnosis.update(malaria_rules[sym]["diagnosis"]) treatment.update(malaria_rules[sym]["treatment"]) prognosis.update(malaria_rules[sym]["prognosis"]) return { "Diagnosis": "\n".join(diagnosis) if diagnosis else "No malaria-related diagnosis detected.", "Treatment": "\n".join(treatment) if treatment else "No treatment recommended.", "Prognosis": "\n".join(prognosis) if prognosis else "No prognosis available." } def run_analysis_with_loading(age, gender, location, travel, travel_details, symptoms_list, temperature, blood_pressure, heart_rate, previous_malaria, medications, additional_notes): # Show loading dots first loading_html = "
Advanced diagnostic, treatment, and prognostic analysis