FHPRR2 ; HISC/REL/RVD - Projected Usage (cont). ;1/23/98  16:11
 ;;5.5;DIETETICS;;Jan 28, 2005
 ;RVD - Outpatient meals.
 S T0=0 F P0=0:0 S P0=$O(M(P0)) Q:P0<1  S T0=T0+M(P0)
 S DTP=SDT D DTP^FH S H1=DTP,DTP=EDT D DTP^FH S H1=H1_" to "_DTP
 S X=SDT D DOW^%DTC S DOW=Y+1
P0 S X1=SDT D E1^FHPRC1 G:FHCY<1 P1 G:'$D(^FH(116,FHCY,"DA",FHDA,0)) P1
 S FHX1=^FH(116,FHCY,"DA",FHDA,0)
 I $D(^FH(116.3,SDT,0)) S X=^(0) F LL=2:1:4 I $P(X,"^",LL) S $P(FHX1,"^",LL)=$P(X,"^",LL)
 F K3=1:1:3 S MENU=$P(FHX1,"^",K3+1) D:MENU P2
P1 S X1=SDT,X2=1 D C^%DTC S SDT=X I SDT>EDT G S0
 S DOW=DOW+1 S:DOW=8 DOW=1 G P0
P2 F L1=0:0 S L1=$O(^FH(116.1,MENU,"RE",L1)) Q:L1<1  S M=^(L1,0) D P3
 K M,Y,Z Q
P3 S N1=0,M=+M,X=$G(^FH(114,M,0))
 F CAT=0:0 S CAT=$O(^FH(116.1,MENU,"RE",L1,"R",CAT)) Q:CAT<1  S FHPD=$P($G(^(CAT,0)),"^",2) D
 .F LL=1:1 S FHX2=$P(FHPD," ",LL) Q:FHX2=""  D P4
 .Q
 Q:'N1  S:'$D(^TMP($J,"T",M)) ^TMP($J,"T",M)=0 S ^(M)=^(M)+N1 Q
P4 S X=$P(FHX2,";",1)
 S X1=$G(^TMP($J,"M",DOW_K3,X,"T")),X2=$G(^TMP($J,"M",DOW_K3,X,"C"))
 S Y=$P(FHX2,";",2) I Y="" G P41:$O(^FH(116.1,MENU,"RE",L1,"D",0))="",P6
 D P5 S Y=$P(FHX2,";",3) D:Y'="" P5
P41 S N1=N1+X1+X2 Q
P5 I $E(Y,1)="C" S X2=$J($E(Y,2,99)*X2/100,0,0) Q
 S X1=$J($E(Y,2,99)*X1/100,0,0) Q
P6 F P0=0:0 S P0=$O(^TMP($J,"P",DOW_K3,P0)) Q:P0<1  D P7
 Q
P7 S SRV=$P($G(^FH(119.72,P0,0)),"^",2)
 I $E(SRV,1)="T" S X1=$G(^TMP($J,"P",DOW_K3,P0,X,"T"))
 I $E(SRV,1)="C" S X1=$G(^TMP($J,"P",DOW_K3,P0,X,"C"))
 S Z1=$G(^FH(116.1,MENU,"RE",L1,"D",P0,0))
 S Y=$P(Z1,"^",2) I Y'="" S X1=$J(Y*X1/100,0,0)
 S N1=N1+X1 Q
S0 F K1=0:0 S K1=$O(^TMP($J,"T",K1)) Q:K1<1  D S1
 G:$O(^TMP($J,"T",""))'="" S0
 G LIS
S1 S X0=$G(^FH(114,K1,0)),P1=^TMP($J,"T",K1),MUL=$P(X0,"^",2) K ^TMP($J,"T",K1) Q:'MUL  S MUL=P1/MUL
 F KK=0:0 S KK=$O(^FH(114,K1,"I",KK)) Q:KK<1  S Y=^(KK,0) D S2
 F KK=0:0 S KK=$O(^FH(114,K1,"R",KK)) Q:KK<1  S Y=^(KK,0) D S3
 Q
S2 S X1=+Y,Q=$P(Y,"^",2)*MUL
 S Y0=$G(^FHING(X1,0))
 S S1=$E($P(Y0,"^",1),1,30) Q:S1=""  I V0 S V1=$P(Y0,"^",4) S:V1 V1=$P($G(^FH(113.2,V1,0)),"^",1) S S1=$E(V1_$J("",30),1,30)_S1
 S:'$D(^TMP($J,"S",S1,X1)) ^TMP($J,"S",S1,X1)=0 S ^(X1)=^(X1)+Q Q
S3 S P1=$P(Y,"^",2)*MUL S:'$D(^TMP($J,"T",+Y)) ^TMP($J,"T",+Y)=0 S ^TMP($J,"T",+Y)=^TMP($J,"T",+Y)+P1 Q
LIS D NOW^%DTC S NOW=%,DTP=NOW D DTP^FH S (PG,TOT)=0 D HDR
 S (S1,V1)="" F K=0:0 S S1=$O(^TMP($J,"S",S1)) Q:S1=""  F L1=0:0 S L1=$O(^TMP($J,"S",S1,L1)) Q:L1<1  S X0=^(L1) D L0
 W !!,"Total Cost",?77,$J(TOT,12,2),! Q
L0 D:$Y>(IOSL-7) HDR S Y0=^FHING(L1,0) G:'V0 L1
 S X1=$P(Y0,"^",4) S:X1 X1=$P($G(^FH(113.2,X1,0)),"^",1) I X1'=V1 S V1=X1 W !!?5,"Vendor: ",X1,!
L1 S I1=$P(Y0,"^",17),X1=$S('I1:"",1:X0/I1)
 S I1=$P(Y0,"^",8),X2=$S('I1:"",1:X1/I1),X3=$P(Y0,"^",9)*(X2+.99\1) S:'X3 X3="" I X3 S X3=$J(X3,0,2),TOT=TOT+X3,%=$L(X3) I %>6 S X3=$E(X3,1,%-6)_","_$E(X3,%-5,%)
 S X=X0 D COM S X0=X,X=X1 D COM S X1=X,X=X2 D COM S X2=X
 W !,$P(Y0,"^",1),?63,$J(X2,8)," ",$P(Y0,"^",5),?80,$J(X3,9),?93,$J(X1,8)," ",$P(Y0,"^",6),?118,$J(X0,8)," ",$P(Y0,"^",16) Q
COM Q:X=""  S X=X+.99\1,%=$L(X) Q:%<4  S X=$E(X,1,%-3)_","_$E(X,%-2,%) Q
HDR W:'($E(IOST,1,2)'="C-"&'PG) @IOF S PG=PG+1 W !,DTP,?51,"P R O J E C T E D   U S A G E ",?125,"Page ",PG
 W !!,"Avg. Total Census = ",T0,?(131-$L(H1)\2),H1
 W !!,"Ingredient",?64,"Purchase Qty",?84,"Cost",?97,"Issue Qty",?121,"Recipe Qty"
 W ! F K=1:1:131 W "-"
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFHPRR2   3358     printed  Sep 23, 2025@19:30:42                                                                                                                                                                                                      Page 2
FHPRR2    ; HISC/REL/RVD - Projected Usage (cont). ;1/23/98  16:11
 +1       ;;5.5;DIETETICS;;Jan 28, 2005
 +2       ;RVD - Outpatient meals.
 +3        SET T0=0
           FOR P0=0:0
               SET P0=$ORDER(M(P0))
               if P0<1
                   QUIT 
               SET T0=T0+M(P0)
 +4        SET DTP=SDT
           DO DTP^FH
           SET H1=DTP
           SET DTP=EDT
           DO DTP^FH
           SET H1=H1_" to "_DTP
 +5        SET X=SDT
           DO DOW^%DTC
           SET DOW=Y+1
P0         SET X1=SDT
           DO E1^FHPRC1
           if FHCY<1
               GOTO P1
           if '$DATA(^FH(116,FHCY,"DA",FHDA,0))
               GOTO P1
 +1        SET FHX1=^FH(116,FHCY,"DA",FHDA,0)
 +2        IF $DATA(^FH(116.3,SDT,0))
               SET X=^(0)
               FOR LL=2:1:4
                   IF $PIECE(X,"^",LL)
                       SET $PIECE(FHX1,"^",LL)=$PIECE(X,"^",LL)
 +3        FOR K3=1:1:3
               SET MENU=$PIECE(FHX1,"^",K3+1)
               if MENU
                   DO P2
P1         SET X1=SDT
           SET X2=1
           DO C^%DTC
           SET SDT=X
           IF SDT>EDT
               GOTO S0
 +1        SET DOW=DOW+1
           if DOW=8
               SET DOW=1
           GOTO P0
P2         FOR L1=0:0
               SET L1=$ORDER(^FH(116.1,MENU,"RE",L1))
               if L1<1
                   QUIT 
               SET M=^(L1,0)
               DO P3
 +1        KILL M,Y,Z
           QUIT 
P3         SET N1=0
           SET M=+M
           SET X=$GET(^FH(114,M,0))
 +1        FOR CAT=0:0
               SET CAT=$ORDER(^FH(116.1,MENU,"RE",L1,"R",CAT))
               if CAT<1
                   QUIT 
               SET FHPD=$PIECE($GET(^(CAT,0)),"^",2)
               Begin DoDot:1
 +2                FOR LL=1:1
                       SET FHX2=$PIECE(FHPD," ",LL)
                       if FHX2=""
                           QUIT 
                       DO P4
 +3                QUIT 
               End DoDot:1
 +4        if 'N1
               QUIT 
           if '$DATA(^TMP($JOB,"T",M))
               SET ^TMP($JOB,"T",M)=0
           SET ^(M)=^(M)+N1
           QUIT 
P4         SET X=$PIECE(FHX2,";",1)
 +1        SET X1=$GET(^TMP($JOB,"M",DOW_K3,X,"T"))
           SET X2=$GET(^TMP($JOB,"M",DOW_K3,X,"C"))
 +2        SET Y=$PIECE(FHX2,";",2)
           IF Y=""
               if $ORDER(^FH(116.1,MENU,"RE",L1,"D",0))=""
                   GOTO P41
               GOTO P6
 +3        DO P5
           SET Y=$PIECE(FHX2,";",3)
           if Y'=""
               DO P5
P41        SET N1=N1+X1+X2
           QUIT 
P5         IF $EXTRACT(Y,1)="C"
               SET X2=$JUSTIFY($EXTRACT(Y,2,99)*X2/100,0,0)
               QUIT 
 +1        SET X1=$JUSTIFY($EXTRACT(Y,2,99)*X1/100,0,0)
           QUIT 
P6         FOR P0=0:0
               SET P0=$ORDER(^TMP($JOB,"P",DOW_K3,P0))
               if P0<1
                   QUIT 
               DO P7
 +1        QUIT 
P7         SET SRV=$PIECE($GET(^FH(119.72,P0,0)),"^",2)
 +1        IF $EXTRACT(SRV,1)="T"
               SET X1=$GET(^TMP($JOB,"P",DOW_K3,P0,X,"T"))
 +2        IF $EXTRACT(SRV,1)="C"
               SET X1=$GET(^TMP($JOB,"P",DOW_K3,P0,X,"C"))
 +3        SET Z1=$GET(^FH(116.1,MENU,"RE",L1,"D",P0,0))
 +4        SET Y=$PIECE(Z1,"^",2)
           IF Y'=""
               SET X1=$JUSTIFY(Y*X1/100,0,0)
 +5        SET N1=N1+X1
           QUIT 
S0         FOR K1=0:0
               SET K1=$ORDER(^TMP($JOB,"T",K1))
               if K1<1
                   QUIT 
               DO S1
 +1        if $ORDER(^TMP($JOB,"T",""))'=""
               GOTO S0
 +2        GOTO LIS
S1         SET X0=$GET(^FH(114,K1,0))
           SET P1=^TMP($JOB,"T",K1)
           SET MUL=$PIECE(X0,"^",2)
           KILL ^TMP($JOB,"T",K1)
           if 'MUL
               QUIT 
           SET MUL=P1/MUL
 +1        FOR KK=0:0
               SET KK=$ORDER(^FH(114,K1,"I",KK))
               if KK<1
                   QUIT 
               SET Y=^(KK,0)
               DO S2
 +2        FOR KK=0:0
               SET KK=$ORDER(^FH(114,K1,"R",KK))
               if KK<1
                   QUIT 
               SET Y=^(KK,0)
               DO S3
 +3        QUIT 
S2         SET X1=+Y
           SET Q=$PIECE(Y,"^",2)*MUL
 +1        SET Y0=$GET(^FHING(X1,0))
 +2        SET S1=$EXTRACT($PIECE(Y0,"^",1),1,30)
           if S1=""
               QUIT 
           IF V0
               SET V1=$PIECE(Y0,"^",4)
               if V1
                   SET V1=$PIECE($GET(^FH(113.2,V1,0)),"^",1)
               SET S1=$EXTRACT(V1_$JUSTIFY("",30),1,30)_S1
 +3        if '$DATA(^TMP($JOB,"S",S1,X1))
               SET ^TMP($JOB,"S",S1,X1)=0
           SET ^(X1)=^(X1)+Q
           QUIT 
S3         SET P1=$PIECE(Y,"^",2)*MUL
           if '$DATA(^TMP($JOB,"T",+Y))
               SET ^TMP($JOB,"T",+Y)=0
           SET ^TMP($JOB,"T",+Y)=^TMP($JOB,"T",+Y)+P1
           QUIT 
LIS        DO NOW^%DTC
           SET NOW=%
           SET DTP=NOW
           DO DTP^FH
           SET (PG,TOT)=0
           DO HDR
 +1        SET (S1,V1)=""
           FOR K=0:0
               SET S1=$ORDER(^TMP($JOB,"S",S1))
               if S1=""
                   QUIT 
               FOR L1=0:0
                   SET L1=$ORDER(^TMP($JOB,"S",S1,L1))
                   if L1<1
                       QUIT 
                   SET X0=^(L1)
                   DO L0
 +2        WRITE !!,"Total Cost",?77,$JUSTIFY(TOT,12,2),!
           QUIT 
L0         if $Y>(IOSL-7)
               DO HDR
           SET Y0=^FHING(L1,0)
           if 'V0
               GOTO L1
 +1        SET X1=$PIECE(Y0,"^",4)
           if X1
               SET X1=$PIECE($GET(^FH(113.2,X1,0)),"^",1)
           IF X1'=V1
               SET V1=X1
               WRITE !!?5,"Vendor: ",X1,!
L1         SET I1=$PIECE(Y0,"^",17)
           SET X1=$SELECT('I1:"",1:X0/I1)
 +1        SET I1=$PIECE(Y0,"^",8)
           SET X2=$SELECT('I1:"",1:X1/I1)
           SET X3=$PIECE(Y0,"^",9)*(X2+.99\1)
           if 'X3
               SET X3=""
           IF X3
               SET X3=$JUSTIFY(X3,0,2)
               SET TOT=TOT+X3
               SET %=$LENGTH(X3)
               IF %>6
                   SET X3=$EXTRACT(X3,1,%-6)_","_$EXTRACT(X3,%-5,%)
 +2        SET X=X0
           DO COM
           SET X0=X
           SET X=X1
           DO COM
           SET X1=X
           SET X=X2
           DO COM
           SET X2=X
 +3        WRITE !,$PIECE(Y0,"^",1),?63,$JUSTIFY(X2,8)," ",$PIECE(Y0,"^",5),?80,$JUSTIFY(X3,9),?93,$JUSTIFY(X1,8)," ",$PIECE(Y0,"^",6),?118,$JUSTIFY(X0,8)," ",$PIECE(Y0,"^",16)
           QUIT 
COM        if X=""
               QUIT 
           SET X=X+.99\1
           SET %=$LENGTH(X)
           if %<4
               QUIT 
           SET X=$EXTRACT(X,1,%-3)_","_$EXTRACT(X,%-2,%)
           QUIT 
HDR        if '($EXTRACT(IOST,1,2)'="C-"&'PG)
               WRITE @IOF
           SET PG=PG+1
           WRITE !,DTP,?51,"P R O J E C T E D   U S A G E ",?125,"Page ",PG
 +1        WRITE !!,"Avg. Total Census = ",T0,?(131-$LENGTH(H1)\2),H1
 +2        WRITE !!,"Ingredient",?64,"Purchase Qty",?84,"Cost",?97,"Issue Qty",?121,"Recipe Qty"
 +3        WRITE !
           FOR K=1:1:131
               WRITE "-"
 +4        QUIT