FHOMUTL ;Hines OIFO/RTK OUTPATIENT MEALS UTILITIES  ;2/04/03  15:15
 ;;5.5;DIETETICS;**1,2,5**;Jan 28, 2005;Build 53
 ;
DIV ;ask for Communication office if Multi-division.
 N FHSCNT,FH
 K FHSITE,FHSITENM
 S FHSCNT=0 F FH=0:0 S FH=$O(^FH(119.73,FH)) Q:FH'>0  S FHSCNT=FHSCNT+1,FHSITE=FH,FHSITENM=$P($G(^FH(119.73,FH,0)),U,1)
 I (FHSCNT=1),($P($G(^FH(119.9,1,0)),U,20)'="Y") Q
D2 I FHSCNT>1 K FHSITE,FHSITENM,X R !!,"Select COMMUNICATION OFFICE (or ALL): ALL// ",X:DTIME S:X="" X="ALL" Q:'$T!("^"[X)  D TR^FH I X="ALL" S FHSITE=0
 I X'="ALL" K DIC S DIC="^FH(119.73,",DIC(0)="EMQ" D ^DIC G:Y<1 D2 S FHSITE=+Y,FHSITENM=$P(Y,U,2)
 Q
 ;
STDATE ;Prompt for start date (if FHPSDT="N" do not allow past dates)
 S STDT="" D NOW^%DTC S Y=X D DD^%DT S FHDTDF=Y
 K DIR S DIR("A")="Select Start Date: ",DIR("B")=FHDTDF
 S DIR(0)="DAO" I $G(FHPSDT)="N" S DIR(0)="DAO^FHDTDF"
 D ^DIR Q:$D(DIRUT)  S STDT=Y S Y=STDT D DD^%DT W "  ",Y
 Q
ENDATE ;Prompt for end date
 S ENDT="" D NOW^%DTC S Y=X D DD^%DT S FHDTDF=Y K DIR
 S DIR("A")="Select End Date: ",DIR("B")=FHDTDF,DIR(0)="DAO^"_STDT D ^DIR
 Q:$D(DIRUT)  S ENDT=Y S Y=ENDT D DD^%DT W "  ",Y
 Q
OUTLOC ;Prompt for outpatient location - screen for ONLY Outpatient Locations
 S FHLOC="",FHOUT="O"
 K DIC S DIC="^FH(119.6,",DIC(0)="AEQZ"
 S DIC("A")="Select Outpatient Ordering Location: "
 S DIC("S")="I $P(^(0),U,3)=FHOUT" D ^DIC
 Q:$D(DUOUT)  I Y=-1 Q
 S FHLOC=+Y,FHCOMM=$P($G(^FH(119.6,FHLOC,0)),U,8)
 I '$O(^FH(119.6,FHLOC,"L",0)) S FHLOC="",FHCOMM="" W !!,"The selected location does not have an Associated Hospital Location.  To set",!,"the Associated Hospital Location use option ENTER/EDIT NUTRITION LOCATIONS."
 Q
 ;
RMBED ;Prompt for outpatient room-bed - must be set up for Outpatient Location
 S (FHRMBD,FHRMBSL)=""
 I $G(FHLOC)="" W !!,"No OUTPATIENT LOCATION selected" Q
 I '$D(^FH(119.6,FHLOC,"R")) Q
 F FHRMBI=0:0 S FHRMBI=$O(^FH(119.6,FHLOC,"R",FHRMBI)) Q:FHRMBI'>0  D
 .S FHRMBPT=$P($G(^FH(119.6,FHLOC,"R",FHRMBI,0)),U),FHRMBSL(FHRMBPT)=1
 K DIC S DIC="^DG(405.4,",DIC(0)="AEQZ"
 S DIC("A")="Select Outpatient Room-Bed: "
 S DIC("S")="I $D(FHRMBSL(+Y))" D ^DIC
 Q:$D(DUOUT)  I Y=-1 Q
 S FHRMBD=+Y
 Q
GTFHDFN ;Get FHDFN, given DFN
 K DIR S DIR(0)="NAO",DIR("B")="ENTER DFN" D ^DIR Q:$D(DIRUT)  S ZZDFN=Y
 S FHZ115="P"_ZZDFN,FHDFN=$O(^FHPT("B",FHZ115,""))
 I '$D(^DPT(ZZDFN)) W !!,"DFN '",ZZDFN,"' NOT FOUND IN FILE 2",! Q
 I FHDFN="" W !!,"NO CORRESPONDING FHDFN"
 W !!," NAME: ",$P($G(^DPT(ZZDFN,0)),U,1)
 W !?2,"DFN: ",ZZDFN,!,"FHDFN: ",FHDFN,!
 Q
GETOPT ;Select outpatient for recurring meals
 S FHFIND=1 D ^FHOMDPA I FHDFN="" S FHFIND=0 Q
 I '$D(^FHPT(FHDFN,0)) S FHFIND=0 Q  ;W !!,"UNKNOWN SELECTION !"
 I $O(^FHPT(FHDFN,"OP",0))="" W !!,"NO RECURRING MEALS FOR THIS PERSON" S FHFIND=0 Q
 W ! D STDATE I STDT="" S FHFIND=0 Q
 Q
PATNAME ;Get name and demographics of patient/new person
 ;input variable: FHDFN
 S (FHDOB,FHBID,FHSEX,DFN)="" D GETZN
 I FILE="P" S FHPTNM=$P($G(^DPT(IEN,0)),U,1)
 I FILE="N" S FHPTNM=$P($G(^VA(200,IEN,0)),U,1)
 ;Get SSN,Age,DOB,Sex of patient/new person
 I FILE="P" D
 .S DFN=IEN
 .D PID^FHDPA S FHSSN=PID
 .S FHSEX=$P($G(^DPT(DFN,0)),U,2),FHDOB=$P($G(^DPT(DFN,0)),U,3)
 .S FHBID=BID
 I FILE="N" D
 .S IEN200=IEN,FHSSN=$P($G(^VA(200,IEN,1)),U,9)
 .S FHBID=$E(FHSSN,6,$L(FHSSN))
 .S FHSEX=$P($G(^VA(200,IEN,1)),U,2),FHDOB=$P($G(^VA(200,IEN,1)),U,3)
 S FHAGE="" D NOW^%DTC
 I FHDOB'="" S FHAGE=$E(%,1,3)-$E(FHDOB,1,3)-($E(%,4,7)<$E(FHDOB,4,7))
 Q
GETZN ;Get first piece of zero node in 115
 S FHPCZN=$P($G(^FHPT(FHDFN,0)),U,1),FILE=$E(FHPCZN,1)
 S IEN=$E(FHPCZN,2,99)
 Q
DIETVER ;Verify that diet selected is from the allowable diets in 119.9
 D DIETLST I $D(FHDIETS(FHDIET)) Q
 S FHDIET="" W *7," ==> NOT ALLOWED",! D DIETMSG Q
DIETHLP ;Display allowable diets from 119.9
 D DIETLST,DIETMSG Q
DIETLST ;Build list
 K FHDIETS,SPD S FHSPDTS="",SPD=$P($G(^FH(119.9,1,0)),U,2,6)_"^"_$P($G(^FH(119.9,1,1)),U,1,10)
 S FHDEF=$P($G(^FH(119.9,1,0)),U,2)
 F A=1:1:15 S AB=$P(SPD,U,A) D
 .I AB="" Q
 .S FHDIETS(AB)=AB
 .S FHSPDTS=FHSPDTS_$P($G(^FH(111,AB,0)),U,1)_"^"
 Q
DIETMSG ;Display message
 W !?3,"You must select from the diets set up in the Site Parameters:"
 S AB="" F  S AB=$O(FHDIETS(AB)) Q:AB'>0  W !?3,$P($G(^FH(111,AB,0)),U)
 W ! Q
 Q
EXMSG ;Display message stating meal NOT ordered
 D TYPE
 W !!?3,FHMSGML," NOT ordered!",! H 2
 Q
OKMSG ;Display message stating meal ordered successfully
 D TYPE
 D PATNAME W !!?3,FHMSGML," ordered for ",FHPTNM,"...",! H 2
 Q
TYPE ;
 S FHMSGML=$S(FHMSG1="G":"Guest meal",FHMSG1="S":"Special meal",FHMSG1="R":"Recurring meal",FHMSG1="E":"Early/Late tray",FHMSG1="T":"Tubefeeding",1:"Additional order")
 Q
UPXMSG ;
 W !!?3,"Recurring meal NOT updated! ",! H 2
 Q
UPDMSG ;
 D PATNAME W !!?3,"Recurring meal updated for ",FHPTNM,"...",! H 2
 Q
SMSTAT ;Status of last special meal request
 S FHSMNUM=$O(^FHPT(FHDFN,"SM","B",""),-1) I FHSMNUM="" S FHSTAT="" Q
 I $E(FHSMNUM,1,7)'=DT S FHSTAT="" Q
 S FHSTAT=$P($G(^FHPT(FHDFN,"SM",FHSMNUM,0)),U,2)
 Q
RANGE ;Check for validity of range of numbers entered
 S FHCLST="",FLG="",X=FHNUM D TR^FH S FHNUM=X
 I FHNUM="A"!(FHNUM?1"A"1.2"L") S FHNUM="1-"_NUM
 F K=1:1 S K1=$P(FHNUM,",",K) Q:K1=""!(FLG="QUIT")  D
 .S K2=$S(K1["-":$P(K1,"-",2),1:+K1),K1=+K1 D CK I FLG="QUIT" Q
 .F K3=K1:1:K2 S FHCLST=FHCLST_K3_","
 Q
CK I K1<1!(K1>NUM)!(K1'?1N.N) D C1 Q
 I K2<1!(K2>NUM)!(K2'?1N.N) D C1 Q
 Q:K2'<K1
C1 W !,"  Enter numbers or range or ALL (E.G.,  1,3,4 or 3-5 or 1,3-5)" S FLG="QUIT",FHCLST="" Q
 Q
MSHOM ;Code MSG for outpatient orders
 D SITE^FH
 S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM"
 S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1)
 S FHOLOC=$O(^FH(119.6,FHLOC,"L",0)) I FHOLOC="" Q  ;RESULTS IN NO BKDOOR
 S FHOLOC=$G(^FH(119.6,FHLOC,"L",FHOLOC,0))
 S FHOLOCNM=$P($G(^SC(FHOLOC,0)),U,1)
 S MSG(3)="PV1||O|"_FHOLOC_"^"_FHOLOCNM_"||||||||||||||||"
 Q
MSHCA ;Code Cancel/Discontinue for outpatient orders
 D NOW^%DTC S FHNOW=% K MSG S ACT="OC" D SITE^FH
 I $G(FHCATXT)="" S FHCATXT="Dietetics Canceled order."
 S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM"
 S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1)
 S DATE=$$FMTHL7^XLFDT(FHNOW)
 S MSG(3)="ORC|"_ACT_"|"_FHORN_"^OR|"_FILL_"^FH|||||||||"_DUZ_"|||"_DATE_"|"_FHCATXT
 Q
MSHSS ;Code MSG for outpatient send status messages
 D SITE^FH
 S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORR"
 S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1)
 S MSG(3)="ORC|SR|"_FHORN_"^OR|"_FILL_"||"_FHSTTS
 Q
CONVC ;Convert Amount/Unit in file 118.2, from "C" to "ML".
 F FHII=0:0 S FHII=$O(^FH(118.2,FHII)) Q:FHII'>0  D
 .S FHAU=$P(^FH(118.2,FHII,0),U,3)
 .I FHAU["C" S FHAF=$P(FHAU,"C",1),FHAS=$P(FHAU,"C",2) D
 ..S $P(^FH(118.2,FHII,0),U,3)=FHAF_"ML"_FHAS
 Q
MONUM ;Prompt for number of monitors to display
 W ! K DIR S FHNUM="",DIR("?")="Select ALL to view all monitors, or select a specific number.  For example, enter 20 to display the 20 most recent monitors."
 S DIR(0)="F",DIR("A")="How many monitors would you like to display?"
 S DIR("B")="ALL" D ^DIR
 I $D(DIRUT) S FHNUM="" Q
 S FHNUM=Y I FHNUM'="A",FHNUM'="ALL",FHNUM'?1.5N D MONUM Q
 I FHNUM="A"!(FHNUM="ALL") S FHNUM=99999
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFHOMUTL   7283     printed  Sep 23, 2025@19:29:12                                                                                                                                                                                                     Page 2
FHOMUTL   ;Hines OIFO/RTK OUTPATIENT MEALS UTILITIES  ;2/04/03  15:15
 +1       ;;5.5;DIETETICS;**1,2,5**;Jan 28, 2005;Build 53
 +2       ;
DIV       ;ask for Communication office if Multi-division.
 +1        NEW FHSCNT,FH
 +2        KILL FHSITE,FHSITENM
 +3        SET FHSCNT=0
           FOR FH=0:0
               SET FH=$ORDER(^FH(119.73,FH))
               if FH'>0
                   QUIT 
               SET FHSCNT=FHSCNT+1
               SET FHSITE=FH
               SET FHSITENM=$PIECE($GET(^FH(119.73,FH,0)),U,1)
 +4        IF (FHSCNT=1)
               IF ($PIECE($GET(^FH(119.9,1,0)),U,20)'="Y")
                   QUIT 
D2         IF FHSCNT>1
               KILL FHSITE,FHSITENM,X
               READ !!,"Select COMMUNICATION OFFICE (or ALL): ALL// ",X:DTIME
               if X=""
                   SET X="ALL"
               if '$TEST!("^"[X)
                   QUIT 
               DO TR^FH
               IF X="ALL"
                   SET FHSITE=0
 +1        IF X'="ALL"
               KILL DIC
               SET DIC="^FH(119.73,"
               SET DIC(0)="EMQ"
               DO ^DIC
               if Y<1
                   GOTO D2
               SET FHSITE=+Y
               SET FHSITENM=$PIECE(Y,U,2)
 +2        QUIT 
 +3       ;
STDATE    ;Prompt for start date (if FHPSDT="N" do not allow past dates)
 +1        SET STDT=""
           DO NOW^%DTC
           SET Y=X
           DO DD^%DT
           SET FHDTDF=Y
 +2        KILL DIR
           SET DIR("A")="Select Start Date: "
           SET DIR("B")=FHDTDF
 +3        SET DIR(0)="DAO"
           IF $GET(FHPSDT)="N"
               SET DIR(0)="DAO^FHDTDF"
 +4        DO ^DIR
           if $DATA(DIRUT)
               QUIT 
           SET STDT=Y
           SET Y=STDT
           DO DD^%DT
           WRITE "  ",Y
 +5        QUIT 
ENDATE    ;Prompt for end date
 +1        SET ENDT=""
           DO NOW^%DTC
           SET Y=X
           DO DD^%DT
           SET FHDTDF=Y
           KILL DIR
 +2        SET DIR("A")="Select End Date: "
           SET DIR("B")=FHDTDF
           SET DIR(0)="DAO^"_STDT
           DO ^DIR
 +3        if $DATA(DIRUT)
               QUIT 
           SET ENDT=Y
           SET Y=ENDT
           DO DD^%DT
           WRITE "  ",Y
 +4        QUIT 
OUTLOC    ;Prompt for outpatient location - screen for ONLY Outpatient Locations
 +1        SET FHLOC=""
           SET FHOUT="O"
 +2        KILL DIC
           SET DIC="^FH(119.6,"
           SET DIC(0)="AEQZ"
 +3        SET DIC("A")="Select Outpatient Ordering Location: "
 +4        SET DIC("S")="I $P(^(0),U,3)=FHOUT"
           DO ^DIC
 +5        if $DATA(DUOUT)
               QUIT 
           IF Y=-1
               QUIT 
 +6        SET FHLOC=+Y
           SET FHCOMM=$PIECE($GET(^FH(119.6,FHLOC,0)),U,8)
 +7        IF '$ORDER(^FH(119.6,FHLOC,"L",0))
               SET FHLOC=""
               SET FHCOMM=""
               WRITE !!,"The selected location does not have an Associated Hospital Location.  To set",!,"the Associated Hospital Location use option ENTER/EDIT NUTRITION LOCATIONS."
 +8        QUIT 
 +9       ;
RMBED     ;Prompt for outpatient room-bed - must be set up for Outpatient Location
 +1        SET (FHRMBD,FHRMBSL)=""
 +2        IF $GET(FHLOC)=""
               WRITE !!,"No OUTPATIENT LOCATION selected"
               QUIT 
 +3        IF '$DATA(^FH(119.6,FHLOC,"R"))
               QUIT 
 +4        FOR FHRMBI=0:0
               SET FHRMBI=$ORDER(^FH(119.6,FHLOC,"R",FHRMBI))
               if FHRMBI'>0
                   QUIT 
               Begin DoDot:1
 +5                SET FHRMBPT=$PIECE($GET(^FH(119.6,FHLOC,"R",FHRMBI,0)),U)
                   SET FHRMBSL(FHRMBPT)=1
               End DoDot:1
 +6        KILL DIC
           SET DIC="^DG(405.4,"
           SET DIC(0)="AEQZ"
 +7        SET DIC("A")="Select Outpatient Room-Bed: "
 +8        SET DIC("S")="I $D(FHRMBSL(+Y))"
           DO ^DIC
 +9        if $DATA(DUOUT)
               QUIT 
           IF Y=-1
               QUIT 
 +10       SET FHRMBD=+Y
 +11       QUIT 
GTFHDFN   ;Get FHDFN, given DFN
 +1        KILL DIR
           SET DIR(0)="NAO"
           SET DIR("B")="ENTER DFN"
           DO ^DIR
           if $DATA(DIRUT)
               QUIT 
           SET ZZDFN=Y
 +2        SET FHZ115="P"_ZZDFN
           SET FHDFN=$ORDER(^FHPT("B",FHZ115,""))
 +3        IF '$DATA(^DPT(ZZDFN))
               WRITE !!,"DFN '",ZZDFN,"' NOT FOUND IN FILE 2",!
               QUIT 
 +4        IF FHDFN=""
               WRITE !!,"NO CORRESPONDING FHDFN"
 +5        WRITE !!," NAME: ",$PIECE($GET(^DPT(ZZDFN,0)),U,1)
 +6        WRITE !?2,"DFN: ",ZZDFN,!,"FHDFN: ",FHDFN,!
 +7        QUIT 
GETOPT    ;Select outpatient for recurring meals
 +1        SET FHFIND=1
           DO ^FHOMDPA
           IF FHDFN=""
               SET FHFIND=0
               QUIT 
 +2       ;W !!,"UNKNOWN SELECTION !"
           IF '$DATA(^FHPT(FHDFN,0))
               SET FHFIND=0
               QUIT 
 +3        IF $ORDER(^FHPT(FHDFN,"OP",0))=""
               WRITE !!,"NO RECURRING MEALS FOR THIS PERSON"
               SET FHFIND=0
               QUIT 
 +4        WRITE !
           DO STDATE
           IF STDT=""
               SET FHFIND=0
               QUIT 
 +5        QUIT 
PATNAME   ;Get name and demographics of patient/new person
 +1       ;input variable: FHDFN
 +2        SET (FHDOB,FHBID,FHSEX,DFN)=""
           DO GETZN
 +3        IF FILE="P"
               SET FHPTNM=$PIECE($GET(^DPT(IEN,0)),U,1)
 +4        IF FILE="N"
               SET FHPTNM=$PIECE($GET(^VA(200,IEN,0)),U,1)
 +5       ;Get SSN,Age,DOB,Sex of patient/new person
 +6        IF FILE="P"
               Begin DoDot:1
 +7                SET DFN=IEN
 +8                DO PID^FHDPA
                   SET FHSSN=PID
 +9                SET FHSEX=$PIECE($GET(^DPT(DFN,0)),U,2)
                   SET FHDOB=$PIECE($GET(^DPT(DFN,0)),U,3)
 +10               SET FHBID=BID
               End DoDot:1
 +11       IF FILE="N"
               Begin DoDot:1
 +12               SET IEN200=IEN
                   SET FHSSN=$PIECE($GET(^VA(200,IEN,1)),U,9)
 +13               SET FHBID=$EXTRACT(FHSSN,6,$LENGTH(FHSSN))
 +14               SET FHSEX=$PIECE($GET(^VA(200,IEN,1)),U,2)
                   SET FHDOB=$PIECE($GET(^VA(200,IEN,1)),U,3)
               End DoDot:1
 +15       SET FHAGE=""
           DO NOW^%DTC
 +16       IF FHDOB'=""
               SET FHAGE=$EXTRACT(%,1,3)-$EXTRACT(FHDOB,1,3)-($EXTRACT(%,4,7)<$EXTRACT(FHDOB,4,7))
 +17       QUIT 
GETZN     ;Get first piece of zero node in 115
 +1        SET FHPCZN=$PIECE($GET(^FHPT(FHDFN,0)),U,1)
           SET FILE=$EXTRACT(FHPCZN,1)
 +2        SET IEN=$EXTRACT(FHPCZN,2,99)
 +3        QUIT 
DIETVER   ;Verify that diet selected is from the allowable diets in 119.9
 +1        DO DIETLST
           IF $DATA(FHDIETS(FHDIET))
               QUIT 
 +2        SET FHDIET=""
           WRITE *7," ==> NOT ALLOWED",!
           DO DIETMSG
           QUIT 
DIETHLP   ;Display allowable diets from 119.9
 +1        DO DIETLST
           DO DIETMSG
           QUIT 
DIETLST   ;Build list
 +1        KILL FHDIETS,SPD
           SET FHSPDTS=""
           SET SPD=$PIECE($GET(^FH(119.9,1,0)),U,2,6)_"^"_$PIECE($GET(^FH(119.9,1,1)),U,1,10)
 +2        SET FHDEF=$PIECE($GET(^FH(119.9,1,0)),U,2)
 +3        FOR A=1:1:15
               SET AB=$PIECE(SPD,U,A)
               Begin DoDot:1
 +4                IF AB=""
                       QUIT 
 +5                SET FHDIETS(AB)=AB
 +6                SET FHSPDTS=FHSPDTS_$PIECE($GET(^FH(111,AB,0)),U,1)_"^"
               End DoDot:1
 +7        QUIT 
DIETMSG   ;Display message
 +1        WRITE !?3,"You must select from the diets set up in the Site Parameters:"
 +2        SET AB=""
           FOR 
               SET AB=$ORDER(FHDIETS(AB))
               if AB'>0
                   QUIT 
               WRITE !?3,$PIECE($GET(^FH(111,AB,0)),U)
 +3        WRITE !
           QUIT 
 +4        QUIT 
EXMSG     ;Display message stating meal NOT ordered
 +1        DO TYPE
 +2        WRITE !!?3,FHMSGML," NOT ordered!",!
           HANG 2
 +3        QUIT 
OKMSG     ;Display message stating meal ordered successfully
 +1        DO TYPE
 +2        DO PATNAME
           WRITE !!?3,FHMSGML," ordered for ",FHPTNM,"...",!
           HANG 2
 +3        QUIT 
TYPE      ;
 +1        SET FHMSGML=$SELECT(FHMSG1="G":"Guest meal",FHMSG1="S":"Special meal",FHMSG1="R":"Recurring meal",FHMSG1="E":"Early/Late tray",FHMSG1="T":"Tubefeeding",1:"Additional order")
 +2        QUIT 
UPXMSG    ;
 +1        WRITE !!?3,"Recurring meal NOT updated! ",!
           HANG 2
 +2        QUIT 
UPDMSG    ;
 +1        DO PATNAME
           WRITE !!?3,"Recurring meal updated for ",FHPTNM,"...",!
           HANG 2
 +2        QUIT 
SMSTAT    ;Status of last special meal request
 +1        SET FHSMNUM=$ORDER(^FHPT(FHDFN,"SM","B",""),-1)
           IF FHSMNUM=""
               SET FHSTAT=""
               QUIT 
 +2        IF $EXTRACT(FHSMNUM,1,7)'=DT
               SET FHSTAT=""
               QUIT 
 +3        SET FHSTAT=$PIECE($GET(^FHPT(FHDFN,"SM",FHSMNUM,0)),U,2)
 +4        QUIT 
RANGE     ;Check for validity of range of numbers entered
 +1        SET FHCLST=""
           SET FLG=""
           SET X=FHNUM
           DO TR^FH
           SET FHNUM=X
 +2        IF FHNUM="A"!(FHNUM?1"A"1.2"L")
               SET FHNUM="1-"_NUM
 +3        FOR K=1:1
               SET K1=$PIECE(FHNUM,",",K)
               if K1=""!(FLG="QUIT")
                   QUIT 
               Begin DoDot:1
 +4                SET K2=$SELECT(K1["-":$PIECE(K1,"-",2),1:+K1)
                   SET K1=+K1
                   DO CK
                   IF FLG="QUIT"
                       QUIT 
 +5                FOR K3=K1:1:K2
                       SET FHCLST=FHCLST_K3_","
               End DoDot:1
 +6        QUIT 
CK         IF K1<1!(K1>NUM)!(K1'?1N.N)
               DO C1
               QUIT 
 +1        IF K2<1!(K2>NUM)!(K2'?1N.N)
               DO C1
               QUIT 
 +2        if K2'<K1
               QUIT 
C1         WRITE !,"  Enter numbers or range or ALL (E.G.,  1,3,4 or 3-5 or 1,3-5)"
           SET FLG="QUIT"
           SET FHCLST=""
           QUIT 
 +1        QUIT 
MSHOM     ;Code MSG for outpatient orders
 +1        DO SITE^FH
 +2        SET MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM"
 +3        SET MSG(2)="PID|||"_DFN_"||"_$PIECE($GET(^DPT(DFN,0)),"^",1)
 +4       ;RESULTS IN NO BKDOOR
           SET FHOLOC=$ORDER(^FH(119.6,FHLOC,"L",0))
           IF FHOLOC=""
               QUIT 
 +5        SET FHOLOC=$GET(^FH(119.6,FHLOC,"L",FHOLOC,0))
 +6        SET FHOLOCNM=$PIECE($GET(^SC(FHOLOC,0)),U,1)
 +7        SET MSG(3)="PV1||O|"_FHOLOC_"^"_FHOLOCNM_"||||||||||||||||"
 +8        QUIT 
MSHCA     ;Code Cancel/Discontinue for outpatient orders
 +1        DO NOW^%DTC
           SET FHNOW=%
           KILL MSG
           SET ACT="OC"
           DO SITE^FH
 +2        IF $GET(FHCATXT)=""
               SET FHCATXT="Dietetics Canceled order."
 +3        SET MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM"
 +4        SET MSG(2)="PID|||"_DFN_"||"_$PIECE($GET(^DPT(DFN,0)),"^",1)
 +5        SET DATE=$$FMTHL7^XLFDT(FHNOW)
 +6        SET MSG(3)="ORC|"_ACT_"|"_FHORN_"^OR|"_FILL_"^FH|||||||||"_DUZ_"|||"_DATE_"|"_FHCATXT
 +7        QUIT 
MSHSS     ;Code MSG for outpatient send status messages
 +1        DO SITE^FH
 +2        SET MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORR"
 +3        SET MSG(2)="PID|||"_DFN_"||"_$PIECE($GET(^DPT(DFN,0)),"^",1)
 +4        SET MSG(3)="ORC|SR|"_FHORN_"^OR|"_FILL_"||"_FHSTTS
 +5        QUIT 
CONVC     ;Convert Amount/Unit in file 118.2, from "C" to "ML".
 +1        FOR FHII=0:0
               SET FHII=$ORDER(^FH(118.2,FHII))
               if FHII'>0
                   QUIT 
               Begin DoDot:1
 +2                SET FHAU=$PIECE(^FH(118.2,FHII,0),U,3)
 +3                IF FHAU["C"
                       SET FHAF=$PIECE(FHAU,"C",1)
                       SET FHAS=$PIECE(FHAU,"C",2)
                       Begin DoDot:2
 +4                        SET $PIECE(^FH(118.2,FHII,0),U,3)=FHAF_"ML"_FHAS
                       End DoDot:2
               End DoDot:1
 +5        QUIT 
MONUM     ;Prompt for number of monitors to display
 +1        WRITE !
           KILL DIR
           SET FHNUM=""
           SET DIR("?")="Select ALL to view all monitors, or select a specific number.  For example, enter 20 to display the 20 most recent monitors."
 +2        SET DIR(0)="F"
           SET DIR("A")="How many monitors would you like to display?"
 +3        SET DIR("B")="ALL"
           DO ^DIR
 +4        IF $DATA(DIRUT)
               SET FHNUM=""
               QUIT 
 +5        SET FHNUM=Y
           IF FHNUM'="A"
               IF FHNUM'="ALL"
                   IF FHNUM'?1.5N
                       DO MONUM
                       QUIT 
 +6        IF FHNUM="A"!(FHNUM="ALL")
               SET FHNUM=99999
 +7        QUIT