CAST(t2.fileNum AS FLOAT) / (t1.outNum-ISNULL(t4.deathNum, 0)),
2
)
END fileRate,
CASE
WHEN (t5.Num - ISNULL(t4.deathNum, 0)) <= 0 THEN
0
ELSE
ROUND(
CAST(
(
t5.Num - ISNULL(t4.deathNum, 0)
) AS FLOAT
) / (
t2.fileNum - ISNULL(t4.deathNum, 0)
),
2
)
END day2Rate,
CASE
WHEN (t6.Num - ISNULL(t4.deathNum, 0)) <= 0 THEN
0
ELSE
ROUND(
CAST(
(
t6.Num - ISNULL(t4.deathNum, 0)
) AS FLOAT
) / (
t2.fileNum - ISNULL(t4.deathNum, 0)
),
2
)
END day3Rate,
CASE
WHEN t2.fileNum = 0 THEN
0
ELSE
ROUND(
CAST(t7.Num AS FLOAT) / (t2.fileNum),
2
)
END day7Rate
from archive_master as c
]]>
left join (select dept_name,COUNT(*) AS outNum from archive_master as s where YEAR(s.discharge_date_time) != '1801' and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t1 on c.dept_name= t1.dept_name
left join (select dept_name,COUNT(*) AS fileNum from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t2 on c.dept_name= t2.dept_name
left join (select dept_name,COUNT(*) AS deathNum from archive_master as s where s.DISCHARGE_DISPOSITION=5 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t4 on c.dept_name= t4.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where s.ArchiveState = '128' and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) <= 2 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t5 on c.dept_name= t5.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) <= 3 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t6 on c.dept_name= t6.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) <= 7 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
group by dept_name) as t7 on c.dept_name= t7.dept_name
left join (SELECT code,Name FROM emr_dictionary where parent_id = 'dept_code') as t8 on c.dept_name=t8.code
) v_count where 1=1
<!--<if test="deptCode != null and deptCode!=''">-->
LEFT JOIN emr_dictionary d ON d.code= m.dept_name AND d.parent_id= 'dept_code'
LEFT JOIN ( SELECT COUNT ( id ) AS fileNum, dept_name FROM archive_master WHERE ArchiveState = '128' GROUP BY dept_name ) a ON a.dept_name= m.dept_name
LEFT JOIN ( SELECT COUNT ( id ) AS unfileNum, dept_name FROM archive_master WHERE ArchiveState != '128' AND ArchiveState != '1024' AND discharge_date_time != '1801-02-03 00:00:00.000' GROUP BY dept_name ) e ON e.dept_name= m.dept_name
LEFT JOIN ( SELECT COUNT ( id ) AS deathNum, dept_name FROM archive_master WHERE DISCHARGE_DISPOSITION = '5' GROUP BY dept_name ) t ON t.dept_name= m.dept_name
LEFT JOIN (SELECT COUNT(id) day2Num,dept_name FROM archive_master WHERE discharge_date_time != '1801-02-03 00:00:00.000'
AND ArchiveState= '128' AND DATEDIFF(DAY, discharge_date_time, checked_datetime)-(SELECT COUNT(id) FROM emr_holiday_set WHERE [date]BETWEEN discharge_date_time AND checked_datetime AND flag=2 )<=2 GROUP BY dept_name ) q ON q.dept_name=m.dept_name
LEFT JOIN (SELECT COUNT(id) day3Num,dept_name FROM archive_master WHERE discharge_date_time != '1801-02-03 00:00:00.000'
AND ArchiveState= '128' AND DATEDIFF(DAY, discharge_date_time, checked_datetime)-(SELECT COUNT(id) FROM emr_holiday_set WHERE [date]BETWEEN discharge_date_time AND checked_datetime AND flag=2 )<=3 GROUP BY dept_name ) q1 ON q1.dept_name=m.dept_name
LEFT JOIN (SELECT COUNT(id) day7Num,dept_name FROM archive_master WHERE discharge_date_time != '1801-02-03 00:00:00.000'
AND ArchiveState= '128' AND DATEDIFF(DAY, discharge_date_time, checked_datetime)-(SELECT COUNT(id) FROM emr_holiday_set WHERE [date]BETWEEN discharge_date_time AND checked_datetime AND flag=2 )<=7 GROUP BY dept_name ) q2 ON q2.dept_name=m.dept_name
<where>
1 = 1
AND m.discharge_date_time != '1801-02-03 00:00:00.000'
<iftest="deptCode != null and deptCode != ''">
AND m.dept_name =#{deptCode}
</if>
<iftest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and m.discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</if>
<iftest="startDate != null and startDate != ''">
and m.discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</if>
<iftest="endDate != null and endDate != ''">
and m.discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'