Browse Source

萧山中医院问题更新

wangsy 3 years ago
parent
commit
5372849942

+ 5 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/firstcourserecord/FIRC0087.java

@@ -35,9 +35,14 @@ public class FIRC0087 extends QCCatalogue {
             Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
             //若拟诊讨论中记录鉴别诊断,则返回
             String exToDiscuss = structureMap.get("拟诊讨论");
+            //若诊断依据中记录鉴别诊断,则返回
+            String diagnoseResuse = structureMap.get("诊断依据");
             if (StringUtil.isNotBlank(exToDiscuss) && exToDiscuss.contains("鉴别诊断")) {
                 return;
             }
+            if (StringUtil.isNotBlank(diagnoseResuse) && (diagnoseResuse.contains("鉴别诊断") || diagnoseResuse.contains("诊断鉴别"))) {
+                return;
+            }
             if (differentialDiagLabel != null) {
                 String diffDiagStruct = structureMap.get("鉴别诊断");
                 if (StringUtils.isNotEmpty(diffDiagStruct)) {

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA03195.java

@@ -1,4 +1,4 @@
-package com.lantone.qc.kernel.catalogue.hospital.changshaxy.leavehospital;
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.leavehospital;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
  * @time: 2020/3/10 13:53
  */
 @Component
-public class LEA03195 extends QCCatalogue {
+public class LEA0152 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
@@ -27,7 +27,7 @@ public class LEA03195 extends QCCatalogue {
         if (deathRecordDoc != null) {
             status.set("0");
         } else {
-            String message = leaveHospitalDoc.getStructureMap().get("诊经过");
+            String message = leaveHospitalDoc.getStructureMap().get("诊经过");
             if (StringUtil.isNotBlank(message)) {
                 status.set("0");
             }

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/operationdiscussion/OPE03144.java

@@ -41,14 +41,14 @@ public class OPE03144 extends QCCatalogue {
                     }
                     //获取手术人员
                     String surgeryName = structureMap.get("手术人员");
-                    //获取【主刀医师、记录医
+                    //获取【主刀医师、记录医
                     String physiciansName = structureMap.get("主刀医师");
-                    String reviewerName = 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)) {
+                            if (surgeryName.contains(physiciansName)) {
                                 status.set("0");
                                 return;
                             }

+ 143 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/threelevelward/THR0601.java

@@ -0,0 +1,143 @@
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.threelevelward;
+
+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.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.model.doc.ward.AttendingDoctorWardDoc;
+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;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0601
+ * @Description : 整份病历无主治医师查房记录
+ * @Author : 胡敬
+ * @Date: 2020-03-25 10:21
+ */
+@Component
+public class THR0601 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+
+        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;
+            }
+            if (!CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisTime),
+                    StringUtil.parseDateTime(DateUtil.nowString()),
+                    Long.valueOf(48 * 60))) {//如果入院未超过48小时,规则不判断
+                return;
+            }
+            //如果住院天数小于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;
+                }
+            }
+        }
+
+        /* 如果存在手术记录,判断主刀医生是否为主治医生 */
+        String operatorName = "";
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (operationDocs != null) {
+            for (OperationDoc operationDoc : operationDocs) {
+                if (operationDoc.getOperationRecordDoc() != null) {
+                    Map<String, String> operationDocStructureMap = operationDoc.getOperationRecordDoc().getStructureMap();
+                    if (StringUtil.isBlank(operatorName)) {
+                        operatorName = operationDocStructureMap.get("主刀医师");
+                        if (StringUtil.isBlank(operatorName) && StringUtil.isNotBlank(operationDocStructureMap.get("手术者及助手名称"))) {
+                            operatorName = operationDocStructureMap.get("手术者及助手名称").split("、")[0];
+                            if (operatorName.contains("主刀:") && operatorName.split(":").length > 1) {
+                                operatorName = operatorName.split(":")[1];
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+
+        List<AttendingDoctorWardDoc> attendingDoctorWardDocs = inputInfo.getThreeLevelWardDocs().get(0).getAttendingDoctorWardDocs();//主治查房记录
+        if (attendingDoctorWardDocs != null && attendingDoctorWardDocs.size() > 0) {
+            return;
+        }
+
+        List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();//查房记录
+        String title, record;
+        boolean findIndications = false;
+        for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
+            Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
+            title = rescueStructureMap.get("查房标题");
+            record = rescueStructureMap.get("病情记录");
+            if (StringUtil.isNotBlank(title) && title.contains(Content.attend)) {
+                findIndications = true;
+                break;
+            }
+            if (StringUtil.isNotBlank(record) && record.contains(Content.attend)) {
+                findIndications = true;
+                break;
+            }
+
+            if (StringUtil.isNotBlank(operatorName) && (title.contains("主刀") || record.contains("主刀"))) {
+                String operationProfessor = getCourseProfessor(operatorName);
+                if (operationProfessor.contains("主治")) {
+                    findIndications = true;
+                    break;
+                }
+            }
+
+        }
+        if (!findIndications) {
+            status.set("-1");
+        }
+    }
+
+    private String getCourseProfessor(String operatorName) {
+        String professor = "";
+        if (StringUtil.isBlank(operatorName)) {
+            return professor;
+        }
+        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
+        Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+        if (surgeon != null) {
+            Map<String, String> doctor = (Map) surgeon.get(operatorName);
+            if (doctor != null) {
+                professor = doctor.get("professor");
+            }
+
+        }
+        return professor;
+    }
+}

+ 9 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE03235.java

@@ -40,8 +40,12 @@ public class OPE03235 extends QCCatalogue {
                 if (StringUtil.isBlank(operationDayStr)) {
                     continue;
                 }
-                String operationDatesStr = operationDayStr.substring(0,10);//截取手术日期
-                String operationTimeStr = structureMap.get("开始时间").substring(0,5);//截取开始时间
+                String operationDatesStr = operationDayStr.substring(0, Math.min(10, operationDayStr.length()));//截取手术日期
+                String startTime = structureMap.get("开始时间");
+                if (StringUtil.isBlank(startTime)) {
+                    continue;
+                }
+                String operationTimeStr = startTime.substring(0, Math.min(5, startTime.length()));//截取开始时间
                 String operationDateStr = operationDatesStr + " " + operationTimeStr;//拼接
 
                 String beginDateStr = leaveHospitalDoc.getStructureMap().get("入院日期");
@@ -52,6 +56,9 @@ public class OPE03235 extends QCCatalogue {
                 Date beginDate = StringUtil.parseDateTime(beginDateStr);
                 Date endDate = StringUtil.parseDateTime(endDateStr);
                 Date operationDate = StringUtil.parseDateTime(operationDateStr);
+                if (beginDate == null || endDate == null || operationDate == null) {
+                    return;
+                }
 
                 if (operationDate.before(beginDate) || operationDate.after(endDate)) {
                     status.set("-1");

+ 4 - 4
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunThreeLevelWardDocTrans.java

@@ -147,7 +147,7 @@ public class BeiLunThreeLevelWardDocTrans extends ModelDocTrans {
                 String doctorTitle = getDoctorTitle(operationDocs, recordDate, "一助");
                 title = title.replace("一助", doctorTitle);
             }
-            if ((StringUtils.isNotEmpty(subTitle(title)) && subTitle(title).contains("主任")) || findDirector(content)
+            if ((StringUtils.isNotEmpty(title) && title.contains("主任")) || findDirector(content)
                     || title.contains("三级") || endocrinologyTitle(title)) {
                 directorDoctorWardDoc = new DirectorDoctorWardDoc();
                 directorDoctorWardDoc.setStructureMap(structureMap);
@@ -163,7 +163,7 @@ public class BeiLunThreeLevelWardDocTrans extends ModelDocTrans {
                 String doctorTitle = getDoctorTitle(operationDocs, recordDate, "一助");
                 writTitle = writTitle.replace("一助", doctorTitle);
             }
-            if ((StringUtils.isNotEmpty(subTitle(writTitle)) && subTitle(writTitle).contains("主任")) || findDirector(content)
+            if ((StringUtils.isNotEmpty(writTitle) && writTitle.contains("主任")) || findDirector(content)
                     || writTitle.contains("三级") || endocrinologyTitle(writTitle)) {
                 directorDoctorWardDoc = new DirectorDoctorWardDoc();
                 directorDoctorWardDoc.setStructureMap(structureMap);
@@ -194,7 +194,7 @@ public class BeiLunThreeLevelWardDocTrans extends ModelDocTrans {
                 String doctorTitle = getDoctorTitle(operationDocs, recordDate, "一助");
                 title = title.replace("一助", doctorTitle);
             }
-            if ((StringUtils.isNotEmpty(subTitle(title)) && subTitle(title).contains("主治"))
+            if ((StringUtils.isNotEmpty(title) && title.contains("主治"))
                     || findAttend(content) || title.contains("三级") || endocrinologyTitle(title)) {
                 attendingDoctorWardDoc = new AttendingDoctorWardDoc();
                 attendingDoctorWardDoc.setStructureMap(structureMap);
@@ -211,7 +211,7 @@ public class BeiLunThreeLevelWardDocTrans extends ModelDocTrans {
                 String doctorTitle = getDoctorTitle(operationDocs, recordDate, "一助");
                 writTitle = writTitle.replace("一助", doctorTitle);
             }
-            if ((StringUtils.isNotEmpty(subTitle(writTitle)) && subTitle(writTitle).contains("主治"))
+            if ((StringUtils.isNotEmpty(writTitle) && writTitle.contains("主治"))
                     || findAttend(content) || writTitle.contains("三级") || endocrinologyTitle(writTitle)) {
                 attendingDoctorWardDoc = new AttendingDoctorWardDoc();
                 attendingDoctorWardDoc.setStructureMap(structureMap);