source: FOIAVistA/tag/r/OUTPATIENT_PHARMACY-PSO-APSP-HUIP/PSOLLU1.m@ 636

Last change on this file since 636 was 628, checked in by George Lilly, 14 years ago

initial load of FOIAVistA 6/30/08 version

File size: 5.3 KB
Line 
1PSOLLU1 ;BHAM/RJS - LASER LABEL UTILITIES ;11/22/02
2 ;;7.0;OUTPATIENT PHARMACY;**120,141,161**;DEC 1997
3 ;
4FONT(RLN,TEXT) ;
5 ;--------------------------------------------------------------------
6 ;VARIABLES:
7 ; INPUT:
8 ; REQUIRED: RLN - Relates to a value used to determine the max
9 ; line length.
10 ; TEXT - Can contain a string and the $L(TEXT) is used
11 ; to calculate the font size.
12 ; RETURN:
13 ; FONT - This is the calculated optimal font size.
14 ; F8, F9, F10 or F12 will be returned.
15 ;--------------------------------------------------------------------
16 D STRT(RLN,TEXT,"",.FONT) Q FONT
17 Q
18 ;
19STRT(RLN,TEXT,LNTH,FONT) ;
20 ; The LETTER array contains all the number of character per inch
21 ; for the different font sizes that can be used.
22 N LN,LETTER,TXTIDX,SIZ,FNTIDX,LTTR,A
23 S LETTER(1)="22^16^14^13^10",LETTER("!")="40^32^28^25^21"
24 S LETTER(2)="22^16^14^13^10",LETTER("@")="11^8^7^7^5"
25 S LETTER(3)="22^16^14^13^10",LETTER("#")="19^16^14^12^10"
26 S LETTER(4)="22^16^14^13^10",LETTER("$")="20^18^16^14^12"
27 S LETTER(5)="22^16^14^13^10",LETTER("%")="14^13^11^10^8"
28 S LETTER(6)="22^16^14^13^10"
29 S LETTER(7)="22^16^14^13^10",LETTER("&")="22^16^14^12^10"
30 S LETTER(8)="22^16^14^13^10",LETTER("*")="30^23^20^18^15"
31 S LETTER(9)="22^16^14^13^10",LETTER("(")="32^27^24^21^18"
32 S LETTER(0)="22^16^14^13^10",LETTER(")")="32^27^24^21^18"
33 S LETTER($C(34))="30^27^24^21^18",LETTER("'")="45^40^36^32^27"
34 S LETTER("`")="30^27^24^21^18",LETTER("~")="18^15^13^12^10"
35 S LETTER(",")="40^32^28^25^21",LETTER("<")="18^15^13^12^10"
36 S LETTER(".")="35^27^24^21^18",LETTER(">")="18^15^13^12^10"
37 S LETTER(";")="40^32^28^25^21",LETTER(":")="40^32^28^25^21"
38 S LETTER("?")="22^16^14^12^10",LETTER("/")="40^32^28^25^21"
39 S LETTER("[")="40^32^28^25^21",LETTER("{")="35^26^23^21^17"
40 S LETTER("\")="40^32^28^25^21",LETTER("|")="42^34^30^27^23"
41 S LETTER("]")="40^32^28^25^21",LETTER("}")="35^26^23^21^17"
42 S LETTER("_")="20^15^14^12^10",LETTER("-")="30^27^24^21^18"
43 S LETTER("=")="20^15^14^12^10",LETTER("+")="22^18^16^14^12"
44 S LETTER(" ")="40^32^28^25^21"
45 S LETTER("a")="19^16^14^12^10",LETTER("A")="16^13^11^10^8"
46 S LETTER("b")="19^16^14^12^10",LETTER("B")="16^13^11^10^8"
47 S LETTER("c")="22^18^16^14^12",LETTER("C")="15^13^11^10^8"
48 S LETTER("d")="20^16^14^12^10",LETTER("D")="15^13^11^10^8"
49 S LETTER("e")="20^16^14^12^10",LETTER("E")="16^13^11^10^8"
50 S LETTER("f")="40^32^28^25^21",LETTER("F")="18^14^13^11^9"
51 S LETTER("g")="20^16^14^12^10",LETTER("G")="14^11^10^9^7"
52 S LETTER("h")="20^16^14^12^10",LETTER("H")="15^13^11^10^8"
53 S LETTER("i")="50^40^36^32^27",LETTER("I")="40^32^28^25^21"
54 S LETTER("j")="50^40^36^32^27",LETTER("J")="22^18^16^14^12"
55 S LETTER("k")="24^18^16^14^12",LETTER("K")="16^13^11^10^8"
56 S LETTER("l")="50^40^36^32^27",LETTER("L")="20^16^14^12^10"
57 S LETTER("m")="13^10^9^8^7",LETTER("M")="13^11^10^9^7"
58 S LETTER("n")="20^16^14^12^10",LETTER("N")="15^13^11^10^8"
59 S LETTER("o")="20^16^14^12^10",LETTER("O")="14^11^10^9^7"
60 S LETTER("p")="20^16^14^12^10",LETTER("P")="16^13^11^10^8"
61 S LETTER("q")="20^16^14^12^10",LETTER("Q")="14^11^10^9^7"
62 S LETTER("r")="35^32^28^25^21",LETTER("R")="15^13^11^10^8"
63 S LETTER("s")="22^18^16^14^12",LETTER("S")="16^13^11^10^8"
64 S LETTER("t")="40^32^28^25^21",LETTER("T")="18^14^13^11^9"
65 S LETTER("u")="20^16^14^12^10",LETTER("U")="15^13^11^10^8"
66 S LETTER("v")="23^18^16^14^12",LETTER("V")="16^13^11^10^8"
67 S LETTER("w")="14^12^11^9^8",LETTER("W")="11^9^8^7^6"
68 S LETTER("x")="23^18^16^14^12",LETTER("X")="16^13^11^10^8"
69 S LETTER("y")="23^18^16^14^12",LETTER("Y")="16^13^11^10^8"
70 S LETTER("z")="23^18^16^14^12",LETTER("Z")="18^14^13^11^9"
71 ;
72 ; The LN array contains the length in inches for the different
73 ; sections of the laser label.
74 S LN("RX#")=3.126
75 S LN("RXVAMC")=2.626
76 S LN("DRG")=3.376
77 S LN("SIG")=3.126
78 S LN("WRN")=1.99
79 S LN("ML")=2.376
80 S LN("ML2")=1.76
81 S LN("SEC2")=4.1876
82 S LN("SEC2X")=LN("SEC2")
83 S LN("SIG2")=LN("SEC2")
84 S LN("SEC2B")=LN("WRN")
85 S LN("FULL")=8.1876
86 ;
87 ; The LNTH array is used in calculating the length of the text
88 ; for each of the different font sizes.
89 S (LNTH(6),LNTH(8),LNTH(9),LNTH(10),LNTH(12))=""
90 ;
91 ; This section walks the TEXT string and extracts the each character
92 ; then uses the LETTER array to lookup the number of characters per
93 ; inch and calculates the length of the TEXT for each font.
94 F TXTIDX=1:1:$L(TEXT) D
95 .S LTTR=$E(TEXT,TXTIDX),A=$G(LETTER(LTTR),"18^16^14^12^10")
96 .S LNTH(6)=LNTH(6)+(1/$P(A,U))
97 .S LNTH(8)=LNTH(8)+(1/($P(A,U,2)))
98 .S LNTH(9)=LNTH(9)+(1/($P(A,U,3)))
99 .S LNTH(10)=LNTH(10)+(1/($P(A,U,4)))
100 .S LNTH(12)=LNTH(12)+(1/($P(A,U,5)))
101 ;
102 ; This section determines what would be the optimal font for the TEXT
103 I RLN="WRN" D Q
104 . I LNTH(12)<LN(RLN) S FONT="F12" Q
105 . I LNTH(10)<(LN(RLN)*2) S FONT="F10" Q
106 . I LNTH(9)<(LN(RLN)*2.5) S FONT="F9" Q
107 . I LNTH(8)<(LN(RLN)*2.6) S FONT="F8" Q
108 . S FONT="F6"
109 S FONT="F0"
110 I LNTH(8)<LN(RLN) S FONT="F8"
111 I LNTH(9)<LN(RLN) S FONT="F9"
112 I LNTH(10)<LN(RLN) S FONT="F10"
113 I LNTH(12)<LN(RLN) S FONT="F12"
114 Q
115ADD ; Calculate the length and pad "_" to the end of TEXT for change of address
116 ; then return FONT and TEXT to calling program.
117 N NEEDED,CNT,DASH
118 S NEEDED=LN("SEC2X")-LNTH(10)
119 S CNT=NEEDED*12\1
120 S DASH="________________________________________________________________________________________________________________"
121 S TEXT2=TEXT_" "_$E(DASH,1,CNT)
122 S FONT="F10"
123 Q
Note: See TracBrowser for help on using the repository browser.