1 | IBDF2F ;ALB/CJM - ENCOUNTER FORM - PRINT FORM(sends to printer) ;NOV 16,1992
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**3,25**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | LNPRINT(IBPFID) ;prints the form
|
---|
5 | ;IBPFID is the id for form tracking
|
---|
6 | ;
|
---|
7 | N CURY,CURX,NXTTXT,NXTX,LINE,NXTUL,PERPAGE,STRING,STARTY,PAGE
|
---|
8 | S PAGE=1
|
---|
9 | ;
|
---|
10 | ;determine if simplex or duplex
|
---|
11 | ;
|
---|
12 | D
|
---|
13 | .I IBFORM("PRINT_MODE")="DUPLEX_LONG",IBDEVICE("DUPLEX_LONG")]"" W IBDEVICE("DUPLEX_LONG") Q
|
---|
14 | .I IBFORM("PRINT_MODE")="DUPLEX_SHORT",IBDEVICE("DUPLEX_SHORT")]"" W IBDEVICE("DUPLEX_SHORT") Q
|
---|
15 | .I IBDEVICE("SIMPLEX")]"" W IBDEVICE("SIMPLEX") Q
|
---|
16 | .I $Y W @IOF
|
---|
17 | ;
|
---|
18 | S PERPAGE=IBFORM("PAGE_HT")
|
---|
19 | I 'PERPAGE!(PERPAGE>IOSL) S PERPAGE=IOSL
|
---|
20 | S NXTUL=$O(@IBARRAY("UNDERLINES")@("")),NXTTXT=$O(@IBARRAY("TEXT")@(""))
|
---|
21 | S STARTY=""
|
---|
22 | S:NXTTXT'="" LINE=$G(@IBARRAY("TEXT")@(NXTTXT))
|
---|
23 | ;
|
---|
24 | ;want this rectangular fill area to apply to underlining
|
---|
25 | W:IBDEVICE("PCL") $C(27)_"*c35G"
|
---|
26 | ;
|
---|
27 | D REGISTER^IBDF2F1(PAGE)
|
---|
28 | F CURY=0:1 D I NXTUL'>0,NXTTXT'>0 Q
|
---|
29 | .I (CURY>0)&('(CURY#PERPAGE)) D
|
---|
30 | ..I ((NXTTXT'="")!(NXTUL'="")) D
|
---|
31 | ...D:IBDEVICE("GRAPHICS")&('IBDEVICE("PCL")) PGRPHCS(.STARTY,CURY)
|
---|
32 | ...D:IBDEVICE("PCL") DRAW(.STARTY,CURY),WHITEOUT
|
---|
33 | ...W:$G(IBDEVICE("TCP")) ! ;if TCP device must use ! to get to TOF
|
---|
34 | ...W:'$G(IBDEVICE("TCP")) @IOF
|
---|
35 | ...S PAGE=PAGE+1
|
---|
36 | ...D REGISTER^IBDF2F1(PAGE)
|
---|
37 | .E I (CURY#PERPAGE) W !
|
---|
38 | .I CURY=NXTTXT D
|
---|
39 | ..S CURX=0,NXTX="" F S NXTX=$O(@IBARRAY("CONTROLS")@(NXTTXT,NXTX)) Q:NXTX="" D
|
---|
40 | ...W $E(LINE,+CURX,NXTX),$$CTRLS^IBDFU($G(@IBARRAY("CONTROLS")@(NXTTXT,NXTX)),NXTX,NXTTXT#PERPAGE)
|
---|
41 | ...S CURX=NXTX+1
|
---|
42 | ..S STRING=$E(LINE,CURX,240) W:STRING'="" STRING
|
---|
43 | ..S NXTTXT=$O(@IBARRAY("TEXT")@(NXTTXT)) S:NXTTXT LINE=$G(@IBARRAY("TEXT")@(NXTTXT))
|
---|
44 | .I CURY=NXTUL D UNDRLINE
|
---|
45 | ;
|
---|
46 | ;draw stuff requiring graphics mode - obsoleted by PCL, if available
|
---|
47 | D:IBDEVICE("GRAPHICS")&('IBDEVICE("PCL")) PGRPHCS(STARTY,0)
|
---|
48 | ;
|
---|
49 | ;draw boxes,bubbles, etc. that require PCL
|
---|
50 | D:IBDEVICE("PCL") DRAW(STARTY,0),WHITEOUT
|
---|
51 | ;
|
---|
52 | W:'$G(IBDEVICE("TCP")) @IOF
|
---|
53 | ;go back to simplex
|
---|
54 | D
|
---|
55 | .I IBFORM("PRINT_MODE")="DUPLEX_LONG",IBDEVICE("DUPLEX_LONG")]"",IBDEVICE("SIMPLEX")]"" W IBDEVICE("SIMPLEX") Q
|
---|
56 | .I IBFORM("PRINT_MODE")="DUPLEX_SHORT",IBDEVICE("DUPLEX_SHORT")]"",IBDEVICE("SIMPLEX")]"" W IBDEVICE("SIMPLEX")
|
---|
57 | ;
|
---|
58 | ;set the printer for other stuff to print
|
---|
59 | S X=IOM X $G(^%ZOSF("RM")) K X ;sets device to wrap
|
---|
60 | ;set the printer to 132 col for everything else to print
|
---|
61 | I IBDEVICE("PCL") D
|
---|
62 | .W $C(27),"E"
|
---|
63 | .I $G(IBDEVICE("RESET"))'="" W @IBDEVICE("RESET")
|
---|
64 | .W $C(27),"(s0p16.67h8.5v0s0b0T",!,$C(27),"&l6C" S IOSL=80
|
---|
65 | Q
|
---|
66 | ;
|
---|
67 | UNDRLINE ;
|
---|
68 | Q:IBDEVICE("CRT")
|
---|
69 | N UL
|
---|
70 | S UL=$G(@IBARRAY("UNDERLINES")@(NXTUL))
|
---|
71 | I 'IBDEVICE("PCL") D
|
---|
72 | .W:UL'="" $C(13),UL
|
---|
73 | ;do it a bit differently if IBDEVICE("PCL")
|
---|
74 | I IBDEVICE("PCL") D
|
---|
75 | .W:UL'="" $C(13),$C(27)_"*v2t1n0O",UL,$C(27)_"*v0T"
|
---|
76 | .;!!!!!!!!! with the area fill command - needed? see above
|
---|
77 | .;W:UL'="" $C(13),$C(27)_"*c35G",$C(27)_"*v2t1n0O",UL,$C(27)_"*v0T"
|
---|
78 | S NXTUL=$O(@IBARRAY("UNDERLINES")@(NXTUL))
|
---|
79 | Q
|
---|
80 | PGRPHCS(STARTY,LASTY) ;print graphics - only for raster devices
|
---|
81 | N DX,DY,GRPHCS,LINE
|
---|
82 | W IOG1
|
---|
83 | S (DX,DY)=0 X IOXY
|
---|
84 | S LINE=STARTY F S LINE=$O(@IBARRAY("GRAPHICS")@(LINE)) Q:(LINE="")!($G(LASTY)&(LINE'<LASTY)) D
|
---|
85 | .S DX="" F S DX=$O(@IBARRAY("GRAPHICS")@(LINE,DX)) Q:DX="" S GRPHCS=$G(@IBARRAY("GRAPHICS")@(LINE,DX)),GRPHCS=$$GRPHCS^IBDFU(GRPHCS) I GRPHCS'="" S DY=LINE#PERPAGE W ! X IOXY W GRPHCS
|
---|
86 | S STARTY=LASTY-1
|
---|
87 | W IOG0
|
---|
88 | Q
|
---|
89 | ;
|
---|
90 | DRAW(STARTY,LASTY) ; draws the objects needing HP-GL/2
|
---|
91 | N ROW,COL,BLK,NODE,WIDTH,HT,IEN,PRNTTYPE,PWPARAM,FIPARAM
|
---|
92 | W $C(27),"*p0x0Y"
|
---|
93 | W $C(27),"*c5760x7200Y"
|
---|
94 | W $C(27),"*c0T"
|
---|
95 | W $C(27),"%1B"
|
---|
96 | W "IN;SP1;"
|
---|
97 | W "SC0,5760,7200,0;" ;sets up the coordinate system same as PCL
|
---|
98 | W "AD3,16.6;" ;sets the alternate font for the labels
|
---|
99 | ;
|
---|
100 | ;draw bubbles
|
---|
101 | ;W "PW.12;" ;set pen width to .12 mm, patch 3 value
|
---|
102 | ;W "SV1,25;" ;set fill to 25%, patch 3 value
|
---|
103 | S PWPARAM=$P($G(^IBD(357.09,1,0)),"^",13)
|
---|
104 | I PWPARAM="" S PWPARAM=12
|
---|
105 | S FIPARAM=$P($G(^IBD(357.09,1,0)),"^",14)
|
---|
106 | I FIPARAM="" S FIPARAM=25
|
---|
107 | W "PW."_PWPARAM_";" ;set pen width param to file value
|
---|
108 | W "SV1,"_FIPARAM_";" ;set the fill to file value
|
---|
109 | ;
|
---|
110 | S ROW=STARTY
|
---|
111 | F S ROW=$O(@IBARRAY("BUBBLES")@(ROW)) Q:(ROW="")!($G(LASTY)&(ROW'<LASTY)) S COL="" F S COL=$O(@IBARRAY("BUBBLES")@(ROW,COL)) Q:COL="" D DRWBBL(ROW#PERPAGE,COL)
|
---|
112 | ;
|
---|
113 | ;draw boxes
|
---|
114 | W "PW.4;" ;set pen width to .4 mm
|
---|
115 | W "SV1,100;" ;set the fill to 100%
|
---|
116 | S ROW=STARTY
|
---|
117 | F S ROW=$O(@IBARRAY("BOXES")@(ROW)) Q:(ROW="")!($G(LASTY)&(ROW'<(LASTY))) S COL="" F S COL=$O(@IBARRAY("BOXES")@(ROW,COL)) Q:COL="" S BLK=0 F S BLK=$O(@IBARRAY("BOXES")@(ROW,COL,BLK)) Q:'BLK D
|
---|
118 | .S NODE=$G(@IBARRAY("BOXES")@(ROW,COL,BLK)) S WIDTH=$P(NODE,"^"),HT=$P(NODE,"^",2) D DRWBOX(ROW#PERPAGE,COL,WIDTH,HT)
|
---|
119 | ;
|
---|
120 | ;draw hand print fields
|
---|
121 | ;W "PW.12;" ;set pen width to .12 mm, patch 3 value
|
---|
122 | ;W "SV1,25;" ;set the fill to 25%, patch 3 value
|
---|
123 | S PWPARAM=$P($G(^IBD(357.09,1,0)),"^",13)
|
---|
124 | I PWPARAM="" S PWPARAM=12
|
---|
125 | S FIPARAM=$P($G(^IBD(357.09,1,0)),"^",14)
|
---|
126 | I FIPARAM="" S FIPARAM=25
|
---|
127 | W "PW."_PWPARAM_";" ;set pen width param to file value
|
---|
128 | W "SV1,"_FIPARAM_";" ;set the fill to file value
|
---|
129 | ;
|
---|
130 | S ROW=STARTY
|
---|
131 | F S ROW=$O(@IBARRAY("HAND_PRINT")@(ROW)) Q:(ROW="")!($G(LASTY)&(ROW'<LASTY)) S COL="" F S COL=$O(@IBARRAY("HAND_PRINT")@(ROW,COL)) Q:COL="" S IEN=0 F S IEN=$O(@IBARRAY("HAND_PRINT")@(ROW,COL,IEN)) Q:'IEN D
|
---|
132 | .S NODE=$G(@IBARRAY("HAND_PRINT")@(ROW,COL,IEN)),WIDTH=+$P(NODE,"^",3),PRNTTYPE=$P(NODE,"^",14) Q:('WIDTH)!('PRNTTYPE)
|
---|
133 | .D HANDPRNT(ROW#PERPAGE,COL,WIDTH,$P(NODE,"^",6),PRNTTYPE,$P(NODE,"^",17))
|
---|
134 | ;
|
---|
135 | S STARTY=LASTY-1
|
---|
136 | W $C(27),"%0A"
|
---|
137 | Q
|
---|
138 | ;
|
---|
139 | DRWBBL(Y,X) ;
|
---|
140 | ; -- position is in terms of col,row - change to decipoints
|
---|
141 | S Y=(Y*IBDEVICE("ROW_HT"))+$S(IBFORM("WIDTH")>96:20,IBFORM("WIDTH")>80:30,1:40),X=(X+$S(IBFORM("WIDTH")>96:.5,IBFORM("WIDTH")>80:.75,1:1))*IBDEVICE("COL_WIDTH")
|
---|
142 | ;
|
---|
143 | ; -- position the pen
|
---|
144 | W "PA"_(X)_","_(Y)_";"
|
---|
145 | ;
|
---|
146 | ; -- draw the bubble (a little box)
|
---|
147 | W "EA"_(X+87)_","_(Y+45)_";"
|
---|
148 | Q
|
---|
149 | ;
|
---|
150 | DRWBOX(Y,X,WIDTH,HT) ;
|
---|
151 | ; -- position is in terms of col,row - change to decipoints
|
---|
152 | S Y=((Y+.75)*IBDEVICE("ROW_HT"))+15,X=(X+.5)*IBDEVICE("COL_WIDTH")
|
---|
153 | ;
|
---|
154 | ;position the pen
|
---|
155 | W "PA"_(X)_","_(Y)_";"
|
---|
156 | ;
|
---|
157 | ;draw the box
|
---|
158 | W "EA"_(X+((WIDTH-1)*IBDEVICE("COL_WIDTH")))_","_(Y+((HT-1.7)*IBDEVICE("ROW_HT")))_";"
|
---|
159 | Q
|
---|
160 | ;
|
---|
161 | HANDPRNT(Y,X,WIDTH,LINES,PRNTTYPE,TYPEDATA) ; draw hand print area
|
---|
162 | ; -- FORMAT - contains overlay for the field
|
---|
163 | ; -- UNIT - label to print on the right of print area
|
---|
164 | ; -- PRNTTYPE = could be for ICR (print comb) or not ICR (no comb, different size)
|
---|
165 | N CHAR,FORMAT,UNIT,NODE
|
---|
166 | S NODE=""
|
---|
167 | I $G(TYPEDATA) S NODE=$G(^IBE(359.1,TYPEDATA,0))
|
---|
168 | ;S FORMAT=$$FRMT(NODE,$G(IBAPPT)),UNIT=$P(NODE,"^",11) ;don't use frmt here, cause pre-slugging of data and read when scanning
|
---|
169 | S FORMAT=$P(NODE,"^",5),UNIT=$P(NODE,"^",11)
|
---|
170 | S:LINES'>0 LINES=1
|
---|
171 | I PRNTTYPE=2 D
|
---|
172 | .;change scale from col,row to decipoints
|
---|
173 | .S Y=(Y*IBDEVICE("ROW_HT"))+$S(IBFORM("WIDTH")>96:0,IBFORM("WIDTH")>80:15,1:30),X=X*IBDEVICE("COL_WIDTH")
|
---|
174 | .F Q:LINES'>0 D S LINES=LINES-1,Y=Y+(2*IBDEVICE("ROW_HT"))
|
---|
175 | ..;position the pen
|
---|
176 | ..W !,"PA"_(X)_","_(Y)_";"
|
---|
177 | ..;draw the box
|
---|
178 | ..W "EA"_(X+(172.7654*WIDTH))_","_(Y+(180))_";"
|
---|
179 | ..;print the unit of measurement
|
---|
180 | ..I $L(UNIT) W "SA;","PA"_(X+50+(172.7654*WIDTH))_",",(Y+(120))_";","LB",UNIT,$CHAR(3),"SS;"
|
---|
181 | ..;draw the comb
|
---|
182 | ..N I F I=1:1:WIDTH-1 W "PA"_(X+(172.7654*I))_",",(Y+(180))_";PD;PR0,-180;PU" S CHAR=$E(FORMAT,I+1) I CHAR'="",CHAR'="_" D
|
---|
183 | ...;character pre-slug
|
---|
184 | ...W !,"PA"_(X+50+(172.7654*I))_",",(Y+(120))_";"
|
---|
185 | ...W "LB",CHAR,$CHAR(3)
|
---|
186 | ;
|
---|
187 | I PRNTTYPE=1 D
|
---|
188 | .;change scale from col,row to decipoints
|
---|
189 | .S Y=(Y*IBDEVICE("ROW_HT")),X=X*IBDEVICE("COL_WIDTH")
|
---|
190 | .D CNVRTHT^IBDF2D1(LINES,.LINES)
|
---|
191 | .;position the pen
|
---|
192 | .W "PA"_(X)_","_(Y)_";"
|
---|
193 | .;draw the box
|
---|
194 | .W "EA"_(X+(103.6593*WIDTH))_","_(Y+(IBDEVICE("ROW_HT")*LINES))_";"
|
---|
195 | Q
|
---|
196 | ;
|
---|
197 | FRMT(ND,ADT) ; -- function returns piece 5 on entries from 359.1
|
---|
198 | ; -- reformats the Checkout/date format for y2k
|
---|
199 | ; -- input nd := zero node from 359.1 for entry
|
---|
200 | ; adt := alternate date (appointment date, when known)
|
---|
201 | N FRMT
|
---|
202 | S FRMT=$P(ND,"^",5)
|
---|
203 | I $P(ND,"^")="CHECKOUT DATE@TIME" S $E(FRMT,5)=$S($G(ADT):$E(ADT,2),1:$E(DT,2))
|
---|
204 | Q FRMT
|
---|
205 | ;
|
---|
206 | WHITEOUT ; -- puts white space around the anchors
|
---|
207 | ; helps insure that the anchors can be located
|
---|
208 | ;
|
---|
209 | Q:'IBFORM("SCAN") ;if the form isn't scannable there are no anchors
|
---|
210 | ;
|
---|
211 | W $C(27),"&a0v0H",! ;set top margin to top of page
|
---|
212 | W $C(27),"&l0E"
|
---|
213 | ;
|
---|
214 | ; -- top left corner (ANCHOR 1)
|
---|
215 | W $C(27),"&a354v4H",$C(27),"*c200h60v1P"
|
---|
216 | ;
|
---|
217 | ; -- bottom left (ANCHOR 2)
|
---|
218 | W $C(27),"&a7505v4H",$C(27),"*c200h60v1P"
|
---|
219 | ;
|
---|
220 | ; -- top right (ANCHOR 3)
|
---|
221 | W $C(27),"&a354v5450H",$C(27),"*c400h60v1P"
|
---|
222 | ;
|
---|
223 | ; -- bottom right (ANCHOR 4)
|
---|
224 | W $C(27),"&a7505v5450H",$C(27),"*c400h60v1P"
|
---|
225 | Q
|
---|