瀏覽代碼

添加规则

zhoutg 5 年之前
父節點
當前提交
7dcb9d60b7

+ 0 - 22
kernel/src/main/java/com/lantone/qc/kernel/catalogue/medicalwriting/MEDI0667.java

@@ -1,22 +0,0 @@
-package com.lantone.qc.kernel.catalogue.medicalwriting;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.text.ParseException;
-
-/**
- * @ClassName : MEDI0667
- * @Description :非执业医师书写的病历无执业医师审核签名
- * @Author : 胡敬
- * @Date: 2020-03-30 17:27
- */
-@Component
-public class MEDI0667 extends QCCatalogue {
-    @Override
-    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
-        status.set("-2");
-    }
-}

+ 8 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE0328.java

@@ -27,6 +27,11 @@ public class PRE0328 extends QCCatalogue {
 
     @Override
     protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        /**
+         * 1:入院记录【现病史】包含“急诊手术”例外。
+         * 2:首次病程录【诊疗计划】或查房记录【病情记录】包含急诊手术——".*急诊.*术.*|.*急症.*术.*",则术前讨论、术前小结次数+1
+         * 3:
+         */
         status.set("0");
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
         if (operationDocs == null || operationDocs.size() == 0) {
@@ -40,13 +45,14 @@ public class PRE0328 extends QCCatalogue {
         boolean emergencyOperation = findEmergencyOperation(inputInfo);
         boolean emergencyOperationFromWardRecord = findEmergencyOperationFromWardRecord(inputInfo);
 
-        int i = getOperationSum(operationDocs), j = 0;
+        int i = getOperationSum(operationDocs); // 获取手术记录次数
+        int j = 0;  // 获取术前讨论、术前小结次数
         for (OperationDoc operationDoc : operationDocs) {
             if (operationDoc.getPreoperativeDiscussionDoc() != null) {
                 j++;
             }
         }
-        /* 如果首次病程录的诊疗计划里有急诊手术,则术前小结的数量加一 */
+        /* 如果首次病程录的诊疗计划里有急诊手术 或 查房记录的病情记录里有急诊手术,则术前小结的数量加1 */
         if (emergencyOperation || emergencyOperationFromWardRecord) {
             if (j == 0) {
                 j++;

+ 59 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02150.java

@@ -0,0 +1,59 @@
+package com.lantone.qc.kernel.catalogue.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.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.SpringContextUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : MEDI0667
+ * @Description :非执业医师书写的病历无执业医师审核签名
+ * @Author : 胡敬
+ * @Date: 2020-03-30 17:27
+ */
+@Component
+public class THR02150 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        /**
+         * 查房记录里【记录医师】在bas_doctor_info表中的occup=1(职业医师资格0:无,1:有),记录医师的名字里可能包含字母A,F,现在的处理方式是: 先匹配全部,如果无医生信息,字母先替换成空
+         */
+        status.set("0");
+        if (ListUtil.isEmpty(inputInfo.getThreeLevelWardDocs())) {
+            return;
+        }
+        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
+        Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+        if (surgeon == null) {
+            return;
+        }
+        List<ThreeLevelWardDoc> threeLevelWardDocList = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();
+        for (ThreeLevelWardDoc bean : threeLevelWardDocList) {
+            Map<String, String> structureMap = bean.getStructureMap();
+            String doctorName = structureMap.get("记录医师");
+            if (StringUtil.isNotBlank(doctorName)) {
+                Map<String, String> doctor = (Map) surgeon.get(doctorName);
+                if (doctor == null) {
+                    doctorName = doctorName.replaceAll("[a-z|A-Z]*$", ""); // 将字母结尾的替换成""
+                    doctor = (Map) surgeon.get(doctorName);
+                }
+                String occup = doctor.get("occup");
+                if (StringUtils.isNotEmpty(occup) && "0".equals(occup)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 59 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03011.java

@@ -0,0 +1,59 @@
+package com.lantone.qc.kernel.catalogue.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.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.SpringContextUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR03011
+ * @Description :非执业医师书写抢救记录,无执业医师签名
+ * @Author : zhoutg
+ * @Date: 2020-03-30 17:27
+ */
+@Component
+public class THR03011 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        /**
+         * 抢救记录【医生】在bas_doctor_info表中的occup=1(职业医师资格0:无,1:有),医生的名字里可能包含字母A,F,现在的处理方式是: 先匹配全部,如果无医生信息,字母先替换成空
+         */
+        status.set("0");
+        if (ListUtil.isEmpty(inputInfo.getRescueDocs())) {
+            return;
+        }
+        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
+        Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+        if (surgeon == null) {
+            return;
+        }
+        List<RescueDoc> rescueDocList = inputInfo.getRescueDocs();
+        for (RescueDoc bean : rescueDocList) {
+            Map<String, String> structureMap = bean.getStructureMap();
+            String doctorName = structureMap.get("医生");
+            if (StringUtil.isNotBlank(doctorName)) {
+                Map<String, String> doctor = (Map) surgeon.get(doctorName);
+                if (doctor == null) {
+                    doctorName = doctorName.replaceAll("[a-z|A-Z]*$", ""); // 将字母结尾的替换成""
+                    doctor = (Map) surgeon.get(doctorName);
+                }
+                String occup = doctor.get("occup");
+                if (StringUtils.isNotEmpty(occup) && "0".equals(occup)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 5 - 5
public/src/main/java/com/lantone/qc/pub/model/doc/operation/OperationDoc.java

@@ -13,10 +13,10 @@ import lombok.Setter;
 public class OperationDoc {
 
     private String operationName;
-    private OperationDiscussionDoc operationDiscussionDoc;
-    private OperationRecordDoc operationRecordDoc;
-    private PreoperativeDiscussionDoc preoperativeDiscussionDoc;
-    private OperationInformedConsentDoc operationInformedConsentDoc;
-    private OperationSafetyChecklistDoc operationSafetyChecklistDoc;
+    private OperationDiscussionDoc operationDiscussionDoc; // 术后首次病程及谈话记录
+    private OperationRecordDoc operationRecordDoc;  // 手术记录
+    private PreoperativeDiscussionDoc preoperativeDiscussionDoc; // 术前讨论、术前小结
+    private OperationInformedConsentDoc operationInformedConsentDoc; // 手术知情同意书
+    private OperationSafetyChecklistDoc operationSafetyChecklistDoc; // 手术安全核查表
 
 }