Merge remote-tracking branch 'origin/dev' into dev

dev_v1.0.1
xueqingkun 2 years ago
commit 290dd8abf1

@ -1,152 +0,0 @@
version: "3.1"
intents:
- ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698
- ask_wen_chu_xian_jian_ge_1717735465047568386
- ask_wen_fa_zuo_pin_lv_1717735465211146241
- ask_wen_dui_ri_chang_ying_xiang_1717735465357946881
- ask_wen_fu_yao_shi_1717735465630576641
- ask_wen_chou_yan_shi_1717735465680908289
- ask_wen_ri_chang_bian_hua_1717735465387307010
- ask_wen_bing_shi_1717735465420861442
- ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345
- ask_wen_zheng_zhuang_miao_shu_1717735465076928513
- ask_wen_jia_zu_shi_1717735465328586753
- ask_wen_chu_xian_duo_jiu_1717735464976265217
- ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954
- ask_wen_fu_yao_shi_1717735465735434241
- ask_wen_guo_min_shi_1717735465710268417
- ask_wen_jiu_zhen_shi_1717735465299226626
- ask_wen_qi_ta_zheng_zhuang_1717735465173397505
- ask_wen_bu_shu_fu_1717735464913350658
- ask_wen_lei_si_qing_kuang_1717735465240506370
- ask_wen_ti_li_1717735465605410818
- ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497
- ask_wen_fu_xie_1717735465580244993
- ask_wen_zi_wo_gan_jue_1717735465504747522
- ask_wen_shou_shang_shi_1717735465450221569
- ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770
- ask_wen_diao_tou_fa_1717735465555079170
- ask_wen_yin_jiu_shi_1717735465655742466
responses:
utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698:
- text: "没有"
utter_ask_wen_chu_xian_jian_ge_1717735465047568386:
- text: "基本上天天出现。"
utter_ask_wen_fa_zuo_pin_lv_1717735465211146241:
- text: "反复发作,基本上天天出现,"
utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881:
- text: "影响到我的工作和生活了。"
utter_ask_wen_fu_yao_shi_1717735465630576641:
- text: "没有"
utter_ask_wen_chou_yan_shi_1717735465680908289:
- text: "没有"
utter_ask_wen_ri_chang_bian_hua_1717735465387307010:
- text: "没有注意到。"
utter_ask_wen_bing_shi_1717735465420861442:
- text: "没有"
utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345:
- text: "没有"
utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513:
- text: "感觉心跳特别快,喘不上气,活动后更严重。"
utter_ask_wen_jia_zu_shi_1717735465328586753:
- text: "没有"
utter_ask_wen_chu_xian_duo_jiu_1717735464976265217:
- text: "最近半年吧"
utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954:
- text: "活动后会加重,双腿还会没劲。"
utter_ask_wen_fu_yao_shi_1717735465735434241:
- text: "之前身体很好,没吃过什么药。"
utter_ask_wen_guo_min_shi_1717735465710268417:
- text: "没有"
utter_ask_wen_jiu_zhen_shi_1717735465299226626:
- text: "没有"
utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505:
- text: "觉得手抖、怕热,容易出汗,胃口很好,吃很多还总觉得饿,紧张,特别容易发脾气,还拉肚子,瘦了一些"
utter_ask_wen_bu_shu_fu_1717735464913350658:
- text: "我最近感觉心跳特别快,喘不上气。"
utter_ask_wen_lei_si_qing_kuang_1717735465240506370:
- text: "之前没有。"
utter_ask_wen_ti_li_1717735465605410818:
- text: "体力好像比之前差了一些,最近这些天我经常喘不过气来,并且活动后感觉双腿乏力,感觉到非常虚弱。"
utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497:
- text: "夏天很怕热,晚上也会睡不着。"
utter_ask_wen_fu_xie_1717735465580244993:
- text: "是的我每天大约3次稀便。"
utter_ask_wen_zi_wo_gan_jue_1717735465504747522:
- text: "我不知道"
utter_ask_wen_shou_shang_shi_1717735465450221569:
- text: "没有"
utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770:
- text: "比较严重。"
utter_ask_wen_diao_tou_fa_1717735465555079170:
- text: "似乎是比之前掉的多了。"
utter_ask_wen_yin_jiu_shi_1717735465655742466:
- text: "没有"
utter_tool_height:
- text: "---tool---7"
utter_tool_blood_pressure:
- text: "---tool---2"
utter_tool_heart_rate:
- text: "---tool---9"
utter_tool_thermometer:
- text: "---tool---6"
utter_tool_weight:
- text: "---tool---8"
utter_ancillary_eye_ct:
- text: "---ancillary---10"
utter_ancillary_blood_a-g:
- text: "---ancillary---3"
utter_ancillary_jia_zhuang_xian_chao_sheng:
- text: "---ancillary---9"
utter_ancillary_xi_dian_lv:
- text: "---ancillary---4"
utter_ancillary_blood_h-z:
- text: "---ancillary---1"
utter_ancillary_xin_dian_tu:
- text: "---ancillary---2"
actions:
- utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698
- utter_ask_wen_chu_xian_jian_ge_1717735465047568386
- utter_ask_wen_fa_zuo_pin_lv_1717735465211146241
- utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881
- utter_ask_wen_fu_yao_shi_1717735465630576641
- utter_ask_wen_chou_yan_shi_1717735465680908289
- utter_ask_wen_ri_chang_bian_hua_1717735465387307010
- utter_ask_wen_bing_shi_1717735465420861442
- utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345
- utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513
- utter_ask_wen_jia_zu_shi_1717735465328586753
- utter_ask_wen_chu_xian_duo_jiu_1717735464976265217
- utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954
- utter_ask_wen_fu_yao_shi_1717735465735434241
- utter_ask_wen_guo_min_shi_1717735465710268417
- utter_ask_wen_jiu_zhen_shi_1717735465299226626
- utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505
- utter_ask_wen_bu_shu_fu_1717735464913350658
- utter_ask_wen_lei_si_qing_kuang_1717735465240506370
- utter_ask_wen_ti_li_1717735465605410818
- utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497
- utter_ask_wen_fu_xie_1717735465580244993
- utter_ask_wen_zi_wo_gan_jue_1717735465504747522
- utter_ask_wen_shou_shang_shi_1717735465450221569
- utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770
- utter_ask_wen_diao_tou_fa_1717735465555079170
- utter_ask_wen_yin_jiu_shi_1717735465655742466
- utter_tool_height
- utter_tool_blood_pressure
- utter_tool_heart_rate
- utter_tool_thermometer
- utter_tool_weight
- utter_ancillary_eye_ct
- utter_ancillary_blood_a-g
- utter_ancillary_jia_zhuang_xian_chao_sheng
- utter_ancillary_xi_dian_lv
- utter_ancillary_blood_h-z
- utter_ancillary_xin_dian_tu
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true

@ -1,864 +0,0 @@
version: "3.1"
nlu:
- intent: ask_wen_bu_shu_fu_1717735464913350658
examples: |
- 今天您有什么不舒服?哪里不舒服?
- 今天您感到不适吗?
- 您是否有不舒服的感觉?
- 您今天身体感觉怎么样?
- 今天您是否觉得不对劲?
- 您今天感到不自在吗?
- 您是否体验到身体上的不适?
- 您今天是否感到不适之情?
- 您有没有身体不适的情况?
- 您今天是否有不适感?
- 您今天是否身体不适?
- 您今天是否有不舒服的感觉?
- 今天您有没有身体不适的症状?
- 您今天是否体验到不适之处?
- 您今天是否感到不适或不舒服?
- 今天您是否体验到身体的不适?
- 您今天是否有身体上的不适感?
- 您是否在今天感受到身体不适?
- 您今天是否体验到身体不适的情况?
- 您今天是否感到不自在或不舒适?
- 您今天是否感到身体的不
- intent: ask_wen_chu_xian_duo_jiu_1717735464976265217
examples: |
- 您第一次发现这个问题是在什么时候?它是从什么时候开始的?
- 当您首次察觉到这一问题是在什么日期?
- 您是何时开始意识到这个问题的存在?
- 您是在什么时间点首次察觉到这个问题?
- 您是何时首次觉察到这个问题的存在?
- 这个问题是在什么日期首次引起您的关注?
- 您是在什么时间首次察觉到这个问题的存在?
- 您是何时开始感知到这个问题的存在?
- 这个问题是在什么日期首次显现在您的视野中?
- 您是在什么时间点开始注意到这个问题?
- 这个问题何时首次引起您的注意?
- 您是在什么日期首次注意到这个问题?
- 这个问题是在什么时间点开始变得明显?
- 您是何时首次觉察到这个问题?
- 您是在什么日期开始感知到这个问题的存在?
- 这个问题何时首次显现在您的视野中?
- 您是在什么时间点首次发觉这个问题?
- 这个问题是在什么日期首次引起您的注意?
- 您是何时开始察觉到这个问题的存在?
- 您是在什么时间点首次注意到这个问题?
- 这个问题是在什么日期首次被您察
- intent: ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954
examples: |
- 您有没有注意过什么情况下症状会减轻或加重?
- 您是否留意到在特定情况下症状有所缓解或加重?
- 请问您是否观察到在某些情况下症状减轻或恶化?
- 您是否留心到症状在何种情况下会有所好转或恶化?
- 请问您是否曾留意到症状在某些情况下会减轻或加重?
- 您是否曾经观察到在某些情况下症状有所缓解或加剧?
- 请问您是否留意到在什么情况下症状减轻或恶化?
- 您是否留心到有没有情况会影响症状的轻重?
- 请问您是否观察到在某些特定情况下症状改善或加剧?
- 您是否留意到在何种情况下症状变得更轻或更重?
- 请问您是否曾经观察到在某些情况下症状变得更好或更糟?
- 您是否曾留意到在某些情况下症状会有所减轻或加重?
- 请问您是否留意到在特定情况下症状有所改善或恶化?
- 您是否留心到症状在何种情况下会有所好转或变得更糟?
- 请问您是否观察到在某些情境下症状有所减轻或恶化?
- 您是否留意到有没有特定情况可能会影响症状的严重程度?
- 请问您是否观察到在某些情况下症状减轻或加剧?
- 您是否留心到在什么情况下症状有所改善或加重?
- 请问您是否曾留意到在某些情况下症状减轻或变得更严重?
- 您是否留意到在何种情况下症状会减轻或加重?
- 请问您是否观察到在某些特定情况下症状有所改善或惡化?
- intent: ask_wen_chu_xian_jian_ge_1717735465047568386
examples: |
- 这些症状多久出现一次?
- 多长时间会出现这些症状一次?
- 请问这些症状以何种频率出现?
- 这些症状每隔多久会出现一次?
- 这些症状出现的时间间隔是多长?
- 请问这些症状的发作频率如何?
- 这些症状每隔多久会再次显现?
- 这些症状出现的周期是多久?
- 请问这些症状多长时间出现一次?
- 这些症状每隔多长时间会再次发生?
- 这些症状的复发间隔是多久?
- 请问这些症状的出现频率如何?
- 这些症状每隔多长时间会再次出现?
- 这些症状的发作频度是多少?
- 请问这些症状多长时间出现一次?
- 这些症状的复发时间间隔是多久?
- 这些症状每隔多久会再次表现出来?
- 请问这些症状的出现频繁程度如何?
- 这些症状每隔多久会再次出现?
- 这些症状的发作周期是多久?
- 请问这些症状多久才会再次出现?
- intent: ask_wen_zheng_zhuang_miao_shu_1717735465076928513
examples: |
- 您能描述一下这些症状吗?
- 您可以详细描述一下这些症状吗?
- 能否就这些症状进行一番详尽的描述?
- 请您能够对这些症状进行一次详细的描述吗?
- 您是否能够提供有关这些症状的详细信息?
- 可否对这些症状进行一番详细的叙述?
- 请您详细描述一下这些症状。
- 能否对这些症状做出详尽的说明?
- 请您对这些症状进行详细的描述。
- 能否提供有关这些症状的详细信息?
- 请您详细叙述一下这些症状。
- 能否就这些症状提供更详细的信息?
- 请您详细阐述一下这些症状。
- 能否对这些症状提供更详尽的描述?
- 请您能够提供这些症状的详细信息吗?
- 能否详细描述一下这些症状?
- 请您详细叙述有关这些症状的情况。
- 能否对这些症状做出更详尽的说明?
- 请您对这些症状提供详细的描述。
- 能否提供有关这些症状的更多详细信息?
- 请您详细描述一下这些症状的情况。
- intent: ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770
examples: |
- 这些症状有多严重?很轻微还是比较严重?
- 这些症状的严重程度是多少?是轻微的还是相当严重的?
- 请问这些症状有多严重?它们是轻微的还是相当严重的?
- 这些症状的强烈程度如何?它们是轻微的还是相当严重的?
- 这些症状的程度是不是很重?还是相对较轻?
- 请问这些症状有多严重?它们是很轻微的还是相当严重的?
- 这些症状的强度是怎样的?是轻微的还是相当严重的?
- 这些症状的严重程度是轻微的还是相当显著的?
- 请问这些症状有多重?是轻微的还是比较严重的?
- 这些症状的严重程度是否较高?还是相对较轻?
- 这些症状的严重程度是否很明显?还是相对较轻微?
- 请问这些症状有多严重?它们是轻微的还是相当严重的?
- 这些症状的程度是否很大?还是相对较小?
- 这些症状的严重性如何?是轻微的还是相当严重的?
- 这些症状的强度是多少?是轻微的还是相当严重的?
- 请问这些症状有多严重?它们是轻微的还是相当严重的?
- 这些症状的严重程度是不是很高?还是相对较低?
- 这些症状的程度是多严重?是轻微的还是相当严重的?
- 请问这些症状有多重?它们是轻微的还是相当严重的?
- 这些症状的严重程度是否很严重?还是相对较轻?
- 这些症状的严重性如何?是很轻微的还是相当严重的?
- intent: ask_wen_qi_ta_zheng_zhuang_1717735465173397505
examples: |
- 当您出现这些症状时是否还伴有其他异常?
- 您在出现这些症状的同时是否还有其他异常情况?
- 当您经历这些症状时,是否还伴随其他不正常情况?
- 请问,当出现这些症状时,是否还有其他不寻常的情况?
- 当您出现这些症状时,是否还出现其他不正常的情况?
- 您是否同时经历其他异常情况,当出现这些症状时?
- 当您有这些症状的时候,是否还伴随其他异常?
- 请问,当您出现这些症状时,是否还有其他异常情况?
- 是否有其他不正常情况伴随着这些症状的出现?
- 当这些症状出现时,是否还伴随其他异常情况?
- 请问,当您出现这些症状时,是否还有其他不寻常的情况?
- 您是否在出现这些症状的同时还经历其他异常情况?
- 当您有这些症状的时候,是否还伴随其他不正常的情况?
- 是否有其他异常情况同时发生,当这些症状出现时?
- 当您经历这些症状时,是否还伴随其他不正常情况?
- 请问,当您出现这些症状时,是否还有其他异常情况?
- 您是否在出现这些症状的同时还有其他不正常情况?
- 当这些症状出现时,是否还伴随其他异常情况?
- 是否有其他不正常情况伴随着这些症状的出现?
- 您是否同时经历其他异常情况,当出现这些症状时?
- 请问,当您出现这些症状时,是否还有其他不寻常的情况?
- intent: ask_wen_fa_zuo_pin_lv_1717735465211146241
examples: |
- 这些症状是反复发作还是只出现了一次?有多频繁?
- 这些症状是周期性出现的,还是只发生过一次?
- 请问这些症状是不断重复出现的,还是只出现了一次?
- 这些症状是有规律地再次发生,还是只出现了一次?
- 这些症状是经常性出现的,还是只出现了一次?
- 请问这些症状是否反复发作,还是只出现了一次?
- 这些症状是定期再次发生的,还是只出现了一次?
- 请问这些症状是否多次重复发生,还是只发生了一次?
- 这些症状是以某种频率反复发生的,还是只出现了一次?
- 请问这些症状是否定期出现,还是只出现了一次?
- 这些症状是以一定的频率再次发生的,还是只出现了一次?
- 请问这些症状是否频繁出现,还是只发生了一次?
- 这些症状是否有规律地反复出现,还是只出现了一次?
- 请问这些症状是否经常性出现,还是只出现了一次?
- 这些症状是定期反复发生的,还是只出现了一次?
- 请问这些症状是否多次发作,还是只发生了一次?
- 这些症状是否以某种频率再次发生,还是只出现了一次?
- 请问这些症状是否有规律地出现,还是只出现了一次?
- 这些症状是以一定的频率再次发生的,还是只出现了一次?
- 请问这些症状是否频繁出现,还是只发生了一次?
- 这些症状是否以一种周期性的方式再次出现,还是只出现了一次?
- intent: ask_wen_lei_si_qing_kuang_1717735465240506370
examples: |
- 您以前有过类似情况吗?
- 在过去,您是否曾经经历过类似的情况?
- 您以前是否曾经遇到过相似的情况?
- 在过去,您是否曾经有过相似的经历?
- 您以前是否曾经经历过相似的情况?
- 在过去,您是否曾经有过相似的经历?
- 您以前是否曾经遇到过类似的情况?
- 在以前的经历中,您是否曾经有过相似的情况?
- 您以前是否曾经遇到过与此相似的情况?
- 在过去,您是否曾经经历过与此相似的情况?
- 您以前是否曾经遇到过与此相似的情况?
- 在过去,您是否曾经有过与此相似的经历?
- 您以前是否曾经经历过与此相似的情况?
- 在过去,您是否曾经遇到过类似的情况?
- 您以前是否曾经有过类似的经历?
- 在以前的经历中,您是否曾经遇到过相似的情况?
- 您以前是否曾经有过与此类似的情况?
- 在过去,您是否曾经经历过与此类似的情况?
- 您以前是否曾经遇到过与此类似的情况?
- 在以前的经历中,您是否曾经有过类似的情况?
- 您以前是否曾经有过类似的经历?
- intent: ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497
examples: |
- 这些症状会随着时间、气候或季节等的不同而改变吗?
- 这些症状是否会受时间、气候或季节等因素的影响而变化?
- 请问这些症状是否会随着时间、气候或季节等的变化而改变?
- 这些症状是否在不同的时间、气候或季节下会有所不同?
- 请问这些症状是否受时间、气候或季节等因素的变化而改变?
- 这些症状是否会在不同的时间、气候或季节下表现出不同的特点?
- 请问这些症状是否受时间、气候或季节等因素的差异而改变?
- 这些症状是否会因时间、气候或季节等的变化而有所不同?
- 请问这些症状是否在不同的时间、气候或季节下会发生变化?
- 这些症状是否会根据时间、气候或季节等因素的不同而有所变动?
- 请问这些症状是否受时间、气候或季节等变化的影响而改变?
- 这些症状是否会在不同的时间、气候或季节下表现出变化?
- 请问这些症状是否受时间、气候或季节等变化的差异而改变?
- 这些症状是否会因时间、气候或季节等的不同而发生变化?
- 请问这些症状是否在不同的时间、气候或季节下会有所不同?
- 这些症状是否会随着时间、气候或季节等因素的不同而有所改变?
- 请问这些症状是否受时间、气候或季节等因素的变动而改变?
- 这些症状是否会在不同的时间、气候或季节下有所改变?
- 请问这些症状是否受时间、气候或季节等因素的差异而改变?
- 这些症状是否会因时间、气候或季节等的变化而发生改变?
- 请问这些症状是否在不同的时间、气候或季节下会表现出差异?
- intent: ask_wen_jiu_zhen_shi_1717735465299226626
examples: |
- 您以前有没有因为这些症状看过其他的医生?
- 您之前是否因这些症状曾就诊于其他医生?
- 以前,您是否因这些症状而咨询过其他医生?
- 您之前有没有因这些症状而就医求诊?
- 以前,您是否曾经因这些症状而看过其他医生?
- 您之前是否因这些症状而咨询了其他医生?
- 以前,您是否曾经因这些症状而就医?
- 您之前有没有因为这些症状而寻求其他医生的帮助?
- 以前,您是否因这些症状而咨询过其他专科医生?
- 您之前是否因这些症状而就诊于其他医疗专家?
- 以前,您是否曾经因这些症状而寻求其他医生的意见?
- 您之前有没有因这些症状而寻求其他医疗专家的帮助?
- 以前,您是否曾经因这些症状而咨询了其他专科医生?
- 您之前是否因这些症状而就医求助?
- 以前,您是否曾经因这些症状而就诊于其他专科医生?
- 您之前有没有因为这些症状而寻求了其他医疗专家的意见?
- 以前,您是否因这些症状而咨询了其他医疗专家?
- 您之前是否因这些症状而就医看诊?
- 以前,您是否曾经因这些症状而咨询其他专业医生?
- 您之前有没有因这些症状而咨询其他医疗专家?
- 以前,您是否曾经因这些症状而就医寻求了其他医生的帮助?
- intent: ask_wen_jia_zu_shi_1717735465328586753
examples: |
- 您的家人或朋友出现过类似的情况吗?
- 您的家人或朋友是否经历过相似的情况?
- 有没有人您认识的人曾经遇到过类似的情形?
- 您的亲属或朋友中是否有人经历过相同的情况?
- 有没有您身边的人曾经遇到过相似的情况?
- 您的亲戚或朋友中是否有人有过类似的经验?
- 有没有您周围的人曾经经历过相似的情况?
- 您的亲朋好友中是否有人曾经遇到过相同的状况?
- 有没有您认识的人曾经有过类似的经验?
- 您的家庭成员或朋友中是否有人经历过相似的情况?
- 有没有人您认识的人曾经遇到过相类似的情况?
- 您的朋友或家人中是否有人有过类似的经验?
- 有没有您身边的人曾经有过相似的情况?
- 您的朋友或亲戚中是否有人曾经遇到过相同的情况?
- 有没有您周围的人曾经遇到过相似的情形?
- 您的朋友或家人中是否有人曾经有过类似的经验?
- 有没有人您认识的人曾经经历过相似的情况?
- 您的亲戚或朋友中是否有人有过类似的情况?
- 有没有您身边的人曾经遇到过相同的状况?
- 您的亲朋好友中是否有人曾经有过类似的经验?
- 有没有您认识的人曾经有过相似的情形?
- intent: ask_wen_dui_ri_chang_ying_xiang_1717735465357946881
examples: |
- 这些症状对您的日常生活有什么负面的影响吗?
- 这些症状对您的日常生活有造成什么不便吗?
- 这些症状是否对您的日常生活产生了不利影响?
- 您是否因这些症状在日常生活中遇到了问题?
- 这些症状是否对您的日常生活带来了负面影响?
- 这些症状是否对您的日常生活造成了困扰?
- 您是否因这些症状在日常生活中感到不适?
- 这些症状是否对您的日常生活带来了麻烦?
- 您是否因这些症状在日常生活中受到了限制?
- 这些症状是否对您的日常生活产生了负面的效果?
- 这些症状是否对您的日常生活造成了固定的问题?
- 您是否因这些症状在日常生活中遇到了挑战?
- 这些症状是否对您的日常生活有所损害?
- 这些症状是否对您的日常生活产生了不利的结果?
- 您是否因这些症状在日常生活中遇到了不便?
- 这些症状是否对您的日常生活带来了负面的结果?
- 这些症状是否对您的日常生活产生了障碍?
- 您是否因这些症状在日常生活中受到了制约?
- 这些症状是否对您的日常生活带来了不适?
- 这些症状是否对您的日常生活有所影响?
- 您是否因这些症状在日常生活中感到受限?
- intent: ask_wen_ri_chang_bian_hua_1717735465387307010
examples: |
- 您是否注意到日常生活中还有什么其他的变化?
- 您是否留意到日常生活中还有其他的变化?
- 您是否察觉到日常生活中还有其他的变化?
- 您是否发现日常生活中还有其他的变化?
- 您是否意识到日常生活中还有其他的变化?
- 您是否觉察到日常生活中还有其他的变化?
- 您是否注意到了日常生活中还有其他的变化?
- 您是否发觉到了日常生活中还有其他的变化?
- 您是否察觉到了日常生活中还有其他的变化?
- 您是否意识到了日常生活中还有其他的变化?
- 您是否觉察到了日常生活中还有其他的变化?
- 您是否留意到了日常生活中还有其他的变化?
- 您是否发现了日常生活中还有其他的变化?
- 您是否察觉到日常生活中还有其他的变化的存在?
- 您是否意识到日常生活中还有其他的变化的存在?
- 您是否觉察到日常生活中还有其他的变化的存在?
- 您是否注意到了日常生活中还有其他的变化的存在?
- 您是否发觉到了日常生活中还有其他的变化的存在?
- 您是否察觉到了日常生活中还有其他的变化的存在?
- 您是否意识到了日常生活中还有其他的变化的存在?
- 您是否觉察到了日常生活中还有其他的变化的存在?
- intent: ask_wen_bing_shi_1717735465420861442
examples: |
- 您最近生过病吗?什么时候?是什么病?
- 您最近是否患过疾病?是什么时候?是什么疾病?
- 您最近是否生病了?是在什么时候?是什么病?
- 您最近是否曾经生病?是在什么时候?是什么疾病?
- 您最近是否有过疾病?是在什么时候?是什么病症?
- 您最近是否有生病的经历?是在什么时候?是什么疾病?
- 您最近是否有患过病?是在什么时候?是什么疾病?
- 您最近是否有过病症?是在什么时候?是什么疾病?
- 您最近是否有生过病?是在什么时候?是什么疾病?
- 您最近是否有患病?是在什么时候?是什么疾病?
- 您最近是否有生病?是在什么时候?是什么疾病?
- 您最近是否有生过病?是在什么时候?是什么疾病?
- 您最近是否有患过疾病?是在什么时候?是什么病?
- 您最近是否有患病状况?是在什么时候?是什么疾病?
- 您最近是否有生过病症?是在什么时候?是什么疾病?
- 您最近是否有患过病症?是在什么时候?是什么疾病?
- 您最近是否有生过疾病?是在什么时候?是什么病?
- 您最近是否有患过疾病?是在什么时候?是什么病?
- 您最近是否有生过病?是在什么时候?是什么疾病?
- 您最近是否有患病?是在什么时候?是什么病?
- 您最近是否有生病?是在什么时候?是什么病?
- intent: ask_wen_shou_shang_shi_1717735465450221569
examples: |
- 您最近受过伤吗?什么时候?受过什么伤?
- 您最近是否受伤了?是在什么时候?受伤的部位是什么?
- 您最近是否有受伤的经历?是在什么时候?受伤的类型是什么?
- 您最近是否受过伤?是在什么时候?受伤的部位是什么?
- 您最近是否有受过伤害?是在什么时候?受伤的类型是什么?
- 您最近是否有过受伤的情况?是在什么时候?受伤的部位是什么?
- 您最近是否有患过伤病?是在什么时候?受伤的类型是什么?
- 您最近是否有受过伤?是在什么时候?受伤的部位是什么?
- 您最近是否有受过伤害?是在什么时候?受伤的类型是什么?
- 您最近是否有过受伤的经历?是在什么时候?受伤的部位是什么?
- 您最近是否有患过伤病?是在什么时候?受伤的类型是什么?
- 您最近是否有受伤的情况?是在什么时候?受伤的部位是什么?
- 您最近是否有受过伤害?是在什么时候?受伤的类型是什么?
- 您最近是否有过受伤?是在什么时候?受伤的部位是什么?
- 您最近是否有受过伤害?是在什么时候?受伤的类型是什么?
- 您最近是否有受伤的经历?是在什么时候?受伤的部位是什么?
- 您最近是否有患过伤病?是在什么时候?受伤的类型是什么?
- 您最近是否有受过伤?是在什么时候?受伤的部位是什么?
- 您最近是否有受过伤害?是在什么时候?受伤的类型是什么?
- 您最近是否有过受伤的情况?是在什么时候?受伤的部位是什么?
- 您最近是否有患过伤病?是在什么时候?受伤的类型是什么?
- intent: ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698
examples: |
- 最近有没有发生什么重大的生活事件导致精神压力增加?
- 最近是否发生了一些重大的生活事件,导致您的精神压力增加了?
- 最近是否有什么重大的生活事件发生,导致您的精神压力增加了?
- 您最近是否经历了一些重大的生活事件,导致您的精神压力增加了?
- 最近是否发生了一些重要的生活事件,使您的精神压力增加了?
- 您最近是否遇到了一些重要的生活事件,导致您的精神压力增加了?
- 最近是否有什么重要的生活事件发生,使您感到精神压力增加了?
- 您最近是否经历了一些重要的生活事件,导致您感到精神压力增加了?
- 最近是否发生了一些重大的生活事件,导致您的心理压力增加了?
- 您最近是否遇到了一些重大的生活事件,导致您的心理压力增加了?
- 最近是否有什么重大的生活事件发生,使您感到心理压力增加了?
- 您最近是否经历了一些重大的生活事件,导致您感到心理压力增加了?
- 最近是否发生了一些重要的生活事件,使您的心理压力增加了?
- 您最近是否遇到了一些重要的生活事件,导致您的心理压力增加了?
- 最近是否有什么重要的生活事件发生,使您感到心理压力增加了?
- 您最近是否经历了一些重要的生活事件,导致您感到心理压力增加了?
- 最近是否发生了一些重大的生活事件,导致您的情绪压力增加了?
- 您最近是否遇到了一些重大的生活事件,导致您的情绪压力增加了?
- 最近是否有什么重大的生活事件发生,使您感到情绪压力增加了?
- 您最近是否经历了一些重大的生活事件,导致您感到情绪压力增加了?
- 最近是否发生了一些重要的生活事件,使您的情绪压力增加了?
- intent: ask_wen_zi_wo_gan_jue_1717735465504747522
examples: |
- 您认为可能是什么问题?
- 您觉得可能出现了什么问题?
- 您认为可能存在着什么困难?
- 您觉得可能会有哪些难题?
- 您认为可能存在什么障碍?
- 您觉得可能会有什么挑战?
- 您认为可能出现了什么疑问?
- 您觉得可能存在着什么情况?
- 您认为可能会有哪些不确定因素?
- 您觉得可能出现了什么疑惑?
- 您认为可能存在着什么疑虑?
- 您觉得可能会有什么未知因素?
- 您认为可能出现了什么困扰?
- 您觉得可能存在着什么挫折?
- 您认为可能会有哪些瓶颈?
- 您觉得可能出现了什么纷扰?
- 您认为可能存在着什么挣扎?
- 您觉得可能会有哪些未知情况?
- 您认为可能出现了什么疑问?
- 您觉得可能存在着什么挑战?
- 您认为可能会有哪些不明确因素?
- intent: ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345
examples: |
- 在上述症状发生前你在做什么?吃东西?活动?还是别的?
- 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行活动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行活动?或者其他?
- 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他?
- 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行活动?或者其他?
- 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行活动?或者其他?
- 在出现上述症状之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他?
- 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他?
- 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行运动?或者其他?
- 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行运动?或者其他?
- 在出现上述症状之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他?
- 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行身体活动?或者其他?
- 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行身体活动?或者其他?
- 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他?
- 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他?
- intent: ask_wen_diao_tou_fa_1717735465555079170
examples: |
- 有没有掉头发
- 您是否正在脱发?
- 您是否注意到了头发脱落?
- 您是否发现头发在减少?
- 您的头发有没有减少?
- 您是否有掉发的情况?
- 您是否发现头发在稀疏?
- 您是否察觉到头发变少?
- 您的头发有没有减少的迹象?
- 您是否正在经历脱发问题?
- 您是否注意到头发在减少?
- 您是否有头发脱落的问题?
- 您是否发现头发在减小?
- 您是否有发现自己的头发变少?
- 您的头发是否出现减少的情况?
- 您是否有头发减少的症状?
- 您是否察觉到头发在减少?
- 您的头发是否有减少的迹象?
- 您是否正在经历头发减少?
- 您是否有头发掉落的情况?
- 您是否发现头发在减少?
- intent: ask_wen_fu_xie_1717735465580244993
examples: |
- 有没有腹泻
- 您是否有腹泻的情况?
- 您是否出现了腹泻症状?
- 您有没有腹泻的问题?
- 您是否经历了腹泻?
- 您的肚子有没有腹泻?
- 您是否出现了腹泻症状?
- 您是否有腹泻的迹象?
- 您是否正在腹泻?
- 您是否有肚子病了?
- 您是否出现了肚子不适的情况?
- 您的肚子有没有出现腹泻?
- 您是否经历了肚子疼痛和腹泻?
- 您是否有肚子病了?
- 您是否出现了肚子不适的情况?
- 您的肚子有没有腹泻?
- 您是否正在腹泻?
- 您是否有腹泻的迹象?
- 您是否经历了腹泻?
- 您是否出现了腹泻症状?
- 您有没有腹泻的问题?
- intent: ask_wen_ti_li_1717735465605410818
examples: |
- 体力情况怎么样
- 你的体力如何?
- 你的身体状况怎么样?
- 你感觉身体好吗?
- 你有没有体力问题?
- 你的健康状态如何?
- 你的体能情况怎样?
- 你感觉体力充沛吗?
- 你的身体感觉怎么样?
- 你是否感到精力充沛?
- 你的体力水平如何?
- 你觉得身体健康吗?
- 你感觉自己有没有足够的体力?
- 你的体能状况如何?
- 你觉得自己有没有足够的精力?
- 你的身体感觉良好吗?
- 你的体力状态如何?
- 你感觉体力是否足够?
- 你的身体情况怎么样?
- 你有没有注意到体力的变化?
- 你的体能是否正常?
- intent: ask_wen_fu_yao_shi_1717735465630576641
examples: |
- 有没有吃过通便药、感冒药、阿司匹林等药
- 你有没有尝试过通便药、感冒药、阿司匹林等药物?
- 请问您是否曾经使用过通便药、感冒药、阿司匹林等类型的药品?
- 请问您是否有服用过通便药、感冒药、阿司匹林等药物的经历?
- 您是否有使用过通便药、感冒药、阿司匹林等这些药物的经验?
- 请问您是否尝试过通便药、感冒药、阿司匹林等这些药品?
- 您是否有服用过通便药、感冒药、阿司匹林等此类药物?
- 请问您是否曾尝试过通便药、感冒药、阿司匹林等这些药物?
- 您是否有使用过通便药、感冒药、阿司匹林等此类药品的经验?
- 请问您是否有使用过通便药、感冒药、阿司匹林等药物的记录?
- 您是否曾经尝试过通便药、感冒药、阿司匹林等此类药品?
- 请问您是否有服用过通便药、感冒药、阿司匹林等这些药物的经历?
- 您是否有使用过通便药、感冒药、阿司匹林等药品?
- 请问您是否尝试过通便药、感冒药、阿司匹林等这些药物?
- 您是否有服用过通便药、感冒药、阿司匹林等此类药物?
- 请问您是否曾尝试过通便药、感冒药、阿司匹林等这些药物?
- 您是否有使用过通便药、感冒药、阿司匹林等此类药品的经验?
- 请问您是否有使用过通便药、感冒药、阿司匹林等药物的记录?
- 您是否曾经尝试过通便药、感冒药、阿司匹林等此类药品?
- 请问您是否有服用过通便药、感冒药、阿司匹林等这些药物的经历?
- 您是否有使用过通便药、感冒药、阿司匹林等药品的经验?
- intent: ask_wen_yin_jiu_shi_1717735465655742466
examples: |
- 有没有喝酒
- 请问您是否有饮酒的习惯?
- 您是否曾经尝试过饮酒?
- 请问您是否有喝过酒的经历?
- 您是否有饮酒的经验?
- 请问您是否尝试过喝酒?
- 您是否有喝过酒的习惯?
- 请问您是否曾尝试过喝酒?
- 您是否有饮酒的记录?
- 请问您是否有喝过酒的习惯?
- 您是否曾经尝试过喝酒?
- 请问您是否有饮酒的经历?
- 您是否有喝过酒的经验?
- 请问您是否尝试过喝酒这件事?
- 您是否有喝过酒的习惯?
- 请问您是否曾尝试过喝酒?
- 您是否有饮酒的记录?
- 请问您是否有喝过酒的习惯?
- 您是否曾经尝试过喝酒?
- 请问您是否有饮酒的经历?
- 您是否有喝过酒的经验?
- intent: ask_wen_chou_yan_shi_1717735465680908289
examples: |
- 有没有抽烟
- 请问您是否有吸烟的习惯?
- 您是否曾经尝试过抽烟?
- 请问您是否有吸过烟的经历?
- 您是否有抽烟的经验?
- 请问您是否尝试过吸烟?
- 您是否有吸烟的习惯?
- 请问您是否曾尝试过吸烟?
- 您是否有抽烟的记录?
- 请问您是否有吸过烟的习惯?
- 您是否曾经尝试过吸烟?
- 请问您是否有抽烟的经历?
- 您是否有抽过烟的经验?
- 请问您是否尝试过抽烟这件事?
- 您是否有吸烟的习惯?
- 请问您是否曾尝试过抽烟?
- 您是否有吸烟的记录?
- 请问您是否有抽过烟的习惯?
- 您是否曾经尝试过吸烟?
- 请问您是否有吸烟的经历?
- 您是否有抽烟的经验?
- intent: ask_wen_guo_min_shi_1717735465710268417
examples: |
- 有没有过敏
- 请问您是否有过敏反应?
- 您是否有过过敏的经历?
- 请问您是否对某些物质过敏?
- 您是否曾经出现过过敏症状?
- 请问您是否对任何东西有过敏反应?
- 您是否有过过敏的记录?
- 请问您是否对某种食物或者物质有过敏?
- 您是否曾经遇到过过敏的情况?
- 请问您是否对某种药物有过敏反应?
- 您是否有过过敏的经验?
- 请问您是否有任何过敏症状?
- 您是否曾经出现过过敏的情况?
- 请问您是否对花粉或者尘螨有过敏?
- 您是否有过过敏的历史?
- 请问您是否对某种环境因素过敏?
- 您是否曾经遭遇过过敏反应?
- 请问您是否对特定气候条件有过敏反应?
- 您是否有过过敏的症状?
- 请问您是否对某种动物有过敏?
- 您是否曾经出现过过敏的症状?
- intent: ask_wen_fu_yao_shi_1717735465735434241
examples: |
- 还吃过什么药
- 请问您还使用过其他药物吗?
- 您还服用了哪些药物?
- 请问您还有没有使用其他药品?
- 您还尝试过其他药物吗?
- 请问您还有没有尝试其他药物?
- 您还服用了别的药吗?
- 请问您还吃过其他的药物吗?
- 您还使用了其他类型的药品吗?
- 请问您还有没有使用过其他的药物?
- 您还尝试过其他类型的药物吗?
- 请问您还吃过别的药吗?
- 您还使用了其他药品吗?
- 请问您还有没有尝试其他药品?
- 您还服用了其他的药物吗?
- 请问您还有没有使用过别的药物?
- 您还尝试过其他的药品吗?
- 请问您还有没有吃过其他的药?
- 您还使用了其他类型的药吗?
- 请问您还有没有尝试别的药物?
- 您还服用了其他的药品吗?
- intent: tool_blood_pressure
examples: |
- 让我们来测量一下血压。
- 让我们进行一次血压测量。
- 让我们来检查一下血压。
- 让我们进行一次血压检查。
- 让我们来测试一下血压。
- 让我们进行一次血压测试。
- 让我们来观察一下血压。
- 让我们进行一次血压观察。
- 让我们来监测一下血压。
- 让我们进行一次血压监测。
- 让我们来评估一下血压。
- 让我们进行一次血压评估。
- 让我们来测算一下血压。
- 让我们进行一次血压测算。
- 让我们来记录一下血压。
- 让我们进行一次血压记录。
- 让我们来调查一下血压。
- 让我们进行一次血压调查。
- 让我们来测验一下血压。
- 让我们进行一次血压测验。
- intent: tool_thermometer
examples: |
- 进行一次体温测量。
- 测量一下体温。
- 检测一下体温。
- 进行一次体温检测。
- 测测体温。
- 进行一次体温观察。
- 观察一下体温。
- 进行一次体温监测。
- 监测一下体温。
- 评估一下体温。
- 进行一次体温评估。
- 测测看体温。
- 进行一次体温测试。
- 测试一下体温。
- 记录一下体温。
- 进行一次体温记录。
- 检查一下体温。
- 进行一次体温调查。
- 调查一下体温。
- 量一下体温。
- intent: tool_height
examples: |
- 进行一次身高测量。
- 测量一下身高。
- 检测一下身高。
- 进行一次身高检测。
- 测测身高。
- 进行一次身高观察。
- 观察一下身高。
- 进行一次身高监测。
- 监测一下身高。
- 评估一下身高。
- 进行一次身高评估。
- 测测看身高。
- 进行一次身高测试。
- 测试一下身高。
- 记录一下身高。
- 进行一次身高记录。
- 检查一下身高。
- 进行一次身高调查。
- 调查一下身高。
- 量一下身高。
- intent: tool_weight
examples: |
- 进行一次体重测量。
- 测量一下体重。
- 检测一下体重。
- 进行一次体重检测。
- 称一下体重。
- 进行一次体重观察。
- 观察一下体重。
- 进行一次体重监测。
- 监测一下体重。
- 评估一下体重。
- 进行一次体重评估。
- 测测看体重。
- 进行一次体重测试。
- 测试一下体重。
- 记录一下体重。
- 进行一次体重记录。
- 检查一下体重。
- 进行一次体重调查。
- 量一下体重。
- 获取一下体重数据。
- intent: tool_heart_rate
examples: |
- 进行一次心率测量。
- 测量一下心率。
- 检测一下心率。
- 进行一次心率检测。
- 测测心率。
- 进行一次心率观察。
- 观察一下心率。
- 进行一次心率监测。
- 监测一下心率。
- 评估一下心率。
- 进行一次心率评估。
- 测测看心率。
- 进行一次心率测试。
- 测试一下心率。
- 记录一下心率。
- 进行一次心率记录。
- 检查一下心率。
- 进行一次心率调查。
- 调查一下心率。
- 量一下心率。
- intent: ancillary_blood_h-z
examples: |
- 需要进行一次血液检查。
- 需要进行血液检验。
- 需要完成一次血液检查。
- 需要进行一次血液分析。
- 需要进行一次血液化验。
- 需要做一个血液检查。
- 需要进行一次血液检测。
- 需要进行血液测试。
- 需要进行血液筛查。
- 需要进行一次血液分析检查。
- 需要做一个血液化验。
- 需要进行一次全血细胞计数。
- 需要进行一次血液常规检查。
- 需要进行一次血液病理学检查。
- 需要进行一次血清学检查。
- 需要做一个血液生化指标检查。
- 需要进行一次凝血功能检查。
- 需要进行一次血常规检查。
- 需要进行一次血液糖化血红蛋白检查。
- 需要进行一次血液电解质检查。
- intent: ancillary_eye_ct
examples: |
- 需要进行一次眼眶CT检查。
- 需要进行一次眼眶CT扫描。
- 需要做一次眼眶CT影像检查。
- 需要进行一次眼眶计算机断层扫描。
- 需要进行一次眼眶CT成像检查。
- 需要进行一次眼眶CT图像检查。
- 需要进行一次眼眶CT影像扫描。
- 需要进行一次眼眶CT成像扫描。
- 需要进行一次眼眶计算机断层影像检查。
- 需要进行一次眼眶计算机断层图像检查。
- 需要进行一次眼眶CT切片扫描。
- 需要进行一次眼眶计算机断层成像检查。
- 需要进行一次眼眶计算机断层影像扫描。
- 需要进行一次眼眶CT图像扫描。
- 需要进行一次眼眶计算机断层影响成像检查。
- 需要进行一次眼眶CT断层成像扫描。
- 需要进行一次眼眶计算机断层图像扫描。
- 需要进行一次眼眶CT扫描检查。
- 需要进行一次眼眶计算机断层影像图检查。
- 需要进行一次眼眶计算机断层成像图像扫描。
- intent: ancillary_xin_dian_tu
examples: |
- 需要进行一次心电图检查。
- 需要进行心电图测试。
- 需要做一次心脏电图检查。
- 需要进行一次心脏电图监测。
- 需要进行一次心电图记录。
- 需要进行一次心电图测量。
- 需要进行心电图扫描。
- 需要进行一次心脏电图测验。
- 需要进行一次心律监测。
- 需要完成一次心电图录制。
- 需要进行一次心电图示波监测。
- 需要做一个心电图检查。
- 需要进行一次心脏电图记录。
- 需要进行一次心电活动监测。
- 需要进行一次心脏电图测量。
- 需要进行心脏电图扫描。
- 需要进行一次心脏电图图像检查。
- 需要进行一次心电图示波图监测。
- 需要进行一次心律失常监测。
- 需要进行一次心脏电图示波记录。
- intent: ancillary_blood_a-g
examples: |
- 需要进行一次血液检查。
- 需要进行血液检验。
- 需要完成一次血液检查。
- 需要进行一次血液分析。
- 需要进行一次血液化验。
- 需要做一个血液检查。
- 需要进行一次血液检测。
- 需要进行血液测试。
- 需要进行血液筛查。
- 需要进行一次血液分析检查。
- 需要做一个血液化验。
- 需要进行一次全血细胞计数。
- 需要进行一次血液常规检查。
- 需要进行一次血液病理学检查。
- 需要进行一次血清学检查。
- 需要做一个血液生化指标检查。
- 需要进行一次凝血功能检查。
- 需要进行一次血常规检查。
- 需要进行一次血液糖化血红蛋白检查。
- 需要进行一次血液电解质检查。
- intent: ancillary_xi_dian_lv
examples: |
- 需要进行吸碘率检查。
- 需要进行碘摄取率检查。
- 需要进行碘吸收率检查。
- 需要进行碘摄入率检查。
- 需要完成吸碘率检查。
- 需要进行碘吸收能力检查。
- 需要进行碘摄取能力检查。
- 需要进行甲状腺碘摄取率检查。
- 需要进行碘吸收效能检查。
- 需要进行甲状腺碘吸收率检查。
- 需要进行吸碘率测量。
- 需要进行碘吸收效率检查。
- 需要进行甲状腺碘吸附率检查。
- 需要进行碘吸附能力检查。
- 需要进行甲状腺碘吸取率检查。
- 需要进行碘吸取能力检查。
- 需要进行碘的吸收率检查。
- 需要进行碘吸引率检查。
- 需要进行碘摄取能力检查。
- 需要进行碘的吸附率检查。
- intent: ancillary_jia_zhuang_xian_chao_sheng
examples: |
- 现在需要进行一次甲状腺超声检查。
- 现在需要做一次甲状腺超声检查。
- 现在需要进行甲状腺超声检查。
- 现在需要进行一次甲状腺超声检查。
- 现在需要完成一次甲状腺超声检查。
- 现在需要进行一次甲状腺超声波检查。
- 现在需要进行甲状腺超声波检查。
- 现在需要做一次甲状腺超声波检查。
- 现在需要进行一次甲状腺超声像检查。
- 现在需要进行甲状腺超声像检查。
- 现在需要做一次甲状腺超声像检查。
- 现在需要进行一次甲状腺超声影像检查。
- 现在需要进行甲状腺超声影像检查。
- 现在需要做一次甲状腺超声影像检查。
- 现在需要进行一次甲状腺超声图检查。
- 现在需要进行甲状腺超声图检查。
- 现在需要做一次甲状腺超声图检查。
- 现在需要进行一次甲状腺超声诊断。
- 现在需要进行甲状腺超声诊断。
- 现在需要做一次甲状腺超声诊断。

@ -1,156 +0,0 @@
version: "3.1"
rules:
- rule: 问重大生活事件
steps:
- intent: ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698
- action: utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698
- rule: 问出现间隔
steps:
- intent: ask_wen_chu_xian_jian_ge_1717735465047568386
- action: utter_ask_wen_chu_xian_jian_ge_1717735465047568386
- rule: 问发作频率
steps:
- intent: ask_wen_fa_zuo_pin_lv_1717735465211146241
- action: utter_ask_wen_fa_zuo_pin_lv_1717735465211146241
- rule: 问对日常影响
steps:
- intent: ask_wen_dui_ri_chang_ying_xiang_1717735465357946881
- action: utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881
- rule: 问服药史
steps:
- intent: ask_wen_fu_yao_shi_1717735465630576641
- action: utter_ask_wen_fu_yao_shi_1717735465630576641
- rule: 问抽烟史
steps:
- intent: ask_wen_chou_yan_shi_1717735465680908289
- action: utter_ask_wen_chou_yan_shi_1717735465680908289
- rule: 问日常变化
steps:
- intent: ask_wen_ri_chang_bian_hua_1717735465387307010
- action: utter_ask_wen_ri_chang_bian_hua_1717735465387307010
- rule: 问病史
steps:
- intent: ask_wen_bing_shi_1717735465420861442
- action: utter_ask_wen_bing_shi_1717735465420861442
- rule: 问发病之前的动作
steps:
- intent: ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345
- action: utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345
- rule: 问症状描述
steps:
- intent: ask_wen_zheng_zhuang_miao_shu_1717735465076928513
- action: utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513
- rule: 问家族史
steps:
- intent: ask_wen_jia_zu_shi_1717735465328586753
- action: utter_ask_wen_jia_zu_shi_1717735465328586753
- rule: 问出现多久
steps:
- intent: ask_wen_chu_xian_duo_jiu_1717735464976265217
- action: utter_ask_wen_chu_xian_duo_jiu_1717735464976265217
- rule: 问减轻或加重情况
steps:
- intent: ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954
- action: utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954
- rule: 问服药史
steps:
- intent: ask_wen_fu_yao_shi_1717735465735434241
- action: utter_ask_wen_fu_yao_shi_1717735465735434241
- rule: 问过敏史
steps:
- intent: ask_wen_guo_min_shi_1717735465710268417
- action: utter_ask_wen_guo_min_shi_1717735465710268417
- rule: 问就诊史
steps:
- intent: ask_wen_jiu_zhen_shi_1717735465299226626
- action: utter_ask_wen_jiu_zhen_shi_1717735465299226626
- rule: 问其他症状
steps:
- intent: ask_wen_qi_ta_zheng_zhuang_1717735465173397505
- action: utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505
- rule: 问不舒服
steps:
- intent: ask_wen_bu_shu_fu_1717735464913350658
- action: utter_ask_wen_bu_shu_fu_1717735464913350658
- rule: 问类似情况
steps:
- intent: ask_wen_lei_si_qing_kuang_1717735465240506370
- action: utter_ask_wen_lei_si_qing_kuang_1717735465240506370
- rule: 问体力
steps:
- intent: ask_wen_ti_li_1717735465605410818
- action: utter_ask_wen_ti_li_1717735465605410818
- rule: 问症状改变情况
steps:
- intent: ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497
- action: utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497
- rule: 问腹泻
steps:
- intent: ask_wen_fu_xie_1717735465580244993
- action: utter_ask_wen_fu_xie_1717735465580244993
- rule: 问自我感觉
steps:
- intent: ask_wen_zi_wo_gan_jue_1717735465504747522
- action: utter_ask_wen_zi_wo_gan_jue_1717735465504747522
- rule: 问受伤史
steps:
- intent: ask_wen_shou_shang_shi_1717735465450221569
- action: utter_ask_wen_shou_shang_shi_1717735465450221569
- rule: 问症状严重程度
steps:
- intent: ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770
- action: utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770
- rule: 问掉头发
steps:
- intent: ask_wen_diao_tou_fa_1717735465555079170
- action: utter_ask_wen_diao_tou_fa_1717735465555079170
- rule: 问饮酒史
steps:
- intent: ask_wen_yin_jiu_shi_1717735465655742466
- action: utter_ask_wen_yin_jiu_shi_1717735465655742466
- rule: 身高
steps:
- intent: tool_height
- action: utter_tool_height
- rule: 水银血压计
steps:
- intent: tool_blood_pressure
- action: utter_tool_blood_pressure
- rule: 心率
steps:
- intent: tool_heart_rate
- action: utter_tool_heart_rate
- rule: 体温计
steps:
- intent: tool_thermometer
- action: utter_tool_thermometer
- rule: 体重
steps:
- intent: tool_weight
- action: utter_tool_weight
- rule: 眼眶CT
steps:
- intent: ancillary_eye_ct
- action: utter_ancillary_eye_ct
- rule: Blood A-G
steps:
- intent: ancillary_blood_a-g
- action: utter_ancillary_blood_a-g
- rule: 甲状腺超声
steps:
- intent: ancillary_jia_zhuang_xian_chao_sheng
- action: utter_ancillary_jia_zhuang_xian_chao_sheng
- rule: 吸碘率
steps:
- intent: ancillary_xi_dian_lv
- action: utter_ancillary_xi_dian_lv
- rule: Blood H-Z
steps:
- intent: ancillary_blood_h-z
- action: utter_ancillary_blood_h-z
- rule: 心电图
steps:
- intent: ancillary_xin_dian_tu
- action: utter_ancillary_xin_dian_tu

@ -3,6 +3,7 @@ package com.supervision.config;
import cn.hutool.json.JSONUtil;
import com.supervision.domain.GlobalResult;
import com.supervision.exception.BusinessException;
import com.supervision.exception.HumanException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpStatus;
@ -70,6 +71,18 @@ public class ResponseConfig implements ResponseBodyAdvice<Object> {
return GlobalResult.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), exception.getMessage(), "业务异常");
}
/**
*
*
* @param exception
* @return
*/
@ExceptionHandler(HumanException.class)
public GlobalResult<?> humanExceptionResponse(HumanException exception) {
log.error(exception.getMessage(), exception);
return GlobalResult.error(exception.getCode(), exception.getMessage(), "数字人异常");
}
/**
*
@ -99,4 +112,5 @@ public class ResponseConfig implements ResponseBodyAdvice<Object> {
return GlobalResult.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), "未知错误", exception.getMessage());
}
}

@ -0,0 +1,59 @@
/*
* : CustomException
* :
* : <>
* : RedName
* : 2022/8/5
* : <>
* : <>
* : <>
*/
package com.supervision.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
/**
* <>
*
*
* @author ljt
* @version [, 2022/8/5]
* @see [/]
* @since [/]
*/
@Slf4j
public class HumanException extends RuntimeException {
/**
* ,,
*/
private static final Integer HUMAN_ERROR = 6001;
/**
*
*/
private final Integer code;
/**
*
*/
private final String message;
private HumanException(Integer code, String message) {
this.code = code;
this.message = message;
}
public static HumanException humanError(String message) {
return new HumanException(HUMAN_ERROR, message);
}
@Override
public String getMessage() {
return message;
}
public Integer getCode() {
return code;
}
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.Lock;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description lock(,redis,使)Mapper
* @createDate 2023-11-01 13:11:34
* @Entity com.supervision.model.Lock
*/
public interface LockMapper extends BaseMapper<Lock> {
}

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -18,7 +19,7 @@ import lombok.Data;
@TableName(value ="vp_diagnosis_qa_record")
@Data
@ApiModel
public class DiagnosisQaRecord implements Serializable {
public class DiagnosisQaRecord extends Model<DiagnosisQaRecord> implements Serializable {
/**
*
*/
@ -31,6 +32,9 @@ public class DiagnosisQaRecord implements Serializable {
@ApiModelProperty("诊断进程ID")
private String processId;
@ApiModelProperty("问答类型:default,disease")
private String questionAnswerType;
/**
* ID
*/

@ -0,0 +1,45 @@
package com.supervision.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
* ,redis,使
* @TableName lock
*/
@TableName(value ="lock")
@Data
public class Lock implements Serializable {
/**
*
*/
@TableId
private String id;
/**
*
*/
private String lockCode;
/**
*
*/
private Long timestamp;
/**
*
*/
private Long expireMs;
/**
* 线ID,
*/
private String threadId;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,13 @@
package com.supervision.service;
import com.supervision.model.Lock;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description lock(,redis,使)Service
* @createDate 2023-11-01 13:11:34
*/
public interface LockService extends IService<Lock> {
}

@ -0,0 +1,22 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.Lock;
import com.supervision.service.LockService;
import com.supervision.mapper.LockMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description lock(,redis,使)Service
* @createDate 2023-11-01 13:11:34
*/
@Service
public class LockServiceImpl extends ServiceImpl<LockMapper, Lock>
implements LockService{
}

@ -5,21 +5,24 @@
<mapper namespace="com.supervision.mapper.DiagnosisQaRecordMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.DiagnosisQaRecord">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="processId" column="process_id" jdbcType="VARCHAR"/>
<result property="questionAnswerId" column="question_answer_id" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="VARCHAR"/>
<result property="questionWavId" column="question_wav_id" jdbcType="VARCHAR"/>
<result property="answer" column="answer" jdbcType="VARCHAR"/>
<result property="answerWavId" column="answer_wav_id" jdbcType="VARCHAR"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="processId" column="process_id" jdbcType="VARCHAR"/>
<result property="questionAnswerType" column="question_answer_type" jdbcType="VARCHAR"/>
<result property="questionAnswerId" column="question_answer_id" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="VARCHAR"/>
<result property="questionWavId" column="question_wav_id" jdbcType="VARCHAR"/>
<result property="answer" column="answer" jdbcType="VARCHAR"/>
<result property="answerWavId" column="answer_wav_id" jdbcType="VARCHAR"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,process_id,question,question_answer_id
id
,question_answer_type
,process_id,question,question_answer_id
question_wav_id,answer,answer_wav_id,
create_user_id,create_time,update_user_id,
update_time

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.mapper.LockMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.Lock">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="lockCode" column="lock_code" jdbcType="VARCHAR"/>
<result property="timestamp" column="timestamp" jdbcType="INTEGER"/>
<result property="expireMs" column="expire_ms" jdbcType="INTEGER"/>
<result property="threadId" column="thread_id" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,lock_code,timestamp,
expire_ms,thread_id
</sql>
</mapper>

@ -6,6 +6,10 @@ import com.supervision.rasa.service.RasaFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@ -1,6 +1,6 @@
package com.supervision.rasa.controller;
import com.supervision.rasa.pojo.vo.RasaTalkVo;
import com.supervision.vo.rasa.RasaTalkVo;
import com.supervision.rasa.service.RasaTalkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@ -1,6 +1,6 @@
package com.supervision.rasa.service;
import com.supervision.rasa.pojo.vo.RasaTalkVo;
import com.supervision.vo.rasa.RasaTalkVo;
import java.util.List;

@ -1,6 +1,5 @@
package com.supervision.rasa.service.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
@ -8,7 +7,7 @@ import com.supervision.exception.BusinessException;
import com.supervision.model.RasaModelInfo;
import com.supervision.rasa.pojo.dto.RasaReqDTO;
import com.supervision.rasa.pojo.dto.RasaResDTO;
import com.supervision.rasa.pojo.vo.RasaTalkVo;
import com.supervision.vo.rasa.RasaTalkVo;
import com.supervision.rasa.service.RasaTalkService;
import com.supervision.service.RasaModeService;
import lombok.RequiredArgsConstructor;
@ -17,7 +16,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service
@Slf4j

@ -1,7 +1,7 @@
server:
port: 8890
servlet:
context-path: /
context-path: /virtual-patient-rasa
undertow:
# HTTP post内容的最大大小。当值为-1时默认值为大小是无限的
max-http-post-size: -1

@ -57,7 +57,6 @@
<scope>provided</scope>
</dependency>
</dependencies>
<build>

@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
@EnableWebSocket
@SpringBootApplication
@MapperScan(basePackages = {"com.supervision.**.mapper"})
public class VirtualPatientApplication {

@ -1,17 +1,15 @@
package com.supervision.controller;
import com.supervision.pojo.vo.TalkResultResVO;
import com.supervision.service.AskService;
import com.supervision.websocket.cache.WebSocketUserCache;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import java.io.IOException;
import java.util.List;
@Api(tags = "问诊")
@RestController
@ -22,17 +20,14 @@ public class AskController {
private AskService askService;
@ApiOperation("发送消息到页面")
@GetMapping("/sendMessage")
public void sendMessage(String message, String sessionId) throws IOException {
WebSocketSession session = WebSocketUserCache.getSession(sessionId);
session.sendMessage(new TextMessage(message));
}
@ApiOperation("接收页面的语音消息(这个接口使用京东数字人接口来做)")
@PostMapping("/receiveVoiceFile")
public String receiveVoiceFile(@RequestParam("file") MultipartFile file) throws IOException {
return askService.receiveVoiceFile(file);
public TalkResultResVO receiveVoiceFile(@RequestParam("file") MultipartFile file,
@ApiParam("流程ID") String processId,
@ApiParam("数字人房间的数字人ID") String roomKey,
@ApiParam("数字人的TOKEN") String roomToken) throws IOException {
return askService.receiveVoiceFile(file, processId, roomKey, roomToken);
}
@ApiOperation("回复语音及文字消息")
@ -41,12 +36,6 @@ public class AskController {
return askService.replyVoice();
}
@ApiOperation("进行对话")
@GetMapping("conversation")
public List<String> conversation(String question, String sessionId) {
return askService.conversation(question, sessionId);
}
@ApiOperation("查询对话历史")
public void queryAskHistory(String processId) {

@ -65,7 +65,7 @@ public class TestController {
* @param roomId ID
*/
@GetMapping("shuZiRenSend")
public void shuZiRenSend(String text, String roomId) {
public String shuZiRenSend(String text, String roomId) {
HashMap<String, Object> param = new HashMap<>();
long timeStamp = System.currentTimeMillis();
@ -79,8 +79,7 @@ public class TestController {
(String) param.get("text"),
(String) param.get("actionId"),
(String) param.get("roomId")));
String s = HttpUtil.get("https://digital-human.jd.com/text_driven", param);
System.out.println(s);
return HttpUtil.get("https://digital-human.jd.com/text_driven", param);
}
private static String getSign(String timeStamp, String nonce, String text, String actionId, String roomId) {

@ -0,0 +1,18 @@
package com.supervision.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TalkResultResVO {
@ApiModelProperty("若有动作,这是需要执行的动作内容")
private ActionDTO action;
/**
* 使,action,1,2
*/
@ApiModelProperty("后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作")
private Integer type;
}

@ -1,20 +1,15 @@
package com.supervision.service;
import com.supervision.websocket.dto.SocketMessageDTO;
import com.supervision.pojo.vo.TalkResultResVO;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
public interface AskService {
void handlerMessageBySocket(SocketMessageDTO socketMessageDTO) throws IOException;
String receiveVoiceFile(MultipartFile file) throws IOException;
TalkResultResVO receiveVoiceFile(MultipartFile file, String processId, String roomKey, String roomToken) throws IOException;
String replyVoice();
List<String> conversation(String question, String sessionId);
}

@ -1,104 +1,103 @@
package com.supervision.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.exception.BusinessException;
import com.supervision.util.AsrUtil;
import com.supervision.util.TtsUtil;
import com.supervision.util.RasaUtil;
import com.supervision.model.DiagnosisQaRecord;
import com.supervision.model.Process;
import com.supervision.pojo.vo.TalkResultResVO;
import com.supervision.service.AskDefaultQuestionAnswerService;
import com.supervision.service.AskDiseaseQuestionAnswerService;
import com.supervision.service.ProcessService;
import com.supervision.util.*;
import com.supervision.service.AskService;
import com.supervision.util.UserUtil;
import com.supervision.websocket.cache.WebSocketUserCache;
import com.supervision.websocket.dto.ActionDTO;
import com.supervision.websocket.dto.SocketMessageDTO;
import com.supervision.pojo.vo.ActionDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.Random;
@Slf4j
@Service
@RequiredArgsConstructor
public class AskServiceImpl implements AskService {
private final ProcessService processService;
@Override
public void handlerMessageBySocket(SocketMessageDTO socketMessageDTO) throws IOException {
// 首先获取消息的类型
String text;
if (0 == socketMessageDTO.getMessageType()) {
// 如果是语音消息
// 调用百度接口,语音转文字
text = AsrUtil.asrTransformByBytes(socketMessageDTO.getVoiceMessage());
} else {
text = socketMessageDTO.getTextMessage();
}
if (StrUtil.isBlank(text)) {
throw new BusinessException("语音消息不能为空");
}
// 进行rasa对话
List<String> rasaResultList = RasaUtil.talkRasa(text, socketMessageDTO.getSocketId());
log.info("问题:{},rasa回复:{}", text, JSONUtil.toJsonStr(rasaResultList));
WebSocketSession session = WebSocketUserCache.getSession(socketMessageDTO.getSocketId());
for (String rasaResult : rasaResultList) {
if (StrUtil.isNotBlank(rasaResult)) {
// 这里校验,rasa回复的结果是不是action
// 这里设置的模板,对于action的动作全部是用---进行标记,详情看生成rasa的yml的代码:RasaServiceImpl.generateDomain
// ---ancillary---xxx
// ---tool---xxx
if (rasaResult.startsWith("---")) {
// ["","ancillary","xxx"]
List<String> actionList = StrUtil.split(rasaResult, "---");
if (actionList.size() > 2) {
ActionDTO actionDTO = new ActionDTO();
actionDTO.setActionType(actionList.get(1));
actionDTO.setActionId(actionList.get(2));
// 在这里给socket回复,设置为动作
SocketMessageDTO res = new SocketMessageDTO();
res.setSocketId(socketMessageDTO.getSocketId());
res.setUserId(UserUtil.getUser().getId());
res.setAction(actionDTO);
res.setType(2);
session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res)));
return;
}
} else {
// 走到这里,说明是文字,这个时候文字转语音
String replyVoiceResVO = TtsUtil.ttsTransform(rasaResult);
// 在这里给socket回复
SocketMessageDTO res = new SocketMessageDTO();
res.setSocketId(socketMessageDTO.getSocketId());
res.setUserId(UserUtil.getUser().getId());
res.setTextMessage(rasaResult);
res.setVoiceMessage(replyVoiceResVO);
res.setType(1);
session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res)));
return;
}
}
}
// 兜底,如果走到了这里,就直接返回未识别
SocketMessageDTO res = new SocketMessageDTO();
res.setSocketId(socketMessageDTO.getSocketId());
res.setUserId(UserUtil.getUser().getId());
res.setTextMessage("医生,我没有听懂您说的什么意思");
res.setType(1);
session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res)));
log.info("兜底话术,需要检查上面是不是出什么问题了");
}
private final AskDiseaseQuestionAnswerService askDiseaseQuestionAnswerService;
private final AskDefaultQuestionAnswerService askDefaultQuestionAnswerService;
@Override
public String receiveVoiceFile(MultipartFile file) throws IOException {
@Transactional(rollbackFor = Exception.class)
public TalkResultResVO receiveVoiceFile(MultipartFile file, String processId, String roomKey, String roomToken) throws IOException {
// 根据processId找到对应的病人
Process process = Optional.ofNullable(processService.getById(processId)).orElseThrow(() -> new BusinessException("未找到诊疗进程"));
// 获取音频对应的文字
String askQuestion = AsrUtil.asrTransformByBytes(file.getBytes());
// 调用rasa获取文字内容
String rasaResult = RasaUtil.talkRasa(askQuestion, UserUtil.getUser().getId(), process.getPatientId());
TalkResultResVO talkResultResVO = new TalkResultResVO();
// 这里校验,rasa回复的结果是不是action
// 这里设置的模板,对于action的动作全部是用ancillary_ | tool_进行标记,详情看生成rasa的yml的代码:RasaServiceImpl.generateDomain
// ancillary_ | tool_
if (rasaResult.startsWith("ancillary_") || rasaResult.startsWith("tool_")) {
List<String> actionList = StrUtil.split(rasaResult, '_');
if (actionList.size() > 1) {
ActionDTO actionDTO = new ActionDTO();
actionDTO.setActionType(actionList.get(0));
actionDTO.setActionId(actionList.get(1));
// 在这里给socket回复,设置为动作
talkResultResVO.setAction(actionDTO);
talkResultResVO.setType(2);
return talkResultResVO;
}
} else {
// 语音消息,这时调用京东的接口进行播放操作
// 这里调用京东数字人接口首先根据token获取房间号
String roomId = HumanUtil.queryRoomId(roomKey, roomToken);
// 区分
List<String> answerIdList = StrUtil.split(rasaResult, '_');
String qaId = null;
String qaType = "miss";
String answer = "您好,我没有听懂您说什么";
if (answerIdList.size() > 1) {
if (rasaResult.startsWith("default_")) {
qaType = "default";
List<String> answerList = Optional.ofNullable(askDefaultQuestionAnswerService.getById(answerIdList.get(1)).getAnswer())
.orElse(CollUtil.newArrayList("您好,我没有听懂您说什么"));
answer = answerList.get(new Random().nextInt(answerList.size()));
qaId = answerIdList.get(1);
throw new BusinessException("暂未实现");
} else if (rasaResult.startsWith("disease_")) {
qaType = "disease";
List<String> answerList = Optional.ofNullable(askDiseaseQuestionAnswerService.getById(answerIdList.get(1)).getAnswer())
.orElse(CollUtil.newArrayList("您好,我没有听懂您说什么"));
answer = answerList.get(new Random().nextInt(answerList.size()));
qaId = answerIdList.get(1);
}
}
// 然后这里进行播放
// 这里应该从对话中取结果
HumanUtil.textDriven(rasaResult, roomId);
// 保存记录
DiagnosisQaRecord record = new DiagnosisQaRecord();
record.setProcessId(processId);
record.setQuestionAnswerType(qaType);
record.setQuestionAnswerId(qaId);
record.setQuestion(askQuestion);
record.setAnswer(answer);
record.setCreateUserId(UserUtil.getUser().getId());
record.insert();
}
talkResultResVO.setType(1);
return talkResultResVO;
}
@ -109,8 +108,4 @@ public class AskServiceImpl implements AskService {
}
@Override
public List<String> conversation(String question, String sessionId) {
return RasaUtil.talkRasa(question, sessionId);
}
}

@ -93,7 +93,7 @@ public class RasaServiceImpl implements RasaService {
nlu.setExamples(defaultQA.getQuestion());
nluList.add(nlu);
// 添加到map中,key为意图编码,value为意图ID
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(defaultQA.getQuestion(), defaultQA.getAnswer(), defaultQA.getDescription()));
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(defaultQA.getQuestion(), CollUtil.newArrayList("default_" + defaultQA.getId()), defaultQA.getDescription()));
}
}
// 然后处理该疾病对应的意图
@ -124,7 +124,7 @@ public class RasaServiceImpl implements RasaService {
nlu.setIntent(intentCode);
nlu.setExamples(askTemplateQuestion.getQuestion());
nluList.add(nlu);
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(askTemplateQuestion.getQuestion(), askDiseaseQuestionAnswer.getAnswer(), askTemplateQuestion.getDescription()));
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(askTemplateQuestion.getQuestion(), CollUtil.newArrayList("disease_" + askDiseaseQuestionAnswer.getId()), askTemplateQuestion.getDescription()));
}
}
@ -144,7 +144,7 @@ public class RasaServiceImpl implements RasaService {
// answer格式为:---tool---工具ID
intentCodeAndIdMap.put(toolIntent,
new QuestionAnswerDTO(tool.getCallOutQuestion(),
CollUtil.newArrayList("---tool---" + tool.getId()), "呼出-tool-" + tool.getToolName()));
CollUtil.newArrayList("tool_" + tool.getId()), "tool-" + tool.getToolName()));
}
// 生成呼出的辅助检查
@ -162,7 +162,7 @@ public class RasaServiceImpl implements RasaService {
// answer格式为:---ancillary---工具ID
intentCodeAndIdMap.put(itemIntent,
new QuestionAnswerDTO(ancillary.getCallOutQuestion(),
CollUtil.newArrayList("---ancillary---" + ancillary.getId()), "呼出-ancillary-" + ancillary.getItemName()));
CollUtil.newArrayList("ancillary_" + ancillary.getId()), "呼出-ancillary-" + ancillary.getItemName()));
}
NluYmlTemplate nluYmlTemplate = new NluYmlTemplate();
nluYmlTemplate.setNlu(nluList);

@ -0,0 +1,101 @@
package com.supervision.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.supervision.exception.BusinessException;
import com.supervision.exception.HumanException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;
@Slf4j
public class HumanUtil {
private static final Environment environment = SpringBeanUtil.getBean(Environment.class);
private static final String BASE_URL = environment.getProperty("human.base-url");
private static final String QUERY_ROOM_ID_URL = BASE_URL + environment.getProperty("human.room-id");
private static final String TEXT_DRIVEN_URL = BASE_URL + environment.getProperty("human.text-driven");
private static final String QUERY_TOKEN_STATUS = BASE_URL + environment.getProperty("human.talk-status");
public static String queryRoomId(String roomKey, String roomToken) {
Map<String, Object> param = new HashMap<>();
param.put("key", roomKey);
param.put("token", roomToken);
String res = HttpUtil.get(QUERY_ROOM_ID_URL, param);
HumanRes resDTO = JSONUtil.toBean(res, HumanRes.class);
if (!"200".equals(resDTO.code)) {
throw new BusinessException("获取房间号失败");
}
// 去过为true,则data是房间号
return resDTO.data;
}
/**
* ,,,,
*
* @param text
* @param roomId ID
*/
public static void textDriven(String text, String roomId) {
HashMap<String, Object> param = new HashMap<>();
long timeStamp = System.currentTimeMillis();
// 要播报的⽂本
param.put("text", text);
// 当前数字⼈房间id
param.put("roomId", roomId);
// 动作id默认-1
param.put("action", "-1");
// 请求唯⼀值使⽤uuid即可每次播报⽂本都要不同否则视为重复播报返回失败
param.put("nonce", UUID.randomUUID().toString());
// 毫秒
param.put("timeStamp", String.valueOf(timeStamp));
param.put("sign", getSign(String.valueOf(timeStamp),
(String) param.get("nonce"),
(String) param.get("text"),
(String) param.get("actionId"),
(String) param.get("roomId")));
String res = HttpUtil.get(TEXT_DRIVEN_URL, param);
HumanRes resDTO = JSONUtil.toBean(res, HumanRes.class);
if (!"200".equals(resDTO.code)) {
throw HumanException.humanError("播放语音失败");
}
}
/**
*
* timeStampnoncetextrootIdactionIdjsonMD516MD5
*/
private static String getSign(String timeStamp, String nonce, String text, String actionId, String roomId) {
Map<String, Object> paramMap = new TreeMap<>();
paramMap.put("action", actionId);
paramMap.put("nonce", nonce);
paramMap.put("roomId", roomId);
paramMap.put("text", text);
paramMap.put("timeStamp", timeStamp);
String paramJsonString = JSONUtil.toJsonStr(paramMap);
return new MD5().digestHex16(paramJsonString);
}
@Data
public static class HumanRes {
private String code;
private String data;
private String state;
}
}

@ -1,25 +1,35 @@
package com.supervision.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.pojo.rasa.train.dto.RasaReqDTO;
import com.supervision.pojo.rasa.train.dto.RasaResDTO;
import com.supervision.vo.rasa.RasaTalkVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
public class RasaUtil {
private static final String RASA_URL = SpringBeanUtil.getBean(Environment.class).getProperty("rasa.url");
public static List<String> talkRasa(String question, String sessionId) {
RasaReqDTO rasaReqDTO = new RasaReqDTO();
rasaReqDTO.setSender(sessionId);
rasaReqDTO.setMessage(question);
String post = HttpUtil.post(RASA_URL, JSONUtil.toJsonStr(rasaReqDTO));
List<RasaResDTO> list = JSONUtil.toList(post, RasaResDTO.class);
return list.stream().map(RasaResDTO::getText).collect(Collectors.toList());
public static String talkRasa(String question, String sessionId, String patientId) {
RasaTalkVo rasaTalkVo = new RasaTalkVo();
rasaTalkVo.setQuestion(question);
rasaTalkVo.setSessionId(sessionId);
rasaTalkVo.setModelId(patientId);
String post = HttpUtil.post(RASA_URL, JSONUtil.toJsonStr(rasaTalkVo));
List<String> list = JSONUtil.toList(post, String.class);
log.info("调用rasa对话返回结果:{}",post);
if (CollUtil.isEmpty(list)){
return "对不起,我没有听懂您说的是什么意思";
}
return CollUtil.getFirst(list);
}

@ -1,39 +0,0 @@
package com.supervision.websocket.cache;
import cn.hutool.core.util.ObjectUtil;
import com.supervision.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.socket.WebSocketSession;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@Slf4j
public class WebSocketUserCache {
private static final Map<String, WebSocketSession> map = new ConcurrentHashMap<>();
public static void login(String id, WebSocketSession socketSession) {
map.put(id, socketSession);
log.info("sessionId:{}注册成功", id);
}
public static void logout(String id) {
map.remove(id);
log.info("sessionId:{}注销成功", id);
}
public static WebSocketSession getSession(String id){
WebSocketSession webSocketSession = map.get(id);
if (ObjectUtil.isEmpty(webSocketSession)){
throw new BusinessException("未找到socket链接");
}
return webSocketSession;
}
}

@ -1,23 +0,0 @@
package com.supervision.websocket.config;
import com.supervision.websocket.handler.AskWebSocketHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(askWebSocketHandler(), "/askSocket")
.setAllowedOrigins("*");
}
@Bean
public WebSocketHandler askWebSocketHandler() {
return new AskWebSocketHandler();
}
}

@ -1,37 +0,0 @@
package com.supervision.websocket.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel
public class SocketMessageDTO {
@ApiModelProperty("socket链接ID")
private String socketId;
@ApiModelProperty("当前用户ID")
private String userId;
@ApiModelProperty("文字消息内容")
private String textMessage;
@ApiModelProperty("语音消息内容")
private String voiceMessage;
@ApiModelProperty("若有动作,这是需要执行的动作内容")
private ActionDTO action;
/**
* 使,action,1,2
*/
@ApiModelProperty("后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作")
private Integer type;
/**
* action,0,1
*/
@ApiModelProperty("前端到后端使用,表示是语音还是文字,1语音,2文字")
private Integer messageType;
}

@ -1,60 +0,0 @@
package com.supervision.websocket.handler;
import cn.hutool.json.JSONUtil;
import com.supervision.service.AskService;
import com.supervision.util.SpringBeanUtil;
import com.supervision.util.UserUtil;
import com.supervision.websocket.cache.WebSocketUserCache;
import com.supervision.websocket.dto.SocketMessageDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNullApi;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import java.io.IOException;
@Slf4j
public class AskWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// 获取本次
String id = session.getId();
// 缓存sessionId
WebSocketUserCache.login(id, session);
// 返回sessionId到前端
SocketMessageDTO socketMessageDTO = new SocketMessageDTO();
socketMessageDTO.setSocketId(id);
session.sendMessage(new TextMessage(JSONUtil.toJsonStr(socketMessageDTO)));
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws IOException {
// 处理接收到的消息
log.info("收到消息:{}", message.toString());
try {
// 这里反序列化消息,将消息形成固定的格式
SocketMessageDTO socketMessageDTO = JSONUtil.toBean(message.getPayload(), SocketMessageDTO.class);
AskService askService = SpringBeanUtil.getBean(AskService.class);
askService.handlerMessageBySocket(socketMessageDTO);
} catch (Exception e) {
log.error("对话出现异常", e);
SocketMessageDTO res = new SocketMessageDTO();
res.setSocketId(session.getId());
res.setUserId(UserUtil.getUser().getId());
res.setTextMessage("出错了");
res.setType(1);
session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res)));
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
// 连接关闭时的处理逻辑
String id = session.getId();
WebSocketUserCache.logout(id);
}
}

@ -2,7 +2,7 @@
server:
port: 8899
servlet:
context-path: /
context-path: /virtual-patient
undertow:
# HTTP post内容的最大大小。当值为-1时默认值为大小是无限的
max-http-post-size: -1
@ -62,4 +62,9 @@ paddle-speech:
tts: http://192.168.10.137:8090/paddlespeech/tts
asr: http://192.168.10.137:8090/paddlespeech/asr
rasa:
url: 192.168.10.137:5005/webhooks/rest/webhook
url: http://192.168.10.137:8890/rasa/talkRasa
human:
base-url: https://digital-human.jd.com
room-id: /getRoomId
text-driven: /text_driven
talk-status: /talkStatus
Loading…
Cancel
Save