Prashasst's picture
Create pipeline.py
898d076 verified
raw
history blame
2 kB
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()