|
@@ -8,12 +8,7 @@ import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
import com.diagbot.enums.LexiconExtEnum;
|
|
|
import com.diagbot.service.KlConceptService;
|
|
|
-import com.diagbot.util.EntityUtil;
|
|
|
-import com.diagbot.util.ExcelUtils;
|
|
|
-import com.diagbot.util.ListUtil;
|
|
|
-import com.diagbot.util.RegexUtil;
|
|
|
-import com.diagbot.util.StringUtil;
|
|
|
-import com.diagbot.util.VerifyUtil;
|
|
|
+import com.diagbot.util.*;
|
|
|
import com.diagbot.vo.DiagnoseImportVO;
|
|
|
import com.diagbot.vo.ImportDiagnoseResVO;
|
|
|
import com.diagbot.vo.ImportDiagnoseVO;
|
|
@@ -94,6 +89,7 @@ public class KlDiagnoseImportFacade {
|
|
|
public Boolean verifyData(MultipartFile file, DiagnoseImportVO diagnoseImportVO, Map<String, Object> diagMessage, List<ImportDiagnoseResVO> allData) {
|
|
|
Boolean allFlag = true;
|
|
|
List<String> diagtypes = Lists.newArrayList("拟诊", "确诊", "警惕");
|
|
|
+ List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病","人群","辅助检查结果");
|
|
|
// 获取标准词库Map
|
|
|
Map<String, KlConcept> concept_map = getConceptMap();
|
|
|
|
|
@@ -144,10 +140,10 @@ public class KlDiagnoseImportFacade {
|
|
|
|
|
|
//处理公式(确诊)
|
|
|
List<String> orderList = processFormula(curData, diagtypes);
|
|
|
- dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map);
|
|
|
+ dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map,splitType);
|
|
|
// 数据赋值
|
|
|
if (ListUtil.isEmpty(currentErrMsg)) {
|
|
|
- curData = dealImportDiagnose(diagtypes, curData, concept_map);
|
|
|
+ curData = dealImportDiagnose(diagtypes, curData, concept_map,splitType);
|
|
|
// 添加到正确数据列表
|
|
|
importDiagnoseResVO.setImportDiagnoseVOList(curData);
|
|
|
allData.add(importDiagnoseResVO);
|
|
@@ -235,7 +231,7 @@ public class KlDiagnoseImportFacade {
|
|
|
* @param concept_map
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map) {
|
|
|
+ private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map,List<String> splitType) {
|
|
|
for (ImportDiagnoseVO idv : importDiagnoseVOS) {
|
|
|
String type = idv.getType();
|
|
|
String orderNo = idv.getOrderNo();
|
|
@@ -243,19 +239,30 @@ public class KlDiagnoseImportFacade {
|
|
|
if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (!type.contains("正则") && !diagtypes.contains(type)) {
|
|
|
- // TODO
|
|
|
+ if (!type.contains("正则") && !diagtypes.contains(type) && splitType.contains(type)) {
|
|
|
// KlConcept klConcept = concept_map.get(rule + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
|
|
|
// if (klConcept != null) {
|
|
|
// idv.setConceptId(klConcept.getId());
|
|
|
// }
|
|
|
+ List<String> splits = CoreUtil.getSplit(rule);
|
|
|
+ if(ListUtil.isNotEmpty(splits)){
|
|
|
+ List<Long> conceptIds = Lists.newArrayList();
|
|
|
+ for (String standName:splits) {
|
|
|
+ KlConcept klConcept = concept_map.get(standName + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
|
|
|
+ if(klConcept != null){
|
|
|
+ conceptIds.add(klConcept.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ idv.setConceptId(conceptIds);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
return importDiagnoseVOS;
|
|
|
}
|
|
|
|
|
|
//数据及格式校验
|
|
|
- private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map) {
|
|
|
+ private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map,List<String> splitType) {
|
|
|
//list元素计数
|
|
|
Map<String, Long> orderNumMap = orderNums.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
for (Map.Entry<String, Long> on : orderNumMap.entrySet()) {
|
|
@@ -285,10 +292,18 @@ public class KlDiagnoseImportFacade {
|
|
|
continue;
|
|
|
}
|
|
|
int key = anEnum.getKey();
|
|
|
- if (!type.contains("正则") &&
|
|
|
+ if (!type.contains("正则") && splitType.contains(type)){
|
|
|
+ List<String> splits = CoreUtil.getSplit(rule);
|
|
|
+ for (String standName:splits) {
|
|
|
+ if(!concept_map.containsKey(standName + "_" + String.valueOf(key))){
|
|
|
+ currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, standName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*if (!type.contains("正则") &&
|
|
|
!concept_map.containsKey(rule + "_" + String.valueOf(key))) {
|
|
|
currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, rule));
|
|
|
- }
|
|
|
+ }*/
|
|
|
String name = DiagnoseLexiconTypeEnum.getName(key);
|
|
|
Boolean regexRes = RegexUtil.getRegexRes(orderNo, name + "\\d+");
|
|
|
if (!regexRes) {
|