|
import gradio as gr |
|
import pandas as pd |
|
import os |
|
googel_api=os.getenv("google_api") |
|
|
|
|
|
|
|
|
|
def read_pdf(pdf_path): |
|
|
|
return "Extracted text from PDF" |
|
|
|
def generate(text): |
|
|
|
return { |
|
"metadata": { |
|
"patient_name": "Amar Shaha", |
|
"age": "40", |
|
"gender": "Male", |
|
"lab_name": "Sanjeevan Hospital", |
|
"report_date": "09-Jul-2020" |
|
}, |
|
"lab_tests": [ |
|
{"test_name": "hemoglobin", "value": "14", "unit": "g/dL", "reference_range": "12.0 - 17.0"}, |
|
{"test_name": "rbc count", "value": "4.4", "unit": "million/cu mm", "reference_range": "4.1 - 5.1"} |
|
] |
|
} |
|
|
|
def showdata(lab_tests): |
|
df = pd.DataFrame(lab_tests) |
|
return df |
|
|
|
|
|
def process_pdf(pdf): |
|
text = read_pdf(pdf.name) |
|
json_data = generate(text) |
|
|
|
metadata = json_data["metadata"] |
|
metadata_str = f"**Patient Name:** {metadata['patient_name']}\n\n" \ |
|
f"**Age:** {metadata['age']}\n\n" \ |
|
f"**Gender:** {metadata['gender']}\n\n" \ |
|
f"**Lab Name:** {metadata['lab_name']}\n\n" \ |
|
f"**Report Date:** {metadata['report_date']}" |
|
|
|
lab_tests_df = showdata(json_data["lab_tests"]) |
|
return metadata_str, lab_tests_df |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# Medical Lab Report Processor") |
|
|
|
with gr.Row(): |
|
pdf_input = gr.File(label="Upload PDF Report") |
|
submit_btn = gr.Button("Process") |
|
|
|
metadata_output = gr.Markdown(label="Metadata") |
|
lab_test_output = gr.Dataframe(label="Lab Test Results") |
|
|
|
submit_btn.click(process_pdf, inputs=[pdf_input], outputs=[metadata_output, lab_test_output]) |
|
|
|
|
|
demo.launch() |
|
|