Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| # Use a zero-shot classification model | |
| model = pipeline("zero-shot-classification", model="facebook/bart-large-mnli") | |
| # Candidate labels for medical diagnosis | |
| candidate_labels = [ | |
| "respiratory infection", "viral infection", "bacterial infection", "autoimmune disease", | |
| "cardiovascular disease", "endocrine disorders", "gastrointestinal disorders", | |
| "neurological disorders", "skin disorders", "genetic disorders", "cancer", "kidney disease" | |
| ] | |
| # Function to diagnose based on symptoms | |
| def diagnose(symptoms): | |
| result = model(symptoms, candidate_labels=candidate_labels) | |
| diagnosis_category = result['labels'][0] # Top predicted category | |
| confidence = result['scores'][0] # Confidence score | |
| # Only accept predictions with confidence >= 0.60 | |
| if confidence < 0.60: | |
| return "Unable to provide a confident diagnosis. Please consult a healthcare professional." | |
| return f"Predicted diagnosis category: {diagnosis_category} with confidence: {confidence:.2f}" | |
| # Triage function to assess symptom severity | |
| def triage(symptoms): | |
| # Check for critical symptoms that need urgent attention | |
| if "shortness of breath" in symptoms or "chest pain" in symptoms: | |
| return "Urgent: Seek immediate medical attention." | |
| # Check for milder symptoms | |
| elif "fever" in symptoms and "cough" in symptoms: | |
| return "Mild: Likely a viral infection, monitor symptoms." | |
| # New logic for symptoms like "red nose and cheeks" | |
| elif "red nose" in symptoms or "red cheeks" in symptoms: | |
| return "Non-urgent: Likely a mild skin reaction. Monitor for any additional symptoms." | |
| # Default case if no specific symptoms are detected | |
| else: | |
| return "Non-urgent: No immediate concern." | |
| # Combine diagnosis and triage into one function | |
| def full_check(symptoms): | |
| diagnosis = diagnose(symptoms) # Get diagnosis category | |
| severity = triage(symptoms) # Get severity level | |
| return diagnosis, severity | |
| # Create the Gradio interface | |
| iface = gr.Interface( | |
| fn=full_check, | |
| inputs="text", | |
| outputs=["text", "text"], | |
| title="Sehat Guard - Symptom Checker", | |
| description="Enter your symptoms to get a possible diagnosis and severity of the condition." | |
| ) | |
| # Launch the app | |
| iface.launch() |