>CREATE PROCEDURE ct_Get_CaseAnalysis3 > >@tiDeptID int, @ltQueryFrom datetime, @ltQueryTo DateTime > >as > >declare @include bit >set @include=1 > >declare @Results TABLE (meetingnumber int,casedate varchar(12),mpinumber varchar(25), > PatientName varchar(50), PrimarySurgeon varchar(50), PrimaryProcedure varChar(100), > RoomName varchar(50), ScheduledStart DateTime, EnterOR dateTime,ExitOR datetime, > PRocStart DateTime, ProcEnd DateTime, RoomOpens int, RoomClosed int, WheelsTimeUsedMins int, > caseDelayMins int, TurnMinutes int, RoomOpensChar varchar(20), RoomCloseChar varChar(20),firstCase bit, > IncludeInRpt bit, SurgeonInRoom DateTime) > > >declare xCases cursor LOCAL READ_ONLY for >SELECT top 100 percent dbo.meetings.meetingnumber, > convert(varchar(12),dbo.meetings.Begintime,101) as CaseDate, > dbo.patients.mpinumber, > RTRIM(dbo.patients.lastname) + ', ' + RTRIM(dbo.patients.firstname) AS PatientName, > (SELECT top 1 RTRIM(dbo.coper.lastname) + ', ' + RTRIM(dbo.coper.firstname) AS surgeonName > FROM dbo.meetings m INNER JOIN > dbo.meetproc ON m.meetingnumber = dbo.meetproc.meetingnumber INNER JOIN > dbo.coper ON dbo.meetproc.coperid = dbo.coper.coperid > where m.meetingnumber=meetings.meetingnumber > order by meetproc.sysorder) as PrimarySurgeon, > (SELECT top 1 Description > FROM dbo.meetings m INNER JOIN > dbo.meetproc ON m.meetingnumber = dbo.meetproc.meetingnumber > where m.meetingnumber=meetings.meetingnumber > order by meetproc.sysorder) as PrimaryProcedure, > dbo.corooms.roomname, > dbo.meetings.begintime as ScheduledStart, > dbo.meetings.enteror, > dbo.meetings.exitor, > dbo.meetings.procstart, > dbo.meetings.procend, > dbo.coRooms.DeptDisplayOrder, > dbo.coRooms.SchedFrom as RoomOpens, > dbo.coRooms.SchedTo as RoomClosed, > datediff(mi,enteror,exitor) as WheelsTimeUsedMins, > datediff(mi,BeginTime,SurgeonInRoom) as CaseDelayMins, > 0 as turnMinutes, > ' ' as RoomOpensChar, > ' ' as RoomCloseChar, > dbo.meetings.SurgeonInRoom >FROM dbo.meetings INNER JOIN > dbo.patients ON dbo.meetings.patientid = dbo.patients.patientid INNER JOIN > dbo.corooms ON dbo.meetings.ActualRoomid = dbo.corooms.roomid >where iscompleted=1 >and meetings.DeptID=@tiDeptID >and meetings.iscancelled=0 >and meetings.isblock=0 >and meetings.begintime between @ltQueryFrom and @ltQueryTo >and meetings.RoomClosed=0 >and meetings.ERCase=0 >AND datepart(dw,Meetings.BeginTime) between 2 and 6 >order by convert(varchar(12),EnterOR,101),DeptDisplayOrder,EnterOR > > >declare @meetingnumber int, >@casedate varchar(12),@mpinumber varchar(25), >@PatientName varchar(50), @PrimarySurgeon varchar(50), @PrimaryProcedure varChar(100), >@RoomName varchar(50), @ScheduledStart DateTime, @EnterOR dateTime,@ExitOR datetime, >@PRocStart DateTime, @ProcEnd DateTime, @DeptDisplayOrder int,@RoomOpens int, @RoomClosed int, @WheelsTimeUsedMins int, >@caseDelayMins int, @TurnMinutes int, @RoomOpensChar varchar(20), @RoomCloseChar varChar(20),@SurgeonInRoom DateTime > >declare @tiCases Int > >declare @tcLastRoom varchar(50) >declare @tcLastDate varchar(10) >declare @tcLastExit datetime >declare @tiTurnMin int >set @tiTurnMin=0 >set @tcLastDate='XXXXXXXXXX' >set @tcLastRoom='XXXXXX' > > > >declare @tiCtr int >declare @FirstRecord bit >declare @RoomRow int >set @RoomRow=1 >set @FirstRecord=1 >set @tiCtr=1 >set nocount on >Open xCases >set @ticases=@@cursor_rows >--print 'tiCounter= '+cast(@tiCtr as varchar(10)) >--print 'tiCases ='+cast(@tiCases as varchar(10)) >while (@tiCtr <= @tiCases) >Begin > fetch xCases into @meetingnumber,@casedate,@mpinumber,@PatientName, @PrimarySurgeon, @PrimaryProcedure, > @RoomName,@ScheduledStart,@EnterOR,@ExitOR,@PRocStart,@ProcEnd,@DeptDisplayOrder,@RoomOpens,@RoomClosed, > @WheelsTimeUsedMins,@caseDelayMins,@TurnMinutes,@RoomOpensChar,@RoomCloseChar,@SurgeonInRoom > > -- Increment the counter > set @tiCtr = @tiCtr+1 > if (@firstRecord=1) > begin > set @FirstRecord = 0 > insert into @Results > (meetingnumber,casedate,mpinumber,PatientName, PrimarySurgeon, PrimaryProcedure, > RoomName, ScheduledStart,EnterOR,ExitOR,ProcStart,ProcEnd,RoomOpens, RoomClosed,WheelsTimeUsedMins, > caseDelayMins, TurnMinutes, RoomOpensChar, RoomCloseChar,firstCase,IncludeInRpt,SurgeonInRoom) values > (@meetingnumber,@casedate,@mpinumber,@PatientName, @PrimarySurgeon, @PrimaryProcedure, > @RoomName,@ScheduledStart,@EnterOR,@ExitOR,@PRocStart,@ProcEnd,@RoomOpens,@RoomClosed, > @WheelsTimeUsedMins,@caseDelayMins,@TurnMinutes,@RoomOpensChar,@RoomCloseChar,1,1,@SurgeonInRoom) > set @tcLastDate=@CaseDate > set @tcLastRoom=@RoomName > set @tcLastExit=@ExitOR > end > else > if (@CaseDate<>@tcLastDate) > begin > insert into @Results > (meetingnumber,casedate,mpinumber,PatientName, PrimarySurgeon, PrimaryProcedure, > RoomName, ScheduledStart,EnterOR,ExitOR,ProcStart,ProcEnd,RoomOpens, RoomClosed,WheelsTimeUsedMins, > caseDelayMins, TurnMinutes, RoomOpensChar, RoomCloseChar,firstCase,IncludeInRpt,SurgeonInRoom) values > (@meetingnumber,@casedate,@mpinumber,@PatientName, @PrimarySurgeon, @PrimaryProcedure, > @RoomName,@ScheduledStart,@EnterOR,@ExitOR,@PRocStart,@ProcEnd,@RoomOpens,@RoomClosed, > @WheelsTimeUsedMins,@caseDelayMins,@TurnMinutes,@RoomOpensChar,@RoomCloseChar,1,1,@SurgeonInRoom) > set @tcLastDate=@CaseDate > set @tcLastRoom=@RoomName > set @tcLastExit=@ExitOR > end > else > if (@RoomName<>@tcLastRoom) > begin > insert into @Results > (meetingnumber,casedate,mpinumber,PatientName, PrimarySurgeon, PrimaryProcedure, > RoomName, ScheduledStart,EnterOR,ExitOR,ProcStart,ProcEnd,RoomOpens, RoomClosed,WheelsTimeUsedMins, > caseDelayMins, TurnMinutes, RoomOpensChar, RoomCloseChar,firstCase,IncludeInRpt,SurgeonInRoom) values > (@meetingnumber,@casedate,@mpinumber,@PatientName, @PrimarySurgeon, @PrimaryProcedure, > @RoomName,@ScheduledStart,@EnterOR,@ExitOR,@PRocStart,@ProcEnd,@RoomOpens,@RoomClosed, > @WheelsTimeUsedMins,@caseDelayMins,@TurnMinutes,@RoomOpensChar,@RoomCloseChar,1,1,@SurgeonInRoom) > set @tcLastDate=@CaseDate > set @tcLastRoom=@RoomName > set @tcLastExit=@ExitOR > end > else > begin > set @tiTurnMin=DateDiff(mi,@tcLastExit,@EnterOR) > insert into @Results > (meetingnumber,casedate,mpinumber,PatientName, PrimarySurgeon, PrimaryProcedure, > RoomName, ScheduledStart,EnterOR,ExitOR,ProcStart,ProcEnd,RoomOpens, RoomClosed,WheelsTimeUsedMins, > caseDelayMins, TurnMinutes, RoomOpensChar, RoomCloseChar,firstCase,IncludeInRpt,SurgeonInRoom) values > (@meetingnumber,@casedate,@mpinumber,@PatientName, @PrimarySurgeon, @PrimaryProcedure, > @RoomName,@ScheduledStart,@EnterOR,@ExitOR,@PRocStart,@ProcEnd,@RoomOpens,@RoomClosed, > @WheelsTimeUsedMins,@caseDelayMins,@tiTurnMin,@RoomOpensChar,@RoomCloseChar,0,1,@SurgeonInRoom) > set @tcLastDate=@CaseDate > set @tcLastRoom=@RoomName > set @tcLastExit=@ExitOR > end >end > >select * from @Results > >-- Close the Cursor >Close xcases >DeAllocate xCases >GO >Kirk,