Forráskód Böngészése

质控核查统计

zhaops 5 éve
szülő
commit
ab21df8ecb
1 módosított fájl, 217 hozzáadás és 9 törlés
  1. 217 9
      src/main/resources/mapper/BehospitalInfoMapper.xml

+ 217 - 9
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -4341,16 +4341,16 @@
     <!-- 病案首页改善率统计(首页)-->
     <select id="homePageImproveCount" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.HomePageImproveDTO">
         SELECT
-        t2.mrNum,
+        t2.homePageMRNum,
         t1.improveNum,
-        round( t1.improveNum / t2.mrNum, 4 ) AS improvePercent,
-        Concat( round( t1.improveNum / t2.mrNum * 100, 2 ), '%' ) AS improvePercentStr,
+        round( t1.improveNum / t2.homePageMRNum, 4 ) AS improvePercent,
+        Concat( round( t1.improveNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improvePercentStr,
         t1.improveToPassNum,
-        round( t1.improveToPassNum / t2.mrNum, 4 ) AS improveToPassPercent,
-        Concat( round( t1.improveToPassNum / t2.mrNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
+        round( t1.improveToPassNum / t2.homePageMRNum, 4 ) AS improveToPassPercent,
+        Concat( round( t1.improveToPassNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
         t1.improveToFullNum,
-        round( t1.improveToFullNum / t2.mrNum, 4 ) AS improveToFullPercent,
-        Concat( round( t1.improveToFullNum / t2.mrNum * 100, 2 ), '%' ) AS improveToFullPercentStr
+        round( t1.improveToFullNum / t2.homePageMRNum, 4 ) AS improveToFullPercent,
+        Concat( round( t1.improveToFullNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improveToFullPercentStr
         FROM
         (
         SELECT
@@ -4429,7 +4429,7 @@
         ) t1,
         (
         SELECT
-        count(*) AS mrNum
+        count( DISTINCT a.behospital_code ) AS homePageMRNum
         FROM
         med_behospital_info a,
         med_home_page b,
@@ -4437,13 +4437,131 @@
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        ) t2
+    </select>
+
+    <!-- 质控核查统计(内页)-->
+    <select id="qcCheckStatistics" parameterType="com.diagbot.vo.FilterQcCheckVO" resultType="com.diagbot.dto.HomePageImproveDTO">
+        SELECT
+        mr.beh_dept_id AS deptId,
+        mr.beh_dept_name AS deptName,
+        IFNULL( mr.mrNum, 0 ) AS mrNum,
+        ck.checkedNum AS checkedNum,
+        ROUND( ck.checkedNum / mr.mrNum, 4 ) AS checkedPercent,
+        CONCAT( ROUND( ck.checkedNum / mr.mrNum * 100, 2 ), '%' ) AS checkedPercentStr,
+        hmmr_t.homePageMRNum,
+        improve_t.improveNum,
+        round( improve_t.improveNum / hmmr_t.homePageMRNum, 4 ) AS improvePercent,
+        Concat( round( improve_t.improveNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improvePercentStr,
+        improve_t.improveToPassNum,
+        round( improve_t.improveToPassNum / hmmr_t.homePageMRNum, 4 ) AS improveToPassPercent,
+        Concat( round( improve_t.improveToPassNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
+        improve_t.improveToFullNum,
+        round( improve_t.improveToFullNum / hmmr_t.homePageMRNum, 4 ) AS improveToFullPercent,
+        Concat( round( improve_t.improveToFullNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improveToFullPercentStr
+        FROM
+        (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count(*) AS mrNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) mr
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count(*) AS checkedNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_check_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
+        AND a.qc_type_id != 0
         AND a.is_placefile = '1'
+        AND c.`status` = 1
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) ck ON mr.beh_dept_id = ck.beh_dept_id
+        AND mr.beh_dept_name = ck.beh_dept_name
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count( DISTINCT a.behospital_code ) AS homePageMRNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
         AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        AND c.have_home_page = '1'
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
         </if>
@@ -4453,6 +4571,96 @@
         <if test="endDate != null">
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
         </if>
-        ) t2
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) hmmr_t ON mr.beh_dept_id = hmmr_t.beh_dept_id
+        AND mr.beh_dept_name = hmmr_t.beh_dept_name
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        <![CDATA[sum( e.`level` = '不合格' AND d.`level` = '合格' AND d.score_res < 20 ) AS improveToPassNum,]]>
+        sum( d.score_res = 20 ) AS improveToFullNum,
+        count(*) AS improveNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_cases d,
+        (
+        SELECT
+        m4.*
+        FROM
+        med_behospital_info m1,
+        med_home_page m2,
+        med_qcresult_info m3,
+        med_qcresult_cases m4
+        WHERE
+        m1.is_deleted = 'N'
+        AND m2.is_deleted = 'N'
+        AND m3.is_deleted = 'Y'
+        AND m4.is_deleted = 'Y'
+        AND m1.hospital_id = m2.hospital_id
+        AND m1.hospital_id = m3.hospital_id
+        AND m1.hospital_id = m4.hospital_id
+        AND m1.behospital_code = m2.behospital_code
+        AND m1.behospital_code = m3.behospital_code
+        AND m1.behospital_code = m4.behospital_code
+        AND m3.have_home_page = 1
+        AND m4.cases_id = 243
+        <if test="hospitalId != null and hospitalId != ''">
+            AND m1.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND m1.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND m1.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND m1.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        m1.behospital_code
+        ORDER BY
+        m1.behospital_code,
+        m4.gmt_create
+        ) e
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.hospital_id = e.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND a.behospital_code = d.behospital_code
+        AND a.behospital_code = e.behospital_code
+        AND d.cases_id = 243
+        AND d.score_res > e.score_res
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) improve_t ON mr.beh_dept_id = improve_t.beh_dept_id
+        AND mr.beh_dept_name = improve_t.beh_dept_name
     </select>
 </mapper>