def predict(self, request, c):
        '''
        具体的grpc请求处理
        :param request: grpc请求
        :param c: grpc context
        :return: grpc返回结果
        '''

        with Session(request, c) as context:

            # 打印请求日志
            context.logger.info('req:{}'.format(MessageToDict(request)))
            # 真实处理请求的地方
            ret_code, ret_msg, results = self.engine.predict(context, 
                                        request.questions, request.strategy)
            # 生成gen_common_resp
            common_reply = CommonPbHelper.gen_common_resp(ret_code, ret_msg)
            resp = nCoV_diagnosis_engine_pb2.DPReply()
            resp.common_rep.CopyFrom(common_reply)
            # 填充返回结果
            if ret_code == 0:
                if type(results) is dict:
                    if 'reply_type' in results:
                        resp.reply_type = results['reply_type']
                    if 'answer' in results:
                        resp.answer = results['answer']
                    if 'severity_level' in results:
                        resp.severity_level = results['severity_level']
                    if 'answer_index' in results:
                        resp.answer_index = results['answer_index']
                    if 'question' in results:
                        ParseDict(results['question'], resp.question)
                    if 'conclusions' in results:
                        ParseDict(results['conclusions'], resp.conclusions)
            # 填充返回结果的标志,供后续的监控平台使用
            context.mark_succ('Query', 1 if ret_code == 0 else 0, ret_code)

            # 打印返回结果日志
            context.logger.info('rep:{}'.format(MessageToDict(resp)))

        return resp
    def predict(self, request, c):
        '''
        grpc request
        :param request: grpc
        :param c: grpc context
        :return: grpc result
        '''

        with Session(request, c) as context:

            context.logger.info('req:{}'.format(MessageToDict(request)))
            # call predict function
            ret_code, ret_msg, results = self.engine.predict(
                context, request.questions, request.strategy)
            # generate gen_common_resp
            common_reply = CommonPbHelper.gen_common_resp(ret_code, ret_msg)
            resp = nCoV_diagnosis_engine_pb2.DPReply()
            resp.common_rep.CopyFrom(common_reply)
            if ret_code == 0:
                if type(results) is dict:
                    if 'reply_type' in results:
                        resp.reply_type = results['reply_type']
                    if 'answer' in results:
                        resp.answer = results['answer']
                    if 'severity_level' in results:
                        resp.severity_level = results['severity_level']
                    if 'answer_index' in results:
                        resp.answer_index = results['answer_index']
                    if 'question' in results:
                        ParseDict(results['question'], resp.question)
                    if 'conclusions' in results:
                        ParseDict(results['conclusions'], resp.conclusions)
            # return flag
            context.mark_succ('Query', 1 if ret_code == 0 else 0, ret_code)

            # print log
            context.logger.info('rep:{}'.format(MessageToDict(resp)))

        return resp
Exemple #3
0
def _real_test(qs, answer_index):
    his = []
    for q in qs:
        question = nCoV_diagnosis_engine_pb2.DetailedQuestions()
        ParseDict(q, question, ignore_unknown_fields=True)
        his.append(question)
    with Session(temp_req, None) as context:
        ret_code, _, result = engine.predict(context,
                                             his_questions=his,
                                             strategy='beijing')
        assert ret_code == 0
        assert result['reply_type'] == nCoV_diagnosis_engine_pb2.NO_NEED
        assert result['answer_index'] == answer_index

        context.mark_succ('Quiz', 1 if ret_code == 0 else 0, ret_code)


# def test_case1():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['以上都没有'], 'no': 3}]
#
#     _real_test(qs, 1)
#
# def test_case2():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['>=38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['以上都没有'], 'no': 3}]
#
#     _real_test(qs, 2)
#
# def test_case3():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['是'], 'no': 4}]
#
#     _real_test(qs, 3)
#
# def test_case4():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['是'], 'no': 5}]
#
#     _real_test(qs, 4)
#
# def test_case5():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 5},
#             {'questionQuery': '年龄?', 'candidateSymp': ['小于5岁', '5~60岁', '60岁以上'],
#                 'sympList': ['60岁以上'], 'no': 6}]
#
#     _real_test(qs, 5)
#
# def test_case6():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 5},
#             {'questionQuery': '年龄?', 'candidateSymp': ['小于5岁', '5~60岁', '60岁以上'],
#                 'sympList': ['5~60岁'], 'no': 6},
#             {'questionQuery': '是否为孕妇?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['是'], 'no': 7}]
#
#     _real_test(qs, 6)
#
# def test_case7():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 5},
#             {'questionQuery': '年龄?', 'candidateSymp': ['小于5岁', '5~60岁', '60岁以上'],
#                 'sympList': ['5~60岁'], 'no': 6},
#             {'questionQuery': '是否为孕妇?', 'candidateSymp': ['是', '否'],
#                  'sympList': ['否'], 'no': 7},
#             {'questionQuery': '是否患有心脏病、慢性肺病、慢性肝肾病、肥胖等慢性病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 8}]
#
#     _real_test(qs, 7)
#
# def test_case8():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 5},
#             {'questionQuery': '年龄?', 'candidateSymp': ['小于5岁', '5~60岁', '60岁以上'],
#                 'sympList': ['5~60岁'], 'no': 6},
#             {'questionQuery': '是否为孕妇?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 7},
#             {'questionQuery': '是否患有心脏病、慢性肺病、慢性肝肾病、肥胖等慢性病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 8},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 9},
#             {'questionQuery': '最近两周是否接触过来自武汉的发热伴有呼吸道症状的患者,或有与他人聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 10}]
#
#     _real_test(qs, 8)
#
# def test_case9():
#     qs = [{'questionQuery': '是否发烧?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 1},
#             {'questionQuery': '发烧体温是多少度?', 'candidateSymp': ['<38', '>=38'],
#                 'sympList': ['<38'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '是否有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '咽痛', '干咳', '腹泻', '以上都没有'],
#                     'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '是否有明显的气喘或憋喘等症状?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '是否休息1~2天病情无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 5},
#             {'questionQuery': '年龄?', 'candidateSymp': ['小于5岁', '5~60岁', '60岁以上'],
#                 'sympList': ['5~60岁'], 'no': 6},
#             {'questionQuery': '是否为孕妇?', 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 7},
#             {'questionQuery': '是否患有心脏病、慢性肺病、慢性肝肾病、肥胖等慢性病?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 8},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 9},
#             {'questionQuery': '最近两周是否接触过来自武汉的发热伴有呼吸道症状的患者,或有与他人聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 10}]
#
#     _real_test(qs, 9)
Exemple #4
0
def _real_test(qs, answer_index):
    his = []
    for q in qs:
        question = nCoV_diagnosis_engine_pb2.DetailedQuestions()
        ParseDict(q, question, ignore_unknown_fields=True)
        his.append(question)
    with Session(temp_req, None) as context:
        ret_code, _, result = engine.predict(context,
                                             his_questions=his,
                                             strategy='v3')
        assert ret_code == 0
        assert result['reply_type'] == nCoV_diagnosis_engine_pb2.NO_NEED
        assert result['answer_index'] == answer_index

        context.mark_succ('Quiz', 1 if ret_code == 0 else 0, ret_code)

        print(result['conclusions'])


# def test_case1():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#             {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#                 'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 3},
#             {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#                 'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                 '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例', '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#             {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 5},
#             {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#                 'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                                   '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 7},
#             ]
#
#     _real_test(qs, 1)
#
#
# def test_case2():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                                     '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 5},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                              '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['以上都没有'], 'no': 7},
#           ]
#
#     _real_test(qs, 1)
#
# def test_case3():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['其它慢性病'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 5},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 7},
#           ]
#
#     _real_test(qs, 1)
#
# def test_case4():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 5},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 7},
#           ]
#
#     _real_test(qs, 1)
#
# def test_case5():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['有武汉及周边地区的旅行或居住史'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 5},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 7},
#           ]
#
#     _real_test(qs, 2)
#
# def test_case6():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['有武汉及周边地区的旅行或居住史'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
# 				'sympList': ['> 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 7},
#           ]
#
#     _real_test(qs, 11)
#
# def test_case7():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['有武汉及周边地区的旅行或居住史'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
# 				'sympList': ['≤ 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['鼻塞'], 'no': 7},
#           {'questionQuery': '请问上述症状是否有加重或休息后仍不见好转?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 8}
#           ]
#
#     _real_test(qs, 12)
#
# def test_case8():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['有武汉及周边地区的旅行或居住史'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
# 				'sympList': ['> 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['鼻塞'], 'no': 7},
#           {'questionQuery': '请问上述症状是否有加重或休息后仍不见好转?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 8}
#           ]
#
#     _real_test(qs, 13)
#
# def test_case9():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
# 				'sympList': ['> 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['以上都没有'], 'no': 7},
#           {'questionQuery': '请问上述症状是否休息后无好转,或逐渐加重?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 8}
#           ]
#
#     _real_test(qs, 8)
#
# def test_case10():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
# 				'sympList': ['≤ 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['乏力'], 'no': 7},
#           {'questionQuery': '请问上述症状是否有加重或休息后仍不见好转?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 8}
#           ]
#
#     _real_test(qs, 9)
#
#
# def test_case11():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '> 37.3'],
# 				'sympList': ['> 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['乏力'], 'no': 7},
#           {'questionQuery': '请问上述症状是否有加重或休息后仍不见好转?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 8}
#           ]
#
#     _real_test(qs, 5)
#
# def test_case12():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '> 37.3'],
# 				'sympList': ['> 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['胸闷、憋喘或呼吸困难'], 'no': 7}
#           ]
#
#     _real_test(qs, 15)
#
# def test_case13():
#     qs = [{'questionQuery': '请问您的年龄阶段是?', 'candidateSymp': ['小于5岁', '5~14岁', '15~60岁', '60岁以上'],
# 				'sympList': ['15~60岁'], 'no': 1},
#           {'questionQuery': '好的,请问您是否为孕妇?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['否'], 'no': 2},
#           {'questionType': 'MULTI', 'questionQuery': '了解,请问您是否患有以下慢性疾病?',
#            'candidateSymp': ['慢性心脑血管疾病', '慢性呼吸道疾病', '慢性肝、肾病', '免疫力低下', '其它慢性病', '以上都没有'],
# 				'sympList': ['以上都没有'],
#            'no': 3},
#           {'questionType': 'MULTI', 'questionQuery': '好的,最近两周内,是否有以下相关情况或接触史?',
#            'candidateSymp': ['有武汉及周边地区的旅行或居住史', '接触过武汉及周边(或其他病例聚集区)发热伴呼吸道症状的患者',
#                             '接触过的家人、同事或朋友同时出现发热或呼吸道症状', '接触、探视过疑似病例或确诊病例',
#                              '与疑似病例或确诊病例同乘一趟交通工具', '以上都没有'],
# 				'sympList': ['以上都没有'], 'no': 4},
#           {'questionQuery': '了解,请问您是否发热?', 'candidateSymp': ['是', '否'],
# 				'sympList': ['是'], 'no': 5},
#           {'questionQuery': '请问您体温最高达到多少度?', 'candidateSymp': ['> 37.3℃', '> 37.3'],
# 				'sympList': ['≤ 37.3℃'], 'no': 6},
#           {'questionType': 'MULTI', 'questionQuery': '收到,请问最近两周内是否还有其它症状?',
#            'candidateSymp': ['乏力', '咳嗽', '胸闷、憋喘或呼吸困难', '鼻塞', '流鼻涕',
#                             '咽痛', '头痛', '肌肉酸痛', '腹泻', '结膜炎', '以上都没有'],
#
# 				'sympList': ['胸闷、憋喘或呼吸困难'], 'no': 7}
#           ]
#
#     _real_test(qs, 14)
Exemple #5
0
    from server.test.test_v3 import _real_test

    from server.config.config import load_config
    config = load_config()

    from google.protobuf.json_format import ParseDict, MessageToDict
    from server.utils.common_help import Session
    engine = nCoVTestEngine(config)

    temp_req = nCoV_diagnosis_engine_pb2.DPRequest()
    # temp_req.strategy = 'wuhan'
    # temp_req.strategy = 'beijing'
    temp_req.strategy = 'v3'

    with Session(temp_req, None) as context:

        his_question = []
        ret_code, ret_msg, result = engine.predict(context, his_question,
                                                   temp_req.strategy)
        while result[
                'reply_type'] == nCoV_diagnosis_engine_pb2.NEED_DETAILED_QUESTION:
            question_info = result['question']
            print('\nq_no:{}'.format(question_info['no']))
            print('q_type:{}'.format(question_info['question_type']))
            print('q:{}'.format(question_info['question_query']))
            print('s_a:{}'.format(question_info['candidate_symp']))

            answer = input()
            question_info['symp_list'] = [answer]
def _real_test(qs, answer_index):
    his = []
    for q in qs:
        question = nCoV_diagnosis_engine_pb2.DetailedQuestions()
        ParseDict(q, question, ignore_unknown_fields=True)
        his.append(question)
    with Session(temp_req, None) as context:
        ret_code, _, result = engine.predict(context,
                                             his_questions=his,
                                             strategy='wuhan')
        assert ret_code == 0
        assert result['reply_type'] == nCoV_diagnosis_engine_pb2.NO_NEED
        assert result['answer_index'] == answer_index

        context.mark_succ('Quiz', 1 if ret_code == 0 else 0, ret_code)


# def test_case1():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['≤ 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                  'sympList': ['以上都没有'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 5}
#     ]
#     _real_test(qs, 1)
#
# def test_case2():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['> 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['以上都没有'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 5}
#     ]
#     _real_test(qs, 2)
#
# def test_case3():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['≤ 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['流鼻涕'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'], 'sympList': ['否'],
#                 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 5}
#     ]
#     _real_test(qs, 3)
#
# def test_case4():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['≤ 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['以上都没有'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 5}
#     ]
#     _real_test(qs, 4)
#
# def test_case5():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['> 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['否'], 'no': 5}
#     ]
#     _real_test(qs, 5)
#
# def test_case6():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['> 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['以上都没有'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 5}
#     ]
#     _real_test(qs, 6)
#
# def test_case7():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['≤ 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                 'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 5}
#     ]
#     _real_test(qs, 7)
#
# def test_case8():
#     qs = [{'questionQuery': '请问您是否发热?', 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 1},
#             {'questionQuery': '请问发热到多少度?', 'candidateSymp': ['> 37.3℃', '≤ 37.3℃'],
#                 'sympList': ['> 37.3℃'], 'no': 2},
#             {'questionType': 'MULTI', 'questionQuery': '请问是否还有其它症状?',
#                 'candidateSymp': ['乏力', '干咳', '鼻塞', '流鼻涕', '咽痛', '头痛', '浑身酸痛', '腹泻', '以上都没有'],
#                     'sympList': ['腹泻'], 'no': 3},
#             {'questionQuery': '最近两周是否居住在武汉或去过武汉?', 'candidateSymp': ['是', '否'],
#                 'sympList': ['否'], 'no': 4},
#             {'questionQuery': '最近两周是否接触过来自武汉(或其他病例持续传播地区)的发热或有呼吸道症状的患者,或有聚集性发病?',
#                 'candidateSymp': ['是', '否'], 'sympList': ['是'], 'no': 5}
#     ]
#     _real_test(qs, 8)