Spaces:
Sleeping
Sleeping
# File: logic/exporter.py | |
from docx import Document | |
import os | |
import io | |
import zipfile | |
def export_to_docx_and_zip(report_data, summaries, output_dir="assets/sample_reports"): | |
zip_buffer = io.BytesIO() | |
with zipfile.ZipFile(zip_buffer, "w") as zipf: | |
for _, row in report_data.iterrows(): | |
pid = row['patient_id'] | |
doc = Document() | |
doc.add_heading(f'Patient Summary: {pid}', 0) | |
doc.add_paragraph(f"Risk Score: {row['risk_score']}") | |
doc.add_paragraph(f"Projected Revenue Gain: ${row['projected_gain']}") | |
doc.add_paragraph("Care Gaps:") | |
for gap in row['care_gaps']: | |
doc.add_paragraph(f"• {gap}", style='List Bullet') | |
doc.add_paragraph("\nSummary:") | |
doc.add_paragraph(summaries[pid]) | |
doc_path = f"Patient_{pid}_Report.docx" | |
temp_stream = io.BytesIO() | |
doc.save(temp_stream) | |
zipf.writestr(doc_path, temp_stream.getvalue()) | |
zip_buffer.seek(0) | |
return zip_buffer, report_data['patient_id'].tolist() | |