| [613] | 1 | LRLABLD ;DALOI/TGA/JMC - LABELS ON DEMAND ; 5/22/87  20:42 | 
|---|
|  | 2 | ;;5.2;LAB SERVICE;**65,161,218**;Sep 27, 1994 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ENT ; | 
|---|
|  | 5 | ; Called by LROE | 
|---|
|  | 6 | S U="^" | 
|---|
|  | 7 | D PSET | 
|---|
|  | 8 | S LRLABLIO=IO | 
|---|
|  | 9 | S LRAA=0 | 
|---|
|  | 10 | F  S LRAA=$O(LRLBL(LRAA)) Q:LRAA<1  D EN2 | 
|---|
|  | 11 | K LRBAR,LRBAR1,LRBAR0,LRBARID,LREND,LRI,LRN,LROK,LRURG,LRURG0,LRURGA | 
|---|
|  | 12 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
|  | 13 | E  D PKILL^%ZISP | 
|---|
|  | 14 | Q | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | EN2 ; | 
|---|
|  | 17 | D LBLTYP | 
|---|
|  | 18 | D LRBAR | 
|---|
|  | 19 | S LRAN=0 | 
|---|
|  | 20 | F  S LRAN=$O(LRLBL(LRAA,LRAN)) Q:LRAN<1  D | 
|---|
|  | 21 | . N LRRB,LRLLOC | 
|---|
|  | 22 | . S X=LRLBL(LRAA,LRAN),LRSN=+X,LRAD=$P(X,U,2),LRODT=$P(X,U,3),LRRB=$P(X,U,4),LRLLOC=$P(X,U,5),LRACC=$P(X,U,6),LRCE=$P(X,U,7) | 
|---|
|  | 23 | . D GO | 
|---|
|  | 24 | Q | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | GO ; From above, LRLABXT, LRPHLIS1 | 
|---|
|  | 27 | Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,3)) | 
|---|
|  | 28 | S LRDAT=$TR($$FMTE^XLFDT($P(^LRO(68,LRAA,1,LRAD,1,LRAN,3),U),"2MZ"),"@"," ") ; Date/time with "@" --> " " | 
|---|
|  | 29 | S LRTJ=$P($G(^LRO(69,LRODT,1,LRSN,0)),U,3) | 
|---|
|  | 30 | S LRTJDATA=$G(^LAB(62,+LRTJ,0)) | 
|---|
|  | 31 | S LRTOP=$P(LRTJDATA,U,3),S1=$P(LRTJDATA,U,4),S2=$P(LRTJDATA,U,5) | 
|---|
|  | 32 | I LRTOP="" D | 
|---|
|  | 33 | . S LRTOP=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,5,1,0)) | 
|---|
|  | 34 | . I LRTOP>0 D | 
|---|
|  | 35 | . . S T=$P($G(^LAB(62,+$P(LRTOP,U,2),0)),U,1) | 
|---|
|  | 36 | . . S LRTOP=$P($G(^LAB(61,+LRTOP,0)),U,1),LRTOP=T_$S(LRTOP'=T:"  "_LRTOP,1:"") | 
|---|
|  | 37 | . . S LRTJDATA=$G(^LAB(62,+LRTJ,0)),S1=$P(LRTJDATA,U,4),S2=$P(LRTJDATA,U,5) | 
|---|
|  | 38 | S LRDFN=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) | 
|---|
|  | 39 | S DFN=$P(^LR(LRDFN,0),U,3),LRDPF=$P(^(0),U,2),LRINFW=$P($G(^LR(LRDFN,.091)),U,1) | 
|---|
|  | 40 | D PT^LRX Q:LREND | 
|---|
|  | 41 | D UID,BARID | 
|---|
|  | 42 | K LRTS,LRURG | 
|---|
|  | 43 | S LRTVOL=0,LRURG0=9,LRXL=0 | 
|---|
|  | 44 | S T=0 | 
|---|
|  | 45 | F  S T=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,T)) Q:T<1  D | 
|---|
|  | 46 | . S LRTV=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,T,0)) | 
|---|
|  | 47 | . I LRTV,$P(LRTV,U,2)<49 D | 
|---|
|  | 48 | . . S LRVOL=0 | 
|---|
|  | 49 | . . S:$P(LRTV,U,2)=1 LRURG=1 | 
|---|
|  | 50 | . . I $P(LRTV,U,2),$P(LRTV,U,2)<LRURG0 S LRURG0=$P(LRTV,U,2) | 
|---|
|  | 51 | . . F LRSSP=0:0 S LRSSP=$O(^LAB(60,+LRTV,3,LRSSP)) Q:LRSSP<1  I LRTJ=+^(LRSSP,0) S LRVOL=$P(^(0),U,4),LRTVOL=LRTVOL+LRVOL | 
|---|
|  | 52 | . . S LRTS(T)=$P($G(^LAB(60,+LRTV,.1)),U,1) | 
|---|
|  | 53 | . . S LRXL=LRXL+$P($G(^LAB(60,+LRTV,0)),U,15) | 
|---|
|  | 54 | S LRN=$S(+S1=0:1,1:LRTVOL\S1+$S(LRTVOL#S1:1,LRTVOL=0:1,1:0))+LRXL | 
|---|
|  | 55 | Q:LRN<1 | 
|---|
|  | 56 | S LRURGA=$$URGA(LRURG0) | 
|---|
|  | 57 | F LRI=1:1:LRN D | 
|---|
|  | 58 | . S I=LRI,N=LRN ; Label routines use "I" and  "N" | 
|---|
|  | 59 | . N LRI,LRN | 
|---|
|  | 60 | . S LRPREF=$S(S2="":"",LRTVOL>S2:"LARGE ",1:"SMALL "),LRTVOL=LRTVOL-S1 | 
|---|
|  | 61 | . D @LRLABEL | 
|---|
|  | 62 | D KVA^VADPT | 
|---|
|  | 63 | Q | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | UID ; Set up variables for unique id. | 
|---|
|  | 66 | ; Called by above, LRLABLD0, LRPHLIS1 | 
|---|
|  | 67 | ;  LRUID = unique id number of accession | 
|---|
|  | 68 | I $G(LRAA),$G(LRAD),$G(LRAN) S LRUID=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^") ;Get unique identifier | 
|---|
|  | 69 | E  S LRUID="" | 
|---|
|  | 70 | Q | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | BARID ; Set up variables for barcoding | 
|---|
|  | 73 | ; LRBARID = number to be barcoded on label, based on accession area setup in file #68. | 
|---|
|  | 74 | ; If no accession # or UID - sets LRBARID="" | 
|---|
|  | 75 | ; Called by LRLABLD0, LRPHLIS1 | 
|---|
|  | 76 | N LRX | 
|---|
|  | 77 | S LRX=$G(^LRO(68,+$G(LRAA),.4)) ; Barcode info from accession file. | 
|---|
|  | 78 | S LRBARID="" | 
|---|
|  | 79 | I $L($G(LRUID)),$P(LRX,"^",2)="L" S LRBARID=LRUID Q  ; Barcode UID | 
|---|
|  | 80 | I $G(LRAN)>0,LRBARID="" D | 
|---|
|  | 81 | . S LRBARID=LRAN ; Barcode accession number | 
|---|
|  | 82 | . I $P(LRX,"^",3) S LRBARID=$$RJ^XLFSTR(LRBARID,$P(LRX,"^",3),"0") ; Pad barcode number | 
|---|
|  | 83 | Q | 
|---|
|  | 84 | ; | 
|---|
|  | 85 | LBLTYP ; Determine label routine to use. | 
|---|
|  | 86 | ; Sets LRLABEL to label print routine (label^routine). | 
|---|
|  | 87 | ; Called by above, LRLABLD0, LRLABLIO, LRLABXOL, LRLABXT, LRPHLIS1 | 
|---|
|  | 88 | ; | 
|---|
|  | 89 | N LRLBLDEV | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | ; Default label routine | 
|---|
|  | 92 | S LRLABEL="^LRLABEL"_$P($G(^LAB(69.9,1,3)),U,3) | 
|---|
|  | 93 | S LRLBLDEV=$O(^LAB(69.9,1,3.6,"B",+$G(IOS),0)) | 
|---|
|  | 94 | I LRLBLDEV D | 
|---|
|  | 95 | . S LRLBLDEV(0)=$G(^LAB(69.9,1,3.6,LRLBLDEV,0)) | 
|---|
|  | 96 | . ; default accession area for characteristics. | 
|---|
|  | 97 | . I '$G(LRAA),$P(LRLBLDEV(0),"^",6) S LRAA=$P(LRLBLDEV(0),"^",6) | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | ; Site's local accession area label routine. | 
|---|
|  | 100 | I $G(LRAA)>0,$L($P(^LRO(68,LRAA,.4),"^",5)) D  Q | 
|---|
|  | 101 | . S LRLABEL=$P(^LRO(68,LRAA,.4),"^",4,5) | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | ; This device not defined in file #69.9. | 
|---|
|  | 104 | I LRLBLDEV<1 Q | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | ; Site's designated local label routine. | 
|---|
|  | 107 | I $L($P(LRLBLDEV(0),"^",5)) D  Q | 
|---|
|  | 108 | . S LRLABEL=$P(LRLBLDEV(0),"^",4,5) | 
|---|
|  | 109 | ; | 
|---|
|  | 110 | ; Intermec 3000/4000 printer | 
|---|
|  | 111 | I $P(LRLBLDEV(0),"^",2)=1 D | 
|---|
|  | 112 | . I $P(LRLBLDEV(0),"^",3)=1 S LRLABEL="^LRLABELC" Q  ; 1x3 label | 
|---|
|  | 113 | . I $P(LRLBLDEV(0),"^",3)=2 S LRLABEL="^LRLABELA" Q  ; 1x2 label | 
|---|
|  | 114 | . I $P(LRLBLDEV(0),"^",3)=3 S LRLABEL="^LRLABELB" Q  ; 10 part label | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | ; Zebra ZPL II compatible printer | 
|---|
|  | 117 | I $P(LRLBLDEV(0),"^",2)=2 D | 
|---|
|  | 118 | . I $P(LRLBLDEV(0),"^",3)=1 S LRLABEL="^LRLABELG" Q  ; 1x3 label | 
|---|
|  | 119 | . I $P(LRLBLDEV(0),"^",3)=2 S LRLABEL="^LRLABELD" Q  ; 1x2 label | 
|---|
|  | 120 | . I $P(LRLBLDEV(0),"^",3)=3 S LRLABEL="^LRLABELE" Q  ; 10 part label | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | Q | 
|---|
|  | 123 | ; | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | PSET ; Setup special printer variables - barcode on/barcode off | 
|---|
|  | 126 | ; Called by above, LRLABXOL, LRLABXT, LRPHLIS1 | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | ; Cleanup first | 
|---|
|  | 129 | D PKILL^%ZISP | 
|---|
|  | 130 | ; | 
|---|
|  | 131 | ; Set variables | 
|---|
|  | 132 | I IOST(0) D PSET^%ZISP | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | S LRBAR0=$G(IOBAROFF) | 
|---|
|  | 135 | S LRBAR1=$G(IOBARON) | 
|---|
|  | 136 | ; | 
|---|
|  | 137 | Q | 
|---|
|  | 138 | ; | 
|---|
|  | 139 | ; | 
|---|
|  | 140 | URGA(X) ; Determine urgency abbreviation to print on label | 
|---|
|  | 141 | ; Input X = pointer to Urgency #62.05 file | 
|---|
|  | 142 | ; Returns Y = urgency abbreviation^display type if turned on | 
|---|
|  | 143 | ; Called by above, LRLABELF, LRLABLD0, LRLABLIO, LRPHLIS1 | 
|---|
|  | 144 | N Y | 
|---|
|  | 145 | S Y="" | 
|---|
|  | 146 | I '$G(X) Q Y | 
|---|
|  | 147 | S X(0)=$G(^LAB(62.05,X,0)) | 
|---|
|  | 148 | S Y=$P(X(0),"^",7)_"^"_$P(X(0),"^",6) | 
|---|
|  | 149 | Q Y | 
|---|
|  | 150 | ; | 
|---|
|  | 151 | LRTXT(LRTLST,LRLEN) ; Parse test list to print on label. | 
|---|
|  | 152 | ; Builds a string of test names concatentated using ";" to the maximum | 
|---|
|  | 153 | ; length (LRLEN) specified. Terminates list with "..." if exceeds length | 
|---|
|  | 154 | ; specified. | 
|---|
|  | 155 | ; Call with | 
|---|
|  | 156 | ;         LRTLST = array containing name of test to parse | 
|---|
|  | 157 | ;         LRLEN  = length of test string to return (default=35) | 
|---|
|  | 158 | ; | 
|---|
|  | 159 | ; Returns LRTXT  = variable containing concatenated test list. | 
|---|
|  | 160 | ; | 
|---|
|  | 161 | ; Called from LRLABEL, LRLABEL1, LRLABEL2, LRLABEL3, LRLABEL5, LRLABEL6, | 
|---|
|  | 162 | ;             LRLABELA, LRLABELB, LRLABELC, LRLABELD, LRLABELE | 
|---|
|  | 163 | ; | 
|---|
|  | 164 | N I,J,LRTXT,X,Y | 
|---|
|  | 165 | I '$G(LRLEN) S LRLEN=35 | 
|---|
|  | 166 | S J=0,LRTXT="" | 
|---|
|  | 167 | F  S J=$O(LRTLST(J)) Q:J<1!($L(LRTXT)>LRLEN)  D | 
|---|
|  | 168 | . S X=LRTLST(J)_$S($O(LRTLST(J)):";",1:"") ; Add ";" if more tests | 
|---|
|  | 169 | . S LRTXT=LRTXT_X | 
|---|
|  | 170 | I $L(LRTXT)>LRLEN D | 
|---|
|  | 171 | . S Y=$L(LRTXT,";") | 
|---|
|  | 172 | . F I=Y:-1:1 S X=$P(LRTXT,";",1,I) I $L(X)<(LRLEN-2) Q | 
|---|
|  | 173 | . S LRTXT=$E(X,1,(LRLEN-3))_"..." | 
|---|
|  | 174 | Q LRTXT | 
|---|
|  | 175 | ; | 
|---|
|  | 176 | LRBAR ; Setup LRBAR array if barcodes for this accession area | 
|---|
|  | 177 | ; Called by above, LRLABLD0, LRLABLIO, LRLABXT, LRPHIS1 | 
|---|
|  | 178 | I $G(LRAA)<1 Q  ; Pointer not valid. | 
|---|
|  | 179 | I $P($G(^LRO(68,LRAA,0)),U,15) S LRBAR(LRAA)=+$P($G(^LRO(68,LRAA,0)),U,15) | 
|---|
|  | 180 | Q | 
|---|