File size: 1,117 Bytes
7dcf7f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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()