Рассчитать количество пациентов, которых лечат в данный час - PullRequest
0 голосов
/ 30 апреля 2019

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

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

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

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

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

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

  data EDTimesl;
  set  EDDATA;
  if checkin = '1am' and release = '2am' then OneAMToTwoAM = 1;
  if checkin = '1am' and release = '3am' then OneAMToTwoAM = 1;
  if checkin = '1am' and release = '3am' then TwoAMToThreeAM = 1;
  ....
  run; 

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

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

1 Ответ

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

Я нашел код онлайн, который может ответить на вопрос! Пожалуйста, смотрите ниже:

data have (keep=admitdate disdate);
   /* generate some admission and discharge date time variables*/
   year=2015; /* for example all of the admits are in 2015*/
   format admitdate disdate datetime20.;
   do day= 1 to 20;
   do month=1 to 12;
     hour = floor(24*ranuni(4445));
     min  = floor(50*ranuni(1234));
     date = mdy(month,day,2015);
     admitdate=dhms(date,hour,min,0);
     /* random duration of stay*/
     duration = 60 + floor(3000*ranuni(7777));
     disdate = intnx('minute',admitdate,duration);
     output;
     end;
     end;
     run;

data occupancy;
  set have;
  format admitdate disdate datetime20.;
  Do Occupanthour = (dhms(datepart(admitdate),hour(admitdate),0,0)) to 
  dhms(datepart(disdate),hour(disdate),0,0) by 3600;
  HourOfDay = hour(OccupantHour);
  DayOfWeek = Weekday(datepart(OccupantHour));
  output;
  end;
  format OccupantHour datetime20.;
  run;

  Proc freq data=occupancy;
  Tables HourOfDay;
  run;

 proc tabulate data=occupancy;
  class DayOfWeek;
  class HourOfDay;
  tables HourOfDay,
      (DayOfWeek All)*n;
 run;
...