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

病理检查记录率指标,指标类中加入指标七,八,九,十,十一,十二

zhanghang пре 4 година
родитељ
комит
a7b3407c11

+ 48 - 0
src/main/java/com/diagbot/dto/MedQualityControlDTO.java

@@ -163,4 +163,52 @@ public class MedQualityControlDTO {
      */
      */
     @Excel(name = "扣分",width = 12, orderNum = "15")
     @Excel(name = "扣分",width = 12, orderNum = "15")
     private String firGradeStr;
     private String firGradeStr;
+
+    /**
+     * CT检查记录符合率
+     */
+    @Excel(name = "CT检查记录符合率",width = 12, orderNum = "16")
+    private String CTExaminationConform;
+
+    /**
+     * CT检查记录率
+     */
+    @Excel(name = "CT检查记录率",width = 12, orderNum = "17")
+    private String CTExamination;
+
+    /**
+     * MRI检查记录符合率
+     */
+    @Excel(name = "MRI检查记录符合率",width = 12, orderNum = "18")
+    private String MRIExaminationConform;
+
+    /**
+     * MRI检查记录率
+     */
+    @Excel(name = "MRI检查记录率",width = 12, orderNum = "19")
+    private String MRIExamination;
+
+    /**
+     * 病理检查记录符合率
+     */
+    @Excel(name = "病理检查记录符合率",width = 12, orderNum = "20")
+    private String PathologicalExamination;
+
+    /**
+     * 细菌培养检查记录符合率
+     */
+    @Excel(name = "细菌培养检查记录符合率",width = 12, orderNum = "21")
+    private String BacterialCulture;
+
+    /**
+     * 抗菌药物使用记录符合率
+     */
+    @Excel(name = "抗菌药物使用记录符合率",width = 12, orderNum = "22")
+    private String AntibacterialDrugUse;
+
+    /**
+     * 恶性肿瘤化学治疗记录符合率
+     */
+    @Excel(name = "恶性肿瘤化学治疗记录符合率",width = 12, orderNum = "23")
+    private String ChemotherapyMalignantTumors;
 }
 }

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

@@ -2238,4 +2238,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     public Map<String,Long> selectOperationNum( FilterVO filterVO){
     public Map<String,Long> selectOperationNum( FilterVO filterVO){
         return   baseMapper.selectOperationNum(filterVO);
         return   baseMapper.selectOperationNum(filterVO);
     }
     }
+    /**
+     * 病理CT/MR触发多规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules( FilterVO filterVO){
+        return   baseMapper.triggeringRules(filterVO);
+    }
 }
 }

+ 25 - 5
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -64,13 +64,10 @@ public class ConsoleFacade {
     @Autowired
     @Autowired
     private QcCasesEntryFacade qcCasesEntryFacade;
     private QcCasesEntryFacade qcCasesEntryFacade;
     @Autowired
     @Autowired
-    private LeaveHosStatisticsAggregate leaveHosStatisticsAggregate;
-    @Autowired
     @Qualifier("medManagementInfoServiceImpl")
     @Qualifier("medManagementInfoServiceImpl")
     private MedManagementInfoService medManagementInfoService;
     private MedManagementInfoService medManagementInfoService;
     @Autowired
     @Autowired
-    @Qualifier("medQcresultDetailServiceImpl")
-    private MedQcresultDetailService medQcresultDetailService;
+    private DoctorAdviceFacade doctorAdviceFacade;
 
 
     //region-----------------------聚合接口开始-------------------------------
     //region-----------------------聚合接口开始-------------------------------
 
 
@@ -394,7 +391,7 @@ public class ConsoleFacade {
         Long endCount = selectOperationNumMap.get("住院人数");
         Long endCount = selectOperationNumMap.get("住院人数");
         //手术人数
         //手术人数
         Long operationFeeNum = selectOperationNumMap.get("operationFee");
         Long operationFeeNum = selectOperationNumMap.get("operationFee");
-        //病理人数
+        //抗菌人数
         Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
         Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
         //手术病理人数
         //手术病理人数
         Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
         Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
@@ -426,10 +423,33 @@ public class ConsoleFacade {
             //病案首页完成率
             //病案首页完成率
             medQualityControlDTO.setMedHomePageStr(String.valueOf((startCount-recordHomePage)/startCount));
             medQualityControlDTO.setMedHomePageStr(String.valueOf((startCount-recordHomePage)/startCount));
         }
         }
+        Map<String, Long> doctorAdviceFacadeOf = doctorAdviceFacade.getCTAndMR(filterVO);
+        //CT人数
+        Long ctNum = doctorAdviceFacadeOf.get("CTNUM");
+        //MR人数
+        Long mrNum = doctorAdviceFacadeOf.get("MRNUM");
+        //CT次数和MR次数
+        Long ctCount = doctorAdviceFacadeOf.get("CT");
+        Long mrCount = doctorAdviceFacadeOf.get("MR");
+        //细菌培养人数
+        Long bacterialCultures = doctorAdviceFacadeOf.get("bacterialCulturesNum");
+        //触发规则
+        //病理
+        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");
+        //病理完成率为
+        medQualityControlDTO.setPathologicalExamination(String.valueOf((operationPathologyFeeNum - antibiosisNum) / operationPathologyFeeNum));
         return medQualityControlDTO;
         return medQualityControlDTO;
     }
     }
 
 
 
 
+
     /**
     /**
      * 质控病历统计
      * 质控病历统计
      *
      *

+ 14 - 0
src/main/java/com/diagbot/facade/DoctorAdviceFacade.java

@@ -9,9 +9,11 @@ import com.diagbot.service.impl.DoctorAdviceServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.DoctorAdviceVO;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.Collection;
 import java.util.Collection;
+import java.util.Map;
 
 
 /**
 /**
  * @Description:
  * @Description:
@@ -42,4 +44,16 @@ public class DoctorAdviceFacade extends DoctorAdviceServiceImpl {
         }
         }
         return this.getPage(doctorAdviceVO);
         return this.getPage(doctorAdviceVO);
     }
     }
+
+    /**
+     * 获取参与CT和MR次数和人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> getCTAndMR(FilterVO filterVO){
+        return baseMapper.getCTAndMR(filterVO);
+
+    }
+
+
 }
 }

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

@@ -698,4 +698,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      * @return
      */
      */
     public Map<String,Long> selectOperationNum(@Param("filterVO") FilterVO filterVO);
     public Map<String,Long> selectOperationNum(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 病理CT/MR触发多规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO") FilterVO filterVO);
+
 }
 }

+ 4 - 0
src/main/java/com/diagbot/mapper/DoctorAdviceMapper.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.vo.DoctorAdviceVO;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
 /**
 /**
@@ -23,4 +25,6 @@ public interface DoctorAdviceMapper extends BaseMapper<DoctorAdvice> {
     IPage<DoctorAdviceDTO> getPage(@Param("doctorAdviceVO")DoctorAdviceVO doctorAdviceVO, @Param("infos") Set<String> infos);
     IPage<DoctorAdviceDTO> getPage(@Param("doctorAdviceVO")DoctorAdviceVO doctorAdviceVO, @Param("infos") Set<String> infos);
     List<String> getInfo(@Param("hospitalId")Long hospitalId, @Param("behospitalCode")String behospitalCode);
     List<String> getInfo(@Param("hospitalId")Long hospitalId, @Param("behospitalCode")String behospitalCode);
 
 
+    Map<String,Long> getCTAndMR( @Param("filterVO")FilterVO filterVO);
+
 }
 }

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

@@ -659,4 +659,11 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      * @return
      */
      */
     public Map<String,Long> selectOperationNum(@Param("filterVO")FilterVO filterVO);
     public Map<String,Long> selectOperationNum(@Param("filterVO")FilterVO filterVO);
+
+    /**
+     * 病理CT/MR触发多规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO);
 }
 }

+ 7 - 0
src/main/java/com/diagbot/service/DoctorAdviceService.java

@@ -5,6 +5,9 @@ import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.entity.DoctorAdvice;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.DoctorAdviceVO;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
+
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -17,4 +20,8 @@ import com.diagbot.vo.DoctorAdviceVO;
 public interface DoctorAdviceService extends IService<DoctorAdvice> {
 public interface DoctorAdviceService extends IService<DoctorAdvice> {
 
 
     IPage<DoctorAdviceDTO> getPage(DoctorAdviceVO doctorAdviceVO);
     IPage<DoctorAdviceDTO> getPage(DoctorAdviceVO doctorAdviceVO);
+
+    Map<String, Long> getCTAndMR(FilterVO filterVO);
+
+
 }
 }

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

@@ -1102,4 +1102,13 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return  baseMapper.selectOperationNum(filterVO);
         return  baseMapper.selectOperationNum(filterVO);
 
 
     }
     }
+
+    /**
+     * 病理CT/MR触发多规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO){
+        return  baseMapper.triggeringRules(filterVO);
+    }
 }
 }

+ 12 - 0
src/main/java/com/diagbot/service/impl/DoctorAdviceServiceImpl.java

@@ -7,11 +7,13 @@ import com.diagbot.mapper.DoctorAdviceMapper;
 import com.diagbot.service.DoctorAdviceService;
 import com.diagbot.service.DoctorAdviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.DoctorAdviceVO;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
 /**
 /**
@@ -57,4 +59,14 @@ public class DoctorAdviceServiceImpl extends ServiceImpl<DoctorAdviceMapper, Doc
         return page;
         return page;
     }
     }
 
 
+    /**
+     * 获取参与CT和MR次数和人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> getCTAndMR(FilterVO filterVO){
+        return baseMapper.getCTAndMR(filterVO);
+    }
+
+
 }
 }

+ 84 - 6
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -17578,8 +17578,8 @@
         <if test="filterVO.startDate != null and  filterVO.endDate != null">
         <if test="filterVO.startDate != null and  filterVO.endDate != null">
         count(
         count(
         CASE
         CASE
-        WHEN   <![CDATA[  d.behospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND d.behospital_date <= #{filterVO.endDate}]]> THEN
+        WHEN   <![CDATA[  d.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]> THEN
         1
         1
         ELSE
         ELSE
         NULL
         NULL
@@ -17597,7 +17597,12 @@
         </if>
         </if>
         count(
         count(
         CASE
         CASE
-        WHEN   b.operation_fee > 0 THEN
+        WHEN   b.operation_fee > 0
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+        <![CDATA[ and d.leave_hospital_date >= #{filterVO.startDate}]]>
+        <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        THEN
         1
         1
         ELSE
         ELSE
         NULL
         NULL
@@ -17605,7 +17610,12 @@
         ) AS 'operationFee',
         ) AS 'operationFee',
         count(
         count(
         CASE
         CASE
-        WHEN   b.antibiosis_fee > 0 THEN
+        WHEN   b.antibiosis_fee > 0
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and d.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        THEN
         1
         1
         ELSE
         ELSE
         NULL
         NULL
@@ -17614,7 +17624,12 @@
         count(
         count(
         CASE
         CASE
         WHEN   b.operation_fee > 0
         WHEN   b.operation_fee > 0
-        AND   b.pathology_fee > 0 THEN
+        AND   b.pathology_fee > 0
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and d.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        THEN
         1
         1
         ELSE
         ELSE
         NULL
         NULL
@@ -17642,5 +17657,68 @@
         AND d.hospital_id = b.hospital_id
         AND d.hospital_id = b.hospital_id
         AND b.is_deleted = 'N'
         AND b.is_deleted = 'N'
     </select>
     </select>
-
+<!--    关于触发规则不符合人数-->
+    <select id="triggeringRules" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+	count(
+		DISTINCT CASE
+		WHEN (b.cases_entry_id = 2762
+		OR b.cases_entry_id = 2370) THEN
+			b.behospital_code
+		ELSE
+			NULL
+		END
+	) as 'antibiosisNum',
+    count(
+        DISTINCT CASE
+        WHEN (b.cases_entry_id = 2658
+        OR b.cases_entry_id = 2537) THEN
+            b.behospital_code
+        ELSE
+            NULL
+        END
+        ) as 'CT',
+    count(
+        DISTINCT CASE
+        WHEN (b.cases_entry_id = 2522
+        OR b.cases_entry_id = 2658) THEN
+            b.behospital_code
+        ELSE
+            NULL
+        END
+        ) as 'MR',
+    count(
+        DISTINCT CASE
+        WHEN (b.cases_entry_id = 2522
+        OR b.cases_entry_id = 2658) THEN
+            b.behospital_code
+        ELSE
+            NULL
+        END
+        ) as 'bacterialCulture'
+    FROM
+	(
+		SELECT
+			a.behospital_code,
+			c.cases_entry_id
+		FROM
+			med_qcresult_info a,
+			med_behospital_info b,
+			med_qcresult_detail c
+		WHERE
+			a.hospital_id = #{filterVO.hospitalId}
+		AND a.hospital_id = b.hospital_id
+		AND a.hospital_id = c.hospital_id
+		AND b.is_placefile = #{filterVO.isPlacefile}
+		AND a.behospital_code = b.behospital_code
+		AND a.behospital_code = c.behospital_code
+		AND a.is_deleted = 'N'
+		AND b.is_deleted = 'N'
+		AND c.is_deleted = 'N'
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND b.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND b.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+	) b
+    </select>
 </mapper>
 </mapper>

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

@@ -213,4 +213,77 @@
         </foreach>
         </foreach>
     </update>
     </update>
 
 
+<!--    CT次数和人数-->
+    <select id="getCTAndMR" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+	count(
+		CASE
+		WHEN a.da_item_name LIKE '%CT%' THEN
+			1
+		ELSE
+			NULL
+		END
+	) AS 'CT',
+	count(
+		CASE
+		WHEN a.da_item_name LIKE '%MR%' THEN
+			1
+		ELSE
+			NULL
+		END
+	) AS 'MR',
+	count(
+		DISTINCT
+		CASE
+		WHEN a.da_item_name LIKE '%CT%' THEN
+			a.behospital_code
+		ELSE
+			NULL
+		END
+	) AS 'CTNUM' ,
+    count(
+		DISTINCT
+		CASE
+		WHEN a.da_item_name LIKE '%MR%' THEN
+			a.behospital_code
+		ELSE
+			NULL
+		END
+	) AS 'MRNUM',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.da_item_name LIKE '%细菌培养%' THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'bacterialCulturesNum'
+    from(
+    SELECT
+	b.behospital_code,
+	a.da_item_name
+    FROM
+	med_doctor_advice a,
+	med_behospital_info b,
+	med_qcresult_info c
+    WHERE
+	b.behospital_code = c.behospital_code
+    AND b.behospital_code = a.behospital_code
+    AND b.hospital_id = #{filterVO.hospitalId}
+    AND b.hospital_id = a.hospital_id
+    AND b.hospital_id = c.hospital_id
+    AND b.is_placefile = #{filterVO.isPlacefile}
+    AND b.is_deleted = 'N'
+    AND a.is_deleted = 'N'
+    AND c.is_deleted = 'N'
+    AND a.doctor_advice_type = '临时医嘱'
+    and a.da_status != NULL
+    and a.da_status != '作废'
+        <if test="filterVO.startDate != null and filterVO.endDate != null">
+            <![CDATA[ and b.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND b.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        ) a
+    </select>
 </mapper>
 </mapper>