medKGC / app.py
hanbinChen's picture
update
1a1c17c
import streamlit as st
from app_logic import load_data, entities2Selection
from app_ui import (
setup_report_selection,
display_report_content,
display_entities,
display_relationship_graph,
handle_review_submission,
setup_input_selection
)
def initialize_session_state():
"""Initialize session state variables"""
if 'reports_json' not in st.session_state:
file_path = 'mockedReports.json'
st.session_state.reports_json = load_data(file_path)
if 'selected_entity' not in st.session_state:
st.session_state.selected_entity = None
def main():
"""Main application"""
# 设置页面为 wide mode
st.set_page_config(
page_title="Medical Report Review System",
layout="wide",
initial_sidebar_state="expanded"
)
st.title("Medical Report Review System")
# Initialize session state
initialize_session_state()
# 获取输入方式
input_selection = setup_input_selection()
if input_selection:
if input_selection["type"] == "dataset":
# 原有的数据集选择逻辑
selected_report = setup_report_selection()
if selected_report:
report_data = st.session_state.reports_json[selected_report]
entities_data = report_data['entities']
selections_og = entities2Selection(report_data['text'], entities_data)
else:
# 处理用户输入的文本
user_text = input_selection["text"]
if user_text:
from ie import process_sample
entities_data = process_sample(user_text, num_shots=5)
report_data = user_text
selections_og = entities2Selection(user_text, entities_data)
else:
st.warning("请输入文本内容")
return
# 创建两列布局
col1, col2 = st.columns([2, 2]) # 调整列宽比例
# Display report content
with col1:
display_report_content(report_data)
# Display relationship graph
current_entities = selections_og
if st.button("Update Graph", key="update_graph"):
current_entities = selections_og
display_relationship_graph(current_entities, entities_data)
# Display entities
with col2:
selections = display_entities(
report_data['text'] if isinstance(report_data, dict) else report_data,
selections_og
)
# 仅对数据集的报告显示提交按钮
if input_selection["type"] == "dataset":
handle_review_submission(selected_report, selections, entities_data)
if __name__ == "__main__":
main()