FHDCR1A ; HISC/REL/NCA/RVD - Build Diet Cards ;1/21/99  14:04
 ;;5.5;DIETETICS;**1,5,15**;Jan 28, 2005;Build 2
 ;patch #5 - added the screen for cancelled Guest meal.
 ;patch #15 - added the screen to prevent reprint of outpatient meal diet cards
B1 ; Store wards
 K ^TMP($J),NN,N,P S MFLG=0 D Q1^FHDCR1B D NOW^%DTC S (DTP,TIM)=% D DTP^FH S HD=DTP S:MEAL="A" MFLG=1
 S DTP=D1 D DTP^FH S (MDT,MEALDT)=DTP,MEALDT=$J("",62-$L(MEALDT)\2)_MEALDT
 S FHBOT=$P($G(^FH(119.9,1,4)),"^",1)
 S FHD1=D1-.00001,FHD2=D1+.99999
 S FHDFNSAV="",FHW1SAV=W1,FHFHPSAV=FHP,FHMEALSA=MEAL
 S:$G(FHDFN) FHDFNSAV=FHDFN
 I $G(DFN),'$D(^DPT(DFN,.1)) G OUTALL
 I '$G(DFN),$G(FHDFN) G OUTALL
 ;next process inpatient data
DFN I $G(DFN),$G(FHDFN) D  Q
 .S ADM=+$G(^DPT(DFN,.105)),W1=+$P($G(^FHPT(FHDFN,"A",+ADM,0)),"^",8)
 .S K1=$G(^FH(119.6,+W1,0)),WRDN=$P(K1,"^",1),SP=$P(K1,"^",5),SP1=$P(K1,"^",6),FHPAR=$P(K1,"^",24),RM=$G(^DPT(DFN,.101))
 .I 'SP Q:FHPAR'="Y"  S SP=SP1 Q:'SP
 .K PP,S,MM S NBR=0
 .I 'TPP D BLD^FHDCR11 D:NBR UPD,PRT^FHDCR1C Q
 .I 'MFLG D BLD^FHDCR1D D:NBR UPD,PRT^FHMTK1C Q
 .F MEAL="B","N","E" D BLD^FHDCR1D
 .D UPD
 .D:NBR PRT^FHMTK1C
 ;if ward, do specific ward/location;otherwise, do all entry for all
 ;wards/locations and all communication offices.
WARD I W1 S ^TMP($J,"W","01"_$P($G(^FH(119.6,+W1,0)),"^",1))=W1_"^"_$P($G(^FH(119.6,+W1,0)),"^",5,6)_"^"_$P($G(^FH(119.6,+W1,0)),"^",24)
 E  F W1=0:0 S W1=$O(^FH(119.6,W1)) Q:W1<1  D
 .S P0=$G(^FH(119.6,W1,0)),WRDN=$P(P0,"^",1),SP=$P(P0,"^",5,6),D2=$P(P0,"^",8),FHPAR=$P(P0,"^",24),P0=$P(P0,"^",4),P0=$S(P0<1:99,P0<10:"0"_P0,1:P0)
 .I FHP,D2'=FHP Q
 .S ^TMP($J,"W",P0_WRDN)=W1_"^"_SP_"^"_FHPAR Q
 S NX="" F  S NX=$O(^TMP($J,"W",NX)) Q:NX=""  S X1=$G(^(NX)),W1=+X1,FHS=$P(X1,"^",2),SP1=$P(X1,"^",3),FHPAR=$P(X1,"^",4),WRDN=$E(NX,3,99) S:'FHS&(FHPAR="Y") FHS=SP1 I FHS K ^TMP($J,"D") D
 .F FHDFN=0:0 S FHDFN=$O(^FHPT("AW",W1,FHDFN)) Q:FHDFN<1  D
 ..D PATNAME^FHOMUTL Q:'$G(DFN)
 ..S ADM=$G(^FHPT("AW",W1,FHDFN))
 ..I SORT="A" S RM=$P($G(^DPT(DFN,0)),"^",1),DL=0,RMB=$G(^DPT(DFN,.101)) S:RMB="" RMB="***"
 ..E  S RI=$G(^DPT(DFN,.108)),RM=$G(^DPT(DFN,.101)) S:RM="" RM="***" S:RI RE=$O(^FH(119.6,"AR",+RI,W1,0)) S:'RI RE="" S DL=$S(RE:$P($G(^FH(119.6,W1,"R",+RE,0)),"^",2),1:""),RMB=""
 ..S DL=$S(DL<1:99,DL<10:"0"_DL,1:DL)
 ..S ^TMP($J,"D",DL_"~"_RM_"~"_$S(SORT="R":DFN,1:RMB))=DFN_"^"_ADM_"^"_FHDFN Q
 .;
 .K ^TMP($J,"MP"),^TMP($J,0),MM,PP,S S X9="",NBR=0 F  S X9=$O(^TMP($J,"D",X9)) Q:X9=""  S FHX6=$G(^(X9)) S DFN=$P(FHX6,"^",1),ADM=$P(FHX6,"^",2) D
 ..S FHDFN=$P(FHX6,"^",3)
 ..S RM=$S(SORT="R":$P(X9,"~",2),1:$P(X9,"~",3)) S SP=FHS
 ..I TPP D  Q
 ...I 'MFLG D BLD^FHDCR1D,UPD Q
 ...F MEAL="B","N","E" D BLD^FHDCR1D
 ...D UPD
 ...Q
 ..I 'TPP D BLD^FHDCR11 D UPD Q
 .I NBR,TPP D PRT^FHMTK1C Q
 .D:NBR PRT^FHDCR1C
 ;
OUTALL K ^TMP($J,"D")   ;reset/clean-up tmp global outpatient process.
 ;process outpatient data
 ;next recurring
 F FHK1=FHD1:0 S FHK1=$O(^FHPT("RM",FHK1)) Q:(FHK1'>0)!(FHK1>FHD2)  D
 .F FHDFN=0:0 S FHDFN=$O(^FHPT("RM",FHK1,FHDFN)) Q:FHDFN'>0  D
 ..F FHKD=0:0 S FHKD=$O(^FHPT("RM",FHK1,FHDFN,FHKD)) Q:FHKD'>0  D
 ...S FHKDAT=^FHPT(FHDFN,"OP",FHKD,0)
 ...S (W1,FHW1)=$P(FHKDAT,U,3)
 ...S FHRMB=$P(FHKDAT,U,18)
 ...S FHDIET=$P(FHKDAT,U,2),FHMEAL=$P(FHKDAT,U,4),FHDCLP=$P(FHKDAT,U,14),FHSTAT=$P(FHKDAT,U,15),FHDRMLE=$P(FHKDAT,U,16)
 ...S:FHDIET="" FHDIET=$E(FHKDAT,7,11)
 ...I (FHMEALSA'="A"),(FHMEAL'=FHMEALSA) Q
 ...I FHSTAT="C" Q
 ...I UPD,FHDCLP'="",FHDRMLE="" Q
 ...I UPD,FHDCLP'="",FHDRMLE'="",FHDCLP>FHDRMLE Q
 ...I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ...I $G(FHDFNSAV),(FHDFN'=FHDFNSAV) Q
 ...S FHLOC="",FHRGS="OP"
 ...Q:'$G(FHW1)
 ...S:$D(^FH(119.6,FHW1,0)) FHLOC=$P(^FH(119.6,FHW1,0),U,8)
 ...I $G(FHFHPSAV),$G(FHLOC),(FHFHPSAV'=FHLOC) Q
 ...S FHDFN1=$P(^FHPT(FHDFN,0),U,1)
 ...I $G(FHW1SAV)!($G(FHFHPSAV)) D OUTW Q
 ...I $G(FHDFNSAV) D OUTP Q
 ...D OUTW
 ;next guest
 F FHKD=FHD1:0 S FHKD=$O(^FHPT("GM",FHKD)) Q:(FHKD'>0)!(FHKD>FHD2)  D
 .F FHDFN=0:0 S FHDFN=$O(^FHPT("GM",FHKD,FHDFN)) Q:FHDFN'>0  D
 ..S FHKDAT=^FHPT(FHDFN,"GM",FHKD,0)
 ..S (W1,FHW1)=$P(FHKDAT,U,5)
 ..S FHSTAT=$P(FHKDAT,U,9),FHDCLP=$P(FHKDAT,U,8)
 ..Q:FHSTAT="C"
 ..I UPD,FHDCLP'="" Q
 ..S FHRMB=$P(FHKDAT,U,11)
 ..S FHDIET=$P(FHKDAT,U,6),FHMEAL=$P(FHKDAT,U,3)
 ..I (FHMEALSA'="A"),(FHMEAL'=FHMEALSA) Q
 ..I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ..I $G(FHDFNSAV),(FHDFN'=FHDFNSAV) Q
 ..S FHLOC="",FHRGS="GM"
 ..Q:'$G(FHW1)
 ..S:$D(^FH(119.6,FHW1,0)) FHLOC=$P(^FH(119.6,FHW1,0),U,8)
 ..I $G(FHFHPSAV),$G(FHLOC),(FHFHPSAV'=FHLOC) Q
 ..S FHDFN1=$P(^FHPT(FHDFN,0),U,1)
 ..I $G(FHW1SAV)!($G(FHFHPSAV)) D OUTW Q
 ..I $G(FHDFNSAV) D OUTP Q
 ..D OUTW
 ;next SPECIAL
 F FHKD=FHD1:0 S FHKD=$O(^FHPT("SM",FHKD)) Q:(FHKD'>0)!(FHKD>FHD2)  D
 .F FHDFN=0:0 S FHDFN=$O(^FHPT("SM",FHKD,FHDFN)) Q:FHDFN'>0  D
 ..S FHKDAT=^FHPT(FHDFN,"SM",FHKD,0)
 ..S (W1,FHW1)=$P(FHKDAT,U,3)
 ..S FHRMB=$P(FHKDAT,U,13)
 ..S FHDFN1=$P(^FHPT(FHDFN,0),U,1)
 ..S FHDIET=$P(FHKDAT,U,4),FHMEAL=$P(FHKDAT,U,9),FHSTAT=$P(FHKDAT,U,2),FHDCLP=$P(FHKDAT,U,11)
 ..I (FHMEALSA'="A"),(FHMEAL'=FHMEALSA) Q
 ..I (FHSTAT="C")!(FHSTAT="D") Q
 ..I UPD,FHDCLP'="" Q
 ..I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ..I $G(FHDFNSAV),(FHDFN'=FHDFNSAV) Q
 ..S FHLOC="",FHRGS="SM"
 ..Q:'$G(FHW1)
 ..S:$D(^FH(119.6,FHW1,0)) FHLOC=$P(^FH(119.6,FHW1,0),U,8)
 ..I $G(FHFHPSAV),$G(FHLOC),(FHFHPSAV'=FHLOC) Q
 ..S FHDFN1=$P(^FHPT(FHDFN,0),U,1)
 ..I $G(FHW1SAV)!($G(FHFHPSAV)) D OUTW Q
 ..I $G(FHDFNSAV) D OUTP Q
 ..D OUTW
 ;
 K ^TMP($J,"MP"),^TMP($J,0),MM,PP,S S X9="",NBR=0 F  S X9=$O(^TMP($J,"D",X9)) Q:X9=""  S FHX6=$G(^(X9)) S FHDFN=$P(FHX6,"^",1),ADM=$P(FHX6,"^",2) D
 .S RM=$S(SORT="R":$P(X9,"~",2),1:$P(X9,"~",3)) S SP=FHS
 .S FHDFN=$P(FHX6,"^",1),FHRGS=$P(FHX6,"^",2)
 .D PATNAME^FHOMUTL
 .S FHKD=$P(FHX6,"^",3),W1=$P(FHX6,"^",4)
 .Q:$G(FHRGS)!('$G(FHKD))
 .S FHSTAT="",FHADM=FHKD
 .S FHKDAT=$G(^FHPT(FHDFN,""_FHRGS_"",FHKD,0))
 .I FHRGS="GM" S W1=$P(FHKDAT,U,5),FHDIET=$P(FHKDAT,U,6),FHMEAL=$P(FHKDAT,U,3)
 .I FHRGS="OP" S W1=$P(FHKDAT,U,3),FHDIET=$P(FHKDAT,U,2),FHMEAL=$P(FHKDAT,U,4),FHSTAT=$P(FHKDAT,U,15)
 .I FHRGS="SM" S W1=$P(FHKDAT,U,3),FHDIET=$P(FHKDAT,U,4),FHMEAL=$P(FHKDAT,U,9),FHSTAT=$P(FHKDAT,U,2)
 .;don't process IF STATUS IS cancelled or denied
 .I (FHSTAT="C")!(FHSTAT="D") Q
 .S K1=$G(^FH(119.6,+W1,0)),WRDN=$P(K1,"^",1),SP=$P(K1,"^",5),SP1=$P(K1,"^",6),FHPAR=$P(K1,"^",24)
 .I 'SP Q:FHPAR'="Y"  S SP=SP1 Q:'SP
 .I TPP D  Q
 ..I 'MFLG,'ADM D OUT^FHDCR1D,@FHRGS Q
 ..F MEAL="B","N","E" D:'ADM OUT^FHDCR1D
 ..D:'ADM @FHRGS
 .I 'TPP,'ADM D OUT^FHDCR11 D @FHRGS Q
 I NBR,TPP D PRT^FHMTK1C Q
 D:NBR PRT^FHDCR1C
 Q
 ;
UPD ; Update Date/Time Diet Card was Printed
 S $P(^FHPT(FHDFN,"A",ADM,0),"^",16)=TIM Q
OUTP ;process outpatient using patient
 S RM="***"
 S K1=$G(^FH(119.6,+W1,0)),WRDN=$P(K1,"^",1),SP=$P(K1,"^",5),SP1=$P(K1,"^",6),FHPAR=$P(K1,"^",24)
 I 'SP Q:FHPAR'="Y"  S SP=SP1 Q:'SP
 K PP,S,MM S NBR=0,FHADM=FHKD I $G(FHRMB),$D(^DG(405.4,FHRMB,0)) S RM=$P(^DG(405.4,FHRMB,0),U,1)
 I 'TPP D OUT^FHDCR11 D:NBR @FHRGS,PRT^FHDCR1C K ^TMP($J,"MP"),^TMP($J,0),PP,S,TT,SRT Q
 I 'MFLG D OUT^FHDCR1D D:NBR @FHRGS,PRT^FHMTK1C Q
 F MEAL="B","N","E" D OUT^FHDCR1D
 D @FHRGS
 D:NBR PRT^FHMTK1C
 Q
OP S $P(^FHPT(FHDFN,"OP",FHKD,0),"^",14)=TIM Q
GM S $P(^FHPT(FHDFN,"GM",FHKD,0),"^",8)=TIM Q
SM S $P(^FHPT(FHDFN,"SM",FHKD,0),"^",11)=TIM Q
 ;
OUTW ;process outpatient using all and ward.
 ;F FHDFN=0:0 S FHDFN=$O(^FHPT("AW",W1,FHDFN)) Q:FHDFN<1  D
 D PATNAME^FHOMUTL
 S (RM,RMB)="***"
 I $G(FHRMB),$D(^DG(405.4,FHRMB,0)) S RMB=$P(^DG(405.4,FHRMB,0),U,1)
 I SORT="A" S RM=FHPTNM,DL=0
 E  S (RI,RE,DL)="***",RM=RMB
 S ^TMP($J,"D",DL_"~"_RM_"~"_$S(SORT="R":FHDFN,1:RMB)_FHMEAL)=FHDFN_"^"_FHRGS_"^"_FHKD_"^"_W1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFHDCR1A   7740     printed  Sep 23, 2025@19:23:26                                                                                                                                                                                                     Page 2
FHDCR1A   ; HISC/REL/NCA/RVD - Build Diet Cards ;1/21/99  14:04
 +1       ;;5.5;DIETETICS;**1,5,15**;Jan 28, 2005;Build 2
 +2       ;patch #5 - added the screen for cancelled Guest meal.
 +3       ;patch #15 - added the screen to prevent reprint of outpatient meal diet cards
B1        ; Store wards
 +1        KILL ^TMP($JOB),NN,N,P
           SET MFLG=0
           DO Q1^FHDCR1B
           DO NOW^%DTC
           SET (DTP,TIM)=%
           DO DTP^FH
           SET HD=DTP
           if MEAL="A"
               SET MFLG=1
 +2        SET DTP=D1
           DO DTP^FH
           SET (MDT,MEALDT)=DTP
           SET MEALDT=$JUSTIFY("",62-$LENGTH(MEALDT)\2)_MEALDT
 +3        SET FHBOT=$PIECE($GET(^FH(119.9,1,4)),"^",1)
 +4        SET FHD1=D1-.00001
           SET FHD2=D1+.99999
 +5        SET FHDFNSAV=""
           SET FHW1SAV=W1
           SET FHFHPSAV=FHP
           SET FHMEALSA=MEAL
 +6        if $GET(FHDFN)
               SET FHDFNSAV=FHDFN
 +7        IF $GET(DFN)
               IF '$DATA(^DPT(DFN,.1))
                   GOTO OUTALL
 +8        IF '$GET(DFN)
               IF $GET(FHDFN)
                   GOTO OUTALL
 +9       ;next process inpatient data
DFN        IF $GET(DFN)
               IF $GET(FHDFN)
                   Begin DoDot:1
 +1                    SET ADM=+$GET(^DPT(DFN,.105))
                       SET W1=+$PIECE($GET(^FHPT(FHDFN,"A",+ADM,0)),"^",8)
 +2                    SET K1=$GET(^FH(119.6,+W1,0))
                       SET WRDN=$PIECE(K1,"^",1)
                       SET SP=$PIECE(K1,"^",5)
                       SET SP1=$PIECE(K1,"^",6)
                       SET FHPAR=$PIECE(K1,"^",24)
                       SET RM=$GET(^DPT(DFN,.101))
 +3                    IF 'SP
                           if FHPAR'="Y"
                               QUIT 
                           SET SP=SP1
                           if 'SP
                               QUIT 
 +4                    KILL PP,S,MM
                       SET NBR=0
 +5                    IF 'TPP
                           DO BLD^FHDCR11
                           if NBR
                               DO UPD
                               DO PRT^FHDCR1C
                           QUIT 
 +6                    IF 'MFLG
                           DO BLD^FHDCR1D
                           if NBR
                               DO UPD
                               DO PRT^FHMTK1C
                           QUIT 
 +7                    FOR MEAL="B","N","E"
                           DO BLD^FHDCR1D
 +8                    DO UPD
 +9                    if NBR
                           DO PRT^FHMTK1C
                   End DoDot:1
                   QUIT 
 +10      ;if ward, do specific ward/location;otherwise, do all entry for all
 +11      ;wards/locations and all communication offices.
WARD       IF W1
               SET ^TMP($JOB,"W","01"_$PIECE($GET(^FH(119.6,+W1,0)),"^",1))=W1_"^"_$PIECE($GET(^FH(119.6,+W1,0)),"^",5,6)_"^"_$PIECE($GET(^FH(119.6,+W1,0)),"^",24)
 +1       IF '$TEST
               FOR W1=0:0
                   SET W1=$ORDER(^FH(119.6,W1))
                   if W1<1
                       QUIT 
                   Begin DoDot:1
 +2                    SET P0=$GET(^FH(119.6,W1,0))
                       SET WRDN=$PIECE(P0,"^",1)
                       SET SP=$PIECE(P0,"^",5,6)
                       SET D2=$PIECE(P0,"^",8)
                       SET FHPAR=$PIECE(P0,"^",24)
                       SET P0=$PIECE(P0,"^",4)
                       SET P0=$SELECT(P0<1:99,P0<10:"0"_P0,1:P0)
 +3                    IF FHP
                           IF D2'=FHP
                               QUIT 
 +4                    SET ^TMP($JOB,"W",P0_WRDN)=W1_"^"_SP_"^"_FHPAR
                       QUIT 
                   End DoDot:1
 +5        SET NX=""
           FOR 
               SET NX=$ORDER(^TMP($JOB,"W",NX))
               if NX=""
                   QUIT 
               SET X1=$GET(^(NX))
               SET W1=+X1
               SET FHS=$PIECE(X1,"^",2)
               SET SP1=$PIECE(X1,"^",3)
               SET FHPAR=$PIECE(X1,"^",4)
               SET WRDN=$EXTRACT(NX,3,99)
               if 'FHS&(FHPAR="Y")
                   SET FHS=SP1
               IF FHS
                   KILL ^TMP($JOB,"D")
                   Begin DoDot:1
 +6                    FOR FHDFN=0:0
                           SET FHDFN=$ORDER(^FHPT("AW",W1,FHDFN))
                           if FHDFN<1
                               QUIT 
                           Begin DoDot:2
 +7                            DO PATNAME^FHOMUTL
                               if '$GET(DFN)
                                   QUIT 
 +8                            SET ADM=$GET(^FHPT("AW",W1,FHDFN))
 +9                            IF SORT="A"
                                   SET RM=$PIECE($GET(^DPT(DFN,0)),"^",1)
                                   SET DL=0
                                   SET RMB=$GET(^DPT(DFN,.101))
                                   if RMB=""
                                       SET RMB="***"
 +10                          IF '$TEST
                                   SET RI=$GET(^DPT(DFN,.108))
                                   SET RM=$GET(^DPT(DFN,.101))
                                   if RM=""
                                       SET RM="***"
                                   if RI
                                       SET RE=$ORDER(^FH(119.6,"AR",+RI,W1,0))
                                   if 'RI
                                       SET RE=""
                                   SET DL=$SELECT(RE:$PIECE($GET(^FH(119.6,W1,"R",+RE,0)),"^",2),1:"")
                                   SET RMB=""
 +11                           SET DL=$SELECT(DL<1:99,DL<10:"0"_DL,1:DL)
 +12                           SET ^TMP($JOB,"D",DL_"~"_RM_"~"_$SELECT(SORT="R":DFN,1:RMB))=DFN_"^"_ADM_"^"_FHDFN
                               QUIT 
                           End DoDot:2
 +13      ;
 +14                   KILL ^TMP($JOB,"MP"),^TMP($JOB,0),MM,PP,S
                       SET X9=""
                       SET NBR=0
                       FOR 
                           SET X9=$ORDER(^TMP($JOB,"D",X9))
                           if X9=""
                               QUIT 
                           SET FHX6=$GET(^(X9))
                           SET DFN=$PIECE(FHX6,"^",1)
                           SET ADM=$PIECE(FHX6,"^",2)
                           Begin DoDot:2
 +15                           SET FHDFN=$PIECE(FHX6,"^",3)
 +16                           SET RM=$SELECT(SORT="R":$PIECE(X9,"~",2),1:$PIECE(X9,"~",3))
                               SET SP=FHS
 +17                           IF TPP
                                   Begin DoDot:3
 +18                                   IF 'MFLG
                                           DO BLD^FHDCR1D
                                           DO UPD
                                           QUIT 
 +19                                   FOR MEAL="B","N","E"
                                           DO BLD^FHDCR1D
 +20                                   DO UPD
 +21                                   QUIT 
                                   End DoDot:3
                                   QUIT 
 +22                           IF 'TPP
                                   DO BLD^FHDCR11
                                   DO UPD
                                   QUIT 
                           End DoDot:2
 +23                   IF NBR
                           IF TPP
                               DO PRT^FHMTK1C
                               QUIT 
 +24                   if NBR
                           DO PRT^FHDCR1C
                   End DoDot:1
 +25      ;
OUTALL    ;reset/clean-up tmp global outpatient process.
           KILL ^TMP($JOB,"D")
 +1       ;process outpatient data
 +2       ;next recurring
 +3        FOR FHK1=FHD1:0
               SET FHK1=$ORDER(^FHPT("RM",FHK1))
               if (FHK1'>0)!(FHK1>FHD2)
                   QUIT 
               Begin DoDot:1
 +4                FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("RM",FHK1,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +5                        FOR FHKD=0:0
                               SET FHKD=$ORDER(^FHPT("RM",FHK1,FHDFN,FHKD))
                               if FHKD'>0
                                   QUIT 
                               Begin DoDot:3
 +6                                SET FHKDAT=^FHPT(FHDFN,"OP",FHKD,0)
 +7                                SET (W1,FHW1)=$PIECE(FHKDAT,U,3)
 +8                                SET FHRMB=$PIECE(FHKDAT,U,18)
 +9                                SET FHDIET=$PIECE(FHKDAT,U,2)
                                   SET FHMEAL=$PIECE(FHKDAT,U,4)
                                   SET FHDCLP=$PIECE(FHKDAT,U,14)
                                   SET FHSTAT=$PIECE(FHKDAT,U,15)
                                   SET FHDRMLE=$PIECE(FHKDAT,U,16)
 +10                               if FHDIET=""
                                       SET FHDIET=$EXTRACT(FHKDAT,7,11)
 +11                               IF (FHMEALSA'="A")
                                       IF (FHMEAL'=FHMEALSA)
                                           QUIT 
 +12                               IF FHSTAT="C"
                                       QUIT 
 +13                               IF UPD
                                       IF FHDCLP'=""
                                           IF FHDRMLE=""
                                               QUIT 
 +14                               IF UPD
                                       IF FHDCLP'=""
                                           IF FHDRMLE'=""
                                               IF FHDCLP>FHDRMLE
                                                   QUIT 
 +15                               IF $GET(FHW1SAV)
                                       IF (FHW1'=FHW1SAV)
                                           QUIT 
 +16                               IF $GET(FHDFNSAV)
                                       IF (FHDFN'=FHDFNSAV)
                                           QUIT 
 +17                               SET FHLOC=""
                                   SET FHRGS="OP"
 +18                               if '$GET(FHW1)
                                       QUIT 
 +19                               if $DATA(^FH(119.6,FHW1,0))
                                       SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +20                               IF $GET(FHFHPSAV)
                                       IF $GET(FHLOC)
                                           IF (FHFHPSAV'=FHLOC)
                                               QUIT 
 +21                               SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +22                               IF $GET(FHW1SAV)!($GET(FHFHPSAV))
                                       DO OUTW
                                       QUIT 
 +23                               IF $GET(FHDFNSAV)
                                       DO OUTP
                                       QUIT 
 +24                               DO OUTW
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +25      ;next guest
 +26       FOR FHKD=FHD1:0
               SET FHKD=$ORDER(^FHPT("GM",FHKD))
               if (FHKD'>0)!(FHKD>FHD2)
                   QUIT 
               Begin DoDot:1
 +27               FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("GM",FHKD,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +28                       SET FHKDAT=^FHPT(FHDFN,"GM",FHKD,0)
 +29                       SET (W1,FHW1)=$PIECE(FHKDAT,U,5)
 +30                       SET FHSTAT=$PIECE(FHKDAT,U,9)
                           SET FHDCLP=$PIECE(FHKDAT,U,8)
 +31                       if FHSTAT="C"
                               QUIT 
 +32                       IF UPD
                               IF FHDCLP'=""
                                   QUIT 
 +33                       SET FHRMB=$PIECE(FHKDAT,U,11)
 +34                       SET FHDIET=$PIECE(FHKDAT,U,6)
                           SET FHMEAL=$PIECE(FHKDAT,U,3)
 +35                       IF (FHMEALSA'="A")
                               IF (FHMEAL'=FHMEALSA)
                                   QUIT 
 +36                       IF $GET(FHW1SAV)
                               IF (FHW1'=FHW1SAV)
                                   QUIT 
 +37                       IF $GET(FHDFNSAV)
                               IF (FHDFN'=FHDFNSAV)
                                   QUIT 
 +38                       SET FHLOC=""
                           SET FHRGS="GM"
 +39                       if '$GET(FHW1)
                               QUIT 
 +40                       if $DATA(^FH(119.6,FHW1,0))
                               SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +41                       IF $GET(FHFHPSAV)
                               IF $GET(FHLOC)
                                   IF (FHFHPSAV'=FHLOC)
                                       QUIT 
 +42                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +43                       IF $GET(FHW1SAV)!($GET(FHFHPSAV))
                               DO OUTW
                               QUIT 
 +44                       IF $GET(FHDFNSAV)
                               DO OUTP
                               QUIT 
 +45                       DO OUTW
                       End DoDot:2
               End DoDot:1
 +46      ;next SPECIAL
 +47       FOR FHKD=FHD1:0
               SET FHKD=$ORDER(^FHPT("SM",FHKD))
               if (FHKD'>0)!(FHKD>FHD2)
                   QUIT 
               Begin DoDot:1
 +48               FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("SM",FHKD,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +49                       SET FHKDAT=^FHPT(FHDFN,"SM",FHKD,0)
 +50                       SET (W1,FHW1)=$PIECE(FHKDAT,U,3)
 +51                       SET FHRMB=$PIECE(FHKDAT,U,13)
 +52                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +53                       SET FHDIET=$PIECE(FHKDAT,U,4)
                           SET FHMEAL=$PIECE(FHKDAT,U,9)
                           SET FHSTAT=$PIECE(FHKDAT,U,2)
                           SET FHDCLP=$PIECE(FHKDAT,U,11)
 +54                       IF (FHMEALSA'="A")
                               IF (FHMEAL'=FHMEALSA)
                                   QUIT 
 +55                       IF (FHSTAT="C")!(FHSTAT="D")
                               QUIT 
 +56                       IF UPD
                               IF FHDCLP'=""
                                   QUIT 
 +57                       IF $GET(FHW1SAV)
                               IF (FHW1'=FHW1SAV)
                                   QUIT 
 +58                       IF $GET(FHDFNSAV)
                               IF (FHDFN'=FHDFNSAV)
                                   QUIT 
 +59                       SET FHLOC=""
                           SET FHRGS="SM"
 +60                       if '$GET(FHW1)
                               QUIT 
 +61                       if $DATA(^FH(119.6,FHW1,0))
                               SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +62                       IF $GET(FHFHPSAV)
                               IF $GET(FHLOC)
                                   IF (FHFHPSAV'=FHLOC)
                                       QUIT 
 +63                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +64                       IF $GET(FHW1SAV)!($GET(FHFHPSAV))
                               DO OUTW
                               QUIT 
 +65                       IF $GET(FHDFNSAV)
                               DO OUTP
                               QUIT 
 +66                       DO OUTW
                       End DoDot:2
               End DoDot:1
 +67      ;
 +68       KILL ^TMP($JOB,"MP"),^TMP($JOB,0),MM,PP,S
           SET X9=""
           SET NBR=0
           FOR 
               SET X9=$ORDER(^TMP($JOB,"D",X9))
               if X9=""
                   QUIT 
               SET FHX6=$GET(^(X9))
               SET FHDFN=$PIECE(FHX6,"^",1)
               SET ADM=$PIECE(FHX6,"^",2)
               Begin DoDot:1
 +69               SET RM=$SELECT(SORT="R":$PIECE(X9,"~",2),1:$PIECE(X9,"~",3))
                   SET SP=FHS
 +70               SET FHDFN=$PIECE(FHX6,"^",1)
                   SET FHRGS=$PIECE(FHX6,"^",2)
 +71               DO PATNAME^FHOMUTL
 +72               SET FHKD=$PIECE(FHX6,"^",3)
                   SET W1=$PIECE(FHX6,"^",4)
 +73               if $GET(FHRGS)!('$GET(FHKD))
                       QUIT 
 +74               SET FHSTAT=""
                   SET FHADM=FHKD
 +75               SET FHKDAT=$GET(^FHPT(FHDFN,""_FHRGS_"",FHKD,0))
 +76               IF FHRGS="GM"
                       SET W1=$PIECE(FHKDAT,U,5)
                       SET FHDIET=$PIECE(FHKDAT,U,6)
                       SET FHMEAL=$PIECE(FHKDAT,U,3)
 +77               IF FHRGS="OP"
                       SET W1=$PIECE(FHKDAT,U,3)
                       SET FHDIET=$PIECE(FHKDAT,U,2)
                       SET FHMEAL=$PIECE(FHKDAT,U,4)
                       SET FHSTAT=$PIECE(FHKDAT,U,15)
 +78               IF FHRGS="SM"
                       SET W1=$PIECE(FHKDAT,U,3)
                       SET FHDIET=$PIECE(FHKDAT,U,4)
                       SET FHMEAL=$PIECE(FHKDAT,U,9)
                       SET FHSTAT=$PIECE(FHKDAT,U,2)
 +79      ;don't process IF STATUS IS cancelled or denied
 +80               IF (FHSTAT="C")!(FHSTAT="D")
                       QUIT 
 +81               SET K1=$GET(^FH(119.6,+W1,0))
                   SET WRDN=$PIECE(K1,"^",1)
                   SET SP=$PIECE(K1,"^",5)
                   SET SP1=$PIECE(K1,"^",6)
                   SET FHPAR=$PIECE(K1,"^",24)
 +82               IF 'SP
                       if FHPAR'="Y"
                           QUIT 
                       SET SP=SP1
                       if 'SP
                           QUIT 
 +83               IF TPP
                       Begin DoDot:2
 +84                       IF 'MFLG
                               IF 'ADM
                                   DO OUT^FHDCR1D
                                   DO @FHRGS
                                   QUIT 
 +85                       FOR MEAL="B","N","E"
                               if 'ADM
                                   DO OUT^FHDCR1D
 +86                       if 'ADM
                               DO @FHRGS
                       End DoDot:2
                       QUIT 
 +87               IF 'TPP
                       IF 'ADM
                           DO OUT^FHDCR11
                           DO @FHRGS
                           QUIT 
               End DoDot:1
 +88       IF NBR
               IF TPP
                   DO PRT^FHMTK1C
                   QUIT 
 +89       if NBR
               DO PRT^FHDCR1C
 +90       QUIT 
 +91      ;
UPD       ; Update Date/Time Diet Card was Printed
 +1        SET $PIECE(^FHPT(FHDFN,"A",ADM,0),"^",16)=TIM
           QUIT 
OUTP      ;process outpatient using patient
 +1        SET RM="***"
 +2        SET K1=$GET(^FH(119.6,+W1,0))
           SET WRDN=$PIECE(K1,"^",1)
           SET SP=$PIECE(K1,"^",5)
           SET SP1=$PIECE(K1,"^",6)
           SET FHPAR=$PIECE(K1,"^",24)
 +3        IF 'SP
               if FHPAR'="Y"
                   QUIT 
               SET SP=SP1
               if 'SP
                   QUIT 
 +4        KILL PP,S,MM
           SET NBR=0
           SET FHADM=FHKD
           IF $GET(FHRMB)
               IF $DATA(^DG(405.4,FHRMB,0))
                   SET RM=$PIECE(^DG(405.4,FHRMB,0),U,1)
 +5        IF 'TPP
               DO OUT^FHDCR11
               if NBR
                   DO @FHRGS
                   DO PRT^FHDCR1C
               KILL ^TMP($JOB,"MP"),^TMP($JOB,0),PP,S,TT,SRT
               QUIT 
 +6        IF 'MFLG
               DO OUT^FHDCR1D
               if NBR
                   DO @FHRGS
                   DO PRT^FHMTK1C
               QUIT 
 +7        FOR MEAL="B","N","E"
               DO OUT^FHDCR1D
 +8        DO @FHRGS
 +9        if NBR
               DO PRT^FHMTK1C
 +10       QUIT 
OP         SET $PIECE(^FHPT(FHDFN,"OP",FHKD,0),"^",14)=TIM
           QUIT 
GM         SET $PIECE(^FHPT(FHDFN,"GM",FHKD,0),"^",8)=TIM
           QUIT 
SM         SET $PIECE(^FHPT(FHDFN,"SM",FHKD,0),"^",11)=TIM
           QUIT 
 +1       ;
OUTW      ;process outpatient using all and ward.
 +1       ;F FHDFN=0:0 S FHDFN=$O(^FHPT("AW",W1,FHDFN)) Q:FHDFN<1  D
 +2        DO PATNAME^FHOMUTL
 +3        SET (RM,RMB)="***"
 +4        IF $GET(FHRMB)
               IF $DATA(^DG(405.4,FHRMB,0))
                   SET RMB=$PIECE(^DG(405.4,FHRMB,0),U,1)
 +5        IF SORT="A"
               SET RM=FHPTNM
               SET DL=0
 +6       IF '$TEST
               SET (RI,RE,DL)="***"
               SET RM=RMB
 +7        SET ^TMP($JOB,"D",DL_"~"_RM_"~"_$SELECT(SORT="R":FHDFN,1:RMB)_FHMEAL)=FHDFN_"^"_FHRGS_"^"_FHKD_"^"_W1
 +8        QUIT