| 1 | C0QERTIM        ; Time from admission to leaving a hospital location ; | 
|---|
| 2 | ;;0.1;C0Q;;;Build 19 | 
|---|
| 3 | EN      ;Get Location | 
|---|
| 4 | S DIC=42,DIC(0)="AEMQ" D ^DIC I Y<1 G EXIT | 
|---|
| 5 | S LOCATION=+Y | 
|---|
| 6 | ;Start date | 
|---|
| 7 | S %DT="AE",%DT("A")="Start DATE: " D ^%DT G:Y=-1 EXIT S START=Y | 
|---|
| 8 | ;End date | 
|---|
| 9 | S %DT="AE",%DT("A")="Stop DATE: " D ^%DT G:Y=-1 EXIT S STOP=Y | 
|---|
| 10 | ;select device: | 
|---|
| 11 | S %ZIS="Q" D ^%ZIS G EXIT:POP | 
|---|
| 12 | I $D(IO("Q")) D  G EXIT | 
|---|
| 13 | . S ZTRTN="DQ^C0QERTIM",ZTDESC="Time from admission to leaving a hospital location" | 
|---|
| 14 | . S ZTSAVE("LOCATION")="",ZTSAVE("START")="",ZTSAVE("STOP")="" | 
|---|
| 15 | . D ^%ZTLOAD D HOME^%ZIS K IO("Q") | 
|---|
| 16 | . Q | 
|---|
| 17 | DQ      ; Get down to business | 
|---|
| 18 | ;sort on admit date/time in file 45, screen on LOSING WARD in sub-file 535. | 
|---|
| 19 | ;^DGPT("AF",date/time,DA) | 
|---|
| 20 | S PATCOUNT=0,ADMITIME=START | 
|---|
| 21 | F  S ADMITIME=$O(^DGPT("AF",ADMITIME)) Q:ADMITIME'>0  D | 
|---|
| 22 | . Q:ADMITIME>STOP | 
|---|
| 23 | . ;FMIN from ADMISSION DATE piece 2 | 
|---|
| 24 | . S X=ADMITIME D H^%DTC S FMINDAY=%H,FMINSEC=%T | 
|---|
| 25 | . S D0="" F  S D0=$O(^DGPT("AF",ADMITIME,D0)) Q:D0'>0  D | 
|---|
| 26 | . . S D1=0 F  S D1=$O(^DGPT(D0,535,D1)) Q:D1'>0  D | 
|---|
| 27 | . . . ;Losing ward in piece 6 of ^DGPT(D0,535,D1,0) | 
|---|
| 28 | . . . Q:$P($G(^DGPT(D0,535,D1,0)),U,6)'=LOCATION | 
|---|
| 29 | . . . ;FMOUT from MOVEMENT DATE on leaving in piece 10 | 
|---|
| 30 | . . . S X=$P($G(^DGPT(D0,535,D1,0)),U,10) D H^%DTC S FMOUTDAY=%H,FMOUTSEC=%T | 
|---|
| 31 | . . . I FMINDAY=FMOUTDAY S MINUTES=$P((FMOUTSEC-FMINSEC)/60,".") | 
|---|
| 32 | . . . I FMINDAY'=FMOUTDAY D | 
|---|
| 33 | . . . . S DIFFDAY=FMOUTDAY-FMINDAY | 
|---|
| 34 | . . . . S MINUTES=1440*(DIFFDAY-1)+$P((FMOUTSEC+86400-FMINSEC)/60,".") | 
|---|
| 35 | . . . . Q | 
|---|
| 36 | . . . S PATCOUNT=PATCOUNT+1 | 
|---|
| 37 | . . . S ^TMP($J,"PATIENTS",$P(^DPT(+^DGPT(D0,0),0),U))=MINUTES | 
|---|
| 38 | . . . S ^TMP($J,"MINUTES",MINUTES)=1+$G(^TMP($J,"MINUTES",MINUTES)) | 
|---|
| 39 | . . . Q | 
|---|
| 40 | . . Q | 
|---|
| 41 | . Q | 
|---|
| 42 | U IO W @IOF | 
|---|
| 43 | ;list median time from Admission to leaving hospital LOCATION | 
|---|
| 44 | S MID=$P(PATCOUNT/2,"."),SUM=0 | 
|---|
| 45 | S MEDIAN=0 F  S MEDIAN=$O(^TMP($J,"MINUTES",MEDIAN)) Q:MEDIAN'>0  D | 
|---|
| 46 | . S SUM=SUM+^TMP($J,"MINUTES",MEDIAN) Q:SUM>MID | 
|---|
| 47 | . Q | 
|---|
| 48 | W "The median time spent in ",$P(^DIC(42,LOCATION,0),U)," is ",MEDIAN," minutes.",! | 
|---|
| 49 | W !,"Patient",?40,"Minutes in ",$P(^DIC(42,LOCATION,0),U) | 
|---|
| 50 | ;list patient and time from admission to leaving the location | 
|---|
| 51 | S PATIENT="" F  S PATIENT=$O(^TMP($J,"PATIENTS",PATIENT)) Q:PATIENT=""  D | 
|---|
| 52 | . W !,PATIENT,?40," ",^TMP($J,"PATIENTS",PATIENT) | 
|---|
| 53 | EXIT    ; DO CLEANUP | 
|---|
| 54 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 55 | K DIC,START,STOP,LOCATION,PATCOUNT,ADMITIME,FMINDAY,FMINSEC,FMOUTDAY,FMOUTSEC | 
|---|
| 56 | K POP,D0,D1,DIFFDAY,MINUTES,MID,MEDIAN,PATIENT,^TMP($J) | 
|---|
| 57 | Q | 
|---|
| 58 |  | 
|---|