Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -4,12 +4,6 @@ import requests
|
|
4 |
from PIL import Image
|
5 |
from io import BytesIO
|
6 |
from pdf2image import convert_from_bytes
|
7 |
-
import smtplib
|
8 |
-
from email.mime.text import MIMEText
|
9 |
-
from email.mime.multipart import MIMEMultipart
|
10 |
-
import schedule
|
11 |
-
import time
|
12 |
-
import threading
|
13 |
|
14 |
# Configuration - Replace with your API key
|
15 |
GEMINI_API_KEY = st.secrets["GEMINI_API_KEY"]
|
@@ -33,8 +27,6 @@ def initialize_session_state():
|
|
33 |
st.session_state.processed_doc = None
|
34 |
if "doc_preview" not in st.session_state:
|
35 |
st.session_state.doc_preview = None
|
36 |
-
if "reminder_set" not in st.session_state:
|
37 |
-
st.session_state.reminder_set = False
|
38 |
|
39 |
def encode_file(uploaded_file):
|
40 |
"""Safely encode different file types to base64"""
|
@@ -137,46 +129,6 @@ def handle_chat_query():
|
|
137 |
st.session_state.chat_history.append(("user", user_input))
|
138 |
st.session_state.chat_history.append(("assistant", response or "Could not generate response"))
|
139 |
|
140 |
-
def send_email_reminder(email, message):
|
141 |
-
"""Send an email reminder using ProtonMail Bridge"""
|
142 |
-
try:
|
143 |
-
sender_email = st.secrets["PROTONMAIL_USERNAME"]
|
144 |
-
sender_password = st.secrets["PROTONMAIL_PASSWORD"]
|
145 |
-
|
146 |
-
msg = MIMEMultipart()
|
147 |
-
msg['From'] = sender_email
|
148 |
-
msg['To'] = email
|
149 |
-
msg['Subject'] = "Medicine Reminder"
|
150 |
-
|
151 |
-
msg.attach(MIMEText(message, 'plain'))
|
152 |
-
|
153 |
-
with smtplib.SMTP('127.0.0.1', 1025) as smtp:
|
154 |
-
smtp.starttls()
|
155 |
-
smtp.login(sender_email, sender_password)
|
156 |
-
smtp.sendmail(sender_email, email, msg.as_string())
|
157 |
-
|
158 |
-
st.success("Email reminder sent successfully!")
|
159 |
-
except Exception as e:
|
160 |
-
st.error(f"Failed to send email: {str(e)}")
|
161 |
-
|
162 |
-
def schedule_reminder(email, time_str, message):
|
163 |
-
"""Schedule a medicine reminder"""
|
164 |
-
try:
|
165 |
-
schedule.every().day.at(time_str).do(send_email_reminder, email, message)
|
166 |
-
|
167 |
-
# Run the scheduler in a separate thread
|
168 |
-
def run_scheduler():
|
169 |
-
while True:
|
170 |
-
schedule.run_pending()
|
171 |
-
time.sleep(1)
|
172 |
-
|
173 |
-
threading.Thread(target=run_scheduler, daemon=True).start()
|
174 |
-
|
175 |
-
st.session_state.reminder_set = True
|
176 |
-
st.success("Reminder set successfully!")
|
177 |
-
except Exception as e:
|
178 |
-
st.error(f"Failed to set reminder: {str(e)}")
|
179 |
-
|
180 |
# UI Layout
|
181 |
def main():
|
182 |
st.set_page_config(page_title="Healthcare Document Assistant", layout="wide")
|
@@ -204,20 +156,6 @@ def main():
|
|
204 |
st.divider()
|
205 |
st.subheader("Document Type")
|
206 |
st.markdown(f"**{st.session_state.processed_doc['type']}**")
|
207 |
-
|
208 |
-
# Medicine Reminder
|
209 |
-
st.divider()
|
210 |
-
st.subheader("Medicine Reminder")
|
211 |
-
|
212 |
-
if not st.session_state.reminder_set:
|
213 |
-
email = st.text_input("Enter your email")
|
214 |
-
time_str = st.text_input("Enter reminder time (24-hour format, e.g., 14:30)")
|
215 |
-
message = st.text_area("Enter reminder message")
|
216 |
-
|
217 |
-
if st.button("Set Reminder"):
|
218 |
-
schedule_reminder(email, time_str, message)
|
219 |
-
else:
|
220 |
-
st.success("Reminder is already set. You will receive an email at the specified time.")
|
221 |
|
222 |
# Main Content
|
223 |
st.title("Healthcare Document Assistant")
|
|
|
4 |
from PIL import Image
|
5 |
from io import BytesIO
|
6 |
from pdf2image import convert_from_bytes
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
# Configuration - Replace with your API key
|
9 |
GEMINI_API_KEY = st.secrets["GEMINI_API_KEY"]
|
|
|
27 |
st.session_state.processed_doc = None
|
28 |
if "doc_preview" not in st.session_state:
|
29 |
st.session_state.doc_preview = None
|
|
|
|
|
30 |
|
31 |
def encode_file(uploaded_file):
|
32 |
"""Safely encode different file types to base64"""
|
|
|
129 |
st.session_state.chat_history.append(("user", user_input))
|
130 |
st.session_state.chat_history.append(("assistant", response or "Could not generate response"))
|
131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
# UI Layout
|
133 |
def main():
|
134 |
st.set_page_config(page_title="Healthcare Document Assistant", layout="wide")
|
|
|
156 |
st.divider()
|
157 |
st.subheader("Document Type")
|
158 |
st.markdown(f"**{st.session_state.processed_doc['type']}**")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
# Main Content
|
161 |
st.title("Healthcare Document Assistant")
|