2014-10-26 2 views
0

Мы пытаемся сгладить колебания в использовании нашего лечебного центра.SQL находит дубликаты встреч в неделю?

В настоящее время у нас есть тяжелое использование на несколько дней в неделю (вт/чт), а не на других (MON, ВДОС, пт)

Сейчас часто пациент должен присутствовать, чтобы быть рассмотрены до того, их лечение на днях «эффективными» врачами, которые видят много пациентов. Врачи - это неполный рабочий день, поэтому легко переключаются дни.

Однако в некоторых случаях они участвуют в «традиционном» (для них) назначении дня недели, но не нуждаются в обзоре, поэтому их можно будет переместить в другой день (вперед или назад один день).

Однако это работает только в том случае, если у них есть (1) назначение на этой неделе (некоторые процедуры - несколько дней в неделю).

So:

1-й. Найти всех пациентов, посещающих лечение (LOCATION = «CHEMO») в течение определенной недели в каждый день (M/T/W/T/F), у нет назначение на просмотр (LOCATION = "CLINIC")

2-й. Список только пациентов, которые не имеют других процедур на этой неделе.

В настоящее время я делаю это программно в режиме просмотра в коде VBA .. но мне было интересно, если бы это был лучший способ в SQL, чтобы перечислять все встречи в каждый день недели с помощью ApptComment, чтобы узнать, они могут быть подвижными.

Таблица по назначениям:

ApptID - autoicrement 
ApptDate 
ApptTime 
PatientID - unique to patient 
LocationID - ("CHEMO","REVIEW") 
ApptCancelledYN - Boolean 
ApptComment - containts the treatment details 

ответ

0

2) Список только пациенты, которые не имеют других видов лечения в той недели

Допустим, пользовательский ввод некоторых DATE (26 декабря 2014 -> 4-ая неделя)

declare @given_week int 
declare @given_month int 
declare @given_year int 
set @given_week =(select DATEPART(ww,@GIVEN_DATE) 
set @given_month =(select DATEPART(mm,@GIVEN_DATE) 
set @given_year =(select DATEPART(yy,@GIVEN_DATE) 

--The ниже запрос даст вам список пациентов, которые не имеют другие методы лечения в этой данной неделе

select PatientID, count(PatientID) from 
AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week 
and DATEPART(mm,ApptDate) = @given_month 
and DATEPART(yy,ApptDate) = @given_year 
group by PatientID 
having count(PatientID) =1 

or 

select PatientID,ApptComment, count(PatientID) from 
AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week 
and DATEPART(mm,ApptDate) = @given_month 
and DATEPART(yy,ApptDate) = @given_year 
group by PatientID,ApptComment 
having count(PatientID) =1 

- Включить LocationID в том, где положение, при необходимости

1) Найти всех пациентов, участвующих в лечении (LOCATION = "химио") в определенной недели на каждый день (M/T/W/T/F), которые не имеют назначения для рассмотрения (LOCATION = "CLINIC")

declare @given_week int 
declare @given_month int 
declare @given_year int 
set @given_week =(select DATEPART(ww,@GIVEN_DATE) 
set @given_month =(select DATEPART(mm,@GIVEN_DATE) 
set @given_year =(select DATEPART(yy,@GIVEN_DATE) 

select PatientID from AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week 
and DATEPART(mm,ApptDate) = @given_month 
and DATEPART(yy,ApptDate) = @given_year 
and LocationID = 'CHEMO' and PatientID NOT IN 
(
select DISTINCT PatientID from AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week 
and DATEPART(mm,ApptDate) = @given_month 
and DATEPART(yy,ApptDate) = @given_year 
and LocationID = 'CLINIC' 
and ApptComment like '%review%' 
) 
+0

Спасибо. 2), конечно, делает трюк в первой части, хотя вторая часть не думает, потому что ApptComment может быть разным в разные дни, поэтому группы Pat1 «CHEMO DAY1» и Pat1 «Chemo DAY2» как Count = 1. – dmc2005

+0

Но 1) не работает, потому что (по моей вине я не был ясен), что, если у них есть обзорная встреча в тот день, их нельзя переместить, но если бы они на другой день на этой неделе были бы в порядке. – dmc2005

Смежные вопросы