| 1 | LROC ;DALOI/CJS - ORDER LIST CLEAN-UP ; 20 Apr 2005 | 
|---|
| 2 | ;;5.2;LAB SERVICE;**121,295,329**;Sep 27, 1994;Build 2 | 
|---|
| 3 | ; Modified slc/jer to include set/kill for "D" cross-reference | 
|---|
| 4 | ; | 
|---|
| 5 | N DA,DIR,DIROUT,DTOUT,DUOUT,LRAA,LRSAVE,LRX,MSG,X,Y | 
|---|
| 6 | D ^LROCM | 
|---|
| 7 | ; | 
|---|
| 8 | S DIR(0)="Y" | 
|---|
| 9 | S DIR("A")="Do you wish to Purge old Orders and Accessions",DIR("B")="NO" | 
|---|
| 10 | D ^DIR | 
|---|
| 11 | I Y'=1 Q | 
|---|
| 12 | ; | 
|---|
| 13 | S LRX=+$P($G(^LAB(69.9,1,0)),U,9) S:'LRX LRX=7 | 
|---|
| 14 | S LRSAVE=$$FMADD^XLFDT(DT,"-"_LRX) | 
|---|
| 15 | ; | 
|---|
| 16 | L1 ; Purge the daily accession areas that meet cutoff | 
|---|
| 17 | S LRAA=0 | 
|---|
| 18 | F  S LRAA=$O(^LRO(68,LRAA)) Q:LRAA<1  D | 
|---|
| 19 | . I $P(^LRO(68,LRAA,0),U,3)'="D" W !,"Use File Manager to clear ",$P(^(0),U) | 
|---|
| 20 | ; | 
|---|
| 21 | N ZTSK,ZTRTN,ZTDESC,ZTIO,ZTSAVE | 
|---|
| 22 | S ZTRTN="DQ^LROC",ZTDESC="Purge old orders and accessions" | 
|---|
| 23 | S ZTIO="",ZTSAVE("LR*")="" | 
|---|
| 24 | D ^%ZTLOAD | 
|---|
| 25 | S MSG=$S($G(ZTSK):"Task #"_ZTSK_" tasked to run",1:"Tasking failed") | 
|---|
| 26 | D EN^DDIOL(MSG,"","!?2") | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | ; | 
|---|
| 30 | DQ ; Tasked entry point to clean up file #69 | 
|---|
| 31 | N DA,I,J,K,LRDA | 
|---|
| 32 | ; | 
|---|
| 33 | ; Purge the daily accession areas that meet cutoff | 
|---|
| 34 | S LRAA=0 | 
|---|
| 35 | F  S LRAA=$O(^LRO(68,LRAA)) Q:LRAA<1  D  Q:$G(ZTSTOP) | 
|---|
| 36 | . I $P(^LRO(68,LRAA,0),U,3)'="D" Q | 
|---|
| 37 | . I $$S^%ZTLOAD("Processing accession area: "_LRAA) S ZTSTOP=1 Q | 
|---|
| 38 | . S DA=0 | 
|---|
| 39 | . F  S DA=$O(^LRO(68,LRAA,1,DA)) Q:DA<1!(LRSAVE<DA)  K ^LRO(68,LRAA,1,DA) | 
|---|
| 40 | ; | 
|---|
| 41 | I $G(ZTSTOP) Q | 
|---|
| 42 | ; | 
|---|
| 43 | S I=0 | 
|---|
| 44 | F  S I=$O(^LRO(69,"C",I)) Q:I<1  D  Q:$G(ZTSTOP) | 
|---|
| 45 | . I $$S^%ZTLOAD("Processing 'C' X-REF in file #69") S ZTSTOP=1 Q | 
|---|
| 46 | . S J=0 | 
|---|
| 47 | . F  S J=$O(^LRO(69,"C",I,J)) Q:J>LRSAVE!(J<1)  K ^(J) | 
|---|
| 48 | I $G(ZTSTOP) Q | 
|---|
| 49 | ; | 
|---|
| 50 | S I=0 | 
|---|
| 51 | F  S I=$O(^LRO(69,"D",I)) Q:I<1  D  Q:$G(ZTSTOP) | 
|---|
| 52 | . I $$S^%ZTLOAD("Processing 'D' X-REF in file #69") S ZTSTOP=1 Q | 
|---|
| 53 | . S J=0 | 
|---|
| 54 | . F  S J=$O(^LRO(69,"D",I,J)) Q:J>LRSAVE!(J<1)  K ^(J) | 
|---|
| 55 | I $G(ZTSTOP) Q | 
|---|
| 56 | ; | 
|---|
| 57 | S LRDA=1 | 
|---|
| 58 | F  S LRDA=$O(^LRO(69,LRDA)) D  Q:(LRSAVE<LRDA)!(LRDA<1)  Q:$G(ZTSTOP) | 
|---|
| 59 | . I LRDA["0000" Q | 
|---|
| 60 | . I $$S^%ZTLOAD("Processing orders in file #69 for "_$$FMTE^XLFDT(LRDA)) S ZTSTOP=1 Q | 
|---|
| 61 | . S ^LRO(69,0)=$P(^LRO(69,0),U,1,2)_U_LRDA_U_($P(^(0),U,4)-1) | 
|---|
| 62 | . N LRSN | 
|---|
| 63 | . S LRSN=0 | 
|---|
| 64 | . F  S LRSN=$O(^LRO(69,LRDA,1,LRSN)) Q:LRSN<1  D NEW^LR7OB1(LRDA,LRSN,"Z@") ; Call OE/RR | 
|---|
| 65 | . K ^LRO(69,LRDA),^LRO(69,"B",LRDA,LRDA) | 
|---|
| 66 | ; | 
|---|
| 67 | I LRDA<1 S ^LRO(69,0)=$P(^(0),U,1,2) | 
|---|
| 68 | I $G(ZTSTOP) Q | 
|---|
| 69 | ; | 
|---|
| 70 | D CHKUID | 
|---|
| 71 | I $G(ZTSTOP) Q | 
|---|
| 72 | D ^LROC1 | 
|---|
| 73 | K LRSAVE | 
|---|
| 74 | ; | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | ; | 
|---|
| 78 | CENDEL ; | 
|---|
| 79 | W !,"STARTING CENTRAL ENTRY #: " R LRSTA:DTIME S LRSTA=LRSTA-1 | 
|---|
| 80 | S U="^" W !,"ENDING CENTRAL ENTRY #: " R LRFIN:DTIME | 
|---|
| 81 | W !,"ARE YOU SURE? N//" D % Q:%'["Y" | 
|---|
| 82 | S ZTRTN="REENTRY^LROC",ZTIO="",ZTSAVE("L*")="" | 
|---|
| 83 | D ^%ZTLOAD | 
|---|
| 84 | K IO("Q"),ZTSK,ZTRTN,ZTIO,ZTSAVE | 
|---|
| 85 | K %H,%ZA,%ZB,%ZC,DA,I,J,LRAA,LRAN,LRDFN,LRDTM,LRDTN,LRFIN,LRIDT,LRIOZERO,LRLOST,LROCN,LROID,LRORD,LROSN,LRSAVE,LRSN,LRSS,LRSTA,POP,Z | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | ; | 
|---|
| 89 | REENTRY ; | 
|---|
| 90 | S LRORD=LRSTA | 
|---|
| 91 | F  S LRORD=$O(^LRO(69,"C",LRORD)) Q:LRORD<1!(LRORD>LRFIN)  D FDAT | 
|---|
| 92 | Q | 
|---|
| 93 | ; | 
|---|
| 94 | ; | 
|---|
| 95 | FDAT ; | 
|---|
| 96 | S LRDTN=0 | 
|---|
| 97 | F  S LRDTN=$O(^LRO(69,"C",LRORD,LRDTN)) Q:LRDTN<1  D ZAP | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | ; | 
|---|
| 101 | ZAP ; | 
|---|
| 102 | S LRSN=0 | 
|---|
| 103 | F  S LRSN=$O(^LRO(69,"C",+LRORD,LRDTN,LRSN)) Q:LRSN<1  D | 
|---|
| 104 | . D NEW^LR7OB1(LRDTN,LRSN,"Z@") ;Call OE/RR | 
|---|
| 105 | . K ^LRO(69,"C",+LRORD,LRDTN,LRSN) Q:'$D(^LRO(69,LRDTN,1,LRSN,0))  S LRDFN=+^(0) | 
|---|
| 106 | . K ^LRO(69,LRDTN,1,LRSN),^LRO(69,LRDTN,1,"AA",LRDFN,LRSN),^LRO(69,"D",LRDFN,LRDTN,LRSN) | 
|---|
| 107 | S LRAA=0 | 
|---|
| 108 | F  S LRAA=$O(^LRO(68,LRAA)) Q:LRAA<1  D:$P(^(LRAA,0),U,10)="Y" LRORD | 
|---|
| 109 | Q | 
|---|
| 110 | ; | 
|---|
| 111 | ; | 
|---|
| 112 | LRORD ; | 
|---|
| 113 | S LRAN=$O(^LRO(68,LRAA,1,LRDTN,1,"D",LRORD,0)) Q:LRAN<1 | 
|---|
| 114 | Q:'$D(^LRO(68,LRAA,1,LRDTN,1,LRAN,0)) | 
|---|
| 115 | S LRSS=$P(^LRO(68,LRAA,0),"^",2) | 
|---|
| 116 | S LRDFN=+^LRO(68,LRAA,1,LRDTN,1,LRAN,0) G:'$D(^(3)) SKPLR S LRDTM=+^LRO(68,LRAA,1,LRDTN,1,LRAN,3) G:'LRDTM SKPLR S LRIDT=9999999-LRDTM | 
|---|
| 117 | I $D(^LR(LRDFN,LRSS,LRIDT,0)),$P(^(0),U,3) Q | 
|---|
| 118 | K ^LR(LRDFN,LRSS,LRIDT) | 
|---|
| 119 | I LRSS="CH" D CHKILL^LRPX(LRDFN,LRIDT) | 
|---|
| 120 | ; | 
|---|
| 121 | SKPLR S X=^LRO(68,LRAA,1,LRDTN,1,LRAN,0),LROSN=$P(X,U,5),LROID=$P(X,U,6),LROCN=$S($D(^(.1)):$P(^(.1),U),1:"") | 
|---|
| 122 | K:$L(LROID) ^LRO(68,LRAA,1,LRDTN,1,"C",LROID,LRAN) | 
|---|
| 123 | K:$L(LROCN) ^LRO(68,LRAA,1,LRDTN,1,"D",LROCN,LRAN) | 
|---|
| 124 | K ^LRO(68,LRAA,1,LRDTN,1,LRAN) | 
|---|
| 125 | W "." | 
|---|
| 126 | Q | 
|---|
| 127 | ; | 
|---|
| 128 | ; | 
|---|
| 129 | % R %:DTIME Q:%=""!(%["N")!(%["Y")  W !,"Answer 'Y' or 'N': " G % | 
|---|
| 130 | Q | 
|---|
| 131 | ; | 
|---|
| 132 | ; | 
|---|
| 133 | CHKUID ; Check UID's for purged accessions | 
|---|
| 134 | ; | 
|---|
| 135 | N LRAA,LRAD,LRAN,LRCNT,LRROOT | 
|---|
| 136 | ; | 
|---|
| 137 | ; Check "C" cross-reference | 
|---|
| 138 | S LRROOT="^LRO(68,""C"")",(LRAA,LRAD,LRAN,LRCNT)=0 | 
|---|
| 139 | F  S LRROOT=$Q(@LRROOT) Q:LRROOT=""  Q:$QS(LRROOT,2)'="C"  D CHKACN Q:$G(ZTSTOP) | 
|---|
| 140 | ; | 
|---|
| 141 | ; Check "D" cross-reference | 
|---|
| 142 | S LRROOT="^LRO(68,""D"")",(LRAA,LRAD,LRAN,LRCNT)=0 | 
|---|
| 143 | F  S LRROOT=$Q(@LRROOT) Q:LRROOT=""  Q:$QS(LRROOT,2)'="D"  D CHKACN Q:$G(ZTSTOP) | 
|---|
| 144 | Q | 
|---|
| 145 | ; | 
|---|
| 146 | CHKACN ; Check for deleted corresponding accession. | 
|---|
| 147 | S LRAA=$QS(LRROOT,4),LRAD=$QS(LRROOT,5),LRAN=$QS(LRROOT,6) | 
|---|
| 148 | S LRCNT=LRCNT+1 | 
|---|
| 149 | ; take a "rest" - allow OS to swap out process | 
|---|
| 150 | ; Check if task has been requested to stop | 
|---|
| 151 | I '(LRCNT#10000) D  Q:$G(ZTSTOP) | 
|---|
| 152 | . I $$S^%ZTLOAD("Processing UID: "_$QS(LRROOT,3)) S ZTSTOP=1 Q | 
|---|
| 153 | . H 2 | 
|---|
| 154 | I $D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) Q | 
|---|
| 155 | K @LRROOT | 
|---|
| 156 | Q | 
|---|