|
@@ -0,0 +1,560 @@
|
|
|
|
+package com.diagbot.facade;
|
|
|
|
+
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.diagbot.dto.*;
|
|
|
|
+import com.diagbot.entity.*;
|
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
|
+import com.diagbot.enums.LexiconEnum;
|
|
|
|
+import com.diagbot.enums.StatusEnum;
|
|
|
|
+import com.diagbot.exception.CommonErrorCode;
|
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
|
+import com.diagbot.service.KlCaseDetailService;
|
|
|
|
+import com.diagbot.service.KlConceptDetailService;
|
|
|
|
+import com.diagbot.service.KlConceptService;
|
|
|
|
+import com.diagbot.service.KlDiseaseService;
|
|
|
|
+import com.diagbot.service.impl.KlClassicCaseServiceImpl;
|
|
|
|
+import com.diagbot.service.impl.KlDiseaseServiceImpl;
|
|
|
|
+import com.diagbot.util.*;
|
|
|
|
+import com.diagbot.vo.*;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
+import io.micrometer.core.instrument.util.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
+
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Description:
|
|
|
|
+ * @author: gaodm
|
|
|
|
+ * @time: 2021/1/26 13:07
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+public class KlClassicCaseFacade extends KlClassicCaseServiceImpl {
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlConceptFacade klConceptFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlRelationFacade klRelationFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlConceptDetailFacade klConceptDetailFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlConceptScaleFacade klConceptScaleFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlDictionaryInfoFacade klDictionaryInfoFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlScaleFacade klScaleFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlClassicCaseFacade klClassicCaseFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlCaseDetailFacade klCaseDetailFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private KlClassicCaseInfoFacade klClassicCaseInfoFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ @Qualifier("klConceptDetailServiceImpl")
|
|
|
|
+ private KlConceptDetailService klConceptDetailService;
|
|
|
|
+ @Autowired
|
|
|
|
+ @Qualifier("klCaseDetailServiceImpl")
|
|
|
|
+ private KlCaseDetailService klCaseDetailService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private DictionaryFacade dictionaryFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MedRetrievalFacade medRetrievalFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ KlRegulationBaseFacade klRegulationBaseFacade;
|
|
|
|
+ KlConceptService klConceptService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取经典病历
|
|
|
|
+ *
|
|
|
|
+ * @param staticKnowledgeVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public StaticKnowledgeDTO getClassicCaseInfo(StaticKnowledgeVO staticKnowledgeVO) {
|
|
|
|
+ StaticKnowledgeDTO classicCaseDTO = new StaticKnowledgeDTO();
|
|
|
|
+ Integer type = convertType(staticKnowledgeVO.getType(), 1);
|
|
|
|
+ if (type == null) {
|
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确类型(11-经典病例)");
|
|
|
|
+ }
|
|
|
|
+ staticKnowledgeVO.setType(type);
|
|
|
|
+
|
|
|
|
+ KlConcept concept = klConceptFacade.getOne(new QueryWrapper<KlConcept>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("lib_name", staticKnowledgeVO.getName())
|
|
|
|
+ .eq("status", StatusEnum.Enable.getKey())
|
|
|
|
+ .eq("lib_type", type), false);
|
|
|
|
+
|
|
|
|
+ Integer sameType = 0;
|
|
|
|
+
|
|
|
|
+ KlClassicCase caseInfo = this.getOne(new QueryWrapper<KlClassicCase>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("concept_id", concept.getId())
|
|
|
|
+ .eq("status", StatusEnum.Enable.getKey()), false);
|
|
|
|
+ if (caseInfo != null) {
|
|
|
|
+ staticKnowledgeVO.setType(sameType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //经典病例详情
|
|
|
|
+// String sql = "";
|
|
|
|
+// if (ListUtil.isNotEmpty(staticKnowledgeVO.getContentTypes())) {
|
|
|
|
+//
|
|
|
|
+// for (Integer contentType : staticKnowledgeVO.getContentTypes()) {
|
|
|
|
+// if (contentType.equals(0)) {
|
|
|
|
+// sql = "";
|
|
|
|
+// break;
|
|
|
|
+// }
|
|
|
|
+// if (StringUtil.isNotBlank(sql)) {
|
|
|
|
+// sql += " or ";
|
|
|
|
+// }
|
|
|
|
+// sql += "find_in_set(" + contentType + ",content_type)";
|
|
|
|
+// }
|
|
|
|
+// if (StringUtil.isNotBlank(sql)) {
|
|
|
|
+// sql = "(" + sql + ")";
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+ List<KlCaseDetail> details = klCaseDetailFacade.list(new QueryWrapper<KlCaseDetail>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("concept_id", concept.getId())
|
|
|
|
+// .apply(sql)
|
|
|
|
+ .orderByAsc("order_no"));
|
|
|
|
+
|
|
|
|
+ List<StaticKnowledgeDetailDTO> detailList
|
|
|
|
+ = BeanUtil.listCopyTo(details, StaticKnowledgeDetailDTO.class);
|
|
|
|
+ List<StaticKnowledgeDetailDTO> introduceList = detailList
|
|
|
|
+ .stream()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ //Map<String, List<StaticKnowledgeDetailDTO>> detailMap = new HashMap<>();
|
|
|
|
+ Map<String, List<StaticKnowledgeDetailDTO>> detailMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(introduceList) && staticKnowledgeVO.getContentTypes().contains(1)) {
|
|
|
|
+ detailMap.put("经典病历", introduceList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (type.equals(LexiconEnum.Scale.getKey())) {
|
|
|
|
+ //量表详情
|
|
|
|
+ ScaleVO scaleVO = new ScaleVO();
|
|
|
|
+ BeanUtil.copyProperties(staticKnowledgeVO, scaleVO);
|
|
|
|
+ classicCaseDTO.setScale(getScaleStructure(scaleVO, concept.getId()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ classicCaseDTO.setDetails(detailMap);
|
|
|
|
+ classicCaseDTO.setId(concept.getId());
|
|
|
|
+ classicCaseDTO.setName(concept.getLibName());
|
|
|
|
+ Integer retType = convertType(concept.getLibType(), 2);
|
|
|
|
+ classicCaseDTO.setType(retType == null ? "" : retType.toString());
|
|
|
|
+
|
|
|
|
+ return classicCaseDTO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 经典病例分页查询
|
|
|
|
+ *
|
|
|
|
+ * @param klClassicCasePageVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<KlClassicCaseDTO> getClassicCase(KlClassicCasePageVO klClassicCasePageVO) {
|
|
|
|
+ Integer type = convertType(klClassicCasePageVO.getType(), 1);
|
|
|
|
+ klClassicCasePageVO.setType(type);
|
|
|
|
+
|
|
|
|
+ List<DictionaryInfoDTO> dicTypeName = dictionaryFacade.getListByGroupType(13);
|
|
|
|
+ Map<String, String> dicTypeNameMap
|
|
|
|
+ = EntityUtil.makeMapWithKeyValue(dicTypeName, "val", "name");
|
|
|
|
+
|
|
|
|
+ IPage<KlClassicCaseDTO> page = super.getClassicCase(klClassicCasePageVO);
|
|
|
|
+ List<KlClassicCaseDTO> records = page.getRecords();
|
|
|
|
+ List<Long> conceptIds = page.getRecords()
|
|
|
|
+ .stream()
|
|
|
|
+ .map(KlClassicCaseDTO::getId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ if (ListUtil.isNotEmpty(conceptIds)) {
|
|
|
|
+ QueryWrapper<KlCaseDetail> qw = new QueryWrapper<>();
|
|
|
|
+ qw.in("concept_id", conceptIds)
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .orderByAsc("concept_id")
|
|
|
|
+ .orderByAsc("order_no");
|
|
|
|
+ Map<Long, List<KlCaseDetail>> detailMap = klCaseDetailFacade.list(qw)
|
|
|
|
+ .stream().collect(Collectors.groupingBy(KlCaseDetail::getConceptId));
|
|
|
|
+
|
|
|
|
+ records.forEach(record -> {
|
|
|
|
+ String typeName = LexiconEnum.getName(record.getType());
|
|
|
|
+ record.setTypeName(dicTypeNameMap.get(typeName));
|
|
|
|
+ Integer retType = convertType(record.getType(), 2);
|
|
|
|
+ record.setType(retType);
|
|
|
|
+ if (null != detailMap
|
|
|
|
+ && detailMap.containsKey(record.getId())
|
|
|
|
+ && ListUtil.isNotEmpty(detailMap.get(record.getId()))) {
|
|
|
|
+ record.setTitle(detailMap.get(record.getId())
|
|
|
|
+ .stream()
|
|
|
|
+ .map(KlCaseDetail::getTitle)
|
|
|
|
+ .collect(Collectors.joining("、")));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ page.setRecords(records);
|
|
|
|
+ return page;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 启用禁用
|
|
|
|
+ *
|
|
|
|
+ * @param changeStatusVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Boolean changeCaseStatus(ChangeStatusVO changeStatusVO) {
|
|
|
|
+ //String userId = SysUserUtils.getCurrentPrincipleID();
|
|
|
|
+ if (changeStatusVO.getUserId() == null) {
|
|
|
|
+ changeStatusVO.setUserId(0L);
|
|
|
|
+ }
|
|
|
|
+ Date now = DateUtil.now();
|
|
|
|
+ //更新主表
|
|
|
|
+ this.update(new UpdateWrapper<KlClassicCase>()
|
|
|
|
+ .eq("concept_id", changeStatusVO.getId())
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .set("gmt_modified", now)
|
|
|
|
+ .set("modifier", changeStatusVO.getUserId())
|
|
|
|
+ .set("status", changeStatusVO.getStatus()));
|
|
|
|
+ //更新明细表
|
|
|
|
+ klCaseDetailService.update(new UpdateWrapper<KlCaseDetail>()
|
|
|
|
+ .eq("concept_id", changeStatusVO.getId())
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .set("gmt_modified", now)
|
|
|
|
+ .set("modifier", changeStatusVO.getUserId()));
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据经典病历id获取病历信息
|
|
|
|
+ *
|
|
|
|
+ * @param idVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public KlClassicCaseDTO getCaseById(IdVO idVO) {
|
|
|
|
+ KlClassicCaseDTO klClassicCaseDTO = new KlClassicCaseDTO();
|
|
|
|
+
|
|
|
|
+ List<DictionaryInfoDTO> dicTypeName = dictionaryFacade.getListByGroupType(13);
|
|
|
|
+ Map<String, String> dicTypeNameMap
|
|
|
|
+ = EntityUtil.makeMapWithKeyValue(dicTypeName, "val", "name");
|
|
|
|
+
|
|
|
|
+ KlConcept concept = klConceptFacade.getById(idVO.getId());
|
|
|
|
+ if (concept == null) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ KlClassicCase classicCase = this.getOne(new QueryWrapper<KlClassicCase>()
|
|
|
|
+ .eq("concept_id", idVO.getId()), false);
|
|
|
|
+
|
|
|
|
+ if (classicCase == null) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<KlCaseDetail> details = klCaseDetailFacade.list(new QueryWrapper<KlCaseDetail>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("concept_id", idVO.getId())
|
|
|
|
+ .orderByAsc("order_no"));
|
|
|
|
+
|
|
|
|
+ klClassicCaseDTO.setId(concept.getId());
|
|
|
|
+ klClassicCaseDTO.setName(concept.getLibName());
|
|
|
|
+ klClassicCaseDTO.setType(convertType(concept.getLibType(), 2));
|
|
|
|
+ klClassicCaseDTO.setTypeName(dicTypeNameMap.get(LexiconEnum.getName(concept.getLibType())));
|
|
|
|
+
|
|
|
|
+ klClassicCaseDTO.setStatus(classicCase.getStatus());
|
|
|
|
+ klClassicCaseDTO.setGmtModified(classicCase.getGmtModified());
|
|
|
|
+ klClassicCaseDTO.setModifier(classicCase.getModifier());
|
|
|
|
+
|
|
|
|
+ klClassicCaseDTO.setTitle(ListUtil.isNotEmpty(details)
|
|
|
|
+ ? details.stream().map(i -> i.getTitle()).collect(Collectors.joining("、"))
|
|
|
|
+ : "");
|
|
|
|
+ klClassicCaseDTO.setDetails(ListUtil.isNotEmpty(details)
|
|
|
|
+ ? BeanUtil.listCopyTo(details, KlConceptDetailDTO.class)
|
|
|
|
+ : new ArrayList<>());
|
|
|
|
+
|
|
|
|
+ //获取量表结构
|
|
|
|
+ if (concept.getLibType().equals(LexiconEnum.Scale.getKey())) {
|
|
|
|
+ KlScaleByIdVO klScaleByIdVO = new KlScaleByIdVO();
|
|
|
|
+ klScaleByIdVO.setId(classicCase.getId());
|
|
|
|
+ List<KlScaleByIdDTO> scaleList = klScaleFacade.getKlScaleById(klScaleByIdVO);
|
|
|
|
+ if (ListUtil.isNotEmpty(scaleList)) {
|
|
|
|
+ klClassicCaseDTO.setScale(scaleList.get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return klClassicCaseDTO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 保存记录(新增or修改)
|
|
|
|
+ *
|
|
|
|
+ * @param klClassicCaseVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Boolean saveOrUpdateCase(KlClassicCaseVO klClassicCaseVO) {
|
|
|
|
+ if (klClassicCaseVO.getUserId() == null) {
|
|
|
|
+ klClassicCaseVO.setUserId(0L);
|
|
|
|
+ }
|
|
|
|
+ Date now = DateUtil.now();
|
|
|
|
+
|
|
|
|
+ Integer type = convertType(klClassicCaseVO.getType(), 1);
|
|
|
|
+ klClassicCaseVO.setType(type);
|
|
|
|
+
|
|
|
|
+ KlConcept concept = new KlConcept();
|
|
|
|
+ if (klClassicCaseVO.getId() != null) {
|
|
|
|
+ concept = klConceptFacade.getById(klClassicCaseVO.getId());
|
|
|
|
+ } else {
|
|
|
|
+ concept = klConceptFacade.getOne(new QueryWrapper<KlConcept>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("lib_name", klClassicCaseVO.getName())
|
|
|
|
+ .eq("lib_type", klClassicCaseVO.getType()), false);
|
|
|
|
+ }
|
|
|
|
+ if (concept == null) {
|
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "标准术语不存在");
|
|
|
|
+ }
|
|
|
|
+ if (!concept.getLibName().equals(klClassicCaseVO.getName())) {
|
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "标准术语名称不允许修改");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Long conceptId = concept.getId();
|
|
|
|
+ KlClassicCase classicCase = this.getOne(new QueryWrapper<KlClassicCase>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("concept_id", concept.getId()), false);
|
|
|
|
+
|
|
|
|
+ if (classicCase == null) {
|
|
|
|
+ classicCase = new KlClassicCase();
|
|
|
|
+ classicCase.setId(null);
|
|
|
|
+ classicCase.setConceptId(concept.getId());
|
|
|
|
+ classicCase.setStatus(StatusEnum.Enable.getKey());
|
|
|
|
+ classicCase.setCreator(klClassicCaseVO.getUserId().toString());
|
|
|
|
+ classicCase.setGmtCreate(now);
|
|
|
|
+ }
|
|
|
|
+ classicCase.setModifier(klClassicCaseVO.getUserId().toString());
|
|
|
|
+ classicCase.setGmtModified(now);
|
|
|
|
+
|
|
|
|
+ List<KlCaseDetail> details = Lists.newLinkedList();
|
|
|
|
+ if (ListUtil.isNotEmpty(klClassicCaseVO.getDetails())) {
|
|
|
|
+ details = BeanUtil.listCopyTo(klClassicCaseVO.getDetails(), KlCaseDetail.class);
|
|
|
|
+ }
|
|
|
|
+ details.forEach(detail -> {
|
|
|
|
+ detail.setConceptId(conceptId);
|
|
|
|
+ detail.setCreator(klClassicCaseVO.getUserId().toString());
|
|
|
|
+ detail.setGmtCreate(now);
|
|
|
|
+ detail.setModifier(klClassicCaseVO.getUserId().toString());
|
|
|
|
+ detail.setGmtModified(now);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //保存经典病例基础信息
|
|
|
|
+ this.saveOrUpdate(classicCase);
|
|
|
|
+
|
|
|
|
+ //删除已有明细
|
|
|
|
+ klCaseDetailService.remove(new QueryWrapper<KlCaseDetail>()
|
|
|
|
+ .eq("concept_id", concept.getId()));
|
|
|
|
+
|
|
|
|
+ //保存新的明细
|
|
|
|
+ klCaseDetailService.saveBatch(details);
|
|
|
|
+
|
|
|
|
+ //保存量表明细
|
|
|
|
+ if (klClassicCaseVO.getSource() != null
|
|
|
|
+ && klClassicCaseVO.getSource().equals(1)
|
|
|
|
+ && klClassicCaseVO.getType().equals(LexiconEnum.Scale.getKey())) {
|
|
|
|
+ if (klClassicCaseVO.getScale() != null) {
|
|
|
|
+ klClassicCaseVO.getScale().setConceptId(concept.getId());
|
|
|
|
+ klClassicCaseVO.getScale().setModifier(concept.getModifier());
|
|
|
|
+ klScaleFacade.saveUpKlScaleAll(klClassicCaseVO.getScale());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 页面展示类型转换
|
|
|
|
+ *
|
|
|
|
+ * @param type
|
|
|
|
+ * @param flag
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Integer convertType(Integer type, Integer flag) {
|
|
|
|
+ Integer retType = null;
|
|
|
|
+ if (type == null) {
|
|
|
|
+ return retType;
|
|
|
|
+ }
|
|
|
|
+ if (flag.equals(1)) {
|
|
|
|
+ //1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作
|
|
|
|
+ switch (type) {
|
|
|
|
+ case 1:
|
|
|
|
+ retType = LexiconEnum.Disease.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ retType = LexiconEnum.Medicine.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ retType = LexiconEnum.LisName.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 4:
|
|
|
|
+ retType = LexiconEnum.LisSubName.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 5:
|
|
|
|
+ retType = LexiconEnum.PacsName.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 6:
|
|
|
|
+ retType = LexiconEnum.PacsSubName.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 7:
|
|
|
|
+ retType = LexiconEnum.Operation.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 8:
|
|
|
|
+ retType = LexiconEnum.Scale.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 9:
|
|
|
|
+ retType = LexiconEnum.Nurse.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 10:
|
|
|
|
+ retType = LexiconEnum.Law.getKey();
|
|
|
|
+ break;
|
|
|
|
+ case 11:
|
|
|
|
+ retType = LexiconEnum.ClassicCase.getKey();
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else if (flag.equals(2)) {
|
|
|
|
+ if (type.equals(LexiconEnum.Disease.getKey())) {
|
|
|
|
+ retType = 1;
|
|
|
|
+ } else if (type.equals(LexiconEnum.Medicine.getKey())) {
|
|
|
|
+ retType = 2;
|
|
|
|
+ } else if (type.equals(LexiconEnum.LisName.getKey())) {
|
|
|
|
+ retType = 3;
|
|
|
|
+ } else if (type.equals(LexiconEnum.LisSubName.getKey())) {
|
|
|
|
+ retType = 4;
|
|
|
|
+ } else if (type.equals(LexiconEnum.PacsName.getKey())) {
|
|
|
|
+ retType = 5;
|
|
|
|
+ } else if (type.equals(LexiconEnum.PacsSubName.getKey())) {
|
|
|
|
+ retType = 6;
|
|
|
|
+ } else if (type.equals(LexiconEnum.Operation.getKey())) {
|
|
|
|
+ retType = 7;
|
|
|
|
+ } else if (type.equals(LexiconEnum.Scale.getKey())) {
|
|
|
|
+ retType = 8;
|
|
|
|
+ } else if (type.equals(LexiconEnum.Nurse.getKey())) {
|
|
|
|
+ retType = 9;
|
|
|
|
+ } else if (type.equals(LexiconEnum.Law.getKey())) {
|
|
|
|
+ retType = 10;
|
|
|
|
+ } else if (type.equals(LexiconEnum.ClassicCase.getKey())) {
|
|
|
|
+ retType = 11;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return retType;
|
|
|
|
+ }
|
|
|
|
+ /**
|
|
|
|
+ * 获取量表结构
|
|
|
|
+ *
|
|
|
|
+ * @param conceptId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public ConceptScaleDTO getScaleStructure(ScaleVO scaleVO, Long conceptId) {
|
|
|
|
+ ConceptScaleDTO retDTO = new ConceptScaleDTO();
|
|
|
|
+ List<KlConceptScale> scaleList = klConceptScaleFacade.list(new QueryWrapper<KlConceptScale>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("concept_id", conceptId)
|
|
|
|
+ .orderByAsc("text_type", "group_num", "order_no"));
|
|
|
|
+ if (ListUtil.isEmpty(scaleList)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ List<ConceptScaleDetailDTO> scaleDetailList = BeanUtil.listCopyTo(scaleList, ConceptScaleDetailDTO.class);
|
|
|
|
+ if (null != scaleVO) {
|
|
|
|
+ List<String> codeList = new ArrayList<>();
|
|
|
|
+ codeList = scaleDetailList.stream().filter(s -> StringUtils.isNotBlank(s.getRuleCode())).map(ac -> ac.getRuleCode()).collect(Collectors.toList());
|
|
|
|
+ scaleVO.setCodeList(codeList);
|
|
|
|
+ ScaleDTO scaleDTO = klRegulationBaseFacade.process(scaleVO);
|
|
|
|
+ List<String> codeListNew = scaleDTO.getCodeList(); //Arrays.asList("100001", "100013");
|
|
|
|
+ if (ListUtil.isNotEmpty(codeListNew)) {
|
|
|
|
+ for (String str : codeListNew) {
|
|
|
|
+ for (ConceptScaleDetailDTO data2 : scaleDetailList) {
|
|
|
|
+ if (null != data2.getRuleCode() && data2.getRuleCode().equals(str)) {
|
|
|
|
+ data2.setMatch(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (null != scaleVO) {
|
|
|
|
+ List<String> codeList = new ArrayList<>();
|
|
|
|
+ codeList = scaleDetailList.stream().map(ac -> ac.getRuleCode()).collect(Collectors.toList());
|
|
|
|
+ scaleVO.setCodeList(codeList);
|
|
|
|
+ ScaleDTO scaleDTO = klRegulationBaseFacade.process(scaleVO);
|
|
|
|
+ List<String> codeListNew = scaleDTO.getCodeList(); //Arrays.asList("100001", "100013");
|
|
|
|
+ if (ListUtil.isNotEmpty(codeListNew)) {
|
|
|
|
+ for (String str : codeListNew) {
|
|
|
|
+ for (ConceptScaleDetailDTO data2 : scaleDetailList) {
|
|
|
|
+ if (null != data2.getRuleCode() && data2.getRuleCode().equals(str)) {
|
|
|
|
+ data2.setMatch(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<Long, List<ConceptScaleDetailDTO>> parentMap
|
|
|
|
+ = scaleDetailList.stream().sorted(Comparator.comparing(ConceptScaleDetailDTO::getTextType).thenComparing(ConceptScaleDetailDTO::getGroupNum)).collect(Collectors.groupingBy(ConceptScaleDetailDTO::getParentId));
|
|
|
|
+ List<ConceptScaleDetailDTO> retScacleDetailList = parentMap.get(-1L);
|
|
|
|
+ if (ListUtil.isEmpty(retScacleDetailList)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ List<ConceptScaleSubDTO> retList = Lists.newLinkedList();
|
|
|
|
+ Map<Integer, List<ConceptScaleDetailDTO>> groupMap
|
|
|
|
+ = retScacleDetailList.stream().collect(Collectors.groupingBy(ConceptScaleDetailDTO::getGroupNum));
|
|
|
|
+ for (Map.Entry<Integer, List<ConceptScaleDetailDTO>> entry : groupMap.entrySet()) {
|
|
|
|
+ ConceptScaleSubDTO subItem = new ConceptScaleSubDTO();
|
|
|
|
+ subItem.setGroupNum(entry.getKey());
|
|
|
|
+ subItem.setDetailList(entry.getValue());
|
|
|
|
+ retList.add(subItem);
|
|
|
|
+ }
|
|
|
|
+ for (ConceptScaleSubDTO subDTO : retList) {
|
|
|
|
+ scaleRecursion(subDTO, parentMap);
|
|
|
|
+ }
|
|
|
|
+ //排序
|
|
|
|
+ for (ConceptScaleSubDTO data : retList) {
|
|
|
|
+ if (ListUtil.isNotEmpty(data.getDetailList())) {
|
|
|
|
+ for (ConceptScaleDetailDTO datasub : data.getDetailList()) {
|
|
|
|
+ if (ListUtil.isNotEmpty(datasub.getSubList())) {
|
|
|
|
+ datasub.setSubList(datasub.getSubList().stream().sorted(Comparator.comparing(ConceptScaleSubDTO::getGroupNum)).collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ retDTO.setScaleDetails(retList);
|
|
|
|
+ return retDTO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 递归
|
|
|
|
+ *
|
|
|
|
+ * @param item
|
|
|
|
+ * @param treeMap
|
|
|
|
+ */
|
|
|
|
+ public ConceptScaleSubDTO scaleRecursion(ConceptScaleSubDTO item,
|
|
|
|
+ Map<Long, List<ConceptScaleDetailDTO>> treeMap) {
|
|
|
|
+ List<ConceptScaleDetailDTO> list = item.getDetailList();
|
|
|
|
+ if (ListUtil.isNotEmpty(list)) {
|
|
|
|
+ for (ConceptScaleDetailDTO detail : list) {
|
|
|
|
+ List<ConceptScaleDetailDTO> subDetailList = treeMap.get(detail.getId());
|
|
|
|
+ if (ListUtil.isNotEmpty(subDetailList)) {
|
|
|
|
+ Map<Integer, List<ConceptScaleDetailDTO>> subMap
|
|
|
|
+ = subDetailList.stream().collect(Collectors.groupingBy(ConceptScaleDetailDTO::getGroupNum));
|
|
|
|
+ List<ConceptScaleSubDTO> subList = Lists.newLinkedList();
|
|
|
|
+ for (Map.Entry<Integer, List<ConceptScaleDetailDTO>> subEntry : subMap.entrySet()) {
|
|
|
|
+ ConceptScaleSubDTO subDTO = new ConceptScaleSubDTO();
|
|
|
|
+ subDTO.setGroupNum(subEntry.getKey());
|
|
|
|
+ subDTO.setDetailList(subEntry.getValue());
|
|
|
|
+ scaleRecursion(subDTO, treeMap);
|
|
|
|
+ subList.add(subDTO);
|
|
|
|
+ }
|
|
|
|
+ detail.setSubList(subList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return item;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|