| [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
 | 
|---|