| 1 | BPSOSK ;BHAM ISC/FCS/DRS/DLF - Winnow ECME data ;06/01/2004 | 
|---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ; MAIN | 
|---|
| 7 | MAIN ; | 
|---|
| 8 | ; Set lock so only one job is running at a time | 
|---|
| 9 | L +^TMP($T(+0)):0 Q:'$T | 
|---|
| 10 | ; | 
|---|
| 11 | ; New the common variables | 
|---|
| 12 | N SLOT,TESTING | 
|---|
| 13 | ; | 
|---|
| 14 | ; Initialize the log and store slot in BPS Setup | 
|---|
| 15 | ; Also keep previous two logs. | 
|---|
| 16 | S SLOT=DT+.5 | 
|---|
| 17 | D LOG^BPSOSL(SLOT,"Start Purge","DT") | 
|---|
| 18 | ; | 
|---|
| 19 | S TESTING=$$GET1^DIQ(9002313.99,1,2341.01,"I") | 
|---|
| 20 | I TESTING D LOG^BPSOSL(SLOT,"Test Mode - no data will be deleted") | 
|---|
| 21 | I 'TESTING D LOG^BPSOSL(SLOT,"Purge Mode - data may be deleted") | 
|---|
| 22 | ; | 
|---|
| 23 | ; Delete the log file | 
|---|
| 24 | N FILE,AGE,IEN,UPDT,IENS,MSG,FDA,ENDDT | 
|---|
| 25 | S FILE=9002313.12 | 
|---|
| 26 | ; | 
|---|
| 27 | ; Log start message | 
|---|
| 28 | D LOG^BPSOSL(SLOT,"Winnowing file BPS LOG") | 
|---|
| 29 | ; | 
|---|
| 30 | ; Get number of days to keep on the system | 
|---|
| 31 | S AGE=$$GET1^DIQ(9002313.99,1,2341.03) | 
|---|
| 32 | I 'AGE D | 
|---|
| 33 | . S AGE=365 | 
|---|
| 34 | . I '$D(^BPS(9002313.99,1)) Q | 
|---|
| 35 | . N DIE,DA,DR,DTOUT | 
|---|
| 36 | . S DIE=9002313.99,DA=1,DR="2341.03///"_AGE | 
|---|
| 37 | . D ^DIE | 
|---|
| 38 | ; | 
|---|
| 39 | ; Calculate end date of purge | 
|---|
| 40 | N X,X1,X2 | 
|---|
| 41 | S X1=DT,X2=(AGE*-1) D C^%DTC | 
|---|
| 42 | S ENDDT=X | 
|---|
| 43 | D LOG^BPSOSL(SLOT,"AGE is "_AGE_".  End Date is "_ENDDT) | 
|---|
| 44 | ; | 
|---|
| 45 | ; Loop through data and delete it | 
|---|
| 46 | S UPDT="" F  S UPDT=$O(^BPS(FILE,"AC",UPDT)) Q:UPDT'<ENDDT!(UPDT="")  D | 
|---|
| 47 | . S IEN="" F  S IEN=$O(^BPS(FILE,"AC",UPDT,IEN)) Q:'IEN  D | 
|---|
| 48 | .. S IENS=IEN_"," | 
|---|
| 49 | .. ; | 
|---|
| 50 | .. ; Never delete the highest entry in a file | 
|---|
| 51 | .. ; This will prevent the re-use of IENs. | 
|---|
| 52 | .. I '$O(^BPS(FILE,IEN)) Q | 
|---|
| 53 | .. ; | 
|---|
| 54 | .. ; Log the message | 
|---|
| 55 | .. S MSG=$S(TESTING:"  We would delete",1:"  Deleting") | 
|---|
| 56 | .. S MSG=MSG_" record "_IEN_" - "_$P($G(^BPS(FILE,IEN,0)),U,1) | 
|---|
| 57 | .. D LOG^BPSOSL(SLOT,MSG) | 
|---|
| 58 | .. ; | 
|---|
| 59 | .. ; Quit if testing mode | 
|---|
| 60 | .. I TESTING Q | 
|---|
| 61 | .. ; | 
|---|
| 62 | .. ; Do the delete | 
|---|
| 63 | .. K FDA,MSG | 
|---|
| 64 | .. S FDA(FILE,IENS,.01)="" | 
|---|
| 65 | .. D FILE^DIE(,"FDA","MSG") | 
|---|
| 66 | .. I $D(MSG) D | 
|---|
| 67 | ... D LOG^BPSOSL(SLOT,"Deletion failed - MSG array returned:") | 
|---|
| 68 | ... D LOGARRAY^BPSOSL(SLOT,"MSG") | 
|---|
| 69 | .. ; | 
|---|
| 70 | .. ; Make sure the deletion worked: fetch the .01 field | 
|---|
| 71 | .. I $$GET1^DIQ(FILE,IENS,.01)]"" D LOG^BPSOSL(SLOT,"Deletion failed-record still defined") | 
|---|
| 72 | ; | 
|---|
| 73 | ; Log ending message | 
|---|
| 74 | D LOG^BPSOSL(SLOT,"Done with file BPS LOG") | 
|---|
| 75 | ; | 
|---|
| 76 | ; Unlock the job | 
|---|
| 77 | L -^TMP($T(+0)) | 
|---|
| 78 | Q | 
|---|