AI_Doctors / backend /pdf_utils.py
NandanData's picture
Upload 161 files
5f3adb3 verified
raw
history blame
1.2 kB
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib.units import mm
from reportlab.lib.utils import simpleSplit
def generate_pdf(path, title, soap_dict, ai_summary):
c = canvas.Canvas(path, pagesize=A4)
W, H = A4
x, y = 20*mm, H - 25*mm
def head(t, s=18):
nonlocal y; c.setFont("Helvetica-Bold", s); c.drawString(x, y, t); y -= 8*mm
def para(label, text, s=10):
nonlocal y; c.setFont("Helvetica-Bold", s); c.drawString(x, y, f"{label}:"); y -= 5*mm
c.setFont("Helvetica", s)
for line in simpleSplit(text, "Helvetica", s, W - 40*mm):
c.drawString(x, y, line); y -= 5*mm
y -= 2*mm
head(title, 18)
para("Subjective", soap_dict.get("subjective",""))
para("Objective", soap_dict.get("objective",""))
para("Assessment", "\n".join(soap_dict.get("assessment",[])))
para("Plan", "\n".join(soap_dict.get("plan",[])))
para("Red Flags", "\n".join(soap_dict.get("red_flags",[])))
para("Follow-up", soap_dict.get("follow_up",""))
para("Citations", "\n".join(soap_dict.get("citations",[])))
para("AI Summary", ai_summary or "(not provided)")
c.showPage(); c.save()