|
@@ -31,12 +31,14 @@ import com.diagbot.service.impl.DiagnoseServiceImpl;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.DiagnoseTypeConvertUtil;
|
|
|
+import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.RespDTOUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.VerifyUtil;
|
|
|
import com.diagbot.vo.DeleteDiagnoseVO;
|
|
|
import com.diagbot.vo.DiagnosePageVO;
|
|
|
+import com.diagbot.vo.DiagnoseVerifyVO;
|
|
|
import com.diagbot.vo.DiseaseIndexVO;
|
|
|
import com.diagbot.vo.GetDiagnoseDetailVO;
|
|
|
import com.diagbot.vo.NeoParamVO;
|
|
@@ -48,6 +50,8 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Component
|
|
|
public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
@@ -102,6 +106,17 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
.set("neo_update", now)
|
|
|
.set("remark", deleteDiagnoseVO.getRemark()));
|
|
|
|
|
|
+ // 删除明细(逻辑删除)
|
|
|
+ diagnoseDetailFacade.update(new DiagnoseDetail(), new UpdateWrapper<DiagnoseDetail>()
|
|
|
+ .eq("diagnose_id", deleteDiagnoseVO.getId())
|
|
|
+ .set("gmt_modified", now)
|
|
|
+ .set("modifier", deleteDiagnoseVO.getModifier())
|
|
|
+ .set("is_deleted", deleteDiagnoseVO.getIsDeleted()));
|
|
|
+
|
|
|
+ // 删除问题词列表(物理删除)
|
|
|
+ diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>()
|
|
|
+ .eq("diagnose_id", deleteDiagnoseVO.getId()));
|
|
|
+
|
|
|
// 删除图谱数据
|
|
|
NeoParamVO neoParamVO = new NeoParamVO();
|
|
|
neoParamVO.setId(deleteDiagnoseVO.getId());
|
|
@@ -195,6 +210,139 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 诊断依据校验全部数据
|
|
|
+ *
|
|
|
+ * @param diagnoseVerifyVO
|
|
|
+ */
|
|
|
+ public void verifyAllData(DiagnoseVerifyVO diagnoseVerifyVO) {
|
|
|
+ CommonParam param = initCommonParam();
|
|
|
+ param.setPerson(diagnoseVerifyVO.getModifier());
|
|
|
+
|
|
|
+ // 获取所有主表信息
|
|
|
+ List<Diagnose> diagnoseListWithDB = this.list(new QueryWrapper<Diagnose>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 获取所有明细信息
|
|
|
+ List<DiagnoseDetail> diagnoseDetailWithDB = diagnoseDetailFacade.list(new QueryWrapper<DiagnoseDetail>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ );
|
|
|
+ Map<String, List<DiagnoseDetail>> map = EntityUtil.makeEntityListMap(diagnoseDetailWithDB, "disName");
|
|
|
+
|
|
|
+ // 明细数据
|
|
|
+ List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
|
|
|
+ // 问题词数据
|
|
|
+ List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
|
|
|
+ // 加载词库数据
|
|
|
+ List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
|
|
|
+ Boolean flag = true;
|
|
|
+
|
|
|
+ List<Integer> typeList = new ArrayList<>();
|
|
|
+ // 校验明细数据
|
|
|
+ for (String key : map.keySet()) {
|
|
|
+ List<DiagnoseDetail> detail = map.get(key);
|
|
|
+ int j = 0;
|
|
|
+ if (ListUtil.isNotEmpty(detail)) {
|
|
|
+ // 判断诊断名称是否在词库中
|
|
|
+ flag = verifyExist(libraryForDiagnoseDTOS, detail.get(0).getDisName(), Arrays.asList(LexiconTypeEnum.DIAGNOSIS.getKey()));
|
|
|
+ if (!flag) {
|
|
|
+ DiagnoseQuestion diagnoseQuestion1 = createDiagnoseQuestion(detail.get(0).getId(), detail.get(0).getDisName(), DiagnoseFeatureTypeEnum.Dis.getKey(),
|
|
|
+ detail.get(0).getDisName(), DiagnoseFieldEnum.disName.getKey(), initCommonParam(), ++j);
|
|
|
+ diagnoseQuestionList.add(diagnoseQuestion1);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (DiagnoseDetail bean : detail) {
|
|
|
+ bean.setModifier(param.getPerson());
|
|
|
+ bean.setGmtModified(param.getNow());
|
|
|
+ if (DiagnoseTypeEnum.Confirmed.getKey() == bean.getType() || (DiagnoseTypeEnum.Examination.getKey() == bean.getType() || (DiagnoseTypeEnum.Vigilant.getKey() == bean.getType()))) {
|
|
|
+ // 校验公式
|
|
|
+ // TODO
|
|
|
+ } else {
|
|
|
+ // 校验编码
|
|
|
+ if (StringUtil.isNotEmpty(bean.getCode())) {
|
|
|
+ flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
|
|
|
+ if (!flag) {
|
|
|
+ bean.setVerifyCode(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
|
|
|
+ DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
|
|
|
+ bean.getCode(), DiagnoseFieldEnum.code.getKey(), initCommonParam(), ++j);
|
|
|
+ diagnoseQuestionList.add(diagnoseQuestion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验标准词
|
|
|
+ if (StringUtil.isNotEmpty(bean.getStandard())) {
|
|
|
+ typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.standard.getKey());
|
|
|
+ flag = verifyExist(libraryForDiagnoseDTOS, bean.getStandard(), typeList);
|
|
|
+ if (!flag) {
|
|
|
+ bean.setVerifyStandard(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
|
|
|
+ DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
|
|
|
+ bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
|
|
|
+ diagnoseQuestionList.add(diagnoseQuestion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验关联词
|
|
|
+ if (StringUtil.isNotEmpty(bean.getRelation())) {
|
|
|
+ String[] arr = bean.getRelation().split("、");
|
|
|
+ for (String s : arr) {
|
|
|
+ typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
|
|
|
+ flag = verifyExist(libraryForDiagnoseDTOS, s.trim(), typeList);
|
|
|
+ if (!flag) {
|
|
|
+ bean.setVerifyRelation(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
|
|
|
+ DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
|
|
|
+ s.trim(), DiagnoseFieldEnum.relation.getKey(), initCommonParam(), ++j);
|
|
|
+ diagnoseQuestionList.add(diagnoseQuestion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验结果
|
|
|
+ if (StringUtil.isNotEmpty(bean.getResult())) {
|
|
|
+ typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
|
|
|
+ flag = verifyExist(libraryForDiagnoseDTOS, bean.getResult(), typeList);
|
|
|
+ if (!flag) {
|
|
|
+ bean.setVerifyResult(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
|
|
|
+ DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
|
|
|
+ bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
|
|
|
+ diagnoseQuestionList.add(diagnoseQuestion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ diagnoseDetailList.add(bean);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新明细
|
|
|
+ diagnoseDetailService.saveOrUpdateBatch(diagnoseDetailList);
|
|
|
+
|
|
|
+ // 删除全部的问题词数据
|
|
|
+ diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>());
|
|
|
+ // 新增问题词
|
|
|
+ if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
|
|
|
+ // 新增问题词数据
|
|
|
+ diagnoseQuestionService.saveBatch(diagnoseQuestionList);
|
|
|
+ }
|
|
|
+ List<String> disNameList = diagnoseQuestionList.stream().map(row -> row.getDisName()).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 修改问题词表,修改人|修改时间|状态
|
|
|
+ for (Diagnose diagnose : diagnoseListWithDB) {
|
|
|
+ diagnose.setModifier(diagnoseVerifyVO.getModifier());
|
|
|
+ diagnose.setGmtModified(param.getNow());
|
|
|
+ if (disNameList.contains(diagnose.getDisName())) {
|
|
|
+ diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
|
|
|
+ } else {
|
|
|
+ diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.NO_QUESTION.getKey()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新主表信息
|
|
|
+ this.saveOrUpdateBatch(diagnoseListWithDB);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 处理诊断特征业务(校验诊断名称|编码|标准词|关联词|结果)
|