1 | PXRMREDF ; SLC/PJH - Edit PXRM reminder findings. ;02/09/2006
|
---|
2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
3 | ;
|
---|
4 | ; Called by PXRMREDT which newes and initialized DEF, DEF1, DEF2.
|
---|
5 | ;
|
---|
6 | SET S:'$D(^PXD(811.9,DA,20,0)) ^PXD(811.9,DA,20,0)="^811.902V" Q
|
---|
7 | ;Display ALL findings
|
---|
8 | ;
|
---|
9 | ;--------------------
|
---|
10 | DSPALL(TYPE,NODE,DA,LIST) ;
|
---|
11 | N FIRST,SUB,SUB1,SUB2
|
---|
12 | S FIRST=1,SUB="",SUB1="",SUB2=""
|
---|
13 | F S SUB=$O(LIST(SUB)) Q:SUB="" D
|
---|
14 | .S SUB1=0
|
---|
15 | .F S SUB1=$O(LIST(SUB,SUB1)) Q:SUB1="" D
|
---|
16 | ..S SUB2=0 F S SUB2=$O(LIST(SUB,SUB1,SUB2)) Q:SUB2="" D
|
---|
17 | ...I FIRST S FIRST=0 W !!,"Choose from:",!
|
---|
18 | ...W SUB
|
---|
19 | ...W ?5,SUB1,?65,"Finding #: "_SUB2,!
|
---|
20 | I FIRST,TYPE="D" W !!,"Reminder has no findings",!
|
---|
21 | I FIRST,TYPE="T" W !!,"Reminder Term has no findings",!
|
---|
22 | ;Update
|
---|
23 | D LIST^PXRMREDT(NODE,DA,.LIST)
|
---|
24 | Q
|
---|
25 | ;
|
---|
26 | ;Edit individual FINDING entry
|
---|
27 | ;-----------------------------
|
---|
28 | FEDIT(IEN) ;
|
---|
29 | N CFIEN,DA,DIC,DIE,DR,ETYPE,GLOB
|
---|
30 | N STATUS,TERMSTAT,TIEN,TERMTYPE,VF,WPIEN,Y
|
---|
31 | S DA(1)=IEN
|
---|
32 | S DIC="^PXD(811.9,"_IEN_",20,"
|
---|
33 | I $P(^PXD(811.9,IEN,100),U)="N",$G(PXRMINST)'=1 S DIC(0)="QEA"
|
---|
34 | E S DIC(0)="QEAL"
|
---|
35 | S DIC("A")="Select FINDING: "
|
---|
36 | S DIC("P")="811.902V"
|
---|
37 | D ^DIC I Y=-1 S DTOUT=1 Q
|
---|
38 | S DIE=DIC K DIC
|
---|
39 | S DA=+Y,GLOB=$P($P(Y,U,2),";",2) Q:GLOB=""
|
---|
40 | S TYPE=$G(DEF1(GLOB))
|
---|
41 | S SDA(2)=DA(1),SDA(1)=DA
|
---|
42 | ;Save term IEN
|
---|
43 | S STATUS=0
|
---|
44 | I TYPE="RT" S TIEN=$P($P(Y,U,2),";",1)
|
---|
45 | I TYPE="CF" S CFIEN=$P($P(Y,U,2),";",1) D
|
---|
46 | .I $D(^PXRMD(811.4,CFIEN,1))>0 D
|
---|
47 | ..W !!,"Computed Finding Description:" S WPIEN=0
|
---|
48 | ..F S WPIEN=$O(^PXRMD(811.4,CFIEN,1,WPIEN)) Q:+WPIEN'>0 D
|
---|
49 | ...W !,$G(^PXRMD(811.4,CFIEN,1,WPIEN,0))
|
---|
50 | .E W !!,"No description defined for this computed finding"
|
---|
51 | ;Finding record fields
|
---|
52 | W !!,"Editing Finding Number: "_$G(DA)
|
---|
53 | S DR=".01;3;I X=""0Y"" S Y=6;1;2;6;7;8;9;12;17"
|
---|
54 | ;Taxonomy - use inactive problems
|
---|
55 | I TYPE="TX" D
|
---|
56 | .S TERMSTAT=$$TAXNODE^PXRMSTA1($P($P(Y,U,2),";"),"H")
|
---|
57 | .I TERMSTAT="P" S DR=DR_";10" Q
|
---|
58 | .I TERMSTAT'=0 S DR=DR_";10",STATUS=1
|
---|
59 | I TYPE="RT" D
|
---|
60 | .S TERMTYPE=$$TERMTYPE(TIEN)
|
---|
61 | .I TERMTYPE["H" S DR=DR_";11"
|
---|
62 | ;Health Factor - within category rank
|
---|
63 | I TYPE="HF" S DR=DR_";11"
|
---|
64 | ;If V file INCLUDE VISIT DATA
|
---|
65 | S VF=$S(TYPE="ED":1,TYPE="EX":1,TYPE="HF":1,TYPE="IM":1,TYPE="ST":1,TYPE="TX":1,1:0)
|
---|
66 | I TYPE="RT",$P(TERMTYPE,U,2)="VF" S VF=1
|
---|
67 | I VF S DR=DR_";28"
|
---|
68 | ;
|
---|
69 | ;Mental Health - scale
|
---|
70 | I TYPE="MH" S DR=DR_";13"
|
---|
71 | ;Radiology procedure.
|
---|
72 | I TYPE="RP" S STATUS=1
|
---|
73 | ;Orderable Item
|
---|
74 | I TYPE="OI" S DR=DR_";27",STATUS=1
|
---|
75 | ;Rx Type
|
---|
76 | I (TYPE="DC")!(TYPE="DG")!(TYPE="DR") S DR=DR_";16;27",STATUS=1
|
---|
77 | ;Condition
|
---|
78 | S DR=DR_";14;15;18"
|
---|
79 | I TYPE="CF" S DR=DR_";26"
|
---|
80 | ;Found/not found text
|
---|
81 | S DR=DR_";4;5"
|
---|
82 | ;
|
---|
83 | I TYPE="RT" D
|
---|
84 | . I TERMTYPE["D" S DR=DR_";16;27",STATUS=1
|
---|
85 | . I TERMTYPE["O" S DR=DR_";27",STATUS=1
|
---|
86 | . I TERMTYPE["R" S STATUS=1
|
---|
87 | . I TERMTYPE["T" S STATUS=1
|
---|
88 | .I TERMTYPE[2 D
|
---|
89 | .. N MSG
|
---|
90 | .. S MSG(1)="Cannot set a status since the term contains multiple types of findings"
|
---|
91 | .. S MSG(2)="Edit the status field at the term level for each finding" H 2
|
---|
92 | .. D EN^DDIOL(.MSG)
|
---|
93 | ;Edit finding record
|
---|
94 | D ^DIE
|
---|
95 | S $P(^PXD(811.9,IEN,20,0),U,3)=0
|
---|
96 | I $D(Y) S DTOUT=1 Q
|
---|
97 | ;Check if deleted
|
---|
98 | I '$D(DA) Q
|
---|
99 | I STATUS=1 D STATUS^PXRMSTA1(.DA,"D")
|
---|
100 | ;
|
---|
101 | S ETYPE=$P(^PXD(811.9,IEN,20,SDA(1),0),U,1)
|
---|
102 | ;Option to edit term findings
|
---|
103 | I $P(ETYPE,";",2)="PXRMD(811.5," D
|
---|
104 | . S TIEN=$P(ETYPE,";",1)
|
---|
105 | . D TMAP(IEN,TIEN)
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | ;Edit individual function finding entry
|
---|
109 | ;-----------------------------
|
---|
110 | FFEDIT(IEN) ;
|
---|
111 | N DA,DIC,DIE,DR,Y
|
---|
112 | S DA(1)=IEN
|
---|
113 | S DIC="^PXD(811.9,"_IEN_",25,"
|
---|
114 | S DIC(0)="QEAL"
|
---|
115 | S DIC("A")="Select FUNCTION FINDING: "
|
---|
116 | D ^DIC
|
---|
117 | I Y=-1 S DTOUT=1 Q
|
---|
118 | S DIE=DIC K DIC
|
---|
119 | S DA=+Y
|
---|
120 | ;Finding record fields
|
---|
121 | S DR=".01;3"
|
---|
122 | ;Edit finding record
|
---|
123 | D ^DIE
|
---|
124 | I $D(Y) S DTOUT=1 Q
|
---|
125 | I '$D(DA) Q
|
---|
126 | ;If the function string is null don't do the rest of the fields.
|
---|
127 | I $G(^PXD(811.9,IEN,25,DA,3))="" Q
|
---|
128 | S DR="1;2;11;12;15;I X=""0Y"" S Y=16;13;14;16"
|
---|
129 | D ^DIE
|
---|
130 | I $D(Y) S DTOUT=1 Q
|
---|
131 | I '$D(DA) Q
|
---|
132 | ;Check if deleted
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | ;Edit Reminder Function Findings
|
---|
136 | ;----------------------
|
---|
137 | FFIND ;
|
---|
138 | N DTOUT,DUOUT
|
---|
139 | F D Q:$D(DUOUT)!$D(DTOUT)
|
---|
140 | .D FFEDIT(DA) I $D(DUOUT)!$D(DTOUT) Q
|
---|
141 | K DUOUT,DTOUT
|
---|
142 | Q
|
---|
143 | ;
|
---|
144 | ;Edit Reminder Findings
|
---|
145 | ;----------------------
|
---|
146 | FIND(LIST) ;
|
---|
147 | N DTOUT,DUOUT,NODE,SDA
|
---|
148 | D SET ; Check if node defined
|
---|
149 | S NODE="^PXD(811.9)"
|
---|
150 | F D Q:$D(DUOUT)!$D(DTOUT)
|
---|
151 | .;Display list of existing reminder findings
|
---|
152 | .W !!,"Reminder Definition Findings"
|
---|
153 | .D DSPALL("D",NODE,DA,.LIST)
|
---|
154 | .;Edit findings
|
---|
155 | .D FEDIT(DA) I $D(DUOUT)!$D(DTOUT) D LIST^PXRMREDT(NODE,DA,.LIST) Q
|
---|
156 | .;Update list with finding changes
|
---|
157 | .D LIST^PXRMREDT(NODE,DA,.LIST)
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | ;General help text routine
|
---|
161 | ;-------------------------
|
---|
162 | HELP(CALL) ;
|
---|
163 | N HTEXT
|
---|
164 | N DIWF,DIWL,DIWR,IC
|
---|
165 | S DIWF="C70",DIWL=0,DIWR=70
|
---|
166 | ;
|
---|
167 | I CALL=1 D
|
---|
168 | .S HTEXT(1)="Select the type of finding you wish to change or add."
|
---|
169 | .S HTEXT(2)="Type '?' for a list of the available finding types."
|
---|
170 | I CALL=2 D
|
---|
171 | .S HTEXT(1)="Select section of the reminder you wish to edit or 'All'"
|
---|
172 | .S HTEXT(2)="to step through all sections of the reminder definition."
|
---|
173 | I CALL=3 D
|
---|
174 | .S HTEXT(1)="Select 'Y' to edit the findings mapped to this term"
|
---|
175 | .S HTEXT(2)="or 'N' to return to select another reminder finding."
|
---|
176 | ;
|
---|
177 | K ^UTILITY($J,"W")
|
---|
178 | S IC=""
|
---|
179 | F S IC=$O(HTEXT(IC)) Q:IC="" D
|
---|
180 | . S X=HTEXT(IC)
|
---|
181 | . D ^DIWP
|
---|
182 | W !
|
---|
183 | S IC=0
|
---|
184 | F S IC=$O(^UTILITY($J,"W",0,IC)) Q:IC="" D
|
---|
185 | . W !,^UTILITY($J,"W",0,IC,0)
|
---|
186 | K ^UTILITY($J,"W")
|
---|
187 | W !
|
---|
188 | Q
|
---|
189 | ;
|
---|
190 | ;Display TERM findings
|
---|
191 | ;--------------------
|
---|
192 | TDSP(DA) ;
|
---|
193 | N FIRST,SUB,TLST S FIRST=1,SUB="",SUB1=""
|
---|
194 | ;Build list of term findings
|
---|
195 | D TLST(.TLST,DA)
|
---|
196 | ;Display list
|
---|
197 | F S SUB=$O(TLST(SUB)) Q:SUB="" D
|
---|
198 | .S SUB1=0
|
---|
199 | .F S SUB1=$O(TLST(SUB,SUB1)) Q:SUB1="" D
|
---|
200 | ..I FIRST S FIRST=0 W !!,"Reminder Term Findings:",!!
|
---|
201 | ..W SUB
|
---|
202 | ..W ?8,SUB1,!
|
---|
203 | I FIRST W !!,"Term has no mapped findings",!!
|
---|
204 | Q
|
---|
205 | ;
|
---|
206 | ;List Reminders using this term
|
---|
207 | ;------------------------------
|
---|
208 | TERMS(TIEN,RIEN) ;
|
---|
209 | ;RIEN will be the reminder ien if called from reminder edit
|
---|
210 | ;or zero if called from term edit
|
---|
211 | N ARRAY,FIND,IEN,SUB,TCNT,RNAME
|
---|
212 | ;Scan all reminders in file #811.9
|
---|
213 | S IEN=0,FIND="PXRMD(811.5,",TCNT=0
|
---|
214 | F S IEN=$O(^PXD(811.9,IEN)) Q:'IEN D
|
---|
215 | .;Exclude current reminder called in reminder edit
|
---|
216 | .I RIEN,IEN=RIEN Q
|
---|
217 | .;Check the term findings
|
---|
218 | .I '$D(^PXD(811.9,IEN,20,"E",FIND,TIEN)) Q
|
---|
219 | .;Add to reminder array
|
---|
220 | .S RNAME=$P($G(^PXD(811.9,IEN,0)),U)
|
---|
221 | .I RNAME="" S RNAME=IEN
|
---|
222 | .I '$D(ARRAY(RNAME)) S TCNT=TCNT+1
|
---|
223 | .S ARRAY(RNAME)=""
|
---|
224 | ;
|
---|
225 | ;Display list of reminders using the term
|
---|
226 | I TCNT D
|
---|
227 | .N TXT
|
---|
228 | .S TXT="This Reminder Term is" S:RIEN TXT=TXT_" also"
|
---|
229 | .S TXT=TXT_" used by the following Reminder Definition"
|
---|
230 | .I TCNT>1 S TXT=TXT_"s"
|
---|
231 | .W !!,TXT_":"
|
---|
232 | .S RNAME="" F S RNAME=$O(ARRAY(RNAME)) Q:RNAME="" W !," ",RNAME
|
---|
233 | Q
|
---|
234 | ;
|
---|
235 | ;------------------------------
|
---|
236 | ;Check term for finding item to edit status item
|
---|
237 | TERMTYPE(TIEN) ;
|
---|
238 | N DRUG,FOUND,HF,ORD,OTHER,RAD,RESULT,TAX,TYPE,VF
|
---|
239 | S (DRUG,FOUND,HF,ORD,OTHER,RAD,RESULT,TAX,VF)=0
|
---|
240 | S TYPE="" F S TYPE=$O(^PXRMD(811.5,TIEN,20,"B",TYPE)) Q:TYPE="" D
|
---|
241 | . I TYPE["AUTTEDT(" S (OTHER,VF)=1 Q
|
---|
242 | . I TYPE["AUTTHF(" S (HF,OTHER,VF)=1 Q
|
---|
243 | . I TYPE["AUTTIMM(" S (OTHER,VF)=1 Q
|
---|
244 | . I TYPE["AUTTSK(" S (OTHER,VF)=1 Q
|
---|
245 | . I TYPE["ORD" S (ORD,FOUND)=1 Q
|
---|
246 | . I TYPE["PS" S (DRUG,FOUND)=1 Q
|
---|
247 | . I TYPE["PXD(811.2" S (FOUND,TAX,VF)=1 Q
|
---|
248 | . I TYPE["RAMIS" S (FOUND,RAD)=1 Q
|
---|
249 | . S OTHER=1
|
---|
250 | I RAD=1,ORD=0,TAX=0,DRUG=0,OTHER=0 S RESULT="R"
|
---|
251 | I RAD=0,ORD=1,TAX=0,DRUG=0,OTHER=0 S RESULT="O"
|
---|
252 | I RAD=0,ORD=0,TAX=1,DRUG=0,OTHER=0 S RESULT="T"
|
---|
253 | I RAD=0,ORD=0,TAX=0,DRUG=1,OTHER=0 S RESULT="D"
|
---|
254 | I OTHER=1 S RESULT=1 I FOUND=1 S RESULT=2
|
---|
255 | I RESULT="T" S RESULT=$$TAXTYPE^PXRMSTA1(TIEN,"")
|
---|
256 | I HF=1 S RESULT="H"_RESULT
|
---|
257 | I VF=1 S RESULT=RESULT_U_"VF"
|
---|
258 | Q RESULT
|
---|
259 | ;
|
---|
260 | ;Build list of mapped findings for term
|
---|
261 | ;--------------------------------------
|
---|
262 | TLST(ARRAY,DA) ;
|
---|
263 | N TYPE,DATA,GLOB,IEN,NAME,NODE,SUB
|
---|
264 | ;Clear passed arrays
|
---|
265 | K ARRAY
|
---|
266 | ;Build cross reference global to file number
|
---|
267 | ;Get each finding
|
---|
268 | S SUB=0 F S SUB=$O(^PXRMD(811.5,DA,20,SUB)) Q:'SUB D
|
---|
269 | .S DATA=$G(^PXRMD(811.5,DA,20,SUB,0)) I DATA="" Q
|
---|
270 | .;Determine global and global ien
|
---|
271 | .S NODE=$P(DATA,U),GLOB=$P(NODE,";",2),IEN=$P(NODE,";")
|
---|
272 | .;Ignore null entries
|
---|
273 | .I (GLOB="")!(IEN="") Q
|
---|
274 | .;Work out the file type
|
---|
275 | .S TYPE=$G(DEF1(GLOB)) Q:TYPE=""
|
---|
276 | .S NAME=$P($G(@(U_GLOB_IEN_",0)")),U)
|
---|
277 | .S ARRAY(TYPE,NAME)=""
|
---|
278 | Q
|
---|
279 | ;
|
---|
280 | ;Map Term findings
|
---|
281 | ;-----------------
|
---|
282 | TMAP(RIEN,TIEN) ;
|
---|
283 | N TOPT,TNAM
|
---|
284 | ;Display any other reminders using this term
|
---|
285 | D TERMS(TIEN,RIEN)
|
---|
286 | ;Term name
|
---|
287 | S TNAM=$P($G(^PXRMD(811.5,TIEN,0)),U)
|
---|
288 | ;Give option to edit mapped findings (Y/N)
|
---|
289 | D TMASK(.TOPT,TNAM) Q:$D(DUOUT)!($D(DTOUT))
|
---|
290 | ;Edit term findings
|
---|
291 | I TOPT="Y" D TRMED(TIEN)
|
---|
292 | Q
|
---|
293 | ;
|
---|
294 | ;Option to edit term findings
|
---|
295 | ;----------------------------
|
---|
296 | TMASK(YESNO,TNAM) ;
|
---|
297 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
298 | S DIR(0)="YA0"
|
---|
299 | S DIR("A")="Do you want to edit mapped findings for "_TNAM_": "
|
---|
300 | S (DIR("B"),YESNO)="N"
|
---|
301 | S DIR("?")="Enter Y or N. For detailed help type ??"
|
---|
302 | S DIR("??")=U_"D HELP^PXRMREDF(3)"
|
---|
303 | W !
|
---|
304 | D ^DIR K DIR
|
---|
305 | I $D(DIROUT)!$D(DIRUT) Q
|
---|
306 | I $D(DTOUT)!$D(DUOUT) Q
|
---|
307 | S YESNO=$E(Y(0))
|
---|
308 | Q
|
---|
309 | ;
|
---|
310 | ;Term edit
|
---|
311 | ;---------
|
---|
312 | TRMED(DA) ;
|
---|
313 | N CS1,CS2,DIC,DLAYGO,DTOUT,DUOUT,Y
|
---|
314 | K DLAYGO,DTOUT,DUOUT,Y
|
---|
315 | ;Display term findings
|
---|
316 | D TDSP(DA)
|
---|
317 | ;Initialize change history
|
---|
318 | S CS1=$$FILE^PXRMEXCS(811.5,DA)
|
---|
319 | ;Edit term findings
|
---|
320 | S DIC="^PXRMD(811.5,"
|
---|
321 | D EDIT^PXRMTMED(DIC,DA)
|
---|
322 | ;Update change history
|
---|
323 | S CS2=$$FILE^PXRMEXCS(811.5,DA)
|
---|
324 | I CS2=0 Q
|
---|
325 | I CS2'=CS1 D SEHIST^PXRMUTIL(811.5,DIC,DA)
|
---|
326 | Q
|
---|
327 | ;
|
---|