Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

DECISION: the API will return only results, with IDs of the associated input objects attached. The endpoint may be extended to also provide the inputs

There is no ReviewDB endpoint for DTA reviews - only the backend backend.

JSON model for analysis results

...

Code Block
titleAnalysis results model
RESULT:export interface IntResult {
    result: <OVERALL_RESULT_DATA>,OverallResultData;
    (dataRows?: <ROW_RESULT_DATA>*|subgroups: [RowResultData[];
    subgroups?: SubgroupResult[];
}

export interface SubgroupResult {
    result: SubgroupResultData;
    resultdataRows: <SUBGROUP_RESULT_DATA>
        dataRows: <ROW_RESULT_DATA>*
    }])
}


RESULT_DATA:RowResultData[];
}

// mean, ciStart, ciEnd, piStart, piEnd, CiStartOther, and ciEndOther are
// on the scale of analysis, so log scale for log scale outcomes.
export interface ResultData {
    estimable: true|false,boolean;
    meanlogScale: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)boolean;
    mean: number;
    se: number;
    ciStart: number;
    seciEnd: 0.0,number;
    ciStartpiStart: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)number;
    piEnd: number;
    weight: number;
}

export interface RowResultData extends ResultData {
    ciEnd: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)id: string; // This is not included in the meta-analysis API output, but is added by ReviewDB.
    studyId: string;
    weightapplicability?: 0.0
}


ROW_RESULT_DATA extends RESULT_DATA: {
    id: "<studyDataRowId>"
}

SUBGROUP_RESULT_DATA extends RESULT_DATA:"SUBGROUP_ONLY" | "OVERALL_ONLY" | "SUBGROUP_AND_OVERALL";
    notIncludedInTotal?: boolean; // Used to indicate that a subgroup row is not included in the calculation of the total
}

export interface SubgroupResultData extends ResultData {
    id: "<subgroupAnalysisId>", string; // This is not included in the meta-analysis API output, but is added by ReviewDB.
    heterogeneity: {
        chiSquared: 0.0,number;
        degreesOfFreedom: 0,number;
        iSquared: 0.0,number;
        p: 0.0,number;
        (tauSquared: 0.0)? (NOTE: FOR RANDOM EFFECTS)tauSquared?: number;
        ciEstimable?: boolean;
        ciStart?: number;
        ciEnd?: number;
        ciStartSign?: string;
        ciEndSign?: string;
    },;
    overallEffect: {
        z: 0.0,number;
        p: 0.0number;
    },;
    (experimental: {
        events?: number;
        total: 0number;
    },;
    control: {
        events?: number;
        total: 0number;
    })?;
    dataRows: RowResultData[];
}

OVERALL_RESULT_DATAexport interface OverallResultData extends SUBGROUP_RESULT_DATA:SubgroupResultData {
    (subgroupDifferences: {
        chiSquared: 0.0,number;
        degreesOfFreedom: 0,number;
        iSquared: 0.0,number;
        p: 0.0},)?number;
    }
}


Code Block
titleDTA Analysis result model
export interface DtaResult {
    (experimentaldiagnosticSubgroups: DtaSubgroupResult[];
}

export interface DtaSubgroupResult {
    a: number;
    b: number;
    totalmeanD: 0number;
    },diagnosticDataRows: DtaDataRowResult[];
}

export interface DtaDataRowsResult {
    controldiagnosticDataRows: DtaDataRowResult[];
}

export interface DtaDataRowResult {
    sensitivity: number;
    sensCiStart: number;
    sensCiEnd: number;
    specificity: number;
    specCiStart: number;
    specCiEnd: number;
    d?: number;
    s?: number;
    weight?: number;
    totalscaleSpec?: 0number;
    })?scaleSens?: number;
}

Platforms/protocol for analysis backend

...

Code Block
titleInput structure
INPUT: [{
    options: {
        dataType: "DICHOTOMOUS"|"CONTINUOUS"|"CONTRAST"|"OBSERVED_EXPECTED", (NOTE: CONTRAST maps to INVERSE_VARIANCE in RM5/Review DB) // Both dataRows and subgroups should be provided when the overall results should be based on a separate analysis, e.g. subgroups with studies split by intervention.
export interface IntInput {
    options: InputOptions;
    method: "MH"|"GIV"|"PETO",
    dataRows?: InputData[];
    subgroups?: InputSubgroup[];
}

export interface InputOptions {
    effectMeasure: "MD"|"SMD"|"LOR"|"LRR"|"RD"|"PetoLOR"|"Generic",
dataType: InputDataType;
    method: InputMethod;
    modeleffectMeasure: "FIXED"|"RANDOM",InputEffectMeasure;
    model: Model;
   ciLevelRows: 0.90|0.95|0.99, heterogeneityEstimator?: HeterogeneityEstimator;
    ciMethod: CIMethod;
    ciLevelTotalsciLevel: 0.90 | 0.95 | 0.99,;
    swapEvents: boolean;
   swapEvents logData: true|false,boolean;
    totals: Totals;
}

export interface  totals: "YES"|"SUB"|"NO"
    },    InputSubgroup {
    dataRows: InputData[];
}

export type InputData = DichotomousInputData | ContinuousInputData | ContrastInputData | ObservedExpectedInputData;

export interface DichotomousInputData {
    studyId: string;
    dataRowsexperimental: [{
        <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>*events: number;
    ]|
    subgroupstotal: [{number;
    };
    dataRowscontrol: [{
	        <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>*events: number;
        total: number;
    },...];
    },...]applicability?: Applicability;
}]


DICHOTOMOUS_DATA: {export interface ContinuousInputData {
    studyId: string;
    experimental: {
        total: number;
        eventsmean: 0,number;
        totalsd: 0number;
    },
    control: {
        eventstotal: 0,number;
        totalmean: 0number;
      }
  sd: number;
    }
    
CONTINUOUS_DATAapplicability?: {Applicability;
}

export interface   experimental:ContrastInputData {
    studyId: string;
    totalestimate: 0,number;
    se: number;
   mean experimental?: 0.0,{
        sdtotal: 0.0number;
    },;
    control?: {
        total: 0,number;
    };
    meanapplicability?: 0.0,
   Applicability;
}

export interface ObservedExpectedInputData {
     sdstudyId: 0.0string;
    }
}

CONTRAST_DATAoe: {number;
    estimatevariance: 0.0,number;
    seexperimental?: 0.0
{
         (experimentalevents: {number;
         total: 0number;
     },;
     control?: {
         events: number;
         total: 0number;
    })?
}

OBSERVED_EXPECTED_DATA: };
    applicability?: Applicability;
}


Code Block
titleDTA input structure
export interface DtaInput {
    oediagnosticOptions: 0.0,DtaInputOptions;
    variancediagnosticDataRows?: 0.0,DtaTestDataRowInput[];
    (experimental: diagnosticSubgroups?: DtaSubgroupInput[];
}

export interface DtaInputOptions {
    scale: Scale;
    eventsweight: 0,Weight;
    ciLevel: 0.90 | 0.95 total:| 0.99;
}

export interface DtaSubgroupInput  },{
    control: diagnosticDataRows: DtaTestDataRowInput[];
}

export interface DtaTestDataRowInput {
    tp: number;
   events fp: 0,number;
    fn: number;
    totaltn: 0number;
    })?covariateScaleValue?: number;
}