Explorar o código

诊断公式拟诊校验

zhoutg %!s(int64=5) %!d(string=hai) anos
pai
achega
ac46001fdf

+ 2 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -339,6 +339,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             for (String key : map.keySet()) {
                 List<DiagnoseDetail> detail = map.get(key);
                 List<String> codeList = detail.stream().map(row -> row.getCode()).distinct().collect(Collectors.toList());
+                codeList.add("拟诊");
                 int j = 0;
                 if (ListUtil.isNotEmpty(detail)) {
                     // 判断诊断名称是否在词库中
@@ -650,6 +651,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
      */
     public void doDisFormula(DiagnoseWrapper diagnoseWrapper, CommonParam param, List<DiagnoseDetail> diagnoseDetailList, List<DiagnoseQuestion> diagnoseQuestionList) {
         List<String> codeList = diagnoseWrapper.getDisFeature().stream().map(row -> row.getCode()).distinct().collect(Collectors.toList());
+        codeList.add("拟诊");  // 添加拟诊的编码
         int i = param.getI();
         int j = param.getJ();
         // 遍历诊断公式

+ 5 - 0
knowledgeman-service/src/main/java/com/diagbot/util/DiagnoseTypeConvertUtil.java

@@ -30,6 +30,7 @@ public class DiagnoseTypeConvertUtil {
                 break;
             case Vital: // 体征 -> 体征结果
                 res.add(LexiconTypeEnum.VITAL_RESULT.getKey());
+                res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());
                 break;
             case Lis: // 化验标准词 -> 化验大项
                       // 化验关联词 -> 化验小项
@@ -40,6 +41,7 @@ public class DiagnoseTypeConvertUtil {
                     res.add(LexiconTypeEnum.LIS_DETAILS.getKey());
                 } else if (DiagnoseFieldEnum.result.getKey() == field){
                     res.add(LexiconTypeEnum.LIS_RESULTS.getKey());
+                    res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());
                 }
                 break;
             case Pacs: // 辅检标准词 -> 辅检项目
@@ -48,6 +50,7 @@ public class DiagnoseTypeConvertUtil {
                     res.add(LexiconTypeEnum.PACS_ITEMS.getKey());
                 } else if (DiagnoseFieldEnum.relation.getKey() == field){
                     res.add(LexiconTypeEnum.PACS_RESULTS.getKey());
+                    res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());
                 }
                 break;
             case Antidiastole: // 鉴别诊断 -> 诊断
@@ -55,9 +58,11 @@ public class DiagnoseTypeConvertUtil {
                 break;
             case History: // 病史 -> 诊断
                 res.add(LexiconTypeEnum.DIAGNOSIS.getKey());
+                res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());
                 break;
             case Cause: // 诱因 -> 诱因
                 res.add(LexiconTypeEnum.CAUSE.getKey());
+                res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());
                 break;
             case CourseOfDisease:  // 病程 -> 诊断依据其他
                 res.add(LexiconTypeEnum.OTHER_DIAGNOSTIC_CRITERIA.getKey());

+ 30 - 4
knowledgeman-service/src/main/java/com/diagbot/util/VerifyUtil.java

@@ -32,10 +32,15 @@ public class VerifyUtil {
 
 
     public static void main(String[] args) {
-    	List<String> list = new ArrayList<>();
-    	list.add("1.1");
-    	list.add("1.2");
-		checkCodeEquation(list, "(1.1/1.2)任一+");
+    	String str = "1.1+拟诊";
+    	List<String> code = new ArrayList<>();
+    	code.add("拟诊");
+    	code.add("1.1");
+		System.out.println(verifyFormula(code, str));
+//    	List<String> list = new ArrayList<>();
+//    	list.add("1.1");
+//    	list.add("1.2");
+//		checkCodeEquation(list, "(1.1/1.2)任一+");
     }
 
     /**
@@ -195,6 +200,11 @@ public class VerifyUtil {
 			if (verifyValue(s)) {
 				return errMsg;
 			}
+
+			// 6、校验拟诊是否放首位
+			if (!verifyDiseaseType(s)) {
+				return errMsg;
+			}
 		} catch (Exception e) {
 			e.printStackTrace();
 			return errMsg;
@@ -334,4 +344,20 @@ public class VerifyUtil {
 	}
 
 
+	/**
+	 * 诊断类型(拟诊)匹配,拟诊两个字只能放首位
+	 * @param s
+	 * @return
+	 */
+	public static boolean verifyDiseaseType(String s) {
+		int index = s.indexOf("拟诊");
+		if (index > 0) {
+			return false;
+		}
+		index = s.indexOf( "拟诊", index+1); // 再次校验,防止出现多个拟诊
+		if (index > 0) {
+			return false;
+		}
+		return true;
+	}
 }