Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
# Load the model | |
classifier = pipeline( | |
"text-classification", | |
model="ashishkgpian/biobert_icd9_classifier_ehr" | |
) | |
def classify_symptoms(text): | |
""" | |
Classify medical symptoms and return top ICD9 codes | |
Args: | |
text (str): Input medical symptom description | |
Returns: | |
dict: Top classification results with ICD9 codes and probabilities | |
""" | |
try: | |
# Get classification results | |
results = classifier(text, top_k=5) | |
# Format results for more readable output | |
formatted_results = [] | |
for result in results: | |
formatted_results.append({ | |
"ICD9 Code": result['label'], | |
"Confidence": f"{result['score']:.2%}" | |
}) | |
return formatted_results | |
except Exception as e: | |
return f"Error processing classification: {str(e)}" | |
# Custom CSS for medical-themed UI | |
custom_css = """ | |
/* Medical-inspired color palette and design */ | |
.gradio-container { | |
background-color: #f4f7f6; | |
font-family: 'Arial', 'Helvetica Neue', sans-serif; | |
} | |
/* Styled input area */ | |
.input-container { | |
background-color: #ffffff; | |
border: 2px solid #3498db; | |
border-radius: 10px; | |
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); | |
padding: 15px; | |
} | |
/* Result card styling */ | |
.result-card { | |
background-color: #ffffff; | |
border-left: 5px solid #2ecc71; | |
margin-bottom: 10px; | |
padding: 10px; | |
border-radius: 5px; | |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
} | |
/* Medical icon-like styling for headers */ | |
.gradio-header { | |
color: #2c3e50; | |
text-align: center; | |
font-weight: bold; | |
} | |
/* Soften the medical green theme */ | |
.submit-button { | |
background-color: #2ecc71 !important; | |
color: white !important; | |
border: none !important; | |
transition: all 0.3s ease; | |
} | |
.submit-button:hover { | |
background-color: #27ae60 !important; | |
transform: scale(1.05); | |
} | |
""" | |
# Create Gradio interface with advanced medical-themed design | |
demo = gr.Interface( | |
fn=classify_symptoms, | |
inputs=gr.Textbox( | |
label="Patient Symptom Description", | |
placeholder="Enter detailed patient symptoms (e.g., 'Patient reports persistent chest pain radiating to left arm, accompanied by shortness of breath')", | |
lines=4, | |
container=False, | |
elem_classes=["input-container"] | |
), | |
outputs=gr.JSON( | |
label="Diagnostic Suggestions", | |
elem_classes=["result-card"] | |
), | |
title="Symptom-to-ICD9 Classifier", | |
description="An advanced AI-powered diagnostic assistance tool for converting clinical symptom descriptions into potential ICD9 diagnostic codes.", | |
theme="huggingface", | |
css=custom_css, | |
examples=[ | |
["45-year-old male experiencing severe chest pain, radiating to left arm, with shortness of breath and excessive sweating"], | |
["Persistent headache for 2 weeks, accompanied by dizziness and occasional blurred vision"], | |
["Diabetic patient reporting frequent urination, increased thirst, and unexplained weight loss"], | |
["Elderly patient with chronic knee pain, reduced mobility, and signs of inflammation"] | |
] | |
) | |
# Add some footer-like information | |
demo.layout = gr.Column( | |
[ | |
demo.title, | |
demo.description, | |
demo.input, | |
demo.output, | |
gr.Markdown("**Disclaimer:** This is an AI-assisted diagnostic tool. Always consult with a healthcare professional for accurate diagnosis and treatment.") | |
] | |
) | |
if __name__ == "__main__": | |
demo.launch() |