|
|
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 |
|
|
|