| 
					
				 | 
			
			
				@@ -0,0 +1,51 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package thyyxxk.webserver.dao.his.ybkf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.annotations.Mapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.annotations.Param; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.annotations.Select; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Mapper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public interface BedDaysDao { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Select(" select t.ryks, t.small_dept as deptId, sum(t.days) days from " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select inpatient_no,admiss_times,name,admiss_date,dis_date,small_dept, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " refer_physician, DATEDIFF(day, #{beginTime},dis_date) days, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=small_dept) ryks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=zk_ward) cyks " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " from zy_inactpatient where dis_date< #{endTime} and dis_date >= #{beginTime} " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " union all " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " select inpatient_no,admiss_times,name,admiss_date,dis_date,small_dept,refer_physician, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " DATEDIFF(day, case when admiss_date < #{beginTime} then #{beginTime} else admiss_date end, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " case when dis_date is null then #{endTime} else dis_date end) days, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=small_dept) ryks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=zk_ward) cyks " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " from zy_actpatient where admiss_date < #{endTime} and isnull(dis_date,#{beginTime}) >= #{beginTime} " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " ) t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " group by t.ryks, t.small_dept " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " order by t.ryks ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    List<Map>  selectBedDays(@Param("beginTime") String beginTime, @Param("endTime") String endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Select(" select t.ryks, t.doctor, sum(t.days) days from " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select inpatient_no,admiss_times,name,admiss_date,dis_date,small_dept, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " refer_physician, DATEDIFF(day, #{beginTime},dis_date) days, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=small_dept) ryks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=zk_ward) cyks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " isnull((select name from a_employee_mi where code=refer_physician), '其他') doctor " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " from zy_inactpatient where dis_date< #{endTime} and dis_date >= #{beginTime} and small_dept = #{deptId} " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " union all " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " select inpatient_no,admiss_times,name,admiss_date,dis_date,small_dept,refer_physician, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " DATEDIFF(day, case when admiss_date < #{beginTime} then #{beginTime} else admiss_date end, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " case when dis_date is null then #{endTime} else dis_date end) days, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=small_dept) ryks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " (select name from zd_unit_code where code=zk_ward) cyks, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " isnull((select name from a_employee_mi where code=refer_physician), '其他') doctor " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " from zy_actpatient where admiss_date < #{endTime} and isnull(dis_date,#{beginTime}) >= #{beginTime} and small_dept = #{deptId} " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " ) t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " group by t.ryks, t.doctor " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            " order by t.ryks ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    List<Map>  selectYsDaysDetails(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptId") String deptId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |