1 | IBDFC2A ;ALB/CJM - ENCOUNTER FORM - converts a form for scanning (cont'd);MAR 3, 1995
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
|
---|
3 | ;
|
---|
4 | BUBBLES(LIST) ;changes the marking areas to bubbles
|
---|
5 | ;no conversion if there is no input interface for the data
|
---|
6 | ;pass LIST array by reference
|
---|
7 | Q:'LIST("INPUT_RTN")
|
---|
8 | ;
|
---|
9 | N SC,SCORDER,LARGEST,SZCHANGE,NODE,CNT,BUBBLE
|
---|
10 | S (SZCHANGE,LARGEST)=0
|
---|
11 | ;
|
---|
12 | ;find the marking area used for bubbles
|
---|
13 | S BUBBLE=$O(^IBE(357.91,"B","BUBBLE (use for scanning)",0)) Q:'BUBBLE
|
---|
14 | ;
|
---|
15 | ;make two lists of the subcolumns, one indexed by ien and the other by the order - also, keep track of the largest subcolumn - adjustments may have to be made to it
|
---|
16 | S SC=0 F S SC=$O(^IBE(357.2,LIST,2,SC)) Q:'SC S SC(SC)=$G(^IBE(357.2,LIST,2,SC,0)),SCORDER(+SC(SC))=SC I $P(SC(SC),"^",4)=1,$P(SC(SC),"^",3)>+LARGEST S LARGEST=$P(SC(SC),"^",3)_"^"_SC
|
---|
17 | ;
|
---|
18 | ;look for the marking area subcolumns
|
---|
19 | S SC=0 F S SC=$O(SC(SC)) Q:'SC I $P(SC(SC),"^",4)=2,$P(SC(SC),"^",6)'=BUBBLE,$P(SC(SC),"^",6) D
|
---|
20 | .;
|
---|
21 | .;don't underline the marking area
|
---|
22 | .S $P(SC(SC),"^",8)=1
|
---|
23 | .;
|
---|
24 | .N MARK
|
---|
25 | .S MARK=$P($G(^IBE(357.91,$P(SC(SC),"^",6),0)),"^",2)
|
---|
26 | .Q:MARK=""
|
---|
27 | .I (MARK="(A) (I)")!(MARK="(A) (I) (H)")!(MARK="(P) (S)") D
|
---|
28 | ..;break this subcolumn in two
|
---|
29 | ..N QUAL1,QUAL2,HDR1,HDR2
|
---|
30 | ..I MARK["A" D
|
---|
31 | ...S QUAL1=$O(^IBD(357.98,"B","ACTIVE",0)),QUAL2=$O(^IBD(357.98,"B","INACTIVE",0)),HDR1="A",HDR2="I"
|
---|
32 | ..E D
|
---|
33 | ...S QUAL1=$O(^IBD(357.98,"B","PRIMARY",0)),QUAL2=$O(^IBD(357.98,"B","SECONDARY",0)),HDR1="P",HDR2="S"
|
---|
34 | ..F CNT=1:1 I '$D(^IBE(357.2,LIST,2,CNT)) Q
|
---|
35 | ..;create a new subcolumn
|
---|
36 | ..S NODE=SC(SC),$P(NODE,"^")=+SC(SC)+.5,$P(NODE,"^",2)=HDR2,$P(NODE,"^",9)=QUAL2,$P(NODE,"^",6)=BUBBLE,^IBE(357.2,LIST,2,CNT,0)=NODE,$P(^IBE(357.2,LIST,2,0),"^",4)=$P(^IBE(357.2,LIST,2,0),"^",4)+1,SC(CNT)=NODE,SCORDER(+NODE)=CNT
|
---|
37 | ..;change the original subcolumn
|
---|
38 | ..S NODE=SC(SC),$P(NODE,"^",2)=HDR1,$P(NODE,"^",9)=QUAL1,$P(NODE,"^",6)=BUBBLE,^IBE(357.2,LIST,2,SC,0)=NODE
|
---|
39 | ..;
|
---|
40 | ..;may have to make an adjustment
|
---|
41 | ..S SZCHANGE=SZCHANGE+($L(LIST("SEP"))-1)
|
---|
42 | .;
|
---|
43 | .;just change the marking area to bubble
|
---|
44 | .E D
|
---|
45 | ..S $P(^IBE(357.2,LIST,2,SC,0),"^",6)=BUBBLE
|
---|
46 | ..S SZCHANGE=SZCHANGE+(3-$L(MARK))
|
---|
47 | ..;
|
---|
48 | ;
|
---|
49 | ;adjust subcolumn size to make up for extra space required by bubbles - may truncate text
|
---|
50 | I SZCHANGE D
|
---|
51 | .N SLCTN,SUBCOL,ORDER,IEN,NEWSIZE,TEXT
|
---|
52 | .S SUBCOL=$P(LARGEST,"^",2)
|
---|
53 | .S NEWSIZE=$P(SC(SUBCOL),"^",3)-SZCHANGE
|
---|
54 | .S $P(SC(SUBCOL),"^",3)=NEWSIZE,^IBE(357.2,LIST,2,SUBCOL,0)=SC(SUBCOL)
|
---|
55 | .S ORDER=+SC(SUBCOL)
|
---|
56 | .S SLCTN=0 F S SLCTN=$O(^IBE(357.3,"C",LIST,SLCTN)) Q:'SLCTN S IEN=$O(^IBE(357.3,SLCTN,1,"B",ORDER,0)) Q:'IEN D
|
---|
57 | ..S TEXT=$P($G(^IBE(357.3,SLCTN,1,IEN,0)),"^",2)
|
---|
58 | ..I $L(TEXT)>NEWSIZE D WARNING^IBDFC2("IN THE LIST '"_LIST("NAME")_"' THE TEXT '"_TEXT_"' WILL BE TRUNCATED BY "_($L(TEXT)-NEWSIZE)_" CHARACTERS - MANUAL EDITING MAY BE REQUIRED")
|
---|
59 | ;
|
---|
60 | ;reorder the subcolumns
|
---|
61 | N IBSWT
|
---|
62 | S (CNT,SCORDER)=0
|
---|
63 | F S SCORDER=$O(SCORDER(SCORDER)) Q:'SCORDER S CNT=CNT+1 I SCORDER'=CNT D I $P(SC(SCORDER(SCORDER)),"^",4)=1 S IBSWT(SCORDER)=CNT
|
---|
64 | .K ^IBE(357.2,LIST,2,"B",SCORDER,SCORDER(SCORDER))
|
---|
65 | .S $P(^IBE(357.2,LIST,2,SCORDER(SCORDER),0),"^")=CNT,^IBE(357.2,LIST,2,"B",CNT,SCORDER(SCORDER))=""
|
---|
66 | .;make the change in the selection due to the reordering of the subcolumns
|
---|
67 | .;I $P(SC(SCORDER(SCORDER)),"^",4)=1 D SWITCH^IBDF9A(LIST,SCORDER,CNT)
|
---|
68 | D SWITCH^IBDF9A(LIST,.IBSWT)
|
---|
69 | Q
|
---|