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()
|