| from reportlab.lib.pagesizes import A4
|
| from reportlab.pdfgen import canvas
|
| from reportlab.lib import colors
|
|
|
| def generate_pdf(report_data, pdf_path, logo_path=None):
|
| c = canvas.Canvas(pdf_path, pagesize=A4)
|
| width, height = A4
|
|
|
|
|
| c.setFont("Helvetica-Bold", 20)
|
| c.setFillColor(colors.darkblue)
|
| c.drawString(180, height - 60, "AI Doctor Recommendation Report")
|
|
|
|
|
| if logo_path:
|
| try:
|
| c.drawImage(logo_path, 40, height - 90, width=60, height=60)
|
| except:
|
| pass
|
|
|
| c.setFillColor(colors.black)
|
| c.setFont("Helvetica", 12)
|
|
|
| y = height - 130
|
|
|
| fields = [
|
| ("Date", report_data.get("date", "")),
|
| ("Patient Name", report_data.get("patient_name", "")),
|
| ("Symptoms", report_data.get("symptoms", "")),
|
| ("Predicted Disease", report_data.get("predicted_disease", "")),
|
| ("Recommended Doctor", report_data.get("doctor_name", "")),
|
| ("Specialization", report_data.get("specialization", "")),
|
| ("Confidence", f"{report_data.get('confidence', '')}%"),
|
| ]
|
|
|
| for label, value in fields:
|
| c.setFont("Helvetica-Bold", 12)
|
| c.drawString(50, y, f"{label}:")
|
| c.setFont("Helvetica", 12)
|
| c.drawString(180, y, str(value))
|
| y -= 30
|
|
|
| c.setFont("Helvetica-Oblique", 11)
|
| c.setFillColor(colors.gray)
|
| c.drawString(50, 60, "Generated by AI Doctor Recommendation System")
|
|
|
| c.save() |