From 2449c2163f409bce7eb23c556561cd48ca301689 Mon Sep 17 00:00:00 2001 From: liu Date: Thu, 20 Jun 2024 10:27:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E8=AF=8A=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/v3.1.0/step1.sql | 17 ++- .../DiseaseQuestionManageController.java | 5 + .../medicalrec/MedicalRecQaController.java | 46 ++++++ .../pojo/vo/CustomQuestionSaveReqVO.java | 3 + .../pojo/vo/MedicalRecQaAnswerSaveReqVO.java | 17 +++ .../manage/service/MedicalRecQaService.java | 20 +++ .../impl/CustomQuestionServiceImpl.java | 19 +++ .../service/impl/MedicalRecQaServiceImpl.java | 143 ++++++++++++++++++ .../mapper/AskPatientAnswerMapper.java | 22 ++- .../service/AskPatientAnswerService.java | 17 ++- .../impl/AskPatientAnswerServiceImpl.java | 19 ++- .../vo/manage/MedicalRecQaPageResVO.java | 34 +++++ .../mapper/AskPatientAnswerMapper.xml | 47 ++++-- .../service/impl/AskPrimaryServiceImpl.java | 7 +- 14 files changed, 378 insertions(+), 38 deletions(-) create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/controller/medicalrec/MedicalRecQaController.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaAnswerSaveReqVO.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecQaService.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecQaServiceImpl.java create mode 100644 virtual-patient-model/src/main/java/com/supervision/vo/manage/MedicalRecQaPageResVO.java diff --git a/docker/v3.1.0/step1.sql b/docker/v3.1.0/step1.sql index 959e4c19..8fd7363e 100644 --- a/docker/v3.1.0/step1.sql +++ b/docker/v3.1.0/step1.sql @@ -15,25 +15,28 @@ create table vp_medical_extend_item item_content varchar(512) null comment '类目内容', create_user_id varchar(64) null comment '创建人ID', create_time datetime default CURRENT_TIMESTAMP null comment '创建时间', - update_user_id varchar(64) null comment '更新人', + update_user_id varchar(64) null comment '更新人', update_time datetime default CURRENT_TIMESTAMP null comment '更新时间' -) - comment '病历扩展项' charset = utf8 row_format = DYNAMIC; +) comment '病历扩展项' charset = utf8 row_format = DYNAMIC; alter table vp_medical_rec add medical_type integer null comment '病历类型 0:普通型 1:学习型 3:考核型' after no; alter table vp_medical_rec add disposal_diagnosis varchar(1024) null comment '处置诊断' after differential_diagnosis_criteria; +-- 配置病历时,增加证实诊断依据 +alter table vp_ask_patient_answer + add basis_confirm_flag int default 0 null comment '是否是证实诊断依据(0否1是)' after answer; + -- 病历体格检查 create table vp_medical_rec_physical ( - id varchar(64) not null comment '主键' + id varchar(64) not null comment '主键' primary key, - medical_rec_id varchar(64) null comment '病历id', - tool_id varchar(64) null comment '工具ID', - location_id varchar(64) null comment '检查部位ID', + medical_rec_id varchar(64) null comment '病历id', + tool_id varchar(64) null comment '工具ID', + location_id varchar(64) null comment '检查部位ID', result text null comment '结果', normal_result varchar(1024) null comment '正常结果', trait varchar(255) null comment '表征 默认诊断结果(诊断结果)', diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseQuestionManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseQuestionManageController.java index 78b9de42..af6131b3 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseQuestionManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseQuestionManageController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +@Deprecated(since = "1.2版本开始,疾病不再配置问题") @Tag(name = "疾病问题管理") @RestController @RequestMapping("diseaseQuestion") @@ -22,6 +23,7 @@ public class DiseaseQuestionManageController { private final DiseaseQuestionManageService diseaseQuestionManageService; + @Deprecated(since = "1.2版本开始,疾病不再配置问题") @Operation(summary = "保存疾病问题信息") @PostMapping("/batchSave") public boolean batchSaveQuestionList(@RequestBody List diseaseQuestionList) { @@ -31,6 +33,7 @@ public class DiseaseQuestionManageController { } + @Deprecated(since = "1.2版本开始,疾病不再配置问题") @Operation(summary = "删除疾病问题") @DeleteMapping("/delete") public boolean deleteDiseaseQuestion(@RequestParam String id) { @@ -40,6 +43,7 @@ public class DiseaseQuestionManageController { } + @Deprecated(since = "1.2版本开始,疾病不再配置问题") @Operation(summary = "根据疾病id查询问题库信息列表") @GetMapping("/queryListByDiseaseId") public List queryPageByDiseaseId(@RequestParam("diseaseId") String diseaseId) { @@ -48,6 +52,7 @@ public class DiseaseQuestionManageController { } + @Deprecated(since = "1.2版本开始,疾病不再配置问题") @Operation(summary = "分页查询问题库列表(排除已选择的问题)") @GetMapping("/queryQaLibPageList") public Page queryQaLibPageList(@RequestParam(defaultValue = "1") Integer pageNum, diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/medicalrec/MedicalRecQaController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/medicalrec/MedicalRecQaController.java new file mode 100644 index 00000000..3008098c --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/medicalrec/MedicalRecQaController.java @@ -0,0 +1,46 @@ +package com.supervision.manage.controller.medicalrec; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.manage.pojo.vo.MedicalRecQaAnswerSaveReqVO; +import com.supervision.manage.service.MedicalRecQaService; +import com.supervision.model.AskTemplateQuestionLibrary; +import com.supervision.vo.manage.MedicalRecQaPageResVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "病历管理-临床问诊") +@RestController +@RequestMapping("/medicalRecQa") +@RequiredArgsConstructor +public class MedicalRecQaController { + + private final MedicalRecQaService medicalRecQaService; + + @Operation(summary = "病历管理-临床问诊分页查询") + @GetMapping("/queryMedicalRecQaPage") + public IPage queryMedicalRecQaPage(String medicalRecId, String question, Integer basisConfirmFlag, Integer pageNum, Integer pageSize) { + Assert.notBlank(medicalRecId, "病历ID不能为空"); + return medicalRecQaService.queryMedicalRecQaPage(medicalRecId, question, basisConfirmFlag, pageNum, pageSize); + } + + @Operation(summary = "病历管理-临床问诊可选问题列表") + @GetMapping("/queryMedicalRecQaPage") + public IPage queryMedicalRecQaToSelectPage(String medicalRecId, Long dictId, String question, Integer pageNum, Integer pageSize) { + return medicalRecQaService.queryMedicalRecQaToSelectPage(medicalRecId, dictId, question, pageNum, pageSize); + } + + @Operation(summary = "病历管理-临床问诊可选问题列表") + @PostMapping("/saveMedicalRecQaAnswer") + public void saveMedicalRecQaAnswer(@RequestBody MedicalRecQaAnswerSaveReqVO reqVO) { + medicalRecQaService.saveMedicalRecQaAnswer(reqVO); + } + + @Operation(summary = "病历管理-删除病历问答") + @GetMapping("deleteMedicalRecQa") + public void deleteMedicalRecQa(String id) { + medicalRecQaService.deleteMedicalRecQa(id); + } +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/CustomQuestionSaveReqVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/CustomQuestionSaveReqVO.java index f07fcba4..d0df1838 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/CustomQuestionSaveReqVO.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/CustomQuestionSaveReqVO.java @@ -8,6 +8,9 @@ import java.util.List; @Data public class CustomQuestionSaveReqVO { + @Schema(description = "病历ID") + private String medicalRecId; + @Schema(description = "字典ID") private Long dictId; diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaAnswerSaveReqVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaAnswerSaveReqVO.java new file mode 100644 index 00000000..d23071ce --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaAnswerSaveReqVO.java @@ -0,0 +1,17 @@ +package com.supervision.manage.pojo.vo; + +import lombok.Data; + +@Data +public class MedicalRecQaAnswerSaveReqVO { + + private String id; + + private String medicalRecId; + + private String libraryId; + + private String answer; + + private Integer basisConfirmFlag; +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecQaService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecQaService.java new file mode 100644 index 00000000..2345db93 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecQaService.java @@ -0,0 +1,20 @@ +package com.supervision.manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.manage.pojo.vo.MedicalRecQaAnswerSaveReqVO; +import com.supervision.model.AskTemplateQuestionLibrary; +import com.supervision.vo.manage.MedicalRecQaPageResVO; + +public interface MedicalRecQaService { + + IPage queryMedicalRecQaPage(String medicalRecId, + String question, + Integer basisConfirmFlag, + Integer pageNum, Integer pageSize); + + IPage queryMedicalRecQaToSelectPage(String medicalRecId, Long dictId, String question, Integer pageNum, Integer pageSize); + + void saveMedicalRecQaAnswer(MedicalRecQaAnswerSaveReqVO reqVO); + + void deleteMedicalRecQa(String id); +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/CustomQuestionServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/CustomQuestionServiceImpl.java index 72848c01..5114c414 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/CustomQuestionServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/CustomQuestionServiceImpl.java @@ -16,10 +16,12 @@ import com.supervision.manage.pojo.vo.CustomQuestionMatchResVO; import com.supervision.manage.pojo.vo.CustomQuestionSaveReqVO; import com.supervision.manage.pojo.vo.SaveCustomQuestionResVO; import com.supervision.manage.service.CustomQuestionService; +import com.supervision.model.AskPatientAnswer; import com.supervision.model.AskTemplateQuestionLibrary; import com.supervision.model.AskTemplateQuestionSimilarity; import com.supervision.model.CommonDic; import com.supervision.record.QuestionMetadata; +import com.supervision.service.AskPatientAnswerService; import com.supervision.service.AskTemplateQuestionLibraryService; import com.supervision.service.AskTemplateQuestionSimilarityService; import com.supervision.service.CommonDicService; @@ -57,6 +59,9 @@ public class CustomQuestionServiceImpl implements CustomQuestionService { private final AskTemplateQuestionSimilarityService askTemplateQuestionSimilarityService; private final RedisVectorStore redisVectorStore; + + private final AskPatientAnswerService askPatientAnswerService; + @Value("${customQuestionThreshold:0.6}") private String customQuestionThreshold; @@ -200,6 +205,11 @@ public class CustomQuestionServiceImpl implements CustomQuestionService { @Override @Transactional(rollbackFor = Exception.class) public SaveCustomQuestionResVO saveCustomQuestion(CustomQuestionSaveReqVO reqVO) { + Assert.notBlank(reqVO.getMedicalRecId(), "病历ID不能为空"); + Assert.notBlank(reqVO.getCustomQuestion(), "问题不能为空"); + Assert.notBlank(reqVO.getAnswer(), "回答不能为空"); + Assert.notEmpty(reqVO.getSimilarQuestionList(), "相似问不能为空"); + Assert.notNull(reqVO.getDictId(), "字典不能为空"); // 首先对标准问进行校验,校验相似度比较低才能允许被提交 List similarLibraryQuestionResVOS = checkCustomQuestionSimilar(reqVO.getCustomQuestion(), reqVO.getSelectedQuestionLibraryIdList()); if (CollUtil.isNotEmpty(similarLibraryQuestionResVOS)) { @@ -233,6 +243,15 @@ public class CustomQuestionServiceImpl implements CustomQuestionService { askTemplateQuestionSimilarity.setSimilarityQuestion(similarQuestion); askTemplateQuestionSimilarityService.save(askTemplateQuestionSimilarity); } + // 还需要保存问题的答案 + AskPatientAnswer askPatientAnswer = new AskPatientAnswer(); + askPatientAnswer.setMedicalId(reqVO.getMedicalRecId()); + askPatientAnswer.setLibraryQuestionId(askTemplateQuestionLibrary.getId()); + askPatientAnswer.setQuestion(askTemplateQuestionLibrary.getStandardQuestion()); + askPatientAnswer.setAnswer(reqVO.getAnswer()); + askPatientAnswer.setAnswerType(1); + askPatientAnswerService.save(askPatientAnswer); + // 这时,需要将数据刷到向量库中 String description = askTemplateQuestionLibrary.getStandardQuestion(); Map questionVector = new QuestionMetadata("3", diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecQaServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecQaServiceImpl.java new file mode 100644 index 00000000..aa2a3ac0 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecQaServiceImpl.java @@ -0,0 +1,143 @@ +package com.supervision.manage.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.supervision.exception.BusinessException; +import com.supervision.manage.pojo.vo.MedicalRecQaAnswerSaveReqVO; +import com.supervision.manage.service.MedicalRecQaService; +import com.supervision.model.AskPatientAnswer; +import com.supervision.model.AskTemplateQuestionLibrary; +import com.supervision.model.CommonDic; +import com.supervision.service.AskPatientAnswerService; +import com.supervision.service.AskTemplateQuestionLibraryService; +import com.supervision.service.CommonDicService; +import com.supervision.vo.manage.MedicalRecQaPageResVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MedicalRecQaServiceImpl implements MedicalRecQaService { + + private final AskPatientAnswerService askPatientAnswerService; + + private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService; + + private final CommonDicService commonDicService; + + @Override + @Transactional(rollbackFor = Exception.class) + public IPage queryMedicalRecQaPage(String medicalRecId, + String question, + Integer basisConfirmFlag, + Integer pageNum, Integer pageSize) { + IPage page = askPatientAnswerService.queryMedicalRecQaPage(medicalRecId, question, basisConfirmFlag, pageNum, pageSize); + if (CollUtil.isNotEmpty(page.getRecords())) { + return page; + } + // 如果不为空,这时就给生成一些问题和答案(问题是产品给的14个问题) + List dictPathList = new ArrayList<>(); + dictPathList.add("现病史/主诉"); + dictPathList.add("现病史/症状持续时间"); + dictPathList.add("现病史/伴随症状"); + dictPathList.add("现病史/治疗经过"); + dictPathList.add("现病史/症状演变"); + dictPathList.add("一般状况/精神状态"); + dictPathList.add("一般状况/体重"); + dictPathList.add("既往史/手术史"); + dictPathList.add("既往史/过敏史"); + dictPathList.add("既往史/预防接种史"); + dictPathList.add("一般状况/大小便"); + dictPathList.add("既往史/慢性病史"); + dictPathList.add("家族史/遗传倾向"); + List dicList = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list(); + List answerList = new ArrayList<>(); + if (CollUtil.isNotEmpty(dicList)) { + Map dictMap = dicList.stream().collect(Collectors.toMap(CommonDic::getNameZhPath, CommonDic::getId)); + // 获取找到数据的对应的字典ID + Set dictIdSet = dictPathList.stream().filter(dictMap::containsKey).map(dictMap::get).collect(Collectors.toSet()); + List libraryList = askTemplateQuestionLibraryService.lambdaQuery().in(AskTemplateQuestionLibrary::getDictId, dictIdSet).list(); + if (CollUtil.isNotEmpty(libraryList)) { + Map> libraryMap = libraryList.stream().collect(Collectors.groupingBy(AskTemplateQuestionLibrary::getDictId)); + // 获取到问题 + for (String dictPath : dictPathList) { + // 首先根据字典名称找到对应的dictId + Long dictId = dictMap.get(dictPath); + if (dictId != null) { + List libraryListByDictId = libraryMap.get(dictId); + if (CollUtil.isNotEmpty(libraryListByDictId) && libraryListByDictId.stream().findAny().isPresent()) { + // 如果不为空,那就随便找一个 + AskTemplateQuestionLibrary library = libraryListByDictId.stream().findAny().get(); + AskPatientAnswer askPatientAnswer = new AskPatientAnswer(); + askPatientAnswer.setMedicalId(medicalRecId); + askPatientAnswer.setLibraryQuestionId(library.getId()); + askPatientAnswer.setQuestion(library.getStandardQuestion()); + answerList.add(askPatientAnswer); + + } + } + + } + } + } + askPatientAnswerService.saveBatch(answerList); + // 再查一遍 + return askPatientAnswerService.queryMedicalRecQaPage(medicalRecId, question, basisConfirmFlag, pageNum, pageSize); + } + + @Override + public IPage queryMedicalRecQaToSelectPage(String medicalRecId, Long dictId, String question, Integer pageNum, Integer pageSize) { + // 首先查到已选择的ID + List answerList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).select(AskPatientAnswer::getLibraryQuestionId).list(); + Set existLibrarySet = answerList.stream().map(AskPatientAnswer::getLibraryQuestionId).collect(Collectors.toSet()); + + // 已选择的不会出现,且自定义的也不会出现 + return askTemplateQuestionLibraryService.lambdaQuery() + .eq(AskTemplateQuestionLibrary::getType, 1) + .notIn(CollUtil.isNotEmpty(existLibrarySet), AskTemplateQuestionLibrary::getId, existLibrarySet) + .like(StrUtil.isNotBlank(question), AskTemplateQuestionLibrary::getStandardQuestion, question) + .eq(ObjectUtil.isNotEmpty(dictId), AskTemplateQuestionLibrary::getDictId, dictId).page(new Page<>(pageNum, pageSize)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveMedicalRecQaAnswer(MedicalRecQaAnswerSaveReqVO reqVO) { + Assert.notBlank(reqVO.getId(), "ID不能为空"); + Assert.notBlank(reqVO.getMedicalRecId(), "病历ID不能为空"); + Assert.notBlank(reqVO.getAnswer(), "答案不能为空"); + Assert.notBlank(reqVO.getLibraryId(), "问题ID不能为空"); + Optional askPatientAnswerOpt = askPatientAnswerService.getOptById(reqVO.getId()); + + if (askPatientAnswerOpt.isPresent()) { + AskPatientAnswer askPatientAnswer = askPatientAnswerOpt.get(); + askPatientAnswer.setAnswer(reqVO.getAnswer()); + askPatientAnswerService.updateById(askPatientAnswer); + } else { + Optional optById = askTemplateQuestionLibraryService.getOptById(reqVO.getLibraryId()); + AskTemplateQuestionLibrary library = optById.orElseThrow(() -> new BusinessException("未找到的标准问题")); + AskPatientAnswer answer = new AskPatientAnswer(); + answer.setMedicalId(answer.getMedicalId()); + answer.setLibraryQuestionId(answer.getLibraryQuestionId()); + answer.setQuestion(library.getStandardQuestion()); + answer.setAnswer(answer.getAnswer()); + askPatientAnswerService.save(answer); + } + + } + + @Override + public void deleteMedicalRecQa(String id) { + Assert.notBlank(id, "ID不能为空"); + askPatientAnswerService.removeById(id); + } +} diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/AskPatientAnswerMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/AskPatientAnswerMapper.java index fe7a172b..77e57765 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/AskPatientAnswerMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/AskPatientAnswerMapper.java @@ -1,16 +1,26 @@ package com.supervision.mapper; -import com.supervision.model.AskPatientAnswer; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.supervision.model.AskPatientAnswer; +import com.supervision.vo.manage.MedicalRecQaPageResVO; +import org.apache.ibatis.annotations.Param; /** -* @author flevance -* @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Mapper -* @createDate 2023-11-03 11:13:26 -* @Entity com.supervision.model.AskPatientAnswer -*/ + * @author flevance + * @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Mapper + * @createDate 2023-11-03 11:13:26 + * @Entity com.supervision.model.AskPatientAnswer + */ public interface AskPatientAnswerMapper extends BaseMapper { + IPage queryMedicalRecQaPage(@Param("medicalRecId") String medicalRecId, + @Param("question") String question, + @Param("basisConfirmFlag") Integer basisConfirmFlag, + @Param("page") Page page + ); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/AskPatientAnswerService.java b/virtual-patient-model/src/main/java/com/supervision/service/AskPatientAnswerService.java index 1f2f978b..9d05c03b 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/AskPatientAnswerService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/AskPatientAnswerService.java @@ -1,13 +1,20 @@ package com.supervision.service; -import com.supervision.model.AskPatientAnswer; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.supervision.model.AskPatientAnswer; +import com.supervision.vo.manage.MedicalRecQaPageResVO; /** -* @author flevance -* @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Service -* @createDate 2023-11-03 11:13:26 -*/ + * @author flevance + * @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Service + * @createDate 2023-11-03 11:13:26 + */ public interface AskPatientAnswerService extends IService { + IPage queryMedicalRecQaPage(String medicalRecId, + String question, + Integer basisConfirmFlag, + Integer pageNum, Integer pageSize); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/AskPatientAnswerServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/AskPatientAnswerServiceImpl.java index 83f66d36..6a40a6a7 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/AskPatientAnswerServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/AskPatientAnswerServiceImpl.java @@ -1,20 +1,27 @@ package com.supervision.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.mapper.AskPatientAnswerMapper; import com.supervision.model.AskPatientAnswer; import com.supervision.service.AskPatientAnswerService; -import com.supervision.mapper.AskPatientAnswerMapper; +import com.supervision.vo.manage.MedicalRecQaPageResVO; import org.springframework.stereotype.Service; /** -* @author flevance -* @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Service实现 -* @createDate 2023-11-03 11:13:26 -*/ + * @author flevance + * @description 针对表【vp_ask_patient_answer(诊断问询-针对患者的回复)】的数据库操作Service实现 + * @createDate 2023-11-03 11:13:26 + */ @Service public class AskPatientAnswerServiceImpl extends ServiceImpl - implements AskPatientAnswerService{ + implements AskPatientAnswerService { + @Override + public IPage queryMedicalRecQaPage(String medicalRecId, String question, Integer basisConfirmFlag, Integer pageNum, Integer pageSize) { + return this.baseMapper.queryMedicalRecQaPage(medicalRecId, question, basisConfirmFlag, new Page<>(pageNum, pageSize)); + } } diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/MedicalRecQaPageResVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/MedicalRecQaPageResVO.java new file mode 100644 index 00000000..a3cb420f --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/MedicalRecQaPageResVO.java @@ -0,0 +1,34 @@ +package com.supervision.vo.manage; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema +public class MedicalRecQaPageResVO { + + @Schema(description = "本条记录ID,删除更新都用它") + private String id; + + @Schema(description = "标准问题库ID") + private String libraryId; + + @Schema(description = "标准问题") + private String standardQuestion; + + @Schema(description = "问题类型 1标准问 2自定义问题") + private Integer type; + + @Schema(description = "回答") + private String answer; + + @Schema(description = "问题类目") + private String dictPath; + + @Schema(description = "字典ID") + private Long dictId; + + @Schema(description = "是否是证实诊断依据(0否1是)") + private Integer basisConfirmFlag; + +} diff --git a/virtual-patient-model/src/main/resources/mapper/AskPatientAnswerMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskPatientAnswerMapper.xml index e26a7cd5..b00e3e6e 100644 --- a/virtual-patient-model/src/main/resources/mapper/AskPatientAnswerMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/AskPatientAnswerMapper.xml @@ -5,23 +5,44 @@ - - - - - - - - - - - - + + + + + + + + + + + + - id,medical_id,library_question_id,code,question, + id + ,medical_id,library_question_id,code,question, answer,answer_resources_id,answer_type,create_user_id, create_time,update_user_id,update_time + diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java index 145edcbb..387b96eb 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java @@ -201,7 +201,7 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { public void confirmPrimaryByAskEnd(PrimaryConfirmReqVO reqVO) { List reqVOList = reqVO.getPrimaryConfirmList(); Optional any = reqVOList.stream().findAny(); - if (!any.isPresent()) { + if (any.isEmpty()) { throw new BusinessException("初步诊断不能为空"); } // 如果 != 1 ,不是暂存,那么就校验电子病历是否填写 @@ -235,6 +235,11 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { } + /** + * // 保存证实诊断依据 + * + * @param diagnosticBasisList 证实诊断依据 + */ private void saveDiagnosticBasis(List diagnosticBasisList) { for (DiagnosticBasisForPrimaryReqVO node : diagnosticBasisList) { if (1 == node.getType()) {