-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstreamlit_simple.py
More file actions
68 lines (55 loc) · 3.2 KB
/
Copy pathstreamlit_simple.py
File metadata and controls
68 lines (55 loc) · 3.2 KB
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
64
65
66
67
68
import streamlit as st
import requests
import base64
import json
import csv
from io import StringIO
BACKEND_URL = "http://localhost:8000/api/process_document"
st.title("ICD-10 Coding Assistant (2026)")
uploaded = st.file_uploader("Upload patient PDF", type=["pdf"], accept_multiple_files=True)
if uploaded:
for file in uploaded:
st.write(f"Processing: {file.name}")
data = base64.b64encode(file.read()).decode()
with st.spinner("Processing document..."):
try:
response = requests.post(
BACKEND_URL,
json={"filename": file.name, "file": data},
timeout=120
)
if response.status_code == 200:
result = response.json()
if result["status"] == "success":
records = result["payload"]
st.success(f"✓ Found {len(records)} ICD-10 codes")
st.info("🔍 Knowledge Base: 1,282 chunks from 2,253 pages used for enhanced accuracy")
for idx, record in enumerate(records, 1):
with st.expander(f"Code {idx}: {record.get('code', 'N/A')} - {record.get('description', 'N/A')}"):
st.write(f"**Date of Service:** {record.get('date_of_service', 'N/A')}")
st.write(f"**Section:** {record.get('section', 'N/A')}")
st.write(f"**Diagnosis Sentence:** {record.get('sentence', 'N/A')}")
st.write(f"**Page:** {record.get('page_no', 'N/A')}")
st.write(f"**Supporting Evidence:** {record.get('meat_sentence', 'N/A')}")
st.write(f"**Evidence Page:** {record.get('meat_page_no', 'N/A')}")
# Convert to CSV
csv_buffer = StringIO()
if records:
fieldnames = ['document_name', 'date_of_service', 'code', 'description',
'section', 'sentence', 'page_no', 'meat_sentence', 'meat_page_no']
writer = csv.DictWriter(csv_buffer, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(records)
csv_str = csv_buffer.getvalue()
st.download_button(
label="📥 Download CSV",
data=csv_str,
file_name=f"{file.name}_icd10_output.csv",
mime="text/csv",
)
else:
st.error(f"Error: {result.get('payload', {}).get('error', 'Unknown error')}")
else:
st.error(f"Request failed: {response.status_code}")
except Exception as e:
st.error(f"Error: {str(e)}")