| 1 | LRWRKINC ;SLC/DCM/CJS-INCOMPLETE STATUS REPORT ;2/19/91  11:47
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**153,201,221**;Sep 27, 1994
 | 
|---|
| 3 | EN ;
 | 
|---|
| 4 |  K ^TMP($J),^TMP("LR",$J),^TMP("LRWRKINC",$J)
 | 
|---|
| 5 |  K %ZIS,DIC
 | 
|---|
| 6 |  S Y=$$NOW^XLFDT D DD^LRX S LRDT=Y
 | 
|---|
| 7 |  S (LRCNT,LRCUTOFF,LREND,LREXD,LREXTST,LRNOCNTL,LREXNREQ)=0,LRSORTBY=1
 | 
|---|
| 8 |  S DIC="^LRO(68,",DIC(0)="AEMOQZ"
 | 
|---|
| 9 |  F  D  Q:$G(LRAA)<1!(LREND)
 | 
|---|
| 10 |  . N LAST,LRAD,LRAN,LRFAN,LRLAN,LRWDTL,LRSTAR,LRUSEAA,X,Y
 | 
|---|
| 11 |  . D ^DIC
 | 
|---|
| 12 |  . I $D(DUOUT) S LREND=1 Q
 | 
|---|
| 13 |  . S LRAA=+Y,LRAA(0)=$G(Y(0))
 | 
|---|
| 14 |  . I LRAA<1 Q
 | 
|---|
| 15 |  . D CHKAA^LRWRKIN1
 | 
|---|
| 16 |  . I LREND Q
 | 
|---|
| 17 |  . I '$L(LRUSEAA) D PHD Q:LREND
 | 
|---|
| 18 |  . S LRCNT=LRCNT+1,^TMP("LRWRKINC",$J,$P(LRAA(0),"^")_"^"_LRAA,LRCNT,0)=LRAA(0)
 | 
|---|
| 19 |  . I $L(LRUSEAA) D
 | 
|---|
| 20 |  . . N X
 | 
|---|
| 21 |  . . S X=$P($G(^LRO(68,LRUSEAA,0)),"^")_"^"_LRUSEAA
 | 
|---|
| 22 |  . . S ^TMP("LRWRKINC",$J,$P(LRAA(0),"^")_"^"_LRAA,LRCNT,1)=^TMP("LRWRKINC",$J,$P(LRUSEAA,"^",1,2),$P(LRUSEAA,"^",3),1)
 | 
|---|
| 23 |  . E  S ^TMP("LRWRKINC",$J,$P(LRAA(0),"^")_"^"_LRAA,LRCNT,1)=$G(LRAD)_"^"_$G(LRFAN)_"^"_$G(LRLAN)_"^"_$G(LRSTAR)_"^"_$G(LAST)_"^"_$G(LRWDTL)
 | 
|---|
| 24 |  . W !
 | 
|---|
| 25 |  I LREND!('$D(^TMP("LRWRKINC",$J))) D LREND^LRWRKIN1 Q
 | 
|---|
| 26 |  K DIC
 | 
|---|
| 27 |  N DIR,DIRUT,DTOUT,DUOUT
 | 
|---|
| 28 |  I LRCNT>1 D
 | 
|---|
| 29 |  . S DIR(0)="SO^1:ACCESSION AREA;2:TEST NAME",DIR("A")="Sort Report By",DIR("B")=1
 | 
|---|
| 30 |  . S DIR("?",1)="ACCESSION AREA will separate tests by accession area, then by test name."
 | 
|---|
| 31 |  . S DIR("?")="TEST NAME will list tests alphabetically without regard to accession area."
 | 
|---|
| 32 |  . D ^DIR
 | 
|---|
| 33 |  . I $D(DIRUT) S LREND=1 Q
 | 
|---|
| 34 |  . S LRSORTBY=+Y
 | 
|---|
| 35 |  I LREND D LREND^LRWRKIN1 Q
 | 
|---|
| 36 |  S DIR(0)="YO",DIR("A")="Specify detailed sort criteria",DIR("B")="NO"
 | 
|---|
| 37 |  S DIR("?",1)="Answer 'YES' if you WANT to specify detailed criteria."
 | 
|---|
| 38 |  S DIR("?",2)="Examples are excluding controls, specifying a lab arrival cut-off time,"
 | 
|---|
| 39 |  S DIR("?",3)="selecting or excluding specific tests, or excluding non-required tests."
 | 
|---|
| 40 |  S DIR("?")="Answer 'NO' if you DO NOT want to specify detailed criteria."
 | 
|---|
| 41 |  D ^DIR
 | 
|---|
| 42 |  I $D(DIRUT) D LREND^LRWRKIN1 Q
 | 
|---|
| 43 |  I Y=1 D
 | 
|---|
| 44 |  . K DIR
 | 
|---|
| 45 |  . S DIR(0)="DO^::EXT",DIR("A")="Lab Arrival Cut-off"
 | 
|---|
| 46 |  . S DIR("?",1)="Entering a date/time will exclude uncollected specimens and"
 | 
|---|
| 47 |  . S DIR("?")="specimens with a lab arrival time after the time specified."
 | 
|---|
| 48 |  . D ^DIR
 | 
|---|
| 49 |  . I $D(DUOUT)!($D(DTOUT)) Q
 | 
|---|
| 50 |  . I Y>0 S LRCUTOFF=+Y
 | 
|---|
| 51 |  . K DIR
 | 
|---|
| 52 |  . S DIR(0)="YO",DIR("A")="Do you want to exclude controls",DIR("B")="YES"
 | 
|---|
| 53 |  . S DIR("?",1)="Answer 'NO' if you WANT accessions for LAB CONTROLS included on"
 | 
|---|
| 54 |  . S DIR("?")="the report. 'YES' if you DO NOT want accessions for LAB CONTROLS."
 | 
|---|
| 55 |  . D ^DIR
 | 
|---|
| 56 |  . I $D(DIRUT) Q
 | 
|---|
| 57 |  . S LRNOCNTL=+Y
 | 
|---|
| 58 |  . K DIR
 | 
|---|
| 59 |  . S DIR(0)="YO",DIR("A")="Do you want a specific test",DIR("B")="NO"
 | 
|---|
| 60 |  . D ^DIR
 | 
|---|
| 61 |  . I $D(DIRUT) Q
 | 
|---|
| 62 |  . I Y=1 D
 | 
|---|
| 63 |  . . N I,LRY
 | 
|---|
| 64 |  . . K DIR
 | 
|---|
| 65 |  . . S DIR(0)="YO",DIR("A")="Check tests on panels also",DIR("B")="YES"
 | 
|---|
| 66 |  . . S DIR("?",1)="If you select a panel test do you want to also check"
 | 
|---|
| 67 |  . . S DIR("?")="the tests that make up the panel for an incomplete status."
 | 
|---|
| 68 |  . . D ^DIR
 | 
|---|
| 69 |  . . I $D(DIRUT) Q
 | 
|---|
| 70 |  . . S LRY=+Y
 | 
|---|
| 71 |  . . N DIC
 | 
|---|
| 72 |  . . S DIC="^LAB(60,",DIC(0)="AEFOQZ"
 | 
|---|
| 73 |  . . F  D  Q:+Y<1
 | 
|---|
| 74 |  . . . N LRTEST,LRTSTS
 | 
|---|
| 75 |  . . . D ^DIC Q:+Y<1
 | 
|---|
| 76 |  . . . S ^TMP("LR",$J,"T",+Y)=Y(0)
 | 
|---|
| 77 |  . . . I LRY S LRTEST=+Y,LREXPD="D LREXPD^LRWRKINC" D ^LREXPD
 | 
|---|
| 78 |  . I $D(DIRUT) Q
 | 
|---|
| 79 |  . K DIR
 | 
|---|
| 80 |  . S DIR(0)="YO"
 | 
|---|
| 81 |  . S DIR("A")="Do you want to exclude a specific test",DIR("B")="NO"
 | 
|---|
| 82 |  . D ^DIR
 | 
|---|
| 83 |  . I $D(DIRUT) Q
 | 
|---|
| 84 |  . I Y=1 D
 | 
|---|
| 85 |  . . N DIC
 | 
|---|
| 86 |  . . S DIC="^LAB(60,",DIC(0)="AEFOQ",DIC("S")="I '$D(^TMP(""LR"",$J,""T"",Y))"
 | 
|---|
| 87 |  . . F  D ^DIC Q:+Y<1  S LREXTST(+Y)="",LREXTST=1
 | 
|---|
| 88 |  . K DIR
 | 
|---|
| 89 |  . S DIR(0)="YO",DIR("A")="Exclude non-required tests",DIR("B")="YES"
 | 
|---|
| 90 |  . S DIR("?",1)="Answer 'NO' if you WANT incomplete non-required test included on"
 | 
|---|
| 91 |  . S DIR("?")="the report. 'YES' if you DO NOT want non-required tests."
 | 
|---|
| 92 |  . D ^DIR
 | 
|---|
| 93 |  . I $D(DIRUT) Q
 | 
|---|
| 94 |  . S LREXNREQ=+Y
 | 
|---|
| 95 |  I $D(DIRUT) D LREND^LRWRKIN1 Q
 | 
|---|
| 96 |  S DIR(0)="YO",DIR("A")="Do you want an extended display",DIR("B")="NO"
 | 
|---|
| 97 |  S DIR("?")="Extended display will show UID and other referral information"
 | 
|---|
| 98 |  D ^DIR
 | 
|---|
| 99 |  I $D(DIRUT) D LREND^LRWRKIN1 Q
 | 
|---|
| 100 |  S LREXD=+Y
 | 
|---|
| 101 |  S %ZIS="Q" D ^%ZIS
 | 
|---|
| 102 |  I POP D LREND^LRWRKIN1 Q
 | 
|---|
| 103 |  I $D(IO("Q")) D  Q
 | 
|---|
| 104 |  . S ZTRTN="DQ^LRWRKINC",ZTDESC="Lab incomplete test list",ZTSAVE("LR*")=""
 | 
|---|
| 105 |  . S ZTSAVE("^TMP(""LRWRKINC"",$J,")=""
 | 
|---|
| 106 |  . I $D(^TMP("LR",$J,"T")) S ZTSAVE("^TMP(""LR"",$J,""T"",")=""
 | 
|---|
| 107 |  . D ^%ZTLOAD,^%ZISC
 | 
|---|
| 108 |  . W !,"Request ",$S($G(ZTSK):"Queued - Task #"_ZTSK,1:"NOT Queued")
 | 
|---|
| 109 |  . D LREND^LRWRKIN1
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | DQ ;
 | 
|---|
| 112 |  U IO
 | 
|---|
| 113 |  S (LRAA,LRINDEX,LRPAGE)=0,(LRX,LRY)=""
 | 
|---|
| 114 |  F  S LRX=$O(^TMP("LRWRKINC",$J,LRX)) Q:LRX=""  D
 | 
|---|
| 115 |  . N LRZ
 | 
|---|
| 116 |  . S LRZ=0
 | 
|---|
| 117 |  . F  S LRZ=$O(^TMP("LRWRKINC",$J,LRX,LRZ)) Q:'LRZ  D
 | 
|---|
| 118 |  . . N LRFAN,LRLAN,LRSTAR,LRLAST,LRY
 | 
|---|
| 119 |  . . F I=0,1 S LRZ(I)=$G(^TMP("LRWRKINC",$J,LRX,LRZ,I))
 | 
|---|
| 120 |  . . S LRFAN=$P(LRZ(1),"^",2),LRLAN=$P(LRZ(1),"^",3),LRSTAR=$P(LRZ(1),"^",4),LRLAST=$P(LRZ(1),"^",5)
 | 
|---|
| 121 |  . . I LRSTAR,LRLAST S LRY="From Date: "_$$FMTE^XLFDT(LRSTAR,"5DZ")_"    To: "_$$FMTE^XLFDT(LRLAST,"5DZ")
 | 
|---|
| 122 |  . . E  S LRY=" For Date: "_$$FMTE^XLFDT(LRLAST,"5DZ")_"  From: "_LRFAN_"  To: "_LRLAN
 | 
|---|
| 123 |  . . S LRINDEX=LRINDEX+1,LRNAME(LRINDEX)=$$LJ^XLFSTR($E($P(LRZ(0),"^"),1,20),22)_LRY
 | 
|---|
| 124 |  S LRINDEX=LRINDEX+1,LRNAME(LRINDEX)=$S(LRINDEX>1:"Sorted by "_$S(LRSORTBY=1:"Accession Area",1:"Test Name")_"; ",1:"")_"Controls Excluded: "_$S(LRNOCNTL:"YES",1:"NO")_"; Specific Tests: "_$S($D(^TMP("LR",$J,"T")):"YES",1:"NO")
 | 
|---|
| 125 |  S LRINDEX=LRINDEX+1,LRNAME(LRINDEX)="Exclude Specific Tests: "_$S(LREXTST:"YES",1:"NO")_"; Required Tests Only: "_$S(LREXNREQ:"YES",1:"NO")
 | 
|---|
| 126 |  I LRCUTOFF S LRINDEX=LRINDEX+1,LRNAME(LRINDEX)="For Tests Received Before: "_$$FMTE^XLFDT(LRCUTOFF,"5MZ")
 | 
|---|
| 127 |  D HED^LRWRKIN1 D URG^LRX
 | 
|---|
| 128 |  S LRX=""
 | 
|---|
| 129 |  F  S LRX=$O(^TMP("LRWRKINC",$J,LRX)) Q:LRX=""  D
 | 
|---|
| 130 |  . S LRZ=0
 | 
|---|
| 131 |  . F  S LRZ=$O(^TMP("LRWRKINC",$J,LRX,LRZ)) Q:'LRZ  D
 | 
|---|
| 132 |  . . I LRSORTBY=1 S LRAA("NAME")=$P(LRX,"^")
 | 
|---|
| 133 |  . . S X=^TMP("LRWRKINC",$J,LRX,LRZ,1)
 | 
|---|
| 134 |  . . S LRAA=$P(LRX,"^",2),LRAD=$P(X,"^"),LRFAN=$P(X,"^",2),LRLAN=$P(X,"^",3),LRSTAR=$P(X,"^",4),LAST=$P(X,"^",5),LRWDTL=$P(X,"^",6)
 | 
|---|
| 135 |  . . N LRX,LRZ
 | 
|---|
| 136 |  . . F  S LRAD=$O(^LRO(68,LRAA,1,LRAD)) Q:LRAD<1!(LRAD>LAST)  D
 | 
|---|
| 137 |  . . . I $G(LRSTAR) D AC Q
 | 
|---|
| 138 |  . . . S LRAN=LRFAN-1
 | 
|---|
| 139 |  . . . F  S LRAN=$O(^LRO(68,LRAA,1,LRAD,1,LRAN)) Q:'LRAN!(LRAN>LRLAN)  D
 | 
|---|
| 140 |  . . . . S LREND=0
 | 
|---|
| 141 |  . . . . D TD Q:LREND
 | 
|---|
| 142 |  . . . . I 'LRVERVER D LST1^LRWRKIN1,TESTS
 | 
|---|
| 143 |  D X^LRWRKIN1
 | 
|---|
| 144 |  I LREND D LREND^LRWRKIN1 Q
 | 
|---|
| 145 |  D EQUALS^LRX D WAIT^LRWRKIN1:$E(IOST,1,2)="C-"
 | 
|---|
| 146 |  D LREND^LRWRKIN1
 | 
|---|
| 147 |  Q
 | 
|---|
| 148 |  ;
 | 
|---|
| 149 | TD ;
 | 
|---|
| 150 |  I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) S LREND=1 Q
 | 
|---|
| 151 |  I LRNOCNTL,$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),"^",2)=62.3 S LREND=1 Q
 | 
|---|
| 152 |  S LRVERVER=1,I=0
 | 
|---|
| 153 |  F  S I=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,I)) Q:I<.5  I $D(^(I,0)) S LRVERVER=(LRVERVER&$P(^(0),U,5))
 | 
|---|
| 154 |  I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0)) S LREND=1
 | 
|---|
| 155 |  Q
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 | TESTS Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0))
 | 
|---|
| 158 |  N LRI
 | 
|---|
| 159 |  S LRI=0
 | 
|---|
| 160 |  F  S LRI=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI)) Q:LRI<.5  D
 | 
|---|
| 161 |  . N LR60,LRURG,LRTSTN
 | 
|---|
| 162 |  . S LRI(0)=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0)),LRURG=+$P(LRI(0),U,2)
 | 
|---|
| 163 |  . S LR60=+LRI(0)
 | 
|---|
| 164 |  . I $D(^TMP("LR",$J,"T")),'$D(^TMP("LR",$J,"T",LR60)) Q  ; Not specific test
 | 
|---|
| 165 |  . I LREXTST,$D(LREXTST(LR60)) Q  ; Exclude specific test
 | 
|---|
| 166 |  . I $P(LRI(0),U,5) Q  ; Complete date
 | 
|---|
| 167 |  . I LRCUTOFF,'LRDLA Q  ; Uncollected
 | 
|---|
| 168 |  . I LRCUTOFF,LRCUTOFF<LRDLA Q  ; After cut-off date/time
 | 
|---|
| 169 |  . S LR60(0)=$G(^LAB(60,LR60,0)) ; Get zeroth node from file #60
 | 
|---|
| 170 |  . I LREXNREQ,'$P(LR60(0),"^",17) Q  ; Exclude non-required tests
 | 
|---|
| 171 |  . S LRTSTN=$P(LR60(0),U) ; Test name
 | 
|---|
| 172 |  . I $P(LR60(0),"^")="" S LRTSTN="MISSING FILE 60 - "_LR60
 | 
|---|
| 173 |  . I LRSORTBY=1 S LRTSTN=LRAA("NAME")_"^"_LRTSTN
 | 
|---|
| 174 |  . S Y=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,3))
 | 
|---|
| 175 |  . S LRST=$S($L($P(LRI(0),U,3)):"Load/work list",$L($P(Y,U,3)):"In lab",1:"Not in lab")
 | 
|---|
| 176 |  . D REF
 | 
|---|
| 177 |  . S ^TMP($J,LRTSTN,LRURG,$P(LRACC," ",1)_"^"_+$P(LRDX,"^",3),LRAN)=LRST_U_SSN_U_PNM_U_$P(LRDX,U,7)_U_$P(LRDLA,"^",2)_U_LRMAN_U_LRACC
 | 
|---|
| 178 |  . I $G(LREXD) S ^TMP($J,LRTSTN,LRURG,$P(LRACC," ",1)_"^"_+$P(LRDX,"^",3),LRAN,.3)=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3))
 | 
|---|
| 179 |  Q
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 | REF ; if referred test, get referral status
 | 
|---|
| 182 |  N LREVNT,LRUID
 | 
|---|
| 183 |  S LRUID=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^"),LRMAN=$P(X,"^",10)
 | 
|---|
| 184 |  I LRMAN S LRMAN=$P($G(^LAHM(62.8,LRMAN,0)),"^")
 | 
|---|
| 185 |  S LREVNT=$$STATUS^LREVENT(LRUID,+X,LRMAN)
 | 
|---|
| 186 |  I LREVNT'="" S LRST=$P(LREVNT,"^")
 | 
|---|
| 187 |  Q
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 | PHD ;
 | 
|---|
| 190 |  S LREND=0
 | 
|---|
| 191 |  I $P(LRAA(0),"^",3)="Y" D STAR^LRWU3
 | 
|---|
| 192 |  I $G(LRSTAR) Q
 | 
|---|
| 193 |  D ADATE^LRWU Q:LREND
 | 
|---|
| 194 |  S LAST=LRAD,LRAD=LRAD-1
 | 
|---|
| 195 |  D LRAN^LRWU3
 | 
|---|
| 196 |  Q
 | 
|---|
| 197 |  ;
 | 
|---|
| 198 | AC S LRTK=LRSTAR-.00001
 | 
|---|
| 199 |  F  S LRTK=$O(^LRO(68,LRAA,1,LRAD,1,"E",LRTK)) Q:LRTK<1!(LAST>1&(LRTK\1>LAST))  D
 | 
|---|
| 200 |  . S LRAN=0
 | 
|---|
| 201 |  . F  S LRAN=$O(^LRO(68,LRAA,1,LRAD,1,"E",LRTK,LRAN)) Q:'LRAN  D
 | 
|---|
| 202 |  . . S LREND=0
 | 
|---|
| 203 |  . . I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) S LREND=1 Q
 | 
|---|
| 204 |  . . D TD Q:LREND
 | 
|---|
| 205 |  . . ;I LRUNC!('LRVERVER) D LST,TESTS
 | 
|---|
| 206 |  . . I 'LRVERVER D LST1^LRWRKIN1,TESTS
 | 
|---|
| 207 |  Q
 | 
|---|
| 208 |  ;
 | 
|---|
| 209 | % R %:DTIME Q:%=""!(%["N")!(%["Y")  W !,"Answer 'Y' or 'N': " G %
 | 
|---|
| 210 |  Q
 | 
|---|
| 211 |  ;
 | 
|---|
| 212 | LREXPD ;Include panel test in list when selecting specific tests
 | 
|---|
| 213 |  I $G(S1(+$G(S1))) S ^TMP("LR",$J,"T",S1(S1))=^LAB(60,S1(S1),0)
 | 
|---|
| 214 |  Q
 | 
|---|