# 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()