1 | IBDFBKS ;ALB/CJM/AAS - Create form spec file for scanning ; 6-JUN-95
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**25**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | SCAN(IBFORMID) ;
|
---|
5 | ;
|
---|
6 | Q:'$G(IBFORMID)
|
---|
7 | N IBLC,PERPAGE,PAGE,ROW,COL,PAGESIZE,SCAN,ARY,X,Y,ROWHT,ROWWIDTH,CONVERT,COUNT,LINE,TAG,NAME,XOFFSET,YOFFSET,NODE,FID,TYPE,XBUBOS,YBUBOS,COUNT,YHANDOS,FIELD,IEN,QLFR,PRIORPAG,END,LN,FIELDS,IBDFILL,IBDBKGND,XYSMALL
|
---|
8 | ;XOFFSET,YOFFSET are the page margins (in decipoints)
|
---|
9 | ;XBUBOS,YBUBOS are the offsets within the col,row of the bubbles
|
---|
10 | ;YHANDOS is the offset for a handprint field within the row
|
---|
11 | ;
|
---|
12 | I '$D(DT) D DT^DICRW
|
---|
13 | I $D(^IBD(359.2,IBFORMID,0)),$D(^IBD(357.95,IBFORMID,0)) S DIK="^IBD(359.2,",DA=IBFORMID D ^DIK
|
---|
14 | I '$D(DT) D DT^DICRW
|
---|
15 | S IBLC=0
|
---|
16 | D PARAM
|
---|
17 | S CONVERT=.352778 ;for converting PCL decipoints to .1mm
|
---|
18 | ; This number is actually 254/720 ... 254 PK points (.1 mm) = 1 inch
|
---|
19 | ; 720 PCL5 decipoints = 1 inch
|
---|
20 | ; A PCL5 decipoint = .352778 PK points
|
---|
21 | S SCAN="^TMP(""IBDF"",$J,""SCAN"",IBFORMID)"
|
---|
22 | K @SCAN
|
---|
23 | ;
|
---|
24 | S FIELDS="^TMP(""IBDF"",$J,""FIELDS"")"
|
---|
25 | K @FIELDS
|
---|
26 | ;
|
---|
27 | ;get form description
|
---|
28 | S NODE=$G(^IBD(357.95,IBFORMID,0))
|
---|
29 | Q:NODE=""
|
---|
30 | S PERPAGE=$P(NODE,"^",10)
|
---|
31 | ;determine sizes and offsets - in terms of PCL decipoints
|
---|
32 | S XOFFSET=180 ; This is 1/4 inch ... .25*720 PCL decipoints
|
---|
33 | S YOFFSET=360 ; This is 1/2 inch ... .5*720 PCL decipoints
|
---|
34 | ; rowht = # of PCL decipoints/line in height
|
---|
35 | ; 80 lines (133 Col) = 720/8 lines per inch)
|
---|
36 | ; 72 lines (96 Col) = 720/7.2 lines per inch)
|
---|
37 | ; 60 lines (80 Col) = 720/6 lines per inch)
|
---|
38 | S ROWHT=$P(NODE,"^",10),ROWHT=$S(ROWHT>72:90,ROWHT>60:100.0005,1:120)
|
---|
39 | S COLWIDTH=$P(NODE,"^",9)
|
---|
40 | S XBUBOS=$S(COLWIDTH>96:.5,COLWIDTH>80:.75,1:1) ;leaves offset in terms of fraction of column width - must still convert to decipoints
|
---|
41 | S YBUBOS=$S(COLWIDTH>96:65,COLWIDTH>80:75,1:85)
|
---|
42 | ; colwidth = # of PCL decipoints/character in width
|
---|
43 | ; 133 Col = 720/16.67 char per inch
|
---|
44 | ; 96 Col = 720/12 char per inch
|
---|
45 | ; 80 Col = 720/10 char per inch
|
---|
46 | S COLWIDTH=$S(COLWIDTH>96:(720/16.67),COLWIDTH>80:60,1:72) ;converted to decipoints
|
---|
47 | S XBUBOS=XBUBOS*COLWIDTH ;converted to decipoints
|
---|
48 | S YHANDOS=$S(ROWHT=90:0,ROWHT=100.0005:15,1:30)
|
---|
49 | ;
|
---|
50 | ;get the list of scannable pages
|
---|
51 | S IEN=0 F S IEN=$O(^IBD(357.95,IBFORMID,3,IEN)) Q:'IEN S NODE=$G(^IBD(357.95,IBFORMID,3,IEN,0)) S:$P(NODE,"^",2) PAGE(+NODE)=""
|
---|
52 | ;
|
---|
53 | ;
|
---|
54 | S PAGE=0 F S PAGE=$O(PAGE(PAGE)) Q:'PAGE D
|
---|
55 | .;
|
---|
56 | .;list all the bubbles
|
---|
57 | .S ROW=((PAGE-1)*PERPAGE)-1
|
---|
58 | .S ARY="^IBD(357.95,""AC"","_IBFORMID_")"
|
---|
59 | .F S ROW=$O(@ARY@(ROW)) Q:ROW="" D
|
---|
60 | ..Q:(ROW\PERPAGE)+1'=PAGE
|
---|
61 | ..S COL="" F S COL=$O(@ARY@(ROW,COL)) Q:COL="" S IEN=0 F S IEN=$O(@ARY@(ROW,COL,IEN)) Q:'IEN D
|
---|
62 | ...S NODE=$G(^IBD(357.95,IBFORMID,1,IEN,0))
|
---|
63 | ...Q:($P(NODE,"^",6)="")!(($P(NODE,"^",4)="")&($P(NODE,"^",8)=""))!('$P(NODE,"^",3))
|
---|
64 | ...S NAME=$E($P(NODE,"^",5),1,17),QLFR=$P(NODE,"^",10)
|
---|
65 | ...S TYPE=$P(NODE,"^",7)
|
---|
66 | ...I (TYPE=0)!(TYPE=3) S:QLFR QLFR=$P($G(^IBD(357.98,QLFR,0)),"^",3)
|
---|
67 | ...I (TYPE=1)!(TYPE=2) S:QLFR QLFR=$E($P($G(^IBD(357.98,QLFR,0)),"^"),1,12)
|
---|
68 | ...I QLFR'="" S NAME=NAME_"("_QLFR_")"
|
---|
69 | ...I QLFR="" S NAME=NAME_"-"
|
---|
70 | ...S @SCAN@(PAGE,$P(NODE,"^",6),+$P(NODE,"^",7),COL,(ROW-((PAGE-1)*PERPAGE)),IEN)=$P(NODE,"^",3,12)
|
---|
71 | ...S @SCAN@(PAGE,$P(NODE,"^",6))=NAME
|
---|
72 | ...;
|
---|
73 | .;
|
---|
74 | .;list all the handprint fields
|
---|
75 | .S ARY="^IBD(357.95,""AD"","_IBFORMID_")"
|
---|
76 | .S ROW=((PAGE-1)*PERPAGE)-1
|
---|
77 | .F S ROW=$O(@ARY@(ROW)) Q:ROW="" D
|
---|
78 | ..Q:(ROW\PERPAGE)+1'=PAGE
|
---|
79 | ..S COL="" F S COL=$O(@ARY@(ROW,COL)) Q:COL="" S IEN=0 F S IEN=$O(@ARY@(ROW,COL,IEN)) Q:'IEN D
|
---|
80 | ...S NODE=$G(^IBD(357.95,IBFORMID,2,IEN,0))
|
---|
81 | ...Q:($P(NODE,"^",8)="")!('$P(NODE,"^",4))!('$P(NODE,"^",15))
|
---|
82 | ...S @SCAN@(PAGE,$P(NODE,"^",8),6,COL,(ROW-((PAGE-1)*PERPAGE)),IEN)=$P(NODE,"^",3,17),NAME=$E($P(NODE,"^",5),1,15)
|
---|
83 | ...I $P(NODE,"^",17) S NAME=NAME_"("_$P($G(^IBE(359.1,$P(NODE,"^",17),0)),"^")_")"
|
---|
84 | ...S @SCAN@(PAGE,$P(NODE,"^",8))=NAME
|
---|
85 | ;
|
---|
86 | ;make form description
|
---|
87 | F COUNT=1:1 S LINE=$T(FORM+COUNT^IBDFBKS1),TAG=$P(LINE,";;"),LINE=$P(LINE,";;",2) Q:TAG["QUIT" D
|
---|
88 | .N PG
|
---|
89 | .D BLDARY("")
|
---|
90 | .I TAG["NAME" S IBDFSA(IBLC)=IBDFSA(IBLC)_" NAME = ""ENCOUNTER FORM "_IBFORMID_""";" Q
|
---|
91 | .I TAG["SITE" S IBDFSA(IBLC)=IBDFSA(IBLC)_"'VA SITE = "_$P($$SITE^VASITE,"^",2),LINE=""
|
---|
92 | .I TAG["PGCK" S IBDFSA(IBLC)=IBDFSA(IBLC)_" else if (" D Q
|
---|
93 | ..S PG=$O(PAGE(0))
|
---|
94 | ..S IBDFSA(IBLC)=IBDFSA(IBLC)_"(page!="_PG_")"
|
---|
95 | ..F S PG=$O(PAGE(PG)) Q:'PG S IBDFSA(IBLC)=IBDFSA(IBLC)_"&&(page!="_PG_")"
|
---|
96 | ..S IBDFSA(IBLC)=IBDFSA(IBLC)_"){"
|
---|
97 | .S IBDFSA(IBLC)=IBDFSA(IBLC)_LINE
|
---|
98 | .;D BLDARY(LINE)
|
---|
99 | ;
|
---|
100 | ;make fields
|
---|
101 | S PAGE=0,FIELD=9,PRIORPG=$O(@SCAN@(0)),LN=0,BLN=0
|
---|
102 | F S PAGE=$O(@SCAN@(PAGE)) D:PRIORPG'=PAGE PRINTEND^IBDFBKS3 Q:'PAGE S FID="" F S FID=$O(@SCAN@(PAGE,FID)) Q:FID="" S TYPE=$O(@SCAN@(PAGE,FID,"")) Q:TYPE="" D
|
---|
103 | .S NAME=$G(@SCAN@(PAGE,FID))
|
---|
104 | .;
|
---|
105 | .; -- 1 = EXACTLY ONE, 2 = AT MOST ONE (0 or 1)
|
---|
106 | .I (TYPE=1)!(TYPE=2) S FIELD=FIELD+1,@FIELDS@(PAGE,FIELD)="" D
|
---|
107 | ..I TYPE=1 S NAME=NAME_" (1 Required)"
|
---|
108 | ..I TYPE=2 S NAME=NAME_" (1 Optional)"
|
---|
109 | ..S NAME=$$NAME(NAME)
|
---|
110 | ..D BUBBLE^IBDFBKS3 Q
|
---|
111 | .;
|
---|
112 | .I TYPE=6 D Q
|
---|
113 | ..N OLDNAME S OLDNAME=NAME
|
---|
114 | ..S COL="" F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" S IEN=0 F S IEN=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW,IEN)) Q:'IEN D
|
---|
115 | ...S NAME=$$NAME(OLDNAME)
|
---|
116 | ...;S IBDLAST=0 I $O(@SCAN@(PAGE,FID,TYPE,COL,ROW))="",$O(@SCAN@(PAGE,FID,TYPE,COL))="",$O(@SCAN@(PAGE,FID,TYPE))="" S IBDLAST=1
|
---|
117 | ...S NODE=$G(@SCAN@(PAGE,FID,6,COL,ROW,IEN)) D HANDPRNT^IBDFBKS2(IEN,NAME,PAGE,ROW,COL,$P(NODE,"^",1),$P(NODE,"^",4),$P(NODE,"^",13),$P(NODE,"^",15),$P(NODE,"^",2))
|
---|
118 | .;
|
---|
119 | .;0 = ANY NUMBER
|
---|
120 | .;3 = AT LEAST ONE (1 or more)
|
---|
121 | .I (TYPE=0)!(TYPE=3) D
|
---|
122 | ..N OLDNAME
|
---|
123 | ..;I TYPE=3 N FIRST,LAST S LAST=FIELD+1,LAST=""
|
---|
124 | ..I TYPE=3 N FIRST,LAST S FIRST=FIELD+1,LAST=""
|
---|
125 | ..S COL="" F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" S IEN=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW,0)) D:IEN
|
---|
126 | ...S FIELD=FIELD+1,@FIELDS@(PAGE,FIELD)="",NODE=$G(@SCAN@(PAGE,FID,TYPE,COL,ROW,IEN))
|
---|
127 | ...S (NAME,OLDNAME)=$G(@SCAN@(PAGE,FID))
|
---|
128 | ...S NAME=$$NAME(NAME)
|
---|
129 | ...I TYPE=3,$O(@SCAN@(PAGE,FID,TYPE,COL,ROW))="",($O(@SCAN@(PAGE,FID,TYPE,COL))="") S LAST=FIELD
|
---|
130 | ...D BUBBLE^IBDFBKS3
|
---|
131 | ;
|
---|
132 | END ; -- end of routine
|
---|
133 | K @SCAN
|
---|
134 | K @FIELDS
|
---|
135 | K ^TMP("IBDF-NAME",$J)
|
---|
136 | S ^IBD(359.2,IBFORMID,10,IBLC,0)=IBDFSA(IBLC)
|
---|
137 | S ^IBD(359.2,IBFORMID,10,0)="^^"_IBLC_"^"_IBLC_"^"_DT_"^"
|
---|
138 | Q
|
---|
139 | ;
|
---|
140 | NAME(NAME) ;
|
---|
141 | ; -- make sure name is unique
|
---|
142 | N X
|
---|
143 | I (TYPE=0)!(TYPE=3) S NAME=NAME_" "_$P(NODE,"^",6) I TYPE=3
|
---|
144 | I TYPE=1,NAME'["Required" S NAME=NAME_" Required"
|
---|
145 | S X=$G(^TMP("IBDF-NAME",$J,NAME))+1
|
---|
146 | S ^TMP("IBDF-NAME",$J,NAME)=+X
|
---|
147 | I X>1 S NAME=NAME_" #"_X
|
---|
148 | Q NAME
|
---|
149 | ;
|
---|
150 | BLDARY(TEXT) ;
|
---|
151 | ; -- builds the export array IBDFS(linecount) = text
|
---|
152 | N DIC,DA,DINUM,X,Y,I,J,DLAYGO
|
---|
153 | I IBLC=1 D
|
---|
154 | .S DIC="^IBD(359.2,",DIC(0)="L",DLAYGO=359.2,(DINUM,X)=IBFORMID D FILE^DICN
|
---|
155 | .Q
|
---|
156 | ;
|
---|
157 | I IBLC>0 D
|
---|
158 | .S ^IBD(359.2,IBFORMID,10,IBLC,0)=IBDFSA(IBLC)
|
---|
159 | .K IBDFSA(IBLC)
|
---|
160 | .Q
|
---|
161 | ;
|
---|
162 | S IBLC=IBLC+1
|
---|
163 | S IBDFSA(IBLC)=$G(TEXT)
|
---|
164 | Q
|
---|
165 | ;
|
---|
166 | WRITE(IBFORMID) ;
|
---|
167 | N LINE S LINE=0
|
---|
168 | S X=0 X ^%ZOSF("RM")
|
---|
169 | F S LINE=$O(^IBD(359.2,IBFORMID,10,LINE)) Q:'LINE W !,$G(^IBD(359.2,IBFORMID,10,LINE,0))
|
---|
170 | S X=80 X ^%ZOSF("RM")
|
---|
171 | Q
|
---|
172 | ;
|
---|
173 | PARAM ; -- get values from parameter file
|
---|
174 | ; ibdfill := % fill required
|
---|
175 | ; ibdbkgnd := % background expected
|
---|
176 | S IBDFILL=$P($G(^IBD(357.09,1,0)),"^",8) I IBDFILL="" S IBDFILL=20
|
---|
177 | S IBDBKGND=$P($G(^IBD(357.09,1,0)),"^",9) I IBDBKGND="" S IBDBKGND=5
|
---|
178 | S XYSMALL=$P(^IBD(357.09,1,0),"^",12) I XYSMALL'=+XYSMALL S XYSMALL=4
|
---|
179 | Q
|
---|