Browse Source

宁波中医:出院带药与医嘱不一致【修改正则】

chengyao 3 years ago
parent
commit
f2e9ac0704

+ 96 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/leavehospital/LEA02987.java

@@ -0,0 +1,96 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
+import com.lantone.qc.pub.model.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @ClassName : LEA02987
+ * @Description : 出院带药与医嘱不一致
+ * @Author : 胡敬
+ * @Date: 2020-06-23 10:54
+ */
+@Component
+public class LEA02987 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (doctorAdviceDocs.size() == 0 || leaveHospitalDoc == null) {
+            return;
+        }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        DeathCaseDiscussDoc deathCaseDiscussDoc = inputInfo.getDeathCaseDiscussDoc();
+        if (deathRecordDoc != null || deathCaseDiscussDoc != null) {
+            return;
+        }
+        Map<String, String> structureMap = leaveHospitalDoc.getStructureMap();
+        String key = getKeyByHospitalId();
+        String dischargeOrder = structureMap.get(key);
+        if (StringUtil.isBlank(dischargeOrder)) {
+            return;
+        }
+        Set<String> drugs = new HashSet<>();
+        for (DoctorAdviceDoc adviceDoc : doctorAdviceDocs) {
+            Map<String, String> adviceDocStructureMap = adviceDoc.getStructureMap();
+            String name = adviceDocStructureMap.get("医嘱项目名称");
+            String type = adviceDocStructureMap.get("医嘱类型判别");
+            if (StringUtil.isNotBlank(type) && type.equals("出院带药")) {
+                if (StringUtil.isNotBlank(name)) {
+                    drugs.add(name);
+                }
+            }
+        }
+
+        String infoStr = "";
+        List<String> notContainsDrugs = new ArrayList<>();
+        for (String drug:drugs) {
+            if (!dischargeOrder.contains(drug)){
+                notContainsDrugs.add(drug);
+            }
+        }
+
+        //没有包含的药品再次查看商品名或化学名在出院医嘱书写
+        for (String drug : notContainsDrugs) {
+            Set<String> splitDrugs = CatalogueUtil.getRegexWords(drug, "[((\\[][^\\[\\]]+[\\]))]");
+            boolean isFind = false;
+            for (String sd : splitDrugs) {
+                if (dischargeOrder.contains(sd)){
+                    isFind = true;
+                }
+            }
+            if (!isFind) {
+                infoStr = CatalogueUtil.concatInfo(infoStr, drug);
+            }
+        }
+        if (StringUtil.isNotBlank(infoStr)){
+            status.set("-1");
+            info.set(infoStr);
+        }
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "7":               //厦门
+                return "病历|出院带药";
+            default:
+                return "出院医嘱";
+        }
+    }
+}