|
|
@@ -0,0 +1,300 @@
|
|
|
+package com.jyxt.getdatabyview.view.repository;
|
|
|
+
|
|
|
+import com.jyxt.getdatabyview.view.LISView;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.jdbc.core.RowMapper;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.stereotype.Repository;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Component // 通用注解
|
|
|
+@Repository
|
|
|
+public class LISViewRepository {
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(LISViewRepository.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+// qualityIndicatorList.add("总标本不合格率"); //0
|
|
|
+// qualityIndicatorList.add("抗凝标本凝集率"); //1
|
|
|
+// qualityIndicatorList.add("标本类型错误率"); //2
|
|
|
+// qualityIndicatorList.add("标本容器错误率"); //3
|
|
|
+// qualityIndicatorList.add("标本溶血率"); //4
|
|
|
+// qualityIndicatorList.add("标本采集量错误率"); //5
|
|
|
+// qualityIndicatorList.add("急诊常规实验室内TAT中位数"); //6
|
|
|
+// qualityIndicatorList.add("急诊生化免疫实验室内TAT中位数"); //7
|
|
|
+// qualityIndicatorList.add("急诊凝血实验室内TAT中位数"); //8
|
|
|
+// qualityIndicatorList.add("急诊血常规检验前周转时间中位数"); //9
|
|
|
+// qualityIndicatorList.add("急诊血常规实验室内周转时间中位数"); //10
|
|
|
+// qualityIndicatorList.add("常规检验报告发放TAT时间符合率"); //11
|
|
|
+// qualityIndicatorList.add("检验报告不正确率"); //12
|
|
|
+// qualityIndicatorList.add("危急值通报率"); //13
|
|
|
+// qualityIndicatorList.add("危急值通报及时率"); //14
|
|
|
+// qualityIndicatorList.add("标本合格率"); //15
|
|
|
+// qualityIndicatorList.add("TAT时间合格率"); //16
|
|
|
+// qualityIndicatorList.add("报告准确率"); //17
|
|
|
+// qualityIndicatorList.add("危急值通报符合率"); //18
|
|
|
+
|
|
|
+ public String query(Integer QIIndex,String dateRange) {
|
|
|
+ String StartDate = dateRange.substring(0,10)+" 00:00:00";
|
|
|
+ String EndDate = dateRange.substring(11)+" 23:59:59";
|
|
|
+// System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+
|
|
|
+ if (QIIndex != null) {
|
|
|
+ //总标本不合格率
|
|
|
+ if (QIIndex == 0) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0/AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM" +
|
|
|
+ "(SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //抗凝标本凝集率
|
|
|
+ if (QIIndex == 1) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount*1.0/AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE REJECTREASONCODE='02' and RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE sampletypeid='00' and RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //标本类型错误率
|
|
|
+ if (QIIndex == 2) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0/AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE REJECTREASONCODE='2' and RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //标本容器错误率
|
|
|
+ if (QIIndex == 3) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0 / AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE REJECTREASONCODE='20' and RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //标本溶血率
|
|
|
+ if (QIIndex == 4) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0 / AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE REJECTREASONCODE='01' and RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //标本采集量错误率
|
|
|
+ if (QIIndex == 5) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0 / AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE REJECTREASONCODE in ('03','5') and RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //急诊常规实验室内TAT中位数
|
|
|
+ if (QIIndex == 6) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT MEDIAN(c.INTAT) AS RESULTVALUE, MAX(d.TOTAL_COUNT) AS Total FROM V_JT_TAT c INNER JOIN (SELECT b.SAMPLEID,COUNT(*) OVER() AS TOTAL_COUNT FROM V_JT_LISREQUEST a INNER JOIN V_JT_LISREPORT b ON a.SAMPLEID = b.SAMPLEID " +
|
|
|
+ "WHERE b.INSTRUMENTGROUPCODE IN ('CG_BloodLAS','CG_UristLAS3','CG_XD6001','USF3000','CG_FA280S','CG_BC5390','CG_FA280S2') AND a.RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) d ON c.SAMPLEID = d.SAMPLEID";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ //急诊生化免疫实验室内TAT中位数
|
|
|
+ if (QIIndex == 7) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT MEDIAN(c.INTAT) AS RESULTVALUE, MAX(d.TOTAL_COUNT) AS Total FROM V_JT_TAT c INNER JOIN (SELECT b.SAMPLEID,COUNT(*) OVER() AS TOTAL_COUNT FROM V_JT_LISREQUEST a INNER JOIN V_JT_LISREPORT b ON a.SAMPLEID = b.SAMPLEID " +
|
|
|
+ "WHERE b.INSTRUMENTGROUPCODE='Abbott_IM_LAS_1' AND a.RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) d ON c.SAMPLEID = d.SAMPLEID";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ //急诊凝血实验室内TAT中位数
|
|
|
+ if (QIIndex == 8) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT MEDIAN(c.INTAT) AS RESULTVALUE, MAX(d.TOTAL_COUNT) AS Total FROM V_JT_TAT c INNER JOIN (SELECT b.SAMPLEID,COUNT(*) OVER() AS TOTAL_COUNT FROM V_JT_LISREQUEST a INNER JOIN V_JT_LISREPORT b ON a.SAMPLEID = b.SAMPLEID " +
|
|
|
+ "WHERE b.INSTRUMENTGROUPCODE='CG_StagoCompact' AND a.RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) d ON c.SAMPLEID = d.SAMPLEID";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ //急诊血常规检验前周转时间中位数
|
|
|
+ if (QIIndex == 9) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT MEDIAN(c.PRETAT) AS RESULTVALUE, MAX(d.TOTAL_COUNT) AS Total FROM V_JT_TAT c INNER JOIN (SELECT b.SAMPLEID,COUNT(*) OVER() AS TOTAL_COUNT FROM V_JT_LISREQUEST a INNER JOIN V_JT_LISREPORT b ON a.SAMPLEID = b.SAMPLEID " +
|
|
|
+ "WHERE b.INSTRUMENTGROUPCODE in ('CG_BloodLAS','CG_BC5390') AND a.RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) d ON c.SAMPLEID = d.SAMPLEID";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ //急诊血常规实验室内周转时间中位数
|
|
|
+ if (QIIndex == 10) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT MEDIAN(c.INTAT) AS RESULTVALUE, MAX(d.TOTAL_COUNT) AS Total FROM V_JT_TAT c INNER JOIN (SELECT b.SAMPLEID,COUNT(*) OVER() AS TOTAL_COUNT FROM V_JT_LISREQUEST a INNER JOIN V_JT_LISREPORT b ON a.SAMPLEID = b.SAMPLEID " +
|
|
|
+ "WHERE b.INSTRUMENTGROUPCODE in ('CG_BloodLAS','CG_BC5390') AND a.RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) d ON c.SAMPLEID = d.SAMPLEID";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ //常规检验报告发放TAT时间符合率
|
|
|
+
|
|
|
+ //检验报告不正确率+
|
|
|
+ if (QIIndex == 12) {
|
|
|
+// System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((CancelCount * 1.0 / AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,CancelCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM V_JT_LISCANCELREPORT WHERE GROUPID in ('30','06','05','00','31','07') and CANCELAUDITREASON like '%不正确%' and CANCELAUDITTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS CancelCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisreport WHERE GROUPID in ('30','06','05','00','31','07') and AUDITTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //危急值通报率
|
|
|
+ if (QIIndex == 13) {
|
|
|
+// System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ //String sqlQry = "select count(*) as ResultValue from v_jt_lisrequest where SampleTime between ? and ?";
|
|
|
+// String sqlQry = "SELECT ROUND((COUNT(CASE WHEN ReceiverFlag = '1' THEN 1 END)/COUNT(*))*100,2) AS ResultValue FROM V_JT_CRITICAL where BUILDCRISISTIME between TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')";
|
|
|
+ String sqlQry = "SELECT ROUND((COUNT(CASE WHEN ReceiverFlag = '1' THEN 1 END)/COUNT(*))*100, 2) AS ResultValue, COUNT(CASE WHEN ReceiverFlag = '1' THEN 1 END) AS Numerator,COUNT(*) AS Denominator FROM " +
|
|
|
+ "V_JT_CRITICAL WHERE BUILDCRISISTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')";
|
|
|
+
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //危急值通报及时率
|
|
|
+ if (QIIndex == 14) {
|
|
|
+// System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ //String sqlQry = "select count(*) as ResultValue from v_jt_lisrequest where SampleTime between ? and ?";
|
|
|
+ String sqlQry = "SELECT ROUND((COUNT(CASE WHEN AccordFlag = '1' THEN 1 END)/COUNT(*))*100, 2) AS ResultValue, COUNT(CASE WHEN AccordFlag = '1' THEN 1 END) AS Numerator,COUNT(*) AS Denominator FROM " +
|
|
|
+ "V_JT_CRITICAL WHERE BUILDCRISISTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+
|
|
|
+ //标本合格率
|
|
|
+ if (QIIndex == 15) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((RejectCount * 1.0/AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,RejectCount as Numerator,AllCount as Denominator FROM " +
|
|
|
+ "(SELECT (SELECT COUNT(*) FROM v_jt_reject_sample WHERE RejectTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS RejectCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisrequest WHERE RegisterTime BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ // 提取三个部分的字符串值
|
|
|
+ String resultValueStr = lvList.get(0).getResultValue();
|
|
|
+ String denominatorStr = lvList.get(0).getDenominator();
|
|
|
+ String numeratorStr = lvList.get(0).getNumerator();
|
|
|
+
|
|
|
+ // 将分母和分子转换为整数进行计算(假设为整数类型)
|
|
|
+ int denominator = Integer.parseInt(denominatorStr);
|
|
|
+ int numerator = Integer.parseInt(numeratorStr);
|
|
|
+ int newNumeratorValue = denominator - numerator;
|
|
|
+ float resultValue = 100-Float.parseFloat(resultValueStr);
|
|
|
+
|
|
|
+ // 构造新的字符串
|
|
|
+ return String.join("^", String.valueOf(resultValue), String.valueOf(newNumeratorValue), denominatorStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ //报告准确率
|
|
|
+ if (QIIndex == 17) {
|
|
|
+ //System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ String sqlQry = "SELECT CASE WHEN AllCount = 0 THEN -1 ELSE CAST((CancelCount * 1.0/AllCount)*100 AS DECIMAL(20,4)) END AS ResultValue,CancelCount as Numerator,AllCount as Denominator FROM (" +
|
|
|
+ "SELECT (SELECT COUNT(*) FROM V_JT_LISCANCELREPORT WHERE CANCELAUDITTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS CancelCount," +
|
|
|
+ "(SELECT COUNT(*) FROM v_jt_lisreport WHERE AUDITTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')) AS AllCount FROM DUAL) Counts";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ // 提取三个部分的字符串值
|
|
|
+ String resultValueStr = lvList.get(0).getResultValue();
|
|
|
+ String denominatorStr = lvList.get(0).getDenominator();
|
|
|
+ String numeratorStr = lvList.get(0).getNumerator();
|
|
|
+
|
|
|
+ // 将分母和分子转换为整数进行计算(假设为整数类型)
|
|
|
+ int denominator = Integer.parseInt(denominatorStr);
|
|
|
+ int numerator = Integer.parseInt(numeratorStr);
|
|
|
+ int newNumeratorValue = denominator - numerator;
|
|
|
+ float resultValue = 100-Float.parseFloat(resultValueStr);
|
|
|
+
|
|
|
+ // 构造新的字符串
|
|
|
+ return String.join("^", String.valueOf(resultValue), String.valueOf(newNumeratorValue), denominatorStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ //危急值通报符合率
|
|
|
+ if (QIIndex == 18) {
|
|
|
+// System.out.println("dateRange:"+dateRange+",StartDate:"+StartDate+",EndDate:"+EndDate);
|
|
|
+ //String sqlQry = "select count(*) as ResultValue from v_jt_lisrequest where SampleTime between ? and ?";
|
|
|
+ String sqlQry = "SELECT ROUND((COUNT(CASE WHEN AccordFlag = '1' THEN 1 END)/COUNT(*))*100, 2) AS ResultValue, COUNT(CASE WHEN AccordFlag = '1' THEN 1 END) AS Numerator,COUNT(*) AS Denominator FROM " +
|
|
|
+ "V_JT_CRITICAL WHERE BUILDCRISISTIME BETWEEN TO_DATE('"+StartDate+"', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('"+EndDate+"', 'YYYY-MM-DD HH24:MI:SS')";
|
|
|
+ log.info("excute sql:"+sqlQry);
|
|
|
+ RowMapper<LISView> infoRowMapper = new BeanPropertyRowMapper<>(LISView.class);
|
|
|
+ List<LISView> lvList = jdbcTemplate.query(sqlQry, infoRowMapper);
|
|
|
+ //System.out.println(lvList.get(0).getResultValue());
|
|
|
+ return lvList.get(0).getResultValue()+"^"+lvList.get(0).getNumerator()+"^"+lvList.get(0).getDenominator();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String query2(Integer QIIndex,String dateRange) {
|
|
|
+// System.out.println("in qry2");
|
|
|
+ return "100^1675";
|
|
|
+ }
|
|
|
+
|
|
|
+}
|