FHORD13 ; HISC/REL/NCA/RVD - Reprint Diet Label ;2/26/96  11:57
 ;;5.5;DIETETICS;**1,5,8**;Jan 28, 2005;Build 28
 W @IOF,!!?21,"R E P R I N T   D I E T   L A B E L S"
F0 R !!,"Reprint by COMMUNICATION OFFICE, PATIENT, LOCATION or ALL? PATIENT// ",X:DTIME G:'$T!(X["^") KIL S:X="" X="P" D TR^FH
 I $P("COMMUNICATION OFFICE",X,1)'="",$P("PATIENT",X,1)'="",$P("LOCATION",X,1)'="",$P("ALL",X,1)'="" W *7,!!,"  Answer with C, L, P or A" G F0
 S FHPR=$E(X,1),ALL=0,(FHX1,FHX2)="" G P0:FHPR?1"P",D2:FHPR?1"C",P1:FHPR?1"A"
W0 K DIC S DIC("A")="Select LOCATION: ",DIC="^FH(119.6,",DIC(0)="AEQM" W ! D ^DIC K DIC G KIL:"^"[X!$D(DTOUT),W0:Y<1 S FHX1=-Y G P1
D2 K DIC S DIC("A")="Select COMMUNICATION OFFICE: ",DIC="^FH(119.73,",DIC(0)="AEMQ" W ! D ^DIC G KIL:"^"[X!$D(DTOUT),D2:Y<1 S FHX1=-Y G P1
P0 S FHALL=1 D ^FHOMDPA I '$G(FHDFN),FHX1'="" G P1
 Q:'FHDFN
 S ADM="*"
 I 'DFN,$G(FHDFN) G PPT
 I $D(^DPT(DFN,.1)) S WARD=$G(^DPT(DFN,.1)) D
 .I $G(^DPT("CN",WARD,DFN)) S ADM=$G(^DPT("CN",WARD,DFN))
PPT S FHX1=$G(FHX1)_FHDFN_"^",FHX2=$G(FHX2)_ADM_"^" I $L(FHX1)<231,$L(FHX2)<231 G P0
 G:FHX1="" KIL
P1 ;
 W ! K DIR,LABSTART S DIR(0)="NA^1:10",DIR("A")="If using laser label sheets, what row do you want to begin printing at? ",DIR("B")=1 D ^DIR
 Q:$D(DIRUT)  S LABSTART=Y
 W ! K IOP,%ZIS S %ZIS("A")="Select LABEL Printer: ",%ZIS="MQ" D ^%ZIS K %ZIS,IOP G:POP KIL
 I $D(IO("Q")) S FHPGM="Q1^FHORD13",FHLST="FHX1^FHX2^FHPR^LABSTART" D EN2^FH G KIL
 U IO D Q1 D ^%ZISC K %ZIS,IOP G KIL
Q1 ; Reprint the Diet Labels
 S LAB=$P($G(^FH(119.9,1,"D",IOS,0)),"^",2) S:'LAB LAB=1 S S2=LAB=2*5+36 D NOW^%DTC S NOW=%
 S COUNT=0,LINE=1
 S DTP=NOW D DTP^FH,^FHDEV G:FHX1>0 Q2
 S WRD=-FHX1 K ^TMP($J)
 F K1=0:0 S K1=$O(^FH(119.6,K1)) Q:K1<1  S X=^(K1,0) D F1
 S RM="" F  S RM=$O(^TMP($J,"DL",RM)) Q:RM=""  F DFN=0:0 S DFN=$O(^TMP($J,"DL",RM,DFN)) Q:DFN<1  S ADM=^(DFN) S FHZ115="P"_DFN D CHECK^FHOMDPA Q:FHDFN=""  D:ADM LST
 ;process outpatient
 D OUTP
 D PROUT
 I LAB>2 D DPLL^FHLABEL G KIL
 I LAB<3 F K7=1:1:18 W !
 G KIL
 ;
F1 I FHPR="C" S KK=$P(X,"^",8) I WRD,KK'=WRD Q
 I FHPR="L" S KK=$P(X,"^",1) I WRD,K1'=WRD Q
 S P0=$P(X,"^",4),P0=$S(P0<1:99,P0<10:"0"_P0,1:P0)
 F FHDFN=0:0 S FHDFN=$O(^FHPT("AW",K1,FHDFN)) Q:FHDFN<1  D
 .D PATNAME^FHOMUTL Q:DFN=""
 .S ADM=$G(^FHPT("AW",K1,FHDFN))
 .S RM=$G(^DPT(DFN,.101))
 .S:RM="" RM="***"
 .S RI=$G(^DPT(DFN,.108)) S RE=$S(RI:$O(^FH(119.6,"AR",+RI,K1,0)),1:"")
 .S R0=$S(RE:$P($G(^FH(119.6,K1,"R",+RE,0)),"^",2),1:"")
 .S R0=$S(R0<1:99,R0<10:"0"_R0,1:R0)
 .S ^TMP($J,"DL",P0_"~"_R0_"~"_RM,DFN)=ADM Q
 Q
 ;
Q2 F K7=1:1 S FHDFN=$P(FHX1,"^",K7) Q:FHDFN<1  D PATNAME^FHOMUTL S ADM=$P(FHX2,"^",K7) D:$G(ADM) LST I '$G(ADM) S FHDFNSAV(FHDFN)=FHDFN
 ;process outpatient
 D OUTP
 D PROUT
 I LAB>2 D DPLL^FHLABEL G KIL
Q3 I LAB<3 F K7=1:1:18 W !
 G KIL
 ;
LST ;
 Q:'$D(^FHPT(FHDFN,"A",ADM,0))  S X0=^(0)
 S FHORD=$P(X0,"^",2),X1=$P(X0,"^",5) Q:FHORD<1
 S W1=$P(X0,"^",8),W1=$P($G(^FH(119.6,+W1,0)),"^",1),R1=$G(^DPT(DFN,.101))
 Q:'$D(^DPT(DFN,0))  S Y0=^(0) D PID^FHDPA
 S W1=$E(W1,1,15),N1=$E($P(Y0,"^",1),1,22)
 S X=$G(^FHPT(FHDFN,"A",ADM,"DI",FHORD,0))
 S (Y,X1)="" G:X="" L1 S FHOR=$P(X,"^",2,6),FHLD=$P(X,"^",7)
 I FHLD'="" S FHDU=";"_$P(^DD(115.02,6,0),"^",3),%=$F(FHDU,";"_FHLD_":") G:%<1 L1 S Y=$P($E(FHDU,%,999),";",1) G L1
 F A1=1:1:5 S D3=$P(FHOR,"^",A1) I D3 S:Y'="" Y=Y_", " S Y=Y_$P(^FH(111,D3,0),"^",7)
 S IS=$P(X0,"^",10),X1=$P(X,"^",8) I IS S IS=^FH(119.4,IS,0),X1=X1_"-"_$P(IS,"^",2)_$P(IS,"^",3)
 ;
L1 S ALG="" D ALG^FHCLN
 I LAB>2 D LL Q
 W !,$E(N1,1,S2-5-$L(W1)),?(S2-3-$L(W1)),W1,!,BID W @FHIO("EON") W ?(S2-3\2),X1 W @FHIO("EOF") W ?(S2-3-$L(R1)),R1 W @FHIO("EON") I $L(Y)<S2 W:LAB=2 ! W !,$S(ALG="":"",1:"*ALG"),!,Y,!!
 E  S L=$S($L($P(Y,",",1,3))<S2:3,1:2) W !!,$P(Y,",",1,L) W:LAB=2 ! W !,$E($P(Y,",",L+1,5),2,99),!
 W @FHIO("EOF") W:LAB=2 ?(S2-20),DTP,!! Q
 ;
OUTP ;process outpatient dat
 S (R1,FHW1SAV,FHFHPSAV)=""
 I FHPR="L" S FHW1SAV=-FHX1
 I FHPR="C" S FHFHPSAV=-FHX1
 S FHD1=DT-.00001,FHD2=DT+.99999
 ;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 FHDIET=$P(FHKDAT,U,2),FHMEAL=$P(FHKDAT,U,4),FHSTAT=$P(FHKDAT,U,15)
 ...I FHSTAT="C" Q
 ...S FHDIET1=$P(FHKDAT,U,7)
 ...S FHDIET2=$P(FHKDAT,U,8)
 ...S FHDIET3=$P(FHKDAT,U,9)
 ...S FHDIET4=$P(FHKDAT,U,10)
 ...S FHDIET5=$P(FHKDAT,U,11)
 ...I FHPR="P",'$D(FHDFNSAV(FHDFN)) Q
 ...I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ...I $D(FHDFNSAV(FHDFN)),(FHDFN'=FHDFNSAV(FHDFN)) Q
 ...S FHLOC="",FHRGS="OP"
 ...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)
 ...S FHRMB=$P(FHKDAT,U,18)
 ...D OUTW
 ;next guest
 K FHDIET1,FHDIET2,FHDIET3,FHDIET4,FHDIET5
 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
 ..I FHPR="P",'$D(FHDFNSAV(FHDFN)) Q
 ..S FHKDAT=^FHPT(FHDFN,"GM",FHKD,0)
 ..I $P(FHKDAT,U,9)="C" Q
 ..S (W1,FHW1)=$P(FHKDAT,U,5)
 ..S FHDIET=$P(FHKDAT,U,6),FHMEAL=$P(FHKDAT,U,3)
 ..I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ..I $D(FHDFNSAV(FHDFN)),(FHDFN'=FHDFNSAV(FHDFN)) Q
 ..S FHLOC=""
 ..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)
 ..S FHRMB=$P(FHKDAT,U,11)
 ..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
 ..I FHPR="P",'$D(FHDFNSAV(FHDFN)) Q
 ..S FHKDAT=^FHPT(FHDFN,"SM",FHKD,0)
 ..S (W1,FHW1)=$P(FHKDAT,U,3)
 ..S FHDFN1=$P(^FHPT(FHDFN,0),U,1)
 ..S FHDIET=$P(FHKDAT,U,4),FHMEAL=$P(FHKDAT,U,9),FHSTAT=$P(FHKDAT,U,2)
 ..I (FHSTAT="C")!(FHSTAT="D") Q
 ..I $G(FHW1SAV),(FHW1'=FHW1SAV) Q
 ..I $D(FHDFNSAV(FHDFN)),(FHDFN'=FHDFNSAV(FHDFN)) Q
 ..S FHLOC=""
 ..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)
 ..S FHRMB=$P(FHKDAT,U,13)
 ..D OUTW
 Q
 ;
OUTW ;set all outpt data for printing
 D PATNAME^FHOMUTL
 S FHTC=""
 Q:'$D(^FH(119.6,FHW1,0))
 S P0=$P(^FH(119.6,FHW1,0),U,4)
 S P0=$S(P0<1:99,P0<10:"0"_P0,1:P0)
 S FHW1N=$P(^FH(119.6,FHW1,0),U,1)
 S FHTC5=$P(^FH(119.6,FHW1,0),U,5)
 S FHTC6=$P(^FH(119.6,FHW1,0),U,6)
 I $G(FHTC5),$D(^FH(119.72,FHTC5,0)) S FHTC=FHTC_$P(^FH(119.72,FHTC5,0),U,2)
 I $G(FHTC6),$D(^FH(119.72,FHTC6,0)) S FHTC=FHTC_$P(^FH(119.72,FHTC6,0),U,2)
 S:$G(FHDIET) FHDIET=$P(^FH(111,FHDIET,0),U,7)
 I $G(FHDIET1) S FHDIET1=$P(^FH(111,FHDIET1,0),U,7) D
 .I FHDIET="" S FHDIET=FHDIET_FHDIET1 Q
 .I FHDIET'="" S FHDIET=FHDIET_", "_FHDIET1
 I $G(FHDIET2) S FHDIET2=$P(^FH(111,FHDIET2,0),U,7) D
 .I FHDIET="" S FHDIET=FHDIET_FHDIET2 Q
 .I FHDIET'="" S FHDIET=FHDIET_", "_FHDIET2
 I $G(FHDIET3) S FHDIET3=$P(^FH(111,FHDIET3,0),U,7) D
 .I FHDIET="" S FHDIET=FHDIET_FHDIET3 Q
 .I FHDIET'="" S FHDIET=FHDIET_", "_FHDIET3
 I $G(FHDIET4) S FHDIET4=$P(^FH(111,FHDIET4,0),U,7) D
 .I FHDIET="" S FHDIET=FHDIET_FHDIET4 Q
 .I FHDIET'="" S FHDIET=FHDIET_", "_FHDIET4
 I $G(FHDIET5) S FHDIET5=$P(^FH(111,FHDIET5,0),U,7) D
 .I FHDIET="" S FHDIET=FHDIET_FHDIET5 Q
 .I FHDIET'="" S FHDIET=FHDIET_", "_FHDIET5
 S FHRM=""
 I $G(FHRMB),$D(^DG(405.4,FHRMB,0)) S FHRM=$P(^DG(405.4,FHRMB,0),U,1)
 S:FHRM'="" FHRM=$E(FHRM,1,12)
 S ^TMP($J,"OUT",P0_"~"_$E(FHW1N,1,20)_"~"_$E(FHPTNM,1,26),FHDFN)=FHPTNM_"^"_FHW1N_"^"_FHBID_"^"_FHDIET_"^"_FHTC_"^"_FHRM
 Q
 ;
PROUT ;print outptlabels
 S (X1,RM)=""
 F  S RM=$O(^TMP($J,"OUT",RM)) Q:RM=""  D
 .F FHDFN=0:0 S FHDFN=$O(^TMP($J,"OUT",RM,FHDFN)) Q:FHDFN'>0  D
 ..S FHOU=^TMP($J,"OUT",RM,FHDFN)
 ..S N1=$P(FHOU,U,1)
 ..S W1=$E($P(FHOU,U,2),1,12)
 ..S BID=$P(FHOU,U,3)
 ..S (Y,FHDIET)=$P(FHOU,U,4)
 ..S X1=$P(FHOU,U,5)
 ..S R1=$P(FHOU,U,6)
 ..D L1
 Q
 ;
KIL K ^TMP($J) G KILL^XUSCLEAN
 Q
LL D LAB^FHLABEL Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFHORD13   8107     printed  Sep 23, 2025@19:29:25                                                                                                                                                                                                     Page 2
FHORD13   ; HISC/REL/NCA/RVD - Reprint Diet Label ;2/26/96  11:57
 +1       ;;5.5;DIETETICS;**1,5,8**;Jan 28, 2005;Build 28
 +2        WRITE @IOF,!!?21,"R E P R I N T   D I E T   L A B E L S"
F0         READ !!,"Reprint by COMMUNICATION OFFICE, PATIENT, LOCATION or ALL? PATIENT// ",X:DTIME
           if '$TEST!(X["^")
               GOTO KIL
           if X=""
               SET X="P"
           DO TR^FH
 +1        IF $PIECE("COMMUNICATION OFFICE",X,1)'=""
               IF $PIECE("PATIENT",X,1)'=""
                   IF $PIECE("LOCATION",X,1)'=""
                       IF $PIECE("ALL",X,1)'=""
                           WRITE *7,!!,"  Answer with C, L, P or A"
                           GOTO F0
 +2        SET FHPR=$EXTRACT(X,1)
           SET ALL=0
           SET (FHX1,FHX2)=""
           if FHPR?1"P"
               GOTO P0
           if FHPR?1"C"
               GOTO D2
           if FHPR?1"A"
               GOTO P1
W0         KILL DIC
           SET DIC("A")="Select LOCATION: "
           SET DIC="^FH(119.6,"
           SET DIC(0)="AEQM"
           WRITE !
           DO ^DIC
           KILL DIC
           if "^"[X!$DATA(DTOUT)
               GOTO KIL
           if Y<1
               GOTO W0
           SET FHX1=-Y
           GOTO P1
D2         KILL DIC
           SET DIC("A")="Select COMMUNICATION OFFICE: "
           SET DIC="^FH(119.73,"
           SET DIC(0)="AEMQ"
           WRITE !
           DO ^DIC
           if "^"[X!$DATA(DTOUT)
               GOTO KIL
           if Y<1
               GOTO D2
           SET FHX1=-Y
           GOTO P1
P0         SET FHALL=1
           DO ^FHOMDPA
           IF '$GET(FHDFN)
               IF FHX1'=""
                   GOTO P1
 +1        if 'FHDFN
               QUIT 
 +2        SET ADM="*"
 +3        IF 'DFN
               IF $GET(FHDFN)
                   GOTO PPT
 +4        IF $DATA(^DPT(DFN,.1))
               SET WARD=$GET(^DPT(DFN,.1))
               Begin DoDot:1
 +5                IF $GET(^DPT("CN",WARD,DFN))
                       SET ADM=$GET(^DPT("CN",WARD,DFN))
               End DoDot:1
PPT        SET FHX1=$GET(FHX1)_FHDFN_"^"
           SET FHX2=$GET(FHX2)_ADM_"^"
           IF $LENGTH(FHX1)<231
               IF $LENGTH(FHX2)<231
                   GOTO P0
 +1        if FHX1=""
               GOTO KIL
P1        ;
 +1        WRITE !
           KILL DIR,LABSTART
           SET DIR(0)="NA^1:10"
           SET DIR("A")="If using laser label sheets, what row do you want to begin printing at? "
           SET DIR("B")=1
           DO ^DIR
 +2        if $DATA(DIRUT)
               QUIT 
           SET LABSTART=Y
 +3        WRITE !
           KILL IOP,%ZIS
           SET %ZIS("A")="Select LABEL Printer: "
           SET %ZIS="MQ"
           DO ^%ZIS
           KILL %ZIS,IOP
           if POP
               GOTO KIL
 +4        IF $DATA(IO("Q"))
               SET FHPGM="Q1^FHORD13"
               SET FHLST="FHX1^FHX2^FHPR^LABSTART"
               DO EN2^FH
               GOTO KIL
 +5        USE IO
           DO Q1
           DO ^%ZISC
           KILL %ZIS,IOP
           GOTO KIL
Q1        ; Reprint the Diet Labels
 +1        SET LAB=$PIECE($GET(^FH(119.9,1,"D",IOS,0)),"^",2)
           if 'LAB
               SET LAB=1
           SET S2=LAB=2*5+36
           DO NOW^%DTC
           SET NOW=%
 +2        SET COUNT=0
           SET LINE=1
 +3        SET DTP=NOW
           DO DTP^FH
           DO ^FHDEV
           if FHX1>0
               GOTO Q2
 +4        SET WRD=-FHX1
           KILL ^TMP($JOB)
 +5        FOR K1=0:0
               SET K1=$ORDER(^FH(119.6,K1))
               if K1<1
                   QUIT 
               SET X=^(K1,0)
               DO F1
 +6        SET RM=""
           FOR 
               SET RM=$ORDER(^TMP($JOB,"DL",RM))
               if RM=""
                   QUIT 
               FOR DFN=0:0
                   SET DFN=$ORDER(^TMP($JOB,"DL",RM,DFN))
                   if DFN<1
                       QUIT 
                   SET ADM=^(DFN)
                   SET FHZ115="P"_DFN
                   DO CHECK^FHOMDPA
                   if FHDFN=""
                       QUIT 
                   if ADM
                       DO LST
 +7       ;process outpatient
 +8        DO OUTP
 +9        DO PROUT
 +10       IF LAB>2
               DO DPLL^FHLABEL
               GOTO KIL
 +11       IF LAB<3
               FOR K7=1:1:18
                   WRITE !
 +12       GOTO KIL
 +13      ;
F1         IF FHPR="C"
               SET KK=$PIECE(X,"^",8)
               IF WRD
                   IF KK'=WRD
                       QUIT 
 +1        IF FHPR="L"
               SET KK=$PIECE(X,"^",1)
               IF WRD
                   IF K1'=WRD
                       QUIT 
 +2        SET P0=$PIECE(X,"^",4)
           SET P0=$SELECT(P0<1:99,P0<10:"0"_P0,1:P0)
 +3        FOR FHDFN=0:0
               SET FHDFN=$ORDER(^FHPT("AW",K1,FHDFN))
               if FHDFN<1
                   QUIT 
               Begin DoDot:1
 +4                DO PATNAME^FHOMUTL
                   if DFN=""
                       QUIT 
 +5                SET ADM=$GET(^FHPT("AW",K1,FHDFN))
 +6                SET RM=$GET(^DPT(DFN,.101))
 +7                if RM=""
                       SET RM="***"
 +8                SET RI=$GET(^DPT(DFN,.108))
                   SET RE=$SELECT(RI:$ORDER(^FH(119.6,"AR",+RI,K1,0)),1:"")
 +9                SET R0=$SELECT(RE:$PIECE($GET(^FH(119.6,K1,"R",+RE,0)),"^",2),1:"")
 +10               SET R0=$SELECT(R0<1:99,R0<10:"0"_R0,1:R0)
 +11               SET ^TMP($JOB,"DL",P0_"~"_R0_"~"_RM,DFN)=ADM
                   QUIT 
               End DoDot:1
 +12       QUIT 
 +13      ;
Q2         FOR K7=1:1
               SET FHDFN=$PIECE(FHX1,"^",K7)
               if FHDFN<1
                   QUIT 
               DO PATNAME^FHOMUTL
               SET ADM=$PIECE(FHX2,"^",K7)
               if $GET(ADM)
                   DO LST
               IF '$GET(ADM)
                   SET FHDFNSAV(FHDFN)=FHDFN
 +1       ;process outpatient
 +2        DO OUTP
 +3        DO PROUT
 +4        IF LAB>2
               DO DPLL^FHLABEL
               GOTO KIL
Q3         IF LAB<3
               FOR K7=1:1:18
                   WRITE !
 +1        GOTO KIL
 +2       ;
LST       ;
 +1        if '$DATA(^FHPT(FHDFN,"A",ADM,0))
               QUIT 
           SET X0=^(0)
 +2        SET FHORD=$PIECE(X0,"^",2)
           SET X1=$PIECE(X0,"^",5)
           if FHORD<1
               QUIT 
 +3        SET W1=$PIECE(X0,"^",8)
           SET W1=$PIECE($GET(^FH(119.6,+W1,0)),"^",1)
           SET R1=$GET(^DPT(DFN,.101))
 +4        if '$DATA(^DPT(DFN,0))
               QUIT 
           SET Y0=^(0)
           DO PID^FHDPA
 +5        SET W1=$EXTRACT(W1,1,15)
           SET N1=$EXTRACT($PIECE(Y0,"^",1),1,22)
 +6        SET X=$GET(^FHPT(FHDFN,"A",ADM,"DI",FHORD,0))
 +7        SET (Y,X1)=""
           if X=""
               GOTO L1
           SET FHOR=$PIECE(X,"^",2,6)
           SET FHLD=$PIECE(X,"^",7)
 +8        IF FHLD'=""
               SET FHDU=";"_$PIECE(^DD(115.02,6,0),"^",3)
               SET %=$FIND(FHDU,";"_FHLD_":")
               if %<1
                   GOTO L1
               SET Y=$PIECE($EXTRACT(FHDU,%,999),";",1)
               GOTO L1
 +9        FOR A1=1:1:5
               SET D3=$PIECE(FHOR,"^",A1)
               IF D3
                   if Y'=""
                       SET Y=Y_", "
                   SET Y=Y_$PIECE(^FH(111,D3,0),"^",7)
 +10       SET IS=$PIECE(X0,"^",10)
           SET X1=$PIECE(X,"^",8)
           IF IS
               SET IS=^FH(119.4,IS,0)
               SET X1=X1_"-"_$PIECE(IS,"^",2)_$PIECE(IS,"^",3)
 +11      ;
L1         SET ALG=""
           DO ALG^FHCLN
 +1        IF LAB>2
               DO LL
               QUIT 
 +2        WRITE !,$EXTRACT(N1,1,S2-5-$LENGTH(W1)),?(S2-3-$LENGTH(W1)),W1,!,BID
           WRITE @FHIO("EON")
           WRITE ?(S2-3\2),X1
           WRITE @FHIO("EOF")
           WRITE ?(S2-3-$LENGTH(R1)),R1
           WRITE @FHIO("EON")
           IF $LENGTH(Y)<S2
               if LAB=2
                   WRITE !
               WRITE !,$SELECT(ALG="":"",1:"*ALG"),!,Y,!!
 +3       IF '$TEST
               SET L=$SELECT($LENGTH($PIECE(Y,",",1,3))<S2:3,1:2)
               WRITE !!,$PIECE(Y,",",1,L)
               if LAB=2
                   WRITE !
               WRITE !,$EXTRACT($PIECE(Y,",",L+1,5),2,99),!
 +4        WRITE @FHIO("EOF")
           if LAB=2
               WRITE ?(S2-20),DTP,!!
           QUIT 
 +5       ;
OUTP      ;process outpatient dat
 +1        SET (R1,FHW1SAV,FHFHPSAV)=""
 +2        IF FHPR="L"
               SET FHW1SAV=-FHX1
 +3        IF FHPR="C"
               SET FHFHPSAV=-FHX1
 +4        SET FHD1=DT-.00001
           SET FHD2=DT+.99999
 +5       ;next recurring
 +6        FOR FHK1=FHD1:0
               SET FHK1=$ORDER(^FHPT("RM",FHK1))
               if (FHK1'>0)!(FHK1>FHD2)
                   QUIT 
               Begin DoDot:1
 +7                FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("RM",FHK1,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +8                        FOR FHKD=0:0
                               SET FHKD=$ORDER(^FHPT("RM",FHK1,FHDFN,FHKD))
                               if FHKD'>0
                                   QUIT 
                               Begin DoDot:3
 +9                                SET FHKDAT=^FHPT(FHDFN,"OP",FHKD,0)
 +10                               SET (W1,FHW1)=$PIECE(FHKDAT,U,3)
 +11                               SET FHDIET=$PIECE(FHKDAT,U,2)
                                   SET FHMEAL=$PIECE(FHKDAT,U,4)
                                   SET FHSTAT=$PIECE(FHKDAT,U,15)
 +12                               IF FHSTAT="C"
                                       QUIT 
 +13                               SET FHDIET1=$PIECE(FHKDAT,U,7)
 +14                               SET FHDIET2=$PIECE(FHKDAT,U,8)
 +15                               SET FHDIET3=$PIECE(FHKDAT,U,9)
 +16                               SET FHDIET4=$PIECE(FHKDAT,U,10)
 +17                               SET FHDIET5=$PIECE(FHKDAT,U,11)
 +18                               IF FHPR="P"
                                       IF '$DATA(FHDFNSAV(FHDFN))
                                           QUIT 
 +19                               IF $GET(FHW1SAV)
                                       IF (FHW1'=FHW1SAV)
                                           QUIT 
 +20                               IF $DATA(FHDFNSAV(FHDFN))
                                       IF (FHDFN'=FHDFNSAV(FHDFN))
                                           QUIT 
 +21                               SET FHLOC=""
                                   SET FHRGS="OP"
 +22                               if $DATA(^FH(119.6,FHW1,0))
                                       SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +23                               IF $GET(FHFHPSAV)
                                       IF $GET(FHLOC)
                                           IF (FHFHPSAV'=FHLOC)
                                               QUIT 
 +24                               SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +25                               SET FHRMB=$PIECE(FHKDAT,U,18)
 +26                               DO OUTW
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +27      ;next guest
 +28       KILL FHDIET1,FHDIET2,FHDIET3,FHDIET4,FHDIET5
 +29       FOR FHKD=FHD1:0
               SET FHKD=$ORDER(^FHPT("GM",FHKD))
               if (FHKD'>0)!(FHKD>FHD2)
                   QUIT 
               Begin DoDot:1
 +30               FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("GM",FHKD,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +31                       IF FHPR="P"
                               IF '$DATA(FHDFNSAV(FHDFN))
                                   QUIT 
 +32                       SET FHKDAT=^FHPT(FHDFN,"GM",FHKD,0)
 +33                       IF $PIECE(FHKDAT,U,9)="C"
                               QUIT 
 +34                       SET (W1,FHW1)=$PIECE(FHKDAT,U,5)
 +35                       SET FHDIET=$PIECE(FHKDAT,U,6)
                           SET FHMEAL=$PIECE(FHKDAT,U,3)
 +36                       IF $GET(FHW1SAV)
                               IF (FHW1'=FHW1SAV)
                                   QUIT 
 +37                       IF $DATA(FHDFNSAV(FHDFN))
                               IF (FHDFN'=FHDFNSAV(FHDFN))
                                   QUIT 
 +38                       SET FHLOC=""
 +39                       if $DATA(^FH(119.6,FHW1,0))
                               SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +40                       IF $GET(FHFHPSAV)
                               IF $GET(FHLOC)
                                   IF (FHFHPSAV'=FHLOC)
                                       QUIT 
 +41                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +42                       SET FHRMB=$PIECE(FHKDAT,U,11)
 +43                       DO OUTW
                       End DoDot:2
               End DoDot:1
 +44      ;next SPECIAL
 +45       FOR FHKD=FHD1:0
               SET FHKD=$ORDER(^FHPT("SM",FHKD))
               if (FHKD'>0)!(FHKD>FHD2)
                   QUIT 
               Begin DoDot:1
 +46               FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^FHPT("SM",FHKD,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +47                       IF FHPR="P"
                               IF '$DATA(FHDFNSAV(FHDFN))
                                   QUIT 
 +48                       SET FHKDAT=^FHPT(FHDFN,"SM",FHKD,0)
 +49                       SET (W1,FHW1)=$PIECE(FHKDAT,U,3)
 +50                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +51                       SET FHDIET=$PIECE(FHKDAT,U,4)
                           SET FHMEAL=$PIECE(FHKDAT,U,9)
                           SET FHSTAT=$PIECE(FHKDAT,U,2)
 +52                       IF (FHSTAT="C")!(FHSTAT="D")
                               QUIT 
 +53                       IF $GET(FHW1SAV)
                               IF (FHW1'=FHW1SAV)
                                   QUIT 
 +54                       IF $DATA(FHDFNSAV(FHDFN))
                               IF (FHDFN'=FHDFNSAV(FHDFN))
                                   QUIT 
 +55                       SET FHLOC=""
 +56                       if $DATA(^FH(119.6,FHW1,0))
                               SET FHLOC=$PIECE(^FH(119.6,FHW1,0),U,8)
 +57                       IF $GET(FHFHPSAV)
                               IF $GET(FHLOC)
                                   IF (FHFHPSAV'=FHLOC)
                                       QUIT 
 +58                       SET FHDFN1=$PIECE(^FHPT(FHDFN,0),U,1)
 +59                       SET FHRMB=$PIECE(FHKDAT,U,13)
 +60                       DO OUTW
                       End DoDot:2
               End DoDot:1
 +61       QUIT 
 +62      ;
OUTW      ;set all outpt data for printing
 +1        DO PATNAME^FHOMUTL
 +2        SET FHTC=""
 +3        if '$DATA(^FH(119.6,FHW1,0))
               QUIT 
 +4        SET P0=$PIECE(^FH(119.6,FHW1,0),U,4)
 +5        SET P0=$SELECT(P0<1:99,P0<10:"0"_P0,1:P0)
 +6        SET FHW1N=$PIECE(^FH(119.6,FHW1,0),U,1)
 +7        SET FHTC5=$PIECE(^FH(119.6,FHW1,0),U,5)
 +8        SET FHTC6=$PIECE(^FH(119.6,FHW1,0),U,6)
 +9        IF $GET(FHTC5)
               IF $DATA(^FH(119.72,FHTC5,0))
                   SET FHTC=FHTC_$PIECE(^FH(119.72,FHTC5,0),U,2)
 +10       IF $GET(FHTC6)
               IF $DATA(^FH(119.72,FHTC6,0))
                   SET FHTC=FHTC_$PIECE(^FH(119.72,FHTC6,0),U,2)
 +11       if $GET(FHDIET)
               SET FHDIET=$PIECE(^FH(111,FHDIET,0),U,7)
 +12       IF $GET(FHDIET1)
               SET FHDIET1=$PIECE(^FH(111,FHDIET1,0),U,7)
               Begin DoDot:1
 +13               IF FHDIET=""
                       SET FHDIET=FHDIET_FHDIET1
                       QUIT 
 +14               IF FHDIET'=""
                       SET FHDIET=FHDIET_", "_FHDIET1
               End DoDot:1
 +15       IF $GET(FHDIET2)
               SET FHDIET2=$PIECE(^FH(111,FHDIET2,0),U,7)
               Begin DoDot:1
 +16               IF FHDIET=""
                       SET FHDIET=FHDIET_FHDIET2
                       QUIT 
 +17               IF FHDIET'=""
                       SET FHDIET=FHDIET_", "_FHDIET2
               End DoDot:1
 +18       IF $GET(FHDIET3)
               SET FHDIET3=$PIECE(^FH(111,FHDIET3,0),U,7)
               Begin DoDot:1
 +19               IF FHDIET=""
                       SET FHDIET=FHDIET_FHDIET3
                       QUIT 
 +20               IF FHDIET'=""
                       SET FHDIET=FHDIET_", "_FHDIET3
               End DoDot:1
 +21       IF $GET(FHDIET4)
               SET FHDIET4=$PIECE(^FH(111,FHDIET4,0),U,7)
               Begin DoDot:1
 +22               IF FHDIET=""
                       SET FHDIET=FHDIET_FHDIET4
                       QUIT 
 +23               IF FHDIET'=""
                       SET FHDIET=FHDIET_", "_FHDIET4
               End DoDot:1
 +24       IF $GET(FHDIET5)
               SET FHDIET5=$PIECE(^FH(111,FHDIET5,0),U,7)
               Begin DoDot:1
 +25               IF FHDIET=""
                       SET FHDIET=FHDIET_FHDIET5
                       QUIT 
 +26               IF FHDIET'=""
                       SET FHDIET=FHDIET_", "_FHDIET5
               End DoDot:1
 +27       SET FHRM=""
 +28       IF $GET(FHRMB)
               IF $DATA(^DG(405.4,FHRMB,0))
                   SET FHRM=$PIECE(^DG(405.4,FHRMB,0),U,1)
 +29       if FHRM'=""
               SET FHRM=$EXTRACT(FHRM,1,12)
 +30       SET ^TMP($JOB,"OUT",P0_"~"_$EXTRACT(FHW1N,1,20)_"~"_$EXTRACT(FHPTNM,1,26),FHDFN)=FHPTNM_"^"_FHW1N_"^"_FHBID_"^"_FHDIET_"^"_FHTC_"^"_FHRM
 +31       QUIT 
 +32      ;
PROUT     ;print outptlabels
 +1        SET (X1,RM)=""
 +2        FOR 
               SET RM=$ORDER(^TMP($JOB,"OUT",RM))
               if RM=""
                   QUIT 
               Begin DoDot:1
 +3                FOR FHDFN=0:0
                       SET FHDFN=$ORDER(^TMP($JOB,"OUT",RM,FHDFN))
                       if FHDFN'>0
                           QUIT 
                       Begin DoDot:2
 +4                        SET FHOU=^TMP($JOB,"OUT",RM,FHDFN)
 +5                        SET N1=$PIECE(FHOU,U,1)
 +6                        SET W1=$EXTRACT($PIECE(FHOU,U,2),1,12)
 +7                        SET BID=$PIECE(FHOU,U,3)
 +8                        SET (Y,FHDIET)=$PIECE(FHOU,U,4)
 +9                        SET X1=$PIECE(FHOU,U,5)
 +10                       SET R1=$PIECE(FHOU,U,6)
 +11                       DO L1
                       End DoDot:2
               End DoDot:1
 +12       QUIT 
 +13      ;
KIL        KILL ^TMP($JOB)
           GOTO KILL^XUSCLEAN
 +1        QUIT 
LL         DO LAB^FHLABEL
           QUIT