Pārlūkot izejas kodu

宁海和义乌bug修改

songxinlu 4 gadi atpakaļ
vecāks
revīzija
f1a929097f

+ 0 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/crisisvaluereport/CRI0382.java

@@ -50,7 +50,6 @@ public class CRI0382 extends QCCatalogue {
                 }
             }
         }
-        ;
         if (isOutTime == false) {   //所有文书都未超过6小时,规则直接通过
             return;
         }

+ 9 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/ninghaiyiyi/behospitalized/BEH0439.java

@@ -4,7 +4,8 @@ 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.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -28,14 +29,19 @@ public class BEH0439 extends QCCatalogue {
         if (bhMap != null && fprMap != null) {
             String birthDate_bh = bhMap.get("出生日期");
             String birthDate_fpr = fprMap.get("出生日期");
+            String[] dateFormats = new String[]{"yyyy年MM月dd日", "yyyy-MM-dd"};
             if (birthDate_bh != null && birthDate_fpr != null) {
                 if (!CatalogueUtil.isEmpty(birthDate_bh) && !CatalogueUtil.isEmpty(birthDate_fpr)) {
-                    if (!DateUtil.format(DateUtil.parseDate(birthDate_bh), DateUtil.DATE_FORMAT).equals(DateUtil.format(DateUtil.parseDate(birthDate_fpr), DateUtil.DATE_FORMAT))) {
+                    if(!DateUtils.isSameInstant(StringUtil.parseDateTime(birthDate_bh, dateFormats)
+                            ,StringUtil.parseDateTime(birthDate_fpr, dateFormats)))
+                    {
                         status.set("-1");
                     }
+//                    if (!DateUtil.format(DateUtil.parseDate(birthDate_bh), DateUtil.DATE_FORMAT).equals(DateUtil.format(DateUtil.parseDate(birthDate_fpr), DateUtil.DATE_FORMAT))) {
+//                        status.set("-1");
+//                    }
                 }
             }
         }
-
     }
 }

+ 23 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/ninghaiyiyi/threelevelward/THR0125.java

@@ -13,6 +13,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName : THR0125
@@ -87,6 +88,28 @@ public class THR0125 extends QCCatalogue {
                 return;
             }
 
+            //===========三级医师相当于主治医生==========
+            List<ThreeLevelWardDoc>  allDoctorWradDocs =  threeLevelWardDoc.getAllDoctorWradDocs();
+            if(allDoctorWradDocs.size()>0)
+            {
+
+                for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
+                    Map<String, String> structureMap = threeLevelWard.getStructureMap();
+                    String makeTitle = structureMap.get("查房标题");
+                    if(StringUtil.isNotBlank(makeTitle)&&makeTitle.contains("三级"))
+                    {
+                        String recordDateStr = structureMap.get("查房日期");
+                        if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime),
+                                StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+                            status.set("0");
+                        }
+                        return;
+                    }
+                }
+
+
+            }
+
             /* 如果存在手术记录,判断主刀医生是否为主治医生 */
 //            String operatorName = "";
 //            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();

+ 21 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/ninghaiyiyi/threelevelward/THR0126.java

@@ -106,6 +106,27 @@ public class THR0126 extends QCCatalogue {
                 status.set("0");//没有主治医师查房,若入院时间和系统当前时间对比,相差48小时则报错
                 return;
             }
+            //===========三级医师相当于主治医生==========
+            List<ThreeLevelWardDoc>  allDoctorWradDocs =  threeLevelWardDoc.getAllDoctorWradDocs();
+            if(allDoctorWradDocs.size()>0)
+            {
+
+                for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
+                    Map<String, String> structureMap = threeLevelWard.getStructureMap();
+                    String makeTitle = structureMap.get("查房标题");
+                    if(StringUtil.isNotBlank(makeTitle)&&makeTitle.contains("三级"))
+                    {
+                        String recordDateStr = structureMap.get("查房日期");
+                        if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime),
+                                StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+                            status.set("0");
+                        }
+                        return;
+                    }
+                }
+
+
+            }
 
             /* 如果存在手术记录,判断主刀医生是否为主治医生 */
 //            String operatorName = "";

+ 9 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/ninghaiyiyi/threelevelward/THR0144.java

@@ -93,13 +93,20 @@ public class THR0144 extends QCCatalogue {
                 return;
             }
             //普通查房 内容需要包含“上级”和“出院”
-            if (StringUtil.isBlank(title)
-                    || (title.contains("日常查房记录") || title.contains("普通查房记录") || title.contains("日常病程记录"))
+            if (StringUtil.isNotBlank(title)
+                    && (title.contains("日常查房记录") || title.contains("普通查房记录") || title.contains("日常病程记录"))
                     && (title.contains("上级") || conditionRecord.contains("上级"))
                     && (conditionRecord.contains("出院") || treatmentPlan.contains("出院"))) {
                 status.set("0");
                 return;
             }
+            // =====添加三级医师查房算出院查房=====
+            if (StringUtil.isNotBlank(title)&& (title.contains("三级"))
+                    && (conditionRecord.contains("出院") || treatmentPlan.contains("出院"))) {
+                status.set("0");
+                return;
+            }
+
             // 添加硬规则,最后一个记录包含“医院”或 “离院”就不报错
             if (lastFlag == true) {
                 if (conditionRecord.contains("医院") || conditionRecord.contains("离院") || conditionRecord.contains("出院")) {

+ 7 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/ninghaiyiyi/threelevelward/THR0601.java

@@ -111,6 +111,13 @@ public class THR0601 extends QCCatalogue {
                 }
             }
 
+            //=======如果是三级医师查房算主治医生查房=======
+            if (StringUtil.isNotBlank(operatorName) && (title.contains("三级") || record.contains("三级"))) {
+                findIndications = true;
+                break;
+            }
+
+
         }
         if (!findIndications) {
             status.set("-1");

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0407.java

@@ -14,7 +14,7 @@ import java.util.Map;
 
 
 /**
- * @ClassName : BEH0407
+ * @ClassName :     BEH0407
  * @Description : 入院记录婚姻未填写
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28

+ 85 - 18
public/src/main/java/com/lantone/qc/pub/util/DateUtil.java

@@ -178,6 +178,59 @@ public class DateUtil {
     public static Date now() {
         return new Date();
     }
+    /**
+     * 获取字符串时间的format
+     * @param time
+     * @return
+     */
+    public static String getTimeFormat(String time)
+    {
+        if(StringUtil.isBlank(time))
+        {
+            return null;
+        }
+        String regex = "\\d+";
+        time = time.replaceAll(regex,"");
+        switch (time)
+        {
+            //===========yyyy年MM月dd日HH时mm分ss秒============
+            case "年月日 时分秒":
+                return "yyyy年MM月dd日 HH时mm分ss秒";
+            case "年月日时分秒":
+                return "yyyy年MM月dd日HH时mm分ss秒";
+            case "年月日 时分":
+                return "yyyy年MM月dd日HH时mm分";
+            case "年月日时分":
+                return "yyyy年MM月dd日HH时mm分";
+            case "年月日 时":
+                return "yyyy年MM月dd日 HH时";
+            case "年月日时":
+                return "yyyy年MM月dd日HH时";
+            case "年月日":
+                return "yyyy年MM月dd日";
+            //===========yyyy-MM-dd HH:mm:ss============
+            case "-- ::":
+                return "yyyy-MM-dd HH:mm:ss";
+            case "-- :":
+                return "yyyy-MM-dd HH:mm";
+            case "-- ":
+                return "yyyy-MM-dd HH";
+            case "--":
+                return "yyyy-MM-dd";
+            //===========yyyy/MM/dd HH:mm:ss============
+            case "// ::":
+                return "yyyy/MM/dd HH:mm:ss";
+            case "// :":
+                return "yyyy/MM/dd HH:mm";
+            case "// ":
+                return "yyyy/MM/dd HH";
+            case "//":
+                return "yyyy/MM/dd";
+            default:
+                break;
+        }
+        return null;
+    }
 
     /**
      * 将日期转换成为字符(yyyy-MM-dd HH:mm:ss.SSS)
@@ -199,24 +252,6 @@ public class DateUtil {
         return null == object ? null : (Date) object;
     }
 
-    /**
-     * 按指定的格式,将字符转换为日期
-     *
-     * @param dateString 日期
-     * @param format     格式
-     * @return 按指定的格式,将字符转换为日期
-     */
-    public static Date parseDate(String dateString, String format) {
-        if (isEmpty(format)) {
-            return null;
-        }
-
-        try {
-            return new SimpleDateFormat(format).parse(dateString);
-        } catch (Exception e) {
-            return null;
-        }
-    }
 
 
     /**
@@ -244,7 +279,39 @@ public class DateUtil {
     public static Date parseDate(String dateString) {
         return parseDate(dateString, DATE_FORMAT);
     }
+    /**
+     * 将字符(yyyy-MM-dd)转换为日期
+     *
+     * @param dateString
+     * @return 将字符(yyyy-MM-dd)转换为日期
+     */
+    public static Date newParseDate(String dateString) {
+        String format = getTimeFormat(dateString);
+        if(format!=null)
+        {
+            return parseDate(dateString, format);
+        }
+        return null;
+    }
 
+    /**
+     * 按指定的格式,将字符转换为日期
+     *
+     * @param dateString 日期
+     * @param format     格式
+     * @return 按指定的格式,将字符转换为日期
+     */
+    public static Date parseDate(String dateString, String format) {
+        if (isEmpty(format)) {
+            return null;
+        }
+
+        try {
+            return new SimpleDateFormat(format).parse(dateString);
+        } catch (Exception e) {
+            return null;
+        }
+    }
     /**
      * 将字符(yyyy-MM-dd HH:mm:ss)转换为日期
      *

+ 23 - 0
trans/src/main/java/com/lantone/qc/trans/yiwu/YiWuThreeLevelWardDocTrans.java

@@ -70,6 +70,8 @@ public class YiWuThreeLevelWardDocTrans extends ModelDocTrans {
             if (recTitles.contains(recTitle)) {
                 sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
             }
+            //病程内容未解析出来 则在原始文本中获取病程内容
+            addContent(sourceMap);
             structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts, modeId);
 
             if (StringUtils.isEmpty(structureMap.get("查房日期"))) {
@@ -111,6 +113,27 @@ public class YiWuThreeLevelWardDocTrans extends ModelDocTrans {
         }
     }
 
+    private void addContent(Map<String, String> sourceMap) {
+        try
+        {
+            if(sourceMap.containsKey("病程内容")&&StringUtil.isBlank(sourceMap.get("病程内容"))
+                    &&sourceMap.containsKey("原始文本")&&StringUtil.isNotBlank(sourceMap.get("原始文本"))
+                    &&sourceMap.containsKey("病程标题")&&StringUtil.isNotBlank(sourceMap.get("病程标题")))
+            {
+                String content = StringUtil.trim(sourceMap.get("原始文本").split(sourceMap.get("病程标题"))[1]);
+                if(content.contains("记录医师"))
+                {
+                    content = StringUtil.trim(content.split("记录医师")[0]);
+                }
+                sourceMap.put("病程内容",content);
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 主任医师查房
      *