Parcourir la source

每3天无1次主治医师查房记录(Fellow查房记录每3天1次)
记录医师职称为F就不报

kongwz il y a 5 ans
Parent
commit
4b781c730a

+ 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;
             }