zhanghang 4 gadi atpakaļ
vecāks
revīzija
41f0d3373c

+ 8 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -2347,4 +2347,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
         return baseMapper.getMedicalRecords(filterVO);
     }
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.malignancy(filterVO);
+    }
 }

+ 82 - 46
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -392,7 +392,9 @@ public class ConsoleFacade {
         filterFacade.filterVOSet(filterVO);
         MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
         Map<String, Long> selectOperationNumMap = behospitalInfoFacade.selectOperationNum(filterVO);
+        //出院人数
         Long startCount = selectOperationNumMap.get(QualityContent.DISCHARGED_PATIENTS);
+        //入院人数
         Long endCount = selectOperationNumMap.get(QualityContent.NUMBER_OF_HOSPITAL);
         Map<String, Integer> operationPathologyNumMap = getOperationPathologyNum(filterVO);
         //手术人数
@@ -407,12 +409,25 @@ public class ConsoleFacade {
         Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
         Integer operationPathologyNum = operationPathologyNumMap.get(QualityContent.NO_RECORD_OPERATION_PATHOLOGY);
         operationPathologyFeeNum = operationPathologyFeeNum + operationPathologyNum;
-        Map<String, Long> recordIndicatorMap = behospitalInfoFacade.triggeringRules(filterVO);
+        Map<String, Long> longMap = getCTNum(filterVO);
+        //CT人数
+        Long CTNum = longMap.get("CT");
+        //MR人数
+        Long MRNum = longMap.get("MR");
         //各指标未完成人数情况
-        Long operationCount = recordIndicatorMap.get(QualityContent.SSJLWCC_24H);
-        Long InHospitalRecords = recordIndicatorMap.get(QualityContent.RYJLWWC_24H);
-        Long OutHospitalRecords = recordIndicatorMap.get(QualityContent.CYJLWWC_24H);
-        Long recordHomePage = recordIndicatorMap.get(QualityContent.BASYWWC_24H);
+        Map<String, Long> triggeringRulesMap = behospitalInfoFacade.triggeringRules(filterVO);
+        Long operationCount = triggeringRulesMap.get(QualityContent.SSJLWCC_24H);
+        Long InHospitalRecords = triggeringRulesMap.get(QualityContent.RYJLWWC_24H);
+        Long OutHospitalRecords = triggeringRulesMap.get(QualityContent.CYJLWWC_24H);
+        Long recordHomePage = triggeringRulesMap.get(QualityContent.BASYWWC_24H);
+        //病理手术
+        Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
+        //细菌培养
+        Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
+        //CT
+        Long ct = triggeringRulesMap.get("CT");
+        //MR
+        Long mr = triggeringRulesMap.get("MR");
         List<Map<String, String>> hashMapArrayList = new ArrayList<>();
         //入院记录24小时完成率
         //入院记录完成人数为
@@ -444,7 +459,7 @@ public class ConsoleFacade {
       //      medQualityControlDTO.setLeaveHospitalNum(Double.valueOf(startCount - OutHospitalRecords));
             //出院记录完成率
       //      medQualityControlDTO.setLeaveHospitalStr(getResult(startCount - OutHospitalRecords, startCount));
-            LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
+            Map<String, String> stringStringHashMap = new LinkedHashMap<>();
             stringStringHashMap.put("name","出院记录24小时内完成率");
             stringStringHashMap.put("notCopiedStr",getResult(startCount - OutHospitalRecords, startCount));
             stringStringHashMap.put("num",Double.valueOf(startCount - OutHospitalRecords).toString());
@@ -456,33 +471,16 @@ public class ConsoleFacade {
        //     medQualityControlDTO.setMedHomePageNum(Double.valueOf(startCount - recordHomePage));
             //病案首页完成率
         //    medQualityControlDTO.setMedHomePageStr(getResult(startCount - recordHomePage, startCount));
-            LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
+            Map<String, String> stringStringHashMap = new LinkedHashMap<>();
             stringStringHashMap.put("name","病案首页24小时完成率");
             stringStringHashMap.put("notCopiedStr",getResult(startCount - recordHomePage, startCount));
             stringStringHashMap.put("num",Double.valueOf(startCount - recordHomePage).toString());
             hashMapArrayList.add(stringStringHashMap);
         }
-
-        Map<String, Long> longMap = getCTNum(filterVO);
-        //CT人数
-        Long CTNum = longMap.get("CT");
-        //MR人数
-        Long MRNum = longMap.get("MR");
-
-        //触发规则
-        //病理手术
-        Map<String, Long> triggeringRulesMap = behospitalInfoFacade.triggeringRules(filterVO);
-        Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
-        //细菌培养
-        Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
-        //CT
-        Long ct = triggeringRulesMap.get("CT");
-        //MR
-        Long mr = triggeringRulesMap.get("MR");
         //CT完成率
         if(CTNum!=null && ct!=null) {
         //    medQualityControlDTO.setCTExaminationConform(getResult(CTNum - ct, CTNum));
-            LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
+            Map<String, String> stringStringHashMap = new LinkedHashMap<>();
             stringStringHashMap.put("name","CT检查记录符合率");
             stringStringHashMap.put("notCopiedStr",getResult(CTNum - ct, CTNum));
             stringStringHashMap.put("num",Double.valueOf(CTNum - ct).toString());
@@ -491,7 +489,7 @@ public class ConsoleFacade {
         //MR完成率
         if(MRNum!=null && mr!=null) {
         //    medQualityControlDTO.setMRIExaminationConform(getResult(MRNum - mr, MRNum));
-            LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
+            Map<String, String> stringStringHashMap = new LinkedHashMap<>();
             stringStringHashMap.put("name","MRI检查记录符合率");
             stringStringHashMap.put("notCopiedStr",getResult(MRNum - mr, MRNum));
             stringStringHashMap.put("num",Double.valueOf(MRNum - mr).toString());
@@ -499,8 +497,8 @@ public class ConsoleFacade {
         }
         if(operationPathologyFeeNum!=null && antibiosisNum!=null) {
             //病理完成率为
-       //     medQualityControlDTO.setPathologicalExamination(getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
-            LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
+        //    medQualityControlDTO.setPathologicalExamination(getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
+            Map<String, String> stringStringHashMap = new LinkedHashMap<>();
             stringStringHashMap.put("name","病理检查记录符合率");
             stringStringHashMap.put("notCopiedStr",getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
             stringStringHashMap.put("num",Double.valueOf(operationPathologyFeeNum - antibiosisNum).toString());
@@ -566,7 +564,7 @@ public class ConsoleFacade {
      */
     public List<String>  adviceVerify(FilterVO filterVO){
         List<Map<String, String>> medicalRecords = behospitalInfoFacade.getMedicalRecords(filterVO);
-        ArrayList<String> behospitalCodeList = new ArrayList<>();
+        List<String> behospitalCodeList = new ArrayList<>();
         for (Map<String, String> medicalRecord : medicalRecords) {
             String b_code = medicalRecord.get("b_code");
             String behospitalCode = medicalRecord.get("behospital_code");
@@ -577,7 +575,7 @@ public class ConsoleFacade {
         return behospitalCodeList;
     }
     /**
-     * 医嘱表判断无病案首页是否为病理手术患者的人数
+     * 医嘱表判断无病案首页是否为病理手术患者和手术患者的人数
      */
     public Map<String,Integer> getOperationPathologyNum(FilterVO filterVO){
         List<String> behospitalCodeList = adviceVerify(filterVO);
@@ -594,6 +592,7 @@ public class ConsoleFacade {
             List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
             //手术病理
             if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0) {
+                dd:
             for (DoctorAdvice doctorAdvice : doctorAdvices) {
                 String name = doctorAdvice.getDaItemName();
                 if (StringUtil.isNotEmpty(name)) {
@@ -606,7 +605,7 @@ public class ConsoleFacade {
                             String daItemName = advice.getDaItemName();
                             if (daItemName.contains(QualityContent.PATHOLOGY)) {
                                 operationPathologyNum++;
-                                break;
+                                break dd;
                             }
                         }
                     }
@@ -676,13 +675,11 @@ public class ConsoleFacade {
      * 获取CT/MRI人数
      */
     public Map<String,Long> getCTNum(FilterVO filterVO){
+        filterVO.setFlagStr("1");
         List<Map<String, String>> getDoctorAdviceNum = doctorAdviceFacade.getDoctorAdviceNum(filterVO);
-        HashMap<String, Long> map = new HashMap<>();
-        ArrayList<String> codeList = new ArrayList<>();
+        Map<String, Long> map = new HashMap<>();
+        List<String> codeList = new ArrayList<>();
         for (Map<String, String> ctNumMap : getDoctorAdviceNum) {
-            String doctorAdviceType = ctNumMap.get("doctor_advice_type");
-            if(StringUtil.isNotEmpty(doctorAdviceType)) {
-                if (doctorAdviceType.contains(QualityContent.STAT_ORDER)) {
                     String behospitalCode = ctNumMap.get("behospital_code");
                     if (!codeList.contains(behospitalCode)) {
                         String daItemName = ctNumMap.get("da_item_name");
@@ -696,16 +693,12 @@ public class ConsoleFacade {
                                     continue;
                                 }
                             }
-                        }
-                    }
                 }
             }
         }
         ArrayList<String> codeMri = new ArrayList<>();
         for (Map<String, String> MRINumMap : getDoctorAdviceNum) {
             String behospitalCodeMri = MRINumMap.get("behospital_code");
-            if(StringUtil.isNotEmpty(MRINumMap.get("doctor_advice_type"))) {
-                if (contains(QualityContent.STAT_ORDER)) {
                     if (!codeList.contains(behospitalCodeMri)) {
                         String daItemName = MRINumMap.get("da_item_name");
                         if (StringUtil.isNotEmpty(daItemName)) {
@@ -714,8 +707,6 @@ public class ConsoleFacade {
                                     codeMri.add(behospitalCodeMri);
                                     continue;
                                 }
-                            }
-                        }
                     }
                 }
             }
@@ -746,7 +737,6 @@ public class ConsoleFacade {
                 QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
                 dtoQueryWrapper.eq("behospital_code", behospitalCode)
                         .eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .eq("doctor_advice_type", QualityContent.STAT_ORDER)
                         .eq("da_status", QualityContent.EXECUTE_ORDER);
                 //查医嘱表
                 List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
@@ -758,9 +748,13 @@ public class ConsoleFacade {
                             List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
                             for (String antimicrobialDrug : antimicrobialDrugList) {
                                 if (daItemName.contains(antimicrobialDrug)) {
-                                    //医嘱包含抗菌药物名称
-                                    operationNum++;
-                                    break doc;
+                                    //医嘱包含抗菌药物名称        若非抗菌药物使用患者可能有取消字眼
+                                    if(daItemName.contains(QualityContent.COUNTERMAND)){
+                                        continue ;
+                                    }else {
+                                        operationNum++;
+                                        break doc;
+                                    }
                                 }
                             }
                         }
@@ -770,6 +764,48 @@ public class ConsoleFacade {
         }
         return operationNum;
     }
+
+    /**
+     * 恶性肿瘤化学治疗患者
+     * @param filterVO
+     * @return
+     */
+    public Integer chemotherapyMalignantTumors(FilterVO filterVO){
+        filterVO.setFlagStr("2");
+        int chemotherapyMalignantTumorsNum=0;
+        //得到首页判断为恶性肿瘤病历
+        List<Map<String, String>> malignancy = behospitalInfoFacade.malignancy(filterVO);
+        if(ListUtil.isNotEmpty(malignancy)&&malignancy.size()>0) {
+            for (Map<String, String> malignancyMap : malignancy) {
+                String behospitalCode = malignancyMap.get("behospital_code");
+                QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
+                dtoQueryWrapper.eq("behospital_code", behospitalCode)
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("da_status", QualityContent.EXECUTE_ORDER);
+                List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
+                if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0){
+                    doc:
+                    for (DoctorAdvice doctorAdvice : doctorAdvices) {
+                        String daItemName = doctorAdvice.getDaItemName();
+                        if(StringUtil.isNotEmpty(daItemName)){
+                            List<String> chemotherapyDrugList = QualityContent.Chemotherapy_Drug_List;
+                            for (String chemotherapyDrug : chemotherapyDrugList) {
+                                if (daItemName.contains(chemotherapyDrug)) {
+                                    //医嘱包含化疗药物
+                                    if (daItemName.contains(QualityContent.COUNTERMAND)) {
+                                        //病人为化疗
+                                        chemotherapyMalignantTumorsNum++;
+                                        break doc;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return chemotherapyMalignantTumorsNum;
+    }
     /**
      * 质控病历统计
      *

+ 6 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -723,4 +723,10 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
 
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
 }

+ 8 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -677,4 +677,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
+
 }

+ 9 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -1123,4 +1123,13 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
         return  baseMapper.getMedicalRecords(filterVO);
     }
+
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.malignancy(filterVO);
+    }
 }

+ 1 - 1
src/main/java/com/diagbot/web/ConsoleController.java

@@ -173,7 +173,7 @@ public class ConsoleController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/medicalRecordIndicator")
     @SysLogger("medicalRecordIndicator")
-    public RespDTO<MedQualityControlDTO> medicalRecordIndicator(@RequestBody @Valid FilterVO filterVO) {
+    public RespDTO<List<Map<String,String>>> medicalRecordIndicator(@RequestBody @Valid FilterVO filterVO) {
         return RespDTO.onSuc(consoleFacade.medicalRecordIndicator(filterVO));
     }
     /**

+ 44 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -17844,4 +17844,48 @@
     AND b.is_deleted = 'N'
 
     </select>
+
+<!--    首页恶性肿瘤-->
+    <select id="malignancy" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+        d.behospital_code,
+        b.outpatient_emr_diagnose,
+        b.outpatient_emr_diagnose_code
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id,
+        a.behospital_date,
+        a.leave_hospital_date
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.behospital_code = c.behospital_code
+        AND a.hospital_id =  #{filterVO.hospitalId}
+        AND a.is_placefile =  #{filterVO.isPlacefile}
+        AND a.hospital_id = c.hospital_id
+        AND a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        ) d
+        JOIN med_home_page b ON b.behospital_code = d.behospital_code
+        AND d.hospital_id = b.hospital_id
+        AND b.is_deleted = 'N'
+        AND (
+        (
+        b.outpatient_emr_diagnose LIKE '%恶性肿瘤%'
+        AND b.outpatient_emr_diagnose_code LIKE 'C%'
+        )
+        OR (
+        b.outpatient_emr_diagnose LIKE 'C%'
+        AND b.outpatient_emr_diagnose_code LIKE '%恶性肿瘤%'
+        )
+        )
+    </select>
 </mapper>

+ 6 - 0
src/main/resources/mapper/DoctorAdviceMapper.xml

@@ -247,5 +247,11 @@
         <![CDATA[ and  b.da_status <> '作废' ]]>
         AND a.behospital_code = b.behospital_code
         AND a.hospital_id = b.hospital_id
+        <if test="filterVO.flagStr == 1">
+            AND b.doctor_advice_type='临时医嘱'
+        </if>
+        <if test="filterVO.flagStr == 2">
+            AND (b.doctor_advice_type='临时医嘱' or b.doctor_advice_type='长期医嘱')
+        </if>
     </select>
 </mapper>