- FHPRC1 ; HISC/REL/NCA - Menu Cycle Utilities ;3/28/95 08:16
- ;;5.5;DIETETICS;;Jan 28, 2005
- EN1 ; Find current cycle & day
- S %DT="X",X="T" D ^%DT S X1=+Y K %DT
- E1 ; Find based upon X1 date
- S FHCY=-1 F K=0:0 S K=$O(^FH(116,"AB",K)) Q:K<1!(K>X1) S FHCY=$O(^(K,0)),X2=K
- Q:FHCY<1 S Y=^FH(116,FHCY,0),K1=$P(Y,"^",2) D ^%DTC K %T,%Y
- S FHDA=X+1#K1 S:'FHDA FHDA=K1 Q
- EN2 ; Check validity of Production Code string in Menu
- D TR^FH I $E(X,$L(X))=" " S X=$E(X,1,$L(X)-1)
- S (X9,XX)="" I $E(X,1,3)="ALL" D V3 G KIL
- F X4=1:1 Q:$P(X," ",X4,99)="" S X6=0,X1=$P(X," ",X4) D V1 I 'X6 S:XX'="" XX=XX_" " S XX=XX_X1
- KIL D SRT S X=XX K:X="" X K X1,X2,X3,X4,X5,X6,X8,X9,XX Q
- V1 I X1="" S X6=1 Q
- S X2=$P(X1,";",1) S:X2="" X2=";" I '$D(^FH(116.2,"C",X2)) W *7,!?5,X2," not a valid Production Diet code" S X6=1
- I X9[X2 W *7,!?5,X2," code used more than once" S X6=1
- S X9=X9_" "_X2,X8="*",X5=2,X2=$P(X1,";",X5) I X2'="" D V2 S X5=3,X2=$P(X1,";",X5) I X2'="" D V2 S X5=4
- Q:$P(X1,";",X5,99)="" W *7,!?5,"Extra specifications in ",X1 S X6=1 Q
- V2 S X3=$E(X2,1) I X3=""!("CT"'[X3) W *7,!?5,"Illegal Tray/Cafe specification in ",X1 S X6=1
- I X8=X3 W *7,!?5,X3," Tray/Cafe used more than once" S X6=1
- S X8=X3,X3=$E(X2,2,99)
- I +X3'=X3!(X3>999)!(X3<0)!(X3?.E1"."2N.N) W *7,!?5,"Illegal percentage in ",X1 S X6=1
- Q
- V3 I $E(X,4)="+" G ALL
- I $E(X,5)="" S XX="" W !?5,"No + after ALL" Q
- I $E(X,5)="+" G ALL
- W !?5,"Invalid ALL statement" S XX="" Q
- ALL S (FHPD,XX)=""
- F S FHPD=$O(^FH(116.2,"C",FHPD)) Q:FHPD="" F LP=0:0 S LP=$O(^FH(116.2,"C",FHPD,LP)) Q:LP<1 I '$D(^FH(116.2,LP,"I")) S:XX'="" XX=XX_" " S XX=XX_FHPD
- K LP,FHPD
- Q
- SRT ; Sort and store Production Diet Code in print order
- K SR F LP=1:1 S CODE=$P(XX," ",LP) Q:CODE="" S PD=$P(CODE,";",1) I PD'="" S Z=0,Z=$O(^FH(116.2,"C",PD,Z)) I Z D
- .S Z1=$P($G(^FH(116.2,+Z,0)),"^",6),Z1=$S(Z1<1:99,Z1<10:"0"_Z1,1:Z1)
- .S:'$D(SR(Z1_"~"_PD)) SR(Z1_"~"_PD)=CODE Q
- S (PD,ZZ)="" F S ZZ=$O(SR(ZZ)) Q:ZZ="" S Z=$G(SR(ZZ)) I Z'="" Q:$L(PD_" "_Z)>200 S:PD'="" PD=PD_" " S PD=PD_Z
- S XX=$S(PD'="":PD,1:"") K CODE,LP,PD,SR,Z,Z1,ZZ
- Q
- EN3 ; Help Prompt for Production String
- W !!,"List Production Diet Codes separated by a single space"
- W !!,"Example: LS;C25;T30 RG ME;T20.1 CR;C50"
- W !," -- Production Diet Code"
- W !," - T = Tray or C = Cafeteria"
- W !," -- % of T or C census receiving recipe (max. 1 dec. place)"
- W !!,"Production Diets listed without a specification (e.g., RG)"
- W !,"are assumed to be 100% of census.",!
- W !,"ALL + will add all production diet codes.",! Q
- FHPRC1 ; HISC/REL/NCA - Menu Cycle Utilities ;3/28/95 08:16
- +1 ;;5.5;DIETETICS;;Jan 28, 2005
- EN1 ; Find current cycle & day
- +1 SET %DT="X"
- SET X="T"
- DO ^%DT
- SET X1=+Y
- KILL %DT
- E1 ; Find based upon X1 date
- +1 SET FHCY=-1
- FOR K=0:0
- SET K=$ORDER(^FH(116,"AB",K))
- IF K<1!(K>X1)
- QUIT
- SET FHCY=$ORDER(^(K,0))
- SET X2=K
- +2 IF FHCY<1
- QUIT
- SET Y=^FH(116,FHCY,0)
- SET K1=$PIECE(Y,"^",2)
- DO ^%DTC
- KILL %T,%Y
- +3 SET FHDA=X+1#K1
- IF 'FHDA
- SET FHDA=K1
- QUIT
- EN2 ; Check validity of Production Code string in Menu
- +1 DO TR^FH
- IF $EXTRACT(X,$LENGTH(X))=" "
- SET X=$EXTRACT(X,1,$LENGTH(X)-1)
- +2 SET (X9,XX)=""
- IF $EXTRACT(X,1,3)="ALL"
- DO V3
- GOTO KIL
- +3 FOR X4=1:1
- IF $PIECE(X," ",X4,99)=""
- QUIT
- SET X6=0
- SET X1=$PIECE(X," ",X4)
- DO V1
- IF 'X6
- IF XX'=""
- SET XX=XX_" "
- SET XX=XX_X1
- KIL DO SRT
- SET X=XX
- IF X=""
- KILL X
- KILL X1,X2,X3,X4,X5,X6,X8,X9,XX
- QUIT
- V1 IF X1=""
- SET X6=1
- QUIT
- +1 SET X2=$PIECE(X1,";",1)
- IF X2=""
- SET X2=";"
- IF '$DATA(^FH(116.2,"C",X2))
- WRITE *7,!?5,X2," not a valid Production Diet code"
- SET X6=1
- +2 IF X9[X2
- WRITE *7,!?5,X2," code used more than once"
- SET X6=1
- +3 SET X9=X9_" "_X2
- SET X8="*"
- SET X5=2
- SET X2=$PIECE(X1,";",X5)
- IF X2'=""
- DO V2
- SET X5=3
- SET X2=$PIECE(X1,";",X5)
- IF X2'=""
- DO V2
- SET X5=4
- +4 IF $PIECE(X1,";",X5,99)=""
- QUIT
- WRITE *7,!?5,"Extra specifications in ",X1
- SET X6=1
- QUIT
- V2 SET X3=$EXTRACT(X2,1)
- IF X3=""!("CT"'[X3)
- WRITE *7,!?5,"Illegal Tray/Cafe specification in ",X1
- SET X6=1
- +1 IF X8=X3
- WRITE *7,!?5,X3," Tray/Cafe used more than once"
- SET X6=1
- +2 SET X8=X3
- SET X3=$EXTRACT(X2,2,99)
- +3 IF +X3'=X3!(X3>999)!(X3<0)!(X3?.E1"."2N.N)
- WRITE *7,!?5,"Illegal percentage in ",X1
- SET X6=1
- +4 QUIT
- V3 IF $EXTRACT(X,4)="+"
- GOTO ALL
- +1 IF $EXTRACT(X,5)=""
- SET XX=""
- WRITE !?5,"No + after ALL"
- QUIT
- +2 IF $EXTRACT(X,5)="+"
- GOTO ALL
- +3 WRITE !?5,"Invalid ALL statement"
- SET XX=""
- QUIT
- ALL SET (FHPD,XX)=""
- +1 FOR
- SET FHPD=$ORDER(^FH(116.2,"C",FHPD))
- IF FHPD=""
- QUIT
- FOR LP=0:0
- SET LP=$ORDER(^FH(116.2,"C",FHPD,LP))
- IF LP<1
- QUIT
- IF '$DATA(^FH(116.2,LP,"I"))
- IF XX'=""
- SET XX=XX_" "
- SET XX=XX_FHPD
- +2 KILL LP,FHPD
- +3 QUIT
- SRT ; Sort and store Production Diet Code in print order
- +1 KILL SR
- FOR LP=1:1
- SET CODE=$PIECE(XX," ",LP)
- IF CODE=""
- QUIT
- SET PD=$PIECE(CODE,";",1)
- IF PD'=""
- SET Z=0
- SET Z=$ORDER(^FH(116.2,"C",PD,Z))
- IF Z
- Begin DoDot:1
- +2 SET Z1=$PIECE($GET(^FH(116.2,+Z,0)),"^",6)
- SET Z1=$SELECT(Z1<1:99,Z1<10:"0"_Z1,1:Z1)
- +3 IF '$DATA(SR(Z1_"~"_PD))
- SET SR(Z1_"~"_PD)=CODE
- QUIT
- End DoDot:1
- +4 SET (PD,ZZ)=""
- FOR
- SET ZZ=$ORDER(SR(ZZ))
- IF ZZ=""
- QUIT
- SET Z=$GET(SR(ZZ))
- IF Z'=""
- IF $LENGTH(PD_" "_Z)>200
- QUIT
- IF PD'=""
- SET PD=PD_" "
- SET PD=PD_Z
- +5 SET XX=$SELECT(PD'="":PD,1:"")
- KILL CODE,LP,PD,SR,Z,Z1,ZZ
- +6 QUIT
- EN3 ; Help Prompt for Production String
- +1 WRITE !!,"List Production Diet Codes separated by a single space"
- +2 WRITE !!,"Example: LS;C25;T30 RG ME;T20.1 CR;C50"
- +3 WRITE !," -- Production Diet Code"
- +4 WRITE !," - T = Tray or C = Cafeteria"
- +5 WRITE !," -- % of T or C census receiving recipe (max. 1 dec. place)"
- +6 WRITE !!,"Production Diets listed without a specification (e.g., RG)"
- +7 WRITE !,"are assumed to be 100% of census.",!
- +8 WRITE !,"ALL + will add all production diet codes.",!
- QUIT