Расчет количества пациентов в ED по часам - PullRequest
0 голосов
/ 30 апреля 2019

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

У меня есть две переменные времени: «Время регистрации» и «Время выпуска».Эти переменные даты / времени, очевидно, являются произвольными, и переменная «время выпуска» появится после «переменной времени проверки».

Пример данных

 Patient_ID    'Check In Time'                 'Release Time'
 01           2015-08-01 02:49:00         2015-08-01 08:29:00
 02           2015-08-02 01:30:00         2015-08-02 14:29:00
 03           2015-08-02 21:30:00         2015-09-02 01:20:00

Я хотел бы получить вывод дляданный день выглядит примерно так:

Hour        Midnight   1am   2am   3am    4am.....
# of Pts      34       56     89    23     29

Так, например, в 1:00 в настоящее время в ED находились 56 пациентов - при рассмотрении как времени регистрации, так и времени освобождения.

Моя первоначальная мысль:1) округлить две переменные 2) написать код код, который выглядит примерно так ...

  select Pt_fin
  case when  checkin like '1am' and release like '2am' then '1' else '0' 
  end OneAMToTwoAM,
  case when  checkin like '1am' and release like '2am' then '1' else '0' 
  end OneAMToTwoAM,
  case when  checkin like '1am' and release like '2am' then '1' else '0' 
  end TowAMToThreeAM
  from ED

....

Это, однако, дает мне паузу, потому чтоЯ чувствую, что есть более эффективный метод!

Заранее спасибо!

1 Ответ

0 голосов
/ 30 апреля 2019

Это может решить ваш запрос, но имена столбцов должны быть без пробелов, попробуйте изменить его!

select 
Patient_ID
,count(case when DATEPART(hh, 'Check In Time') >= 0 and DATEPART(hh,'Release Time')         <= 1 then 1 else 0 end) Midnight   
,count(case when DATEPART(hh, 'Check In Time') >= 1 and DATEPART(hh,'Release Time')     <= 2 then 1 else 0 end) 1AM   
,count(case when DATEPART(hh, 'Check In Time') >= 2 and DATEPART(hh,'Release Time')     <= 3 then 1 else 0 end) 2AM   
,count(case when DATEPART(hh, 'Check In Time') >= 3 and DATEPART(hh,'Release Time')     <= 4 then 1 else 0 end) 3AM   
from ED
group by Patient_ID

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...