From 5d3d3106b773d99e2b4314d9933a2f786da86828 Mon Sep 17 00:00:00 2001 From: longbao <1923439579@qq.com> Date: Wed, 6 Nov 2024 20:06:46 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B5=81=E7=A8=8B=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E3=80=91=201.=E4=BC=98=E5=8C=96=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E4=BA=BA=E6=B5=81=E7=A8=8B=202.=E5=A2=9E=E5=8A=A0=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=97=AE=E9=A2=98=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=AD=89=E5=9B=9E=E5=A4=8D=203.=E4=BF=AE=E6=94=B9=E5=89=8D?= =?UTF-8?q?=E5=8F=B0=E6=9C=AA=E7=94=9F=E6=88=90=E6=88=90=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E4=BA=BA=E6=97=B6=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/dto/HumanGenerateDTO.java | 2 + ...plateQuestionLibraryManageServiceImpl.java | 13 +- .../service/impl/FileManageServiceImpl.java | 5 +- .../service/impl/HumanManageServiceImpl.java | 138 ++++++++++++------ .../supervision/dto/ClinicalInterviewDTO.java | 4 +- .../AskTemplateQuestionLibraryMapper.java | 2 +- .../AskTemplateQuestionSimilarityMapper.java | 6 +- .../AskTemplateQuestionSimilarityService.java | 7 +- ...TemplateQuestionSimilarityServiceImpl.java | 8 +- .../mapper/AskPatientAnswerMapper.xml | 6 +- .../AskTemplateQuestionLibraryMapper.xml | 20 +-- .../AskTemplateQuestionSimilarityMapper.xml | 27 ++-- 12 files changed, 139 insertions(+), 99 deletions(-) diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/dto/HumanGenerateDTO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/dto/HumanGenerateDTO.java index 8971d0c7..ecede401 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/dto/HumanGenerateDTO.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/dto/HumanGenerateDTO.java @@ -9,6 +9,8 @@ public class HumanGenerateDTO { private String message; + private String status; + private String uid; private String video; diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskTemplateQuestionLibraryManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskTemplateQuestionLibraryManageServiceImpl.java index 8f81e08b..61b32ed8 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskTemplateQuestionLibraryManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskTemplateQuestionLibraryManageServiceImpl.java @@ -35,10 +35,6 @@ import java.util.Objects; public class AskTemplateQuestionLibraryManageServiceImpl extends ServiceImpl implements AskTemplateQuestionLibraryManageService { - private final ConfigPhysicalToolService configPhysicalToolService; - - private final ConfigAncillaryItemService configAncillaryItemService; - private final AskTemplateQuestionSimilarityService askTemplateQuestionSimilarityService; @Autowired @@ -47,6 +43,8 @@ public class AskTemplateQuestionLibraryManageServiceImpl extends ServiceImpl askTemplateQuestionSimilarities = askTemplateQuestionSimilarityService.queryAskTemplateQuestionSimilarityByLibraryId(libraryId); medicalRecQaVO.setQuestionList(askTemplateQuestionSimilarities); - AskTemplateQuestionSimilarity askTemplateQuestionSimilarity = askTemplateQuestionSimilarityService.querySimilarityQuestionByNameZhAndSimilarityQuestion(consultationII, questionIntentRecognition); + AskTemplateQuestionSimilarity askTemplateQuestionSimilarity = askTemplateQuestionSimilarityService.querySimilarityQuestion(libraryId, questionIntentRecognition); if (null == askTemplateQuestionSimilarity) { AskTemplateQuestionSimilarity similarity = new AskTemplateQuestionSimilarity(); similarity.setSimilarityQuestion(questionIntentRecognition); @@ -126,11 +124,10 @@ public class AskTemplateQuestionLibraryManageServiceImpl extends ServiceImpl askPatientAnswerList = new ArrayList<>(); + // 诊断闻讯绑定静态视频 + AskPatientAnswer askPatientAnswer = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"静默视频\""); + AskPatientAnswer patientAnswer = new AskPatientAnswer(); + patientAnswer.setId(askPatientAnswer.getId()); + patientAnswer.setAnswerResourceId(fileResource.getId()); + askPatientAnswerList.add(patientAnswer); + + // 默认回复 + AskPatientAnswer askPatientAnswerMoRen = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"默认回复\""); + AskPatientAnswer patientAnswerMoRen = new AskPatientAnswer(); + patientAnswerMoRen.setId(askPatientAnswerMoRen.getId()); + patientAnswerMoRen.setAnswer("默认回复"); + askPatientAnswerList.add(patientAnswerMoRen); + + askPatientAnswerService.updateBatchById(askPatientAnswerList); + + // 完成 + MedicalRec medicalRec1 = new MedicalRec(); + medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode()); + medicalRec1.setId(medicalId); + medicalRecService.updateById(medicalRec1); human.setSilentTaskUid(silentDTO.getUid()); } @@ -200,25 +220,48 @@ public class HumanManageServiceImpl implements HumanManageService { if (dynamicDTO.getCode() == 200) { - if (StrUtil.isNotBlank(dynamicDTO.getVideo())) { - // 如果已经生成了视频,那么直接拿到这个视频 - FileResource fileResource = convertBase64ToFile("dynamic", FileUtil.getName(imageFile), dynamicDTO.getVideo()); - human.setDynamicVideoFileId(fileResource.getId()); - human.setImageName(fileResource.getFileName()); - - // 诊断闻讯绑定动态视频 - AskPatientAnswer askPatientAnswer = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "动态视频"); - AskPatientAnswer patientAnswer = new AskPatientAnswer(); - patientAnswer.setId(askPatientAnswer.getId()); - patientAnswer.setAnswerResourceId(fileResource.getId()); - askPatientAnswerService.updateById(patientAnswer); - - // 完成 - MedicalRec medicalRec1 = new MedicalRec(); - medicalRec1.setMedicalStatus(EnumMedicalRec.COMPLETE.getCode()); - medicalRec1.setId(medicalId); - medicalRecService.updateById(medicalRec1); - } + + HumanGenerateDTO dynamicDTOGet; + String dynamicDTOGetStatus = ""; + do { + String post = HttpUtil.get(humanBaseUrl + status + "/" + dynamicDTO.getUid()); + dynamicDTOGet = JSONUtil.toBean(post, HumanGenerateDTO.class); + dynamicDTOGetStatus = dynamicDTOGet.getStatus(); + } while (!dynamicDTOGetStatus.equals("completed")); + + + // 如果已经生成了视频,那么直接拿到这个视频 + FileResource fileResource = convertBase64ToFile("dynamic", FileUtil.getName(imageFile), dynamicDTOGet.getVideo()); + human.setDynamicVideoFileId(fileResource.getId()); + human.setImageName(fileResource.getFileName()); + + // 诊断闻讯绑定动态视频 + List askPatientAnswerList = new ArrayList<>(); + AskPatientAnswer askPatientAnswerDynamic = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"动态视频\""); + AskPatientAnswer patientAnswerDynamic = new AskPatientAnswer(); + patientAnswerDynamic.setId(askPatientAnswerDynamic.getId()); + patientAnswerDynamic.setAnswerResourceId(fileResource.getId()); + askPatientAnswerList.add(patientAnswerDynamic); + // 你好 + AskPatientAnswer askPatientAnswerHallo = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"你好\""); + AskPatientAnswer patientAnswerHallo = new AskPatientAnswer(); + patientAnswerHallo.setId(askPatientAnswerHallo.getId()); + patientAnswerHallo.setAnswer("你好"); + askPatientAnswerList.add(patientAnswerHallo); + // 异常 + AskPatientAnswer askPatientAnswerError = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"错误\""); + AskPatientAnswer patientAnswerError = new AskPatientAnswer(); + patientAnswerError.setId(askPatientAnswerError.getId()); + patientAnswerError.setAnswer("异常"); + askPatientAnswerList.add(patientAnswerError); + + askPatientAnswerService.updateBatchById(askPatientAnswerList); + + // 完成 + MedicalRec medicalRec1 = new MedicalRec(); + medicalRec1.setMedicalStatus(EnumMedicalRec.COMPLETE.getCode()); + medicalRec1.setId(medicalId); + medicalRecService.updateById(medicalRec1); human.setDynamicTaskUid(dynamicDTO.getUid()); } } @@ -238,14 +281,13 @@ public class HumanManageServiceImpl implements HumanManageService { @SneakyThrows @Override - @Transactional public boolean createHuman(MultipartFile imageFile, String medicalId) { // 查询病例状态 MedicalRec medicalRec = medicalRecService.lambdaQuery() .eq(MedicalRec::getMedicalStatus, EnumMedicalRec.DIGITAL_HUMAN_CREATED.getCode()) .eq(MedicalRec::getId, medicalId) .one(); - Assert.isTrue(null == medicalRec, "请先导入病例后再操作"); + Assert.isTrue(null != medicalRec, "请先导入病例后再操作"); // 上传图片 FileResource fileResource = fileManageService.uploadFile(imageFile, imageFile.getContentType()); @@ -258,22 +300,24 @@ public class HumanManageServiceImpl implements HumanManageService { human.setUpdateUserId(UserUtil.getUser().getId()); humanService.save(human); + // 绑定病例 + MedicalRec medicalRec1 = new MedicalRec(); + medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode()); + medicalRec1.setHumanId(human.getId()); + medicalRec1.setId(medicalId); + medicalRecService.updateById(medicalRec1); + + Human one = humanService.lambdaQuery().eq(Human::getId, human.getId()).one(); + // 异步调用生成数字人 humanExecutor.submit(() -> { try { - generateHuman(human.getId(), medicalId); + generateHuman(one.getId(), medicalId); } catch (Exception e) { log.error("createHuman:生成数字人异常", e); throw new BusinessException("生成数字人异常"); } }); - - // 绑定病例 - MedicalRec medicalRec1 = new MedicalRec(); - medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode()); - medicalRec1.setHumanId(human.getId()); - medicalRec1.setId(medicalId); - medicalRecService.updateById(medicalRec1); return true; } } diff --git a/virtual-patient-model/src/main/java/com/supervision/dto/ClinicalInterviewDTO.java b/virtual-patient-model/src/main/java/com/supervision/dto/ClinicalInterviewDTO.java index cc8c7b08..b13e4901 100644 --- a/virtual-patient-model/src/main/java/com/supervision/dto/ClinicalInterviewDTO.java +++ b/virtual-patient-model/src/main/java/com/supervision/dto/ClinicalInterviewDTO.java @@ -24,10 +24,10 @@ public class ClinicalInterviewDTO { @Alias(value = "问诊Ⅱ") private String ConsultationII; - @Alias(value = "问题") + @Alias(value = "*问题(可不选择具体问题,根据问诊类目系统识别问诊意图)") private String QuestionIntentRecognition; - @Alias(value = "患者回复") + @Alias(value = "患者回复(必填-模拟专业度较高问诊场景需要 获取有效的问诊回复)") private String PatientResponseRequired; } diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/AskTemplateQuestionLibraryMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/AskTemplateQuestionLibraryMapper.java index 17ef55d6..e7fa84a1 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/AskTemplateQuestionLibraryMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/AskTemplateQuestionLibraryMapper.java @@ -25,7 +25,7 @@ public interface AskTemplateQuestionLibraryMapper extends BaseMapper diff --git a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml index 528a46e1..a7cb54a0 100644 --- a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml @@ -23,12 +23,12 @@ - - - - - - + + + + + + @@ -51,7 +51,7 @@ and cd.code = #{askQuestionLibrary.code} - and atql.standard_question like CONCAT('%', #{askQuestionLibrary.description}, '%') + and atql.standard_question like CONCAT('%', #{askQuestionLibrary.description}, '%') and atql.dict_id = #{askQuestionLibrary.dictId} @@ -66,11 +66,13 @@ order by cd.id asc ,atql.create_time desc - - diff --git a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionSimilarityMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionSimilarityMapper.xml index 538b83f3..95854084 100644 --- a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionSimilarityMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionSimilarityMapper.xml @@ -22,23 +22,6 @@ - - - - + + +