File size: 1,478 Bytes
3f47633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import asyncio
import base64
import io

import markdown2
from xhtml2pdf import pisa

from ocr.api.openai_requests import generate_consult_note


async def create_consult_notes(text: str, changes: str | None) -> str:
    changes = '' if changes is None else f"\n\n**Changes**:\n```\n{changes}\n```"
    chief_complaint, hpi, social_history, surgical_history, family_history, medications, assessment, plan = await asyncio.gather(
        generate_consult_note(text, changes, 'chief'),
        generate_consult_note(text, changes, 'hpi'),
        generate_consult_note(text, changes, 'social'),
        generate_consult_note(text, changes, 'surgical'),
        generate_consult_note(text, changes, 'family'),
        generate_consult_note(text, changes, 'medications'),
        generate_consult_note(text, changes, 'assessment'),
        generate_consult_note(text, changes, 'plan'),
    )
    response = f"""# Chief Complaint

{chief_complaint}

# History of Present Illness (HPI)

{hpi}

# Social History

{social_history}

# Surgical History

{surgical_history}

# Family History

{family_history}

# Medications

{medications}

# Assessment

{assessment}

# Plan

{plan}"""
    return response


def text_to_pdf_base64(text: str) -> str:
    html_text = markdown2.markdown(text)
    pdf_buffer = io.BytesIO()
    pisa.CreatePDF(html_text, dest=pdf_buffer)
    pdf_bytes = pdf_buffer.getvalue()
    base64_pdf = base64.b64encode(pdf_bytes).decode("utf-8")
    return base64_pdf