Sfoglia il codice sorgente

湘雅:危急值记录中无危急值结果

zhanghang 3 anni fa
parent
commit
8c60c0dae4

+ 96 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/crisisvaluereport/CRI0384.java

@@ -0,0 +1,96 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.crisisvaluereport;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.CrisisValueReportDoc;
+import com.lantone.qc.pub.model.doc.LisDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description: 危急值记录中无危急值结果
+ * @author: rengb
+ * @time: 2020/3/19 19:54
+ */
+@Component
+public class CRI0384 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
+        List<LisDoc> lisDocs = inputInfo.getLisDocs();
+        String key = getKeyByHospitalId();
+        if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
+            crisisValueReportDocs.forEach(crisisValueReportDoc -> {
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get(key))) {
+                    /* 台州相应数据需从危急值内容中截取 */
+                    Boolean report = getReport(crisisValueReportDoc.getStructureMap().get(key),lisDocs);
+                    if (!report) {
+                        status.set("-1");
+                        return;
+                    }
+                }
+            });
+        }
+    }
+
+    private Boolean getReport(String str,List<LisDoc> lisDoc) {
+        if(ListUtil.isEmpty(lisDoc)){
+            return false;
+        }else {
+            boolean flag=false;
+            for (LisDoc doc : lisDoc) {
+                String inspectionName="";
+                String inspectionItem="";
+                String results="";
+                String reportName = doc.getStructureMap().get("报告名称");
+                String inspectionResults = doc.getStructureMap().get("检验结果");
+                String unit = doc.getStructureMap().get("单位");
+                if(StringUtil.isEmpty(reportName) || StringUtil.isEmpty(inspectionResults) || StringUtil.isEmpty(unit)){
+                    continue;
+                }
+                inspectionName=reportName.substring(0,reportName.lastIndexOf("="));
+                inspectionItem=reportName.substring(reportName.lastIndexOf("=")+1,reportName.length());
+                if(inspectionName.contains(";")){
+                    String[] split = inspectionName.split(";");
+                    for (String s : split) {
+                        if(str.contains(s)){
+                            flag=true;
+                        }
+                    }
+                }
+                if(str.contains(inspectionName)){
+                    flag=true;
+                }
+                if(!flag){
+                    continue;
+                }
+                if(!str.contains(inspectionItem)){
+                    continue;
+                }
+                results=inspectionResults+unit;
+                if(!str.contains(results)){
+                    continue;
+                }else {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "35":               //湘雅
+                return "病历内容";
+            default:
+                return "内容";
+        }
+    }
+}