<iftest="overdueDays != null and overdueDays != ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}
<iftest="overdueDays == null or overdueDays == ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3
</if>
<iftest="deptAdmissionTo != null and deptAdmissionTo!=''">
select id,master_id ,convert(varchar,handle_time,120) handle_time ,handle_id,handle_name,following_type from (
select ROW_NUMBER() over(partition by master_id order by handle_time asc) RowNum
,Archive_Master_Following.*
from Archive_Master_Following where 1=1 and following_type='5') as t1 where 1=1 and RowNum = 1
) f
LEFT JOIN (
select id master_id,patient_id,inp_no,visit_id,name,dept_name,convert(varchar,discharge_date_time,120) discharge_date_time,check_doctor,first_instance,DOCTOR_IN_CHARGE,death_flag,dept_admission_to,convert(varchar,admission_date_time,120) admission_date_time from archive_master where archiveState!='作废'
) m
on f.master_id=m.master_id
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) c
on m.dept_name=c.code
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) e
<iftest="overdueDays != null and overdueDays != ''">
case when ISNULL(dbo.f_WorkDay(f1.handle_time,f2.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>0 then ISNULL(dbo.f_WorkDay(f1.handle_time,f2.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}
</if>
<iftest="dischargeDateTime != null">
and m.discharge_date_time = #{dischargeDateTime,jdbcType=NVARCHAR}
<iftest="overdueDays == null or overdueDays == ''">
case when ISNULL(dbo.f_WorkDay(f1.handle_time,f2.handle_time) , 0)-'3'>0 then ISNULL(dbo.f_WorkDay(f1.handle_time,f2.handle_time) , 0)-'3'
</if>
<choose>
<whentest="startDate != null and startDate != '' and endDate != null and endDate != ''">
and m.discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
select id,master_id,following_type,following_content,handle_name,handle_time,ROW_NUMBER() OVER (partition by master_id ORDER BY master_id,handle_time) as rowNumb from Archive_Master_Following where following_type='9'
)f1
LEFT JOIN (
select *,ROW_NUMBER() OVER (partition by master_id ORDER BY master_id,handle_time) as rowNumb from Archive_Master_Following where following_type='5'
)f2
on f1.master_id=f2.master_id and f1.rowNumb=f2.rowNumb-1
LEFT JOIN (
select id master_id,patient_id,inp_no,visit_id,name,dept_name,convert(varchar,discharge_date_time,120) discharge_date_time,check_doctor,first_instance,DOCTOR_IN_CHARGE,death_flag,dept_admission_to,convert(varchar,admission_date_time,120) admission_date_time from archive_master where archiveState!='作废'
) m
on f1.master_id=m.master_id
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) c
on m.dept_name=c.code
and m.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 m.discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<whentest="endDate != null and endDate != ''">
and m.discharge_date_time <= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
<iftest="createTime != null">
and d.create_time = #{createTime,jdbcType=NVARCHAR}
</if>
<choose>
<whentest="createTimeStart != null and createTimeStart != '' and createTimeEnd != null and createTimeEnd != ''">
and d.create_time between CONVERT(VARCHAR(10),#{createTimeStart,jdbcType=NCHAR},120) and
#{createTimeEnd,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<whentest="createTimeStart != null and createTimeStart != ''">
and d.create_time >= CONVERT(VARCHAR(10),#{createTimeStart,jdbcType=NCHAR},120)
</when>
<whentest="createTimeEnd != null and createTimeEnd != ''">
and d.create_time <= #{createTimeEnd,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
<iftest="overdueDays != null and overdueDays != ''">
and m.death_flag ='0'
and convert(int,[dbo].[getWorkday](m.discharge_date_time,d.create_time))-convert(int,#{overdueDays,jdbcType=INTEGER})>0
select master_id,count(*) total_back_num,count(*)* #{backFee,jdbcType=NCHAR} total_back_fee from Archive_Master_Following where following_type=9 group by master_id
) a
LEFT JOIN Archive_Master m
on a.master_id=m.id
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) d
on m.dept_name=d.code
<where> 1=1
<iftest="inpNo != null and inpNo != ''">
and m.inp_no like '%'+#{inpNo,jdbcType=NCHAR}+'%'
</if>
<iftest="visitId != null and visitId != ''">
and m.visit_id=#{visitId,jdbcType=NCHAR}
</if>
<iftest="name != null and name != ''">
and m.name like '%'+#{name,jdbcType=NCHAR}+'%'
</if>
<!--<if test="archivestate != null and archivestate != ''">-->