| 1 | LRORDB ;DALOI/FHS - ORDER LEDI TEST USING BARCODE FROM 69.6 ; 12/3/1997 | 
|---|
| 2 | ;;5.2;LAB SERVICE;**153,222,286**;Sep 27, 1994 | 
|---|
| 3 | ; | 
|---|
| 4 | EN(LRRUID,LRSSMP) ; | 
|---|
| 5 | ; | 
|---|
| 6 | N I,LRSTATUS,LRX | 
|---|
| 7 | ; | 
|---|
| 8 | K LROT | 
|---|
| 9 | ; | 
|---|
| 10 | S (LROT,LRSTATUS)="" | 
|---|
| 11 | ; | 
|---|
| 12 | Q:'$L($G(LRRUID))!('$L($G(LRSSMP))) | 
|---|
| 13 | S LR696=$O(^LRO(69.6,"AD",LRSSMP,LRRUID,0)) Q:'LR696 | 
|---|
| 14 | Q:'$D(^LRO(69.6,LR696,0))#2 | 
|---|
| 15 | ; | 
|---|
| 16 | S LRX=+$P(^LRO(69.6,LR696,0),U,10) | 
|---|
| 17 | I LRX S LRSTATUS=$$GET1^DIQ(64.061,LRX_",",.01) | 
|---|
| 18 | I LRSTATUS'="",LRSTATUS'="In-Transit" D | 
|---|
| 19 | . S I=0 | 
|---|
| 20 | . F  S I=$O(^LRO(69.6,LR696,2,I)) Q:'I  D  Q:LRSTATUS="In-Transit" | 
|---|
| 21 | . . S X=$P(^LRO(69.6,LR696,2,I,0),"^",6) Q:'X | 
|---|
| 22 | . . I $$GET1^DIQ(64.061,X_",",.01)="In-Transit" S LRSTATUS="In-Transit" | 
|---|
| 23 | ; | 
|---|
| 24 | I LRSTATUS'="",LRSTATUS'="In-Transit" D  Q | 
|---|
| 25 | . N DIR | 
|---|
| 26 | . S DIR("A",1)="This order has a status of [ "_LRSTATUS_" ]" | 
|---|
| 27 | . S DIR("A",2)="No test selected." | 
|---|
| 28 | . D DISPLO | 
|---|
| 29 | ; | 
|---|
| 30 | ; Display any comments that accompanied order | 
|---|
| 31 | I $D(^LRO(69.6,LR696,99)) D | 
|---|
| 32 | . N LRWP | 
|---|
| 33 | . S LRWP=$$GET1^DIQ(69.6,LR696_",",99,"","LRWP") | 
|---|
| 34 | . S LRWP(.5)="Collecting site order comments:",LRWP(.5,"F")="!!" | 
|---|
| 35 | . D EN^DDIOL(.LRWP) | 
|---|
| 36 | ; | 
|---|
| 37 | D LROT(LR696) | 
|---|
| 38 | ; | 
|---|
| 39 | I $O(LROT(0)) D LL3^LROW3 | 
|---|
| 40 | I '$O(LROT(0)) D  Q | 
|---|
| 41 | . N DIR | 
|---|
| 42 | . S DIR("A",1)="NO tests found on Shipping Manifest "_$G(LRRSITE("SMID")) | 
|---|
| 43 | . S DIR("A",2)="For UID "_$G(LRRUID) | 
|---|
| 44 | . D DISPLO | 
|---|
| 45 | ; | 
|---|
| 46 | S $P(^LRO(69.6,LR696,0),U,11)=$G(LRSD("RIEN")) | 
|---|
| 47 | Q | 
|---|
| 48 | ; | 
|---|
| 49 | ; | 
|---|
| 50 | LROT(LR696) ; | 
|---|
| 51 | ; | 
|---|
| 52 | N LR60,LR6205,LR6964,LRATG,LRMICHK,LRNLT,LRX,LRY,X | 
|---|
| 53 | ; | 
|---|
| 54 | K LROT | 
|---|
| 55 | ; | 
|---|
| 56 | S LR696(0)=$G(^LRO(69.6,LR696,0)) | 
|---|
| 57 | S LRSPEC=+$P(LR696(0),U,7),LRSAMP=+$P(LR696(0),U,8) | 
|---|
| 58 | ;Q:'LRSPEC!('$D(^LAB(61,LRSPEC,0))) | 
|---|
| 59 | S (LR6964,LRMICHK)=0 | 
|---|
| 60 | F  S LR6964=+$O(^LRO(69.6,LR696,2,LR6964)) Q:LR6964<1  D | 
|---|
| 61 | . S LR6964(0)=$G(^LRO(69.6,LR696,2,LR6964,0)) | 
|---|
| 62 | . I LR6964(0)="" Q | 
|---|
| 63 | . I $P(LR6964(0),"^",6),$$GET1^DIQ(64.061,$P(LR6964(0),"^",6)_",",.01)'="In-Transit" Q | 
|---|
| 64 | . S LR60=$P(LR6964(0),U,11) ; Lab test to order | 
|---|
| 65 | . S LR6205=$P(LR6964(0),U,12) ; Urgency | 
|---|
| 66 | . I 'LRMICHK,LR60>0,$P(^LAB(60,LR60,0),U,4)="MI" D MICHECK | 
|---|
| 67 | . S LRATG=0 | 
|---|
| 68 | . ; If have everything, then don't check accession test group. | 
|---|
| 69 | . I LR60,LRSPEC,LRSAMP,LR6205 D  Q:LRATG | 
|---|
| 70 | . . S LR64=+$G(^LAB(60,LR60,64)) | 
|---|
| 71 | . . I 'LR64 Q | 
|---|
| 72 | . . S LRNLT=$P($G(^LAM(LR64,0)),U,2),LRNLT(2)=$P($G(^LAM(LR64,0)),U) | 
|---|
| 73 | . . ; Find available spot. | 
|---|
| 74 | . . F LRATG=LRWPC+1:1 I '$D(LROT(LRSAMP,LRSPEC,LRATG)) S LRWPC=LRATG Q | 
|---|
| 75 | . . D CHKURG,SETLROT | 
|---|
| 76 | . S LRNLT=$P(LR6964(0),U,2) Q:'LRNLT | 
|---|
| 77 | . S LRNLT(1)=+$O(^LAM("C",LRNLT_" ",0)) | 
|---|
| 78 | . I 'LRNLT(1)!('$D(^LAM(LRNLT(1),0))) Q | 
|---|
| 79 | . S LRNLT(2)=$P(^LAM(LRNLT(1),0),U),LR60=0 | 
|---|
| 80 | . F  S LR60=+$O(^LAB(60,"AC",LRNLT(1),LR60)) Q:'LR60  D | 
|---|
| 81 | . . S LRATG=+$O(^TMP("LRSTIK",$J,"C",LR60,0)) Q:LRATG<1 | 
|---|
| 82 | . . S LRATG(1)=$G(^TMP("LRSTIK",$J,LRATG)) Q:'LRATG(1)!('$P(LRATG(1),U,3)) | 
|---|
| 83 | . . S:'$G(LRSAMP) LRSAMP=$P(LRATG(1),U,3) | 
|---|
| 84 | . . D CHKURG | 
|---|
| 85 | . . I LR60,LRSPEC,LRSAMP,LR6205 D SETLROT | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | ; | 
|---|
| 89 | SETLROT ; Setup LROT array | 
|---|
| 90 | ; | 
|---|
| 91 | S LROT(LRSAMP,LRSPEC,LRATG)=LR60 | 
|---|
| 92 | S LROT(LRSAMP,LRSPEC,LRATG,1)=LR6205 | 
|---|
| 93 | S LROT(LRSAMP,LRSPEC,LRATG,"B",LR60)=LR6964_U_LRNLT_U_LRNLT(2) | 
|---|
| 94 | ; | 
|---|
| 95 | ; Required comment | 
|---|
| 96 | S:$P($G(^LAB(60,LR60,0)),U,19) LROT(LRSAMP,LRSPEC,LRATG,2)=$P(^(0),U,19) | 
|---|
| 97 | ; | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | ; | 
|---|
| 101 | CHKURG ; Check for forced, highest allowed and missing urgency on this test | 
|---|
| 102 | ; | 
|---|
| 103 | N X | 
|---|
| 104 | ; | 
|---|
| 105 | ; Forced urgency | 
|---|
| 106 | I +$P(^LAB(60,LR60,0),U,18) S LR6205=+$P(^LAB(60,LR60,0),U,18) | 
|---|
| 107 | ; | 
|---|
| 108 | ; If missing urgency then look above workload urgencies for last urgency | 
|---|
| 109 | ; that matches on HL7 urgency othewise use site's default for routine. | 
|---|
| 110 | I 'LR6205 D | 
|---|
| 111 | . S X=$P(LR6964(0),U,5) | 
|---|
| 112 | . I $L(X) S LR6205=+$O(^LAB(62.05,"HL7",X,50),-1) | 
|---|
| 113 | . S LR6205=$S(LR6205>0:LR6205,1:LROUTINE) | 
|---|
| 114 | ; | 
|---|
| 115 | ; Highest urgency allowed, reset if higher than highest allowed. | 
|---|
| 116 | S X=+$P(^LAB(60,LR60,0),U,16) | 
|---|
| 117 | I LR6205<X S LR6205=X | 
|---|
| 118 | ; | 
|---|
| 119 | Q | 
|---|
| 120 | ; | 
|---|
| 121 | ; | 
|---|
| 122 | MICHECK ; Check "MI" subscript test for missing topography and collection sample | 
|---|
| 123 | ; | 
|---|
| 124 | N DA,DIE,DR,X,Y | 
|---|
| 125 | S DA=LR696,DIE=69.6,DR="",LRMICHK=1 | 
|---|
| 126 | I LRSPEC'>0 S DR=4_";" | 
|---|
| 127 | I LRSAMP'>0 S DR=DR_5 | 
|---|
| 128 | I LRSPEC D | 
|---|
| 129 | . S LRX=$$GET1^DIQ(61,LRSPEC_",",".09:2") | 
|---|
| 130 | . I LRX="XXX"!(LRX="ORH") S DR="4;5" | 
|---|
| 131 | I DR="" Q | 
|---|
| 132 | D EN^DDIOL("Update missing order information for:",,"!!") | 
|---|
| 133 | D EN^DDIOL("",,"!") | 
|---|
| 134 | D ^DIE | 
|---|
| 135 | S LR696(0)=$G(^LRO(69.6,LR696,0)) | 
|---|
| 136 | S LRSPEC=+$P(LR696(0),U,7),LRSAMP=+$P(LR696(0),U,8) | 
|---|
| 137 | ; | 
|---|
| 138 | Q | 
|---|
| 139 | ; | 
|---|
| 140 | ; | 
|---|
| 141 | SMID ; Call to get shipping manifest ID (manual selection) | 
|---|
| 142 | N CNT,DA,DIR,LRSMID,LRY,X,Y | 
|---|
| 143 | S LREND=0,LRSMID="" | 
|---|
| 144 | S DIR(0)="69.6,18" D ^DIR | 
|---|
| 145 | I $D(DTOUT)!($D(DUOUT)) S LREND=1 Q | 
|---|
| 146 | I $D(DIRUT) Q | 
|---|
| 147 | S LRY=Y | 
|---|
| 148 | I LRY'="",$D(^LRO(69.6,"D",LRY)) S LRSMID=LRY | 
|---|
| 149 | I LRSMID="" D | 
|---|
| 150 | . D SHOW | 
|---|
| 151 | . K ^TMP("LR",$J,"SMID") | 
|---|
| 152 | ; | 
|---|
| 153 | I LRSMID="" D  Q | 
|---|
| 154 | . N DIR | 
|---|
| 155 | . S DIR(0)="YO",DIR("A")="Use manifest '"_LRY_"' anyway",DIR("B")="NO" | 
|---|
| 156 | . W ! D ^DIR | 
|---|
| 157 | . I Y S LRRSITE("SMID")=LRY | 
|---|
| 158 | ; | 
|---|
| 159 | S LRRSITE("SMID")=LRSMID | 
|---|
| 160 | S LRY=$O(^LRO(69.6,"D",LRSMID,0)) | 
|---|
| 161 | I LRY S LRRSITE("SDT")=$$GET1^DIQ(69.6,LRY_",",14,"I") | 
|---|
| 162 | K DIR | 
|---|
| 163 | ; | 
|---|
| 164 | ; Flag to determine if this shipping manfiest should be used to | 
|---|
| 165 | ; look up orders when manually accessioning. | 
|---|
| 166 | S DIR(0)="YO",DIR("A")="Lookup orders using this manifest",DIR("B")="YES" | 
|---|
| 167 | D ^DIR | 
|---|
| 168 | I $D(DIRUT) S LREND=1 Q | 
|---|
| 169 | S LRRSITE("SMID-OK")=Y | 
|---|
| 170 | Q | 
|---|
| 171 | ; | 
|---|
| 172 | ; | 
|---|
| 173 | SHOW ; Gather a list of possible SMID to select from | 
|---|
| 174 | N CNT,DIR,IEN,LEN,SMID,VAL | 
|---|
| 175 | K ^TMP("LR",$J,"SMID") | 
|---|
| 176 | S SMID=LRY,LEN=$L(LRY),CNT=0 | 
|---|
| 177 | I SMID?1.N S SMID=SMID_" " | 
|---|
| 178 | F  S SMID=$O(^LRO(69.6,"D",SMID)) Q:$E(SMID,1,LEN)'=LRY  D | 
|---|
| 179 | . S IEN=+$O(^LRO(69.6,"D",SMID,0)) | 
|---|
| 180 | . I $P($G(^LRO(69.6,IEN,0)),"^",5)'=+$G(LRRSITE("RSITE")) Q | 
|---|
| 181 | . S CNT=CNT+1 | 
|---|
| 182 | . S ^TMP("LR",$J,"SMID",CNT)=SMID | 
|---|
| 183 | I 'CNT W !,"No manifest '",LRY,"' found on file." Q | 
|---|
| 184 | I CNT=1 S LRSMID=^TMP("LR",$J,"SMID",CNT) Q | 
|---|
| 185 | ; | 
|---|
| 186 | ; Select SMID from List | 
|---|
| 187 | D DISPL | 
|---|
| 188 | S DIR(0)="NO^1:"_CNT,DIR("A")="Select Manifest Number" | 
|---|
| 189 | D ^DIR | 
|---|
| 190 | I $D(DIRUT) W !,"No manifest selected." Q | 
|---|
| 191 | S LRSMID=$G(^TMP("LR",$J,"SMID",Y)) | 
|---|
| 192 | Q | 
|---|
| 193 | ; | 
|---|
| 194 | ; | 
|---|
| 195 | DISPL ; | 
|---|
| 196 | N CNT,DIR,DIRUT | 
|---|
| 197 | W @IOF | 
|---|
| 198 | S CNT=0 | 
|---|
| 199 | F  S CNT=$O(^TMP("LR",$J,"SMID",CNT)) Q:'CNT  D  Q:$D(DIRUT) | 
|---|
| 200 | . I CNT#3=1 D  Q:$D(DIRUT) | 
|---|
| 201 | . . I '(CNT#(IOSL-3)) S DIR(0)="E" D ^DIR Q:$D(DIRUT) | 
|---|
| 202 | . . W ! | 
|---|
| 203 | . W $$LJ^XLFSTR(CNT_". "_^TMP("LR",$J,"SMID",CNT),26) | 
|---|
| 204 | Q | 
|---|
| 205 | ; | 
|---|
| 206 | ; | 
|---|
| 207 | DISPLO ; Display the order from #69.6 | 
|---|
| 208 | N DA,DIC,DIRUT,DTOUT,DUOUT,DX,S,X,Y | 
|---|
| 209 | S DIR("A")="Would you like a display of the Order" | 
|---|
| 210 | S DIR(0)="Y" D ^DIR K DIR | 
|---|
| 211 | I $D(DIROUT)!(Y'=1) W ! Q | 
|---|
| 212 | S DA=LR696,DIC="^LRO(69.6,",S=0 W @IOF D EN^DIQ W ! | 
|---|
| 213 | Q | 
|---|