MedQA / app.py
mgbam's picture
Update app.py
0a2437f verified
raw
history blame
1.78 kB
import streamlit as st
from services.auth import authenticator, require_login
from services.logger import logger
from services.metrics import CHAT_COUNT, OPTIMIZE_COUNT
from agent.gemini_agent import chat_with_gemini
from clinical_nlp.umls_bioportal import lookup_umls, lookup_bioportal
from quantum.bf_dcqo import optimize_hubo
from services.pdf_report import generate_pdf
from repositories.chat_repo import ChatRepo
# Initialize DB
from models.db import init_db
init_db()
# UI
username = require_login()
st.set_page_config(page_title="Quantum Health AI", layout="wide")
st.image("assets/logo.png", width=64)
st.title(f"Welcome, {username}!")
tab1, tab2 = st.tabs(["🩺 Consult", "πŸ“Š Reports"])
with tab1:
query = st.text_area("Enter clinical query or symptoms:")
if st.button("Ask Gemini"):
CHAT_COUNT.inc()
with st.spinner("Consulting AI..."):
response = chat_with_gemini(username, query)
st.markdown(f"**AI**: {response}")
# save chat
ChatRepo().save(username, query, response)
# clinical NLP
with st.expander("UMLS Results"):
st.write(lookup_umls(query))
with st.expander("BioPortal Results"):
st.write(lookup_bioportal(query))
if st.button("Quantum Optimize"):
OPTIMIZE_COUNT.inc()
with st.spinner("Running quantum optimizer..."):
result = optimize_hubo({"query":query})
st.json(result)
with tab2:
if st.button("Generate PDF Report"):
# gather last 5 messages
pdf_data = {"Last Chats": ChatRepo().get_recent(username, limit=5)}
fname = generate_pdf(pdf_data)
st.success("Report Generated")
st.download_button("Download Report", data=open(fname,"rb"), file_name=fname)