import gradio as gr import pandas as pd import os googel_api=os.getenv("google_api") # Your existing functions: read_pdf, generate, showdata def read_pdf(pdf_path): # Implement PDF reading logic here return "Extracted text from PDF" def generate(text): # Implement JSON generation logic here 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 # Gradio interface function def process_pdf(pdf): text = read_pdf(pdf.name) # Extract text from PDF json_data = generate(text) # Generate structured JSON 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"]) # Convert lab test results to DataFrame return metadata_str, lab_tests_df # Define Gradio interface 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]) # Launch the app demo.launch()