The content discusses the use of survival analysis in clinical trials or community trials to assess the effectiveness of an intervention. Specifically, it focuses on measuring the survival probability of Dukes’C colorectal cancer patients after treatment and comparing it to those who receive conservative treatment. The goal is to determine if the patients who accept treatment have a higher likelihood of surviving for a longer period of time.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_TRIAL_DATA_TBL;
CREATE COLUMN TABLE PAL_TRIAL_DATA_TBL (
    "TIME" INTEGER,
    "STATUS" INTEGER,
    "OCCURRENCES" INTEGER,
    "GROUP" VARCHAR(50)
);
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(1, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(5, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(6, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(6, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(9, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(10, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(10, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(10, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(12, 1, 4, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(12, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(13, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(15, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(16, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(20, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(24, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(24, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(27, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(32, 1, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(34, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(36, 0, 2, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(44, 0, 1, 'linoleic acid');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(3, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(6, 1, 4, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(8, 1, 2, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(12, 1, 2, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(12, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(15, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(16, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(18, 0, 2, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(20, 1, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(22, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(24, 1, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(28, 0, 3, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(30, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(30, 1, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(33, 0, 1, 'control');
INSERT INTO PAL_TRIAL_DATA_TBL VALUES(42, 1, 1, 'control');

DROP TABLE PAL_KMSURV_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_KMSURV_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);

DROP TABLE PAL_TRIAL_ESTIMATES_TBL;
CREATE COLUMN TABLE PAL_TRIAL_ESTIMATES_TBL (
    "GROUP" VARCHAR (50),
    "TIME" INTEGER,
    "RISKNUM" INTEGER,
    "EVENTSNUM" INTEGER, 
    "PROB" DOUBLE,
    "STDERR" DOUBLE,
    "LOWERLIMIT" DOUBLE,
    "UPPERLIMIT" DOUBLE
);

DROP TABLE PAL_TRIAL_LOGRANK_STAT1_TBL;
CREATE COLUMN TABLE PAL_TRIAL_LOGRANK_STAT1_TBL (
    "GROUP" VARCHAR (50),
    "TOTALRISK" INTEGER,
    "OBSERVED" INTEGER,
    "EXPECTED" DOUBLE,
    "LOGRANKSTAT" DOUBLE
);

DROP TABLE PAL_TRIAL_LOGRANK_STAT2_TBL;
CREATE COLUMN TABLE PAL_TRIAL_LOGRANK_STAT2_TBL (
    "STATISTICS" VARCHAR(20),
    "VALUE" DOUBLE
);

DO BEGIN
  lt_data = SELECT * FROM PAL_TRIAL_DATA_TBL;
  lt_param = SELECT * FROM PAL_KMSURV_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_KMSURV"(:lt_data, :lt_param, lt_esti, lt_stat1, lt_stat2);
  INSERT INTO PAL_TRIAL_ESTIMATES_TBL SELECT * FROM :lt_esti;
  INSERT INTO PAL_TRIAL_LOGRANK_STAT1_TBL SELECT * FROM :lt_stat1;
  INSERT INTO PAL_TRIAL_LOGRANK_STAT2_TBL SELECT * FROM :lt_stat2;
END;

SELECT * FROM PAL_TRIAL_ESTIMATES_TBL;
SELECT * FROM PAL_TRIAL_LOGRANK_STAT1_TBL;
SELECT * FROM PAL_TRIAL_LOGRANK_STAT2_TBL;
