Mahbodez/knee_report_checklist
1
1import gradio as gr2import interface3import utils4import treegraph as tg5import logger as lg6import os7system_prompt = """8You are a critical AI radiology assistant.9You are helping a radiologist correctly fill out a radiology report.10The report is regarding a Knee MRI.11"""12username = os.environ.get("user")13passwd = os.environ.get("pass")14 15graph, nodes_dict = tg.build_tree_from_file("knee_template.json")16report_interface = interface.ReportChecklistInterface(17 llm=utils.LLM(model="gpt-3.5-turbo"),18 system_prompt=system_prompt,19 graph=graph,20 nodes_dict=nodes_dict,21)22logger = None23 24if report_interface.prime_model() is False:25 print("Model priming failed. Please try again.")26 exit()27else:28 print("Model priming successful.")29 30running = True31 32 33def check_report(report, name):34 global logger, report_interface35 if len(name.strip()) < 3:36 return "Please enter a name."37 else:38 logger = lg.Logger(log_file="log.txt")39 report_interface.logger = logger40 report_interface.username = name41 if running:42 results = report_interface.process_input(report)43 if results == "quit":44 quit_fn()45 elif results == "help":46 return report_interface.help_message47 elif results == "exception":48 return "An exception occurred. Please try again."49 else:50 return results51 else:52 return "Model has been stopped."53 54 55def quit_fn():56 global running57 running = False58 return "Model has been stopped."59 60 61with gr.Blocks(theme="soft") as demo:62 gr.Markdown("## Radiology Report Assistant")63 gr.Markdown(report_interface.help_message)64 name_textbox = gr.Textbox(label="Name")65 66 report_textbox = gr.TextArea(label="Report", lines=20, max_lines=50)67 with gr.Row():68 check_btn = gr.Button(69 value="Check Report",70 )71 clear_btn = gr.ClearButton(72 value="Clear Messages",73 )74 quit_btn = gr.Button(75 value="Quit",76 )77 results_textbox = gr.TextArea(label="Results", lines=20, max_lines=50)78 clear_btn.add([results_textbox, report_textbox])79 80 check_btn.click(81 fn=check_report,82 inputs=[report_textbox, name_textbox],83 outputs=[results_textbox],84 )85 quit_btn.click(fn=quit_fn, outputs=[results_textbox])86 87demo.launch(auth=(username, passwd))88 