Create pipeline.py
Browse files- pipeline.py +62 -0
pipeline.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import pandas as pd
|
| 3 |
+
import os
|
| 4 |
+
googel_api=os.getenv("google_api")
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
# Your existing functions: read_pdf, generate, showdata
|
| 9 |
+
def read_pdf(pdf_path):
|
| 10 |
+
# Implement PDF reading logic here
|
| 11 |
+
return "Extracted text from PDF"
|
| 12 |
+
|
| 13 |
+
def generate(text):
|
| 14 |
+
# Implement JSON generation logic here
|
| 15 |
+
return {
|
| 16 |
+
"metadata": {
|
| 17 |
+
"patient_name": "Amar Shaha",
|
| 18 |
+
"age": "40",
|
| 19 |
+
"gender": "Male",
|
| 20 |
+
"lab_name": "Sanjeevan Hospital",
|
| 21 |
+
"report_date": "09-Jul-2020"
|
| 22 |
+
},
|
| 23 |
+
"lab_tests": [
|
| 24 |
+
{"test_name": "hemoglobin", "value": "14", "unit": "g/dL", "reference_range": "12.0 - 17.0"},
|
| 25 |
+
{"test_name": "rbc count", "value": "4.4", "unit": "million/cu mm", "reference_range": "4.1 - 5.1"}
|
| 26 |
+
]
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
def showdata(lab_tests):
|
| 30 |
+
df = pd.DataFrame(lab_tests)
|
| 31 |
+
return df
|
| 32 |
+
|
| 33 |
+
# Gradio interface function
|
| 34 |
+
def process_pdf(pdf):
|
| 35 |
+
text = read_pdf(pdf.name) # Extract text from PDF
|
| 36 |
+
json_data = generate(text) # Generate structured JSON
|
| 37 |
+
|
| 38 |
+
metadata = json_data["metadata"]
|
| 39 |
+
metadata_str = f"**Patient Name:** {metadata['patient_name']}\n\n" \
|
| 40 |
+
f"**Age:** {metadata['age']}\n\n" \
|
| 41 |
+
f"**Gender:** {metadata['gender']}\n\n" \
|
| 42 |
+
f"**Lab Name:** {metadata['lab_name']}\n\n" \
|
| 43 |
+
f"**Report Date:** {metadata['report_date']}"
|
| 44 |
+
|
| 45 |
+
lab_tests_df = showdata(json_data["lab_tests"]) # Convert lab test results to DataFrame
|
| 46 |
+
return metadata_str, lab_tests_df
|
| 47 |
+
|
| 48 |
+
# Define Gradio interface
|
| 49 |
+
with gr.Blocks() as demo:
|
| 50 |
+
gr.Markdown("# Medical Lab Report Processor")
|
| 51 |
+
|
| 52 |
+
with gr.Row():
|
| 53 |
+
pdf_input = gr.File(label="Upload PDF Report")
|
| 54 |
+
submit_btn = gr.Button("Process")
|
| 55 |
+
|
| 56 |
+
metadata_output = gr.Markdown(label="Metadata")
|
| 57 |
+
lab_test_output = gr.Dataframe(label="Lab Test Results")
|
| 58 |
+
|
| 59 |
+
submit_btn.click(process_pdf, inputs=[pdf_input], outputs=[metadata_output, lab_test_output])
|
| 60 |
+
|
| 61 |
+
# Launch the app
|
| 62 |
+
demo.launch()
|