1 | FHSELA1 ;Hines OIFO/RTK - Map GMR Allergy file to Food Prefs ;3/07/2007
|
---|
2 | ;;5.5;DIETETICS;**8,12**;Jan 28, 2005;Build 3
|
---|
3 | ;
|
---|
4 | ;10/16/2007 BAY/KAM FH*5.5*12 Remedy Call 210385 Do not allow
|
---|
5 | ; user to change Food Preference name or
|
---|
6 | ; LIKE/DISLIKE field
|
---|
7 | ;
|
---|
8 | CREATE ; Check for any missing Allergy-type FP's or one's not renamed in 115.2
|
---|
9 | ; and allow user to create the FP on the fly
|
---|
10 | D ^FHSELA2 S NUM=0,FHQUIT=0
|
---|
11 | W !!!,"The following Allergy Food Preference titles are not on file."
|
---|
12 | W !,"You may use this option to create these Food Preference entries:"
|
---|
13 | D CRLIST I NUM=0 W !,"No Food Preferences need to be mapped." D EXIT Q
|
---|
14 | I FHQUIT=1 D EXIT Q
|
---|
15 | I FHRESP=""!(FHRESP="M") D EXIT Q
|
---|
16 | S FHAFPNM=$P(FHLIST(FHRESP),"^",1)
|
---|
17 | W !,FHAFPNM," "
|
---|
18 | K DIR S DIR("A")="Add to Food Preference file",DIR(0)="Y" D ^DIR
|
---|
19 | I $D(DIRUT) D EXIT Q
|
---|
20 | I Y'=1 D CREATE Q
|
---|
21 | D ADD
|
---|
22 | W !!," ...done. ",FHAFPNM," Food Preference has been added!" H 1
|
---|
23 | D CREATE Q
|
---|
24 | D EXIT Q
|
---|
25 | CRLIST ;
|
---|
26 | W !!?5,"MISSING FOOD PREFERENCE LIST"
|
---|
27 | W !?5,"============================"
|
---|
28 | S FHSEL=0,FHK=""
|
---|
29 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK=""!(FHQUIT=1)!(FHSEL=1) D
|
---|
30 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99)
|
---|
31 | .S FHZ1="ALLERGY - "_$P(FHFPS,";",1)
|
---|
32 | .I $D(^FH(115.2,"B",FHZ1)) Q
|
---|
33 | .S NUM=NUM+1,PAD=$S($L(NUM)=1:" ",1:"") W !,PAD,NUM
|
---|
34 | .W ?8,FHZ1
|
---|
35 | .S FHLIST(NUM)=FHZ1_"^"_FHFPS
|
---|
36 | .I NUM#5=0!($O(^TMP($J,"FHALG",FHK))="") D PG Q
|
---|
37 | .Q
|
---|
38 | I FHQUIT=0,FHSEL=0,NUM#5'=0 D PG Q
|
---|
39 | Q
|
---|
40 | ADD ;
|
---|
41 | S FHALGMZ=1
|
---|
42 | S X=FHAFPNM K DIC,DO
|
---|
43 | S (DIC,DIE)="^FH(115.2,",DIC(0)="L" D FILE^DICN
|
---|
44 | ; 10/16/2007 BP/KAM FH*5.5*12 Default DISLIKE and prevent Food Preference name change in the next line
|
---|
45 | S (FHDA,DA)=+Y,DR="26;1////D"
|
---|
46 | D ^DIE K DA,DIE,DR
|
---|
47 | D TRAN^FHSEL1
|
---|
48 | Q
|
---|
49 | PG ;
|
---|
50 | S FHRESP="" W ! K DIR
|
---|
51 | S DIR("A")="Select Food Preference or 'M' to see more ('^' to EXIT)"
|
---|
52 | S DIR(0)="F",DIR("B")="M" D ^DIR I $D(DIRUT) S FHQUIT=1 Q
|
---|
53 | S FHRESP=Y
|
---|
54 | I FHRESP?1"M" Q
|
---|
55 | I FHRESP?1.3N,FHRESP>0,FHRESP<(NUM+1) S FHSEL=1 Q
|
---|
56 | W !!,"Select from 1 to ",NUM D PG Q
|
---|
57 | Q
|
---|
58 | MAP ; Map allergies by setting pointers in 115.2 to correct entries in 120.82
|
---|
59 | D ^FHSELA2
|
---|
60 | S FHK=""
|
---|
61 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK="" D
|
---|
62 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99)
|
---|
63 | .S FHZ1="ALLERGY - "_$P(FHFPS,";",1)
|
---|
64 | .I '$D(^FH(115.2,"B",FHZ1)) Q ;not set-up in 115.2, can't map
|
---|
65 | .S FHFPIEN=$O(^FH(115.2,"B",FHZ1,""))
|
---|
66 | .S FHALMP=$P(FHFPS,";",2,99) I FHALMP="" Q ;no allergies to map
|
---|
67 | .S FHZ=0 F S FHZ=FHZ+1 S FHANAM=$P(FHALMP,";",FHZ) Q:FHANAM="" D
|
---|
68 | ..D LOOKUP
|
---|
69 | Q
|
---|
70 | LOOKUP ; Look-up the Allergy in 120.82 and set the pointer
|
---|
71 | S FHX=FHANAM
|
---|
72 | F FHVAL=0:0 S FHVAL=$O(^GMRD(120.82,"B",FHX,FHVAL)) Q:FHVAL'>0 D
|
---|
73 | .I $D(^FH(115.2,FHFPIEN,"ALG","B",FHVAL)) Q ;pointer already exists
|
---|
74 | .S Y=FHVAL K DIC,DO S DA(1)=FHFPIEN,DIC="^FH(115.2,"_DA(1)_",""ALG"","
|
---|
75 | .S DIC(0)="L",DIC("P")=$P(^DD(115.2,25,0),U,2),X=+Y
|
---|
76 | .D FILE^DICN
|
---|
77 | Q
|
---|
78 | DISPMAP ;
|
---|
79 | W !!,"This option can be used to display the Standard GMR Allergy"
|
---|
80 | W !,"entries and the Food Preferences they map to.",!! K DIR
|
---|
81 | S DIR("A")="Display Map by Allergies or by Food Preferences (A/F): "
|
---|
82 | S DIR(0)="SA^A:Allergies;F:Food Preferences" D ^DIR
|
---|
83 | I $D(DIRUT) D EXIT Q
|
---|
84 | S FHSEL=Y
|
---|
85 | D DEV
|
---|
86 | Q
|
---|
87 | DEV ;get device and set up queue
|
---|
88 | W ! K %ZIS,IOP S %ZIS="Q" D ^%ZIS Q:POP
|
---|
89 | I '$D(IO("Q")) U IO D LISTMAP,^%ZISC,EXIT Q
|
---|
90 | S ZTRTN="LISTMAP^FHSELA1",ZTSAVE("FHSEL")=""
|
---|
91 | S ZTDESC="GMR Allergy/Food Preference Map Display" D ^%ZTLOAD
|
---|
92 | D ^%ZISC K %ZIS,IOP
|
---|
93 | D EXIT
|
---|
94 | Q
|
---|
95 | LISTMAP ; List Map by Allergies or by Food Preferences
|
---|
96 | I FHSEL="A" D LISTAL Q
|
---|
97 | I FHSEL="F" D LISTFP Q
|
---|
98 | Q
|
---|
99 | LISTFP ; List all the Allergy-type Food Pref's and corresponding GMR Allergies
|
---|
100 | D ^FHSELA2
|
---|
101 | S FHK="" W !!,"ALLERGY TYPE FOOD PREFERENCE MAP"
|
---|
102 | W !!,"NFS Food Preference Title",?40,"GMR Standard Allergy(s)"
|
---|
103 | W !,"==================================="
|
---|
104 | W ?40,"==================================="
|
---|
105 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK="" D
|
---|
106 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99),FHZ1=$P(FHFPS,";",1)
|
---|
107 | .W !,"ALLERGY - ",FHZ1
|
---|
108 | .S FHALMP=$P(FHFPS,";",2,99) I FHALMP="" W ?40,"** NONE **" Q
|
---|
109 | .S FHZ=0,N=0 F S FHZ=FHZ+1,FHANAM=$P(FHALMP,";",FHZ) Q:FHANAM="" D
|
---|
110 | ..W ?40,$S(FHZ>1:",",1:"") S N=N+$L(FHANAM)+1 W:N>40 !?40 S:N>40 N=0 W FHANAM I N=0 S N=N+$L(FHANAM)+1
|
---|
111 | D EXIT Q
|
---|
112 | LISTAL ; List all the GMR Allergies and the Food Pref to map to
|
---|
113 | D ^FHSELA2
|
---|
114 | S FHK="" W !!,"GMR STANDARD FOOD ALLERGY MAP"
|
---|
115 | W !!,"GMR Allergy Name",?25,"Corresponding NFS Food Preference"
|
---|
116 | W !,"=======================",?25,"===================================="
|
---|
117 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK="" D
|
---|
118 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99),FHZ1=$P(FHFPS,";",1)
|
---|
119 | .S FHALMP=$P(FHFPS,";",2,99) I FHALMP="" Q
|
---|
120 | .S FHZ=0,N=0 F S FHZ=FHZ+1,FHANAM=$P(FHALMP,";",FHZ) Q:FHANAM="" D
|
---|
121 | ..S ^TMP($J,"FHAL",FHANAM)="ALLERGY - "_FHZ1
|
---|
122 | S FHANAMZ=""
|
---|
123 | F S FHANAMZ=$O(^TMP($J,"FHAL",FHANAMZ)) Q:FHANAMZ="" D
|
---|
124 | .W !,FHANAMZ,?25,"...maps to: ",^TMP($J,"FHAL",FHANAMZ)
|
---|
125 | D EXIT Q
|
---|
126 | MISSING ; List all Food Pref's with no pointers to 120.82
|
---|
127 | D ^FHSELA2
|
---|
128 | S FHK=""
|
---|
129 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK="" D
|
---|
130 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99),FHZ1=$P(FHFPS,";",1)
|
---|
131 | .I $P(FHFPS,";",2)'="" Q
|
---|
132 | .W !?5,"ALLERGY - ",FHZ1," does not have corresponding 120.82 entries"
|
---|
133 | D EXIT Q
|
---|
134 | CHECK ; Check for any missing Allergy-type FP's or one's not renamed in 115.2
|
---|
135 | D ^FHSELA2
|
---|
136 | S FHK="",FLG=0
|
---|
137 | W !,"The following Food Preferences titles were not found in file #115.2:"
|
---|
138 | F S FHK=$O(^TMP($J,"FHALG",FHK)) Q:FHK="" D
|
---|
139 | .S FHFPS=$P(^TMP($J,"FHALG",FHK),";",1,99)
|
---|
140 | .S FHZ1="ALLERGY - "_$P(FHFPS,";",1)
|
---|
141 | .I '$D(^FH(115.2,"B",FHZ1)) W !,FHZ1 S FLG=1
|
---|
142 | I FLG=0 W !,"ALL FOOD PREFERENCES HAVE BEEN RENAMED!"
|
---|
143 | D EXIT Q
|
---|
144 | ;
|
---|
145 | UPDATE ;Update Food Preferences for all Patient's based on Allergies
|
---|
146 | D ^FHSELA2 S FHCOUNT=0,FHQT=0
|
---|
147 | W !!,"...Updating Patient Food Preferences based on Food-Type Allergies"
|
---|
148 | W "..." K FHMISS F FHDFN=0:0 S FHDFN=$O(^FHPT(FHDFN)) Q:FHDFN'>0 D
|
---|
149 | .S FHCOUNT=FHCOUNT+1 I FHCOUNT#100=0 W "."
|
---|
150 | .D GETZN^FHOMUTL I FILE'="P" Q
|
---|
151 | .S DFN=IEN D ALG^FHCLN I '$O(^TMP($J,"FHGMRAL","")) Q
|
---|
152 | .F FHGMRN=0:0 S FHGMRN=$O(^TMP($J,"FHGMRAL",FHGMRN)) Q:FHGMRN="" D UPDFP1^FHWGMR
|
---|
153 | I $G(FHPST8)=1 K ^TMP($J,"FHGMRAL"),^TMP($J,"FHMISS"),FHGMRN,FHMSAL,FHMSFP,FHMSPT,FHPST8,FHCOUNT Q
|
---|
154 | D LIST
|
---|
155 | K ^TMP($J,"FHGMRAL"),^TMP($J,"FHMISS"),FHGMRN,FHMSAL,FHMSFP,FHMSPT,FHPST8,FHCOUNT,FHQT
|
---|
156 | Q
|
---|
157 | LIST ;
|
---|
158 | I '$D(^TMP($J,"FHMISS")) Q
|
---|
159 | W !!,"The following entries need to be mapped in order to automatically"
|
---|
160 | W !,"update the Patient Food Preferences:",! S FHCOUNT=0,FHQT=0
|
---|
161 | S FHMSFP="" F S FHMSFP=$O(^TMP($J,"FHMISS",FHMSFP)) Q:FHMSFP=""!(FHQT=1) D
|
---|
162 | .W !,"'ALLERGY - ",FHMSFP,"'" S FHCOUNT=FHCOUNT+1
|
---|
163 | .S FHMSPT="" F S FHMSPT=$O(^TMP($J,"FHMISS",FHMSFP,FHMSPT)) Q:FHMSPT="" D
|
---|
164 | ..S FHMSAL=$P($G(^TMP($J,"FHMISS",FHMSFP,FHMSPT)),U,1)
|
---|
165 | ..W !?3,"Patient: ",$E(FHMSPT,1,30),?43,"Allergy: ",FHMSAL
|
---|
166 | ..S FHCOUNT=FHCOUNT+1
|
---|
167 | ..I FHCOUNT>14 S FHCOUNT=0 W ! K DIR S DIR(0)="E" D ^DIR W ! I X="^" S FHQT=1
|
---|
168 | Q
|
---|
169 | EXIT ;
|
---|
170 | D MAP
|
---|
171 | K ^TMP($J,"FHALG"),^TMP($J,"FHAL")
|
---|
172 | K FHFPIEN,FHK,FHX,FHZ,FHFPS,FHZ1,FHVAL,N,FHANAM,FHANAMZ
|
---|
173 | K FHQUIT,NUM,FHRESP,FHAFPNM,FHSEL,PAD,FHLIST,FHALGMZ,FHALMP
|
---|