Selaa lähdekoodia

北仑: 取病例中的入院日期比较,入院和出院超过48小时没有查房记录提示信息

huj 4 vuotta sitten
vanhempi
commit
e6ad1ce5b3

+ 16 - 11
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/threelevelward/THR0126.java

@@ -7,6 +7,7 @@ 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.FirstCourseRecordDoc;
+import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
@@ -28,16 +29,14 @@ import java.util.Map;
 @Component
 public class THR0126 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
-            status.set("0");
-            return;
-        }
-        if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null
-                && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> getLeaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            String admisTime = getLeaveHospitalStructureMap.get("入院日期");
-            String dischargeTime = getLeaveHospitalStructureMap.get("出院日期");
-            if (CatalogueUtil.isEmpty(admisTime)) {
+
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null &&
+                medicalRecordInfoDoc != null) {
+            Map<String, String> getFirstPageRecordStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
+            String dischargeTime = getFirstPageRecordStructureMap.get("出院时间");
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
                 status.set("0");
                 return;
             }
@@ -53,12 +52,18 @@ public class THR0126 extends QCCatalogue {
                     !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
                 status.set("0");
                 return;
+            } else {
+                if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+                    return;
+                }
             }
         }
+
         if (inputInfo.getBeHospitalizedDoc() != null) {
             Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
             String admisTime = beHospitalStructureMap.get("入院日期");
             if (CatalogueUtil.isEmpty(admisTime)) {
+                status.set("0");
                 return;
             }
             if (!CatalogueUtil.compareTime(
@@ -79,7 +84,7 @@ public class THR0126 extends QCCatalogue {
             if (firstCourseRecordDoc != null) {
                 String doctorSign = firstCourseRecordDoc.getStructureMap().get("医生签名");
                 String firstCourseProfessor = getFirstCourseProfessor(doctorSign);
-                if (firstCourseProfessor.contains("主治") || firstCourseProfessor.contains("主任")) {
+                if (firstCourseProfessor.contains("主治")) {
                     String recordDateStr = firstCourseRecordDoc.getStructureMap().get("记录时间");
                     if (StringUtil.isNotBlank(recordDateStr)) {
                         if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {

+ 32 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/threelevelward/THR0144.java

@@ -5,10 +5,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.DeathCaseDiscussDoc;
-import com.lantone.qc.pub.model.doc.DeathRecordDoc;
-import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.*;
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -24,10 +22,36 @@ import java.util.Map;
 @Component
 public class THR0144 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
-            status.set("0");
-            return;
+
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null &&
+                medicalRecordInfoDoc != null) {
+            Map<String, String> getFirstPageRecordStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
+            String dischargeTime = getFirstPageRecordStructureMap.get("出院时间");
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+                status.set("0");
+                return;
+            }
+            if (!CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisTime),
+                    StringUtil.parseDateTime(DateUtil.nowString()),
+                    Long.valueOf(48 * 60))) {//如果入院未超过48小时,规则不判断
+                status.set("0");
+                return;
+            }
+            //如果住院天数小于2天则不判断该条规则
+            if (DateUtil.parseDate(dischargeTime) != null &&
+                    !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
+                status.set("0");
+                return;
+            } else {
+                if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+                    return;
+                }
+            }
         }
+
         LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
         DeathCaseDiscussDoc deathCaseDiscussDoc = inputInfo.getDeathCaseDiscussDoc();
@@ -54,7 +78,7 @@ public class THR0144 extends QCCatalogue {
                 continue;
             }
             conditionRecord = StringUtil.isBlank(conditionRecord) ? "" : conditionRecord;
-            conditionRecord = conditionRecord.replace(" ","");
+            conditionRecord = conditionRecord.replace(" ", "");
             treatmentPlan = StringUtil.isBlank(treatmentPlan) ? "" : treatmentPlan;
             //主任或主治查房 标题需要包含“主任”或“主治”,内容需要包含“出院”
             if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院") || conditionRecord.contains("转上级医院"))

+ 36 - 14
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/threelevelward/THR0601.java

@@ -7,8 +7,10 @@ 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.MedicalRecordInfoDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
@@ -26,15 +28,42 @@ import java.util.Map;
 public class THR0601 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getLeaveHospitalDoc() == null || inputInfo.getThreeLevelWardDocs().size() == 0) {
-            return;
-        }
-        Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-        String lengthOfStay = leaveHospitalStructureMap.get("住院天数");
-        if (StringUtil.isNotBlank(lengthOfStay) && CatalogueUtil.numbersOnly(lengthOfStay)) {
+
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null &&
+                medicalRecordInfoDoc != null) {
+            Map<String, String> getFirstPageRecordStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
+            String dischargeTime = getFirstPageRecordStructureMap.get("出院时间");
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+                return;
+            }
+            if (!CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisTime),
+                    StringUtil.parseDateTime(DateUtil.nowString()),
+                    Long.valueOf(48 * 60))) {//如果入院未超过48小时,规则不判断
+                return;
+            }
             //如果住院天数小于2天则不判断该条规则
-            if (Integer.parseInt(lengthOfStay) <= 2) {
+            if (DateUtil.parseDate(dischargeTime) != null &&
+                    !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
                 return;
+            } else {
+                if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+
+        if (inputInfo.getLeaveHospitalDoc() != null) {
+            Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+            String lengthOfStay = leaveHospitalStructureMap.get("住院天数");
+            if (StringUtil.isNotBlank(lengthOfStay) && CatalogueUtil.numbersOnly(lengthOfStay)) {
+                //如果住院天数小于2天则不判断该条规则
+                if (Integer.parseInt(lengthOfStay) <= 2) {
+                    return;
+                }
             }
         }
 
@@ -58,13 +87,6 @@ public class THR0601 extends QCCatalogue {
             }
         }
 
-        //取病案首页主治医生名称
-//        String visitingStaff = "";
-//        if (inputInfo.getFirstPageRecordDoc() != null) {
-//            Map<String, String> firstPageStructureExtMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-//            visitingStaff = firstPageStructureExtMap.get("主治医师");
-//        }
-
         List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();//查房记录
         String title, record;
         boolean findIndications = false;