File size: 6,243 Bytes
7950af4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
556940a
7950af4
 
 
 
 
 
 
 
 
8c32d97
43e151d
556940a
7950af4
e5d3159
7950af4
a5762e5
7950af4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import gradio as gr
import os

os.environ["no_proxy"] = "localhost,127.0.0.1,::1"

def advice1(radio1, radio2, radio3):
    # 有关睡眠问题的建议
    if radio1 == 0:
        if radio2 == "存在":
            return "嗜睡"
        else:
            return radio2
    if radio1 == 1:
        return radio3


def advice2(radio4):
    # 有关饮食问题的建议
    if radio4 == 0:
        return "不存在"
    if radio4 == 1:
        return "增重"
    else:
        return "消瘦"


def advice3(radio5, radio6):
    # 有关情绪问题的建议
    if radio5 == "好":
        return "不存在情绪问题"
    if radio5 == "不好":
        return "抑郁情绪持续了" + radio6


def advice4(radio5, text3_1, radio8, radio9, radio10):
    # 有关自杀倾向的建议
    if radio5 == "不好":
        if keyword(text3_1):
            if radio8 == 0:
                if radio9 == 0:
                    if radio10 == "没想过":
                        return ",有自杀倾向"
                    if radio10 == "想过,没想过具体时间和地点":
                        return ",自杀倾向较严重"
                    if radio10 == "想过具体做法,时间和地点,没实践过":
                        return ",自杀倾向严重"
                    if radio10 == "实践过":
                        return ",有过自杀行为"
                else:
                    return ",有自杀倾向"
        else:
            return ""
    else:
        return ""


def advice(
    radio1, radio2, radio3, radio4, radio5, radio6, text3_1, radio8, radio9, radio10,result1,result2,result3
):
    symptoms = ""
    if advice1(radio1, radio2, radio3) == "不存在" and advice2(radio4) == "不存在":
        symptoms = "不存在睡眠、饮食问题且"
    if advice1(radio1, radio2, radio3) != "不存在" and advice2(radio4) == "不存在":
        symptoms = "存在" + advice1(radio1, radio2, radio3) + "问题,不存在饮食问题且"
    if advice1(radio1, radio2, radio3) == "不存在" and advice2(radio4) != "不存在":
        symptoms = "不存在睡眠问题,存在" + advice2(radio4) + "问题且"

    final_score=result1+result2+result3
    print("最终得分:",final_score)
    
    return (
        gr.Column(visible=True),
        gr.Markdown(visible=True),
        final_score,
        gr.Textbox(
            value="你"
            + symptoms
            + advice3(radio5, radio6)
            + advice4(radio5, text3_1, radio8, radio9, radio10)
            + "。\n  抑郁症症状因人而异,并不应当只以是否存在上述症状来判断,并且可能存在上述症状以外更个人化的症状,如果存在强烈的各种不适或者怀疑自己有抑郁症,建议及时去进行专业检查和干预治疗,也有可能存在抑郁症以外的各类精神障碍与心理疾病,如焦虑症或双相情感障碍等等。\n  抑郁症和其他各类精神上的疾病不是患者的问题或者错误,也不是矫情或者敏感,也不说明患者与其他人有什么不同,他们只是生病了,需要进行治疗而已。此外,一次测试结果不能代表全部,我们希望你能持续地关注自己的心理健康状态,常来这里自测评估一下。最后,不管你有没有抑郁症或者其他疾病,都拍拍你,抱抱你,祝愿你接下来的生活光明灿烂!",
            visible=True,
        ),
    )


def final_advice(
    radio1, radio2, radio3, radio4, radio5, radio6, text3_1, radio8, radio9, radio10
):
    return gr.Textbox(
        visible=True,
        value=advice(
            radio1,
            radio2,
            radio3,
            radio4,
            radio5,
            radio6,
            text3_1,
            radio8,
            radio9,
            radio10,
        ),
    )


def visibility():  # 让下一部分出现
    return gr.Column(visible=True)


def visibility2():  # 让下一道选择题出现
    return gr.Radio(visible=True)


def visibility3():  # 针对有标题切换的情况
    return (
        gr.Markdown(visible=True),
        gr.Radio(visible=True),
    )


def visibility4():
    return gr.Markdown(visible=True)


def visibility_choice(choice):  # 根据选择选项的不同决定下一道题是哪个
    if choice == 0:
        return gr.Column(visible=True), gr.Column(visible=False)
    else:
        return gr.Column(visible=False), gr.Column(visible=True)


def visibility_choice2(choice):  # 选择视频,语音还是文本输入
    if choice == 0:
        return (
            gr.Column(visible=True),
            gr.Column(visible=False),
            gr.Column(visible=False),
        )
    if choice == 1:
        return (
            gr.Column(visible=False),
            gr.Column(visible=True),
            gr.Column(visible=False),
        )
    else:
        return (
            gr.Column(visible=False),
            gr.Column(visible=False),
            gr.Column(visible=True),
        )


def visibility_choice3(choice):  # 根据选择选项的不同决定下一道题是哪个
    if choice == "不好":
        return (
            gr.Radio(visible=True),
            gr.Column(visible=False),
            gr.Column(visible=False),
        )
    else:
        return (
            gr.Radio(visible=False),
            gr.Column(visible=False),
            gr.Column(visible=True),
        )


def visibility_choice4(choice):  # 根据选择选项的不同决定下一道题是哪个
    if choice == 0:
        return gr.Radio(visible=True), gr.Radio(visible=False)
    else:
        return gr.Radio(visible=False), gr.Radio(visible=True)


def keyword(
    text,
):  # 设置关于自杀倾向问题的触发词(你决定要不要加一个文本负向概率大于一定值的判定)
    keywords = ["轻生", "自杀", "死", "活着", "意义", "意思", "干劲"]
    for i in range(len(keywords)):
        if keywords[i].find(text) != -1:
            return True
    return False


def visibility_choice5(text):  # 关于自杀倾向问题是否触发
    if keyword(text) is True:
        return gr.Radio(visible=True), gr.Column(visible=False)
    else:
        return gr.Radio(visible=False), gr.Column(visible=True)