| 1 | FHOMRBLD ;Hines OIFO/RVD-OUTPATIENT REPORT UTILITY  ;2/03/04  10:05
 | 
|---|
| 2 |  ;;5.5;DIETETICS;;Jan 28, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;RVD 2/3/04 - modified for Outpatient Meals
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;ENTRY POINTS:
 | 
|---|
| 7 |  ;          GETRM - get outpatient recurring meals data from starting dt.
 | 
|---|
| 8 |  ;          GETSM - get outpatient special meals data from starting dt.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | GETRM(FHSDT,FHCOM,FHLOC,FHRDFN) ;get special recurring data.
 | 
|---|
| 11 |  ;input variables:
 | 
|---|
| 12 |  ;          FHSDT        = starting date
 | 
|---|
| 13 |  ;          FHCOM        = IEN of communication office, 'ALL' for all.
 | 
|---|
| 14 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 15 |  ;          FHLOC        = IEN of location, 'ALL' for all.
 | 
|---|
| 16 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 17 |  ;          FHRDFN        = IEN of NUTRITION PERSON, 'ALL' for all.
 | 
|---|
| 18 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;ouput:
 | 
|---|
| 21 |  ;    ^TMP($J,"OP","R",COMMUNICATION OFF,NUTRITION LOCATION,PATIENT,DTE)
 | 
|---|
| 22 |  ;                       = for outpatient recurring meals
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;contents of ^TMP($J global:
 | 
|---|
| 25 |  ;         Piece 1 = patient DFN(IEN in file #115)
 | 
|---|
| 26 |  ;         Piece 2 = recurring meals IEN
 | 
|---|
| 27 |  ;         Piece 3 = recurring date/time
 | 
|---|
| 28 |  ;         Piece 4 = diet
 | 
|---|
| 29 |  ;         Piece 5 = meal
 | 
|---|
| 30 |  ;         Piece 6 = bagged meal
 | 
|---|
| 31 |  ;         Piece 7 = meal plan order number
 | 
|---|
| 32 |  ;         Piece 8 = ADDITIONAL ORDER TEXT
 | 
|---|
| 33 |  ;         Piece 9 = ADDITIONAL ORDER CLERK
 | 
|---|
| 34 |  ;         Piece 10 = ADDITIONAL ORDER DATE AND TIME
 | 
|---|
| 35 |  ;         Piece 11 = EARLY/LATE TRAY TIME
 | 
|---|
| 36 |  ;         Piece 12 = EARLY/LATE TRAY BAGGED MEAL
 | 
|---|
| 37 |  ;         Piece 13 = EARLY/LATE TRAY CLERK
 | 
|---|
| 38 |  ;         Piece 14 = EARLY/LATE TRAY ENTRY DATE
 | 
|---|
| 39 |  ;         Piece 15 = TUBEFEEDING COMMENT
 | 
|---|
| 40 |  ;         Piece 16 = TF TOTAL CC'S
 | 
|---|
| 41 |  ;         Piece 17 = TF TOTAL KCALS/DAY
 | 
|---|
| 42 |  ;         Piece 18 = SERVICE (T,C,D or combination of 3)
 | 
|---|
| 43 |  ;         Piece 19 = Status
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ;error:
 | 
|---|
| 46 |  ;         ^TMP($J,"OP","ER") = error message
 | 
|---|
| 47 |  K ^TMP($J,"OP","R")
 | 
|---|
| 48 |  D NEWVAR
 | 
|---|
| 49 |  I '$O(^FHPT("RM",FHSDT)) S ^TMP($J,"OP","ER")="NO RECURRING MEALS FOR THIS DATE RANGE" Q
 | 
|---|
| 50 |  S:FHLOC="" FHLOC="ALL"
 | 
|---|
| 51 |  S:FHCOM="" FHCOM="ALL"
 | 
|---|
| 52 |  S:FHRDFN="" FHRDFN="ALL"
 | 
|---|
| 53 |  F FHSMDT=FHSDT:0 S FHSMDT=$O(^FHPT("RM",FHSMDT)) Q:FHSMDT'>0  D
 | 
|---|
| 54 |  .F FHDFN=0:0 S FHDFN=$O(^FHPT("RM",FHSMDT,FHDFN)) Q:FHDFN'>0  D
 | 
|---|
| 55 |  ..F FHIN=0:0 S FHIN=$O(^FHPT("RM",FHSMDT,FHDFN,FHIN)) Q:FHIN'>0  D
 | 
|---|
| 56 |  ...I $G(FHRDFN),(FHRDFN'=FHDFN) Q   ;quit entry is different.
 | 
|---|
| 57 |  ...S (FHLCOMN,FHLCOM,FHLOCN,FHPTNM,FHDIET,FHTCD)=""
 | 
|---|
| 58 |  ...S FHNODE=$G(^FHPT(FHDFN,"OP",FHIN,0))
 | 
|---|
| 59 |  ...S FHD=$P(FHNODE,U,1)
 | 
|---|
| 60 |  ...D PATNAME^FHOMUTL S FHPTNM=$E(FHPTNM,1,18)
 | 
|---|
| 61 |  ...S:'$D(FHPTNM) FHPTNM="***"
 | 
|---|
| 62 |  ...S:FHPTNM="" FHPTNM="***"
 | 
|---|
| 63 |  ...S FHD=$$FMTE^XLFDT(FHSMDT,"P")
 | 
|---|
| 64 |  ...S FHD=$E(FHD,1,12)
 | 
|---|
| 65 |  ...S FHLPT=$P(FHNODE,U,3)
 | 
|---|
| 66 |  ...I $G(FHLOC),FHLOC'=FHLPT Q   ;quit if location is not the same
 | 
|---|
| 67 |  ...S:$G(FHLPT) FHLCOM=$P($G(^FH(119.6,FHLPT,0)),U,8)
 | 
|---|
| 68 |  ...I $G(FHCOM),FHCOM'=FHLCOM Q  ;quit if not same communication office
 | 
|---|
| 69 |  ...S:$G(FHLCOM) FHLCOMN=$P($G(^FH(119.73,FHLCOM,0)),U,1)
 | 
|---|
| 70 |  ...S:FHLCOMN="" FHLCOMN="***"
 | 
|---|
| 71 |  ...I $G(FHLPT) D
 | 
|---|
| 72 |  ....S FHLOCN=$P($G(^FH(119.6,FHLPT,0)),U,1)
 | 
|---|
| 73 |  ....S:$P($G(^FH(119.6,FHLPT,0)),U,5) FHTCD=FHTCD_"T"
 | 
|---|
| 74 |  ....S:$P($G(^FH(119.6,FHLPT,0)),U,6) FHTCD=FHTCD_"C"
 | 
|---|
| 75 |  ....S:$P($G(^FH(119.6,FHLPT,0)),U,7) FHTCD=FHTCD_"D"
 | 
|---|
| 76 |  ...S:FHLOCN="" FHLOCN="***"
 | 
|---|
| 77 |  ...S FHDPT=$P(FHNODE,U,2) S:FHDPT="" FHDPT=$P(FHNODE,U,7)
 | 
|---|
| 78 |  ...S:FHDPT="" FHDPT=$P(FHNODE,U,8) S:FHDPT="" FHDPT=$P(FHNODE,U,9)
 | 
|---|
| 79 |  ...S:FHDPT="" FHDPT=$P(FHNODE,U,10) S:FHDPT="" FHDPT=$P(FHNODE,U,11)
 | 
|---|
| 80 |  ...S:$G(FHDPT) FHDIET=$P($G(^FH(111,FHDPT,0)),U,1)
 | 
|---|
| 81 |  ...S:FHDIET="" FHDIET="***"
 | 
|---|
| 82 |  ...S FHMEAL=$P(FHNODE,U,4)
 | 
|---|
| 83 |  ...S:FHMEAL="" FHMEAL=$P(FHNODE,U,7)
 | 
|---|
| 84 |  ...S:FHMEAL="" FHMEAL=$P(FHNODE,U,8)
 | 
|---|
| 85 |  ...S:FHMEAL="" FHMEAL=$P(FHNODE,U,9)
 | 
|---|
| 86 |  ...S:FHMEAL="" FHMEAL=$P(FHNODE,U,10)
 | 
|---|
| 87 |  ...S:FHMEAL="" FHMEAL=$P(FHNODE,U,11)
 | 
|---|
| 88 |  ...S FHBAGM=$P(FHNODE,U,5)
 | 
|---|
| 89 |  ...S FHMPO=$P(FHNODE,U,6)
 | 
|---|
| 90 |  ...S FHMPO=$E(FHMPO,1,70)
 | 
|---|
| 91 |  ...S FHSTAT=$P(FHNODE,U,15)
 | 
|---|
| 92 |  ...S (FHADO,FHADOC,FHADODT,FHELT,FHELTB)=""
 | 
|---|
| 93 |  ...S (FHELTC,FHELTED,FHTFC,FHTFTC,FHTFTK)=""
 | 
|---|
| 94 |  ...I $D(^FHPT(FHDFN,"OP",FHIN,1)) D
 | 
|---|
| 95 |  ....S FHEL=$G(^FHPT(FHDFN,"OP",FHIN,1))
 | 
|---|
| 96 |  ....S FHADO=$P(FHEL,U,1)
 | 
|---|
| 97 |  ....S FHADOC=$P(FHEL,U,2)
 | 
|---|
| 98 |  ....I $G(FHADOC),($D(^VA(200,FHADOC,0))) S FHADOC=$P(^VA(200,FHADOC,0),U,1)
 | 
|---|
| 99 |  ....S FHADDT=$P(FHEL,U,3)
 | 
|---|
| 100 |  ...I $D(^FHPT(FHDFN,"OP",FHIN,2)) D
 | 
|---|
| 101 |  ....S FHEL2=$G(^FHPT(FHDFN,"OP",FHIN,2))
 | 
|---|
| 102 |  ....S FHELT=$P(FHEL2,U,1)
 | 
|---|
| 103 |  ....S FHELTB=$P(FHEL2,U,2)
 | 
|---|
| 104 |  ....S FHELTC=$P(FHEL2,U,3)
 | 
|---|
| 105 |  ....S FHELTED=$P(FHEL2,U,4)
 | 
|---|
| 106 |  ...I $D(^FHPT(FHDFN,"OP",FHIN,3)) D
 | 
|---|
| 107 |  ....S FHEL3=$G(^FHPT(FHDFN,"OP",FHIN,3))
 | 
|---|
| 108 |  ....S FHTFC=$P(FHEL3,U,1)
 | 
|---|
| 109 |  ....S FHTFTC=$P(FHEL3,U,2)
 | 
|---|
| 110 |  ....S FHTFTK=$P(FHEL3,U,3)
 | 
|---|
| 111 |  ...S FHDAT=FHDFN_"^"_FHD_"^"_FHDIET_"^"_FHMEAL_"^"_FHBAGM_"^"_FHMPO
 | 
|---|
| 112 |  ...S FHDAT=FHDAT_"^"_FHADO_"^"_FHADOC_"^"_FHADODT_"^"_FHELT_"^"_FHELTB
 | 
|---|
| 113 |  ...S FHDAT=FHDAT_"^"_FHELTC_"^"_FHELTED_"^"_FHTFC_"^"_FHTFTC_"^"_FHTFTK
 | 
|---|
| 114 |  ...S ^TMP($J,"OP","R",FHLCOMN,FHLOCN,FHPTNM,FHSMDT)=FHDAT_"^"_FHTCD_"^"_FHSTAT
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | GETSM(FHSDT,FHCOM,FHLOC,FHSDFN) ;get special meals data.
 | 
|---|
| 119 |  ;input variables:
 | 
|---|
| 120 |  ;          FHSDT        = starting date
 | 
|---|
| 121 |  ;          FHCOM        = IEN of communication office, 'ALL' for all.
 | 
|---|
| 122 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 123 |  ;          FHLOC        = IEN of location, 'ALL' for all.
 | 
|---|
| 124 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 125 |  ;          FHSDFN       = IEN of file #115, 'ALL' for all.
 | 
|---|
| 126 |  ;                       = if NULL, considered 'ALL'
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  ;ouput:
 | 
|---|
| 129 |  ;    ^TMP($J,"OP","S",COMMUNICATION OFF,NUTRITION LOCATION,PATIENT,DTE)
 | 
|---|
| 130 |  ;                       = for outpatient special meals
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ;contents of ^TMP($J global:
 | 
|---|
| 133 |  ;         Piece 1 = patient DFN
 | 
|---|
| 134 |  ;         Piece 2 = special meal date/time
 | 
|---|
| 135 |  ;         Piece 3 = status
 | 
|---|
| 136 |  ;         Piece 4 = diet
 | 
|---|
| 137 |  ;         Piece 5 = requestor
 | 
|---|
| 138 |  ;         Piece 6 = authorizor
 | 
|---|
| 139 |  ;         Piece 7 = authorize/deny date/time
 | 
|---|
| 140 |  ;         Piece 8 = comment
 | 
|---|
| 141 |  ;         Piece 9 = meal
 | 
|---|
| 142 |  ;         Piece 10 = early/late tray time
 | 
|---|
| 143 |  ;         Piece 11 = early/late tray bagged meal
 | 
|---|
| 144 |  ;         Piece 12 = early/late tray clerk
 | 
|---|
| 145 |  ;         Piece 13 = SERVICE (T,C,D or combination of 3)
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ;error:
 | 
|---|
| 148 |  ;         ^TMP($J,"OP","ER")
 | 
|---|
| 149 |  K ^TMP($J,"OP","S")
 | 
|---|
| 150 |  D NEWVAR
 | 
|---|
| 151 |  S FHSDT=FHSDT-.000001
 | 
|---|
| 152 |  I '$O(^FHPT("SM",FHSDT)) S ^TMP($J,"OP","ER")="NO SPECIAL MEALS FOR THIS DATE RANGE" Q
 | 
|---|
| 153 |  S:FHLOC="" FHLOC="ALL"
 | 
|---|
| 154 |  S:FHCOM="" FHCOM="ALL"
 | 
|---|
| 155 |  S:FHSDFN="" FHSDFN="ALL"
 | 
|---|
| 156 |  S FHS="ACDP"
 | 
|---|
| 157 |  F FHSMDT=FHSDT:0 S FHSMDT=$O(^FHPT("SM",FHSMDT)) Q:FHSMDT'>0  D
 | 
|---|
| 158 |  .F FHDFN=0:0 S FHDFN=$O(^FHPT("SM",FHSMDT,FHDFN)) Q:FHDFN'>0  D
 | 
|---|
| 159 |  ..I $G(FHSDFN),(FHSDFN'=FHDFN) Q
 | 
|---|
| 160 |  ..S (FHLCOMN,FHLCOM,FHLOCN,FHPTNM,FHDIET,FHTCD)=""
 | 
|---|
| 161 |  ..S FHNODE=$G(^FHPT(FHDFN,"SM",FHSMDT,0))
 | 
|---|
| 162 |  ..S FHSTAT=$P(FHNODE,U,2)
 | 
|---|
| 163 |  ..I FHS'[FHSTAT Q
 | 
|---|
| 164 |  ..S FHSTAT=$S(FHSTAT="P":"PENDING",FHSTAT="A":"AUTHORIZED",FHSTAT="D":"DENIED",1:"CANCELLED")
 | 
|---|
| 165 |  ..D PATNAME^FHOMUTL S FHPTNM=$E(FHPTNM,1,18)
 | 
|---|
| 166 |  ..S:FHPTNM="" FHPTNM="***"
 | 
|---|
| 167 |  ..S FHD=$$FMTE^XLFDT(FHSMDT,"P")
 | 
|---|
| 168 |  ..S FHD=$E(FHD,1,12)
 | 
|---|
| 169 |  ..S FHSTAT=$P(FHNODE,U,2)
 | 
|---|
| 170 |  ..S FHLPT=$P(FHNODE,U,3)
 | 
|---|
| 171 |  ..I $G(FHLOC),FHLOC'=FHLPT Q
 | 
|---|
| 172 |  ..S:$G(FHLPT) FHLCOM=$P($G(^FH(119.6,FHLPT,0)),U,8)
 | 
|---|
| 173 |  ..I $G(FHCOM),FHCOM'=FHLCOM Q  ;quit if d same communication office
 | 
|---|
| 174 |  ..S:$G(FHLCOM) FHLCOMN=$P($G(^FH(119.73,FHLCOM,0)),U,1)
 | 
|---|
| 175 |  ..S:FHLCOMN="" FHLCOMN="***"
 | 
|---|
| 176 |  ..I $G(FHLPT) D
 | 
|---|
| 177 |  ...S FHLOCN=$P($G(^FH(119.6,FHLPT,0)),U,1)
 | 
|---|
| 178 |  ...S:$P($G(^FH(119.6,FHLPT,0)),U,5) FHTCD=FHTCD_"T"
 | 
|---|
| 179 |  ...S:$P($G(^FH(119.6,FHLPT,0)),U,6) FHTCD=FHTCD_"C"
 | 
|---|
| 180 |  ...S:$P($G(^FH(119.6,FHLPT,0)),U,7) FHTCD=FHTCD_"D"
 | 
|---|
| 181 |  ..S:FHLOCN="" FHLOCN="***"
 | 
|---|
| 182 |  ..S FHDPT=$P(FHNODE,U,4)
 | 
|---|
| 183 |  ..S:$G(FHDPT) FHDIET=$P($G(^FH(111,FHDPT,0)),U,1)
 | 
|---|
| 184 |  ..S:FHDIET="" FHDIET="***"
 | 
|---|
| 185 |  ..S (FHAUTR,FHREQ)=""
 | 
|---|
| 186 |  ..S FHCOMM=$P(FHNODE,U,8)
 | 
|---|
| 187 |  ..S FHMEAL=$P(FHNODE,U,9)
 | 
|---|
| 188 |  ..S FHADDT=$P(FHNODE,U,7)
 | 
|---|
| 189 |  ..S FHAUTR=$P(FHNODE,U,6)
 | 
|---|
| 190 |  ..S FHREQ=$P(FHNODE,U,5)
 | 
|---|
| 191 |  ..S:$L(FHCOMM)>70 FHCOMM=$E(FHCOMM,1,70)
 | 
|---|
| 192 |  ..I $G(FHAUTR),($D(^VA(200,FHAUTR,0))) S FHAUTR=$P(^VA(200,FHAUTR,0),U,1)
 | 
|---|
| 193 |  ..I $G(FHREQ),($D(^VA(200,FHREQ,0))) S FHREQ=$P(^VA(200,FHREQ,0),U,1)
 | 
|---|
| 194 |  ..S (FHELT,FHELBG,FHELC)=""
 | 
|---|
| 195 |  ..I $D(^FHPT(FHDFN,"SM",FHSMDT,1)) D
 | 
|---|
| 196 |  ...S FHEL=$G(^FHPT(FHDFN,"SM",FHSMDT,1))
 | 
|---|
| 197 |  ...S FHELT=$P(FHEL,U,1)
 | 
|---|
| 198 |  ...S FHELBG=$P(FHEL,U,2)
 | 
|---|
| 199 |  ...S FHELC=$P(FHEL,U,3)
 | 
|---|
| 200 |  ..S FHDAT=FHDFN_"^"_FHD_"^"_FHSTAT_"^"_FHDIET_"^"_FHREQ
 | 
|---|
| 201 |  ..S FHDAT=FHDAT_"^"_FHAUTR_"^"_FHADDT_"^"_FHCOMM
 | 
|---|
| 202 |  ..S FHDAT=FHDAT_"^"_FHMEAL_"^"_FHELT_"^"_FHELBG_"^"_FHELC_"^"_FHTCD
 | 
|---|
| 203 |  ..S ^TMP($J,"OP","S",FHLCOMN,FHLOCN,FHPTNM,FHSMDT)=FHDAT
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 | NEWVAR ;new all variables.
 | 
|---|
| 207 |  N FHPTNM,FHD,FHDIET,FHMEAL,FHELTT,FHELBG,FHDAT,FHSTAT,FHLPT
 | 
|---|
| 208 |  N FHAGE,FHCH,FHCL,FHDOB,FHGMDT,FHML,FHNODE,FHPCZN,FHSEX,FHSSN,FILE
 | 
|---|
| 209 |  N FHDAT,FHDPT,FHEL,FHLPT,FHS,FHSMDT,FHSTAT,FHNN,FH
 | 
|---|
| 210 |  Q
 | 
|---|