| [613] | 1 | LRLABLDS ;DALOI/FHS/DRH - PRINT SINGLE LABELS ON DEMAND FOR FUTURE LAB COLLECT ;8/29/94 12:36 | 
|---|
|  | 2 | ;;5.2;LAB SERVICE;**161,218**;Sep 27, 1994 | 
|---|
|  | 3 | EN ; | 
|---|
|  | 4 | N DIC,DIR,DIRUT,DTOUT,DTOUT,LRBATCH,LROK | 
|---|
|  | 5 | K ^TMP($J) | 
|---|
|  | 6 | S LRBATCH=0,LRPICK=2,LRSING=1 | 
|---|
|  | 7 | S DIR(0)="NO^1:"_$O(^LRO(69,"C",""),-1)_":0",DIR("A")="Enter Order Number" | 
|---|
|  | 8 | S DIR("?")="Enter the order number for which you need a label" | 
|---|
|  | 9 | D ^DIR | 
|---|
|  | 10 | I $D(DIRUT) D CLEAN Q | 
|---|
|  | 11 | I '$D(^LRO(69,"C",Y)) W !?10,"Number does not exist",!,$C(7) G EN | 
|---|
|  | 12 | S LRORDN=Y | 
|---|
|  | 13 | GET K DA | 
|---|
|  | 14 | S (LREND,LROK,LRSN)=0 | 
|---|
|  | 15 | S LRODT=$O(^LRO(69,"C",LRORDN,"")) | 
|---|
|  | 16 | F  S LRSN=$O(^LRO(69,"C",LRORDN,LRODT,LRSN)) Q:LRSN=""  D | 
|---|
|  | 17 | . S LRSN(0)=$G(^LRO(69,LRODT,1,LRSN,0)),LRSN(1)=$G(^LRO(69,LRODT,1,LRSN,1)) | 
|---|
|  | 18 | . S DA=LRSN,DA(1)=LRODT,DIC="^LRO(69,"_DA(1)_",1," | 
|---|
|  | 19 | . D EN^DIQ,CHK | 
|---|
|  | 20 | . I 'LREND S LROK=1 | 
|---|
|  | 21 | I 'LROK G EN | 
|---|
|  | 22 | K DIR W ! | 
|---|
|  | 23 | S DIR(0)="YO",DIR("A")="Is this the correct patient",DIR("B")="YES" | 
|---|
|  | 24 | D ^DIR | 
|---|
|  | 25 | I $D(DIRUT) D CLEAN Q | 
|---|
|  | 26 | I Y'=1 G EN | 
|---|
|  | 27 | K %ZIS S %ZIS="Q" D ^%ZIS | 
|---|
|  | 28 | I POP D CLEAN Q | 
|---|
|  | 29 | I $D(IO("Q")) D  G EN | 
|---|
|  | 30 | . S ZTRTN="QUE^LRLABLDS",ZTDESC="Print Future Collection Labels" | 
|---|
|  | 31 | . S ZTSAVE("LR*")="" | 
|---|
|  | 32 | . D ^%ZTLOAD,CLEAN | 
|---|
|  | 33 | QUE ; | 
|---|
|  | 34 | U IO | 
|---|
|  | 35 | S (LREND,LROK,LRSN)=0 | 
|---|
|  | 36 | F  S LRSN=$O(^LRO(69,"C",LRORDN,LRODT,LRSN)) Q:LRSN=""  D | 
|---|
|  | 37 | . S LRSN(0)=$G(^LRO(69,LRODT,1,LRSN,0)),LRSN(1)=$G(^LRO(69,LRODT,1,LRSN,1)) | 
|---|
|  | 38 | . I '$D(ZTQUEUED) S LROK=1 | 
|---|
|  | 39 | . E  D CHK S:'LREND LROK=1 Q:LREND | 
|---|
|  | 40 | . S LRDFN=+LRSN(0) D BLDTMP^LRLABLD0 | 
|---|
|  | 41 | I LROK D ^LRLABELF | 
|---|
|  | 42 | Q:$D(ZTQUEUED) | 
|---|
|  | 43 | D CLEAN | 
|---|
|  | 44 | G EN | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | CHK ; Check order for collection type/status/date-time | 
|---|
|  | 47 | N LRMSG | 
|---|
|  | 48 | S LREND=0 | 
|---|
|  | 49 | I '$L($P(LRSN(0),U,4)) S LREND=1,LRMSG="No Collection Type on Order" | 
|---|
|  | 50 | I 'LREND,'$P(LRSN(0),U,8) S LREND=1,LRMSG="No Est. Date/Time of Collection on Order" | 
|---|
|  | 51 | I 'LREND,$L($P(LRSN(1),U,4)),"CM"[$P(LRSN(1),U,4) S LREND=1,LRMSG="Collection status: "_$$EXTERNAL^DILFD(69.01,13,,$P(LRSN(1),U,4)) | 
|---|
|  | 52 | I 'LREND,$P(LRSN(1),U) S LREND=1,LRMSG="Order already collected" | 
|---|
|  | 53 | I 'LREND D | 
|---|
|  | 54 | . N LRTEST,LROK | 
|---|
|  | 55 | . S LROK=0 ; Flag to indicate there are still tests on the order | 
|---|
|  | 56 | . S LRTEST=0 | 
|---|
|  | 57 | . F  S LRTEST=$O(^LRO(69,LRODT,1,LRSN,2,LRTEST)) Q:'LRTEST  I '$P($G(^LRO(69,LRODT,1,LRSN,2,LRTEST,0)),U,11) S LROK=1 ; Found a 'good' test. | 
|---|
|  | 58 | . I 'LROK S LREND=1,LRMSG="No active tests on specimen" | 
|---|
|  | 59 | I LREND,'LRBATCH D  Q | 
|---|
|  | 60 | . I $D(ZTQUEUED),LRPICK=2 Q  ; Don't print error msg on label printer. | 
|---|
|  | 61 | . U IO(0) | 
|---|
|  | 62 | . W !,$C(7),"Can not print label for Order Number: ",$P($G(^LRO(69,LRODT,1,LRSN,.1),"Unknown"),U) | 
|---|
|  | 63 | . W !,?26,"Specimen #: ",LRSN | 
|---|
|  | 64 | . W !,?5,"Reason - ",LRMSG,! | 
|---|
|  | 65 | Q | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | CLEAN ; | 
|---|
|  | 68 | D END^LRLABELF | 
|---|
|  | 69 | K DA,DIC,A,DX | 
|---|
|  | 70 | Q | 
|---|