|
@@ -0,0 +1,94 @@
|
|
|
+package com.lantone.qc.kernel.catalogue.behospitalized;
|
|
|
+
|
|
|
+import com.google.common.collect.ImmutableMap;
|
|
|
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
|
+import com.lantone.qc.pub.model.InputInfo;
|
|
|
+import com.lantone.qc.pub.model.OutputInfo;
|
|
|
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
|
|
|
+import com.lantone.qc.pub.model.entity.Diag;
|
|
|
+import com.lantone.qc.pub.model.label.DiagLabel;
|
|
|
+import com.lantone.qc.pub.model.label.VitalLabelSpecial;
|
|
|
+import com.lantone.qc.pub.util.StringUtil;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName : BEH03051
|
|
|
+ * @Description : 与诊断相关的主要体征未描述
|
|
|
+ * @Author : 胡敬
|
|
|
+ * @Date: 2020-07-28 09:52
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class BEH03051 extends QCCatalogue {
|
|
|
+ /**
|
|
|
+ * 暂时先整理出以下诊断的体征
|
|
|
+ * 用|分隔。
|
|
|
+ * |前面的是且的关系,每个都要有
|
|
|
+ * |后面的是或的关系,有一个就可以
|
|
|
+ */
|
|
|
+
|
|
|
+ Map<String, String> diagVital = ImmutableMap.<String, String>builder()
|
|
|
+ .put("急性阑尾炎", "右下腹/反跳痛|麦氏点/麦氏点压痛/阑尾点")
|
|
|
+ .put("冠状动脉粥样硬化性心脏病", "心率/律|瓣膜/二尖瓣/三尖瓣/主动脉瓣")
|
|
|
+ .build();
|
|
|
+
|
|
|
+ public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
+ status.set("0");
|
|
|
+ if (inputInfo.getBeHospitalizedDoc() == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
|
|
|
+ DiagLabel initialDiagLabel = beHospitalizedDoc.getInitialDiagLabel();
|
|
|
+ VitalLabelSpecial vitalLabelSpecial = beHospitalizedDoc.getVitalLabelSpecial();
|
|
|
+ if (initialDiagLabel == null || vitalLabelSpecial == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String vitalSpecialText = vitalLabelSpecial.getText();
|
|
|
+ if (StringUtil.isBlank(vitalSpecialText)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Diag> initDiags = initialDiagLabel.getDiags();
|
|
|
+ List<String> initDiagStrs = initDiags
|
|
|
+ .stream()
|
|
|
+ .map(Diag::getHospitalDiagName)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (initDiagStrs.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (String initDiagStr : initDiagStrs) {
|
|
|
+ if (diagVital.containsKey(initDiagStr)) {
|
|
|
+ String vitals = diagVital.get(initDiagStr);
|
|
|
+ String[] vitalArr = vitals.split("\\|");
|
|
|
+ String vitalAnd = vitalArr[0];//体征且的关系,每个必须有
|
|
|
+ String vitalOr = vitalArr[1];//体征或的关系,有一个就行
|
|
|
+ for (String vital : vitalAnd.split("/")) {
|
|
|
+ if (!vitalSpecialText.contains(vital)) {
|
|
|
+ status.set("-1");
|
|
|
+ info.set(vital);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int existNum = 0;
|
|
|
+ for (String vital : vitalOr.split("/")) {
|
|
|
+ if (vitalSpecialText.contains(vital)) {
|
|
|
+ existNum++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (existNum == 0) {
|
|
|
+ status.set("-1");
|
|
|
+ info.set(vitalOr.split("/")[0]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|