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 Nov 22, 2024@16:57:37 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