zhanghang пре 3 година
родитељ
комит
061acd744f

+ 18 - 46
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0085.java

@@ -27,11 +27,6 @@ import java.util.Map;
 public class FIRC0085 extends QCCatalogue {
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 有病例特点四字,并该段内容包含病史,体格检查,辅助检查
-         *
-         * 1.在【首次病程录】文书找到【病例特点】四字,2.找是否有【病史(p1)】【体格检查(p2)】【辅助检查(p3)】,除病例特点外,缺失某项不扣分,均无扣10分
-         */
         status.set("0");
         boolean medicalHistory=false;
         boolean physicalCheck=false;
@@ -42,66 +37,43 @@ public class FIRC0085 extends QCCatalogue {
         }
         List<String> physicalCheckList = Content.physicalCheckList;
         List<String> auxiliaryExaminationList = Content.auxiliaryExaminationList;
+        List<String> medicalHistoryList = Content.medicalHistoryList;
+        List<String> physicalCheckBTList = Content.physicalCheckBTList;
         Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
         String characteristics  = structureMap.get("病例特点");
-        String docText = firstCourseRecordDoc.getText();
-        CaseCharacteristicLabel caseCharacteristicLabel = firstCourseRecordDoc.getCaseCharacteristicLabel();
-        if(caseCharacteristicLabel!=null){
-            String text = caseCharacteristicLabel.getText();
-            if(StringUtil.isNotBlank(text)){
-                if(text.contains("病史")||text.contains("既往")){
-                    medicalHistory=true;
-                }
-                for (String physicalCheckStr: physicalCheckList) {
-                    if(text.contains(physicalCheckStr)){
-                        physicalCheck=true;
-                    }
-                }
-                for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
-                    if(text.contains(auxiliaryExaminationStr)){
-                        auxiliaryExamination=true;
-                    }
-                }
-            }
-        }
         //去结构化数据种找
+        //既往
         if(StringUtil.isNotBlank(characteristics)){
-            if(characteristics.contains("病史")||characteristics.contains("既往")){
-                medicalHistory=true;
+            for (String medicalHistoryStr : medicalHistoryList) {
+                if(characteristics.contains(medicalHistoryStr)){
+                    medicalHistory=true;
+                }
             }
             for (String physicalCheckStr: physicalCheckList) {
                 if(characteristics.contains(physicalCheckStr)){
                     physicalCheck=true;
                 }
             }
+
             for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
                 if(characteristics.contains(auxiliaryExaminationStr)){
                     auxiliaryExamination=true;
                 }
             }
-            if(structureMap.get("现病史")!=null){
-                medicalHistory=true;
-            }
-            if(structureMap.get("体格检查")!=null||structureMap.get("查体")!=null||structureMap.get("体温")!=null||structureMap.get("脉搏")!=null||structureMap.get("呼吸")!=null||structureMap.get("血压")!=null){
-                medicalHistory=true;
-            }
-            if(structureMap.get("辅助检查结果")!=null){
-                auxiliaryExamination=true;
-            }
         }
-        if(StringUtil.isNotBlank(docText)){
-            if(docText.contains("病史")||docText.contains("既往")){
+        for (String medicalHistoryStr : medicalHistoryList) {
+            if(StringUtil.isNotEmpty(structureMap.get(medicalHistoryStr))){
                 medicalHistory=true;
             }
-            for (String physicalCheckStr: physicalCheckList) {
-                if(docText.contains(physicalCheckStr)){
-                    physicalCheck=true;
-                }
+        }
+        for (String physicalCheckBT : physicalCheckBTList) {
+            if(StringUtil.isNotEmpty(structureMap.get(physicalCheckBT))){
+                physicalCheck=true;
             }
-            for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
-                if(docText.contains(auxiliaryExaminationStr)){
-                    auxiliaryExamination=true;
-                }
+        }
+        for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
+            if(StringUtil.isNotEmpty(structureMap.get(auxiliaryExaminationStr))){
+                auxiliaryExamination=true;
             }
         }
         if(!medicalHistory&&!physicalCheck&&!auxiliaryExamination){

+ 19 - 45
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC03152.java

@@ -22,11 +22,6 @@ import java.util.Map;
 public class FIRC03152 extends QCCatalogue {
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 有病例特点四字,并该段内容包含病史,体格检查,辅助检查
-         *
-         * 1.在【首次病程录】文书找到【病例特点】四字,2.找是否有【病史(p1)】【体格检查(p2)】【辅助检查(p3)】,除病例特点外,缺失某项不扣分,均无扣10分
-         */
         status.set("0");
         boolean medicalHistory=false;
         boolean physicalCheck=false;
@@ -37,67 +32,46 @@ public class FIRC03152 extends QCCatalogue {
         }
         List<String> physicalCheckList = Content.physicalCheckList;
         List<String> auxiliaryExaminationList = Content.auxiliaryExaminationList;
+        List<String> medicalHistoryList = Content.medicalHistoryList;
+        List<String> physicalCheckBTList = Content.physicalCheckBTList;
         Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
         String characteristics  = structureMap.get("病例特点");
-        String docText = firstCourseRecordDoc.getText();
-        CaseCharacteristicLabel caseCharacteristicLabel = firstCourseRecordDoc.getCaseCharacteristicLabel();
-        if(caseCharacteristicLabel!=null){
-            String text = caseCharacteristicLabel.getText();
-            if(StringUtil.isNotBlank(text)){
-                if(text.contains("病史")||text.contains("既往")){
-                    medicalHistory=true;
-                }
-                for (String physicalCheckStr: physicalCheckList) {
-                    if(text.contains(physicalCheckStr)){
-                        physicalCheck=true;
-                    }
-                }
-                for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
-                    if(text.contains(auxiliaryExaminationStr)){
-                        auxiliaryExamination=true;
-                    }
-                }
-            }
-        }
         //去结构化数据种找
         if(StringUtil.isNotBlank(characteristics)){
-            if(characteristics.contains("病史")||characteristics.contains("既往")){
-                medicalHistory=true;
+            for (String medicalHistoryStr : medicalHistoryList) {
+                if(characteristics.contains(medicalHistoryStr)){
+                    medicalHistory=true;
+                }
             }
             for (String physicalCheckStr: physicalCheckList) {
                 if(characteristics.contains(physicalCheckStr)){
                     physicalCheck=true;
                 }
             }
+
             for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
                 if(characteristics.contains(auxiliaryExaminationStr)){
                     auxiliaryExamination=true;
                 }
             }
-            if(structureMap.get("现病史")!=null){
+        }
+        for (String medicalHistoryStr : medicalHistoryList) {
+            if(StringUtil.isNotEmpty(structureMap.get(medicalHistoryStr))){
                 medicalHistory=true;
             }
-            if(structureMap.get("体格检查")!=null||structureMap.get("查体")!=null||structureMap.get("体温")!=null||structureMap.get("脉搏")!=null||structureMap.get("呼吸")!=null||structureMap.get("血压")!=null){
-                medicalHistory=true;
+        }
+        for (String physicalCheckBT : physicalCheckBTList) {
+            if(StringUtil.isNotEmpty(structureMap.get(physicalCheckBT))){
+                physicalCheck=true;
             }
-            if(structureMap.get("辅助检查结果")!=null){
+        }
+        for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
+            if(StringUtil.isNotEmpty(structureMap.get(auxiliaryExaminationStr))){
                 auxiliaryExamination=true;
             }
         }
-        if(StringUtil.isNotBlank(docText)){
-            if(docText.contains("病史")||docText.contains("既往")){
-                medicalHistory=true;
-            }
-            for (String physicalCheckStr: physicalCheckList) {
-                if(docText.contains(physicalCheckStr)){
-                    physicalCheck=true;
-                }
-            }
-            for (String auxiliaryExaminationStr: auxiliaryExaminationList) {
-                if(docText.contains(auxiliaryExaminationStr)){
-                    auxiliaryExamination=true;
-                }
-            }
+        if(!medicalHistory&&!physicalCheck&&!auxiliaryExamination){
+            return;
         }
         if(!medicalHistory||!physicalCheck||!auxiliaryExamination){
             status.set("-1");

+ 2 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA03153.java

@@ -65,6 +65,8 @@ public class INVA03153 extends QCCatalogue {
             List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
             if(ListUtil.isEmpty(invasiveOperationDocs)||invasiveOperationDocs.size()==0){
                 return;
+            }else {
+                status.set("0");
             }
         }
     }

+ 5 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE03144.java

@@ -40,22 +40,23 @@ public class OPE03144 extends QCCatalogue {
                     if(structureMap==null){
                         continue;
                     }
-                    status.set("-1");
+             //
                     //获取【手术医师】
-                    String surgeryName = structureMap.get("手术医师");
+                    String surgeryName = structureMap.get("主刀医师");
                     String physiciansName = structureMap.get("主刀医师签名");
                     //获取审核人
                     String reviewerName = structureMap.get("审核人");
                     if((StringUtil.isNotBlank(physiciansName)||StringUtil.isNotBlank(reviewerName)) && StringUtil.isNotBlank(surgeryName)){
                         //主刀医师签名 与【手术医师】比较
+                        status.set("-1");
                         if(StringUtil.isNotBlank(physiciansName)) {
                             if (surgeryName.equals(physiciansName)) {
                                 status.set("0");
                                 return;
                             }
                         }
-                        if(StringUtil.isNotBlank(surgeryName)) {
-                            if (surgeryName.equals(surgeryName)) {
+                        if(StringUtil.isNotBlank(reviewerName)) {
+                            if (surgeryName.equals(reviewerName)) {
                                 status.set("0");
                                 return;
                             }

+ 40 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03139.java

@@ -51,7 +51,7 @@ public class THR03139 extends QCCatalogue {
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
         //所有查房
         //可能有多次手术,每次手术前查房都要符合,则需要走完所有的查房,并记录次数
-        for (ThreeLevelWardDoc allDoctorWradDoc : allDoctorWradDocs) {
+        ac :for (ThreeLevelWardDoc allDoctorWradDoc : allDoctorWradDocs) {
             Map<String, String> docStructureMap = allDoctorWradDoc.getStructureMap();
             if (docStructureMap == null) {
                 continue;
@@ -65,32 +65,39 @@ public class THR03139 extends QCCatalogue {
                 status.set("-1");
                 preoperativeNum++;
                 //为术前查房,判断记录内是否包含【主刀/分析/指出/认为/指示】或【主刀医师名字】
-                String illnessRecords = docStructureMap.get("病情记录");
+                String key = getKeyByHospitalId();
+                String illnessRecords = docStructureMap.get(key);
                 if (StringUtil.isBlank(illnessRecords)) {
                     continue;
                 }
                 List<String> cfButcherOpinionList = Content.cfButcherOpinionList;
+                String rex1 = "(?=拟)[^,;,;。]*(?=行)[^,;,;。]*(?=术)";
                 for (String cfButcherOpinion : cfButcherOpinionList) {
                     if (illnessRecords.contains(cfButcherOpinion)) {
                         opinionNum++;
-                        continue;
+                        continue ac;
                     }
                 }
+                String str = Str(illnessRecords);
+                if(str.matches(rex1)){
+                    opinionNum++;
+                    continue ac;
+                }
                 String recordTime = docStructureMap.get("查房日期");
                 if(StringUtil.isBlank(recordTime)){
-                    continue;
+                    continue ac;
                 }
                 Date recordDate = StringUtil.parseDateTime(recordTime);
                 //获取手术记录
                 if(ListUtil.isEmpty(operationDocs) || operationDocs.size()==0){
-                    continue;
+                    continue ac;
                 }
                 String doctorName = getButcherDoctorName(operationDocs, recordDate);
                 if(StringUtil.isNotBlank(doctorName)) {
                     //包含主刀医师名字
                     if (illnessRecords.contains(doctorName)) {
                         opinionNum++;
-                        continue;
+                        continue ac;
                     }
                 }
                 //获取术前讨论
@@ -98,7 +105,7 @@ public class THR03139 extends QCCatalogue {
                 if(StringUtil.isNotBlank(discussDoctorName)) {
                     if (illnessRecords.contains(discussDoctorName)) {
                         opinionNum++;
-                        continue;
+                        continue ac;
                     }
                 }
             }
@@ -197,5 +204,31 @@ public class THR03139 extends QCCatalogue {
         }
         return title;
     }
+    private String Str(String str){
+        str = str.replaceAll("\\*", "\\\\*");
+        str = str.replaceAll("\\)", "\\\\)");
+        str = str.replaceAll("\\.", "\\\\.");
+        str = str.replaceAll("\\?", "\\\\?");
+        str = str.replaceAll("\\+", "\\\\+");
+        str = str.replaceAll("\\$", "\\\\$");
+        str = str.replaceAll("\\^", "\\\\^");
+        str = str.replaceAll("\\[", "\\\\[");
+        str = str.replaceAll("\\]", "\\\\]");
+        str = str.replaceAll("\\(", "\\\\(");
+        str = str.replaceAll("\\{", "\\\\{");
+        str = str.replaceAll("\\}", "\\\\}");
+        str = str.replaceAll("\\|", "\\\\|");
+        str = str.replaceAll("\\/", "\\\\/");
+        return str;
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "3":               //台州
+                return "查房内容";
+            default:
+                return "病情记录";
+        }
+    }
 
 }

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

@@ -28,13 +28,6 @@ import java.util.Map;
  */
 @Component
 public class THR03140 extends QCCatalogue {
-    /**
-     * 查房记录内找是否有标题【术前*查房】,找到判断签名处是否有【主刀医师名字】:p8
-     * p8:【手术记录单/术前讨论、术前小结】内【手术医师/主刀医师签名】
-     *
-     * @param inputInfo
-     * @param outputInfo
-     */
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         int preoperativeNum=0;

+ 58 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03147.java

@@ -7,6 +7,8 @@ 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 com.lantone.qc.pub.model.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.ListUtil;
@@ -29,16 +31,46 @@ public class THR03147 extends QCCatalogue {
     @Autowired
     private SpecialStorageUtil specialStorageUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 出院时间前48小时,48小时内找上级医师同意出院的病程记录
-         *
-         * 以患者病案首页【出院时间】找前48小时内【查房记录】,查房记录标题或查房记录内容或医生签字包含【/主任/主治/主治及以上医师姓名】和查房记录内容包含【出院】同时存在
-         * 医生签名加上审核医师和记录医师
-         */
         status.set("0");
         if(inputInfo.getFirstPageRecordDoc()==null || inputInfo.getFirstPageRecordDoc().getStructureMap()==null){
             return;
         }
+        //死亡记录不为空
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if(deathRecordDoc!=null){
+            return;
+        }
+        //死亡患者不判断
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        if(ListUtil.isNotEmpty(doctorAdviceDocs)){
+            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+                //取长期临时医嘱,不为作废医嘱
+                if(doctorAdviceDoc.getStructureMap()==null) {
+                    continue;
+                }
+                Map<String, String> doctorAdviceDocStructureMap = doctorAdviceDoc.getStructureMap();
+                String adviceType = doctorAdviceDocStructureMap.get(Content.doctorAdviceType);
+                if (StringUtil.isEmpty(adviceType)) {
+                    continue;
+                }
+                if (adviceType.equals(Content.standingOrder) || adviceType.equals(Content.statOrder)) {
+                    String adviceState = doctorAdviceDocStructureMap.get(Content.doctorAdviceState);
+                    if (StringUtil.isEmpty(adviceState)) {
+                        continue;
+                    }
+                    if (!Content.cancellationOrderList.contains(adviceState)) {
+                        //死亡医嘱
+                        String medicalOrderName = doctorAdviceDoc.getStructureMap().get(Content.medicalOrderName);
+                        if(StringUtil.isBlank(medicalOrderName)) {
+                            continue;
+                        }
+                        if (medicalOrderName.contains("死亡")) {
+                            return;
+                        }
+                    }
+                }
+            }
+        }
         //获取病案首页出院时间
         String dischargeTime = inputInfo.getFirstPageRecordDoc().getStructureMap().get("出院时间");
         if (CatalogueUtil.isEmpty(dischargeTime)) {
@@ -81,7 +113,8 @@ public class THR03147 extends QCCatalogue {
                     Long.valueOf(48 * 60))){
                 flag=false;
                 //出院前48小时的查房记录
-                String illnessRecords = structureMap.get("病情记录");
+                String key = getKeyByHospitalId();
+                String illnessRecords = structureMap.get(key);
                 //包含出院
                 if(StringUtil.isNotEmpty(illnessRecords)){
                 if(illnessRecords.contains("出院")) {
@@ -92,24 +125,24 @@ public class THR03147 extends QCCatalogue {
                         for (String superior : superiorList) {
                             if (roundTitle.contains(superior)) {
                                 flag=true;
-                                break;
+                                return flag;
                             }
                         }
                        if(judgeContainsDoctor(roundTitle)){
                             flag=true;
-                            break;
+                           return flag;
                         }
                     }
                     //查房记录判断
                         for (String superior : superiorList) {
                             if (illnessRecords.contains(superior)) {
                                 flag=true;
-                                break;
+                                return flag;
                             }
                         }
                     if(judgeContainsDoctor(illnessRecords)){
                         flag=true;
-                        break;
+                        return flag;
                     }
                     //审核人判断
                     String reviewer = structureMap.get("审核人");
@@ -117,12 +150,12 @@ public class THR03147 extends QCCatalogue {
                         for (String superior : superiorList) {
                             if (reviewer.contains(superior)) {
                                 flag=true;
-                                break;
+                                return flag;
                             }
                         }
                         if(judgeContainsDoctor(reviewer)){
                             flag=true;
-                            break;
+                            return flag;
                         }
                     }
                     //记录医师判断
@@ -131,12 +164,12 @@ public class THR03147 extends QCCatalogue {
                         for (String superior : superiorList) {
                             if (recordsPhysicians.contains(superior)) {
                                 flag=true;
-                                break;
+                                return flag;
                             }
                         }
                         if(judgeContainsDoctor(recordsPhysicians)){
                             flag=true;
-                            break;
+                            return flag;
                         }
                     }
                 }
@@ -169,4 +202,14 @@ public class THR03147 extends QCCatalogue {
         return false;
     }
 
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "3":               //台州
+                return "查房内容";
+            default:
+                return "病情记录";
+        }
+    }
+
 }

+ 0 - 16
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03149.java

@@ -31,22 +31,6 @@ public class THR03149 extends QCCatalogue {
     @Autowired
     private SpecialStorageUtil specialStorageUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 【抢救开始时间】时间延后6小时内,找标题为【主任*查房】或【主任级别的姓名查房】,若无报出
-         *
-         * 1.先判断是否是抢救患者p6,排除死亡患者p9,排除出院时间和抢救记录时间为同一天。2.找抢救时间p10,延后6小时内,是否有上级医师查房p11,
-         * 若有不报,若无3.去【抢救记录】内找是否有包含【上级医师姓名】/【主任】字段,若无报出
-         *
-         * 符合下列情况的任意一种则成立:
-         * 1.病历包含【死亡记录】
-         * 2.【临时医嘱】包含【死亡】医嘱
-         *
-         * 符合下列情况的任意一种则成立:
-         * 1.【抢救记录】标题【抢救时间】
-         * 2.【抢救记录】抢救过程包含【抢救时间及措施】
-         *
-         * 【查房记录】标题为【主任*查房】或【主任级别的姓名查房】
-         */
         status.set("0");
         boolean falg=false;
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();

+ 0 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03150.java

@@ -29,21 +29,6 @@ public class THR03150 extends QCCatalogue {
     @Autowired
     private SpecialStorageUtil specialStorageUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 如果有未在6小时内完成的去首次病程里找有没有,请示**上级医生,字段,如果没有就算他未及时
-         *
-         * 1.先判断是否是危重患者p5,排除死亡患者p9,排除出院时间和病危时间为同一天。2.医嘱内下达【病危/病重】开始时间,延后6小时内,是否有上级医师查房p11,
-         *   若有不报,若无3.去【首次病程记录/抢救记录】内找是否有包含【上级医师姓名】/【主任】字段,若无报出
-         *p5
-         * 1.【临时医嘱/长期医嘱】包含【病危/病重】医嘱
-         * 或2.【病危通知书/病重通知书】文书
-         *p9
-         * 符合下列情况的任意一种则成立:
-         * 1.病历包含【死亡记录】
-         * 2.【临时医嘱】包含【死亡】医嘱
-         *p11
-         * 【查房记录】标题为【主任*查房】或【主任级别的姓名查房】
-         */
         status.set("0");
         boolean falg=false;
         String doctorStartTime="";

+ 38 - 19
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03151.java

@@ -6,6 +6,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.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.DateUtil;
@@ -28,28 +30,45 @@ public class THR03151 extends QCCatalogue {
     @Autowired
     private SpecialStorageUtil specialStorageUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 首先确认住院天数是否超过72小时,然后取查房标题,判断标题是否为主任查房
-         *
-         * 确认住院天数已超过【72小时/3天】,【查房记录】内找标题为【主任*查房】或【主任级别的姓名查房】,若无报出
-         */
         status.set("0");
         boolean flag=false;
-        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
-        if (medicalRecordInfoDoc != null && medicalRecordInfoDoc.getStructureMap() != null) {
-            //入院日期
-            String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
-            //出院日期
-            String dischargeTime = medicalRecordInfoDoc.getStructureMap().get("leaveHospitalDate");
-            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
-                return;
+        boolean getTime=false;
+        //先从病案首页取入院出院时间
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        if(firstPageRecordDoc!=null){
+            String admisTime = firstPageRecordDoc.getStructureMap().get("入院时间");
+            String dischargeTime = firstPageRecordDoc.getStructureMap().get("出院时间");
+            if(CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)){
+                //病案首页时间不存在则去出院小结取
+                getTime=true;
+            }else {
+                //不为空如果住院天数小于2天则不判断该条规则
+                if (DateUtil.parseDate(dischargeTime) != null &&
+                        !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
+                    return;
+                } else {
+                    flag=true;
+                }
             }
-            //如果住院天数小于2天则不判断该条规则
-            if (DateUtil.parseDate(dischargeTime) != null &&
-                    !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
-                return;
-            } else {
-               flag=true;
+        }
+        if(getTime){
+            //
+            LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+            if(leaveHospitalDoc!=null){
+                String admisTime = firstPageRecordDoc.getStructureMap().get("入院时间");
+                String dischargeTime = firstPageRecordDoc.getStructureMap().get("出院时间");
+                if(CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)){
+                    //病案首页时间不存在则去出院小结取
+                    return;
+                }else {
+                    //不为空如果住院天数小于2天则不判断该条规则
+                    if (DateUtil.parseDate(dischargeTime) != null &&
+                            !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
+                        return;
+                    } else {
+                        flag=true;
+                    }
+                }
             }
         }
         if(flag){

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

@@ -420,11 +420,21 @@ public class Content {
     public static List<String>  indicationsAboveList= Arrays.asList(
             "主任","主治","副主任"
     );
+    //病例特点病史
+    public static List<String>  medicalHistoryList= Arrays.asList(
+            "病史","既往","发病经过"
+    );
+    //病例特点体格检查
     public static List<String>  physicalCheckList= Arrays.asList(
-            "体格检查","查体","体温","脉搏","呼吸","血压"
+            "专科检查","查体","体温","脉搏","呼吸","血压"
+    );
+    //病例特点体格检查
+    public static List<String>  physicalCheckBTList= Arrays.asList(
+            "专科检查","查体"
     );
+    //病例特点辅助检查
     public static List<String>  auxiliaryExaminationList= Arrays.asList(
-            "辅助检查","辅检"
+            "辅助检查","辅检","辅助检查结果","实验室检查","影像学检查"
     );
     //台州有创目录
     public static List<String>  haveOperationList= Arrays.asList(

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstCourseRecordDocTrans.java

@@ -85,8 +85,8 @@ public class TaiZhouFirstCourseRecordDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "本人姓名=姓名",
-            "现病史- 发病情况=现病史",
-            "现病史- 发病情况=现病史",
+            "现病史- 发病情况=发病经过",
+            "现病史- 发病情况=发病经过",
             "医生=医师签名",
             "治疗计划和措施=治疗计划",
             "体温(耳)=体温耳",

+ 9 - 0
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouThreeLevelWardDocTrans.java

@@ -14,6 +14,7 @@ import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.GeneralDoctorWardDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.FastJsonUtils;
+import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
@@ -78,7 +79,15 @@ public class TaiZhouThreeLevelWardDocTrans extends ModelDocTrans {
             if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("上级查房医生职称"))) {
                 structureMap.put("查房标题", structureMap.get("上级查房医生职称"));
             }
+
         }
+                structureMap.put("查房内容", MapUtil.getSelectString(structureMap, Arrays.asList(
+                        "病情记录",
+                        "体检",
+                        "治疗计划和措施",
+                        "主诉"
+                        ))
+                );
         //总的查房记录 汇总
         ThreeLevelWardDoc allDoctorWradDoc = new ThreeLevelWardDoc();
         allDoctorWradDoc.setStructureMap(structureMap);