[623] | 1 | ECXUTL6 ;ALB/JRC - Utilities for DSS Extracts ; 11/2/06 8:30am
|
---|
| 2 | ;;3.0;DSS EXTRACTS;**92**;Dec 22, 1997;Build 30
|
---|
| 3 | ;
|
---|
| 4 | NUTKEY(P,D) ;Generate n&fs feeder key
|
---|
| 5 | ;Required variables
|
---|
| 6 | ; p - diet type production diet, standing orders, supplemental
|
---|
| 7 | ; feedings, or tube feedings.
|
---|
| 8 | ; d - diet ien from files 116.2, 116.3, 118, or 118.2
|
---|
| 9 | ;Check input
|
---|
| 10 | I $G(P)=""!'$G(D) Q ""
|
---|
| 11 | ;Init variables
|
---|
| 12 | N PRO,IENS,CODE,DIET
|
---|
| 13 | S (PRO,IENS,CODE,DIET)=0
|
---|
| 14 | S PRO=$O(^ECX(728.45,"B",P,PRO))
|
---|
| 15 | S CODE=D_$S(P="PD":";FH(116.2,",P="SO":";FH(116.3,",P="SF":";FH(118,",P="TF":";FH(118.2,",1:"")
|
---|
| 16 | S DIET=0,DIET=$O(^ECX(728.45,+PRO,1,"B",CODE,DIET))
|
---|
| 17 | S IENS=""_DIET_","_PRO_","_""
|
---|
| 18 | Q $$GET1^DIQ(728.451,IENS,1)
|
---|
| 19 | ;
|
---|
| 20 | NUTLOC(P,D,FPD,FDD,FPF,DLT,DFL) ;Define nutrition fields
|
---|
| 21 | ;Required variables
|
---|
| 22 | ; p - patient status, inpatient or outpatient
|
---|
| 23 | ;
|
---|
| 24 | ; d - diet type production diet, standing orders, supplemental
|
---|
| 25 | ; feedings, or tube feedings.
|
---|
| 26 | ; Output: food production division, food delivery division, food
|
---|
| 27 | ; production facility, food delivery type, delivery feeder
|
---|
| 28 | ; location
|
---|
| 29 | ;Init variables
|
---|
| 30 | N WARD,TRSVP,OPLOC,MASWARD
|
---|
| 31 | S TRSVP=0,(WARD,ECXDLT,ECXDFL,MASWARD)=""
|
---|
| 32 | S OPLOC=""
|
---|
| 33 | ;Check input
|
---|
| 34 | I $G(P)=""!($G(D)="")!'($G(FHDFN)) Q ""
|
---|
| 35 | ;Get food production facility for inpatient, use 115.1.13 (dietetic
|
---|
| 36 | ;ward) field which points 119.6 (nutrition location), field 3 (tray
|
---|
| 37 | ;service point) or field 4 (cafeteria service point), which points to
|
---|
| 38 | ;119.72 (production facility) field 2.
|
---|
| 39 | I P="INP" D
|
---|
| 40 | .S WARD=$P($G(^FHPT(FHDFN,"A",ECXADM,0)),U,8)
|
---|
| 41 | .S TRSVP=$$GET1^DIQ(119.6,WARD,3,"I")
|
---|
| 42 | .;Get divisions
|
---|
| 43 | .D GETDIV
|
---|
| 44 | .Q
|
---|
| 45 | ;
|
---|
| 46 | ;Get food production facility for outpatient recurring meal, use
|
---|
| 47 | ;115.16.2 (outpatient location) which points to file 119.6 (nutrition
|
---|
| 48 | ;location) field 3 (tray service point) or field 4 (cafeteria service
|
---|
| 49 | ;point), which points to 119.72 (production facility) field 2.
|
---|
| 50 | I P["OP",D["RM" D
|
---|
| 51 | .S OPLOC=""_$P(NODE,U,3)_","_"",TRSVP=$$GET1^DIQ(119.6,OPLOC,3,"I")
|
---|
| 52 | .D GETDIV
|
---|
| 53 | .Q
|
---|
| 54 | ;
|
---|
| 55 | ;Get food production facility for outpatient tube feeding, use
|
---|
| 56 | ;115.16.2 (outpatient location) then use 119.6 nutrition location
|
---|
| 57 | ;which points to 119.72 field 2.
|
---|
| 58 | I P["OP",D["TF" D
|
---|
| 59 | .S OPLOC=""_$P(^TMP($J,"FH",DATE,FHDFN,NUMBER,"RM"),U,3)_","_""
|
---|
| 60 | .S TRSVP=$$GET1^DIQ(119.6,OPLOC,3,"I")
|
---|
| 61 | .;Get delivery division
|
---|
| 62 | .D GETDIV
|
---|
| 63 | .Q
|
---|
| 64 | ;
|
---|
| 65 | ;Get food production facility for special meals, use 115.17.2
|
---|
| 66 | ;location field 2 which is a pointer to 119.6 (nutrition location)
|
---|
| 67 | ;which points to 119.72 via field 2 (tray service point) which points
|
---|
| 68 | ;to file 119.71 (production facility) field 2.
|
---|
| 69 | I P["OP",D["SM" D
|
---|
| 70 | .S OPLOC=""_$P(NODE,U,3)_","_""
|
---|
| 71 | .S TRSVP=$$GET1^DIQ(119.6,OPLOC,3,"I")
|
---|
| 72 | .;Get delivery division
|
---|
| 73 | .D GETDIV
|
---|
| 74 | .Q
|
---|
| 75 | ;
|
---|
| 76 | ;Get food production facility for outpatient guest meals, use
|
---|
| 77 | ;115.18.4 (outpatient location) then use 119.6 nutrition location
|
---|
| 78 | ;which points to 119.72 (production facility) field 2.
|
---|
| 79 | I P["OP",D["GM" D
|
---|
| 80 | .S OPLOC=""_$P(NODE,U,5)_","_"",TRSVP=$$GET1^DIQ(119.6,OPLOC,3,"I")
|
---|
| 81 | .S ECXFPF=$$GET1^DIQ(119.72,""_TRSVP_","_"",2,"I")
|
---|
| 82 | .;Get delivery division
|
---|
| 83 | .D GETDIV
|
---|
| 84 | .Q
|
---|
| 85 | ;
|
---|
| 86 | ;Get delivery location type for patients; with inpatients the type of
|
---|
| 87 | ;service needs to be pulled from the admission node, with outpatients
|
---|
| 88 | ;the type of service needs to be pulled from different nodes and use
|
---|
| 89 | ;field 101 of Nutrition Location file (#119.6). Delivery location
|
---|
| 90 | ;types only set for the following meals:
|
---|
| 91 | ; Inpatient with a production diet
|
---|
| 92 | ; Outpatient with a recurring meal
|
---|
| 93 | ; Outpatient with a special meal
|
---|
| 94 | ; Outpatient with a guest meal
|
---|
| 95 | ; all other meals are null
|
---|
| 96 | I P="INP",D="PD" D
|
---|
| 97 | .S ECXDLT=$P($G(NODE),U,8)
|
---|
| 98 | I P="OP",((D="RM")!(D="SM")) D
|
---|
| 99 | .S ECXDLT=$E($$GET1^DIQ(119.6,""_$P(NODE,U,3)_","_"",101,"E"),1)
|
---|
| 100 | I P="OP",D="GM" D
|
---|
| 101 | .S ECXDLT=$E($$GET1^DIQ(119.6,""_$P(NODE,U,5)_","_"",101,"E"),1)
|
---|
| 102 | ;
|
---|
| 103 | ;Delivery feeder location
|
---|
| 104 | I ECXDLT="C" S ECXDFL=$P(NODE,U,8) D
|
---|
| 105 | .S ECXDFL=$E($$GET1^DIQ(119.72,ECXDFL,2,"E"),1,10)
|
---|
| 106 | I (ECXDLT["T")!(ECXDLT["D") D
|
---|
| 107 | .S MASWARD=$O(^FH(119.6,$S(WARD:+WARD,+OPLOC:+OPLOC,1:""),"W","B",0))
|
---|
| 108 | .S ECXDFL=$$GET1^DIQ(42,+MASWARD,44,"I")
|
---|
| 109 | Q 1
|
---|
| 110 | ;
|
---|
| 111 | GETDIV ;Get divisions and food production facility
|
---|
| 112 | ;Init variables
|
---|
| 113 | N IEN,SIEN
|
---|
| 114 | S (ECXFDD,ECXFPF,ECXFPD)=""
|
---|
| 115 | S IEN=$$GET1^DIQ(119.72,+TRSVP,2,"I")
|
---|
| 116 | Q:'IEN
|
---|
| 117 | ;Get delivery division
|
---|
| 118 | S SIEN=""_+TRSVP_";FH(119.72,"
|
---|
| 119 | S ECXFDD=$O(^ECX(728.46,"B",SIEN,ECXFDD))
|
---|
| 120 | S ECXFDD=""_$$GET1^DIQ(728.46,ECXFDD,1,"I")_","_""
|
---|
| 121 | S ECXFDD=$$GET1^DIQ(4,ECXFDD,99,"E")
|
---|
| 122 | ;Get production division and food production facility
|
---|
| 123 | S IEN=""_IEN_";FH(119.71,"
|
---|
| 124 | S ECXFPF=$O(^ECX(728.46,"B",IEN,ECXFPF))
|
---|
| 125 | S ECXFPD=""_$$GET1^DIQ(728.46,ECXFPF,1,"I")_","_""
|
---|
| 126 | S ECXFPD=$$GET1^DIQ(4,ECXFPD,99,"E")
|
---|
| 127 | S ECXFPF=$E($$GET1^DIQ(728.46,ECXFPF,.01,"E"),1,10)
|
---|
| 128 | Q
|
---|