1 | IBDECLN ;ALB/AAS - Clean up Data Qualifiers and Package interfaces ; 23-JUN-97
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**14,36**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | UPDATE(TALK) ; -- update both qualifiers and package interface file
|
---|
5 | ; -- do the qualifiers first to rename bad ones
|
---|
6 | ;
|
---|
7 | ; -- input Talk, 1=send messages through mes^xpdutl (default is 1)
|
---|
8 | ; 0=no messages
|
---|
9 | ;
|
---|
10 | S:$G(TALK)="" TALK=1
|
---|
11 | S TALK=$TR(TALK,"yesnomaybe","YESNOMAYBE")
|
---|
12 | S:$G(TALK)="YES" TALK=1
|
---|
13 | S TALK=+$G(TALK)
|
---|
14 | D CLNQLF(TALK),CLNPI(TALK)
|
---|
15 | D CLNSEL^IBDECLN1(TALK)
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | CLNPI(TALK) ;
|
---|
19 | ; -- update/delete Allowable Qualifiers in Package Interface file
|
---|
20 | N I,J,K,L,X,Y,CNT,CNT1,CNT2,CNT3,CNT4,ENTRY,PI,QLF,NODE,FILE
|
---|
21 | N IEN,PROBLEM,QLFNODE,DATA,QLFNUM,NNODE,ONODE,NLEN,TOT
|
---|
22 | K ^TMP($J,"IBDE CLN")
|
---|
23 | S (CNT,CNT1,CNT2,CNT3,CNT4)=0
|
---|
24 | ;
|
---|
25 | S (X(1),X(3))=" "
|
---|
26 | S X(2)=">>> Now checking the PACKAGE INTERFACE file for inappropriate data qualifiers."
|
---|
27 | D:TALK MES^XPDUTL(.X)
|
---|
28 | ;
|
---|
29 | ; -- build array of input package interfaces and qualifiers
|
---|
30 | ; sent out with version 3.0
|
---|
31 | S I=0
|
---|
32 | F I=1:1 S ENTRY=$P($T(OUTPUT+I^IBDECLN2),";;",2) Q:ENTRY="" D
|
---|
33 | . I $E(ENTRY)="~" Q
|
---|
34 | . I $E(ENTRY)'="+" D Q
|
---|
35 | .. S PI=$E($P(ENTRY,":",1),1,30)
|
---|
36 | .. S DATA=$P(ENTRY,":",2)
|
---|
37 | .. S ^TMP($J,"IBDE CLN",PI,12)=DATA
|
---|
38 | . I $E(ENTRY)="+" D Q
|
---|
39 | .. S QLF=$E($P(ENTRY,":",1),2,99)
|
---|
40 | .. S QLFNUM=+$O(^IBD(357.98,"B",$E(QLF,1,30),0))
|
---|
41 | .. Q:QLFNUM=0
|
---|
42 | .. S DATA=QLFNUM_$P(ENTRY,":",2)
|
---|
43 | .. S ^TMP($J,"IBDE CLN",PI,"QLF",QLF)=DATA
|
---|
44 | ;
|
---|
45 | ; -- now go through the supported list of Package Interface entries
|
---|
46 | ; and make sure that the main PCE DIM data is correct (node 12)
|
---|
47 | ;
|
---|
48 | S PI=""
|
---|
49 | F S PI=$O(^TMP($J,"IBDE CLN",PI)) Q:PI="" D
|
---|
50 | . S (J,K)=0
|
---|
51 | . F S J=$O(^IBE(357.6,"B",PI,J)) Q:'J D
|
---|
52 | .. S NNODE=$G(^TMP($J,"IBDE CLN",PI,12))
|
---|
53 | .. Q:NNODE=""
|
---|
54 | .. S ONODE=$G(^IBE(357.6,J,12))
|
---|
55 | .. S NLEN=$L(NNODE)
|
---|
56 | .. I $E(ONODE,1,NLEN)'=NNODE D DEL(TALK,PI,J,K,20,NNODE,ONODE)
|
---|
57 | ;
|
---|
58 | ; -- now go through the qualifiers for the package interface
|
---|
59 | ; and make sure that only supported qualifiers are listed,
|
---|
60 | ; no duplicates, and that the data is correct.
|
---|
61 | ;
|
---|
62 | S PI=""
|
---|
63 | S (CNT1,CNT3)=0
|
---|
64 | F S PI=$O(^TMP($J,"IBDE CLN",PI)) Q:PI="" D
|
---|
65 | . S (J,K)=0
|
---|
66 | . F S J=$O(^IBE(357.6,"B",PI,J)) Q:'J D
|
---|
67 | .. N CNT1,ONODE,NNODE,PIQLF
|
---|
68 | .. S K=0
|
---|
69 | .. F S K=$O(^IBE(357.6,J,13,K)) Q:K="" D
|
---|
70 | ... ;
|
---|
71 | ... S ONODE=$G(^IBE(357.6,J,13,K,0)) Q:ONODE=""
|
---|
72 | ... S FILE=$P($P(ONODE,"^",1),";",2)
|
---|
73 | ... Q:FILE'="IBD(357.98,"
|
---|
74 | ... S IEN=+ONODE
|
---|
75 | ... S QLF=$P($G(^IBD(357.98,IEN,0),"UNKNOWN"),"^",1)
|
---|
76 | ... S PIQLF(QLF)=""
|
---|
77 | ... ;
|
---|
78 | ... ; -- now if there is a duplicate, delete the duplicate
|
---|
79 | ... S NNODE=$G(^TMP($J,"IBDE CLN",PI,"QLF",QLF))
|
---|
80 | ... I NNODE="" D DEL(TALK,PI,J,K,1) Q
|
---|
81 | ... S CNT1(PI,QLF)=$G(CNT1(PI,QLF))+1
|
---|
82 | ... I CNT1(PI,QLF)>1 D DEL(TALK,PI,J,K,2) Q
|
---|
83 | ... ;
|
---|
84 | ... S NLEN=$L(NNODE)
|
---|
85 | ... I $E(ONODE,1,NLEN)'=NNODE D DEL(TALK,PI,J,K,21,NNODE,ONODE)
|
---|
86 | .. ; --check to see if all allowable qualifiers exist if not, add
|
---|
87 | .. S QLF="" F S QLF=$O(^TMP($J,"IBDE CLN",PI,"QLF",QLF)) Q:QLF']"" D
|
---|
88 | ... N FILE,DATA,IBDFDA,QLFNODE,NIEN,ERROR
|
---|
89 | ... Q:$D(PIQLF(QLF))
|
---|
90 | ... S FILE=357.613,IBDFDA(1)=J
|
---|
91 | ... S QLFNODE=$G(^TMP($J,"IBDE CLN",PI,"QLF",QLF))
|
---|
92 | ... S DATA(.01)=$P(QLFNODE,"^")
|
---|
93 | ... Q:DATA(.01)=""
|
---|
94 | ... S NIEN=$$ADD^IBDFDBS(FILE,.IBDFDA,.DATA,.ERROR)
|
---|
95 | ... D:+NIEN>0 DEL(TALK,PI,J,NIEN,22,QLFNODE)
|
---|
96 | ;
|
---|
97 | G:'TALK END
|
---|
98 | ;
|
---|
99 | ; -- Find out if Problem is in PCE DIM NODE in 357.6
|
---|
100 | ; if so, then user is warned to contact customer service
|
---|
101 | ; to be manually corrected
|
---|
102 | D PROBLEM^IBDECLN1(.PROBLEM)
|
---|
103 | I PROBLEM>0 D
|
---|
104 | . S X(1)=" ",X(2)=" >> WARNING: The following interfaces use the PROBLEM node to transmit data"
|
---|
105 | . D:TALK MES^XPDUTL(.X)
|
---|
106 | . S I=0 ;skip the zero node, contains PI stuff
|
---|
107 | . F S I=$O(PROBLEM(I)) Q:I="" D:TALK MES^XPDUTL(" Package Interface "_PROBLEM(I))
|
---|
108 | . D:TALK MES^XPDUTL(" Contact Customer Support for assistance updating the package interface file.")
|
---|
109 | ;
|
---|
110 | ;
|
---|
111 | SUM ; -- summary of package interface file check
|
---|
112 | K X
|
---|
113 | S TOT=2
|
---|
114 | S X(1)=" "
|
---|
115 | S X(2)=" >> Summary of the Package Interface Check:"
|
---|
116 | ;
|
---|
117 | I CNT<1,CNT2<1,CNT3<1,CNT4<1 D
|
---|
118 | . S TOT=TOT+1,X(TOT)=" No required changes were found."
|
---|
119 | ;
|
---|
120 | I CNT>0 D
|
---|
121 | . S TOT=TOT+1
|
---|
122 | . S X(TOT)=" A total of "_CNT_" qualifier"_$S(CNT=1:" was",1:"s were")_" removed from Package Interface Entries."
|
---|
123 | ;
|
---|
124 | ;
|
---|
125 | I CNT2>0 D
|
---|
126 | . S TOT=TOT+1
|
---|
127 | . S X(TOT)=" The PCE DIM data fields for "_CNT2_" Package Interface"_$S(CNT2=1:" was",1:"s were")_" updated."
|
---|
128 | ;
|
---|
129 | I CNT3>0 D
|
---|
130 | . S TOT=TOT+1
|
---|
131 | . S X(TOT)=" The PCE DIM data fields for "_CNT3_" Allowable Qualifier"_$S(CNT3=1:" was",1:"s were")_" updated."
|
---|
132 | ;
|
---|
133 | I CNT4>0 D
|
---|
134 | . S TOT=TOT+1
|
---|
135 | . S X(TOT)=" A total of "_CNT4_" Allowable Qualifier"_$S(CNT4=1:" was",1:"s were")_" added."
|
---|
136 | I PROBLEM>0 D
|
---|
137 | . S TOT=TOT+1,X(TOT)=" Contact Customer Support for assistance updating the package interface file."
|
---|
138 | ;
|
---|
139 | D:TALK MES^XPDUTL(.X)
|
---|
140 | ;
|
---|
141 | END K ^TMP($J,"IBDE CLN")
|
---|
142 | Q
|
---|
143 | ;
|
---|
144 | DEL(TALK,PI,J,K,REASON,NNODE,ONODE) ; -- delete inappropriate entries
|
---|
145 | ;
|
---|
146 | ; reasons for deletion or warnings
|
---|
147 | ; 1- invalid qualifier
|
---|
148 | ; 2- duplicate qualifier
|
---|
149 | ; 9- bad qualifier, not deleted, user warned
|
---|
150 | ; 20-node ^IBE(357.6,IEN,12) not correct
|
---|
151 | ; 21-node ^IBE(357.6,IEN,13,allow qual,0) not correct
|
---|
152 | ;
|
---|
153 | N I,X,Y,DA,DIC,DIK
|
---|
154 | I (REASON=1!(REASON=2)) S CNT=CNT+1
|
---|
155 | S CNT(PI)=+$G(CNT(PI))+1
|
---|
156 | I CNT(PI)=1 D
|
---|
157 | . S X(1)=" ",X(2)=" The Package Interface "_PI_" had: "
|
---|
158 | . D:TALK MES^XPDUTL(.X) N X
|
---|
159 | D:(TALK&(REASON=1)) MES^XPDUTL(" an invalid qualifier of "_QLF_" deleted.")
|
---|
160 | D:(TALK&(REASON=2)) MES^XPDUTL(" a duplicate qualifier of "_QLF_" deleted.")
|
---|
161 | I TALK&(REASON=9) D MES^XPDUTL(" a bad qualifier of "_QLF_" not deleted, PCE DIM NODE='PROBLEM'") Q ;don't delete, save for manual update
|
---|
162 | ;
|
---|
163 | I REASON<10 S DA=K,DA(1)=J,DIK="^IBE(357.6,"_DA(1)_",13," D ^DIK Q
|
---|
164 | ;
|
---|
165 | I TALK&(REASON=20) D
|
---|
166 | . N X
|
---|
167 | . S X(1)=" The PCE Device Interface Data Updated."
|
---|
168 | . S X(2)=" Old Data: "_ONODE
|
---|
169 | . S X(3)=" New Data: "_NNODE
|
---|
170 | . D:TALK MES^XPDUTL(.X)
|
---|
171 | . S CNT2=CNT2+1
|
---|
172 | . S ^IBE(357.6,J,12)=NNODE
|
---|
173 | ;
|
---|
174 | I TALK&(REASON=21) D
|
---|
175 | . N X
|
---|
176 | . S X(1)=" The PCE Device Interface Data for the Data Qualifier "_QLF_" was updated."
|
---|
177 | . S X(2)=" Old Data: "_ONODE
|
---|
178 | . S X(3)=" New Data: "_NNODE
|
---|
179 | . D:TALK MES^XPDUTL(.X)
|
---|
180 | . S CNT3=CNT3+1
|
---|
181 | . S ^IBE(357.6,J,13,K,0)=NNODE
|
---|
182 | ;
|
---|
183 | I TALK&(REASON=22) D
|
---|
184 | . S CNT4=CNT4+1
|
---|
185 | . D MES^XPDUTL(" "_QLF_" was added.")
|
---|
186 | . S ^IBE(357.6,J,13,K,0)=NNODE
|
---|
187 | Q
|
---|
188 | ;
|
---|
189 | CLNQLF(TALK) ;
|
---|
190 | ; -- update codes in AICS DATA QUALIFIERS file (357.98)
|
---|
191 | ; according to version 3.0
|
---|
192 | N I,J,K,L,X,Y,CNT,CNT1,CNT2,CNT3,ENTRY,NAME,CODE,NEWNAME,IBQUIT,DIC,DIE,DIK,DA,DR
|
---|
193 | S (CNT,CNT1)=0,CNT2=1
|
---|
194 | ;
|
---|
195 | S (X(1),X(3))=" "
|
---|
196 | S X(2)=">>> Now checking the AICS DATA QUALIFIERS file for inappropriate entries."
|
---|
197 | D:TALK MES^XPDUTL(.X)
|
---|
198 | ;
|
---|
199 | ; -- Go through AICS Data Qualifiers and set up correctly
|
---|
200 | F I=1:1:28 S ENTRY=$P($T(DATA+I),";;",2) Q:ENTRY="" D
|
---|
201 | . S CNT=CNT+1
|
---|
202 | . S NAME=$P(ENTRY,"^",1)
|
---|
203 | . S CODE=$P(ENTRY,"^",2)
|
---|
204 | . S J=""
|
---|
205 | . F S J=$O(^IBD(357.98,"B",NAME,J)) Q:J="" D
|
---|
206 | .. I $P($G(^IBD(357.98,J,0)),"^",2)=CODE Q
|
---|
207 | .. ;
|
---|
208 | .. ; -- don't change Active=1 and Inactive=0 if Problem
|
---|
209 | .. I $P($G(^IBE(357.6,J,12)),"^",1)="PROBLEM",NAME="ACTIVE"!(NAME="INACTIVE") D Q:IBQUIT
|
---|
210 | ... S IBQUIT=0
|
---|
211 | ... I NAME="ACTIVE",($P($G(^IBD(357.98,J,0)),"^",2)=1) D
|
---|
212 | ....S IBQUIT=1
|
---|
213 | ....D MES^XPDUTL(" The qualifier ACTIVE with a code of 1 needs to be changed but is used.")
|
---|
214 | ... I NAME="INACTIVE",($P($G(^IBD(357.98,J,0)),"^",2)=0) D
|
---|
215 | ....S IBQUIT=1
|
---|
216 | ....D MES^XPDUTL(" The qualifier of INACTIVE with a code of 0 needs to be changed but is used.")
|
---|
217 | ..
|
---|
218 | .. ; -- keep track of what was changed
|
---|
219 | .. S CNT(NAME)=$G(CNT(NAME))+1
|
---|
220 | .. S CNT1=CNT1+1,CNT2=CNT2+1
|
---|
221 | .. S CNT3(CNT2)=" The Entry "_$G(^IBD(357.98,J,0))_" changed to ZZBAD-"_ENTRY
|
---|
222 | .. ;
|
---|
223 | .. ; -- see if it's used
|
---|
224 | .. S K=0 F S K=$O(^IBE(357.6,K)) Q:'K I $D(^IBE(357.6,K,13)) D
|
---|
225 | ... S L=0 F S L=$O(^IBE(357.6,K,13,L)) Q:'L I $P($G(^IBE(357.6,K,13,L,0)),"^",1)=(J_";IBD(357.98,") D
|
---|
226 | .... S CNT2=CNT2+1
|
---|
227 | .... S CNT3(CNT2)=" and was used by Package File entry "_$P($G(^IBE(357.6,K,0)),"^",1)
|
---|
228 | .. ;
|
---|
229 | .. ; -- finally, make the change
|
---|
230 | .. S NEWNAME=$E("ZZBAD-"_$P(^IBD(357.98,J,0),"^",1),1,30)
|
---|
231 | .. S DIE="^IBD(357.98,",DA=J,DR=".01////^S X=NEWNAME;.02////^S X=CODE"
|
---|
232 | .. N I,J,K,L,X,Y D ^DIE K DIE,DA,DR
|
---|
233 | ;
|
---|
234 | ;
|
---|
235 | ; -- reindex the file
|
---|
236 | S DIK="^IBD(357.98,"
|
---|
237 | D IXALL^DIK
|
---|
238 | ;
|
---|
239 | ; summary of the aics data qualifiers check
|
---|
240 | ;
|
---|
241 | K X
|
---|
242 | S X(1)=" ",X(2)=" >> Summary of the AICS Data Qualifiers Check:"
|
---|
243 | D:TALK MES^XPDUTL(.X)
|
---|
244 | K X
|
---|
245 | I $G(CNT1)>0 M X=CNT3 S X(1)=" The number of changes made was "_CNT1
|
---|
246 | I CNT1=0 S X(1)=" No required changes were found.",X(2)=" "
|
---|
247 | I CNT1>1 S (X(CNT2+1),X(CNT2+3))=" ",X(CNT2+2)=" >> Done updating the AICS DATA QUALIFIERS file"
|
---|
248 | D:TALK MES^XPDUTL(.X)
|
---|
249 | Q
|
---|
250 | ;
|
---|
251 | DATA ;;
|
---|
252 | ;;NONE APPLICABLE^
|
---|
253 | ;;PRIMARY^P^P
|
---|
254 | ;;SECONDARY^S^S
|
---|
255 | ;;ACTIVE^A^A
|
---|
256 | ;;INACTIVE^I^I
|
---|
257 | ;;HISTORICAL^H
|
---|
258 | ;;ADD TO PROBLEM LIST^1^ADD
|
---|
259 | ;;SERVICE CONNECTED^1^SC
|
---|
260 | ;;AGENT ORANGE RELATED^1^AO
|
---|
261 | ;;IONIZING RADIATION RELATED^1^IR
|
---|
262 | ;;ENVIRONMENTAL CONTAMINANTS RELATED^1^EC
|
---|
263 | ;;MILITARY SEXUAL TRAUMA^1^MST
|
---|
264 | ;;ABNORMAL RESULT^A^ABNORM
|
---|
265 | ;;NORMAL RESULT^N^NORM
|
---|
266 | ;;POOR UNDERSTANDING^1^POOR
|
---|
267 | ;;FAIR UNDERSTANDING^2^FAIR
|
---|
268 | ;;GOOD UNDERSTANDING^3^GOOD
|
---|
269 | ;;UNDERSTANDING NOT ASSESSED^4^N/A
|
---|
270 | ;;PATIENT ED REFUSED^5^REFUSED
|
---|
271 | ;;MINIMAL SEVERITY^M^MINIMAL
|
---|
272 | ;;MODERATE SEVERITY^MO^MODERATE
|
---|
273 | ;;HEAVY SEVERITY^H^SEVERE
|
---|
274 | ;;YES^1^YES
|
---|
275 | ;;NO^0^NO
|
---|
276 | ;;CONTRAINDICATED^1^CONTRA.
|
---|
277 | ;;GIVEN^0^GIV
|
---|
278 | ;;REFUSED^1^REFUSED
|
---|
279 | ;;NON-SERVICE CONNECTED^0^NSC
|
---|
280 | ;;NO CLASSIFICATIONS^1^NO CLASSIF
|
---|
281 | ;;
|
---|