1 | ONCOSCT2 ;WASH ISC/SRR,MLH-CROSS TABS 2 ;8/21/93 11:09
|
---|
2 | ;;2.11;ONCOLOGY;**5,23**;Mar 07, 1995
|
---|
3 | ;mda/ssb (originator);nci/ytm (first editor/rewriter)
|
---|
4 | OUTPUT ;sum & write table
|
---|
5 | ;in: ^TMP($J,"CELL"),COLCUTS,COLDD,NPG,ROWCUTS,ROWDD,TOT,XCRT
|
---|
6 | ;out: COLS,NPG,ROWS
|
---|
7 | ;use: ^TMP
|
---|
8 | ;CWID=Column width,RLWID=Row Width,ROWHEAD=length Row variable
|
---|
9 | U IO
|
---|
10 | N C,CWID,COL,LC,LNCOLS,R,RLWID,ROW,ROWHEAD,VAL
|
---|
11 | S FNAM=$P(@(GBL_"0)"),U),FNAM=$S($P(FNAM," ")="ONCOLOGY":$P(FNAM," ",2))
|
---|
12 | S HLAB=FNAM_$S(TEMPL:" Template ",1:"")_$P(HEADER,U)
|
---|
13 | S W=$G(ONCOS("CW")),CWID=$S(W="":9,1:W),W=$G(ONCOS("RW")),RLWID=$S(W="":20,1:W),R="",ROWHEAD=$L($P(ROWDD,U,1))
|
---|
14 | F ROWS=0:1 S R=$O(^TMP($J,"CELL",R)) Q:R="" D SUMLAB
|
---|
15 | S:COLDD="" ^TMP($J,"CSUM",1)="" S C=""
|
---|
16 | F COLS=1:1 S C=$O(^TMP($J,"CSUM",C)) Q:C="" S ^TMP($J,"COL",COLS)=C
|
---|
17 | S OT=$G(ONCOS("AF"))
|
---|
18 | S COLS=COLS-1,ROWHEAD=$S(ROWHEAD<8:8,ROWHEAD>RLWID:RLWID,1:ROWHEAD)
|
---|
19 | S LNCOLS=IOM-ROWHEAD-(2*CWID)\CWID
|
---|
20 | F COL=1:LNCOLS:COLS Q:ONCOEX S LC=COL+LNCOLS-1 S:LC>COLS LC=COLS D WCHEAD,WROWS
|
---|
21 | Q:ONCOEX I XCRT,'$D(ONCOS("D")) W *7,!! R "Press Return for next table or '^' to Exit: ",X:DTIME W ! S ONCOEX=$S('$T:1,X="^":1,1:0) Q:ONCOEX
|
---|
22 | W ! Q:OT'=3
|
---|
23 | ;
|
---|
24 | GETLAB ;get label
|
---|
25 | ;in: CUTS,UNK,YDD,Y
|
---|
26 | ;out: Y
|
---|
27 | I Y=UNK S Y="?" Q
|
---|
28 | I $P(YDD,U,2)["P" S:$D(@("^"_$P(YDD,U,3)_Y_",0)"))#2 Y=$P(^(0),U,1) ; note that the indirect reference sets the naked indicator
|
---|
29 | S:CUTS]""&(Y=+Y) X="GT "_$P(CUTS,":",Y-1)_" - LE "_$P(CUTS,":",Y),Y=$S(Y=1:$P(X,"- ",2),Y=$L(CUTS,":"):$P(X,"- ",1),1:X)
|
---|
30 | Q:$P(YDD,U,2)'["S"
|
---|
31 | S Z=$P(YDD,U,3)
|
---|
32 | F %=1:1 S X=$P(Z,";",%) Q:X="" I Y=$P(X,":",1) S Y=$P(X,":",2) Q
|
---|
33 | Q
|
---|
34 | ;
|
---|
35 | SETCOL ;setup col sum & get label
|
---|
36 | ;in: C,RSUM,VAL,^TMP
|
---|
37 | ;out: RSUM,^TMP
|
---|
38 | I $D(^TMP($J,"CSUM",C))=0 S ^TMP($J,"CSUM",C)=0,Y=C D GETLAB S ^TMP($J,"CLAB",C)=Y
|
---|
39 | S ^TMP($J,"CSUM",C)=^TMP($J,"CSUM",C)+VAL,RSUM=RSUM+VAL
|
---|
40 | Q
|
---|
41 | ;
|
---|
42 | SUMLAB ;sum marginals & get labels
|
---|
43 | ;in: ^TMP($J,"CELL"),COLCUTS,COLDD,R,ROWCUTS,ROWDD,ROWHEAD,UNK
|
---|
44 | ;out: ROWHEAD,^TMP
|
---|
45 | ;use: C,COL,VAL
|
---|
46 | N CUTS,RSUM,YDD S YDD=ROWDD,Y=R,CUTS=ROWCUTS D GETLAB
|
---|
47 | S ^TMP($J,"RLAB",R)=Y Q:COLDD=""
|
---|
48 | S:$L(Y)>ROWHEAD ROWHEAD=$L(Y) S C="",RSUM=0,CUTS=COLCUTS,YDD=COLDD
|
---|
49 | F COL=0:1 S C=$O(^TMP($J,"CELL",R,C)) Q:C="" S VAL=^(C) D SETCOL
|
---|
50 | S ^TMP($J,"RSUM",R)=RSUM
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | TOF ;top of form
|
---|
54 | ;in: NPG,XCRT
|
---|
55 | ;out: NPG
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | WCHEAD ;write column header
|
---|
59 | ;in: COL,LC,LNCOLS,COLDD,ROWDD,ROWHEAD,^TMP
|
---|
60 | ;use: C
|
---|
61 | Q:ONCOEX
|
---|
62 | N POS,ROW2 S ROW2=""
|
---|
63 | D:(COL=1&(NPG=0))!($Y+$S(COLDD="":4,1:4)>IOSL) WPHEAD Q:ONCOEX G WCH1:COLDD=""
|
---|
64 | S X=$P(COLDD,U,1),POS=ROWHEAD+CWID+$S(COL>COLS:0,1:(LC-COL+1)*CWID\2)-($L(X)\2)
|
---|
65 | W !!,?POS,X,! S POS=CWID\2+ROWHEAD
|
---|
66 | I COL'>COLS F C=COL:1:LC D WCLAB S POS=POS+CWID
|
---|
67 | S X="Total" D WCLAB1
|
---|
68 | WCH1 W !,$E($P(ROWDD,U,1),1,ROWHEAD),":",! Q:COLDD=""
|
---|
69 | I ROW2]"" F C=1:1 S X=$P(ROW2,U,C) Q:X="" W ?+X,$P(X,";",2)
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | WCLAB ;write col label
|
---|
73 | ;in: C,POS,^TMP
|
---|
74 | ;out: ROW2
|
---|
75 | S X=$E(^TMP($J,"CLAB",^TMP($J,"COL",C)),1,CWID-1)
|
---|
76 | WCLAB1 S Y=$L(X),Z=POS+$S(Y=0:0,Y=1:CWID-2,Y'>CWID:CWID-Y,1:(CWID+1-Y)\2-1)
|
---|
77 | I Z>$X W ?Z,X
|
---|
78 | E S ROW2=ROW2_Z_";"_X_U
|
---|
79 | Q
|
---|
80 | ;
|
---|
81 | WPHEAD ;write page header
|
---|
82 | Q:ONCOEX
|
---|
83 | XX I XCRT&NPG W *7,! R "Press 'Return/Enter' to continue, '^' to Exit: ",X:DTIME W ! S ONCOEX=$S('$T:1,X="^":1,1:0) Q:ONCOEX
|
---|
84 | YY W:$Y @IOF S NPG=NPG+1
|
---|
85 | W HLAB
|
---|
86 | W " Cross Tabs",?IOM-30,$P(HEADER,U,2)," Page ",NPG,!
|
---|
87 | F X=1:1:IOM-1 W "-"
|
---|
88 | Q
|
---|
89 | ;
|
---|
90 | WROWS ;write rows
|
---|
91 | ;in: COL,COLDD,CUTS,LC,LNCOLS,ROWDD,ROWS,TOT,^TMP($J)
|
---|
92 | ;use: C,R,ROW
|
---|
93 | S R="" F ROW=1:1:ROWS S R=$O(^TMP($J,"CELL",R)) Q:R=""!ONCOEX D WR1
|
---|
94 | Q:ONCOEX D:$Y+PCT+3>IOSL WPHEAD,WCHEAD Q:ONCOEX W !," Total",?CWID\2+ROWHEAD
|
---|
95 | I COLDD]"" F C=COL:1:LC W $J(^TMP($J,"CSUM",^TMP($J,"COL",C)),CWID)
|
---|
96 | W $J(TOT,CWID) Q:'PCT W !," %",?CWID\2+ROWHEAD
|
---|
97 | I COLDD]"" F C=COL:1:LC W $J(^TMP($J,"CSUM",^TMP($J,"COL",C))*100/TOT,CWID,1)
|
---|
98 | W $J("100.0",CWID),! F X=1:1:IOM-1 W "-"
|
---|
99 | Q
|
---|
100 | WR1 ;write row data lines
|
---|
101 | D:$Y+PCT+3>IOSL WPHEAD,WCHEAD Q:ONCOEX
|
---|
102 | S X=$E(^TMP($J,"RLAB",R),1,ROWHEAD)
|
---|
103 | S:X=+X&($L(X)<5) X=$J(X,5) W !,X,?CWID\2+ROWHEAD
|
---|
104 | F C=COL:1:LC S Y=^TMP($J,"COL",C),X=+$G(^TMP($J,"CELL",R,Y)) W $J(X,CWID)
|
---|
105 | I COLDD]""&(COL+LNCOLS>COLS+1) W $J(^TMP($J,"RSUM",R),CWID)
|
---|
106 | Q:'PCT W !,?CWID\2+ROWHEAD
|
---|
107 | F C=COL:1:LC S Y=^TMP($J,"COL",C),X=+$G(^TMP($J,"CELL",R,Y))*100/TOT W $J(X,CWID,1)
|
---|
108 | I COLDD]""&(COL+LNCOLS>COLS+1) W $J(^TMP($J,"RSUM",R)*100/TOT,CWID,1)
|
---|
109 | W ! F X=1:1:IOM-1 W "-"
|
---|
110 | Q
|
---|