[1442] | 1 | C0QERTIM ; Time from admission to leaving a hospital location ;
|
---|
| 2 | ;;0.1;C0Q;;;Build 26
|
---|
| 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 |
|
---|