| 1 | IBDFPRG1 ;ALB/AAS - AICS PURGE UTILITY ; 4-OCT-95 | 
|---|
| 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | % ; -- purge utility for purging entries from the | 
|---|
| 5 | ;    Form Definition file (357.95) | 
|---|
| 6 | ;    Form Tracking file (357.96) | 
|---|
| 7 | ;    Form Specification file (359.2) | 
|---|
| 8 | G MANUAL^IBDFPRG | 
|---|
| 9 | ; | 
|---|
| 10 | ; | 
|---|
| 11 | PURGFD(IBLDT) ; -- Procedure | 
|---|
| 12 | ; -- purge entires in Form Definition file marked for deletion | 
|---|
| 13 | ;    that were marked before ibldt and no incomplete entries in | 
|---|
| 14 | ;    form tracking exist | 
|---|
| 15 | ; | 
|---|
| 16 | ;    Input :  ibldt  := only purge records with a date marked for | 
|---|
| 17 | ;                       deletion older than this date | 
|---|
| 18 | ;    Output:  ibcnt5 := number of entries in 357.95 deleted | 
|---|
| 19 | ;             ibcnt2 := number of entries in 359.2 deleted | 
|---|
| 20 | ; | 
|---|
| 21 | N IBI,IBJ,IBSTAT,X,Y | 
|---|
| 22 | S (IBCNT5,IBCNT2)=0 | 
|---|
| 23 | I IBLDT=""!(IBLDT'?7N) G PURGFDQ | 
|---|
| 24 | S IBI=0 | 
|---|
| 25 | F  S IBI=$O(^IBD(357.95,"ADEL",IBI)) Q:'IBI!(IBI'<IBLDT)  D | 
|---|
| 26 | .S IBJ=0 | 
|---|
| 27 | .F  S IBJ=$O(^IBD(357.95,"ADEL",IBI,IBJ)) Q:'IBJ  D | 
|---|
| 28 | .. | 
|---|
| 29 | ..; -- "a" x-ref is special x-ref of all forms not received | 
|---|
| 30 | ..;  for 357.95 check KILLTYPE^IBDF19 | 
|---|
| 31 | ..; | 
|---|
| 32 | ..I $D(^IBD(357.96,"A",IBJ)) Q | 
|---|
| 33 | ..I $D(^IBD(357.95,IBJ,0)) S X=$$DEL("^IBD(357.95,",IBJ),IBCNT5=IBCNT5+1 | 
|---|
| 34 | ..I $D(^IBD(359.2,IBJ,0)) S X=$$DEL("^IBD(359.2,",IBJ),IBCNT2=IBCNT2+1 | 
|---|
| 35 | ..Q | 
|---|
| 36 | .Q | 
|---|
| 37 | ; | 
|---|
| 38 | PURGFDQ Q | 
|---|
| 39 | ; | 
|---|
| 40 | PURGFT(IBLDT,IBHOW) ; -- Procedure | 
|---|
| 41 | ; -- purge entries from form tracking file (357.96) | 
|---|
| 42 | ;    Input :  ibldt  := only purge records with an appointment | 
|---|
| 43 | ;                       date older than this date | 
|---|
| 44 | ;             ibhow  := 0=no records, 1=complete, 2=all | 
|---|
| 45 | ;    Output:  ibcnt6 := number of entries in 357.96 deleted | 
|---|
| 46 | ; | 
|---|
| 47 | N X,Y,IBI,IBJ,IBSTAT | 
|---|
| 48 | S IBCNT6=0 | 
|---|
| 49 | I IBLDT=""!(IBLDT'?7N) G PURGFTQ | 
|---|
| 50 | S IBHOW=+$G(IBHOW) | 
|---|
| 51 | I IBHOW<0!(IBHOW>2) G PURGFTQ | 
|---|
| 52 | ; | 
|---|
| 53 | S IBI=0 | 
|---|
| 54 | F  S IBI=$O(^IBD(357.96,"D",IBI)) Q:'IBI!(IBI'<IBLDT)  D | 
|---|
| 55 | .S IBJ=0 | 
|---|
| 56 | .F  S IBJ=$O(^IBD(357.96,"D",IBI,IBJ)) Q:'IBJ  D | 
|---|
| 57 | ..I $$STATCHK(IBJ,IBHOW) S X=$$DEL("^IBD(357.96,",IBJ),IBCNT6=IBCNT6+1 | 
|---|
| 58 | ..Q | 
|---|
| 59 | .Q | 
|---|
| 60 | PURGFTQ Q | 
|---|
| 61 | ; | 
|---|
| 62 | PURGEL(IBLDT) ; -- | 
|---|
| 63 | ; -- Purge AICS Error Log older created prior to ibdldt | 
|---|
| 64 | ;    Input :  ibldt  := only purge error created prior to this date | 
|---|
| 65 | ; | 
|---|
| 66 | ;    Output:  ibcnt7 := number of entries in 359.3 deleted | 
|---|
| 67 | ; | 
|---|
| 68 | N IBI,IBJ | 
|---|
| 69 | S (IBCNT7,IBI)=0 | 
|---|
| 70 | F  S IBI=$O(^IBD(359.3,"B",IBI)) Q:'IBI!(IBI'<IBLDT)  D | 
|---|
| 71 | .S IBJ=0 | 
|---|
| 72 | .F  S IBJ=$O(^IBD(359.3,"B",IBI,IBJ)) Q:'IBJ  D | 
|---|
| 73 | ..I $D(^IBD(359.3,IBJ,0)) S X=$$DEL("^IBD(359.3,",IBJ),IBCNT7=IBCNT7+1 | 
|---|
| 74 | PURGELQ Q | 
|---|
| 75 | ; | 
|---|
| 76 | STATCHK(ENTRY,IBHOW) ; -- Function | 
|---|
| 77 | ; -- determine if entry in 357.96 can be deleted | 
|---|
| 78 | ;    Input :  Entry := internal number of entry in 357.96 | 
|---|
| 79 | ;             ibhow := 0,1,2, to delete none, complete, or all | 
|---|
| 80 | ;    Output:  Okay  := 1=okay to delete, 0=not okay | 
|---|
| 81 | ; | 
|---|
| 82 | N OKAY,STATUS | 
|---|
| 83 | S OKAY=0 | 
|---|
| 84 | S IBHOW=+$G(IBHOW) | 
|---|
| 85 | I IBHOW<1!(IBHOW>2) G STATQ ;How is none or not valid, don't delete | 
|---|
| 86 | I '$D(^IBD(357.96,ENTRY,0)) G STATQ ;Entry doesn't exist | 
|---|
| 87 | ; | 
|---|
| 88 | ; -- if delete all, okay=1 | 
|---|
| 89 | I IBHOW=2,$P($G(^IBD(357.96,ENTRY,0)),"^",3) S OKAY=1 G STATQ | 
|---|
| 90 | ; | 
|---|
| 91 | ; -- if status = complete, piece 11 must equal 3, 4, or 12 to delete | 
|---|
| 92 | S STATUS=$P($G(^IBD(357.96,ENTRY,0)),"^",11) | 
|---|
| 93 | S OKAY=$S(STATUS=3:1,STATUS=4:1,STATUS=6:1,STATUS=7:1,STATUS=12:1,1:0) | 
|---|
| 94 | ; | 
|---|
| 95 | STATQ Q OKAY | 
|---|
| 96 | ; | 
|---|
| 97 | DEL(FILE,DA) ; -- Function | 
|---|
| 98 | ; -- delete one entry | 
|---|
| 99 | ;    Input :  File  := internal file number of file or global root | 
|---|
| 100 | ;             da    := internal number of entry, If more than DA | 
|---|
| 101 | ;                      needs to be defined then pass da array by | 
|---|
| 102 | ;                      reference | 
|---|
| 103 | ;    Output:  1 := succeded, 0 := failed | 
|---|
| 104 | ; | 
|---|
| 105 | N SUCCESS | 
|---|
| 106 | S SUCCESS=0 | 
|---|
| 107 | I $G(FILE)=""!(+$G(DA)<1) G DELQ | 
|---|
| 108 | S DIK=FILE D ^DIK | 
|---|
| 109 | S SUCCESS=1 | 
|---|
| 110 | W:'$D(ZTQUEUED) !,"Entry number "_DA_" in file "_DIK_" Deleted!" | 
|---|
| 111 | DELQ Q SUCCESS | 
|---|