Spaces:
Sleeping
Sleeping
# app.py | |
""" | |
The main Gradio user interface for Project Asclepius. | |
This file defines the layout and connects UI components to the backend logic. | |
""" | |
import gradio as gr | |
from modules import orchestrator | |
# --- UI Layout and Components --- | |
# Load custom CSS for a polished look | |
with open("static/style.css", "r", encoding="utf-8") as f: | |
custom_css = f.read() | |
# Define the main application blocks | |
with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo: | |
# Header | |
with gr.Row(): | |
# You can add your own logo.png to the static folder | |
# gr.Image("static/logo.png", width=100, show_label=False, show_download_button=False) | |
gr.Markdown("# 🧠 Project Asclepius: The Cognitive Medical Nexus") | |
gr.Markdown("An AI-powered system that synthesizes public medical data to provide clear, evidence-based information. **This is not a diagnostic tool.**") | |
# Define the main tabs for different functionalities | |
with gr.Tabs(): | |
# --- TAB 1: Symptom Synthesizer --- | |
with gr.TabItem("Symptom Synthesizer"): | |
with gr.Row(): | |
with gr.Column(scale=2): | |
symptom_input = gr.Textbox( | |
lines=5, | |
label="Describe Symptoms or Ask a Medical Question", | |
placeholder="e.g., 'I have a sharp pain in my chest and feel dizzy' or 'What are the latest treatments for migraines?'" | |
) | |
# Optional image input can be added here | |
# image_input = gr.Image(type="pil", label="Upload a relevant image (e.g., skin rash)", optional=True) | |
with gr.Column(scale=1): | |
submit_btn = gr.Button("Synthesize Information", variant="primary") | |
gr.Markdown("---") | |
synthesis_output = gr.Markdown(label="Synthesized Report") | |
# --- TAB 2: Research Deep Dive (Placeholder) --- | |
with gr.TabItem("Research Deep Dive"): | |
gr.Markdown("## Feature Coming Soon\nThis section will allow you to do a deep dive on a specific disease, gene, or drug, pulling in comprehensive research data.") | |
# Add inputs and outputs for this tab here | |
# --- TAB 3: Drug Interaction Analyzer (Placeholder) --- | |
with gr.TabItem("Drug Interaction Analyzer"): | |
gr.Markdown("## Feature Coming Soon\nThis tool will analyze potential interactions and safety concerns for a list of medications.") | |
# Add inputs and outputs for this tab here | |
# --- Event Handlers --- | |
submit_btn.click( | |
fn=orchestrator.run_symptom_synthesis, | |
inputs=[symptom_input], # Add image_input here if using | |
outputs=[synthesis_output], | |
api_name="symptom_synthesis", | |
show_progress="full" # Provides a great user experience | |
) | |
# Launch the application | |
if __name__ == "__main__": | |
demo.launch(debug=True) |