Bladeren bron

首次病程录和疑难病例讨论制度规则开发更新

kongwz 5 jaren geleden
bovenliggende
commit
c9c927cc6d

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/QCCatalogue.java

@@ -6,6 +6,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import lombok.extern.slf4j.Slf4j;
 
+import java.text.ParseException;
 import java.util.Map;
 
 /**
@@ -39,7 +40,7 @@ public class QCCatalogue {
         insertOpt(outputInfo);
     }
 
-    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
     }
 
     private void insertOpt(OutputInfo outputInfo) {

+ 5 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0280.java

@@ -8,13 +8,15 @@ import org.springframework.stereotype.Component;
 import java.util.Map;
 
 /**
- * @ClassName : CLI0001
- * @Description : 无输血/血制品病程记录
+ * @ClassName : DIF0116
+ * @Description : 	疑难病例无疑难病例讨论记录
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
+ * 什么样的病历是疑难病例
  */
 @Component
-public class DIF0280 extends QCCatalogue {
+public class DIF0116 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
     }
 }

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0117.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0117
+ * @Description : 	疑难病例讨论记录未填写讨论时间
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0117 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("讨论时间");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status = "-1";
+                    break;
+                }
+            }
+        }
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0118.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0118
+ * @Description : 	疑难病例讨论记录未填写主持人
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0118 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("主持人");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status = "-1";
+                    break;
+                }
+            }
+        }
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0119.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0119
+ * @Description : 	 疑难病例讨论记录未填写参加讨论者(包括职称及姓名)
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0119 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("参加讨论者");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status = "-1";
+                    break;
+                }
+            }
+        }
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0120.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0120
+ * @Description : 	 疑难病例讨论记录未填写讨论内容
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0120 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("讨论内容");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status = "-1";
+                    break;
+                }
+            }
+        }
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0121.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0121
+ * @Description : 	 疑难病例讨论记录无主持人小结意见
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0121 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("结 论");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status = "-1";
+                    break;
+                }
+            }
+        }
+    }
+}

+ 56 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0093.java

@@ -0,0 +1,56 @@
+package com.lantone.qc.kernel.catalogue.firstcourserecord;
+
+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.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRC0093
+ * @Description :  首次病程未在患者入院8小时内完成
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class FIRC0093 extends QCCatalogue {
+    public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
+    public static String FORMAT_LONG_CN_MI = "yyyy年MM月dd日HH时mm分";
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status = "0";
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
+        if(firstCourseRecordDoc != null && beHospitalizedDoc != null){
+            Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
+            Map<String, String> beHospitalizedDocStructureMap = beHospitalizedDoc.getStructureMap();
+            if(courseRecordDocStructureMap != null && beHospitalizedDocStructureMap != null){
+                String couDate = courseRecordDocStructureMap.get("记录时间");
+                String beDate = beHospitalizedDocStructureMap.get("入院日期");
+                if(StringUtils.isNotEmpty(couDate) && StringUtils.isNotEmpty(beDate)){
+                    Date date_in = new SimpleDateFormat(DATE_TIME_FORMAT).parse(beDate);
+                    Date date_out = new SimpleDateFormat(FORMAT_LONG_CN_MI).parse(couDate);
+                    Calendar from  =  Calendar.getInstance();
+                    from.setTime(date_in);
+                    Calendar  to  =  Calendar.getInstance();
+                    to.setTime(date_out);
+                    int fromHour = from.get(Calendar.HOUR_OF_DAY);
+                    int toHour  = to.get(Calendar.HOUR_OF_DAY);
+                    int hour = toHour  -  fromHour;
+                    if(hour > 8){
+                        status = "-1";
+                    }
+
+                }
+            }
+        }
+    }
+}

+ 57 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java

@@ -0,0 +1,57 @@
+package com.lantone.qc.kernel.catalogue.firstcourserecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
+import com.lantone.qc.pub.model.entity.Diag;
+import com.lantone.qc.pub.model.label.DiagLabel;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRC0095
+ * @Description : 初步诊断不完整
+ * 和入院记录的初步诊断比较
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class FIRC0095 extends QCCatalogue {
+    @Autowired
+    private RedisUtil redisUtil;
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if(firstCourseRecordDoc != null && beHospitalizedDoc != null){
+            DiagLabel initialDiagLabel = firstCourseRecordDoc.getInitialDiagLabel();
+            DiagLabel initialDiagLabel1 = beHospitalizedDoc.getInitialDiagLabel();
+            if(initialDiagLabel != null && initialDiagLabel1 != null){
+                List<Diag> diags = initialDiagLabel.getDiags();
+                List<Diag> diags1 = initialDiagLabel1.getDiags();
+                List<String> firstDiags = new ArrayList<>();
+                List<String> bhDiags = new ArrayList<>();
+                if(diags != null && diags.size()>0){
+                    for (Diag firdiag:diags) {
+                        firstDiags.add(firdiag.getHospitalDiagName());
+                    }
+                    for (Diag bhDig:diags1) {
+                        bhDiags.add(bhDig.getHospitalDiagName());
+                    }
+                    if(ListUtil.equals(firstDiags,bhDiags)){
+                        status = "0";
+                    }
+                }
+            }
+            }
+        }
+    }

+ 23 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0096.java

@@ -1,11 +1,17 @@
 package com.lantone.qc.kernel.catalogue.firstcourserecord;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
 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.entity.Diag;
+import com.lantone.qc.pub.model.label.DiagLabel;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -16,12 +22,26 @@ import java.util.Map;
  */
 @Component
 public class FIRC0096 extends QCCatalogue {
+    @Autowired
+    private RedisUtil redisUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        Map<String, String> hostpital_standDiag = (Map<String, String>) redisUtil.get(KernelConstants.HOSPITAL_DIAG_MAP);
         FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
         if(firstCourseRecordDoc != null){
-            Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
-            if(courseRecordDocStructureMap != null){
-                courseRecordDocStructureMap.get("初步诊断");
+            DiagLabel initialDiagLabel = firstCourseRecordDoc.getInitialDiagLabel();
+            if(initialDiagLabel != null){
+                List<Diag> diags = initialDiagLabel.getDiags();
+                if(diags != null && diags.size()>0){
+                    for (Diag diag:diags
+                         ) {
+                        String hospitalDiagName = diag.getHospitalDiagName();
+                        if(!hostpital_standDiag.containsKey(hospitalDiagName)){
+                            status = "-1";
+                            break;
+                        }
+                    }
+                }
             }
         }
     }