| 1 | FHOMRE1 ;Hines OIFO/RTK-OUTPATIENT MEALS EARLY/LATE TRAY  ;5/20/03  08:35 | 
|---|
| 2 | ;;5.5;DIETETICS;**2,11**;Jan 28, 2005;Build 4 | 
|---|
| 3 | ; | 
|---|
| 4 | ;09/08/2006 KAM/BAY Remedy Call 149576 - Add check for provide bagged meal | 
|---|
| 5 | ; | 
|---|
| 6 | S FHMSG1="E" D EN1,END Q | 
|---|
| 7 | EN1 D GETOPT^FHOMUTL I FHFIND=0 Q | 
|---|
| 8 | K NUM D DISP^FHOMRR1 I $G(NUM)="" Q | 
|---|
| 9 | EL1 K DIR S DIR(0)="NAO^1:"_NUM,DIR("A")="Early/Late Tray For Which Order? " | 
|---|
| 10 | D ^DIR Q:$D(DIRUT) | 
|---|
| 11 | S FHRMSEL=Y,FHC=FHRMSEL,FHRNUM=$P(FHLIST(FHRMSEL),U,1) | 
|---|
| 12 | S FHRMDT=$P(FHLIST(FHRMSEL),U,2),Y=FHRMDT D DD^%DT W !,Y,! | 
|---|
| 13 | I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,15)="C" W !!?3,"The selected order has been cancelled!",! D EL1 Q | 
|---|
| 14 | I $D(^FHPT(FHDFN,"OP",FHRNUM,2)) W !,"Early/Late Tray already exists for this meal." K DIR S DIR(0)="YA",DIR("A")="Do you wish to overwrite? ",DIR("B")="N" D ^DIR Q:$D(DIRUT)  Q:Y'=1 | 
|---|
| 15 | ; Only allow selection of one order at a time, rather than a range | 
|---|
| 16 | ; because they could be different meals which could have different | 
|---|
| 17 | ; allowable meal window times. | 
|---|
| 18 | K DIR S DIR(0)="SAO^E:EARLY;L:LATE",DIR("A")="Early or Late (E or L)? " | 
|---|
| 19 | D ^DIR I $D(DIRUT) D EXMSG^FHOMUTL Q | 
|---|
| 20 | S FHEL=Y | 
|---|
| 21 | ORD S FHLOC=$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,3),FHORN="",FHMSG1="E" | 
|---|
| 22 | S FHDIET=$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,2) | 
|---|
| 23 | S FHCOMM=$P($G(^FH(119.6,FHLOC,0)),U,8),FHCOMM1=$G(^FH(119.73,FHCOMM,1)) | 
|---|
| 24 | S FHMEAL=$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,4) | 
|---|
| 25 | S FH1=$S(FHMEAL="B":1,FHMEAL="N":7,1:13) I FHEL="L" S FH1=FH1+3 | 
|---|
| 26 | TIME S FH3=FH1+2,FHCNT=0 F FHT=FH1:1:FH3 D | 
|---|
| 27 | .I $P(FHCOMM1,U,FHT)="" Q | 
|---|
| 28 | .S FHCNT=FHCNT+1,FHTM(FHCNT)=$P(FHCOMM1,U,FHT) | 
|---|
| 29 | W !,"Select Time: ( " F J=1:1:FHCNT W J,"=",FHTM(J)," " | 
|---|
| 30 | R ") ",FHS:DTIME I FHS=""!(FHS["^") D EXMSG^FHOMUTL Q | 
|---|
| 31 | I (FHS'?1N)!(FHS<1)!(FHS>FHCNT) W !!,"Invalid time selection!" D TIME Q | 
|---|
| 32 | S FHTIME=FHTM(FHS),X=FHRMDT_"@"_FHTIME,%DT="XT" D ^%DT S FHDTM=Y | 
|---|
| 33 | D NOW^%DTC I FHDTM<% W !!,"Cannot order for a Date/Time before now!" D TIME Q | 
|---|
| 34 | ;09/08/2006 KAM/BAY Rem Call 149576 Check file 119.73 PROVIDE BAGGED MEAL | 
|---|
| 35 | ; | 
|---|
| 36 | S FHBAG="N" I $P($G(^FH(119.73,FHCOMM,2)),U,10)="Y" D | 
|---|
| 37 | . K DIR S DIR(0)="SAO^Y:Yes;N:No",DIR("A")="Bagged Meal? ",DIR("B")="N" | 
|---|
| 38 | . D ^DIR I $D(DIRUT) D EXMSG^FHOMUTL Q | 
|---|
| 39 | . S FHBAG=Y | 
|---|
| 40 | D SET,UPD100,OKMSG^FHOMUTL,END Q | 
|---|
| 41 | ; | 
|---|
| 42 | SET S DA=FHRNUM,DA(1)=FHDFN,DIE="^FHPT("_DA(1)_",""OP""," | 
|---|
| 43 | S FHORN=$S($G(FHORN)="":"",1:FHORN) | 
|---|
| 44 | D NOW^%DTC S FHTODAY=$E(%,1,12) | 
|---|
| 45 | S DR="14////^S X=FHTIME;15////^S X=FHBAG;16////^S X=DUZ;17////^S X=FHTODAY;17.5////^S X=FHORN;17.6////^S X=""@""" D ^DIE | 
|---|
| 46 | S FHACT="O",FHOPTY="E",FHAET=FHTIME D SETAET^FHOMRO2 | 
|---|
| 47 | Q | 
|---|
| 48 | END K A,FHFIND,FHCLST,FHC,FHCOMM,FH1,FH3,FHTEXT,NUM | 
|---|
| 49 | K FHSEL,FHT,FHCNT,FHCOMM1,FHS Q | 
|---|
| 50 | Q | 
|---|
| 51 | HL7SET ; | 
|---|
| 52 | ; Entry point for E/L trays placed from CPRS/OERR | 
|---|
| 53 | S (FHRFLG,FHSFLG)=0,FHMEAL=$E(FHSVCP,1),FILL="" | 
|---|
| 54 | S FHEL=$E(FHSVCP,2),FHTM=$E(FHSVCP,3) | 
|---|
| 55 | I FHEL'?1"E",FHEL'?1"L" S TXT="Missing E/L" D GETOR^FHWOR,ERR^FHOMWOR Q | 
|---|
| 56 | I FHTM<1!(FHTM>3) S TXT="Invalid time" D GETOR^FHWOR,ERR^FHOMWOR Q | 
|---|
| 57 | S FHRMDT=STDT,ENDT=FHRMDT_.9999 | 
|---|
| 58 | S FH1=$S(FHMEAL="B":1,FHMEAL="N":7,1:13) I FHEL="L" S FH1=FH1+3 | 
|---|
| 59 | S FH1=FH1+FHTM-1 | 
|---|
| 60 | S FHCOMM=$P($G(^FH(119.6,FHLOC,0)),U,8),FHCOMM1=$G(^FH(119.73,FHCOMM,1)) | 
|---|
| 61 | S FHTIME=$P(FHCOMM1,U,FH1),X1=STDT,X2=-1 D C^%DTC S STDT1=X | 
|---|
| 62 | RM ; Check recurring meals | 
|---|
| 63 | I '$D(^FHPT(FHDFN,"OP","B",FHRMDT)) D SM Q | 
|---|
| 64 | F FHRMDT=STDT1:0 S FHRMDT=$O(^FHPT(FHDFN,"OP","B",FHRMDT)) Q:FHRMDT'>0!(FHRMDT>ENDT)  F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","B",FHRMDT,FHRNUM)) Q:FHRNUM'>0  D | 
|---|
| 65 | .Q:$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,4)'=FHMEAL | 
|---|
| 66 | .Q:$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,15)="C" | 
|---|
| 67 | .S FHRNUM1=FHRNUM,FHRFLG=1 D SET Q | 
|---|
| 68 | S FILL="E;"_$G(FHRNUM1) | 
|---|
| 69 | SM ; Check special meals | 
|---|
| 70 | F FHSMDT=STDT:0 S FHSMDT=$O(^FHPT(FHDFN,"SM",FHSMDT)) Q:FHSMDT'>0!(FHSMDT>ENDT)  D SETELSM | 
|---|
| 71 | ; | 
|---|
| 72 | I FHRFLG=0,FHSFLG=0 D REJECT Q | 
|---|
| 73 | I FILL="" D REJECT Q | 
|---|
| 74 | D SEND^FHWOR | 
|---|
| 75 | Q | 
|---|
| 76 | SETELSM ; Set E/L for Special Meals | 
|---|
| 77 | Q:$P($G(^FHPT(FHDFN,"SM",FHSMDT,0)),U,9)'=FHMEAL | 
|---|
| 78 | S FHSFLG=1,DA=FHSMDT,DA(1)=FHDFN,DIE="^FHPT("_DA(1)_",""SM""," | 
|---|
| 79 | D NOW^%DTC S FHTODAY=$E(%,1,12) | 
|---|
| 80 | S FHORN=$S($G(FHORN)="":"",1:FHORN),FILL="G;"_FHSMDT | 
|---|
| 81 | S DR="8////^S X=FHTIME;9////^S X=FHBAG;10////^S X=DUZ;11////^S X=FHORN" D ^DIE | 
|---|
| 82 | S FHZN=$G(^FHPT(FHDFN,"SM",FHSMDT,0)) | 
|---|
| 83 | S FHACT="O",FHOPTY="S",FHSTAT="",FHOPDT=FHTODAY D SETSM^FHOMRO2 | 
|---|
| 84 | Q | 
|---|
| 85 | REJECT ; Reject if no recurring or special meals found | 
|---|
| 86 | S TXT="No Recurring or Special Meal ordered for this date/meal" | 
|---|
| 87 | D GETOR^FHWOR,ERR^FHOMWOR Q | 
|---|
| 88 | Q | 
|---|
| 89 | UPD100 ;Backdoor message to update file #100 with a new EL order | 
|---|
| 90 | Q:'$$PATCH^XPDUTL("OR*3.0*215")  ;must have CPRSv26 for O.M. backdoor | 
|---|
| 91 | Q:'DFN  K MSG D MSHOM^FHOMUTL  ;Sets MSG(1), MSG(2) & MSG(3) for OM | 
|---|
| 92 | S FILL="E;"_FHRNUM,FHODT=$$FMTHL7^XLFDT(FHRMDT) | 
|---|
| 93 | S FHOMELN=FHMEAL_FHEL_FHS,FHOBAG="" I FHBAG="Y" S FHOBAG="bagged" | 
|---|
| 94 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^^^"_FHODT_"^"_FHODT_"||||||||"_FHTODAY | 
|---|
| 95 | S MSG(5)="ODT|"_$S(FHEL="E":"EARLY",1:"LATE")_"|^^^"_FHOMELN_"^^99FHD|"_FHOBAG | 
|---|
| 96 | D EVSEND^FHWOR | 
|---|
| 97 | Q | 
|---|