| 1 | LRARCHIV ;SLC/RWF/DAL/HOAK FIRST ROUTINE FOR PATIENT ARCHIVE ; 12/12/96  10:16 ;
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**59,111**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;  Taken from--> SET UP O("S") VARIABLES FOR ARCHIVE. ;2/5/91  12:30 ;
 | 
|---|
| 5 | INIT ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  K ^TMP("LRBAD"),^TMP("LRUNV"),^TMP("LRNOD")
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | SEARCH ;
 | 
|---|
| 12 |  S OK=1
 | 
|---|
| 13 |  ;          Rewrite of basic archive SEARCH function for ^LR data
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;--> Following the F1 variable tells you where you are
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;^LAB(69.9,1,6,1,0) = ARCH-1^VAMC^2970318.0941^1^2970318
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;--> F1=1 or 2 or 3 or 4or 5 depending what step has been done
 | 
|---|
| 20 |  ;                                              
 | 
|---|
| 21 |  ;DATA TYPE:       Set of Codes                 |
 | 
|---|
| 22 |  ;                 1:Searching------------------|               
 | 
|---|
| 23 |  ;                 2:Search done----------------|
 | 
|---|
| 24 |  ;                 3:Clear----------------------|
 | 
|---|
| 25 |  ;                 4:Purging--------------------|
 | 
|---|
| 26 |  ;                 5:Purge done-----------------|
 | 
|---|
| 27 |  ;SERCHING:
 | 
|---|
| 28 |  ;  Looks through the entire LR global by patient (LRDFN) for all
 | 
|---|
| 29 |  ;  eligible entries by date.
 | 
|---|
| 30 |  ;  New functionality also make certain all associated eligiable data is
 | 
|---|
| 31 |  ;  forced to a perminant cume page.
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  I '$G(F1) G MEET QUIT
 | 
|---|
| 34 |  S OK=1 D RESTART^LRAR06:$G(F1)=1
 | 
|---|
| 35 |  I 'OK D END QUIT
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  I $G(F1)>1 W !,"Please finish the Clear and Purge steps first." D QUIT Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  I $G(F1)=0 S:'$D(^LAB(69.9,1,6,0)) ^LAB(69.9,1,6,0)="^69.9003A^^" D TAPE^LRAR06
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  I $G(DA)<1!($G(P1)<1) D QUIT Q
 | 
|---|
| 42 | PAT ;
 | 
|---|
| 43 |  ;    Entry for testing--------------------->
 | 
|---|
| 44 | STEPOUT ;
 | 
|---|
| 45 | MEET ;
 | 
|---|
| 46 |  W @IOF,!!,"Welcome to The Search Option for the New Archive Modual",!
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  I '$G(P1) S OK=1 D TAPE^LRAR06 I 'OK D END QUIT
 | 
|---|
| 49 |  ;E  W !,"A file entry IS NOT present"
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;            Make a list of data or not
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  W !,"Shall I prepare a list of patients that will have data archived"
 | 
|---|
| 55 |  S %=2 D YN^DICN
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | QUES I %=0 W !,"Answering YES to this question will produce" D  G PAT
 | 
|---|
| 58 |  .  W "a list of patients that will have data archived."
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  S LRPAT=0 S:%=1 LRPAT=1
 | 
|---|
| 61 | T ;
 | 
|---|
| 62 |  I '$G(P1) W !,"Tape name not defined. Please start again."
 | 
|---|
| 63 |  I  QUIT
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  S ^LAB(69.9,1,"TAPE")=P1
 | 
|---|
| 66 |  S $P(^LAB(69.9,1,6,P1,0),U,4)=1 ;---SEARCH IS IN PROGRESS
 | 
|---|
| 67 |  S X=1
 | 
|---|
| 68 |  S LRP1=P1
 | 
|---|
| 69 |  D LRSUB1 D DEVICE
 | 
|---|
| 70 |  QUIT
 | 
|---|
| 71 | END ;
 | 
|---|
| 72 |  D QUIT
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | DEVICE ;
 | 
|---|
| 76 |  S %ZIS="Q"
 | 
|---|
| 77 | QUE ;
 | 
|---|
| 78 |  S ZTSAVE("LR*")="",ZTRTN="LR^LRAR04",ZTDESC="Archive search option."
 | 
|---|
| 79 |  S ZTSAVE("LR*")=""
 | 
|---|
| 80 |  S ZTSAVE("^TMP(""LR9""")=""
 | 
|---|
| 81 |  D IO^LRWU
 | 
|---|
| 82 |  QUIT
 | 
|---|
| 83 | DQ1 ;
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  K OK,LRI
 | 
|---|
| 86 |  U IO
 | 
|---|
| 87 |  S LRC1=1,LRC2=0,LRC3=0,Y=LR(1)
 | 
|---|
| 88 |  D DD^LRX
 | 
|---|
| 89 |  W @IOF,!,"LAB DATA ARCHIVE for data before ",Y
 | 
|---|
| 90 |  W ". on " D STAMP^LRX S X=1 X ^%ZOSF("PRIORITY")
 | 
|---|
| 91 |  I '$G(LREDT3) D TIME^LRAR06
 | 
|---|
| 92 |  S X2=LREDT3,X1=LR(1) D ^%DTC
 | 
|---|
| 93 |  W !!,"Number of Days To be searched: ",X
 | 
|---|
| 94 |  QUIT
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  ;      Get test data names from 63.04
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | LRSUB1 S LRSUB=1
 | 
|---|
| 99 |  F  S LRSUB=$O(^DD(63.04,LRSUB)) Q:LRSUB<1  D
 | 
|---|
| 100 |  .  I $D(^DD(63.04,LRSUB,0)),'$D(^DD(63.999904,LRSUB)) D
 | 
|---|
| 101 |  ..  S LRX0=^DD(63.04,LRSUB,0) S LRX3=$S($D(^(3)):^(3),1:"")
 | 
|---|
| 102 |  ..  S ^DD(63.999904,LRSUB,0)=LRX0 S:LRX3'="" ^(3)=LRX3
 | 
|---|
| 103 |  ..  S ^DD(63.999904,"B",$P(LRX0,U),LRSUB)=""
 | 
|---|
| 104 |  K X,Y,L1,L2
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;D ^AAHAGL
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  ;QUIT  ;****************************************************
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | PROCESS ;
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  K ^LAR("DHZ")
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  K ^TMP("LRT2")
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  D SET^LRAR03
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  ;S $P(^LAB(69.9,1,6,P1,0),U,4)=2 L -^LAR
 | 
|---|
| 123 |  QUIT
 | 
|---|
| 124 | LST ;
 | 
|---|
| 125 |  W @IOF
 | 
|---|
| 126 |  S OK=1
 | 
|---|
| 127 |  U IO
 | 
|---|
| 128 |  S LRPAGE=1
 | 
|---|
| 129 |  D HEAD
 | 
|---|
| 130 |  I $G(LRPAT) W !! S PNM="" F  S PNM=$O(^LAR("NAME",PNM)) Q:PNM=""  D
 | 
|---|
| 131 |  .  S LRDFN=0
 | 
|---|
| 132 |  .  F  S LRDFN=$O(^LAR("NAME",PNM,LRDFN)) Q:+LRDFN'>0!('OK)  D
 | 
|---|
| 133 |  ..  I $D(^LR(LRDFN,0))#2 N PNM S LRDPF=$P(^LR(LRDFN,0),"^",2) D
 | 
|---|
| 134 |  ...  Q:'OK
 | 
|---|
| 135 |  ...  S DFN=$P(^LR(LRDFN,0),"^",3)
 | 
|---|
| 136 |  ...  D CHKPG Q:'OK  D DEM^LRX W !,PNM,?30,SSN
 | 
|---|
| 137 |  ..  I '$D(^LR(LRDFN,0))#2 D
 | 
|---|
| 138 |  ...  W !!,PNM," LRDFN # "_LRDFN_" Has Been Deleted from ^LR( ",!,$C(7),"SSN = Unknown",!
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | LISTS ;
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  I 'OK S OK=1 G AROUND
 | 
|---|
| 143 |  I IOST'["C-" G AROUND
 | 
|---|
| 144 |  S OK=1
 | 
|---|
| 145 |  I IOST["C-" S DIR(0)="E" D ^DIR
 | 
|---|
| 146 | AROUND F LRQ="^TMP(""LRBAD"")","^TMP(""LRUNV"")","^TMP(""LRNOD"")" Q:LRQ=""  D
 | 
|---|
| 147 |  .  W @IOF
 | 
|---|
| 148 |  .  W !,$$CJ^XLFSTR($S(LRQ["LRBAD":"Entries with bad Data",LRQ["LRUNV":"Entries that were not verified",1:"Entries with no data"),IOM),!!
 | 
|---|
| 149 |  .  F  S LRQ=$Q(@LRQ) Q:LRQ'["LR"  D CHKPG Q:'OK  W !,@LRQ
 | 
|---|
| 150 | QUIT ;
 | 
|---|
| 151 |  D KILL^LRAR01 D KVAR^VADPT K F1,LRC1,LRC2,LRC3 U IO(0)
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  I $G(LRP1) S $P(^LAB(69.9,1,6,LRP1,0),U,4)=2 ;----SEARCH IS DONE
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  K ^TMP("LRBAD"),^TMP("LRUNV"),^TMP("LRNOD")
 | 
|---|
| 156 |  QUIT
 | 
|---|
| 157 | CHKPG ;
 | 
|---|
| 158 |  Q:'OK
 | 
|---|
| 159 |  I IOSL-$Y'>3&($E(IOST,1,2)="C-") S DIR(0)="E" D ^DIR K DIR D
 | 
|---|
| 160 |  .  W @IOF
 | 
|---|
| 161 |  .  I $D(DTOUT)!($D(DUOUT)) S OK=0
 | 
|---|
| 162 |  Q:'OK
 | 
|---|
| 163 |  I IOSL-$Y'>3&($E(IOST,1,2)="P-") S LRPAGE=LRPAGE+1 D HEAD
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 |  QUIT
 | 
|---|
| 166 | HEAD ;
 | 
|---|
| 167 |  W $$RJ^XLFSTR("Page "_LRPAGE,IOM),!
 | 
|---|
| 168 |  Q
 | 
|---|
| 169 | CLEAN ;
 | 
|---|
| 170 |  D CLEAN^LRAR01
 | 
|---|
| 171 |  Q
 | 
|---|
| 172 | PURGE ;
 | 
|---|
| 173 |  D PURGE^LRAR01 
 | 
|---|
| 174 |  Q
 | 
|---|