Bladeren bron

1.长兴修改bug

hujing 5 jaren geleden
bovenliggende
commit
8a766270b1

+ 109 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0738.java

@@ -0,0 +1,109 @@
+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.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Diag;
+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.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : BEH0738
+ * @Description: 患者病情前后描述不一致
+ * @author: 胡敬
+ * @time: 2020-05-08 16:45
+ */
+@Component
+public class BEH0738 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        List<Diag> presentDiags = null;
+        List<Diag> pastDiags = null;
+        List<Diag> initialDiags = null;
+        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        if (presentLabel != null) {
+            presentDiags = presentLabel.getDiags();
+        }
+        if (pastLabel != null) {
+            pastDiags = pastLabel.getDiags();
+        }
+        if (initialDiagLabel != null) {
+            initialDiags = initialDiagLabel.getDiags();
+        }
+
+        if (presentDiags != null && pastDiags != null){
+            if (checkDiagDiff(presentDiags,pastDiags)){
+                status.set("-1");
+                return;
+            }
+        }
+
+        if (presentDiags != null && initialDiags != null){
+            if (checkDiagDiff(presentDiags,initialDiags)){
+                status.set("-1");
+                return;
+            }
+        }
+
+        if (pastDiags != null && initialDiags != null){
+            if (checkDiagDiff(pastDiags,initialDiags)){
+                status.set("-1");
+            }
+        }
+    }
+
+    /**
+     * 检查两个Diag列表是否前后描述不一致
+     * @param firstDiags
+     * @param secondDiags
+     * @return
+     */
+    private boolean checkDiagDiff(List<Diag> firstDiags, List<Diag> secondDiags) {
+        String firstDiagName = null, secondDiagName = null;
+        for (Diag firstDiag : firstDiags) {
+            firstDiagName = firstDiag.getHospitalDiagName();
+            if (StringUtil.isBlank(firstDiagName)) {
+                continue;
+            }
+            for (Diag secondDiag : secondDiags) {
+                secondDiagName = secondDiag.getHospitalDiagName();
+                if (StringUtil.isBlank(secondDiagName)) {
+                    continue;
+                }
+                if (firstDiagName.equals(secondDiagName)) {
+                    boolean checkNeg = checkNeg(firstDiag, secondDiag);
+                    if (!checkNeg) {
+                        //如果两个Diag一个为否定,一个不为否定,返回true
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    private boolean checkNeg(Diag firstDiag, Diag secondDiag) {
+        if (firstDiag.getNegative() == null && secondDiag.getNegative() == null) {
+            return true;
+        } else {
+            return firstDiag.getNegative() != null && secondDiag.getNegative() != null;
+        }
+    }
+
+
+}

+ 33 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0280.java

@@ -4,11 +4,14 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -23,30 +26,45 @@ import java.util.Map;
 public class CON0280 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getConsultationDocs() == null) {
+        if (inputInfo.getConsultationDocs() == null || inputInfo.getDoctorAdviceDocs().size() == 0) {
             return;
         }
         List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        //医嘱按照医嘱开始时间排序
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        Collections.sort(doctorAdviceDocs, new Comparator<DoctorAdviceDoc>() {
+            public int compare(DoctorAdviceDoc o1, DoctorAdviceDoc o2) {
+                return o1.getStructureMap().get("医嘱开始时间")
+                        .compareTo(o2.getStructureMap().get("医嘱开始时间"));
+            }
+        });
         for (ConsultationDoc consultationDoc : consultationDocs) {
             ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
             if (consultationResultsDoc == null) {
                 continue;
             }
-            Map<String, String> structureMap = consultationResultsDoc.getStructureMap();
-            String applicationDateStr = structureMap.get("会诊申请日期");
-            String arrivalDateStr = structureMap.get("会诊到达时间");
-            if (StringUtil.isBlank(applicationDateStr) || StringUtil.isBlank(arrivalDateStr)) {
-                continue;
-            }
-            Date applicationDate = StringUtil.parseDateTime(applicationDateStr);
-            Date arrivalDate = StringUtil.parseDateTime(arrivalDateStr);
-            if (applicationDate == null || arrivalDate == null) {
-                continue;
-            }
-            if (CatalogueUtil.compareTime(applicationDate, arrivalDate, (long) (24 * 60))) {
-                status.set("-1");
-                return;
+            Map<String, String> conStructureMap = consultationResultsDoc.getStructureMap();
+            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {//循环取最近一条医嘱和会诊申请单中的急会诊比较
+                Map<String, String> docStructureMap = doctorAdviceDoc.getStructureMap();
+                if (docStructureMap.get("医嘱项目名称") != null && docStructureMap.get("医嘱项目名称").contains("会诊")) {
+                    String applicationDateStr = docStructureMap.get("医嘱开始时间");
+                    String arrivalDateStr = conStructureMap.get("会诊时间");
+                    if (StringUtil.isBlank(applicationDateStr) || StringUtil.isBlank(arrivalDateStr)) {
+                        continue;
+                    }
+                    Date applicationDate = StringUtil.parseDateTime(applicationDateStr);
+                    Date arrivalDate = StringUtil.parseDateTime(arrivalDateStr);
+                    if (applicationDate == null || arrivalDate == null) {
+                        continue;
+                    }
+                    if (CatalogueUtil.compareTime(applicationDate, arrivalDate, (long) (24 * 60))) {
+                        status.set("-1");
+                        return;
+                    }
+                }
             }
+            //            String applicationDateStr = structureMap.get("会诊申请日期");
+            //            String arrivalDateStr = structureMap.get("会诊到达时间");
         }
     }
 }

+ 33 - 29
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0281.java

@@ -6,13 +6,15 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationRecordDoc;
 import com.lantone.qc.pub.util.StringUtil;
-import org.apache.http.client.utils.DateUtils;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName : CON0281
@@ -24,7 +26,6 @@ import java.util.*;
 public class CON0281 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        DateUtil dateUtil = new DateUtil();
         if (inputInfo.getConsultationDocs() == null) {
             return;
         }
@@ -32,37 +33,40 @@ public class CON0281 extends QCCatalogue {
         List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
         //医嘱按照医嘱开始时间排序
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
-        Collections.sort(doctorAdviceDocs, new Comparator<DoctorAdviceDoc>(){
-            public int compare (DoctorAdviceDoc o1, DoctorAdviceDoc o2){
+        Collections.sort(doctorAdviceDocs, new Comparator<DoctorAdviceDoc>() {
+            public int compare(DoctorAdviceDoc o1, DoctorAdviceDoc o2) {
                 return o1.getStructureMap().get("医嘱开始时间")
                         .compareTo(o2.getStructureMap().get("医嘱开始时间"));
             }
         });
-        StringBuffer stringBuffer = new StringBuffer();
-        for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {//循环取最近一条医嘱和会诊申请单中的急会诊比较
-            for (ConsultationDoc consultationDoc : consultationDocs) {
-                if(consultationDoc.getConsultationRecordDoc() == null || doctorAdviceDocs == null){
-                    continue;
-                }
-                if(doctorAdviceDoc.getStructureMap().get("医嘱项目名称") != null && doctorAdviceDoc.getStructureMap().get("医嘱项目名称").contains("会诊")){
-                    if(consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊分类") == null && consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊分类").contains("急会诊")){
-                        if(dateUtil.getDistanceTime3(dateUtil.parseDate(doctorAdviceDoc.getStructureMap().get("医嘱开始时间"),DateUtil.DATE_TIME_FORMAT)
-                                ,dateUtil.parseDate(consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊时间"),DateUtil.DATE_TIME_FORMAT)) > 10){//如果医嘱中的日期和会诊结果中的日期大于十分钟
-                            status.set("-1");
-                        }else {
-                            stringBuffer.append(doctorAdviceDoc.getStructureMap().get("医嘱项目名称")
-                                    +":"
-                                    +doctorAdviceDoc.getStructureMap().get("医嘱开始时间")
-                                    +"会诊时间:"
-                                    +consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊时间"));
-                            continue;
-                        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationRecordDoc consultationRecordDoc = consultationDoc.getConsultationRecordDoc();
+            if (consultationRecordDoc == null) {
+                continue;
+            }
+            Map<String, String> conStructureMap = consultationRecordDoc.getStructureMap();
+            if (conStructureMap.get("会诊分类") == null || !conStructureMap.get("会诊分类").contains("急会诊")) {
+                continue;
+            }
+            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {//循环取最近一条医嘱和会诊申请单中的急会诊比较
+                Map<String, String> docStructureMap = doctorAdviceDoc.getStructureMap();
+                if (docStructureMap.get("医嘱项目名称") != null && docStructureMap.get("医嘱项目名称").contains("会诊")) {
+                    String applicationDateStr = docStructureMap.get("医嘱开始时间");
+                    String arrivalDateStr = conStructureMap.get("会诊时间");
+                    if (StringUtil.isBlank(applicationDateStr) || StringUtil.isBlank(arrivalDateStr)) {
+                        continue;
+                    }
+                    Date applicationDate = StringUtil.parseDateTime(applicationDateStr);//医嘱开始时间
+                    Date arrivalDate = StringUtil.parseDateTime(arrivalDateStr);//会诊时间
+                    if (applicationDate == null || arrivalDate == null) {
+                        continue;
+                    }
+                    if (CatalogueUtil.compareTime(applicationDate, arrivalDate, 10L)) {
+                        status.set("-1");
+                        return;
                     }
                 }
-
             }
         }
-        info.set(stringBuffer.toString());
-
     }
 }

+ 30 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0528.java

@@ -3,12 +3,14 @@ package com.lantone.qc.kernel.catalogue.consultation;
 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.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationRecordDoc;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName : CON0528
@@ -22,15 +24,36 @@ public class CON0528 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
         List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() > 0) {
-            for (ConsultationDoc consulation : consultationDocs) {
-                ConsultationRecordDoc consultationRecordDoc = consulation.getConsultationRecordDoc();
-                if (consultationRecordDoc == null) {
-                    status.set("-1");
-                    break;
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        if (doctorAdviceDocs.size() == 0) {
+            return;
+        }
+        boolean findConsultation = false, findConsultationRemove = false;
+        for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+            Map<String, String> doctStructureMap = doctorAdviceDoc.getStructureMap();
+            if (doctStructureMap.get("医嘱项目名称") != null) {
+                if (doctStructureMap.get("医嘱项目名称").contains("会诊")) {
+                    findConsultation = true;
+                }
+                if (doctStructureMap.get("医嘱项目名称").contains("会诊")
+                        && doctStructureMap.get("医嘱项目名称").contains("取消")) {
+                    findConsultationRemove = true;
                 }
             }
         }
-
+        //医嘱有会诊但没有取消会诊
+        if (findConsultation && !findConsultationRemove) {
+            if (consultationDocs.size() > 0) {
+                for (ConsultationDoc consulation : consultationDocs) {
+                    ConsultationRecordDoc consultationRecordDoc = consulation.getConsultationRecordDoc();
+                    if (consultationRecordDoc == null) {
+                        status.set("-1");
+                        return;
+                    }
+                }
+            }
+        } else {
+            status.set("0");
+        }
     }
 }

+ 33 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0737.java

@@ -0,0 +1,33 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0737
+ * @Description : 邮编信息错误
+ * @Author : 胡敬
+ * @Date: 2020-05-08 16:00
+ */
+@Component
+public class FIRP0737 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String zipcode = firstpageStructureMap.get(Content.current_address_zipcode);
+            if (!CatalogueUtil.isEmpty(zipcode)) {
+                String regex = "^\\d{6}$";
+                if (!zipcode.matches(regex)) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
+}

+ 2 - 0
public/src/main/java/com/lantone/qc/pub/Content.java

@@ -251,6 +251,7 @@ public class Content {
 
     public static String[] dateFormats = {
             "yyyy年MM月dd日HH时mm分",
+            "yyyy年MM月dd日HH:mm",
             "yyyy年MM月dd日H时mm分",
             "yyyy年MM月dd日HH时m分",
             "yyyy年MM月dd日H时m分",
@@ -306,5 +307,6 @@ public class Content {
             "yyyy.MM.dd",
             "yyyy-MM-ddHH:mm:ss.000",
             "yyyyMMddHH:mm",
+            "yyyy-MM-dd'T'HH:mm:ss",
     };
 }