File size: 2,791 Bytes
93411f7
9985fd7
 
 
 
 
 
a06ac21
 
9985fd7
 
 
 
 
1a1c17c
 
 
 
9985fd7
 
a952df1
 
 
9985fd7
 
 
 
 
 
 
a952df1
 
9985fd7
 
a952df1
a06ac21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9985fd7
 
 
e81f16d
a952df1
9985fd7
 
 
 
 
 
 
e81f16d
a952df1
9985fd7
a06ac21
 
 
 
a952df1
a06ac21
 
 
2981176
04a8bf0
 
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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()