File size: 1,995 Bytes
898d076
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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()