| [613] | 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
 | 
|---|