Browse Source

Merge remote-tracking branch 'origin/shaoyf/dev' into shaoyf/master

kongwz 5 years ago
parent
commit
a3cd572e68
17 changed files with 260 additions and 39 deletions
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0088.java
  2. 4 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC02910.java
  3. 7 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0192.java
  4. 6 18
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0196.java
  5. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0212.java
  6. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0213.java
  7. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0214.java
  8. 45 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02842.java
  9. 43 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02844.java
  10. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02883.java
  11. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02885.java
  12. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02886.java
  13. 58 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03038.java
  14. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02931.java
  15. 7 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02986.java
  16. 55 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03016.java
  17. 18 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03021.java

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0088.java

@@ -29,7 +29,7 @@ public class FIRC0088 extends QCCatalogue {
         Map<String, String> firstCourseStructureMap = firstCourseRecordDoc.getStructureMap();
         String diffDiag = firstCourseStructureMap.get("鉴别诊断");
         if (StringUtil.isBlank(diffDiag) || diffDiag.contains("诊断明确") || diffDiag.contains("无需鉴别")
-                || diffDiag.contains("明确诊断")) {
+                || diffDiag.contains("明确诊断") || diffDiag.contains("诊断尚明确")) {
             return;
         }
         DiagLabel differentialDiagLabel = firstCourseRecordDoc.getDifferentialDiagLabel();

+ 4 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC02910.java

@@ -14,6 +14,8 @@ import java.util.Map;
 /**
  * @ClassName : FIRC02910
  * @Description : 首次病程创建时间早于患者入院时间
+ * 首程入院时间
+ * 首程记录时间
  * @Author : 胡敬
  * @Date: 2020-06-12 14:12
  */
@@ -29,7 +31,8 @@ public class FIRC02910 extends QCCatalogue {
         Map<String, String> firstRecordMap = firstCourseRecordDoc.getStructureMap();
         Map<String, String> beHospitalizedMap = beHospitalizedDoc.getStructureMap();
         String createDateStr = firstRecordMap.get("记录时间");
-        String beHospitalDateStr = beHospitalizedMap.get("入院日期");
+//        String beHospitalDateStr = beHospitalizedMap.get("入院日期");
+        String beHospitalDateStr = firstRecordMap.get("入院日期");
         if (StringUtil.isNotBlank(createDateStr) && StringUtil.isNotBlank(beHospitalDateStr)) {
             Date createDate = StringUtil.parseDateTime(createDateStr);
             Date beHospitalDate = StringUtil.parseDateTime(beHospitalDateStr);

+ 7 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0192.java

@@ -50,6 +50,11 @@ public class FIRP0192 extends QCCatalogue {
                     operationName = operationDoc.getOperationDiscussionDoc().getStructureMap().get("手术名称");
                 }
                 if (StringUtil.isNotBlank(operationName)) {
+                    operationName = operationName.replaceAll("[\\p{Punct}\\pP]", "").replaceAll("\\s*","");
+                    oName = oName.replaceAll("[\\p{Punct}\\pP]", "").replaceAll("\\s*","");
+                    if(operationName.contains(oName)){
+                        return;
+                    }
                     String[] operationNames = operationName.split("\\+");
                     JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(oName, Arrays.asList(operationNames), false
                             , "operation", chiefPresentSimilarityServiceClient);
@@ -61,6 +66,8 @@ public class FIRP0192 extends QCCatalogue {
                         if (likeRate < 0.9) {
                             status.set("-1");
                             return;
+                        }else {
+                            return;
                         }
                     }
                 }

+ 6 - 18
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0196.java

@@ -5,6 +5,7 @@ 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.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -25,26 +26,13 @@ public class FIRP0196 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String brainInjuryComaBeforeDays = firstpageStructureMap.get(Content.brainInjuryComaBeforeDays);
-            String brainInjuryComaBeforeHours = firstpageStructureMap.get(Content.brainInjuryComaBeforeHours);
-            String brainInjuryComaBeforeMins = firstpageStructureMap.get(Content.brainInjuryComaBeforeMins);
-            String brainInjuryComaAfterDays = firstpageStructureMap.get(Content.brainInjuryComaAfterDays);
-            String brainInjuryComaAfterHours = firstpageStructureMap.get(Content.brainInjuryComaAfterHours);
-            String brainInjuryComaAfterMins = firstpageStructureMap.get(Content.brainInjuryComaAfterMins);
-            String regex = "([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9])";
-            if (StringUtil.isNotBlank(brainInjuryComaBeforeDays) && !brainInjuryComaBeforeDays.matches(regex)
-                && StringUtil.isNotBlank(brainInjuryComaAfterDays) && !brainInjuryComaAfterDays.matches(regex)) {
-                return ;
-            }
-            if (StringUtil.isBlank(brainInjuryComaBeforeDays)
-                    && StringUtil.isBlank(brainInjuryComaBeforeHours)
-                    && StringUtil.isBlank(brainInjuryComaBeforeMins)
-                    && StringUtil.isBlank(brainInjuryComaAfterDays)
-                    && StringUtil.isBlank(brainInjuryComaAfterHours)
-                    && StringUtil.isBlank(brainInjuryComaAfterMins)
-            ) {
+            String brainInjur_before = firstpageStructureMap.get("入院前颅脑损伤患者昏迷时间");
+            String brainInjur_after = firstpageStructureMap.get("入院后颅脑损伤患者昏迷时间");
+            if(StringUtils.isBlank(brainInjur_before) || StringUtils.isBlank(brainInjur_after)){
                 status.set("-1");
+                return;
             }
+
         }
     }
 }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0212.java

@@ -5,6 +5,7 @@ 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.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -22,7 +23,7 @@ public class FIRP0212 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String dischargeTime = firstpageStructureMap.get(Content.current_address_zipcode);
-            if(CatalogueUtil.isEmpty(dischargeTime)){
+            if(StringUtils.isBlank(dischargeTime)){
                 status.set("-1");
             }
 

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0213.java

@@ -5,6 +5,7 @@ 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.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -25,7 +26,7 @@ public class FIRP0213 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String dischargeTime = firstpageStructureMap.get(Content.household_address_zipcode);
-            if(StringUtil.isBlank(dischargeTime)){
+            if(StringUtils.isBlank(dischargeTime)){
                 status.set("-1");
             }
         }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0214.java

@@ -5,6 +5,7 @@ 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.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -22,7 +23,7 @@ public class FIRP0214 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String dischargeTime = firstpageStructureMap.get(Content.work_unit_zipcode);
-            if(CatalogueUtil.isEmpty(dischargeTime)){
+            if(StringUtils.isBlank(dischargeTime)){
                 status.set("-1");
             }
 

+ 45 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02842.java

@@ -0,0 +1,45 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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 org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP02842
+ * @Description : 出院诊断疾病编码未填写
+ * @Author : kwz
+ * @Date: 2020-07-15 17:45
+ */
+@Component
+public class FIRP02842 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            JSONArray out_diag = (JSONArray)firstpageStructureMap.get("出院诊断");
+            if (out_diag.size() > 0) {
+                for (int i=0;i<out_diag.size();i++) {
+                    JSONObject jsonObject = out_diag.getJSONObject(i);
+                    String diag_code = (String)jsonObject.get("诊断编码");
+                    if(StringUtils.isBlank(diag_code)){
+                        status.set("-1");
+                        return;
+                    }
+
+                }
+
+            }
+        }
+    }
+}

+ 43 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02844.java

@@ -0,0 +1,43 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP02844
+ * @Description : 手术及操作编码未填
+ * @Author : kwz
+ * @Date: 2020-07-15 17:45
+ */
+@Component
+public class FIRP02844 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            JSONArray out_diag = (JSONArray)firstpageStructureMap.get("手术信息");
+            if (out_diag.size() > 0) {
+                for (int i=0;i<out_diag.size();i++) {
+                    JSONObject jsonObject = out_diag.getJSONObject(i);
+                    String diag_code = (String)jsonObject.get("手术编码");
+                    if(StringUtils.isBlank(diag_code)){
+                        status.set("-1");
+                        return;
+                    }
+
+                }
+
+            }
+        }
+    }
+}

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02883.java

@@ -5,6 +5,7 @@ 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.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -22,7 +23,7 @@ public class FIRP02883 extends QCCatalogue {
         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)) {
+            if (StringUtils.isNotBlank(zipcode)) {
                 if ("-".equals(zipcode) || "/".equals(zipcode)) {
                     return;
                 }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02885.java

@@ -6,6 +6,7 @@ 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.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -23,7 +24,7 @@ public class FIRP02885 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.household_address_zipcode);
-            if (StringUtil.isNotBlank(zipcode)) {
+            if (StringUtils.isNotBlank(zipcode)) {
                 if ("-".equals(zipcode) || "/".equals(zipcode)) {
                     return;
                 }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02886.java

@@ -6,6 +6,7 @@ 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.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -23,7 +24,7 @@ public class FIRP02886 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.work_unit_zipcode);
-            if (StringUtil.isNotBlank(zipcode)) {
+            if (StringUtils.isNotBlank(zipcode)) {
                 if ("-".equals(zipcode) || "/".equals(zipcode)) {
                     return;
                 }

+ 58 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03038.java

@@ -0,0 +1,58 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.lantone.qc.dbanaly.util.KernelConstants;
+import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03038
+ * @Description : 出院诊断疾病编码填写错误
+ * @Author : kwz
+ * @Date: 2020-07-15 17:45
+ */
+@Component
+public class FIRP03038 extends QCCatalogue {
+    @Autowired
+    private SpecialStorageUtil specialStorageUtil;
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            return;
+        }
+        Map<String, Map<String,String>> hostpital_standDiag = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DIAG_MAP);
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            JSONArray out_diag = (JSONArray)firstpageStructureMap.get("出院诊断");
+            if (out_diag.size() > 0) {
+                for (int i=0;i<out_diag.size();i++) {
+                    JSONObject jsonObject = out_diag.getJSONObject(i);
+                    String diag_code = (String)jsonObject.get("诊断编码");
+                    String diag_name = (String) jsonObject.get("诊断名称");
+                    if(StringUtils.isNotBlank(diag_code) && hostpital_standDiag.containsKey(diag_name)){
+                        Map<String,String> s = hostpital_standDiag.get(diag_name);
+                        if(s != null){
+                            String icd10 = s.get("icd10");
+                            if(StringUtils.isNotBlank(icd10) && icd10.equals(diag_code)){
+                                status.set("0");
+                            }else {
+                                status.set("-1");
+                                return;
+                            }
+                        }
+                    }
+
+                }
+
+            }
+        }
+    }
+}

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02931.java

@@ -10,6 +10,7 @@ import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -37,10 +38,12 @@ public class THR02931 extends QCCatalogue {
         if (StringUtil.isBlank(leaveDateStr)) {
             return;
         }
+        leaveDateStr = leaveDateStr.split(" ")[0];
         Date leaveDate = StringUtil.parseDateTime(leaveDateStr);
         if (leaveDate == null) {
             return;
         }
+
         List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();
         if (allDoctorWradDocs.size() == 0) {
             return;
@@ -56,6 +59,7 @@ public class THR02931 extends QCCatalogue {
             }
             String recordDateStr = structureMap.get("查房日期");
             if (StringUtil.isNotBlank(recordDateStr)) {
+                recordDateStr = recordDateStr.split(" ")[0];
                 Date recordDate = StringUtil.parseDateTime(recordDateStr);
                 if (recordDate != null && recordDate.after(leaveDate)) {
                     status.set("-1");

+ 7 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02986.java

@@ -58,8 +58,11 @@ public class THR02986 extends QCCatalogue {
         }
         String infoStr = "";
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
         for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
             Date doctorAdviceDate = doctorAdviceDrug.getKey();
+            String format = sdf1.format(doctorAdviceDate);
+            doctorAdviceDate = StringUtil.parseDateTime(format);
             Set<String> splitDrugs = CatalogueUtil.getRegexWords(doctorAdviceDrug.getValue(), "[((\\[][^\\[\\]()()]+[\\]))]");
 
             boolean isFind = false;
@@ -100,9 +103,12 @@ public class THR02986 extends QCCatalogue {
         for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
             Map<String, String> wardDocStructureMap = threeLevelWardDoc.getStructureMap();
             String wardDateStr = wardDocStructureMap.get("查房日期");
+            if(StringUtils.isNotBlank(wardDateStr)){
+                wardDateStr = wardDateStr.split(" ")[0];
+            }
             String content = wardDocStructureMap.get("病情记录") + wardDocStructureMap.get("治疗计划和措施");
             Date wardDate = StringUtil.parseDateTime(wardDateStr);
-            if (doctorAdviceDate.before(wardDate) && !CatalogueUtil.compareTime(doctorAdviceDate, wardDate, days * 24 * 60L)) {
+            if ((doctorAdviceDate.before(wardDate) || doctorAdviceDate.equals(wardDate)) && !CatalogueUtil.compareTime(doctorAdviceDate, wardDate, days * 24 * 60L)) {
                 if (content.contains(drug)) {
                     matchSum++;
                 }

+ 55 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03016.java

@@ -62,20 +62,24 @@ public class THR03016 extends QCCatalogue {
             }
             int hoursPerWeek = 3 * 24 * 60;
             String roundRecordThisWeek = "";
+            String recordDoctorThisWeek = "";
             List<String> roundRecordEveryWeek = new ArrayList<>();
+            List<String> recordDoctorEveryWeek = new ArrayList<>();
             beginDate = DateUtil.dateZeroClear(DateUtil.addDate(beginDate, 1));//从入院时间第二天0点开始算
             int i = 1;
             String lastWardDateRange = "";
             List<String> lastWardDateRangeList = new ArrayList<>();
             //每3天的病历记录
             while (i >= 1) {
-                roundRecordThisWeek = extractWardRecord(inputInfo, allDoctorWradDocs, beginDate, hoursPerWeek, lastRecordDate);
+                roundRecordThisWeek = extractWardRecord(allDoctorWradDocs, beginDate, hoursPerWeek, lastRecordDate);
+                recordDoctorThisWeek = extractRecordDoctor(allDoctorWradDocs, beginDate, hoursPerWeek, lastRecordDate);
                 if (CatalogueUtil.isEmpty(roundRecordThisWeek)) {
                     break;
                 }
                 lastWardDateRange = DateUtil.formatDate(beginDate) + "    ->    " + DateUtil.formatDate(DateUtil.addDate(beginDate, 2));
                 lastWardDateRangeList.add(lastWardDateRange);
                 roundRecordEveryWeek.add(roundRecordThisWeek);
+                recordDoctorEveryWeek.add(recordDoctorThisWeek);
                 beginDate = DateUtil.addDate(beginDate, 3);
                 i++;
             }
@@ -84,6 +88,18 @@ public class THR03016 extends QCCatalogue {
                 return;
             }
             List<String> resultInfos = new ArrayList<>();
+            for (int j = 0; j < recordDoctorEveryWeek.size(); j++) {
+                int attendNum = CatalogueUtil.appearNumber(recordDoctorEveryWeek.get(j).split(","), "F");
+                if (attendNum == 0) {
+                    //每3天无1次主治医师查房记录
+                    status.set("-1");
+                    resultInfos.add(lastWardDateRangeList.get(j));
+                }
+            }
+            if (resultInfos.size() == 0) {
+                return;
+            }
+
             for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
                 int attendNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.attend);
                 if (attendNum == 0) {
@@ -117,7 +133,7 @@ public class THR03016 extends QCCatalogue {
      * @param duration
      * @return
      */
-    private static String extractWardRecord(InputInfo inputInfo, List<ThreeLevelWardDoc> threeLevelWardDocs, Date admisDate, int duration, Date maxRecordDate) {
+    private static String extractWardRecord(List<ThreeLevelWardDoc> threeLevelWardDocs, Date admisDate, int duration, Date maxRecordDate) {
         String recordTime = "", recordTitle = "", title = "";
         List<Date> dateList = new ArrayList();
         for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
@@ -131,22 +147,49 @@ public class THR03016 extends QCCatalogue {
             if (recordDate == null) {
                 continue;
             }
-            /* 替换查房标题中主刀/一助的职称 */
-            /*List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-            if (title.contains("主刀")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "主刀医师");
-                title = title.replace("主刀", doctorTitle);
-            } else if (title.contains("一助")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "一助");
-                title = title.replace("一助", doctorTitle);
-            }*/
             if (admisDate.before(recordDate) && !CatalogueUtil.compareTime(admisDate, recordDate, Long.valueOf(duration))) {
                 recordTitle += title + ",";
                 dateList.add(recordDate);
             }
         }
         if (dateList.size() > 0) {
-            //dateList.sort(Date::compareTo);
+            if (!maxRecordDate.equals(dateList.get(dateList.size() - 1)) || CatalogueUtil.compareTime(admisDate, dateList.get(dateList.size() - 1), Long.valueOf(2 * 24 * 60))) {
+                return recordTitle;
+            }
+        }
+        return "";
+    }
+
+    /**
+     * 抽取duration分钟内所有查房标题
+     * 抽取一周内所有记录医师,若一周内记录少于2天,则返回""
+     *
+     * @param threeLevelWardDocs
+     * @param admisDate
+     * @param duration
+     * @return
+     */
+    private static String extractRecordDoctor(List<ThreeLevelWardDoc> threeLevelWardDocs, Date admisDate, int duration, Date maxRecordDate) {
+        String recordTime = "", recordTitle = "", title = "";
+        List<Date> dateList = new ArrayList();
+        for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
+            Map<String, String> threeLevelWardStructureMap = threeLevelWardDoc.getStructureMap();
+            recordTime = threeLevelWardStructureMap.get("查房日期");
+            title = threeLevelWardStructureMap.get("记录医师个人职称");
+            if (StringUtil.isBlank(recordTime) || StringUtil.isBlank(title)) {
+                continue;
+            }
+            Date recordDate = StringUtil.parseDateTime(recordTime);
+            if (recordDate == null) {
+                continue;
+            }
+
+            if (admisDate.before(recordDate) && !CatalogueUtil.compareTime(admisDate, recordDate, Long.valueOf(duration))) {
+                recordTitle += title + ",";
+                dateList.add(recordDate);
+            }
+        }
+        if (dateList.size() > 0) {
             if (!maxRecordDate.equals(dateList.get(dateList.size() - 1)) || CatalogueUtil.compareTime(admisDate, dateList.get(dateList.size() - 1), Long.valueOf(2 * 24 * 60))) {
                 return recordTitle;
             }

+ 18 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03021.java

@@ -17,6 +17,7 @@ import java.util.Map;
 /**
  * @ClassName : THR03021
  * @Description : 入院48小时内无Fellow以上的医生查房记录
+ * 添加条件,如果记录医师为A,则不报
  * @Author : 胡敬
  * @Date: 2020-03-19 15:50
  */
@@ -49,6 +50,7 @@ public class THR03021 extends QCCatalogue {
                 String wardDateStr = firstAttending.getStructureMap().get("查房日期");
                 if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 48 * 60L)) {
                     status.set("0");
+                    return;
                 }
             }
             if (directorDoctorWardDocs.size() > 0) {
@@ -56,8 +58,24 @@ public class THR03021 extends QCCatalogue {
                 String wardDateStr = firstDirector.getStructureMap().get("查房日期");
                 if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 48 * 60L)) {
                     status.set("0");
+                    return;
                 }
             }
+
+            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+            if(allDoctorWradDocs.size() >0){
+                for (ThreeLevelWardDoc tll:allDoctorWradDocs
+                     ) {
+                    String job = tll.getStructureMap().get("记录医师个人职称");
+                    String decoDa = tll.getStructureMap().get("查房日期");
+                    if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(decoDa), 48 * 60L)
+                    && job.equals("A")) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+
         } else {
             //没有出院小结,这条直接不报错
             status.set("0");