from ocr.api.prompts import ocr_prompts from ocr.api.report.model import ReportModel from ocr.core.wrappers import openai_wrapper @openai_wrapper() async def generate_report(request_content: str): messages = [ { "role": "system", "content": ocr_prompts.report.generate_report }, { "role": "user", "content": request_content } ] return messages @openai_wrapper() async def generate_changes(content: str, previous_report: str): messages = [ { "role": "system", "content": ocr_prompts.report.generate_changes .replace("{previous_report}", previous_report) }, { "role": "user", "content": content } ] return messages @openai_wrapper() async def generate_agent_response(messages: list[dict], report: ReportModel): messages = [ { "role": "system", "content": ocr_prompts.message.generate_agent_response .replace("{reports}", report.report) .replace("{changes}", report.changes or 'There is no changes.') }, *messages ] return messages @openai_wrapper(is_json=True, temperature=0.6, return_='result') async def generate_consult_note(text: str, changes: str, type_: str): prompt_map = { "chief": ocr_prompts.consult.generate_chief, "hpi": ocr_prompts.consult.generate_hpi, "social": ocr_prompts.consult.generate_social, "surgical": ocr_prompts.consult.generate_surgical, "family": ocr_prompts.consult.generate_family, "medications": ocr_prompts.consult.generate_medications, "assessment": ocr_prompts.consult.generate_assessment, "plan": ocr_prompts.consult.generate_plan, } user_content = f'Medical information:\n```\n{text}\n```' if changes: user_content += f'\nChanges:\n```\n{changes}\n```' messages = [ { "role": "system", "content": prompt_map[type_] }, { "role": "user", "content": user_content } ] return messages