import gradio as gr import pandas as pd import logging import sys import os # Set up logging to capture errors logging.basicConfig(stream=sys.stdout, level=logging.INFO) logger = logging.getLogger(__name__) # Verify that required files exist try: if not os.path.exists("dataset.csv"): logger.error("dataset.csv not found!") raise FileNotFoundError("dataset.csv not found!") if not os.path.exists("style.css"): logger.error("style.css not found!") raise FileNotFoundError("style.css not found!") except Exception as e: logger.error(f"Error checking files: {str(e)}") raise # Load the dataset try: logger.info("Loading dataset.csv...") df = pd.read_csv("dataset.csv") logger.info("Dataset loaded successfully.") except Exception as e: logger.error(f"Error loading dataset: {str(e)}") raise # Function to suggest treatment and medicines based on symptoms def suggest_treatment(symptoms_input): try: logger.info(f"Processing symptoms: {symptoms_input}") symptoms_input = symptoms_input.lower().strip() if not symptoms_input: return "Please enter symptoms." # Search for matching symptoms in the dataset for index, row in df.iterrows(): dataset_symptoms = row['symptoms'].lower().strip() input_symptom_list = [s.strip() for s in symptoms_input.split(",")] dataset_symptom_list = [s.strip() for s in dataset_symptoms.split(",")] if all(symptom in dataset_symptom_list for symptom in input_symptom_list): result = ( f"**Possible Disease**: {row['disease']}\n" f"**Suggested Treatment**: {row['treatment']}\n" f"**Medicines**: {row['medicines']}" ) logger.info(f"Suggestion generated: {result}") return result return "Sorry, no matching disease found for the given symptoms. Please consult a doctor." except Exception as e: logger.error(f"Error in suggest_treatment: {str(e)}") return f"Error processing symptoms: {str(e)}" # Create Gradio interface using Blocks with gr.Blocks(css="style.css") as app: gr.Markdown("# Medical Suggestion AI") gr.Markdown("Enter your symptoms to get treatment and medicine suggestions.") symptoms_input = gr.Textbox( label="Symptoms (e.g., fever, headache)", placeholder="Enter symptoms separated by commas", elem_classes="symptoms-input" ) submit_btn = gr.Button("Submit", elem_classes="submit-btn") output = gr.Markdown(label="Suggestions", elem_classes="output") submit_btn.click( fn=suggest_treatment, inputs=symptoms_input, outputs=output ) # Launch the app try: logger.info("Launching Gradio app...") app.launch(server_name="0.0.0.0", server_port=7860, share=False) logger.info("Gradio app launched successfully.") except Exception as e: logger.error(f"Error launching Gradio app: {str(e)}") raise