| [613] | 1 | PSOLLLW ;BIR/EJW - LASER LABELS NEW WARNING LABEL SOURCE ;05/04/2004
 | 
|---|
 | 2 |  ;;7.0;OUTPATIENT PHARMACY;**161**;DEC 1997
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ;External reference to WTEXT^PSSWRNA supported by DBIA 4444
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | PRINT(T,B) ;
 | 
|---|
 | 7 |  S BOLD=$G(B)
 | 
|---|
 | 8 |  I 'BOLD,$G(PSOIO(PSOFONT))]"" X PSOIO(PSOFONT)
 | 
|---|
 | 9 |  I BOLD,$G(PSOIO(PSOFONT_"B"))]"" X PSOIO(PSOFONT_"B")
 | 
|---|
 | 10 |  I $G(PSOIO("ST"))]"" X PSOIO("ST")
 | 
|---|
 | 11 |  W T,!
 | 
|---|
 | 12 |  I $G(PSOIO("ET"))]"" X PSOIO("ET")
 | 
|---|
 | 13 |  I BOLD,$G(PSOIO(PSOFONT))]"" X PSOIO(PSOFONT) ;TURN OFF BOLDING
 | 
|---|
 | 14 |  Q
 | 
|---|
 | 15 |  ;
 | 
|---|
 | 16 | WARN54 ; WARNING LABELS FROM RX CONSULT FILE
 | 
|---|
 | 17 |  I PSOWARN=" " S PSOY=WWW*115+29+(WWW-1*2) Q  ; PRINT BLANK LABEL(S) TO BOTTOM-JUSTIFY IF LESS THAN 5 WARNING LABELS
 | 
|---|
 | 18 |  S (LENGTH,OUT)=0,LINE=1,LCNT=3
 | 
|---|
 | 19 |  S TEXT=$$WTEXT^PSSWRNA(PSOWARN,PSOLAN)
 | 
|---|
 | 20 |  I TEXT'="" D FORMAT
 | 
|---|
 | 21 |  Q
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 | NEWWARN ; NEW WARNING LABEL SOURCE
 | 
|---|
 | 24 |  S (LENGTH,OUT)=0,LINE=1,LCNT=3
 | 
|---|
 | 25 |  S TEXT=$$WTEXT^PSSWRNA(PSOWARN,PSOLAN)
 | 
|---|
 | 26 |  I TEXT'="" D FORMAT
 | 
|---|
 | 27 |  Q
 | 
|---|
 | 28 |  ;
 | 
|---|
 | 29 | FORMAT ;
 | 
|---|
 | 30 |  D STRT^PSOLLU1("WRN",TEXT,.L,.XFONT)
 | 
|---|
 | 31 |  D INCREM
 | 
|---|
 | 32 |  S PTEXT=""
 | 
|---|
 | 33 |  F I=1:1 Q:$E(TEXT,I)'=" "  S TEXT=$E(TEXT,2,255)
 | 
|---|
 | 34 |  F I=1:1:$L(TEXT," ") D STRT^PSOLLU1("WRN",$P(TEXT," ",I)_" ",.L) D  Q:OUT
 | 
|---|
 | 35 |  . I LENGTH+L($E(XFONT,2,99))<1.99 S PTEXT=PTEXT_$P(TEXT," ",I)_" ",LENGTH=LENGTH+L($E(XFONT,2,99)) Q
 | 
|---|
 | 36 |  . S LENGTH=0,I=I-1,PSOFONT=XFONT
 | 
|---|
 | 37 |  . D PRINT(PTEXT) S PTEXT="",LINE=LINE+1 I LINE>LCNT S OUT=1 Q
 | 
|---|
 | 38 |  I 'OUT S PSOFONT=XFONT D PRINT(PTEXT)
 | 
|---|
 | 39 |  S PSOY=WWW*115+29+(WWW-1*2)
 | 
|---|
 | 40 |  Q
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 | INCREM ;
 | 
|---|
 | 43 |  I XFONT="F6" S LCNT=4
 | 
|---|
 | 44 |  S PSOY=PSOY+$S(XFONT="F12":10,XFONT="F10":8,XFONT="F9":8,1:5),PSOYI=$S(XFONT="F12":40,XFONT="F10":35,XFONT="F9":29,1:29)
 | 
|---|
 | 45 |  I WWW=1 S PSOY=$S(PSOY>103:PSOY-20,1:PSOY),PSOYI=$S(XFONT="F10":30,XFONT="F6":20,1:PSOYI)
 | 
|---|
 | 46 |  Q
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 | COUNTSG ; COUNT LINES NEEDED FOR BOTTLE LABEL SIG FOR CALCULATED FONT
 | 
|---|
 | 49 |  N CNT,SUBS
 | 
|---|
 | 50 |  S CNT=0
 | 
|---|
 | 51 |  K ^TMP($J,"PSOSIG",RX)
 | 
|---|
 | 52 |  S PSOX=OPSOX,LENGTH=0,PTEXT="",SIGF=0,XFONT=$E(PSOFONT,2,99)
 | 
|---|
 | 53 |  N DP,TEXTP,TEXTL,MORE
 | 
|---|
 | 54 |  F DR=SIGF("DR"):1 Q:$G(SGY(DR))=""  S TEXT=SGY(DR) D  Q:SIGF
 | 
|---|
 | 55 |  . F I=1:1 Q:$E(TEXT,I)'=" "  S TEXT=$E(TEXT,2,255)
 | 
|---|
 | 56 |  . S DP=$S(TEXT[" ":" ",TEXT[",":",",1:" ")
 | 
|---|
 | 57 |  . F I=SIGF("T"):1:$L(TEXT,DP) D  Q:SIGF
 | 
|---|
 | 58 |  .. S TEXTP=$P(TEXT,DP,I) Q:TEXTP=""  I $D(SIGF("J")) S TEXTP=$E(TEXTP,SIGF("J"),255) K SIGF("J")
 | 
|---|
 | 59 |  .. D STRT^PSOLLU1("SIG",TEXTP_" ",.L) I L(XFONT)>3.3 D
 | 
|---|
 | 60 |  ... S MORE=0
 | 
|---|
 | 61 |  ... F J=$L(TEXTP):-1:1 S TEXTL=PTEXT_$E(TEXTP,1,J) D STRT^PSOLLU1("SIG",TEXTL_" ",.L) D  Q:SIGF!MORE
 | 
|---|
 | 62 |  .... Q:L(XFONT)>3.3
 | 
|---|
 | 63 |  .... S CNT=CNT+1,^TMP($J,"PSOSIG",RX,CNT)=TEXTL,TEXT=$E(TEXT,J+1,999),PTEXT=""
 | 
|---|
 | 64 |  .... D STRT^PSOLLU1("SIG",TEXT_DP,.L) S TEXTP=TEXT,J=$L(TEXTP) I L(XFONT)<3.3 S MORE=1,LENGTH=0
 | 
|---|
 | 65 |  .. I LENGTH+L(XFONT)<3.3 S PTEXT=PTEXT_TEXTP_" ",LENGTH=LENGTH+L(XFONT) Q
 | 
|---|
 | 66 |  .. S LENGTH=0,I=I-1
 | 
|---|
 | 67 |  .. S CNT=CNT+1,^TMP($J,"PSOSIG",RX,CNT)=PTEXT S PTEXT=""
 | 
|---|
 | 68 |  . I 'SIGF S SIGF("T")=1
 | 
|---|
 | 69 |  I PTEXT]"" S CNT=CNT+1,^TMP($J,"PSOSIG",RX,CNT)=PTEXT
 | 
|---|
 | 70 |  K NSGY
 | 
|---|
 | 71 |  ; FOR LONG SIGS THE SMALLEST FONT WILL BE USED. USING THAT FONT, 9 LINES OF THE SIG WILL FIT ON EACH BOTTLE LABEL. ON THE LAST 'CONTINUED' LABEL A MAXIMUM OF 4 LINES OF THE SIG CAN PRINT (WITHIN LINES 5-8 OF THE LABEL).
 | 
|---|
 | 72 |  ; IF THERE ARE LESS THAN 4 LINES ON THE LAST 'CONTINUED' LABEL, THE REMAINDER OF THE SIG WILL PRINT BOTTOM-JUSTIFIED WITHIN LINES 5-8 OF THE CONTINUATION LABEL.
 | 
|---|
 | 73 |  N I,J,MODCNT
 | 
|---|
 | 74 |  F I=1:1:CNT S J=$S(I#9:(I\9)+1,1:I\9) D
 | 
|---|
 | 75 |  .S SUBS=$S(J=1:I,1:I-((J-1)*9))
 | 
|---|
 | 76 |  .S NSGY(J,SUBS)=^TMP($J,"PSOSIG",RX,I)
 | 
|---|
 | 77 |  S MODCNT=CNT#9 I MODCNT=0!(MODCNT>4) S NSGY($G(J)+1,0)=" " ; FORCE LAST CONTINUED LABEL
 | 
|---|
 | 78 |  Q
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 | COUNTSGF ; COUNT LINES NEEDED FOR PHARMACY FILL CARD SIG FOR CALCULATED FONT
 | 
|---|
 | 81 |  N CNT
 | 
|---|
 | 82 |  S CNT=0
 | 
|---|
 | 83 |  K ^TMP($J,"PSOSIGF",RX)
 | 
|---|
 | 84 |  S LENGTH=0,PTEXT="",PFF=0,XFONT=$E(PSOFONT,2,99)
 | 
|---|
 | 85 |  N DP,TEXTP,TEXTL,MORE
 | 
|---|
 | 86 |  F DR=PFF("DR"):1 Q:$G(PGY(DR))=""  S TEXT=PGY(DR) D  Q:PFF
 | 
|---|
 | 87 |  . F I=1:1 Q:$E(TEXT,I)'=" "  S TEXT=$E(TEXT,2,255)
 | 
|---|
 | 88 |  . S DP=$S(TEXT[" ":" ",TEXT[",":",",1:" ")
 | 
|---|
 | 89 |  . F I=PFF("T"):1:$L(TEXT,DP) D  Q:PFF
 | 
|---|
 | 90 |  .. S TEXTP=$P(TEXT,DP,I) Q:TEXTP=""  I $D(PFF("J")) S TEXTP=$E(TEXTP,PFF("J"),255) K PFF("J")
 | 
|---|
 | 91 |  .. D STRT^PSOLLU1("SIG",TEXTP_" ",.L) I L(XFONT)>3.3 D
 | 
|---|
 | 92 |  ... S MORE=0
 | 
|---|
 | 93 |  ... F J=$L(TEXTP):-1:1 S TEXTL=PTEXT_$E(TEXTP,1,J) D STRT^PSOLLU1("SIG",TEXTL_" ",.L) D  Q:PFF!MORE
 | 
|---|
 | 94 |  .... Q:L(XFONT)>3.3
 | 
|---|
 | 95 |  .... S CNT=CNT+1,^TMP($J,"PSOSIGF",RX,CNT)=TEXTL,TEXT=$E(TEXT,J+1,999),PTEXT=""
 | 
|---|
 | 96 |  .... D STRT^PSOLLU1("SIG",TEXT_DP,.L) S TEXTP=TEXT,J=$L(TEXTP) I L(XFONT)<3.3 S MORE=1,LENGTH=0
 | 
|---|
 | 97 |  .. I LENGTH+L(XFONT)<3.3 S PTEXT=PTEXT_TEXTP_" ",LENGTH=LENGTH+L(XFONT) Q
 | 
|---|
 | 98 |  .. S LENGTH=0,I=I-1
 | 
|---|
 | 99 |  .. S CNT=CNT+1,^TMP($J,"PSOSIGF",RX,CNT)=PTEXT S PTEXT=""
 | 
|---|
 | 100 |  . I 'PFF S PFF("T")=1
 | 
|---|
 | 101 |  I PTEXT]"" S CNT=CNT+1,^TMP($J,"PSOSIGF",RX,CNT)=PTEXT
 | 
|---|
 | 102 |  K NPGY
 | 
|---|
 | 103 |  ; 11 LINES OF THE SIG WILL FIT ON EACH PHARMACY FILL CARD LABEL. ON THE LAST 'CONTINUED' LABEL A MAXIMUM OF 4 LINES OF THE SIG CAN PRINT
 | 
|---|
 | 104 |  N I,J,MODCNT
 | 
|---|
 | 105 |  F I=1:1:CNT S J=$S(I#11:(I\11)+1,1:I\11) D
 | 
|---|
 | 106 |  .S SUBS=$S(J=1:I,1:I-((J-1)*11))
 | 
|---|
 | 107 |  .S NPGY(J,SUBS)=^TMP($J,"PSOSIGF",RX,I)
 | 
|---|
 | 108 |  S MODCNT=CNT#11 I MODCNT=0!(MODCNT>4) S NPGY($G(J)+1,0)=" " ; FORCE LAST CONTINUED LABEL
 | 
|---|
 | 109 |  Q
 | 
|---|
 | 110 |  ;
 | 
|---|