|
|
| import gradio as gr |
| import torch |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
| |
| MODEL_PATH = "." |
|
|
| LABELS = [ |
| "Endocrinology Referral", "Nutrition Referral", "Cardiology Referral", "Bariatric Referral", |
| "Mental Health Screen", "Food Insecurity Discussion", "GLP-1 Prescription", "Follow-up Scheduled" |
| ] |
|
|
| |
| print("Loading model...") |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH) |
| model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH) |
|
|
| def analyze_note(text): |
| if not text.strip(): return None |
| |
| inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=320) |
| |
| with torch.no_grad(): |
| logits = model(**inputs).logits |
| |
| probs = torch.sigmoid(logits).cpu().numpy()[0] |
| return {label: float(conf) for label, conf in zip(LABELS, probs)} |
|
|
| |
| examples = [ |
| ["VISIT DATE: 11/20/2025\nSUBJECTIVE: 16yo female presents for weight management. Reports trying to walk more.\nPLAN:\n1. Start Zepbound 2.5mg weekly.\n2. Referral to Pediatric Endocrinology.\n3. Consulting Registered Dietitian."], |
| ["HPI: Mom is requesting Wegovy today. PLAN: Discussed Wegovy but insurance denied the Prior Authorization. No medication prescribed. Offered referral to nutrition services but family declined."], |
| ["CC: Ear pain. Social History: Dad mentions he lost his job last week and they are currently using a food pantry. Plan: Amoxicillin."] |
| ] |
|
|
| |
| demo = gr.Interface( |
| fn=analyze_note, |
| inputs=gr.Textbox(lines=10, label="Paste Clinical Note Here"), |
| outputs=gr.Label(num_top_classes=8, label="Predicted Actions"), |
| title="🏥 Clinical Note Analyzer (GatorTron)", |
| description="This model identifies referrals, prescriptions, and screenings in unstructured clinical text.", |
| examples=examples, |
| theme=gr.themes.Soft() |
| ) |
|
|
| demo.launch() |
|
|