| 1 | LRVR1 ;DALOI/CJS/JAH - LAB ROUTINE DATA VERIFICATION ;8/10/04
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**42,153,221,286,291**;Sep 27, 1994
 | 
|---|
| 3 |  N LRI,LRN,LRBETST,LRBEY
 | 
|---|
| 4 |  S (LRI,LRN)=0
 | 
|---|
| 5 |  F  S LRI=$O(^LAH(LRLL,1,"C",LRAN,LRI)) Q:LRI<1  D
 | 
|---|
| 6 |  . N LRX
 | 
|---|
| 7 |  . S LRX=$G(^LAH(LRLL,1,LRI,0))
 | 
|---|
| 8 |  . ; Quit if different accession area.
 | 
|---|
| 9 |  . I $P(LRX,"^",3),$P(LRX,"^",3)'=LRAA Q
 | 
|---|
| 10 |  . ; Quit if different accession date and not a rollover accession (same original accession date).
 | 
|---|
| 11 |  . I $P(LRX,"^",4),$P(LRX,"^",4)'=LRAD,$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),"^",3)'=$P($G(^LRO(68,LRAA,1,$P(LRX,"^",4),1,LRAN,0)),"^",3) Q
 | 
|---|
| 12 |  . I LRN W !
 | 
|---|
| 13 |  . S LRN=LRN+1,LRSQ=LRI
 | 
|---|
| 14 |  . W !,?2,"Seq #: ",LRI,?13," Accession: ",$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.2)),"^")
 | 
|---|
| 15 |  . I $P(LRX,"^",10) W ?40," Results received: ",$$FMTE^XLFDT($P(LRX,"^",10),"1M")
 | 
|---|
| 16 |  . W !,?20,"UID: ",$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3),"UNKNOWN"),"^")
 | 
|---|
| 17 |  . I $P(LRX,"^",11) W ?44," Last updated: ",$$FMTE^XLFDT($P(LRX,"^",11),"1M")
 | 
|---|
| 18 |  G VER:LRN=1,T3:LRN>1
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ; If attempting to verify reference lab results and no entry in LAH
 | 
|---|
| 21 |  ; associated with this accession then quit - do not allow manual entry
 | 
|---|
| 22 |  ; of ref lab results via this option. Will not store units/normals.
 | 
|---|
| 23 |  I $G(LRDUZ(2)),DUZ(2)'=LRDUZ(2) W !,"No data there" Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | T1 R !,"What tray: ",X:DTIME Q:X["^"!'$T  I X["?"!(X'?.N) W !,"Enter a number" G T1
 | 
|---|
| 26 |  I X'="" S LRTRAY=X G T2
 | 
|---|
| 27 |  I $D(^LRO(68.2,"AS",LRLL)) W !,"Can't MANUALLY add to a SEQUENCE instrument data file." G QUIT
 | 
|---|
| 28 |  W !,"Enter manually" S %=1 D YN^DICN G QUIT:%<1,T1:%=2 S LRSQ=-1 G VER
 | 
|---|
| 29 |  G VER
 | 
|---|
| 30 | T2 R !,"What cup: ",X:DTIME Q:X["^"!'$T  I X["?"!(X'?.N) W !,"Enter a number" G T2
 | 
|---|
| 31 |  Q:X=""  S LRTRCP=LRTRAY_";"_X
 | 
|---|
| 32 |  K LRPRGSQ
 | 
|---|
| 33 |  S LRN=0 F LRI=0:0 S LRI=$O(^LAH(LRLL,1,"B",LRTRCP,LRI)) Q:LRI<1  S LRN=LRN+1,LRSQ=LRI,LRPRGSQ(LRI)="" W !,?5,LRI
 | 
|---|
| 34 | T3 I LRN=0 W !,"No data for that tray & cup" Q
 | 
|---|
| 35 |  I LRN>1 R !,"Choose sequence number: ",X:DTIME Q:'$T  I X["?"!(X'?.N) W !,"Enter a number" G T3
 | 
|---|
| 36 |  I X["^"!(X="") K LRPRGSQ Q
 | 
|---|
| 37 |  S:LRN'=1 LRSQ=X I '$D(^LAH(LRLL,1,LRSQ,0)) W !,"No data there" G T3
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | VER ; from LRFLAG, LRGP, LRVRW
 | 
|---|
| 40 |  N LRROOT
 | 
|---|
| 41 |  K LRTEST,LRNM,^TMP("LR",$J,"TMP")
 | 
|---|
| 42 |  S LRUID=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^")
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Determine if there are amended results to process via "EM"
 | 
|---|
| 45 |  S LRROOT=$Q(^LAH("LA7 AMENDED RESULTS",LRUID,1,LRLL))
 | 
|---|
| 46 |  I LRROOT'="",$QS(LRROOT,1)="LA7 AMENDED RESULTS",$QS(LRROOT,2)=LRUID,$QS(LRROOT,4)=LRLL D  Q
 | 
|---|
| 47 |  . W !!,"Amended results exist for this accession. Please process these"
 | 
|---|
| 48 |  . W !,"first using option Enter/verify/modify data (manual) [LRENTER]"
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 |  D TEST
 | 
|---|
| 51 |  I $O(^TMP("LR",$J,"TMP",0))="" W !,"No tests in editing profile" Q
 | 
|---|
| 52 |  S X=DUZ D DUZ^LRX
 | 
|---|
| 53 |  G V2:LRSQ>0
 | 
|---|
| 54 |  L +^LAH(LRLL)
 | 
|---|
| 55 |  S (^LAH(LRLL),LRSQ)=1+$G(^LAH(LRLL))
 | 
|---|
| 56 |  S ^LAH(LRLL,1,LRSQ,0)="^^"_LRAA_"^"_LRAD_"^"_LRAN_"^^MANUAL"
 | 
|---|
| 57 |  D UID^LAGEN(LRLL,LRSQ,LRUID)
 | 
|---|
| 58 |  D UPDT^LAGEN(LRLL,LRSQ)
 | 
|---|
| 59 |  S ^LAH(LRLL,1,"C",LRAN,LRSQ)=""
 | 
|---|
| 60 |  L -^LAH(LRLL)
 | 
|---|
| 61 | V2 K LRPRGSQ(LRSQ)
 | 
|---|
| 62 |  S LRLLOC=0,LROUTINE=$P(^LAB(69.9,1,3),U,2)
 | 
|---|
| 63 |  I $D(^LRO(69,LRODT,1,LRSN,0)) S LRLLOC=$P(^(0),U,7) S:'$L(LRLLOC) LRLLOC=0 W !,$P(^LRO(69,LRODT,1,LRSN,1),U,6)
 | 
|---|
| 64 |  S LRCDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U)
 | 
|---|
| 65 |  I '$P(^LRO(68,LRAA,1,LRAD,1,LRAN,3),"^",3) D
 | 
|---|
| 66 |  . N %DT,LRA1,LRA2,LRA3
 | 
|---|
| 67 |  . S %DT("B")=$$FMTE^XLFDT(LRCDT,"1")
 | 
|---|
| 68 |  . S LRSTATUS="C",LRA1=LRAA,LRA2=LRAD,LRA3=LRAN
 | 
|---|
| 69 |  . D P15^LROE1
 | 
|---|
| 70 |  . S LRAA=LRA1,LRAD=LRA2,LRAN=LRA3
 | 
|---|
| 71 |  . I LRCDT<1 Q
 | 
|---|
| 72 |  . I '$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,3) S $P(^(3),U,3)=$$NOW^XLFDT
 | 
|---|
| 73 |  ; If user did not update then go to next
 | 
|---|
| 74 |  I '$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,3) Q
 | 
|---|
| 75 |  S LRCDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U)
 | 
|---|
| 76 |  I LRCDT<1 Q
 | 
|---|
| 77 |  S LREAL=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,2),LRALERT=LROUTINE
 | 
|---|
| 78 |  S I=0
 | 
|---|
| 79 |  F  S I=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,I)) Q:I<.5  I $G(^(I,0)) S LRAL=$P($G(^(0)),U,2) D
 | 
|---|
| 80 |  . I $G(LRAL) S LRALERT=$S(LRAL<50&(LRAL<LRALERT):LRAL,LRAL>50&(LRAL-50<LRALERT):LRAL-50,1:LRALERT)
 | 
|---|
| 81 |  S LRSAMP=$P($G(^LRO(69,LRODT,1,LRSN,0)),U,3)
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  S LRSS=$P(^LRO(68,LRAA,0),U,2)
 | 
|---|
| 84 |  I LRSS'="CH" Q
 | 
|---|
| 85 |  ; Check for valid pointer to file #63 and entry in file #63.
 | 
|---|
| 86 |  S LRIDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
 | 
|---|
| 87 |  I LRIDT<1 W !,">>>>ERROR - NO POINTER TO FILE #63 - PLEASE NOTIFY SYSTEM MANAGER^ <<<<<",! Q
 | 
|---|
| 88 |  I '$D(^LR(LRDFN,LRSS,LRIDT,0)) W !,">>>>ERROR - NO ENTRY IN FILE #63 - PLEASE NOTIFY SYSTEM MANAGER<<^ <<<",! Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  S LRCW=8
 | 
|---|
| 91 | LD S LRSS="CH"
 | 
|---|
| 92 |  I '($D(^LAH(LRLL,1,LRSQ,0))#2) W !!?5,"No Data for this Accession ",!! K ^LAH(LRLL,1,LRSQ),^LAH(LRLL,1,"C",LRAN,LRSQ) K LRPRGSQ Q
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ; Store any new methods with existing methods on file.
 | 
|---|
| 95 |  S LRMETH=$P(^LAH(LRLL,1,LRSQ,0),U,7) S:$D(LRGVP) LRMETH=LRMETH_"(GV)"
 | 
|---|
| 96 |  I $P($G(^LR(LRDFN,LRSS,LRIDT,0)),U,8)'="" D
 | 
|---|
| 97 |  . N I,X
 | 
|---|
| 98 |  . S X=$P(^LR(LRDFN,LRSS,LRIDT,0),U,8)
 | 
|---|
| 99 |  . F I=1:1:$L(X,";") I $P(X,";",I)'="",LRMETH'[$P(X,";",I) S LRMETH=LRMETH_";"_$P(X,";",I)
 | 
|---|
| 100 |  I LRMETH'="" S $P(^LR(LRDFN,LRSS,LRIDT,0),U,8)=LRMETH
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  W:$D(^LAB(62,+LRSAMP,0)) !,"Sample: ",$P(^(0),U)
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  D ^LRVR2
 | 
|---|
| 105 |  K LRDL,LRPRGSQ
 | 
|---|
| 106 |  Q  ; leave LRVR1, back to LRVR
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | TEST ; from LRGV1
 | 
|---|
| 110 |  N LRI,LRX
 | 
|---|
| 111 |  S LRI=0
 | 
|---|
| 112 |  F  S LRI=$O(^TMP("LR",$J,"VTO",LRI)) Q:LRI<1  K ^(LRI,"P")
 | 
|---|
| 113 |  S (LRI,LRNT)=0
 | 
|---|
| 114 |  F  S LRI=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI)) Q:LRI<.5  I $D(^(LRI,0)),'$L($P(^(0),U,6)) S X=^(0) I $D(^TMP("LR",$J,"VTO",+X)) D
 | 
|---|
| 115 |  . S LRNT=LRNT+1,LRTEST(LRNT)=+X,LRX=$S($P(X,"^",2)>50:$P(X,"^",9),1:$P(X,"^"))
 | 
|---|
| 116 |  . S LRTEST(LRNT,"P")=LRX_U_$$NLT^LRVER1(LRX)_"!"
 | 
|---|
| 117 |  . S ^TMP("LR",$J,"VTO",+X,"P")=$P(LRTEST(LRNT,"P"),"!")
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 | TEST1 ; from LRFLAG
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  N LRI
 | 
|---|
| 122 |  F LRI=1:1:LRNT S:$D(^LAB(60,+LRTEST(LRI),0)) (LRTEST(LRI),LRBETST(LRI))=LRTEST(LRI)_U_^(0)
 | 
|---|
| 123 |  I $G(LRORDR)'="P" K ^TMP("LR",$J,"TMP")
 | 
|---|
| 124 |  S LRNX=0
 | 
|---|
| 125 |  K LRM
 | 
|---|
| 126 |  F I=1:1 Q:'$D(LRTEST(I))  D
 | 
|---|
| 127 |  . S X=LRTEST(I),XP=$G(LRTEST(I,"P"))
 | 
|---|
| 128 |  . K LRTEST(I)
 | 
|---|
| 129 |  . D EX2
 | 
|---|
| 130 |  K LRTEST
 | 
|---|
| 131 |  Q
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | EX2 ;
 | 
|---|
| 135 |  ; If dataname then process and quit
 | 
|---|
| 136 |  S LRSUB=$P(X,U,6)
 | 
|---|
| 137 |  I LRSUB'="" D  Q
 | 
|---|
| 138 |  . S LRSB=$P(LRSUB,";",2)
 | 
|---|
| 139 |  . Q:'$D(LRVTS(LRSB))
 | 
|---|
| 140 |  . I $D(^TMP("LR",$J,"TMP",LRSB)) S ^(LRSB,"P")=XP
 | 
|---|
| 141 |  . Q:$D(^TMP("LR",$J,"TMP",LRSB))
 | 
|---|
| 142 |  . S ^TMP("LR",$J,"TMP",LRSB)=+X
 | 
|---|
| 143 |  . S XP=XP_$$RNLT^LRVER1(+X)
 | 
|---|
| 144 |  . S ^TMP("LR",$J,"TMP",LRSB,"P")=XP
 | 
|---|
| 145 |  . S:$P(X,U,18) LRM(LRSB)=+X,LRM(LRSB,"P")=XP
 | 
|---|
| 146 |  . S LRBEY(+XP,LRSB)=""     ; CIDC
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 |  I $D(^LAB(60,+X,4)),$P(^(4),"^",2) S LRCFL=LRCFL_$P(^(4),"^",2)_U
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 |  ; If panel then explode components of panel and
 | 
|---|
| 151 |  ;  set parent("P" node) to file #60 test being exploded
 | 
|---|
| 152 |  S J=0
 | 
|---|
| 153 |  F  S J=$O(^LAB(60,+X,2,J)) Q:J<1  I $D(^(J,0))#2 D
 | 
|---|
| 154 |  . S LRNT=LRNT+1,Y=^LAB(60,+X,2,J,0)
 | 
|---|
| 155 |  . S LRTEST(LRNT)=+Y_U_^LAB(60,+Y,0)
 | 
|---|
| 156 |  . S LRTEST(LRNT,"P")=+XP_U_$$NLT^LRVER1(+XP)_"!"
 | 
|---|
| 157 |  Q
 | 
|---|
| 158 |  ;
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 | QUIT Q
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 | WAIT W !,"Type ""^"" to skip "
 | 
|---|
| 163 | WAIT1 R X:10 G LRVR1:X[U,WAIT1:$O(^LAH(LRLL,1,"C",LRAN,0))<1 G LRVR1
 | 
|---|