|
@@ -13,13 +13,11 @@ import com.lantone.qc.pub.model.label.DiagLabel;
|
|
|
import com.lantone.qc.pub.model.label.PastLabel;
|
|
|
import com.lantone.qc.pub.model.label.PresentLabel;
|
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @ClassName : BEH0011
|
|
@@ -36,6 +34,9 @@ public class BEH0011 extends QCCatalogue {
|
|
|
@Autowired
|
|
|
ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
|
|
|
|
|
|
+ private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
|
|
|
+ private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
|
|
|
+
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
if (inputInfo.getBeHospitalizedDoc() == null) {
|
|
|
status.set("0");
|
|
@@ -64,14 +65,8 @@ public class BEH0011 extends QCCatalogue {
|
|
|
}
|
|
|
/* 现病史中一般情况之后的疾病名称 */
|
|
|
if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
|
|
|
- if (presentDiag.getHospitalDiagName().contains("心")
|
|
|
- || presentDiag.getHospitalDiagName().contains("脑萎缩")
|
|
|
- || presentDiag.getHospitalDiagName().contains("慢性")
|
|
|
- || presentDiag.getHospitalDiagName().contains("血糖")) {
|
|
|
- if (!presentDiag.getHospitalDiagName().contains("心脏病")
|
|
|
- && !presentDiag.getHospitalDiagName().contains("低血糖")) {
|
|
|
- presentPastDiags.add(presentDiag.getHospitalDiagName());
|
|
|
- }
|
|
|
+ if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
|
|
|
+ presentPastDiags.add(presentDiag.getHospitalDiagName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -82,6 +77,35 @@ public class BEH0011 extends QCCatalogue {
|
|
|
if (pastLabel != null) {
|
|
|
List<Diag> pastDiags = pastLabel.getDiags();
|
|
|
addDiagHospitalName(presentPastDiags, pastDiags);
|
|
|
+ } else { //结构化数据
|
|
|
+ List<Diag> pastDiags = new ArrayList<>();
|
|
|
+
|
|
|
+ Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
|
|
|
+ String a1 = structureMap.get("高血压");
|
|
|
+ if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
|
|
|
+ Diag diag = new Diag();
|
|
|
+ diag.setName("高血压");
|
|
|
+ diag.setHospitalDiagName("高血压");
|
|
|
+ if (!isHave(presentPastDiags, "高血压")) {
|
|
|
+ pastDiags.add(diag);
|
|
|
+ }
|
|
|
+ }
|
|
|
+// a1 = structureMap.get("心脏病");
|
|
|
+// if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
|
|
|
+// Diag diag = new Diag();
|
|
|
+// diag.setName("心脏病");
|
|
|
+// pastDiags.add(diag);
|
|
|
+// }
|
|
|
+ a1 = structureMap.get("糖尿病");
|
|
|
+ if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
|
|
|
+ Diag diag = new Diag();
|
|
|
+ diag.setName("糖尿病");
|
|
|
+ diag.setHospitalDiagName("糖尿病");
|
|
|
+ if (!isHave(presentPastDiags, "糖尿病")) {
|
|
|
+ pastDiags.add(diag);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addDiagHospitalName(presentPastDiags, pastDiags);
|
|
|
}
|
|
|
/* 取初步诊断中疾病名称 */
|
|
|
List<String> initDiags = new ArrayList<>();
|
|
@@ -124,14 +148,8 @@ public class BEH0011 extends QCCatalogue {
|
|
|
if (pastDiag.getNegative() != null) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (pastDiag.getHospitalDiagName().contains("心")
|
|
|
- || pastDiag.getHospitalDiagName().contains("脑萎缩")
|
|
|
- || pastDiag.getHospitalDiagName().contains("慢性")
|
|
|
- || pastDiag.getHospitalDiagName().contains("血糖")) {
|
|
|
- if (!pastDiag.getHospitalDiagName().contains("心脏病")
|
|
|
- && !pastDiag.getHospitalDiagName().contains("低血糖")) {
|
|
|
- presentPastDiag.add(pastDiag.getHospitalDiagName());
|
|
|
- }
|
|
|
+ if (isContains(pastDiag.getHospitalDiagName()) && !isFilter(pastDiag.getHospitalDiagName())) {
|
|
|
+ presentPastDiag.add(pastDiag.getHospitalDiagName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -144,6 +162,33 @@ public class BEH0011 extends QCCatalogue {
|
|
|
presentPastDiag.add(pastDiag.getHospitalDiagName());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private boolean isHave(Set<String> presentDiag, String diagName) {
|
|
|
+ for (String haveDiag : presentDiag) {
|
|
|
+ if (haveDiag.contains(diagName) || diagName.contains(haveDiag)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isContains(String diagName) {
|
|
|
+ for (String c : containList) {
|
|
|
+ if (diagName.contains(c)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isFilter(String diagName) {
|
|
|
+ for (String c : filterList) {
|
|
|
+ if (diagName.contains(c)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
/* 原逻辑
|
|
|
Map<String, Map<String, Object>> diagMap = specialStorageUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
|
|
|
String initDiagText = CatalogueUtil.removeSpecialChar(initialDiagLabel.getText());
|