| 1 | BPS01P5A ;BHAM ISC/BEE - Post-Install for BPS*1*5 (cont) ;13-DEC-06
|
|---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**5**;JUN 2004;Build 45
|
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
|---|
| 4 | ;
|
|---|
| 5 | Q
|
|---|
| 6 | ;
|
|---|
| 7 | ; Called by the BPS*1.0*5 Post-Install routine BPS01P5.
|
|---|
| 8 | ;
|
|---|
| 9 | ; This routine will convert or delete the invalid usage of globals
|
|---|
| 10 | ; ^BPSECX and ^BPSECP
|
|---|
| 11 | ; It will also delete several ECME files that are now obsolete
|
|---|
| 12 | ;
|
|---|
| 13 | ; ^BPSECX cleanup - Here are the nodes and what should be done
|
|---|
| 14 | ; "BPSOSRX" is the processing queue - Convert to XTMP and delete
|
|---|
| 15 | ; "R" is the BPS Report Master database (obsolete) and will be
|
|---|
| 16 | ; deleted by BPSO1P5
|
|---|
| 17 | ; "S" is the BPS Statistics database and should not be deleted
|
|---|
| 18 | ; "POS", "BPSOSQ3", and $J were for HL7 packet creation. They
|
|---|
| 19 | ; do not need to be converted and can just be killed.
|
|---|
| 20 | ;
|
|---|
| 21 | ;
|
|---|
| 22 | ; ^BPSECP cleanup - Here are the nodes and what should be done
|
|---|
| 23 | ; "CHECKTIM" - Used for queuing BPSOSQ1. This is no longer
|
|---|
| 24 | ; needed and can just be killed.
|
|---|
| 25 | ; "LOG" - Convert to BPS Log file and then delete.
|
|---|
| 26 | ;
|
|---|
| 27 | EN ;
|
|---|
| 28 | ; Remove XTMP global used for logging errors
|
|---|
| 29 | K ^XTMP("BPS01P5A")
|
|---|
| 30 | ;
|
|---|
| 31 | ; First convert ^BPSECP("BPSOSRX") into XTMP and delete it
|
|---|
| 32 | M ^XTMP("BPS-PROC")=^BPSECP("BPSOSRX")
|
|---|
| 33 | K ^BPSECP("BPSOSRX")
|
|---|
| 34 | ; If the global has been created but the zero node is missing, set it
|
|---|
| 35 | I $D(^XTMP("BPS-PROC")),'$D(^XTMP("BPS-PROC",0)) D
|
|---|
| 36 | . N X,X1,X2
|
|---|
| 37 | . S X1=DT,X2=30 D C^%DTC
|
|---|
| 38 | . S ^XTMP("BPS-PROC",0)=X_U_DT_U_"ECME PROCESSING QUEUE"
|
|---|
| 39 | ;
|
|---|
| 40 | ; Second, kill off unneeded ^BPSECX nodes
|
|---|
| 41 | ; Note that we need to loop because of the $J nodes.
|
|---|
| 42 | N SUB
|
|---|
| 43 | S SUB=""
|
|---|
| 44 | F S SUB=$O(^BPSECX(SUB)) Q:SUB="" I SUB'="S",SUB'="RPT" K ^BPSECX(SUB)
|
|---|
| 45 | ;
|
|---|
| 46 | ; Third, kill ^BPSECP("CHECKTIM")
|
|---|
| 47 | K ^BPSECP("CHECKTIM")
|
|---|
| 48 | ;
|
|---|
| 49 | ; Fourth, convert ^BPSECP("LOG")
|
|---|
| 50 | ; Note that we are only converting the transaction log (pattern match .N1"."5N)
|
|---|
| 51 | ; and purge logs (type=5). Other communication logs are being deleted.
|
|---|
| 52 | N SLOT,TXTIEN,PURGE,LOGIEN,PDT
|
|---|
| 53 | N TXTIEN,TM,TMP,TXT,TXT1,TXT2,PDTM
|
|---|
| 54 | S SLOT=""
|
|---|
| 55 | F S SLOT=$O(^BPSECP("LOG",SLOT)) Q:SLOT="" D
|
|---|
| 56 | . ; Set PURGE equal to whether the SLOT if a Purge Log
|
|---|
| 57 | . S PURGE=$P(SLOT,".",2)=5
|
|---|
| 58 | . ; If not transaction log or purge log, delete it and go on
|
|---|
| 59 | . I SLOT'?.N1"."5N,'PURGE K ^BPSECP("LOG",SLOT) Q
|
|---|
| 60 | . ; Create/find LOG IEN
|
|---|
| 61 | . S LOGIEN=$$LOG(SLOT)
|
|---|
| 62 | . I LOGIEN=-1 Q
|
|---|
| 63 | . S PDT="",PDTM=""
|
|---|
| 64 | . I PURGE S PDT=$P(SLOT,".",1)
|
|---|
| 65 | . S TXTIEN=0 F S TXTIEN=$O(^BPSECP("LOG",SLOT,TXTIEN)) Q:TXTIEN="" D
|
|---|
| 66 | .. ; Get data
|
|---|
| 67 | .. S X=$G(^BPSECP("LOG",SLOT,TXTIEN))
|
|---|
| 68 | .. S TM=$P($$HTFM^XLFDT(+$H_","_$P(X,U,1)),".",2),TXT=$P(X,U,2),TXT1=$$UP(TXT)
|
|---|
| 69 | .. ; If it is a transaction log, get the purge date
|
|---|
| 70 | .. I 'PURGE D
|
|---|
| 71 | ... I TXT1["BEFORE SUBMIT OF CLAIM" S TMP=$P($P(TXT1," - ",2)," BEFORE",1) I TMP?1"30"5N S PDT=TMP
|
|---|
| 72 | ... I TXT1["BEFORE SUBMIT OF REVERSAL" S TMP=$P($P(TXT1," - ",2)," BEFORE",1) I TMP?1"30"5N S PDT=TMP
|
|---|
| 73 | ... I TXT1["START OF CLAIM" S X=$P($P(TXT1,"START OF CLAIM - ",2),"@"),PDT=$$CDT(X,PDT)
|
|---|
| 74 | ... I TXT1["LOG TIME STAMP" D
|
|---|
| 75 | .... S X=$P(TXT1,"LOG TIME STAMP",2)
|
|---|
| 76 | .... I $E(X,1)=" " S X=$E(X,2,999)
|
|---|
| 77 | .... S X=$P($P(X," ",1,2),"@",1),PDT=$$CDT(X,PDT)
|
|---|
| 78 | ... S TXT2=","_$E(TXT1,1,3)_","
|
|---|
| 79 | ... I ",JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,"[TXT2 S X=$P($P(TXT1," ",1,2),"@",1),PDT=$$CDT(X,PDT)
|
|---|
| 80 | .. I PDT="" S ^XTMP("BPS01P5A",1,SLOT,TXTIEN)=TXT Q
|
|---|
| 81 | .. S PDTM=PDT_"."_TM
|
|---|
| 82 | .. D FILE1(LOGIEN,TXTIEN,PDTM,TXT)
|
|---|
| 83 | . I PDTM="" S PDTM=$$NOW^XLFDT(),^XTMP("BPS01P5A",2,SLOT)=PDTM
|
|---|
| 84 | . D FILE2(LOGIEN,PDTM)
|
|---|
| 85 | . K ^BPSECP("LOG",SLOT)
|
|---|
| 86 | ;
|
|---|
| 87 | ; If XTMP("BPS01P5A") global created, add top node with purge date
|
|---|
| 88 | I $D(^XTMP("BPS01P5A")) D
|
|---|
| 89 | . N X,X1,X2
|
|---|
| 90 | . S X1=DT,X2=60 D C^%DTC
|
|---|
| 91 | . S ^XTMP("BPS01P5A",0)=X_U_DT_U_"BPS Log Conversion"
|
|---|
| 92 | ;
|
|---|
| 93 | ; Kill the top node of ^BPSECP if that is all there is left
|
|---|
| 94 | I $D(^BPSECP("LOG"))=1 K ^BPSECP("LOG")
|
|---|
| 95 | Q
|
|---|
| 96 | ;
|
|---|
| 97 | LOG(X) ; Create or find slot in BPS LOG
|
|---|
| 98 | N DIC,DLAYGO,Y
|
|---|
| 99 | S DIC=9002313.12,DIC(0)="LBO",DLAYGO=DIC
|
|---|
| 100 | D ^DIC
|
|---|
| 101 | I Y=-1 S ^XTMP("BPS01P5A",3,X)=Y
|
|---|
| 102 | Q +Y
|
|---|
| 103 | ;
|
|---|
| 104 | FILE1(LOGIEN,TXTIEN,PDTM,TXT) ; Create multiple entry
|
|---|
| 105 | N FN,FDA,MSG
|
|---|
| 106 | S FN=9002313.1201
|
|---|
| 107 | S FDA(FN,"+1,"_LOGIEN_",",.01)=PDTM
|
|---|
| 108 | S FDA(FN,"+1,"_LOGIEN_",",1)=$TR($E(TXT,1,200),"^","~")
|
|---|
| 109 | D UPDATE^DIE("","FDA","","MSG")
|
|---|
| 110 | I $D(MSG) S ^XTMP("BPS01P5A",4,LOGIEN,TXTIEN)=PDTM_U_TXT M ^XTMP("BPS01P5A",4,LOGIEN,"MSG")=MSG
|
|---|
| 111 | Q
|
|---|
| 112 | ;
|
|---|
| 113 | FILE2(LOGIEN,PDTM) ; Update LAST UPDATE field with the last date
|
|---|
| 114 | N FDA,MSG,FN
|
|---|
| 115 | S FN=9002313.12
|
|---|
| 116 | S FDA(FN,LOGIEN_",",.02)=PDTM
|
|---|
| 117 | D FILE^DIE("","FDA","MSG")
|
|---|
| 118 | I $D(MSG) S ^XTMP("BPS01P5A",5,LOGIEN)=PDTM M ^XTMP("BPS01P5A",5,LOGIEN,"MSG")=MSG
|
|---|
| 119 | Q
|
|---|
| 120 | ;
|
|---|
| 121 | CDT(X,PDT) ; Convert external date to internal
|
|---|
| 122 | ; If date evaluates to -Y, use default date (PDT)
|
|---|
| 123 | N %DT,Y
|
|---|
| 124 | S %DT="" D ^%DT
|
|---|
| 125 | I Y=-1 S Y=PDT
|
|---|
| 126 | Q Y
|
|---|
| 127 | ;
|
|---|
| 128 | UP(X) ; Convert text to uppercase
|
|---|
| 129 | Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|---|
| 130 | ;
|
|---|
| 131 | ;DELETE OBSOLETE FILES
|
|---|
| 132 | ; For BPSCOMB and BPSEI, we need to delete each node manually
|
|---|
| 133 | ; to prevent global protection errors.
|
|---|
| 134 | ;
|
|---|
| 135 | DEL N DIU,X
|
|---|
| 136 | ;
|
|---|
| 137 | ;Turn global protection off (SACC Exemption has been granted to use $ZU)
|
|---|
| 138 | S X=$ZU(68,28,0)
|
|---|
| 139 | ;
|
|---|
| 140 | ;Remove BPS COMBINED INSURANCE (#9002313.1), which uses an unsubscripted global
|
|---|
| 141 | ;reference to store the data
|
|---|
| 142 | S DIU="^BPSCOMB(",DIU(0)="DS" D EN^DIU2
|
|---|
| 143 | ;
|
|---|
| 144 | ;Remove BPS INSURER (#9002313.4), which uses an unsubscripted global reference to store
|
|---|
| 145 | ;the data
|
|---|
| 146 | S DIU="^BPSEI(",DIU(0)="DS" D EN^DIU2
|
|---|
| 147 | ;
|
|---|
| 148 | ;Turn global protection back on
|
|---|
| 149 | S X=$ZU(68,28,1)
|
|---|
| 150 | ;
|
|---|
| 151 | ;BPS DATA INPUT (#9002313.51)
|
|---|
| 152 | S DIU="^BPS(9002313.51,",DIU(0)="DS" D EN^DIU2
|
|---|
| 153 | ;
|
|---|
| 154 | ;BPS ORIGIN OF INPUT (#9002313.516)
|
|---|
| 155 | S DIU="^BPS(9002313.516,",DIU(0)="DS" D EN^DIU2
|
|---|
| 156 | ;
|
|---|
| 157 | ;BPS DIALOUT (#9002313.55)
|
|---|
| 158 | S DIU="^BPS(9002313.55,",DIU(0)="DS" D EN^DIU2
|
|---|
| 159 | ;
|
|---|
| 160 | ;BPS INPUT USER PREF (#9002313.515)
|
|---|
| 161 | S DIU="^BPS(9002313.515,",DIU(0)="DS" D EN^DIU2
|
|---|
| 162 | ;
|
|---|
| 163 | ;BPS INSURANCE RULES (#9002313.94)
|
|---|
| 164 | S DIU="^BPSF(9002313.94,",DIU(0)="DS" D EN^DIU2
|
|---|
| 165 | ;
|
|---|
| 166 | ;BPS PRICING TABLES (#9002313.53)
|
|---|
| 167 | S DIU="^BPS(9002313.53,",DIU(0)="DS" D EN^DIU2
|
|---|
| 168 | ;
|
|---|
| 169 | ;BPS REPORT MASTER (#9002313.61)
|
|---|
| 170 | S DIU="^BPSECX(""RPT"",",DIU(0)="DS" D EN^DIU2
|
|---|
| 171 | ;
|
|---|
| 172 | ;BPS TRANSLATE (#9002313.81)
|
|---|
| 173 | S DIU="^BPSF(9002313.81,",DIU(0)="DS" D EN^DIU2
|
|---|
| 174 | ;
|
|---|
| 175 | K DIU,X
|
|---|
| 176 | ;
|
|---|
| 177 | Q
|
|---|
| 178 | ;
|
|---|
| 179 | ;BPS SETUP (#9002313.99)
|
|---|
| 180 | 99 N IEN
|
|---|
| 181 | ;
|
|---|
| 182 | S IEN=0 F S IEN=$O(^BPS(9002313.99,IEN)) Q:'IEN D
|
|---|
| 183 | .;
|
|---|
| 184 | .;'2' Node
|
|---|
| 185 | .K ^BPS(9002313.99,IEN,2)
|
|---|
| 186 | .;
|
|---|
| 187 | .;'BPSOS6*' Node
|
|---|
| 188 | .K ^BPS(9002313.99,IEN,"BPSOS6*")
|
|---|
| 189 | .;
|
|---|
| 190 | .;'BPSOSM1' Node
|
|---|
| 191 | .K ^BPS(9002313.99,IEN,"BPSOSM1")
|
|---|
| 192 | .;
|
|---|
| 193 | .;'BPSOSR1' Node
|
|---|
| 194 | .K ^BPS(9002313.99,IEN,"BPSOSR1")
|
|---|
| 195 | .;
|
|---|
| 196 | .;'BPSOSX' Node
|
|---|
| 197 | .K ^BPS(9002313.99,IEN,"BPSOSX")
|
|---|
| 198 | .;
|
|---|
| 199 | .;'A/R INTERFACE' Node
|
|---|
| 200 | .K ^BPS(9002313.99,IEN,"A/R INTERFACE")
|
|---|
| 201 | .;
|
|---|
| 202 | .;'BILLING' Node
|
|---|
| 203 | .K ^BPS(9002313.99,IEN,"BILLING")
|
|---|
| 204 | .;
|
|---|
| 205 | .;'BILLING - NEW' Node
|
|---|
| 206 | .K ^BPS(9002313.99,IEN,"BILLING - NEW")
|
|---|
| 207 | .;
|
|---|
| 208 | .;'BILLING LOG FILE' Node
|
|---|
| 209 | .K ^BPS(9002313.99,IEN,"BILLING LOG FILE")
|
|---|
| 210 | .;
|
|---|
| 211 | .;'CREATING A/R' Node
|
|---|
| 212 | .K ^BPS(9002313.99,IEN,"CREATING A/R")
|
|---|
| 213 | .;
|
|---|
| 214 | .;'DIAL-OUT DEFAULT' Node
|
|---|
| 215 | .K ^BPS(9002313.99,IEN,"DIAL-OUT DEFAULT")
|
|---|
| 216 | .;
|
|---|
| 217 | .;'EOB-SCREEN' Node
|
|---|
| 218 | .K ^BPS(9002313.99,IEN,"EOB-SCREEN")
|
|---|
| 219 | .;
|
|---|
| 220 | .;'FORMS - NCPDP' Node
|
|---|
| 221 | .K ^BPS(9002313.99,IEN,"FORMS - NCPDP")
|
|---|
| 222 | .;
|
|---|
| 223 | .;'FORMS - PREBILL' Node
|
|---|
| 224 | .K ^BPS(9002313.99,IEN,"FORMS - PREBILL")
|
|---|
| 225 | .;
|
|---|
| 226 | .;'INPUT' Node
|
|---|
| 227 | .K ^BPS(9002313.99,IEN,"INPUT")
|
|---|
| 228 | .;
|
|---|
| 229 | .;'INS' Node
|
|---|
| 230 | .K ^BPS(9002313.99,IEN,"INS")
|
|---|
| 231 | .;
|
|---|
| 232 | .;'INS BASE SCORES'
|
|---|
| 233 | .K ^BPS(9002313.99,IEN,"INS BASE SCORES")
|
|---|
| 234 | .;
|
|---|
| 235 | .;'INS RULES' Node
|
|---|
| 236 | .K ^BPS(9002313.99,IEN,"INS RULES")
|
|---|
| 237 | .;
|
|---|
| 238 | .;'NULL FILE' Node
|
|---|
| 239 | .K ^BPS(9002313.99,IEN,"NULL FILE")
|
|---|
| 240 | .;
|
|---|
| 241 | .;'OUTSIDE LINE' Node
|
|---|
| 242 | .K ^BPS(9002313.99,IEN,"OUTSIDE LINE")
|
|---|
| 243 | .;
|
|---|
| 244 | .;'POSTAGE' Node
|
|---|
| 245 | .K ^BPS(9002313.99,IEN,"POSTAGE")
|
|---|
| 246 | .;
|
|---|
| 247 | .;'RX A/R TYPE' Node
|
|---|
| 248 | .K ^BPS(9002313.99,IEN,"RX A/R TYPE")
|
|---|
| 249 | .;
|
|---|
| 250 | .;'RECEIPT' Node
|
|---|
| 251 | .K ^BPS(9002313.99,IEN,"RECEIPT")
|
|---|
| 252 | .;
|
|---|
| 253 | .;'SPECIAL' Node
|
|---|
| 254 | .K ^BPS(9002313.99,IEN,"SPECIAL")
|
|---|
| 255 | .;
|
|---|
| 256 | .;'STARTUP' Node
|
|---|
| 257 | .K ^BPS(9002313.99,IEN,"STARTUP")
|
|---|
| 258 | .;
|
|---|
| 259 | .;'UNBILLABLE NDC #' Node
|
|---|
| 260 | .K ^BPS(9002313.99,IEN,"UNBILLABLE NDC #")
|
|---|
| 261 | .;
|
|---|
| 262 | .;'UNBILLABLE DRUG NAME' Node
|
|---|
| 263 | .K ^BPS(9002313.99,IEN,"UNBILLABLE DRUG NAME")
|
|---|
| 264 | .;
|
|---|
| 265 | .;'UNBILLABLE OTC' Node
|
|---|
| 266 | .K ^BPS(9002313.99,IEN,"UNBILLABLE OTC")
|
|---|
| 267 | .;
|
|---|
| 268 | .;'WRITEOFF-SCREEN' Node
|
|---|
| 269 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN")
|
|---|
| 270 | .;
|
|---|
| 271 | .;'WRITEOFF-SCREEN ARTYPE' Node
|
|---|
| 272 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN ARTYPE")
|
|---|
| 273 | .;
|
|---|
| 274 | .;'WRITEOFF-SCREEN BATCH' Node
|
|---|
| 275 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN BATCH")
|
|---|
| 276 | .;
|
|---|
| 277 | .;'WRITEOFF-SCREEN CLINIC' Node
|
|---|
| 278 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN CLINIC")
|
|---|
| 279 | .;
|
|---|
| 280 | .;'WRITEOFF-SCREEN DIAG' Node
|
|---|
| 281 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN DIAG")
|
|---|
| 282 | .;
|
|---|
| 283 | .;'WRITEOFF-SCREEN INSURER' Node
|
|---|
| 284 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN INSURER")
|
|---|
| 285 | .;
|
|---|
| 286 | .;'WINNOW' Node
|
|---|
| 287 | .N X
|
|---|
| 288 | .S X=$P($G(^BPS(9002313.99,IEN,"WINNOW")),U)
|
|---|
| 289 | .I X'=0,X'=1 S X=$P($G(^BPS(9002313.99,IEN,"WINNOW TESTING")),U),X=$S(X=1:1,1:0)
|
|---|
| 290 | .S ^BPS(9002313.99,IEN,"WINNOW")=X_"^^365"
|
|---|
| 291 | .K X
|
|---|
| 292 | .;
|
|---|
| 293 | .;'WINNOW TESTING' Node
|
|---|
| 294 | .K ^BPS(9002313.99,IEN,"WINNOW TESTING")
|
|---|
| 295 | .;
|
|---|
| 296 | .;'WINNOW LOG' Node
|
|---|
| 297 | .K ^BPS(9002313.99,IEN,"WINNOW LOG")
|
|---|
| 298 | .;
|
|---|
| 299 | .;'WORKERS COMP' Node
|
|---|
| 300 | .K ^BPS(9002313.99,IEN,"WORKERS COMP")
|
|---|
| 301 | .;
|
|---|
| 302 | .;'WRITE OFF INSURER' Node
|
|---|
| 303 | .K ^BPS(9002313.99,IEN,"WRITE OFF INSURER")
|
|---|
| 304 | .;
|
|---|
| 305 | .;'WRITE OFF SELF PAY' Node
|
|---|
| 306 | .K ^BPS(9002313.99,IEN,"WRITE OFF SELF PAY")
|
|---|
| 307 | .;
|
|---|
| 308 | .;'NCPDP51' Node
|
|---|
| 309 | .K ^BPS(9002313.99,IEN,"NCPDP51")
|
|---|
| 310 | .;
|
|---|
| 311 | .;'WINNOW LOGS' Node
|
|---|
| 312 | .K ^BPS(9002313.99,IEN,"WINNOW LOGS")
|
|---|
| 313 | ;
|
|---|
| 314 | K IEN
|
|---|
| 315 | ;
|
|---|
| 316 | Q
|
|---|