| 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 | ;;
|
---|