ocr-2 / ocr /api /consult /cunsult.py
brestok's picture
fixed consult notes
3f47633
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