|
@@ -13,10 +13,12 @@ import com.diagbot.dto.StaticKnowledgeDTO;
|
|
|
import com.diagbot.entity.DiseaseConfig;
|
|
|
import com.diagbot.entity.DrugConfig;
|
|
|
import com.diagbot.entity.LisConfig;
|
|
|
+import com.diagbot.entity.NurseConfig;
|
|
|
import com.diagbot.entity.OperationConfig;
|
|
|
import com.diagbot.entity.PacsConfig;
|
|
|
import com.diagbot.entity.ResultStaticInfo;
|
|
|
import com.diagbot.entity.ResultStaticKnowledge;
|
|
|
+import com.diagbot.entity.ScaleConfig;
|
|
|
import com.diagbot.enums.ConceptTypeEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.enums.MatchSourceEnum;
|
|
@@ -35,8 +37,8 @@ import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.ConceptVO;
|
|
|
import com.diagbot.vo.ResultStaticPageVO;
|
|
|
import com.diagbot.vo.RunningInfoVO;
|
|
|
+import com.diagbot.vo.StaticKnowledgeListVO;
|
|
|
import com.diagbot.vo.StaticKnowledgeTestVO;
|
|
|
-import com.diagbot.vo.StaticKnowledgeVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
@@ -47,6 +49,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -210,30 +213,44 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
|
|
|
//验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .filter(i -> StringUtil.isBlank(i.getHisDetailName()))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(3);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1, 2 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap_detail = new HashMap<>();
|
|
|
+ List<String> conceptNames_details = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getHisDetailName()))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ staticKnowledgeListVO.setType(4);
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames_details);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO_detail = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO_detail)) {
|
|
|
+ staticMap_detail = checkRespDTO_detail.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
for (ResultStaticKnowledge result : mappingList) {
|
|
|
+ //静态知识是否存在
|
|
|
if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
- StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
|
|
|
- staticKnowledgeVO.setName(result.getName());
|
|
|
- if (StringUtil.isBlank(result.getHisDetailName())) {
|
|
|
- staticKnowledgeVO.setType(3);
|
|
|
+ if (StringUtil.isBlank(result.getHisDetailName())
|
|
|
+ && staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else if (StringUtil.isNotBlank(result.getHisDetailName())
|
|
|
+ && staticMap_detail.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
} else {
|
|
|
- staticKnowledgeVO.setType(4);
|
|
|
- }
|
|
|
- staticKnowledgeVO.setContentTypes(Arrays.asList(new Integer[] { 1, 2 }));
|
|
|
- try {
|
|
|
- StaticKnowledgeDTO staticKnowledgeDTO = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
|
|
|
- if (null != staticKnowledgeDTO
|
|
|
- && null != staticKnowledgeDTO.getDetails()
|
|
|
- && staticKnowledgeDTO.getDetails().size() > 0) {
|
|
|
- result.setHasStaticKnowledge(1);
|
|
|
- } else {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- }
|
|
|
- } catch (CommonException e) {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- } catch (Exception e) {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
}
|
|
@@ -299,13 +316,6 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //重复数据过滤
|
|
|
- /*pacsConfigList = pacsConfigList
|
|
|
- .stream()
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());*/
|
|
|
-
|
|
|
-
|
|
|
// 已存在数据
|
|
|
Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
= mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Pacs.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
@@ -375,27 +385,26 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
|
|
|
//验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(5);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1, 2 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
for (ResultStaticKnowledge result : mappingList) {
|
|
|
//静态知识是否存在
|
|
|
if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
- StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
|
|
|
- staticKnowledgeVO.setName(result.getName());
|
|
|
- staticKnowledgeVO.setType(5);
|
|
|
- staticKnowledgeVO.setContentTypes(Arrays.asList(new Integer[] { 1, 2 }));
|
|
|
- try {
|
|
|
- StaticKnowledgeDTO staticKnowledgeDTO = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
|
|
|
- if (null != staticKnowledgeDTO
|
|
|
- && null != staticKnowledgeDTO.getDetails()
|
|
|
- && staticKnowledgeDTO.getDetails().size() > 0) {
|
|
|
- result.setHasStaticKnowledge(1);
|
|
|
- } else {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- }
|
|
|
- } catch (CommonException e) {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- } catch (Exception e) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
}
|
|
@@ -461,13 +470,6 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //重复数据过滤
|
|
|
- /*drugConfigList = drugConfigList
|
|
|
- .stream()
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());*/
|
|
|
-
|
|
|
-
|
|
|
// 已存在数据
|
|
|
Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
= mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Drug.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
@@ -538,27 +540,26 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
|
|
|
//验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(2);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
for (ResultStaticKnowledge result : mappingList) {
|
|
|
//静态知识是否存在
|
|
|
if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
- StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
|
|
|
- staticKnowledgeVO.setName(result.getName());
|
|
|
- staticKnowledgeVO.setType(2);
|
|
|
- staticKnowledgeVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
- try {
|
|
|
- StaticKnowledgeDTO staticKnowledgeDTO = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
|
|
|
- if (null != staticKnowledgeDTO
|
|
|
- && null != staticKnowledgeDTO.getDetails()
|
|
|
- && staticKnowledgeDTO.getDetails().size() > 0) {
|
|
|
- result.setHasStaticKnowledge(1);
|
|
|
- } else {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- }
|
|
|
- } catch (CommonException e) {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- } catch (Exception e) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
}
|
|
@@ -597,6 +598,8 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
Long hospitalId = testVO.getHospitalId();
|
|
|
Date now = DateUtil.now();
|
|
|
|
|
|
+ System.out.println("读取excel文件开始时间:" + DateUtil.now());
|
|
|
+
|
|
|
//从Excel读取数据
|
|
|
List<DiseaseConfig> diseaseConfigList = Lists.newLinkedList();
|
|
|
try {
|
|
@@ -609,6 +612,7 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请导入正确的文件格式");
|
|
|
}
|
|
|
}
|
|
|
+ System.out.println("读取excel文件结束时间:" + DateUtil.now());
|
|
|
|
|
|
Integer totleNum = 0;
|
|
|
if (ListUtil.isNotEmpty(diseaseConfigList)) {
|
|
@@ -624,17 +628,11 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //重复数据过滤
|
|
|
- /*diseaseConfigList = diseaseConfigList
|
|
|
- .stream()
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());*/
|
|
|
-
|
|
|
-
|
|
|
// 已存在数据
|
|
|
Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
= mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Disease.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
|
|
|
|
+ System.out.println("术语映射开始时间:" + DateUtil.now());
|
|
|
//术语映射
|
|
|
for (DiseaseConfig config : diseaseConfigList) {
|
|
|
ResultStaticKnowledge result = new ResultStaticKnowledge();
|
|
@@ -670,6 +668,8 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
mappingList.add(result);
|
|
|
}
|
|
|
}
|
|
|
+ System.out.println("术语映射结束时间:" + DateUtil.now());
|
|
|
+ System.out.println("标准术语校验开始时间:" + DateUtil.now());
|
|
|
|
|
|
//标准术语校验
|
|
|
List<String> uniqueNames = mappingList.stream()
|
|
@@ -699,29 +699,32 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ System.out.println("标准术语校验结束时间:" + DateUtil.now());
|
|
|
+
|
|
|
|
|
|
//验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(1);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1, 3 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ System.out.println("关联静态信息开始时间:" + DateUtil.now());
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ System.out.println("关联静态信息结束时间:" + DateUtil.now());
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
for (ResultStaticKnowledge result : mappingList) {
|
|
|
//静态知识是否存在
|
|
|
if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
- StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
|
|
|
- staticKnowledgeVO.setName(result.getName());
|
|
|
- staticKnowledgeVO.setType(1);
|
|
|
- staticKnowledgeVO.setContentTypes(Arrays.asList(new Integer[] { 1, 3 }));
|
|
|
- try {
|
|
|
- StaticKnowledgeDTO staticKnowledgeDTO = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
|
|
|
- if (null != staticKnowledgeDTO
|
|
|
- && null != staticKnowledgeDTO.getDetails()
|
|
|
- && staticKnowledgeDTO.getDetails().size() > 0) {
|
|
|
- result.setHasStaticKnowledge(1);
|
|
|
- } else {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- }
|
|
|
- } catch (CommonException e) {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- } catch (Exception e) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
}
|
|
@@ -729,6 +732,7 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
saveList.add(result);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//保存
|
|
|
saveResult(saveList, testVO, totleNum);
|
|
|
return true;
|
|
@@ -788,13 +792,6 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //重复数据过滤
|
|
|
- /* operationConfigList = operationConfigList
|
|
|
- .stream()
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());*/
|
|
|
-
|
|
|
-
|
|
|
// 已存在数据
|
|
|
Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
= mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Operation.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
@@ -865,27 +862,180 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
}
|
|
|
|
|
|
//验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(7);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
for (ResultStaticKnowledge result : mappingList) {
|
|
|
//静态知识是否存在
|
|
|
if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
- StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
|
|
|
- staticKnowledgeVO.setName(result.getName());
|
|
|
- staticKnowledgeVO.setType(7);
|
|
|
- staticKnowledgeVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
- try {
|
|
|
- StaticKnowledgeDTO staticKnowledgeDTO = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
|
|
|
- if (null != staticKnowledgeDTO
|
|
|
- && null != staticKnowledgeDTO.getDetails()
|
|
|
- && staticKnowledgeDTO.getDetails().size() > 0) {
|
|
|
- result.setHasStaticKnowledge(1);
|
|
|
- } else {
|
|
|
- result.setHasStaticKnowledge(0);
|
|
|
- result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- }
|
|
|
- } catch (CommonException e) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
- } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saveList.add(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存
|
|
|
+ saveResult(saveList, testVO, totleNum);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 量表静态知识测试
|
|
|
+ *
|
|
|
+ * @param file
|
|
|
+ * @param testVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean scaleTest(MultipartFile file, StaticKnowledgeTestVO testVO) {
|
|
|
+ RunningInfoVO runningInfoVO = new RunningInfoVO();
|
|
|
+ runningInfoVO.setCaseId(testVO.getCaseId());
|
|
|
+ runningInfoVO.setHospitalId(testVO.getHospitalId());
|
|
|
+
|
|
|
+ String fileName = file.getOriginalFilename();
|
|
|
+ if (!(fileName.endsWith(".xls") || fileName.endsWith(".xlsx"))) {
|
|
|
+ //终止运行
|
|
|
+ runningInfoVO.setStatus(0);
|
|
|
+ runningInfoFacade.updateStatus(runningInfoVO);
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请导入正确的文件类型");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ResultStaticKnowledge> mappingList = Lists.newLinkedList();
|
|
|
+ List<ResultStaticKnowledge> saveList = Lists.newLinkedList();
|
|
|
+ Long hospitalId = testVO.getHospitalId();
|
|
|
+ Date now = DateUtil.now();
|
|
|
+
|
|
|
+ //从Excel读取数据
|
|
|
+ List<ScaleConfig> scaleConfigList = Lists.newLinkedList();
|
|
|
+ try {
|
|
|
+ scaleConfigList = ExcelUtils.importExcel(file, 0, 1, ScaleConfig.class);
|
|
|
+ } catch (CommonException e) {
|
|
|
+ if (!e.getErrorCode().equals(CommonErrorCode.OK)) {
|
|
|
+ //终止运行
|
|
|
+ runningInfoVO.setStatus(0);
|
|
|
+ runningInfoFacade.updateStatus(runningInfoVO);
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请导入正确的文件格式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer totleNum = 0;
|
|
|
+ if (ListUtil.isNotEmpty(scaleConfigList)) {
|
|
|
+ totleNum = scaleConfigList.size();
|
|
|
+ } else {
|
|
|
+ scaleConfigList = Lists.newLinkedList();
|
|
|
+ }
|
|
|
+
|
|
|
+ //数据预处理
|
|
|
+ for (ScaleConfig config : scaleConfigList) {
|
|
|
+ if (StringUtil.isNotBlank(config.getHisName())) {
|
|
|
+ config.setHisName(config.getHisName().trim());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已存在数据
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Scale.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
|
+
|
|
|
+ //术语映射
|
|
|
+ for (ScaleConfig config : scaleConfigList) {
|
|
|
+ ResultStaticKnowledge result = new ResultStaticKnowledge();
|
|
|
+ result.setGmtCreate(now);
|
|
|
+ result.setGmtModified(now);
|
|
|
+ result.setMessage("");
|
|
|
+
|
|
|
+ if (StringUtil.isBlank(config.getHisName())) {
|
|
|
+ result.setMessage(result.getMessage() + "医院术语不允许为空;");
|
|
|
+ mappingList.add(result);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ result.setHisName(config.getHisName());
|
|
|
+
|
|
|
+ if (hisConfigMap.containsKey(result.getHisName())) {
|
|
|
+ Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
|
|
|
+ if (subMap != null && subMap.size() > 0) {
|
|
|
+ for (String subKey : subMap.keySet()) {
|
|
|
+ ResultStaticKnowledge subResult = new ResultStaticKnowledge();
|
|
|
+ BeanUtil.copyProperties(result, subResult);
|
|
|
+ subResult.setName(subKey);
|
|
|
+ subResult.setHasStandName(1);
|
|
|
+ mappingList.add(subResult);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ mappingList.add(result);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ mappingList.add(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //标准术语校验
|
|
|
+ List<String> uniqueNames = mappingList.stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()))
|
|
|
+ .map(i -> i.getName())
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ ConceptVO conceptVO = new ConceptVO();
|
|
|
+ conceptVO.setSource(MatchSourceEnum.StandWord.getKey());
|
|
|
+ conceptVO.setStatus(StatusEnum.Enable.getKey());
|
|
|
+ conceptVO.setNames(uniqueNames);
|
|
|
+ conceptVO.setType(ConceptTypeEnum.Scale.getKey());
|
|
|
+ RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
|
|
|
+ List<String> names = Lists.newLinkedList();
|
|
|
+ if (RespDTOUtil.respIsOK(respDTO)) {
|
|
|
+ names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ for (ResultStaticKnowledge result : mappingList) {
|
|
|
+ if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ if (names.contains(result.getName())) {
|
|
|
+ result.setHasStandName(1);
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(8);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
+ for (ResultStaticKnowledge result : mappingList) {
|
|
|
+ //静态知识是否存在
|
|
|
+ if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
result.setHasStaticKnowledge(0);
|
|
|
result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
}
|
|
@@ -898,6 +1048,159 @@ public class ResultStaticKnowledgeNeoFacade extends ResultStaticKnowledgeService
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 护理静态知识测试
|
|
|
+ *
|
|
|
+ * @param file
|
|
|
+ * @param testVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean nurseTest(MultipartFile file, StaticKnowledgeTestVO testVO) {
|
|
|
+ RunningInfoVO runningInfoVO = new RunningInfoVO();
|
|
|
+ runningInfoVO.setCaseId(testVO.getCaseId());
|
|
|
+ runningInfoVO.setHospitalId(testVO.getHospitalId());
|
|
|
+
|
|
|
+ String fileName = file.getOriginalFilename();
|
|
|
+ if (!(fileName.endsWith(".xls") || fileName.endsWith(".xlsx"))) {
|
|
|
+ //终止运行
|
|
|
+ runningInfoVO.setStatus(0);
|
|
|
+ runningInfoFacade.updateStatus(runningInfoVO);
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请导入正确的文件类型");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ResultStaticKnowledge> mappingList = Lists.newLinkedList();
|
|
|
+ List<ResultStaticKnowledge> saveList = Lists.newLinkedList();
|
|
|
+ Long hospitalId = testVO.getHospitalId();
|
|
|
+ Date now = DateUtil.now();
|
|
|
+
|
|
|
+ //从Excel读取数据
|
|
|
+ List<NurseConfig> nurseConfigList = Lists.newLinkedList();
|
|
|
+ try {
|
|
|
+ nurseConfigList = ExcelUtils.importExcel(file, 0, 1, NurseConfig.class);
|
|
|
+ } catch (CommonException e) {
|
|
|
+ if (!e.getErrorCode().equals(CommonErrorCode.OK)) {
|
|
|
+ //终止运行
|
|
|
+ runningInfoVO.setStatus(0);
|
|
|
+ runningInfoFacade.updateStatus(runningInfoVO);
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请导入正确的文件格式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer totleNum = 0;
|
|
|
+ if (ListUtil.isNotEmpty(nurseConfigList)) {
|
|
|
+ totleNum = nurseConfigList.size();
|
|
|
+ } else {
|
|
|
+ nurseConfigList = Lists.newLinkedList();
|
|
|
+ }
|
|
|
+
|
|
|
+ //数据预处理
|
|
|
+ for (NurseConfig config : nurseConfigList) {
|
|
|
+ if (StringUtil.isNotBlank(config.getHisName())) {
|
|
|
+ config.setHisName(config.getHisName().trim());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已存在数据
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Nurse.getKey(), Long.valueOf(hospitalId), StatusEnum.Enable.getKey());
|
|
|
+
|
|
|
+ //术语映射
|
|
|
+ for (NurseConfig config : nurseConfigList) {
|
|
|
+ ResultStaticKnowledge result = new ResultStaticKnowledge();
|
|
|
+ result.setGmtCreate(now);
|
|
|
+ result.setGmtModified(now);
|
|
|
+ result.setMessage("");
|
|
|
+
|
|
|
+ if (StringUtil.isBlank(config.getHisName())) {
|
|
|
+ result.setMessage(result.getMessage() + "医院术语不允许为空;");
|
|
|
+ mappingList.add(result);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ result.setHisName(config.getHisName());
|
|
|
+
|
|
|
+ if (hisConfigMap.containsKey(result.getHisName())) {
|
|
|
+ Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
|
|
|
+ if (subMap != null && subMap.size() > 0) {
|
|
|
+ for (String subKey : subMap.keySet()) {
|
|
|
+ ResultStaticKnowledge subResult = new ResultStaticKnowledge();
|
|
|
+ BeanUtil.copyProperties(result, subResult);
|
|
|
+ subResult.setName(subKey);
|
|
|
+ subResult.setHasStandName(1);
|
|
|
+ mappingList.add(subResult);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ mappingList.add(result);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ mappingList.add(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //标准术语校验
|
|
|
+ List<String> uniqueNames = mappingList.stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()))
|
|
|
+ .map(i -> i.getName())
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ ConceptVO conceptVO = new ConceptVO();
|
|
|
+ conceptVO.setSource(MatchSourceEnum.StandWord.getKey());
|
|
|
+ conceptVO.setStatus(StatusEnum.Enable.getKey());
|
|
|
+ conceptVO.setNames(uniqueNames);
|
|
|
+ conceptVO.setType(ConceptTypeEnum.Nurse.getKey());
|
|
|
+ RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
|
|
|
+ List<String> names = Lists.newLinkedList();
|
|
|
+ if (RespDTOUtil.respIsOK(respDTO)) {
|
|
|
+ names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ for (ResultStaticKnowledge result : mappingList) {
|
|
|
+ if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ if (names.contains(result.getName())) {
|
|
|
+ result.setHasStandName(1);
|
|
|
+ } else {
|
|
|
+ result.setHasStandName(0);
|
|
|
+ result.setMessage(result.getMessage() + "标准术语不存在;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证静态知识
|
|
|
+ Map<String, List<StaticKnowledgeDTO>> staticMap = new HashMap<>();
|
|
|
+ List<String> conceptNames = mappingList.stream()
|
|
|
+ .filter(i -> i.getHasStandName() != null && i.getHasStandName().equals(1))
|
|
|
+ .map(ResultStaticKnowledge::getName)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ StaticKnowledgeListVO staticKnowledgeListVO = new StaticKnowledgeListVO();
|
|
|
+ staticKnowledgeListVO.setType(9);
|
|
|
+ staticKnowledgeListVO.setContentTypes(Arrays.asList(new Integer[] { 1 }));
|
|
|
+ staticKnowledgeListVO.setNames(conceptNames);
|
|
|
+ RespDTO<List<StaticKnowledgeDTO>> checkRespDTO = cdssCoreClient.getStaticKnowledgeList(staticKnowledgeListVO);
|
|
|
+ if (RespDTOUtil.respIsOK(checkRespDTO)) {
|
|
|
+ staticMap = checkRespDTO.data.stream().collect(Collectors.groupingBy(StaticKnowledgeDTO::getName));
|
|
|
+ }
|
|
|
+ for (ResultStaticKnowledge result : mappingList) {
|
|
|
+ //静态知识是否存在
|
|
|
+ if (result.getHasStandName() != null && result.getHasStandName().equals(1)) {
|
|
|
+ if (staticMap.containsKey(result.getName())) {
|
|
|
+ result.setHasStaticKnowledge(1);
|
|
|
+ } else {
|
|
|
+ result.setHasStaticKnowledge(0);
|
|
|
+ result.setMessage(result.getMessage() + "缺少静态知识;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saveList.add(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存
|
|
|
+ saveResult(saveList, testVO, totleNum);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 保存静态知识测试结果
|