1 | PXRMREDT ; SLC/PKR,PJH - Edit PXRM reminder definition. ;02/09/2006
|
---|
2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
3 | ;
|
---|
4 | ;=======================================================
|
---|
5 | EEDIT ;Entry point for PXRM DEFINITION EDIT option.
|
---|
6 | ;Build list of finding file definitions.
|
---|
7 | N DEF,DEF1,DEF2
|
---|
8 | D DEF^PXRMRUTL("811.902",.DEF,.DEF1,.DEF2)
|
---|
9 | ;
|
---|
10 | N DA,DIC,DLAYGO,DTOUT,DUOUT,Y
|
---|
11 | S DIC="^PXD(811.9,"
|
---|
12 | S DIC(0)="AEMQL"
|
---|
13 | S DIC("A")="Select Reminder Definition: "
|
---|
14 | S DLAYGO=811.9
|
---|
15 | GETNAME ;Get the name of the reminder definition to edit.
|
---|
16 | ;Set the starting place for additions.
|
---|
17 | D SETSTART^PXRMCOPY(DIC)
|
---|
18 | W !
|
---|
19 | D ^DIC
|
---|
20 | I ($D(DTOUT))!($D(DUOUT)) Q
|
---|
21 | I Y=-1 G END
|
---|
22 | S DA=$P(Y,U,1)
|
---|
23 | D ALL(DIC,DA)
|
---|
24 | G GETNAME
|
---|
25 | END ;
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | ;=======================================================
|
---|
29 | ;Select section of reminder to edit, also called at ALL by PXRMEDIT.
|
---|
30 | ;----------------------------------
|
---|
31 | ALL(DIC,DA) ;
|
---|
32 | ;Get list of findings/terms for reminder
|
---|
33 | N BLDLOGIC,CS1,CS2,LIST,NODE,OPTION,TYPE
|
---|
34 | S BLDLOGIC=0
|
---|
35 | ;Save the original checksum.
|
---|
36 | S CS1=$$FILE^PXRMEXCS(811.9,DA)
|
---|
37 | ;Build finding list
|
---|
38 | S NODE="^PXD(811.9)"
|
---|
39 | D LIST(NODE,DA,.LIST)
|
---|
40 | ;If this is a new reminder enter all fields
|
---|
41 | I $P(Y,U,3)=1 D EDIT(DIC,DA) Q
|
---|
42 | ;National reminder allows editing of term findings only
|
---|
43 | I '$$VEDIT^PXRMUTIL(DIC,DA) D Q:$D(DUOUT)!$D(DTOUT)
|
---|
44 | .S TYPE=""
|
---|
45 | .F S TYPE=$O(LIST(TYPE)) Q:TYPE="" D
|
---|
46 | .. I TYPE="RT" Q
|
---|
47 | .. K LIST(TYPE)
|
---|
48 | .I '$D(LIST) S DUOUT=1 Q
|
---|
49 | .S BLDLOGIC=1
|
---|
50 | .D TFIND(DA,.LIST)
|
---|
51 | .I $D(Y) S DUOUT=1
|
---|
52 | ;Otherwise choose fields to edit
|
---|
53 | I $$VEDIT^PXRMUTIL(DIC,DA) F D Q:$D(DUOUT)!$D(DTOUT)
|
---|
54 | .D OPTION Q:$D(DUOUT)!$D(DTOUT)
|
---|
55 | .;All details
|
---|
56 | .I OPTION="A" D
|
---|
57 | .. S BLDLOGIC=1
|
---|
58 | .. D EDIT(DIC,DA)
|
---|
59 | .;Set up local variables
|
---|
60 | .N DIE,DR S DIE=DIC N DIC
|
---|
61 | .;Descriptions
|
---|
62 | .I OPTION="G" D
|
---|
63 | ..D GEN
|
---|
64 | .;Baseline Frequency
|
---|
65 | .I OPTION="B" D
|
---|
66 | ..S BLDLOGIC=1
|
---|
67 | ..D BASE
|
---|
68 | .;Findings
|
---|
69 | .I OPTION="F" D
|
---|
70 | ..S BLDLOGIC=1
|
---|
71 | ..D FIND(.LIST)
|
---|
72 | .;Function findings
|
---|
73 | .I OPTION="FF" D
|
---|
74 | ..S BLDLOGIC=1
|
---|
75 | ..D FFIND
|
---|
76 | .;Logic
|
---|
77 | .I OPTION="L" D
|
---|
78 | ..S BLDLOGIC=1
|
---|
79 | ..D LOGIC
|
---|
80 | .;Custom date due
|
---|
81 | . I OPTION="C" D
|
---|
82 | ..S BLDLOGIC=1
|
---|
83 | ..D CDUE
|
---|
84 | .;Dialog
|
---|
85 | .I OPTION="D" D
|
---|
86 | ..D DIALOG
|
---|
87 | .;Web addresses
|
---|
88 | .I OPTION="W" D
|
---|
89 | ..D WEB
|
---|
90 | .;If necessary build the internal logic strings.
|
---|
91 | .I BLDLOGIC D BLDALL^PXRMLOGX(DA,"","")
|
---|
92 | ;See if any changes have been made.
|
---|
93 | S CS2=$$FILE^PXRMEXCS(811.9,DA)
|
---|
94 | I CS2=0 Q
|
---|
95 | ;If the file has been edited, do the edit history.
|
---|
96 | I CS2'=CS1 D SEHIST^PXRMUTIL(811.9,DIC,DA)
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | ;Reminder Edit
|
---|
100 | ;-------------
|
---|
101 | EDIT(ROOT,DA) ;
|
---|
102 | N DIC,DIDEL,DIE,DR,RESULT
|
---|
103 | S DIE=ROOT,DIDEL=811.9
|
---|
104 | ;Edit the fields in the same order they are printed by a reminder
|
---|
105 | ;inquiry.
|
---|
106 | ;Reminder name
|
---|
107 | W !!
|
---|
108 | S DR=".01"
|
---|
109 | D ^DIE
|
---|
110 | ;If DA is undefined then the entry was deleted and we are done.
|
---|
111 | I '$D(DA) S DTOUT=1 Q
|
---|
112 | I $D(Y) S DTOUT=1 Q
|
---|
113 | ;
|
---|
114 | ;Other fields
|
---|
115 | D GEN Q:$D(Y)
|
---|
116 | D BASE Q:$D(Y)
|
---|
117 | D FIND(.LIST) Q:$D(Y)
|
---|
118 | D FFIND Q:$D(Y)
|
---|
119 | D LOGIC Q:$D(Y)
|
---|
120 | D DIALOG Q:$D(Y)
|
---|
121 | D WEB Q:$D(Y)
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | GEN ;Print name
|
---|
125 | W !!
|
---|
126 | S DR="1.2"
|
---|
127 | D ^DIE
|
---|
128 | I $D(Y) Q
|
---|
129 | ;
|
---|
130 | CLASS ;
|
---|
131 | ;Class
|
---|
132 | W !!
|
---|
133 | S DR="100"
|
---|
134 | D ^DIE
|
---|
135 | I $D(Y) Q
|
---|
136 | ;Sponsor
|
---|
137 | S DR="101"
|
---|
138 | D ^DIE
|
---|
139 | I $D(Y) Q
|
---|
140 | ;Make sure Class and Sponsor Class are in synch.
|
---|
141 | S RESULT=$$VSPONSOR^PXRMINTR(X)
|
---|
142 | I RESULT=0 G CLASS
|
---|
143 | ;Review date, Usage
|
---|
144 | S DR="102;103"
|
---|
145 | D ^DIE
|
---|
146 | I $D(Y) Q
|
---|
147 | ;
|
---|
148 | ;Related VA-* reminder
|
---|
149 | W !!
|
---|
150 | S DR="1.4"
|
---|
151 | D ^DIE
|
---|
152 | I $D(Y) Q
|
---|
153 | ;
|
---|
154 | ;Inactive flag
|
---|
155 | W !!
|
---|
156 | S DR="1.6"
|
---|
157 | D ^DIE
|
---|
158 | I $D(Y) Q
|
---|
159 | ;Ignore on N/A
|
---|
160 | S DR=1.8
|
---|
161 | D ^DIE
|
---|
162 | I $D(Y) Q
|
---|
163 | ;
|
---|
164 | ;Recision Date
|
---|
165 | S DR="69"
|
---|
166 | D ^DIE
|
---|
167 | I $D(Y) Q
|
---|
168 | ;
|
---|
169 | ;Reminder description
|
---|
170 | W !!
|
---|
171 | S DR="2"
|
---|
172 | D ^DIE
|
---|
173 | I $D(Y) Q
|
---|
174 | ;
|
---|
175 | ;Technical description
|
---|
176 | W !!
|
---|
177 | S DR="3"
|
---|
178 | D ^DIE
|
---|
179 | ;
|
---|
180 | ;Priority
|
---|
181 | W !!
|
---|
182 | S DR="1.91"
|
---|
183 | D ^DIE
|
---|
184 | Q
|
---|
185 | ;
|
---|
186 | BASE W !!,"Baseline Frequency"
|
---|
187 | ;Do in advance time frame
|
---|
188 | S DR=1.3
|
---|
189 | D ^DIE
|
---|
190 | I $D(Y) Q
|
---|
191 | ;
|
---|
192 | ;Sex specific
|
---|
193 | S DR=1.9
|
---|
194 | D ^DIE
|
---|
195 | I $D(Y) Q
|
---|
196 | FARS ;
|
---|
197 | W !!,"Baseline frequency age range set"
|
---|
198 | S DR="7"
|
---|
199 | S DR(2,811.97)=".01;1;2;3;4"
|
---|
200 | D ^DIE
|
---|
201 | I $$OVLAP^PXRMAGE G FARS
|
---|
202 | D SNMLA^PXRMFNFT(DA)
|
---|
203 | Q
|
---|
204 | ;
|
---|
205 | FIND(LIST) ;Edit findings (multiple)
|
---|
206 | D FIND^PXRMREDF(.LIST)
|
---|
207 | D SNMLF^PXRMFNFT(DA,20)
|
---|
208 | Q
|
---|
209 | ;
|
---|
210 | FFIND W !!,"Function Findings"
|
---|
211 | D FFIND^PXRMREDF
|
---|
212 | D SNMLF^PXRMFNFT(DA,25)
|
---|
213 | Q
|
---|
214 | ;
|
---|
215 | LOGIC W !!,"Patient Cohort and Resolution Logic"
|
---|
216 | S DR="30T;60T;61T;70T;71T;34T;65T;66T;75T;76T"
|
---|
217 | D ^DIE
|
---|
218 | ;Make sure the Patient Cohort Logic at least contains the default.
|
---|
219 | I $G(^PXD(811.9,DA,31))="" D
|
---|
220 | . S ^PXD(811.9,DA,31)="(SEX)&(AGE)"
|
---|
221 | . S ^PXD(811.9,DA,32)="2"_U_"SEX;AGE"
|
---|
222 | D SNMLL^PXRMFNFT(DA)
|
---|
223 | Q
|
---|
224 | CDUE W !!,"Custom Date Due"
|
---|
225 | S DR=45
|
---|
226 | D ^DIE
|
---|
227 | Q
|
---|
228 | ;
|
---|
229 | DIALOG W !!,"Reminder Dialog"
|
---|
230 | S DR="51"
|
---|
231 | D ^DIE
|
---|
232 | Q
|
---|
233 | ;
|
---|
234 | WEB W !!,"Web Addresses for Reminder Information"
|
---|
235 | S DR="50"
|
---|
236 | D ^DIE
|
---|
237 | Q
|
---|
238 | ;
|
---|
239 | ;Get full list of findings
|
---|
240 | ;-------------------------
|
---|
241 | LIST(GBL,DA,ARRAY) ;
|
---|
242 | N CNT,DATA,GLOB,IEN,NAME,NODE,SUB,TYPE
|
---|
243 | ;Clear passed arrays
|
---|
244 | K ARRAY
|
---|
245 | S CNT=0
|
---|
246 | ;Build cross reference global to file number
|
---|
247 | ;Get each finding
|
---|
248 | S SUB=0 F S SUB=$O(@GBL@(DA,20,SUB)) Q:'SUB D
|
---|
249 | .S DATA=$G(@GBL@(DA,20,SUB,0)) I DATA="" Q
|
---|
250 | .;Determine global and global ien
|
---|
251 | .S NODE=$P(DATA,U),GLOB=$P(NODE,";",2),IEN=$P(NODE,";")
|
---|
252 | .;Ignore null entries
|
---|
253 | .I (GLOB="")!(IEN="") Q
|
---|
254 | .;Work out the file type
|
---|
255 | .S TYPE=$G(DEF1(GLOB)) Q:TYPE=""
|
---|
256 | .S CNT=CNT+1
|
---|
257 | .I $P($G(@(U_GLOB_IEN_",0)")),U)="" D
|
---|
258 | ..W !,"**WARNING** Finding #"_SUB_" does not exist, select finding `"_SUB_" to edit it." Q
|
---|
259 | .E S NAME=$P($G(@(U_GLOB_IEN_",0)")),U) S ARRAY(TYPE,NAME,SUB)=IEN
|
---|
260 | .;E S NAME=$P($G(@(U_GLOB_IEN_",0)")),U) S ARRAY(TYPE,NAME,SUB)=$G(SUB)
|
---|
261 | Q
|
---|
262 | ;
|
---|
263 | ;Choose which part of Reminder to edit
|
---|
264 | ;-------------------------------------
|
---|
265 | OPTION N DIR,X,Y
|
---|
266 | ;Display warning message if un-mapped terms exist
|
---|
267 | K DIROUT,DIRUT,DTOUT,DUOUT
|
---|
268 | S DIR(0)="SO"_U
|
---|
269 | S DIR(0)=DIR(0)_"A:All reminder details;"
|
---|
270 | S DIR(0)=DIR(0)_"G:General;"
|
---|
271 | S DIR(0)=DIR(0)_"B:Baseline Frequency;"
|
---|
272 | S DIR(0)=DIR(0)_"F:Findings;"
|
---|
273 | S DIR(0)=DIR(0)_"FF:Function Findings;"
|
---|
274 | S DIR(0)=DIR(0)_"L:Logic;"
|
---|
275 | S DIR(0)=DIR(0)_"C:Custom date due;"
|
---|
276 | S DIR(0)=DIR(0)_"D:Reminder Dialog;"
|
---|
277 | S DIR(0)=DIR(0)_"W:Web Addresses;"
|
---|
278 | S DIR("A")="Select section to edit"
|
---|
279 | S DIR("?")="Select which section of the reminder you wish to edit."
|
---|
280 | S DIR("??")="^D HELP^PXRMREDF(2)"
|
---|
281 | D ^DIR K DIR
|
---|
282 | I Y="" S DUOUT=1 Q
|
---|
283 | I $D(DIROUT) S DTOUT=1
|
---|
284 | I $D(DTOUT)!$D(DUOUT) Q
|
---|
285 | S OPTION=Y
|
---|
286 | Q
|
---|
287 | ;
|
---|
288 | ;-------------------------------------
|
---|
289 | TFIND(DA,LIST) ;Allow edit of term findings for national reminders.
|
---|
290 | N DIR,IENLIST,IND,NAME,NAMELIST,SUB,X,Y
|
---|
291 | S IND=0,NAME=""
|
---|
292 | F S NAME=$O(LIST("RT",NAME)) Q:NAME="" D
|
---|
293 | . S IND=IND+1
|
---|
294 | . S NAMELIST(IND)=$$RJ^XLFSTR(IND,3)_" "_NAME
|
---|
295 | . S SUB=$O(LIST("RT",NAME,""))
|
---|
296 | . S IENLIST(IND)=LIST("RT",NAME,SUB)
|
---|
297 | M DIR("A")=NAMELIST
|
---|
298 | S DIR("A")="Enter your list"
|
---|
299 | S DIR(0)="LO^1:"_IND
|
---|
300 | W !!,"Select term(s) for finding edit:"
|
---|
301 | D ^DIR
|
---|
302 | I $D(DIROUT)!$D(DIRUT) S LIST="" Q
|
---|
303 | I $D(DUOUT)!$D(DTOUT) S LIST="" Q
|
---|
304 | S LIST=Y
|
---|
305 | F IND=1:1:$L(Y,",")-1 D
|
---|
306 | . S NAME=$P(NAMELIST(IND),IND,2)
|
---|
307 | . W !!,"Reminder Term:",NAME
|
---|
308 | . D TMAP^PXRMREDF(DA,IENLIST(IND))
|
---|
309 | Q
|
---|
310 | ;
|
---|