ONCOSSA2 ;WASH ISC/SRR-SURVIVAL ANALYSIS CONT-2 ;7/28/92 18:38
;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
;
SETGRPS ;define group variables from ONCOS("G") input variable.
G:'$D(ONCOS("G")) SET1
S TIN=$P(ONCOS("G"),U,2) G SET3:TIN'="",SET1:'$D(ONCOS("G",1))
F COND=0:0 S COND=$O(ONCOS("G",COND)) Q:COND="" S Y=ONCOS("G",COND) D SET4
K ONCOS("G") S COND=0
Q
SET1 W !,"You may enter an expression that evaluates between 1 and ",NGRPS
W !,"or separate conditions for each sub-group."
S Y="Do you want to enter an expression? Yes// ",Z="" D GETYES^ONCOSINP
E G:X["?" SET1 I Y=-1 S NGRPS=1 Q
E S COND=0 G SUBGRPS
SET2 R !,"Enter sub-group expression: ",TIN:DTIME
I TIN[U S NGRPS=1 Q
SET3 D CHKCOND^ONCOSSA1 G:P SET2
S GRPEXP=TOU,COND=1 F X=1:1:NGRPS S ^TMP($J,"GRP",X)="("_TIN_") = "_X
W !,"The cases that do not evaluate between 1 and ",NGRPS," are dropped."
Q
SET4 S COND(COND)=$P(Y,U,3,99),^TMP($J,"GRP",COND)=$P(Y,U,2)
S X=+Y D SETFD^ONCOSSA1
Q
;
SUBGRPS ;get subgroups
;in: DIC,NGRPS
;out: VV,COND,^TMP($J,"GRP") - see ONCOSSA1
;do: ^DIC
N CONDCT,FLDNAM,FLDNUM,IVAL,OP,VAL S CONDCT=0
W !,"Enter truth tests that will categorize the cases into ",NGRPS," groups."
SUB1 W !,?6,"-",CONDCT+1,"- Search for field: " R X:DTIME
I X["?" W !,?6,"Enter a field name." G SUB1
SUB2 I X=""!(X[U) S NGRPS=CONDCT W !," Only ",NGRPS," sub-groups will be considered.",! Q
D ^DIC I Y<1 W *7,"???" G SUB1
S FLDNUM=+Y,FLDNAM=$P(Y,U,2)
SUB3 W !,?6,"-",CONDCT+1,"- Condition: " R X:DTIME G:X[U SUB2
S X=$E(X,1) S:X?1L X=$C($A(X)-32) S OP=$F("=><[!]EGLCMN",X)-1 S:OP>6 OP=OP-6
I 'OP W !,"Choose from EQUAL TO, LESS THAN, GREATER THAN, CONTAINS, ",!," MATCHES or NULL",! G SUB3
W " [",$P("EQUAL TO^GREATER THAN^LESS THAN^CONTAINS^MATCHES^NULL",U,OP),"]"
S OP=$E("=><[?]",OP),VAL=""
SUB4 I OP'="]" W !?6,"-",CONDCT+1,"- Value: " R VAL:DTIME G:X[U SUB2
I VAL["?" W !,"Enter a value." G SUB4
S IVAL=VAL,X=FLDNUM D SETFD^ONCOSSA1 S Y=FLDDAT(X)
I +Y&($P(Y,U,4)]"") S Y=$P(Y,U,4) F %=1:1 S X=$P(Y,";",%) Q:X="" I VAL=$P(X,":",2) S IVAL=$P(X,":",1) Q
S:IVAL'=+IVAL IVAL=""""_IVAL_"""" S:OP="]" OP="=""""",IVAL="",VAL=""
S CONDCT=CONDCT+1,COND(CONDCT)="VAL("_FLDNUM_")"_OP_IVAL
S ^TMP($J,"GRP",CONDCT)="("_FLDNAM_OP_VAL_")"
G:CONDCT<NGRPS SUB1
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HONCOSSA2 2317 printed Oct 16, 2024@18:26:23 Page 2
ONCOSSA2 ;WASH ISC/SRR-SURVIVAL ANALYSIS CONT-2 ;7/28/92 18:38
+1 ;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
+2 ;
SETGRPS ;define group variables from ONCOS("G") input variable.
+1 if '$DATA(ONCOS("G"))
GOTO SET1
+2 SET TIN=$PIECE(ONCOS("G"),U,2)
if TIN'=""
GOTO SET3
if '$DATA(ONCOS("G",1))
GOTO SET1
+3 FOR COND=0:0
SET COND=$ORDER(ONCOS("G",COND))
if COND=""
QUIT
SET Y=ONCOS("G",COND)
DO SET4
+4 KILL ONCOS("G")
SET COND=0
+5 QUIT
SET1 WRITE !,"You may enter an expression that evaluates between 1 and ",NGRPS
+1 WRITE !,"or separate conditions for each sub-group."
+2 SET Y="Do you want to enter an expression? Yes// "
SET Z=""
DO GETYES^ONCOSINP
+3 IF '$TEST
if X["?"
GOTO SET1
IF Y=-1
SET NGRPS=1
QUIT
+4 IF '$TEST
SET COND=0
GOTO SUBGRPS
SET2 READ !,"Enter sub-group expression: ",TIN:DTIME
+1 IF TIN[U
SET NGRPS=1
QUIT
SET3 DO CHKCOND^ONCOSSA1
if P
GOTO SET2
+1 SET GRPEXP=TOU
SET COND=1
FOR X=1:1:NGRPS
SET ^TMP($JOB,"GRP",X)="("_TIN_") = "_X
+2 WRITE !,"The cases that do not evaluate between 1 and ",NGRPS," are dropped."
+3 QUIT
SET4 SET COND(COND)=$PIECE(Y,U,3,99)
SET ^TMP($JOB,"GRP",COND)=$PIECE(Y,U,2)
+1 SET X=+Y
DO SETFD^ONCOSSA1
+2 QUIT
+3 ;
SUBGRPS ;get subgroups
+1 ;in: DIC,NGRPS
+2 ;out: VV,COND,^TMP($J,"GRP") - see ONCOSSA1
+3 ;do: ^DIC
+4 NEW CONDCT,FLDNAM,FLDNUM,IVAL,OP,VAL
SET CONDCT=0
+5 WRITE !,"Enter truth tests that will categorize the cases into ",NGRPS," groups."
SUB1 WRITE !,?6,"-",CONDCT+1,"- Search for field: "
READ X:DTIME
+1 IF X["?"
WRITE !,?6,"Enter a field name."
GOTO SUB1
SUB2 IF X=""!(X[U)
SET NGRPS=CONDCT
WRITE !," Only ",NGRPS," sub-groups will be considered.",!
QUIT
+1 DO ^DIC
IF Y<1
WRITE *7,"???"
GOTO SUB1
+2 SET FLDNUM=+Y
SET FLDNAM=$PIECE(Y,U,2)
SUB3 WRITE !,?6,"-",CONDCT+1,"- Condition: "
READ X:DTIME
if X[U
GOTO SUB2
+1 SET X=$EXTRACT(X,1)
if X?1L
SET X=$CHAR($ASCII(X)-32)
SET OP=$FIND("=><[!]EGLCMN",X)-1
if OP>6
SET OP=OP-6
+2 IF 'OP
WRITE !,"Choose from EQUAL TO, LESS THAN, GREATER THAN, CONTAINS, ",!," MATCHES or NULL",!
GOTO SUB3
+3 WRITE " [",$PIECE("EQUAL TO^GREATER THAN^LESS THAN^CONTAINS^MATCHES^NULL",U,OP),"]"
+4 SET OP=$EXTRACT("=><[?]",OP)
SET VAL=""
SUB4 IF OP'="]"
WRITE !?6,"-",CONDCT+1,"- Value: "
READ VAL:DTIME
if X[U
GOTO SUB2
+1 IF VAL["?"
WRITE !,"Enter a value."
GOTO SUB4
+2 SET IVAL=VAL
SET X=FLDNUM
DO SETFD^ONCOSSA1
SET Y=FLDDAT(X)
+3 IF +Y&($PIECE(Y,U,4)]"")
SET Y=$PIECE(Y,U,4)
FOR %=1:1
SET X=$PIECE(Y,";",%)
if X=""
QUIT
IF VAL=$PIECE(X,":",2)
SET IVAL=$PIECE(X,":",1)
QUIT
+4 if IVAL'=+IVAL
SET IVAL=""""_IVAL_""""
if OP="]"
SET OP="="""""
SET IVAL=""
SET VAL=""
+5 SET CONDCT=CONDCT+1
SET COND(CONDCT)="VAL("_FLDNUM_")"_OP_IVAL
+6 SET ^TMP($JOB,"GRP",CONDCT)="("_FLDNAM_OP_VAL_")"
+7 if CONDCT<NGRPS
GOTO SUB1
+8 QUIT