1 | SDAMOWB ;ALB/CAW - Waiting Times Build Arrays; 8-NOV-93
|
---|
2 | ;;5.3;Scheduling;**12**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | STORE(HOW,DIV,CLIN,STOP,DATE,PAT) ;save data in tmp variable
|
---|
5 | ;SDCLIN^SDSTOP^SDDAY^SDDIV^DFN^SDCHKIN^SDCHKOUT^SDWTTIME^SDOTIME^SDTTTIME
|
---|
6 | ; 1 2 3 4 5 6 7 8 9 10
|
---|
7 | ;calc times
|
---|
8 | S SDWTTIME=$$MIN(SDCHKIN,SDT)
|
---|
9 | S SDOTTIME=$$MIN(SDT,SDCHKOUT)
|
---|
10 | S SDTTTIME=$$MIN(SDCHKIN,SDCHKOUT)
|
---|
11 | D SET(HOW,CLIN,STOP,DATE,PAT)
|
---|
12 | I "^1^2^5^"[(U_HOW_U) D
|
---|
13 | .S ^TMP("SDWAIT",$J,DIV,LEVEL1,LEVEL2,LEVEL3)=SDDATA_U_SDWTTIME_U_SDOTTIME_U_SDTTTIME
|
---|
14 | I "^3^4^"[(U_HOW_U) D
|
---|
15 | .S ^TMP("SDWAIT",$J,DIV,LEVEL1,LEVEL2,LEVEL3,LEVEL4)=SDDATA_U_SDWTTIME_U_SDOTTIME_U_SDTTTIME
|
---|
16 | S SDX=$G(^TMP("SDWTTOT",$J,DIV,LEVEL1,"PRIM")) S ^("PRIM")=$$AUGMENT(SDWTTIME,SDOTTIME,SDTTTIME,SDX)
|
---|
17 | S SDX=$G(^TMP("SDWTTOTG",$J,"GRAND")) S ^("GRAND")=$$AUGMENT(SDWTTIME,SDOTTIME,SDTTTIME,SDX)
|
---|
18 | S SDX=$G(^TMP("SDWTTOTD",$J,SDDIV,"DIV")) S ^("DIV")=$$AUGMENT(SDWTTIME,SDOTTIME,SDTTTIME,SDX)
|
---|
19 | Q
|
---|
20 | AUGMENT(WAIT,WAIT1,TOT,NODE) ;increment summary node
|
---|
21 | ;NODE=#appts^cum min fm ci to appt^cum min fm appt to co^cum total min
|
---|
22 | ; 1 2 3 4
|
---|
23 | S $P(NODE,U,1)=$P(NODE,U,1)+1
|
---|
24 | S $P(NODE,U,2)=$P(NODE,U,2)+WAIT
|
---|
25 | S $P(NODE,U,3)=$P(NODE,U,3)+WAIT1
|
---|
26 | S $P(NODE,U,4)=$P(NODE,U,4)+TOT
|
---|
27 | Q NODE
|
---|
28 | MIN(X,X1) ;difference between x & x1 in minutes
|
---|
29 | ; for positive result, x is BEFORE x1
|
---|
30 | ;
|
---|
31 | N Y
|
---|
32 | S Y=$E(X1_"000",9,10)-$E(X_"000",9,10)*60+$E(X1_"00000",11,12)-$E(X_"00000",11,12),X2=X I $P(X,".",1)'=$P(X1,".",1) S X2=X D ^%DTC S Y=X*1440+Y
|
---|
33 | Q $G(Y)
|
---|
34 | REJECT() ;set x conditions for rejection
|
---|
35 | ; returns: 1|reject or 0|meets selection criteria
|
---|
36 | N X
|
---|
37 | I '$G(VAUTD),('$D(VAUTD(SDDIV))) S X=1 G QTRJ
|
---|
38 | S X=1
|
---|
39 | I $G(VAUTC)!($G(VAUTS)) S X=0 G QTRJ
|
---|
40 | I $D(VAUTC(SDCLIN))!($D(VAUTS(SDSTOP))) S X=0 G QTRJ
|
---|
41 | QTRJ Q X
|
---|
42 | EXTERN(SORTV,X) ;returns the external value of sort variables
|
---|
43 | ; SORTV: 1=CLINIC,2=STOP CODE,3=DAY OF WEEK
|
---|
44 | ; X: Internal value
|
---|
45 | N Y
|
---|
46 | ;
|
---|
47 | I SORTV=1 S Y=$P($G(^SC(X,0)),U,1)
|
---|
48 | I SORTV=2 S Y=$P($G(^DIC(40.7,X,0)),U,2)
|
---|
49 | I SORTV=3 S Y=$P($G(^DPT(DFN,0)),U)
|
---|
50 | Q Y
|
---|
51 | ;
|
---|
52 | SET(HOW,CLIN,STOP,DATE,PAT) ; Set how the sort goes
|
---|
53 | ; Input: HOW = which sort was selected
|
---|
54 | ; CLIN = clinic ifn
|
---|
55 | ; STOP = stop code ifn
|
---|
56 | ; DATE = date in fm format
|
---|
57 | ; PAT = patient ifn
|
---|
58 | ; Output: LEVE1-LEVEL4 in external format
|
---|
59 | ;
|
---|
60 | I HOW=1 S LEVEL1=$$EXTERN(1,CLIN),LEVEL2=$$EXTERN(3,PAT),LEVEL3=DATE
|
---|
61 | I HOW=2 S LEVEL1=$$EXTERN(1,CLIN),LEVEL2=DATE,LEVEL3=$$EXTERN(3,PAT)
|
---|
62 | I HOW=3 S LEVEL1=$$EXTERN(2,STOP),LEVEL2=$$EXTERN(1,CLIN),LEVEL3=$$EXTERN(3,PAT),LEVEL4=DATE
|
---|
63 | I HOW=4 S LEVEL1=$$EXTERN(2,STOP),LEVEL2=$$EXTERN(3,PAT),LEVEL3=$$EXTERN(1,CLIN),LEVEL4=DATE
|
---|
64 | I HOW=5 S LEVEL1=$$EXTERN(3,DFN),LEVEL2=DATE,LEVEL3=$$EXTERN(1,CLIN)
|
---|
65 | Q
|
---|