| 1 | FHPST2 ;Hines OIFO/RTK POST-INIT TO BACKFILL OM TO FILE #100  ;6/21/05  12:05 | 
|---|
| 2 | ;;5.5;DIETETICS;**2**;Jan 28, 2005 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Loop thru all existing Recurring & Special Meals and send backdoor | 
|---|
| 5 | ;message to update Orders (#100) file. | 
|---|
| 6 | ; | 
|---|
| 7 | ;Recurring Meals | 
|---|
| 8 | D NOW^%DTC S FHNOW=%,FHTODAY=$E(FHNOW,1,7) | 
|---|
| 9 | F FHXRDT=0:0 S FHXRDT=$O(^FHPT("RM",FHXRDT)) Q:FHXRDT'>0  D | 
|---|
| 10 | .F FHDFN=0:0 S FHDFN=$O(^FHPT("RM",FHXRDT,FHDFN)) Q:FHDFN'>0  D | 
|---|
| 11 | ..F FHRM=0:0 S FHRM=$O(^FHPT("RM",FHXRDT,FHDFN,FHRM)) Q:FHRM'>0  D | 
|---|
| 12 | ...S FHDT=$P($G(^FHPT(FHDFN,"OP",FHRM,0)),"^",1) | 
|---|
| 13 | ...S FHODT=$$FMTHL7^XLFDT(FHDT) | 
|---|
| 14 | ...S FHLOC=$P($G(^FHPT(FHDFN,"OP",FHRM,0)),"^",3) | 
|---|
| 15 | ...S FHMPNUM=$P($G(^FHPT(FHDFN,"OP",FHRM,0)),"^",6) | 
|---|
| 16 | ...I $D(^FHPT(FHDFN,"OP",FHRM,0)) D RM I $P(^FHPT(FHDFN,"OP",FHRM,0),"^",15)="C" S FHORN=$P($G(^FHPT(FHDFN,"OP",FHRM,0)),U,12),FILL="R;"_FHMPNUM_";"_FHDT_";"_FHDT_";;" D MSHCA  ;Send backdoor cancel | 
|---|
| 17 | ...I $D(^FHPT(FHDFN,"OP",FHRM,1)) D AO | 
|---|
| 18 | ...I $D(^FHPT(FHDFN,"OP",FHRM,2)) D EL | 
|---|
| 19 | ...I $D(^FHPT(FHDFN,"OP",FHRM,3)) D TF | 
|---|
| 20 | ; | 
|---|
| 21 | ;Special Meals | 
|---|
| 22 | F FHXSDT=0:0 S FHXSDT=$O(^FHPT("SM",FHXSDT)) Q:FHXSDT'>0  D | 
|---|
| 23 | .F FHDFN=0:0 S FHDFN=$O(^FHPT("SM",FHXSDT,FHDFN)) Q:FHDFN'>0  D | 
|---|
| 24 | ..S FHODT=$$FMTHL7^XLFDT(FHXSDT) | 
|---|
| 25 | ..S FHLOC=$P($G(^FHPT(FHDFN,"SM",FHXSDT,0)),"^",3) | 
|---|
| 26 | ..I $D(^FHPT(FHDFN,"SM",FHXSDT,0)) D SM | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | RM ; | 
|---|
| 30 | I $P(^FHPT(FHDFN,"OP",FHRM,0),"^",12)>0 Q  ;Backdoor already exists | 
|---|
| 31 | S FHN0=$G(^FHPT(FHDFN,"OP",FHRM,0)) | 
|---|
| 32 | K MSG D MSHOM I 'DFN!('FHOLOC) Q | 
|---|
| 33 | S FHMPNUM=$P(FHN0,"^",6),FHCLRK=$P(FHN0,"^",17) D GETSED | 
|---|
| 34 | S (X,FHSTDT)=$P(FHN0,"^",1) | 
|---|
| 35 | S FHMEAL=$P(FHN0,"^",4),FHDIET=$P(FHN0,"^",2),FHDIETX(1)=$P(FHN0,"^",7) | 
|---|
| 36 | S FHDIETX(2)=$P(FHN0,"^",8),FHDIETX(3)=$P(FHN0,"^",9) | 
|---|
| 37 | S FHDIETX(4)=$P(FHN0,"^",10),FHDIETX(5)=$P(FHN0,"^",11) | 
|---|
| 38 | S FHOSTDT=$$FMTHL7^XLFDT(FHSTDT),FHOENDT=$$FMTHL7^XLFDT(FHENDT) | 
|---|
| 39 | S FILL="R;"_FHMPNUM_";"_FHSTDT_";"_FHENDT_";"_FHDAYS_";"_FHMEAL | 
|---|
| 40 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^"_FHDAYS_"^^"_FHOSTDT_"^"_FHOENDT_"|||"_FHCLRK_"|||||"_FHOSTDT | 
|---|
| 41 | I FHDIET'="" S FHODNM=$P($G(^FH(111,FHDIET,0)),U,1),MSG(5)="ODS|D|"_FHMEAL_"|^^^"_FHDIET_"^"_FHODNM_"^99FHD|" | 
|---|
| 42 | I FHDIET="" D | 
|---|
| 43 | .F N=0:0 S N=$O(FHDIETX(N)) Q:N'>0  Q:FHDIETX(N)=""  S FHODNM=$P($G(^FH(111,FHDIETX(N),0)),U,1),MSG(N+4)="ODS|D|"_FHMEAL_"|^^^"_FHDIETX(N)_"^"_FHODNM_"^99FHD|" | 
|---|
| 44 | D EVSEND^FHWOR | 
|---|
| 45 | Q | 
|---|
| 46 | AO ; | 
|---|
| 47 | I $P(^FHPT(FHDFN,"OP",FHRM,1),"^",4)>0 Q  ;Backdoor already exists | 
|---|
| 48 | S FHN1=$G(^FHPT(FHDFN,"OP",FHRM,1)) | 
|---|
| 49 | K MSG D MSHOM I 'DFN!('FHOLOC) Q | 
|---|
| 50 | S FILL="A;"_FHRM,FHTEXT=$P(FHN1,"^",1),FHCLRK=$P(FHN1,"^",2) | 
|---|
| 51 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^^^"_FHODT_"^"_FHODT_"|||"_FHCLRK_"|||||"_FHTODAY | 
|---|
| 52 | S MSG(5)="ODS|D||^^^FH-6^Additional Order^99OTH|"_FHTEXT | 
|---|
| 53 | D EVSEND^FHWOR | 
|---|
| 54 | I $P(^FHPT(FHDFN,"OP",FHRM,1),"^",5)="C" S FHORN=$P($G(^FHPT(FHDFN,"OP",FHRM,1)),U,4),FILL="A;"_FHRM D MSHCA  ;Send backdoor cancel | 
|---|
| 55 | Q | 
|---|
| 56 | EL ; | 
|---|
| 57 | I $P(^FHPT(FHDFN,"OP",FHRM,2),"^",5)>0 Q  ;Backdoor already exists | 
|---|
| 58 | S FHN2=$G(^FHPT(FHDFN,"OP",FHRM,2)) | 
|---|
| 59 | K MSG D MSHOM I 'DFN!('FHOLOC) Q | 
|---|
| 60 | S FILL="E;"_FHRM,FHEL="L",FHS=1,FHBAG=$P(FHN2,"^",2) | 
|---|
| 61 | S FHCLRK=$P(FHN2,"^",3) | 
|---|
| 62 | S FHOMELN=FHMEAL_FHEL_FHS,FHOBAG="" I FHBAG="Y" S FHOBAG="bagged" | 
|---|
| 63 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^^^"_FHODT_"^"_FHODT_"|||"_FHCLRK_"|||||"_FHTODAY | 
|---|
| 64 | S MSG(5)="ODT|LATE|^^^"_FHOMELN_"^^99FHD|"_FHOBAG | 
|---|
| 65 | D EVSEND^FHWOR | 
|---|
| 66 | I $P(^FHPT(FHDFN,"OP",FHRM,2),"^",6)="C" S FHORN=$P($G(^FHPT(FHDFN,"OP",FHRM,2)),U,5),FILL="E;"_FHRM D MSHCA  ;Send backdoor cancel | 
|---|
| 67 | Q | 
|---|
| 68 | TF ; | 
|---|
| 69 | I $P(^FHPT(FHDFN,"OP",FHRM,3),"^",4)>0 Q  ;Backdoor already exists | 
|---|
| 70 | S FHN3=$G(^FHPT(FHDFN,"OP",FHRM,3)) | 
|---|
| 71 | K MSG,TUN D MSHOM I 'DFN!('FHOLOC) Q | 
|---|
| 72 | S FHTEXT=$P(FHN3,"^",1),FILL="T;"_FHRM,MNUM=4,TFCOM=FHTEXT | 
|---|
| 73 | S FHCLRK=$P(FHN3,"^",6) D NOW^%DTC S FHNOW=%,SDT=FHDT | 
|---|
| 74 | S MSG(MNUM)="ORC|SN||"_FILL_"^FH||||^^^"_FHODT_"|||"_FHCLRK_"||"_FHCLRK_"|||"_FHNOW | 
|---|
| 75 | F FHTF=0:0 S FHTF=$O(^FHPT(FHDFN,"OP",FHRM,"TF",FHTF)) Q:FHTF'>0  S TUN(FHTF)=$G(^FHPT(FHDFN,"OP",FHRM,"TF",FHTF,0)) | 
|---|
| 76 | F FHTF=0:0 S FHTF=$O(TUN(FHTF)) Q:FHTF<1  S XX=$G(TUN(FHTF)) D TF1^FHWOR5 | 
|---|
| 77 | D EVSEND^FHWOR | 
|---|
| 78 | I $P(^FHPT(FHDFN,"OP",FHRM,3),"^",5)="C" S FHORN=$P($G(^FHPT(FHDFN,"OP",FHRM,3)),U,4),FILL="T;"_FHRM D MSHCA  ;Send backdoor cancel | 
|---|
| 79 | Q | 
|---|
| 80 | SM ; | 
|---|
| 81 | I $P(^FHPT(FHDFN,"SM",FHXSDT,0),"^",12)>0 Q  ;Backdoor already exists | 
|---|
| 82 | S FHSN0=$G(^FHPT(FHDFN,"SM",FHXSDT,0)) | 
|---|
| 83 | K MSG D MSHOM I 'DFN!('FHOLOC) Q | 
|---|
| 84 | S FILL="S;"_FHXSDT,FHMEAL=$P(FHSN0,"^",9),FHDIET=$P(FHSN0,"^",4) | 
|---|
| 85 | S FHOMEAL=$S(FHMEAL="B":1,FHMEAL="N":3,FHMEAL="E":5,1:"") | 
|---|
| 86 | S FHDIETNM=$P($G(^FH(111,FHDIET,0)),U,1),FHCLRK=$P(FHSN0,"^",5) | 
|---|
| 87 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^^^"_FHODT_"^"_FHODT_"|||"_FHCLRK_"|||||"_FHNOW | 
|---|
| 88 | S MSG(5)="ODS|S|"_FHOMEAL_"|^^^"_FHDIET_"^"_FHDIETNM_"^99FHD|" | 
|---|
| 89 | D EVSEND^FHWOR | 
|---|
| 90 | S FHSMST=$P(^FHPT(FHDFN,"SM",FHXSDT,0),"^",2) | 
|---|
| 91 | I FHSMST="C"!(FHSMST="D") S FHORN=$P($G(^FHPT(FHDFN,"SM",FHXSDT,0)),U,12),FILL="S;"_FHXSDT D MSHCA  ;Send backdoor cancel/deny | 
|---|
| 92 | Q | 
|---|
| 93 | MSHOM ;Code MSG for outpatient orders | 
|---|
| 94 | D SITE^FH | 
|---|
| 95 | D PATNAME^FHOMUTL I 'DFN Q | 
|---|
| 96 | S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM" | 
|---|
| 97 | S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1) | 
|---|
| 98 | S FHOLOC=$G(^FH(119.6,FHLOC,"L",1,0)) I 'FHOLOC Q | 
|---|
| 99 | S FHOLOCNM=$P($G(^SC(FHOLOC,0)),U,1) | 
|---|
| 100 | S MSG(3)="PV1||O|"_FHOLOC_"^"_FHOLOCNM_"||||||||||||||||" | 
|---|
| 101 | Q | 
|---|
| 102 | MSHCA ;Code Cancel/Discontinue for outpatient orders | 
|---|
| 103 | K MSG S ACT="OC" D SITE^FH S FHCATXT="Dietetics Canceled order." | 
|---|
| 104 | D PATNAME^FHOMUTL I 'DFN Q | 
|---|
| 105 | S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||ORM" | 
|---|
| 106 | S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1) | 
|---|
| 107 | S DATE=$$FMTHL7^XLFDT(FHNOW) | 
|---|
| 108 | S MSG(3)="ORC|"_ACT_"|"_FHORN_"^OR|"_FILL_"^FH|||||||"_DUZ_"||"_DUZ_"|||"_DATE_"|"_FHCATXT | 
|---|
| 109 | D EVSEND^FHWOR | 
|---|
| 110 | Q | 
|---|
| 111 | GETSED ; | 
|---|
| 112 | K N1 S (FHDAYS,FHENDT,FHODAYS)="" | 
|---|
| 113 | F FHRZ=0:0 S FHRZ=$O(^FHPT(FHDFN,"OP","C",FHMPNUM,FHRZ)) Q:FHRZ'>0  D | 
|---|
| 114 | .S FHDAT=$P($G(^FHPT(FHDFN,"OP",FHRZ,0)),"^",1),X=FHDAT D DOW^%DTC | 
|---|
| 115 | .S FHV=$S(Y=0:"X",Y=1:"M",Y=2:"T",Y=3:"W",Y=4:"R",Y=5:"F",1:"S") | 
|---|
| 116 | .I FHDAYS'[FHV S FHDAYS=FHDAYS_FHV | 
|---|
| 117 | .Q | 
|---|
| 118 | S FHENDT=FHDAT | 
|---|
| 119 | F N=1:1:7 S FH1=$E(FHDAYS,N) Q:FH1=""  S M=$F("MTWRFSX",FH1)-1,N1(M)="" | 
|---|
| 120 | F N=0:0 S N=$O(N1(N)) Q:N'>0  S FHODAYS=FHODAYS_"~QJ"_N | 
|---|
| 121 | S FHODAYS=$E(FHODAYS,2,999) | 
|---|
| 122 | S FHDAYS=FHODAYS Q | 
|---|