NeuroDiag-AI: A Clinical Triage App using Progressive Disclosure (Nested Session State)

Hi Streamlit Community! :waving_hand:

I’m a former medical student from Italy, currently transitioning into Data Science and Bioinformatics. During my clinical rotations, I noticed a huge issue: medical software often looks like a chaotic 1990s database, causing severe cognitive overload for doctors.

To solve this, I built NeuroDiag-AI, a proof-of-concept probabilistic diagnostic tool for psychiatric and neurological preliminary stratification.

Live Web App: https://neurodiag-ai-medicine.streamlit.app/ GitHub Repo:https://github.com/stefanopisani91/NeuroDiag-AI

How I built it with Streamlit:

  • Dynamic st.session_state (“Onion Triage”): I wanted to mimic a real doctor’s progressive interview. The forms are deeply nested. Broad screening questions appear first; specific clinical follow-up questions (like HAM-D or UPDRS criteria) only render if the user toggles a positive response. This keeps the UI incredibly clean.

  • Theming & UI: Used custom medical-grade color coding and progress bars to guide the user naturally without overwhelming them.

  • Visual Outputs: Integrated Radar Charts to visually explain the AI’s probabilistic output.

(Note: The underlying model is trained on 10,000 synthetic patients generated with strict clinical rules to ensure zero privacy/GDPR issues).

My Ask: I’d love your feedback on the UI/UX! Specifically, how do you usually handle complex, multi-level nested forms using session_state without making the code too messy? Any tips on optimizing my approach?

Thanks for checking it out!