Update app.py
Browse files
app.py
CHANGED
@@ -11,6 +11,8 @@ import pandas as pd
|
|
11 |
import pdfplumber
|
12 |
import gradio as gr
|
13 |
import torch
|
|
|
|
|
14 |
|
15 |
# === Configuration ===
|
16 |
persistent_dir = "/data/hf_cache"
|
@@ -59,6 +61,21 @@ def remove_duplicate_paragraphs(text: str) -> str:
|
|
59 |
seen.add(clean_p)
|
60 |
return "\n\n".join(unique_paragraphs)
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
def extract_text_from_excel(path: str) -> str:
|
63 |
all_text = []
|
64 |
xls = pd.ExcelFile(path)
|
@@ -249,12 +266,11 @@ def process_report(agent, file, messages: List[Dict[str, str]]) -> Tuple[List[Di
|
|
249 |
return messages, None
|
250 |
|
251 |
summary = generate_final_summary(agent, "\n\n".join(valid))
|
252 |
-
report_path = os.path.join(report_dir, f"report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.md")
|
253 |
-
with open(report_path, 'w', encoding='utf-8') as f:
|
254 |
-
f.write(f"# π§ Final Medical Report\n\n{summary}")
|
255 |
|
256 |
-
|
257 |
-
|
|
|
|
|
258 |
return messages, report_path
|
259 |
|
260 |
except Exception as e:
|
@@ -277,7 +293,7 @@ def create_ui(agent):
|
|
277 |
chatbot = gr.Chatbot(label="π§ CPS Assistant", height=480, type="messages")
|
278 |
upload = gr.File(label="π Upload Medical File", file_types=[".xlsx", ".csv", ".pdf"])
|
279 |
analyze = gr.Button("π§ Analyze")
|
280 |
-
download = gr.File(label="π₯ Download Report", visible=False, interactive=
|
281 |
|
282 |
state = gr.State(value=[])
|
283 |
|
@@ -293,4 +309,4 @@ def create_ui(agent):
|
|
293 |
if __name__ == "__main__":
|
294 |
agent = init_agent()
|
295 |
ui = create_ui(agent)
|
296 |
-
ui.launch(server_name="0.0.0.0", server_port=7860, allowed_paths=["/data/hf_cache/reports"], share=False)
|
|
|
11 |
import pdfplumber
|
12 |
import gradio as gr
|
13 |
import torch
|
14 |
+
from reportlab.lib.pagesizes import letter
|
15 |
+
from reportlab.pdfgen import canvas
|
16 |
|
17 |
# === Configuration ===
|
18 |
persistent_dir = "/data/hf_cache"
|
|
|
61 |
seen.add(clean_p)
|
62 |
return "\n\n".join(unique_paragraphs)
|
63 |
|
64 |
+
def save_report_as_pdf(text: str, path: str):
|
65 |
+
c = canvas.Canvas(path, pagesize=letter)
|
66 |
+
width, height = letter
|
67 |
+
y = height - 50
|
68 |
+
|
69 |
+
lines = text.split('\n')
|
70 |
+
for line in lines:
|
71 |
+
if y < 50:
|
72 |
+
c.showPage()
|
73 |
+
y = height - 50
|
74 |
+
c.drawString(50, y, line.strip())
|
75 |
+
y -= 15
|
76 |
+
|
77 |
+
c.save()
|
78 |
+
|
79 |
def extract_text_from_excel(path: str) -> str:
|
80 |
all_text = []
|
81 |
xls = pd.ExcelFile(path)
|
|
|
266 |
return messages, None
|
267 |
|
268 |
summary = generate_final_summary(agent, "\n\n".join(valid))
|
|
|
|
|
|
|
269 |
|
270 |
+
report_path = os.path.join(report_dir, f"report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf")
|
271 |
+
save_report_as_pdf(summary, report_path)
|
272 |
+
|
273 |
+
messages.append({"role": "assistant", "content": "β
Report generated successfully. Click below to download it."})
|
274 |
return messages, report_path
|
275 |
|
276 |
except Exception as e:
|
|
|
293 |
chatbot = gr.Chatbot(label="π§ CPS Assistant", height=480, type="messages")
|
294 |
upload = gr.File(label="π Upload Medical File", file_types=[".xlsx", ".csv", ".pdf"])
|
295 |
analyze = gr.Button("π§ Analyze")
|
296 |
+
download = gr.File(label="π₯ Download Report", visible=False, interactive=True)
|
297 |
|
298 |
state = gr.State(value=[])
|
299 |
|
|
|
309 |
if __name__ == "__main__":
|
310 |
agent = init_agent()
|
311 |
ui = create_ui(agent)
|
312 |
+
ui.launch(server_name="0.0.0.0", server_port=7860, allowed_paths=["/data/hf_cache/reports"], share=False)
|