|
@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -33,6 +34,9 @@ public class BEH02980 extends QCCatalogue {
|
|
|
@Autowired
|
|
|
ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
|
|
|
|
|
|
+ private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
|
|
|
+ private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
|
|
|
+
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
status.set("0");
|
|
|
PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
|
|
@@ -41,10 +45,42 @@ public class BEH02980 extends QCCatalogue {
|
|
|
|
|
|
List<String> pos_diags = new ArrayList<>();
|
|
|
List<String> neg_diags = new ArrayList<>();
|
|
|
-
|
|
|
+ //现病史需要取一般情况之后疾病
|
|
|
if (presentLabel != null) {
|
|
|
- extract_diags(presentLabel.getDiags(), pos_diags, neg_diags);
|
|
|
+ List<GeneralDesc> generals = presentLabel.getGenerals();
|
|
|
+ if (generals.size() > 0) {
|
|
|
+ String presentText = presentLabel.getText();
|
|
|
+ List<Diag> presentDiags = presentLabel.getDiags();
|
|
|
+ /* 取现病史中一般情况之后的疾病名称 */
|
|
|
+ if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
|
|
|
+ String lastGeneral = generals.get(generals.size() - 1).getName();
|
|
|
+ int lastGeneralIndex = presentText.indexOf(lastGeneral);
|
|
|
+ for (Diag presentDiag : presentDiags) {
|
|
|
+ if (presentDiag.getNegative() != null || presentDiag.getHospitalDiagName().contains("否认")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ /* 现病史中一般情况之后的疾病名称 */
|
|
|
+ if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
|
|
|
+ if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
|
|
|
+ String dgname = presentDiag.getHospitalDiagName();
|
|
|
+ if (presentDiag.getNegative()==null) {
|
|
|
+ if (!pos_diags.contains(dgname)) {
|
|
|
+ pos_diags.add(dgname);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (!neg_diags.contains(dgname)) {
|
|
|
+ neg_diags.add(dgname);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
if (pastLabel != null) {
|
|
|
extract_diags(pastLabel.getDiags(), pos_diags, neg_diags);
|
|
|
} else {
|
|
@@ -132,4 +168,22 @@ public class BEH02980 extends QCCatalogue {
|
|
|
return dgs;
|
|
|
}
|
|
|
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|