FHSEL3 ; HISC/REL/NCA - Print Tabulated Preferences ;1/23/98  16:11
 ;;5.5;DIETETICS;;Jan 28, 2005
 K S S S1=38
 F K=0:0 S K=$O(D(K)) Q:K=""  S X=^FH(119.72,K,0),N2=$P(X,"^",1),N3=$P(X,"^",4) S:N3="" N3=$E(N2,1,6) S S(N3,K)=$J(N3,8),S1=S1+8
 S:S1<80 S1=80
 F Z=0:0 S Z=$O(^TMP($J,"P",Z)) Q:Z<1  D C1
 S DTP=NOW D DTP^FH S H1=DTP,X=TIM D DOW^%DTC S DOW=Y+1 D SES,HDR
 I $D(^TMP($J,"L")) S TP="L" W !!?(S1-9\2),"L I K E S",! D L0
 I $D(^TMP($J,"D")) S TP="D" W !!?(S1-15\2),"D I S L I K E S",! D L0
KIL W ! Q
L0 S CHK="" I 'SRT S LNOD="0" D L1 Q
 S LNOD="0" F L1=0:0 S LNOD=$O(^TMP($J,TP,LNOD)) Q:LNOD=""  D L1
 Q
L1 S X1=""
L2 S X1=$O(^TMP($J,TP,LNOD,X1)) Q:X1=""
 D:$Y>(IOSL-6) HDR I SRT,CHK'=LNOD W !!,"Prod. Diet: ",LNOD,! S CHK=LNOD
 W !,$P(X1,"~",1),?31 S TOT=0
 S K1="" F  S K1=$O(S(K1)) Q:K1=""  F SP=0:0 S SP=$O(S(K1,SP)) Q:SP=""  S N1=$G(^TMP($J,TP,LNOD,X1,SP)) W $J($S('N1:"",1:N1),6),"  " S TOT=TOT+N1
 W $J($S(TOT:TOT,1:""),6)
 G L2
SES S (PD,Y)="",P0=0
 S P0="" F  S P0=$O(S(P0)) Q:P0=""  F K=0:0 S K=$O(S(P0,K)) Q:K<1  S Y=$G(S(P0,K)),PD=PD_Y
 S PD=PD_"   TOTAL"
 Q
C1 S X=$G(^FH(115.2,Z,0)),TP=$P(X,"^",2)
 I TP="L" S X1=+$P(X,"^",4) G C3:D3,C31
 Q:TP'="D"  S PD="" F LL=0:0 S PD=$O(^TMP($J,"P",Z,PD)) Q:PD=""  D C2:D3,C22:'D3
 Q
C2 F KK=0:0 S KK=$O(^FH(115.2,Z,"X",KK)) Q:KK<1  S X1=+^(KK,0) D C21
 Q
C21 S X3=$O(^FH(116.1,FHX1,"RE","B",X1,0)) Q:X3<1
 S X1=$P(^FH(114,X1,0),"^",1)_"~"_X1
 F CAT=0:0 S CAT=$O(^FH(116.1,FHX1,"RE",X3,"R",CAT)) Q:CAT<1  S X=$P($G(^(CAT,0)),"^",2) D
 .Q:X'[PD
 .F SP=0:0 S SP=$O(^TMP($J,"P",Z,PD,SP)) Q:SP<1  D C4
 .Q
 Q
C22 S X1=$P(^FH(115.2,Z,0),"^",1)_"~"_Z
 F SP=0:0 S SP=$O(^TMP($J,"P",Z,PD,SP)) Q:SP<1  D C4
 Q
C3 S X3=$O(^FH(116.1,FHX1,"RE","B",X1,0)) I X3<1 K ^TMP($J,"P",Z) Q
 S X1=$P(^FH(114,X1,0),"^",1)_"~"_X1
 S PD="" F LL=0:0 S PD=$O(^TMP($J,"P",Z,PD)) Q:PD=""  D
 .F CAT=0:0 S CAT=$O(^FH(116.1,FHX1,"RE",X3,"R",CAT)) Q:CAT<1  S X=$P($G(^(CAT,0)),"^",2) D
 ..Q:X'[PD
 ..F SP=0:0 S SP=$O(^TMP($J,"P",Z,PD,SP)) Q:SP<1  D C4
 ..Q
 .Q
 Q
C31 S X1=$P(^FH(115.2,Z,0),"^",1)_"~"_Z
 S PD="" F LL=0:0 S PD=$O(^TMP($J,"P",Z,PD)) Q:PD=""  F SP=0:0 S SP=$O(^TMP($J,"P",Z,PD,SP)) Q:SP<1  D C4
 Q
C4 I $D(^TMP($J,"P",Z,PD,SP)) S X2=^(SP),CODE=$O(^FH(116.2,"C",PD,0)),CODE=$P($G(^FH(116.2,+CODE,0)),"^",1),LNOD=$S(SRT:$E(CODE,1,18),1:"0") S:'$D(^TMP($J,TP,LNOD,X1,SP)) ^TMP($J,TP,LNOD,X1,SP)=0 S ^(SP)=^(SP)+X2
 Q
HDR W:'($E(IOST,1,2)'="C-"&'PG) @IOF S PG=PG+1 W !,H1,?(S1-29\2),"M E A L   P R E F E R E N C E S",?(S1-8),"Page ",PG
 I D3 W !!?(S1-14\2),"MENU SPECIFIC"
 S DTP=TIM\1 D DTP^FH S X=$P("SUN^MON^TUES^WEDNES^THURS^FRI^SATUR","^",DOW)_"DAY  "_DTP_"  "_$S(MEAL="B":"BREAKFAST",MEAL="N":"NOON",1:"EVENING")
 W:D3 ! W !?(S1+2-$L(X)\2),X
 W !! W $S('D3:"Preference",1:"Recipe"),?29,PD,!
 S LN="",$P(LN,"-",S1+1)="" W !,LN Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFHSEL3   2833     printed  Sep 23, 2025@19:31:01                                                                                                                                                                                                      Page 2
FHSEL3    ; HISC/REL/NCA - Print Tabulated Preferences ;1/23/98  16:11
 +1       ;;5.5;DIETETICS;;Jan 28, 2005
 +2        KILL S
           SET S1=38
 +3        FOR K=0:0
               SET K=$ORDER(D(K))
               if K=""
                   QUIT 
               SET X=^FH(119.72,K,0)
               SET N2=$PIECE(X,"^",1)
               SET N3=$PIECE(X,"^",4)
               if N3=""
                   SET N3=$EXTRACT(N2,1,6)
               SET S(N3,K)=$JUSTIFY(N3,8)
               SET S1=S1+8
 +4        if S1<80
               SET S1=80
 +5        FOR Z=0:0
               SET Z=$ORDER(^TMP($JOB,"P",Z))
               if Z<1
                   QUIT 
               DO C1
 +6        SET DTP=NOW
           DO DTP^FH
           SET H1=DTP
           SET X=TIM
           DO DOW^%DTC
           SET DOW=Y+1
           DO SES
           DO HDR
 +7        IF $DATA(^TMP($JOB,"L"))
               SET TP="L"
               WRITE !!?(S1-9\2),"L I K E S",!
               DO L0
 +8        IF $DATA(^TMP($JOB,"D"))
               SET TP="D"
               WRITE !!?(S1-15\2),"D I S L I K E S",!
               DO L0
KIL        WRITE !
           QUIT 
L0         SET CHK=""
           IF 'SRT
               SET LNOD="0"
               DO L1
               QUIT 
 +1        SET LNOD="0"
           FOR L1=0:0
               SET LNOD=$ORDER(^TMP($JOB,TP,LNOD))
               if LNOD=""
                   QUIT 
               DO L1
 +2        QUIT 
L1         SET X1=""
L2         SET X1=$ORDER(^TMP($JOB,TP,LNOD,X1))
           if X1=""
               QUIT 
 +1        if $Y>(IOSL-6)
               DO HDR
           IF SRT
               IF CHK'=LNOD
                   WRITE !!,"Prod. Diet: ",LNOD,!
                   SET CHK=LNOD
 +2        WRITE !,$PIECE(X1,"~",1),?31
           SET TOT=0
 +3        SET K1=""
           FOR 
               SET K1=$ORDER(S(K1))
               if K1=""
                   QUIT 
               FOR SP=0:0
                   SET SP=$ORDER(S(K1,SP))
                   if SP=""
                       QUIT 
                   SET N1=$GET(^TMP($JOB,TP,LNOD,X1,SP))
                   WRITE $JUSTIFY($SELECT('N1:"",1:N1),6),"  "
                   SET TOT=TOT+N1
 +4        WRITE $JUSTIFY($SELECT(TOT:TOT,1:""),6)
 +5        GOTO L2
SES        SET (PD,Y)=""
           SET P0=0
 +1        SET P0=""
           FOR 
               SET P0=$ORDER(S(P0))
               if P0=""
                   QUIT 
               FOR K=0:0
                   SET K=$ORDER(S(P0,K))
                   if K<1
                       QUIT 
                   SET Y=$GET(S(P0,K))
                   SET PD=PD_Y
 +2        SET PD=PD_"   TOTAL"
 +3        QUIT 
C1         SET X=$GET(^FH(115.2,Z,0))
           SET TP=$PIECE(X,"^",2)
 +1        IF TP="L"
               SET X1=+$PIECE(X,"^",4)
               if D3
                   GOTO C3
               GOTO C31
 +2        if TP'="D"
               QUIT 
           SET PD=""
           FOR LL=0:0
               SET PD=$ORDER(^TMP($JOB,"P",Z,PD))
               if PD=""
                   QUIT 
               if D3
                   DO C2
               if 'D3
                   DO C22
 +3        QUIT 
C2         FOR KK=0:0
               SET KK=$ORDER(^FH(115.2,Z,"X",KK))
               if KK<1
                   QUIT 
               SET X1=+^(KK,0)
               DO C21
 +1        QUIT 
C21        SET X3=$ORDER(^FH(116.1,FHX1,"RE","B",X1,0))
           if X3<1
               QUIT 
 +1        SET X1=$PIECE(^FH(114,X1,0),"^",1)_"~"_X1
 +2        FOR CAT=0:0
               SET CAT=$ORDER(^FH(116.1,FHX1,"RE",X3,"R",CAT))
               if CAT<1
                   QUIT 
               SET X=$PIECE($GET(^(CAT,0)),"^",2)
               Begin DoDot:1
 +3                if X'[PD
                       QUIT 
 +4                FOR SP=0:0
                       SET SP=$ORDER(^TMP($JOB,"P",Z,PD,SP))
                       if SP<1
                           QUIT 
                       DO C4
 +5                QUIT 
               End DoDot:1
 +6        QUIT 
C22        SET X1=$PIECE(^FH(115.2,Z,0),"^",1)_"~"_Z
 +1        FOR SP=0:0
               SET SP=$ORDER(^TMP($JOB,"P",Z,PD,SP))
               if SP<1
                   QUIT 
               DO C4
 +2        QUIT 
C3         SET X3=$ORDER(^FH(116.1,FHX1,"RE","B",X1,0))
           IF X3<1
               KILL ^TMP($JOB,"P",Z)
               QUIT 
 +1        SET X1=$PIECE(^FH(114,X1,0),"^",1)_"~"_X1
 +2        SET PD=""
           FOR LL=0:0
               SET PD=$ORDER(^TMP($JOB,"P",Z,PD))
               if PD=""
                   QUIT 
               Begin DoDot:1
 +3                FOR CAT=0:0
                       SET CAT=$ORDER(^FH(116.1,FHX1,"RE",X3,"R",CAT))
                       if CAT<1
                           QUIT 
                       SET X=$PIECE($GET(^(CAT,0)),"^",2)
                       Begin DoDot:2
 +4                        if X'[PD
                               QUIT 
 +5                        FOR SP=0:0
                               SET SP=$ORDER(^TMP($JOB,"P",Z,PD,SP))
                               if SP<1
                                   QUIT 
                               DO C4
 +6                        QUIT 
                       End DoDot:2
 +7                QUIT 
               End DoDot:1
 +8        QUIT 
C31        SET X1=$PIECE(^FH(115.2,Z,0),"^",1)_"~"_Z
 +1        SET PD=""
           FOR LL=0:0
               SET PD=$ORDER(^TMP($JOB,"P",Z,PD))
               if PD=""
                   QUIT 
               FOR SP=0:0
                   SET SP=$ORDER(^TMP($JOB,"P",Z,PD,SP))
                   if SP<1
                       QUIT 
                   DO C4
 +2        QUIT 
C4         IF $DATA(^TMP($JOB,"P",Z,PD,SP))
               SET X2=^(SP)
               SET CODE=$ORDER(^FH(116.2,"C",PD,0))
               SET CODE=$PIECE($GET(^FH(116.2,+CODE,0)),"^",1)
               SET LNOD=$SELECT(SRT:$EXTRACT(CODE,1,18),1:"0")
               if '$DATA(^TMP($JOB,TP,LNOD,X1,SP))
                   SET ^TMP($JOB,TP,LNOD,X1,SP)=0
               SET ^(SP)=^(SP)+X2
 +1        QUIT 
HDR        if '($EXTRACT(IOST,1,2)'="C-"&'PG)
               WRITE @IOF
           SET PG=PG+1
           WRITE !,H1,?(S1-29\2),"M E A L   P R E F E R E N C E S",?(S1-8),"Page ",PG
 +1        IF D3
               WRITE !!?(S1-14\2),"MENU SPECIFIC"
 +2        SET DTP=TIM\1
           DO DTP^FH
           SET X=$PIECE("SUN^MON^TUES^WEDNES^THURS^FRI^SATUR","^",DOW)_"DAY  "_DTP_"  "_$SELECT(MEAL="B":"BREAKFAST",MEAL="N":"NOON",1:"EVENING")
 +3        if D3
               WRITE !
           WRITE !?(S1+2-$LENGTH(X)\2),X
 +4        WRITE !!
           WRITE $SELECT('D3:"Preference",1:"Recipe"),?29,PD,!
 +5        SET LN=""
           SET $PIECE(LN,"-",S1+1)=""
           WRITE !,LN
           QUIT