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
|