Procházet zdrojové kódy

31天再入院人数

zhaops před 5 roky
rodič
revize
28ec66880d
1 změnil soubory, kde provedl 35 přidání a 135 odebrání
  1. 35 135
      src/main/resources/mapper/BehospitalInfoMapper.xml

+ 35 - 135
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -3480,22 +3480,24 @@
         FROM
         (
         SELECT
-        bc1.file_code,
-        bc1.diagnose,
-        bc1.behospitalCode,
-        bc1.behospitalDate,
-        bc1.leaveHospitalDate
+        r1.file_code,
+        r1.diagnose,
+        r1.behospital_code AS behospitalCode,
+        r1.behospital_date AS behospitalDate,
+        r1.leave_hospital_date AS leaveHospitalDate,
+        r2.behospital_code AS lastBehospitalCode,
+        r2.behospital_date AS lastBehospitalDate,
+        r2.leave_hospital_date AS lastLeaveHospitalDate,
+        TIMESTAMPDIFF( DAY, DATE( r2.leave_hospital_date ), DATE( r1.behospital_date ) ) AS diffDay
         FROM
         (
         SELECT
+        ( @rownum := @rownum + 1 ) AS rownum,
         t1.file_code,
         t1.diagnose,
-        t1.behospital_code AS behospitalCode,
-        t1.leave_hospital_date AS leaveHospitalDate,
-        t2.behospital_code AS lastBehospitalCode,
-        t2.behospital_date AS lastBehospitalDate,
-        t1.behospital_date AS behospitalDate,
-        t2.leave_hospital_date AS lastLeaveHospitalDate
+        t1.behospital_code,
+        t1.behospital_date,
+        t1.leave_hospital_date
         FROM
         (
         SELECT
@@ -3513,8 +3515,9 @@
         med_behospital_info a
         WHERE
         a.is_deleted = 'N'
-        AND a.is_placefile = '1'
+        AND a.is_placefile = 1
         AND a.qc_type_id != 0
+        AND IFNULL( a.diagnose, '' )!= ''
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
         </if>
@@ -3524,7 +3527,6 @@
         <if test="endDate != null">
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
         </if>
-        AND IFNULL( a.diagnose, '' )!= ''
         GROUP BY
         a.file_code,
         a.diagnose
@@ -3552,75 +3554,16 @@
         tt1.diagnose,
         tt2.behospital_date DESC
         ) t1,
-        (
-        SELECT
-        tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_code,
-        tt2.behospital_date,
-        tt2.leave_hospital_date
-        FROM
-        (
-        SELECT
-        a.file_code,
-        a.diagnose
-        FROM
-        med_behospital_info a
-        WHERE
-        a.is_deleted = 'N'
-        AND a.is_placefile = 1
-        AND a.qc_type_id != 0
-        AND a.hospital_id = 1
-        AND IFNULL( a.diagnose, '' )!= ''
-        GROUP BY
-        a.file_code,
-        a.diagnose
-        HAVING
-        count(*)> 1
-        ) tt1,
-        med_behospital_info tt2
-        WHERE
-        tt2.is_deleted = 'N'
-        AND tt2.is_placefile = 1
-        AND tt2.qc_type_id != 0
-        AND tt1.file_code = tt2.file_code
-        AND tt1.diagnose = tt2.diagnose
-        <if test="hospitalId != null and hospitalId != ''">
-            AND tt2.hospital_id = #{hospitalId}
-        </if>
-        <if test="startDate != null">
-            <![CDATA[ AND tt2.leave_hospital_date >= DATE(#{startDate})]]>
-        </if>
-        <if test="endDate != null">
-            <![CDATA[AND tt2.leave_hospital_date < DATE(#{endDate})]]>
-        </if>
-        ORDER BY
-        tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_date DESC
-        ) t2
-        WHERE
-        t1.file_code = t2.file_code
-        AND t1.diagnose = t2.diagnose
-        AND t1.behospital_code != t2.behospital_code
-        AND ( TIMESTAMPDIFF( DAY, DATE( t2.leave_hospital_date ), DATE( t1.behospital_date )) BETWEEN 0 AND 31 )) bc1 UNION
-        SELECT
-        bc2.file_code,
-        bc2.diagnose,
-        bc2.lastBehospitalCode,
-        bc2.lastBehospitalDate,
-        bc2.lastLeaveHospitalDate
-        FROM
-        (
+        ( SELECT @rownum := 0 ) r
+        ) r1
+        LEFT JOIN (
         SELECT
-        t1.file_code,
-        t1.diagnose,
-        t1.behospital_code AS behospitalCode,
-        t1.leave_hospital_date AS leaveHospitalDate,
-        t2.behospital_code AS lastBehospitalCode,
-        t2.behospital_date AS lastBehospitalDate,
-        t1.behospital_date AS behospitalDate,
-        t2.leave_hospital_date AS lastLeaveHospitalDate
+        ( @INDEX := @INDEX + 1 ) AS rownum,
+        t2.file_code,
+        t2.diagnose,
+        t2.behospital_code,
+        t2.behospital_date,
+        t2.leave_hospital_date
         FROM
         (
         SELECT
@@ -3638,8 +3581,9 @@
         med_behospital_info a
         WHERE
         a.is_deleted = 'N'
-        AND a.is_placefile = '1'
+        AND a.is_placefile = 1
         AND a.qc_type_id != 0
+        AND IFNULL( a.diagnose, '' )!= ''
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
         </if>
@@ -3649,7 +3593,6 @@
         <if test="endDate != null">
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
         </if>
-        AND IFNULL( a.diagnose, '' )!= ''
         GROUP BY
         a.file_code,
         a.diagnose
@@ -3676,60 +3619,17 @@
         tt1.file_code,
         tt1.diagnose,
         tt2.behospital_date DESC
-        ) t1,
-        (
-        SELECT
-        tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_code,
-        tt2.behospital_date,
-        tt2.leave_hospital_date
-        FROM
-        (
+        ) t2,(
         SELECT
-        a.file_code,
-        a.diagnose
-        FROM
-        med_behospital_info a
-        WHERE
-        a.is_deleted = 'N'
-        AND a.is_placefile = 1
-        AND a.qc_type_id != 0
-        AND a.hospital_id = 1
-        AND IFNULL( a.diagnose, '' )!= ''
-        GROUP BY
-        a.file_code,
-        a.diagnose
-        HAVING
-        count(*)> 1
-        ) tt1,
-        med_behospital_info tt2
-        WHERE
-        tt2.is_deleted = 'N'
-        AND tt2.is_placefile = 1
-        AND tt2.qc_type_id != 0
-        AND tt1.file_code = tt2.file_code
-        AND tt1.diagnose = tt2.diagnose
-        <if test="hospitalId != null and hospitalId != ''">
-            AND tt2.hospital_id = #{hospitalId}
-        </if>
-        <if test="startDate != null">
-            <![CDATA[ AND tt2.leave_hospital_date >= DATE(#{startDate})]]>
-        </if>
-        <if test="endDate != null">
-            <![CDATA[AND tt2.leave_hospital_date < DATE(#{endDate})]]>
-        </if>
-        ORDER BY
-        tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_date DESC
-        ) t2
-        WHERE
-        t1.file_code = t2.file_code
-        AND t1.diagnose = t2.diagnose
-        AND t1.behospital_code != t2.behospital_code
-        AND ( TIMESTAMPDIFF( DAY, DATE( t2.leave_hospital_date ), DATE( t1.behospital_date )) BETWEEN 0 AND 31 )) bc2
+        @INDEX := 0
+        ) r
+        ) r2 ON r1.file_code = r2.file_code
+        AND r1.rownum = r2.rownum - 1
         ) t
+        WHERE
+        t.diffDay IS NOT NULL
+        AND t.diffDay BETWEEN 0
+        AND 31
     </select>
 
     <!-- 病案首页质控病历数统计-全院(首页)-->