Преглед на файлове

Merge remote-tracking branch 'origin/dev-1.2' into dev-1.2

MarkHuang преди 5 години
родител
ревизия
96da523c4a

+ 6 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/controller/DbController.java

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.lantone.qc.dbanaly.facade.changx.ChangxXmlDataAnalysisFacade;
 import com.lantone.qc.dbanaly.facade.comsis.ModuleHelper;
 import com.lantone.qc.dbanaly.facade.comsis.RedisFacade;
+import com.lantone.qc.dbanaly.facade.shaoyf.ShaoyfXmlDataAnalysisFacade;
 import com.lantone.qc.dbanaly.facade.taizhou.TaiZhouXmlDataAnalysisFacade;
 import com.lantone.qc.dbanaly.util.RedisUtil;
 import com.lantone.qc.dbanaly.vo.AnalyzeXmlVO;
@@ -38,6 +39,8 @@ public class DbController {
     @Autowired
     private TaiZhouXmlDataAnalysisFacade taiZhouXmlDataAnalysisFacade;
     @Autowired
+    private ShaoyfXmlDataAnalysisFacade shaoyfXmlDataAnalysisFacade;
+    @Autowired
     private RedisFacade redisFacade;
 
     @ApiOperation(value = "模板信息加载")
@@ -56,9 +59,12 @@ public class DbController {
         Long hospitalId = analyzeXmlVO.getHospitalId();
         if (hospitalId == null) {
             msgList.addAll(changxXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds()));
+            msgList.addAll(shaoyfXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds()));
             msgList.addAll(taiZhouXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds()));
         } else if (hospitalId == 1) {
             msgList = changxXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds());
+        } else if (hospitalId == 2) {
+            msgList = shaoyfXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds());
         } else if (hospitalId == 3) {
             msgList = taiZhouXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds());
         }

+ 3 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java

@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.shaoyf.ShaoyfXmlUtil;
 import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 import com.lantone.qc.dbanaly.lt.entity.Abnormal;
 import com.lantone.qc.dbanaly.lt.entity.BehospitalInfo;
@@ -329,6 +330,8 @@ public class XmlDataAnalysisFacade {
         Set<String> keys = new HashSet<>();
         if (hospitalId == 1) {
             keys.addAll(CxXmlUtil.firstLevelNodeValue(xml).keySet());
+        } else if (hospitalId == 2) {
+            keys.addAll(ShaoyfXmlUtil.getXmlToMap(xml).keySet());
         } else if (hospitalId == 3) {
             keys.addAll(TzXmlUtil.getXmlToMapForTZ(xml).keySet());
         }

+ 51 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/shaoyf/ShaoyfXmlDataAnalysisFacade.java

@@ -0,0 +1,51 @@
+package com.lantone.qc.dbanaly.facade.shaoyf;
+
+import com.google.common.collect.Lists;
+import com.lantone.qc.dbanaly.facade.comsis.XmlDataAnalysisFacade;
+import com.lantone.qc.dbanaly.lt.facade.ModeFacade;
+import com.lantone.qc.pub.util.ListUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/3 16:44
+ */
+@Slf4j
+@Component
+public class ShaoyfXmlDataAnalysisFacade {
+    @Autowired
+    private XmlDataAnalysisFacade xmlDataAnalysisFacade;
+    @Autowired
+    private ModeFacade modeFacade;
+
+    public List<String> analyzeXml(List<Long> modeIds) {
+        List<String> retList = Lists.newArrayList();
+        if (ListUtil.isEmpty(modeIds)) {
+            modeIds = Arrays.asList(1l, 2l, 3l, 4l, 5l, 11l, 17l, 18l, 19l, 22l, 24l, 25l, 27l, 28l, 30l, 31l);
+        }
+        Map<Long, String> modeMap = modeFacade.getModeMap();
+        List<String> recTitles = null;
+        String modeName = null;
+        for (Long modeId : modeIds) {
+            recTitles = xmlDataAnalysisFacade.getRecTitles(2l, modeId);
+            modeName = modeMap.get(modeId);
+            for (String recTitle : recTitles) {
+                try {
+                    xmlDataAnalysisFacade.analysisByRecTitle(2l, modeId, modeName, recTitle, null, "");
+                } catch (Exception e) {
+                    retList.add("[邵逸夫-" + modeId + "-" + recTitle + "]执行失败");
+                    log.error("[邵逸夫-" + modeId + "-" + recTitle + "]执行失败--" + e.getMessage(), e);
+                }
+            }
+        }
+        return retList;
+    }
+
+}

+ 57 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/shaoyf/ShaoyfXmlUtil.java

@@ -0,0 +1,57 @@
+package com.lantone.qc.dbanaly.facade.shaoyf;
+
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.comsis.XmlUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: xml解析工具
+ * @author: rengb
+ * @time: 2020/3/28 14:23
+ */
+public class ShaoyfXmlUtil {
+
+    /**
+     * getText()获取当前节点的文本内容,getStringValue()获取所有子节点拼接后的文本内容
+     *
+     * @param xml
+     * @return
+     */
+
+    public static Map<String, String> getXmlToMap(String xml) {
+        Map<String, String> retMap = Maps.newLinkedHashMap();
+        try {
+            Document doc = DocumentHelper.parseText(XmlUtil.xmlErrorCorrection(xml));
+            List<Element> emrTermElements = doc.getRootElement().element("TermList").elements("EMR-TERM");
+            String ename, setnomark, text;
+            for (Element emrTermElement : emrTermElements) {
+                ename = emrTermElement.attributeValue("ename");
+                if (StringUtil.isBlank(ename)) {
+                    continue;
+                }
+                //                ename = StringUtil.removeBlank(ename);
+                setnomark = emrTermElement.attributeValue("setnomark");
+                setnomark = setnomark == null ? "" : setnomark;
+                setnomark = setnomark.trim().replaceAll("&nbsp;", "");
+                text = emrTermElement.getStringValue().trim().replaceAll("&nbsp;", "");
+                if (StringUtil.isBlank(retMap.get(ename))) {
+                    if (StringUtil.isBlank(text)) {
+                        retMap.put(ename, setnomark);
+                    } else {
+                        retMap.put(ename, text);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return XmlUtil.correctMapOfXml(retMap);
+    }
+
+}

+ 73 - 27
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java

@@ -1,50 +1,98 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
+
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.dbanaly.util.KernelConstants;
-import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Diag;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.lantone.qc.pub.model.entity.GeneralDesc;
+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.springframework.stereotype.Component;
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * @ClassName : BEH0011
- * @Description : 入院诊断不完整
- * 初步诊断没有既往史里的慢性疾病
+ * @Description : 初步诊断不完整
+ * 原逻辑 --初步诊断没有既往史里的慢性疾病
+ * 现逻辑 --检查现病史中一般情况之后的疾病名称,既往史中的疾病名称是否都在初步诊断里
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
  */
 @Component
 public class BEH0011 extends QCCatalogue {
-    @Autowired
-    private SpecialStorageUtil specialStorageUtil;
+//    @Autowired
+//    private SpecialStorageUtil specialStorageUtil;
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if(inputInfo.getBeHospitalizedDoc() == null){
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
+        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        if (initialDiagLabel == null || pastLabel == null || presentLabel == null) {
             status.set("0");
             return;
         }
-        Map<String, Map<String, Object>> diagMap = specialStorageUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
-        String initDiagText = CatalogueUtil.removeSpecialChar(inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText());
-        List<Diag> diags = inputInfo.getBeHospitalizedDoc().getPastLabel().getDiags().stream().filter(diag -> diag.getNegative() == null).collect(Collectors.toList());
-        if(StringUtils.isNotEmpty(initDiagText)){
+        String presentText = presentLabel.getText();
+        List<Diag> presentDiags = presentLabel.getDiags();
+        List<String> presentPastDiag = new ArrayList<>();
+        /* 取现病史中一般情况之后的疾病名称 */
+        if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
+            List<GeneralDesc> generals = presentLabel.getGenerals();
+            String lastGeneral = generals.get(generals.size() - 1).getName();
+            int lastGeneralIndex = presentText.indexOf(lastGeneral);
+            for (Diag presentDiag : presentDiags) {
+                if (presentDiag.getNegative() != null) {
+                    continue;
+                }
+                /* 现病史中一般情况之后的疾病名称 */
+                if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
+                    presentPastDiag.add(presentDiag.getHospitalDiagName());
+                }
+            }
+        }
+        /* 取既往史中疾病名称 */
+        List<Diag> pastDiags = pastLabel.getDiags();
+        addDiagHospitalName(presentPastDiag, pastDiags);
+        /* 取初步诊断中疾病名称 */
+        List<String> initDiag = new ArrayList<>();
+        List<Diag> initialDiagDiags = initialDiagLabel.getDiags();
+        addDiagHospitalName(initDiag, initialDiagDiags);
+
+        if (initDiag.containsAll(presentPastDiag)){
+            status.set("0");
+        }
+    }
+
+    private void addDiagHospitalName(List<String> presentPastDiag, List<Diag> pastDiags) {
+        for (Diag pastDiag : pastDiags) {
+            if (pastDiag.getNegative() != null) {
+                continue;
+            }
+            presentPastDiag.add(pastDiag.getHospitalDiagName());
+        }
+    }
+    /* 原逻辑
+    Map<String, Map<String, Object>> diagMap = specialStorageUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
+    String initDiagText = CatalogueUtil.removeSpecialChar(initialDiagLabel.getText());
+        if (pastLabel.getDiags() != null) {
+            List<Diag> diags = pastLabel.getDiags().stream().filter(diag -> diag.getNegative() == null).collect(Collectors.toList());
             List<String> initDiags = Arrays.asList(initDiagText.split(","));
-            if(diags.size()>0){
-                for (Diag diag:diags) {
+            if (diags.size() > 0) {
+                for (Diag diag : diags) {
                     Map<String, Object> map = (Map<String, Object>) diagMap.get(diag.getName());
-                    if(map != null && map.size() >0){
+                    if (map != null && map.size() > 0) {
                         String chronic = (String) map.get("chronic");//1是慢病
-                        if("1".equals(chronic) && !initDiags.contains(diag.getName())){
-                            if(StringUtils.isEmpty(info.get())){
+                        if ("1".equals(chronic) && !initDiags.contains(diag.getName())) {
+                            if (StringUtils.isEmpty(info.get())) {
                                 info.set(diag.getName());
-                            }else {
+                            } else {
                                 info.set(info.get() + "," + diag.getName());
                             }
                         }
@@ -52,10 +100,8 @@ public class BEH0011 extends QCCatalogue {
                 }
             }
         }
-        if(StringUtils.isEmpty(info.get())){
+        if (StringUtils.isEmpty(info.get())) {
             status.set("0");
         }
-
-
-    }
+     */
 }

+ 35 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java

@@ -3,8 +3,8 @@ package com.lantone.qc.kernel.catalogue.firstcourserecord;
 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.entity.GeneralDesc;
 import com.lantone.qc.pub.model.label.DiagLabel;
 import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.model.label.PresentLabel;
@@ -24,59 +24,54 @@ import java.util.List;
 @Component
 public class FIRC0095 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        //        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        if (beHospitalizedDoc == null) {
+        if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             return;
         }
-        //DiagLabel initialDiagLabel = firstCourseRecordDoc.getInitialDiagLabel();
-        PresentLabel presentLabel = beHospitalizedDoc.getPresentLabel();
-        PastLabel pastLabel = beHospitalizedDoc.getPastLabel();
-        DiagLabel initialDiagLabel = beHospitalizedDoc.getInitialDiagLabel();
-
-        if (initialDiagLabel == null) {
+        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
+        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        if (initialDiagLabel == null || pastLabel == null || presentLabel == null) {
             status.set("0");
             return;
         }
-        List<String> bhDiags = new ArrayList<>();
-        /* 现病史诊断 */
-        if (presentLabel != null && presentLabel.getDiags() != null) {
-            List<Diag> presentDiags = presentLabel.getDiags();
-            copyDiag(presentDiags, bhDiags);
-        }
-        /* 既往史诊断 */
-        if (pastLabel != null && pastLabel.getDiags() != null) {
-            List<Diag> pastDiags = pastLabel.getDiags();
-            copyDiag(pastDiags, bhDiags);
-        }
-        /* 初步诊断 */
-        List<Diag> diags = initialDiagLabel.getDiags();
-        List<String> initDiags = new ArrayList<>();
-        if (diags != null) {
-            copyDiag(diags, initDiags);
+        String presentText = presentLabel.getText();
+        List<Diag> presentDiags = presentLabel.getDiags();
+        List<String> presentPastDiag = new ArrayList<>();
+        /* 取现病史中一般情况之后的疾病名称 */
+        if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
+            List<GeneralDesc> generals = presentLabel.getGenerals();
+            String lastGeneral = generals.get(generals.size() - 1).getName();
+            int lastGeneralIndex = presentText.indexOf(lastGeneral);
+            for (Diag presentDiag : presentDiags) {
+                if (presentDiag.getNegative() != null) {
+                    continue;
+                }
+                /* 现病史中一般情况之后的疾病名称 */
+                if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
+                    presentPastDiag.add(presentDiag.getHospitalDiagName());
+                }
+            }
         }
+        /* 取既往史中疾病名称 */
+        List<Diag> pastDiags = pastLabel.getDiags();
+        addDiagHospitalName(presentPastDiag, pastDiags);
+        /* 取初步诊断中疾病名称 */
+        List<String> initDiag = new ArrayList<>();
+        List<Diag> initialDiagDiags = initialDiagLabel.getDiags();
+        addDiagHospitalName(initDiag, initialDiagDiags);
 
-        //List<Diag> diags1 = initialDiagLabel1.getDiags();
-        /* 初步诊断包含现病史诊断和既往史诊断 */
-        if (initDiags.containsAll(bhDiags)) {
+        if (initDiag.containsAll(presentPastDiag)){
             status.set("0");
         }
     }
 
-    private void copyDiag(List<Diag> diags, List<String> diagList) {
-        String hospitalDiagName, name;
-        for (Diag diag : diags) {
-            if (diag.getNegative() != null) {
+    private void addDiagHospitalName(List<String> presentPastDiag, List<Diag> pastDiags) {
+        for (Diag pastDiag : pastDiags) {
+            if (pastDiag.getNegative() != null) {
                 continue;
             }
-            hospitalDiagName = diag.getHospitalDiagName();
-            name = diag.getName();
-            if (StringUtil.isNotBlank(hospitalDiagName)) {
-                diagList.add(hospitalDiagName);
-            } else if (StringUtil.isNotBlank(name)) {
-                diagList.add(name);
-            }
+            presentPastDiag.add(pastDiag.getHospitalDiagName());
         }
     }
 }

+ 11 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0175.java

@@ -1,5 +1,6 @@
 package com.lantone.qc.kernel.catalogue.firstpagerecord;
 
+import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
@@ -9,7 +10,6 @@ import com.lantone.qc.pub.model.entity.Diag;
 import com.lantone.qc.pub.util.ListUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -21,28 +21,32 @@ import java.util.Map;
  */
 @Component
 public class FIRP0175 extends QCCatalogue {
-    private static String[] strings = {"2型糖尿病"};
+    List<String> diags = Lists.newArrayList("2型糖尿病");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null
-                && inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel() != null) {
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             //病案首页出院诊断
             List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
             //出院小结诊断
-            List<Diag> leaveDiags = inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel().getDiags();
+            List<Diag> leaveDiags = null;
+            if (inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel() != null) {
+                leaveDiags = inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel().getDiags();
+            }
             if (ListUtil.isEmpty(dischargeDiag) || ListUtil.isEmpty(leaveDiags)) {
                 return;
             }
             String firstpageleaveDiag = dischargeDiag.get(0).get(Content.diagnoseName);
             String leaveDiag = leaveDiags.get(0).getHospitalDiagName();
             //判断是否有2型糖尿病这种病如果没有,把疾病前的数字去掉
-            if(!Arrays.asList(strings).contains(leaveDiag)){
-                leaveDiag = leaveDiag.replaceAll("^[0-9]","");
+            if (!diags.contains(leaveDiag)) {
+                leaveDiag = leaveDiag.replaceAll("^[0-9]", "");
             }
             if (!CatalogueUtil.compareToken(firstpageleaveDiag, leaveDiag)) {
                 status.set("-1");
             }
+
         }
     }
 }

+ 17 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0192.java

@@ -22,23 +22,25 @@ import java.util.Map;
 @Component
 public class FIRP0192 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (operationDocs != null && operationDocs.size() > 0) {
-            OperationDoc operationDoc = operationDocs.get(0);
-            OperationDiscussionDoc operationDiscussionDoc = operationDoc.getOperationDiscussionDoc();
-            if (operationDiscussionDoc != null) {
-                Map<String, String> docStructureMap = operationDiscussionDoc.getStructureMap();
-                Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
-                String opertaion = docStructureMap.get("手术方式");
-                List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);
-                if (mapList != null && mapList.size() > 0) {
-                    Map<String, String> op = mapList.get(0);
-                    String oName = op.get(Content.operative_name);
-                    if (StringUtils.isNotEmpty(opertaion) && !opertaion.equals(oName)) {
-                        status.set("-1");
-                    }
+        if (firstPageRecordDoc == null || operationDocs.size() == 0) {
+            status.set("0");
+            return;
+        }
+        Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
+        List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);
+        if (mapList != null && mapList.size() > 0) {
+            Map<String, String> op = mapList.get(0);
+            String oName = op.get(Content.operative_name);
+            for (OperationDoc operationDoc : operationDocs) {
+                if (operationDoc.getOperationRecordDoc() == null) {
+                    continue;
+                }
+                String operationName = operationDoc.getOperationRecordDoc().getStructureMap().get("手术名称");
+                if (operationName.contains(oName)){
+                    status.set("0");
+                    return;
                 }
             }
         }

+ 14 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0148.java

@@ -26,22 +26,21 @@ public class LEA0148 extends QCCatalogue {
             status.set("0");
             return;
         }
-        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() != null) {
+        if (inputInfo.getDeathRecordDoc() != null || inputInfo.getDeathCaseDiscussDoc() != null) {
             status.set("0");
-        } else {
-            String timeQm = leaveHospitalDoc.getStructureMap().get("签名时间");
-            String timeCy = leaveHospitalDoc.getStructureMap().get("出院时间");
-            if (StringUtil.isNotBlank(timeQm) && StringUtil.isNotBlank(timeCy)) {
-                Date timeQmDate = StringUtil.parseDateTime(timeQm);
-                Date timeCyDate = StringUtil.parseDateTime(timeCy);
-                if (timeQmDate == null && timeCyDate == null) {
-                    status.set("0");
-                    return;
-                }
-                if (!CatalogueUtil.compareTime(timeCyDate, timeQmDate, 24 * 60L)) {
-                    status.set("0");
-                }
+            return;
+        }
+        String timeQm = leaveHospitalDoc.getStructureMap().get("签名时间");
+        String timeCy = leaveHospitalDoc.getStructureMap().get("出院时间");
+        if (StringUtil.isNotBlank(timeQm) && StringUtil.isNotBlank(timeCy)) {
+            Date timeQmDate = StringUtil.parseDateTime(timeQm);
+            Date timeCyDate = StringUtil.parseDateTime(timeCy);
+            if (timeQmDate == null && timeCyDate == null) {
+                status.set("0");
+                return;
+            }
+            if (!CatalogueUtil.compareTime(timeCyDate, timeQmDate, 24 * 60L)) {
+                status.set("0");
             }
         }
     }

+ 1 - 1
public/src/main/java/com/lantone/qc/pub/model/label/PresentLabel.java

@@ -29,7 +29,7 @@ public class PresentLabel extends GeneralLabel {
     //一般情况
     private List<General> gens = new ArrayList<>();
     //一般情况描述
-    private List<GeneralDesc> generals;
+    private List<GeneralDesc> generals = new ArrayList<>();
     //诱因
     private List<Cause> causes;
     //疾病信息