1 | FHPRF1 ; HISC/REL/RVD - Calculate Total Forecast ;1/23/98 16:10
|
---|
2 | ;;5.5;DIETETICS;**5**;Jan 28, 2005;Build 53
|
---|
3 | ;
|
---|
4 | ;patch #5 - added screen for cancelled quest meals.
|
---|
5 | ;
|
---|
6 | S %DT="X",X="T" D ^%DT S DT=+Y
|
---|
7 | D DIV^FHOMUTL G:'$D(FHSITE) KIL
|
---|
8 | D1 R !!,"Forecast Date: ",X:DTIME G:'$T!("^"[X) KIL S %DT="EX" D ^%DT G KIL:"^"[X,D1:Y<1 S D1=+Y
|
---|
9 | S FHP=$O(^FH(119.71,0)) I FHP'<1,$O(^FH(119.71,FHP))<1 G R1
|
---|
10 | R0 R !!,"Select PRODUCTION FACILITY: ",X:DTIME G:'$T!("^"[X) KIL
|
---|
11 | K DIC S DIC="^FH(119.71,",DIC(0)="EMQ" D ^DIC G:Y<1 R0 S FHP=+Y
|
---|
12 | R1 W ! K IOP,%ZIS S %ZIS("A")="Select LIST Printer: ",%ZIS="MQ" D ^%ZIS K %ZIS,IOP G:POP KIL
|
---|
13 | I $D(IO("Q")) S FHPGM="Q1^FHPRF1",FHLST="D1^FHP^FHSITE^FHSITENM" D EN2^FH G KIL
|
---|
14 | U IO D Q1 D ^%ZISC K %ZIS,IOP G KIL
|
---|
15 | Q1 ; Process Census Forecast
|
---|
16 | D Q2,Q3
|
---|
17 | ;get outpatient data
|
---|
18 | S FHD1SAV=D1
|
---|
19 | S:'$G(FHSITE) FHSITE=""
|
---|
20 | S:'$D(FHSITENM) FHSITENM="CONSOLIDATED"
|
---|
21 | D GETSM^FHOMRBLD(D1,FHSITE,"","")
|
---|
22 | D GETGM^FHOMRBL1(D1,FHSITE,"","")
|
---|
23 | S D1=D1-.000001
|
---|
24 | D GETRM^FHOMRBLD(D1,FHSITE,"","")
|
---|
25 | D PROSG ;process recurring, special and guest meal from "OP" node
|
---|
26 | S D1=FHD1SAV
|
---|
27 | G ^FHPRF1A
|
---|
28 | Q2 ; Calculate Service Point census forecast
|
---|
29 | S X="T",%DT="X" D ^%DT S DT=+Y
|
---|
30 | K ^TMP($J) S X=D1 D DOW^%DTC S DOW=Y+1 D BLD,DAT
|
---|
31 | F W1=0:0 S W1=$O(^TMP($J,"W",W1)) Q:W1<1 D WRD S ^TMP($J,"W",W1)=S1
|
---|
32 | K D,DC S X1=DT,X2=-1 D C^%DTC S D2=X
|
---|
33 | F P0=0:0 S P0=$O(^TMP($J,"S",P0)) Q:P0<1 D ADD S ^TMP($J,P0)=S1
|
---|
34 | Q
|
---|
35 | Q3 F P0=0:0 S P0=$O(^TMP($J,P0)) Q:P0<1 S S1=^(P0) D PER S ^TMP($J,P0)=S0
|
---|
36 | F K=0:0 S K=$O(D(K)) Q:K<1 S ^TMP($J,0,K)=D(K)
|
---|
37 | K D,^TMP($J,"W"),^TMP($J,"S") Q
|
---|
38 | WRD S (A,B,CT,S1,S2,S3,S4)=0 F K=1:1:9 S Y=$P($G(^DG(41.9,W1,"C",D(K),0)),"^",2) I Y S CT=CT+1,S0=10-K,S1=S1+S0,S2=S0*S0+S2,S3=S3+Y,S4=S0*Y+S4
|
---|
39 | G:'CT W1 I CT=1 S S1=S3 G W1
|
---|
40 | S S0=S1*S1/CT-S2,A=S1*S3/CT-S4/S0,B=S3/CT-(A*S1/CT)
|
---|
41 | S A=$J(A,0,3),B=$J(B,0,2),S1=10*A+B
|
---|
42 | W1 S (N1,C2,C3)=0 F K=1:1:7 S Y0=$P($G(^DG(41.9,W1,"C",DC(K),0)),"^",2) I Y0 S N1=N1+1,C2=Y0-S1*(4-N1)+C2,C3=4-N1+C3 Q:N1=3
|
---|
43 | I N1 S C2=C2/C3,S1=S1+C2
|
---|
44 | S S1=$J(S1,0,0) Q
|
---|
45 | ADD S (S1,CT)=0 F W1=0:0 S W1=$O(^TMP($J,"S",P0,W1)) Q:W1<1 S Z=^(W1),T0=$G(^TMP($J,"W",W1)),CT=CT+T0,S1=Z*T0/100+S1
|
---|
46 | S S1=$J(S1,0,0)
|
---|
47 | I '$D(^FH(119.72,P0,"C",D1,0)) S ^(0)=D1 I '$D(^FH(119.72,P0,"C",0)) S ^(0)="^119.722DA^^"
|
---|
48 | I D1'<DT S C2=$P(^FH(119.72,P0,"C",D1,0),"^",3),$P(^(0),"^",2,5)=CT_"^"_C2_"^"_S1_"^"_DT
|
---|
49 | Q:'$D(^FH(119.72,P0,"C",DT,0)) S C2=0
|
---|
50 | F W1=0:0 S W1=$O(^TMP($J,"S",P0,W1)) Q:W1<1 S C2=C2+$P($G(^DG(41.9,W1,"C",D2,0)),"^",2)
|
---|
51 | S:C2 $P(^FH(119.72,P0,"C",DT,0),"^",3)=C2 Q
|
---|
52 | PER S S0=0 F K=0:0 S K=$O(^FH(119.72,P0,"A",K)) Q:K<1 S Z=$P($G(^(K,0)),"^",DOW+1),Z=$J(Z*S1/100,0,0) I Z S ^TMP($J,P0,K)=Z,S0=S0+Z,D(K)=$G(D(K))+Z
|
---|
53 | Q
|
---|
54 | DAT ; Build list of dates
|
---|
55 | K D,DC S X1=D1,X2=-1 D C^%DTC S D2=X
|
---|
56 | F K=1:1:9 S X1=D2,X2=-7 D C^%DTC S D(K)=X,D2=X
|
---|
57 | S D2=D1 F K=1:1:7 S X1=D2,X2=-1 D C^%DTC S DC(K)=X,D2=X
|
---|
58 | Q
|
---|
59 | BLD ; Build list of MAS wards and %'s for each Service Point
|
---|
60 | K ^TMP($J,"S"),^TMP($J,"W")
|
---|
61 | F P0=0:0 S P0=$O(^FH(119.72,P0)) Q:P0<1 S X=$G(^(P0,0)) I $P(X,"^",3)=FHP,$G(^FH(119.72,P0,"I"))'="Y" S ^TMP($J,"S",P0)=""
|
---|
62 | ;F K1=0:0 S K1=$O(^FH(119.6,K1)) Q:K1<1 S X=$G(^(K1,0)) D B1
|
---|
63 | F K1=0:0 S K1=$O(^FH(119.6,K1)) Q:K1<1 S X=$G(^(K1,0)) D B1:($P(X,U,8)=FHSITE!(FHSITE=0))
|
---|
64 | Q
|
---|
65 | B1 S Z=$P(X,"^",5) I Z,$D(^TMP($J,"S",Z)) S Z1=$P(X,"^",17) S:$P(X,"^",7) Z1=Z1+$P(X,"^",19) S:'Z1 Z1=100 D B2
|
---|
66 | S Z=$P(X,"^",6) I Z,$D(^TMP($J,"S",Z)) S Z1=$P(X,"^",18) S:Z1="" Z1=100 D B2
|
---|
67 | Q
|
---|
68 | B2 F L2=0:0 S L2=$O(^FH(119.6,K1,"W",L2)) Q:L2<1 S ZW=+$G(^(L2,0)) I ZW S ^TMP($J,"W",ZW)="",^TMP($J,"S",Z,ZW)=Z1
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | PROSG ;process outpatient data from ^tmp($j global
|
---|
72 | S FHPLNM=""
|
---|
73 | S:$G(FHSITE) FHPLNM=$P($G(^FH(119.73,FHSITE,0)),U,1)
|
---|
74 | RECUR ;recurring meals
|
---|
75 | S FHDT=D1+.999999
|
---|
76 | S FHTMPS="^TMP($J,""OP"",""R"")"
|
---|
77 | S FHN="" F S FHN=$O(@FHTMPS@(FHN)) Q:FHN="" S FHI="" F S FHI=$O(@FHTMPS@(FHN,FHI)) Q:FHI="" S FHJ="" F S FHJ=$O(@FHTMPS@(FHN,FHI,FHJ)) Q:FHJ="" D
|
---|
78 | .I (FHPLNM'=""),(FHN'=FHPLNM) Q
|
---|
79 | .F FHK=0:0 S FHK=$O(@FHTMPS@(FHN,FHI,FHJ,FHK)) Q:(FHK'>0)!(FHK>FHDT) D
|
---|
80 | ..S (FHPDIET,FHLOC,FHSER,FHDIET)="***"
|
---|
81 | ..S FHIJKDAT=@FHTMPS@(FHN,FHI,FHJ,FHK)
|
---|
82 | ..Q:$P(FHIJKDAT,U,19)="C" ;quit if status is cancelled.
|
---|
83 | ..S FHDIET=$P(FHIJKDAT,U,3),FHDIET=$O(^FH(111,"B",FHDIET,0))
|
---|
84 | ..I $G(FHDIET),$D(^FH(111,FHDIET,0)) S FHPDIET=$P(^FH(111,FHDIET,0),U,5)
|
---|
85 | ..S:$D(^FH(119.6,"B",FHI)) FHLOC=$O(^FH(119.6,"B",FHI,0))
|
---|
86 | ..S:$G(FHLOC) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,5)
|
---|
87 | ..S:'$G(FHSER) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,6)
|
---|
88 | ..S:'$G(FHSER) FHSER=$O(^FH(119.72,0))
|
---|
89 | ..I $D(^FH(119.72,FHSER,0)),$P(^FH(119.72,FHSER,0),U,3)'=FHP Q
|
---|
90 | ..S:$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=^TMP($J,FHSER)+1
|
---|
91 | ..S:'$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=1
|
---|
92 | ..I $D(^TMP($J,FHSER,FHPDIET)) D
|
---|
93 | ...S ^TMP($J,FHSER,FHPDIET)=^TMP($J,FHSER,FHPDIET)+1
|
---|
94 | ..I '$D(^TMP($J,FHSER,FHPDIET)) D
|
---|
95 | ...S ^TMP($J,FHSER,FHPDIET)=1
|
---|
96 | ..I $D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=^TMP($J,0,FHPDIET)+1
|
---|
97 | ..I '$D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=1
|
---|
98 | ;
|
---|
99 | SPEC ;special meals
|
---|
100 | S FHTMPS="^TMP($J,""OP"",""S"")"
|
---|
101 | S FHN="" F S FHN=$O(@FHTMPS@(FHN)) Q:FHN="" S FHI="" F S FHI=$O(@FHTMPS@(FHN,FHI)) Q:FHI="" S FHJ="" F S FHJ=$O(@FHTMPS@(FHN,FHI,FHJ)) Q:FHJ="" D
|
---|
102 | .I (FHPLNM'=""),(FHN'=FHPLNM) Q
|
---|
103 | .F FHK=0:0 S FHK=$O(@FHTMPS@(FHN,FHI,FHJ,FHK)) Q:(FHK'>0)!(FHK>FHDT) D
|
---|
104 | ..S (FHPDIET,FHLOC,FHSER,FHDIET)="***"
|
---|
105 | ..S FHIJKDAT=@FHTMPS@(FHN,FHI,FHJ,FHK)
|
---|
106 | ..S FHDIET=$P(FHIJKDAT,U,4),FHDIET=$O(^FH(111,"B",FHDIET,0))
|
---|
107 | ..S:$D(^FH(111,FHDIET,0)) FHPDIET=$P(^FH(111,FHDIET,0),U,5)
|
---|
108 | ..S:$D(^FH(119.6,"B",FHI)) FHLOC=$O(^FH(119.6,"B",FHI,0))
|
---|
109 | ..S:$G(FHLOC) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,5)
|
---|
110 | ..S:'$G(FHSER) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,6)
|
---|
111 | ..S:'$G(FHSER) FHSER=$O(^FH(119.72,0))
|
---|
112 | ..I $D(^FH(119.72,FHSER,0)),$P(^FH(119.72,FHSER,0),U,3)'=FHP Q
|
---|
113 | ..S:$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=^TMP($J,FHSER)+1
|
---|
114 | ..S:'$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=1
|
---|
115 | ..I $D(^TMP($J,FHSER,FHPDIET)) D
|
---|
116 | ...S ^TMP($J,FHSER,FHPDIET)=^TMP($J,FHSER,FHPDIET)+1
|
---|
117 | ..I '$D(^TMP($J,FHSER,FHPDIET)) D
|
---|
118 | ...S ^TMP($J,FHSER,FHPDIET)=1
|
---|
119 | ..I $D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=^TMP($J,0,FHPDIET)+1
|
---|
120 | ..I '$D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=1
|
---|
121 | ;
|
---|
122 | GUEST ;guest meals
|
---|
123 | S FHTMPS="^TMP($J,""OP"",""G"")"
|
---|
124 | S FHN="" F S FHN=$O(@FHTMPS@(FHN)) Q:FHN="" S FHI="" F S FHI=$O(@FHTMPS@(FHN,FHI)) Q:FHI="" S FHJ="" F S FHJ=$O(@FHTMPS@(FHN,FHI,FHJ)) Q:FHJ="" D
|
---|
125 | .I (FHPLNM'=""),(FHN'=FHPLNM) Q
|
---|
126 | .F FHK=0:0 S FHK=$O(@FHTMPS@(FHN,FHI,FHJ,FHK)) Q:(FHK'>0)!(FHK>FHDT) D
|
---|
127 | ..S (FHPDIET,FHLOC,FHSER,FHDIET)="***"
|
---|
128 | ..S FHIJKDAT=@FHTMPS@(FHN,FHI,FHJ,FHK)
|
---|
129 | ..Q:$P(FHIJKDAT,U,7)="C"
|
---|
130 | ..S FHDIET=$P($G(^FH(119.9,1,0)),U,2) ;default diet from 119.9
|
---|
131 | ..S FHDIETN=$P(FHIJKDAT,U,6) ;diet from guest meal
|
---|
132 | ..S:$D(^FH(119.6,"B",FHI)) FHLOC=$O(^FH(119.6,"B",FHI,0))
|
---|
133 | ..S:$G(FHLOC) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,5)
|
---|
134 | ..S:'$G(FHSER) FHSER=$P($G(^FH(119.6,FHLOC,0)),U,6)
|
---|
135 | ..S:'$G(FHSER) FHSER=$O(^FH(119.72,0))
|
---|
136 | ..I $D(^FH(119.72,FHSER,0)),$P(^FH(119.72,FHSER,0),U,3)'=FHP Q
|
---|
137 | ..S:$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=^TMP($J,FHSER)+1
|
---|
138 | ..S:'$D(^TMP($J,FHSER)) ^TMP($J,FHSER)=1
|
---|
139 | ..I $G(FHDIETN),($D(^FH(111,FHDIETN,0))) D
|
---|
140 | ...S FHPDIET=$P(^FH(111,FHDIETN,0),U,5)
|
---|
141 | ..I $D(^TMP($J,FHSER,FHPDIET)) D
|
---|
142 | ...S ^TMP($J,FHSER,FHPDIET)=^TMP($J,FHSER,FHPDIET)+1
|
---|
143 | ..I '$D(^TMP($J,FHSER,FHPDIET)) D
|
---|
144 | ...S ^TMP($J,FHSER,FHPDIET)=1
|
---|
145 | ..I $D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=^TMP($J,0,FHPDIET)+1
|
---|
146 | ..I '$D(^TMP($J,0,FHPDIET)) S ^TMP($J,0,FHPDIET)=1
|
---|
147 | Q
|
---|
148 | ;
|
---|
149 | KIL K ^TMP($J) G KILL^XUSCLEAN
|
---|