Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ONCOSSA1

ONCOSSA1.m

Go to the documentation of this file.
  1. ONCOSSA1 ;WASH ISC/SRR-SURVIAL ANALYSIS CONT-1 ;4/16/92 18:31
  1. ;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
  1. ;
  1. CHKCOND ;check condition
  1. ;in: DIC,TIN,^DD(FNUM
  1. ;out: P = 0 if OK
  1. ; TOU = condition
  1. ; FLDDAT(f) = 1^node^piece^codes for real; 0^expression for computed
  1. ;do: ^DIM
  1. N C,E,FLDOK,FLD,L,Q
  1. S E=1,(FLDOK,P)=0,TOU="",Q=$C(34)
  1. F L=1:1:$L(TIN) S C=$E(TIN,L),TOU=TOU_C S:C=Q E=1-E I C?1U,E D CHK
  1. I P W !,?20,"Re-enter condition - may need explicit quotes." Q
  1. I 'FLDOK W !,?20,"No valid fields - please re-enter." S P=1 Q
  1. S X="S X="_TOU D ^DIM I $D(X)=0 S P=1 W !," Check MUMPS syntax."
  1. Q
  1. ;
  1. CHK ;check for field
  1. S FLD=C
  1. CHK1 S L=L+1,C=$E(TIN,L),TOU=TOU_C I C?1UN!(C=" ") S FLD=FLD_C G CHK1
  1. Q:FLD'?1U.UNP S X=FLD D ^DIC
  1. I Y=-1 W !,?20,"Field ",FLD," ???" S P=1 Q
  1. S FLDOK=1,X=+Y D SETFD
  1. S Y=$F(TOU,FLD),X=$E(TOU,1,Y-1-$L(FLD))_"VAL("_X_")"_$E(TOU,Y,99),TOU=X
  1. Q
  1. ;
  1. SETFD ;set FLDDAT( with field info
  1. ;in: X,^DD(FNUM,
  1. ;out: FLDDAT(,Y
  1. Q:$D(FLDDAT(X))!'$D(^DD(FNUM,X,0)) S Y=^(0)
  1. I $P(Y,U,2)["C" S Y="0"_U_$P(Y,U,5,99)
  1. E S %=$S($P(Y,U,2)["S":U_$P(Y,U,3),1:""),Y=$P(Y,U,4),Y="1"_U_$P(Y,";",1)_U_+$P(Y,";",2)_%
  1. S FLDDAT(X)=Y
  1. Q
  1. ;
  1. GET ;get specs for survival analysis
  1. ;in: ^DD(FNUM,
  1. ;out: LEN = conversion divisor^duration unit^interval unit
  1. ; COND = 1 for subgroup expression, 0 for group conditions
  1. ; (n) = nth group condition
  1. ; FLDDAT = see CHKCOND
  1. ; MAXTIME= maximum time allowed
  1. ; NGRPS = number of subgroups
  1. ; MORTEXP= dead expression
  1. ; LENEXP = duration expression
  1. ; GRPEXP = subgroup expression
  1. ; PLOT = 1 for curves plotted
  1. ; ^TMP($J,"GRP",n) = title for nth group
  1. ;do: CHKCOND,^DIC,^DIM
  1. N DIC,P,TIN,TOU
  1. S DIC="^DD(FNUM,",DIC("S")="I +$P(^(0),U,2)=0 "
  1. S DIC("A")="Select survival DURATION field: "
  1. S LEN=$S($D(ONCOS("D")):ONCOS("D"),1:""),TIN=$P(LEN,U,1)
  1. I TIN'="" W !,"DURATION field: ",TIN G GET11
  1. GET1 S DIC(0)="AEQ" D ^DIC Q:Y<0 S TIN=$P(Y,U,2)
  1. GET11 S DIC(0)="E" D CHKCOND G:P GET1 S LENEXP=TOU,TIN=$P(LEN,U,2) G:TIN'="" GET21
  1. GET2 W !,"DURATION unit (Day, Wk, Mo, Yr): " R TIN:DTIME E S TIN="^"
  1. I TIN[U S Y=-1 Q
  1. GET21 S TIN=$E(TIN,1) S:TIN?1L TIN=$C($A(TIN)-32)
  1. I '$F("DWMY",TIN) W !,"Enter a time unit letter such as 'D' for Days" G GET2
  1. S $P(LEN,U,1,2)=$S(TIN="D":"365.25^Days",TIN="W":"52^Weeks",TIN="M":"12^Mos",1:"1^Yrs")
  1. S MAXTIME=+LEN*10,TIN=$P(LEN,U,3) G:TIN'="" GET23
  1. GET22 W !,"INTERVAL unit (Mo, Yr): Yr// " R TIN:DTIME E S TIN="^"
  1. S:TIN="" TIN="Y" I TIN[U S Y=-1 Q
  1. GET23 S TIN=$E(TIN,1) S:TIN?1L TIN=$C($A(TIN)-32)
  1. I '$F("MY",TIN) W !,"Enter 'M' for Months or 'Y' for Years" G GET22
  1. I TIN="Y" S $P(LEN,U,3)="Yrs"
  1. E S $P(LEN,U,3)="Mos",TIN=$P(LEN,U,1),$P(LEN,U,1)=TIN/12
  1. GET3 I $D(ONCOS("S")) S TIN=ONCOS("S") W !,"STATUS expression: ",TIN G GET4
  1. W !,"Enter survival STATUS expression: " R TIN:DTIME E S TIN="^"
  1. I TIN[U S Y=-1 Q
  1. G:TIN'?."?" GET4 W !!,"Enter an expression like 'STATUS=0' to indicate"
  1. W !,"that the patient is dead. In this example, 'STATUS' is"
  1. W !,"the name of a field that is a set of codes, for which 1 means"
  1. W !,"'living' and 0 means 'dead'.",! G GET3
  1. GET4 D CHKCOND G:P GET3 S MORTEXP=TOU
  1. I $D(ONCOS("G")) S NGRPS=+ONCOS("G") G:NGRPS GET41
  1. R !,"Number of sub-groups: 1// ",NGRPS:DTIME E S NGRPS="^"
  1. S:NGRPS="" NGRPS=1 I NGRPS[U S Y=-1 Q
  1. GET41 I NGRPS=1 S COND=1,GRPEXP=1
  1. E D SETGRPS^ONCOSSA2 G:NGRPS=1 GET41
  1. I $D(ONCOS("L")) S PLOT=$S(ONCOS("L")["P":1,1:0) Q:ONCOS("L")["Y" G GET5
  1. S Y="Do you want curves plotted? No// "
  1. D GETYES^ONCOSINP Q:Y=-1 S PLOT=$T
  1. GET5 W ! S Y="Survival analysis for "
  1. S Y=Y_$S(TEMPL:"template "_HEADER,1:"ALL cases")
  1. S Y=Y_" - OK? Yes// " D GETYES^ONCOSINP S:'$T Y=-1
  1. Q