Spaces:
Sleeping
Sleeping
| 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 |