Преглед изворни кода

义乌妇保:条目规则新增提交

yuchengwei пре 5 месеци
родитељ
комит
6626191703

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03248.java

@@ -23,7 +23,7 @@ public class FIRP03248 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
-            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.outpatientEmergencyDiag);
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.dischargeDiag);
             if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
                 return;
             }
@@ -35,7 +35,7 @@ public class FIRP03248 extends QCCatalogue {
             int age = removalUnit(admissionAge);
             if (age < 14) {
                 status.set("-1");
-                info.set(",患者年龄:" + age);
+                info.set("患者年龄:" + age);
                 String xmlId = CatalogueUtil.getXmlId(firstpageStructureMap, Content.age);
                 id.set(xmlId);
             }

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03249.java

@@ -26,7 +26,7 @@ public class FIRP03249 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
-            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.outpatientEmergencyDiag);
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.dischargeDiag);
             if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
                 return;
             }
@@ -37,7 +37,7 @@ public class FIRP03249 extends QCCatalogue {
             String gender = (String)firstpageStructureMap.get(Content.gender);
             if (genderList.contains(gender)) {
                 status.set("-1");
-                info.set(",患者性别:" + gender);
+                info.set("患者性别:" + gender);
                 String xmlId = CatalogueUtil.getXmlId(firstpageStructureMap, Content.gender);
                 id.set(xmlId);
             }

+ 55 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03250.java

@@ -0,0 +1,55 @@
+package com.lantone.qc.kernel.catalogue.hospital.yiwu.firstpagerecord;
+
+import com.google.common.collect.Lists;
+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.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03250
+ * @Description : 首页-专病-ABO血型-不能填不详或未查 子宫内膜息肉ABO血型不能填不详或未查错误
+ */
+@Component
+public class FIRP03250 extends QCCatalogue {
+
+    private List<String> bloodTypeList = Lists.newArrayList("不详", "未查", "5", "6");
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.dischargeDiag);
+            if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
+                return;
+            }
+            List<String> firstpageDischargeDiag = getFirstpageDischargeDiag(outpatientEmergencyDiagList);
+            if (!firstpageDischargeDiag.contains("子宫内膜息肉")) {
+                return;
+            }
+            String bloodType = (String)firstpageStructureMap.get(Content.bloodType);
+            if (bloodTypeList.contains(bloodType)) {
+                status.set("-1");
+                String xmlId = CatalogueUtil.getXmlId(firstpageStructureMap, Content.bloodType);
+                id.set(xmlId);
+            }
+        }
+    }
+    private List<String> getFirstpageDischargeDiag(List<Map<String, String>> outpatientEmergencyDiagList) {
+        List<String> firstpageDischargeDiag = new ArrayList<>();
+        for (Map<String, String> outpatientEmergencyDiag : outpatientEmergencyDiagList) {
+            String diag = outpatientEmergencyDiag.get(Content.diagnoseName);
+            if (StringUtil.isNotBlank(diag)) {
+                firstpageDischargeDiag.add(diag);
+            }
+        }
+        return firstpageDischargeDiag;
+    }
+}

+ 56 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03251.java

@@ -0,0 +1,56 @@
+package com.lantone.qc.kernel.catalogue.hospital.yiwu.firstpagerecord;
+
+import com.google.common.collect.Lists;
+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.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03251
+ * @Description : 首页-专病-Rh血型-不能填不详或未查 子宫内膜息肉Rh血型不能填不详或未查错误
+ */
+@Component
+public class FIRP03251 extends QCCatalogue {
+
+    private List<String> rhFactorList = Lists.newArrayList("不详", "未查", "3", "4");
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.dischargeDiag);
+            if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
+                return;
+            }
+            List<String> firstpageDischargeDiag = getFirstpageDischargeDiag(outpatientEmergencyDiagList);
+            if (!firstpageDischargeDiag.contains("子宫内膜息肉")) {
+                return;
+            }
+            String rhFactor = (String)firstpageStructureMap.get(Content.rhFactor);
+            if (StringUtil.isNotEmpty(rhFactor) && rhFactorList.contains(rhFactor)) {
+                status.set("-1");
+                String xmlId = CatalogueUtil.getXmlId(firstpageStructureMap, Content.rhFactor);
+                id.set(xmlId);
+            }
+        }
+    }
+    private List<String> getFirstpageDischargeDiag(List<Map<String, String>> outpatientEmergencyDiagList) {
+        List<String> firstpageDischargeDiag = new ArrayList<>();
+        for (Map<String, String> outpatientEmergencyDiag : outpatientEmergencyDiagList) {
+            String diag = outpatientEmergencyDiag.get(Content.diagnoseName);
+            if (StringUtil.isNotBlank(diag)) {
+                firstpageDischargeDiag.add(diag);
+            }
+        }
+        return firstpageDischargeDiag;
+    }
+}

+ 70 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03252.java

@@ -0,0 +1,70 @@
+package com.lantone.qc.kernel.catalogue.hospital.yiwu.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03252
+ * @Description : 首页-“手术记录”有“宫腔镜下子宫内膜息肉切除术”-首页诊断缺少“子宫内膜息肉”
+ * 手术有宫腔镜下子宫内膜息肉切除术,诊断缺少子宫内膜息肉错误
+ */
+@Component
+public class FIRP03252 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+
+            List<Map<String, String>> operativeInformationList = (List) firstpageStructureMap.get(Content.operative_information);
+            if (ListUtil.isEmpty(operativeInformationList)) {
+                return;
+            }
+            List<String> firstpageOperativeName = getFirstpageOperativeName(operativeInformationList);
+            if (!firstpageOperativeName.contains("宫腔镜下子宫内膜息肉切除术")) {
+                return;
+            }
+
+
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.outpatientEmergencyDiag);
+            if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
+                status.set("-1");
+                return;
+            }
+
+            List<String> firstpageDischargeDiag = getFirstpageDischargeDiag(outpatientEmergencyDiagList);
+            if (!firstpageDischargeDiag.contains("子宫内膜息肉")) {
+                status.set("-1");
+            }
+        }
+    }
+    private List<String> getFirstpageDischargeDiag(List<Map<String, String>> outpatientEmergencyDiagList) {
+        List<String> firstpageDischargeDiag = new ArrayList<>();
+        for (Map<String, String> outpatientEmergencyDiag : outpatientEmergencyDiagList) {
+            String diag = outpatientEmergencyDiag.get(Content.diagnoseName);
+            if (StringUtil.isNotBlank(diag)) {
+                firstpageDischargeDiag.add(diag);
+            }
+        }
+        return firstpageDischargeDiag;
+    }
+
+    private List<String> getFirstpageOperativeName(List<Map<String, String>> operativeInformationList) {
+        List<String> firstpageOperativeName = new ArrayList<>();
+        for (Map<String, String> operativeInformation : operativeInformationList) {
+            String operativeName = operativeInformation.get(Content.operative_name);
+            if (StringUtil.isNotBlank(operativeName)) {
+                firstpageOperativeName.add(operativeName);
+            }
+        }
+        return firstpageOperativeName;
+    }
+}

+ 72 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/firstpagerecord/FIRP03258.java

@@ -0,0 +1,72 @@
+package com.lantone.qc.kernel.catalogue.hospital.yiwu.firstpagerecord;
+
+import com.google.common.collect.Lists;
+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.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03258
+ * @Description : 首页-专病-主诊断-年龄-不符 急性支气管肺炎年龄应大于28天错误
+ */
+@Component
+public class FIRP03258 extends QCCatalogue {
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> outpatientEmergencyDiagList = (List) firstpageStructureMap.get(Content.dischargeDiag);
+            if (ListUtil.isEmpty(outpatientEmergencyDiagList)) {
+                return;
+            }
+            List<String> firstpageDischargeDiag = getFirstpageDischargeDiag(outpatientEmergencyDiagList);
+            if (!firstpageDischargeDiag.contains("急性支气管肺炎")) {
+                return;
+            }
+            String admissionAge = (String)firstpageStructureMap.get(Content.age);
+            if (StringUtil.isNotBlank(admissionAge) && !admissionAge.contains("天")) {
+                return;
+            }
+            int age = removalUnit(admissionAge);
+            if (age < 28) {
+                status.set("-1");
+                info.set("患者年龄:" + age);
+                String xmlId = CatalogueUtil.getXmlId(firstpageStructureMap, Content.age);
+                id.set(xmlId);
+            }
+        }
+    }
+
+    private int removalUnit(String admissionAge) {
+        int age = 0;
+        if (StringUtil.isNotBlank(admissionAge) && admissionAge.contains("岁")) {
+            admissionAge = admissionAge.replaceAll("[岁天]", "");
+        }
+        admissionAge = admissionAge.replaceAll("[^0-9]","");
+        if (CatalogueUtil.numbersOnly(admissionAge)) {
+            age = Integer.parseInt(admissionAge);
+        }
+        return age;
+    }
+
+    private List<String> getFirstpageDischargeDiag(List<Map<String, String>> outpatientEmergencyDiagList) {
+        List<String> firstpageDischargeDiag = new ArrayList<>();
+        for (Map<String, String> outpatientEmergencyDiag : outpatientEmergencyDiagList) {
+            String diag = outpatientEmergencyDiag.get(Content.diagnoseName);
+            if (StringUtil.isNotBlank(diag)) {
+                firstpageDischargeDiag.add(diag);
+            }
+        }
+        return firstpageDischargeDiag;
+    }
+}

+ 40 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/yiwu/preoperativediscussion/PRE03255.java

@@ -0,0 +1,40 @@
+package com.lantone.qc.kernel.catalogue.hospital.yiwu.preoperativediscussion;
+
+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.operation.OperationDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Description: 术前诊断无子宫内膜息肉
+ */
+@Component
+public class PRE03255 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(operationDocs == null || operationDocs.size()== 0){
+            return;
+        }
+        for (OperationDoc operationDoc : operationDocs) {
+            if (operationDoc.getPreoperativeDiscussionDoc() == null
+                    || StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("拟施手术方式名称及可能的变更与禁忌症"))
+                    || !operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("拟施手术方式名称及可能的变更与禁忌症").contains("子宫内膜息肉")) {
+                continue;
+            }
+
+            if (StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术前诊断"))
+                    || !operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术前诊断").contains("子宫内膜息肉")) {
+                status.set("-1");
+            }
+        }
+    }
+
+}