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: {
    result: <OVERALL_RESULT_DATA>,
    (dataRows: <ROW_RESULT_DATA>*|,
    subgroups: [{
        result: <SUBGROUP_RESULT_DATA>
        dataRows: <ROW_RESULT_DATA>*
    }])
}


RESULT_DATA: {
    estimable:  estimabletrue|false,
    logScale: true|false,
    mean: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)
    se: 0.0,
    ciStart: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)
    ciEnd: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)
    weight: 0.0
}


ROW_RESULT_DATA extends RESULT_DATA: {
    id: "<studyDataRowId>", (NOTE: this is not included in the meta-analysis API output, but is added by ReviewDB.)
    studyId,
    applicability: "SUBGROUP_ONLY" | "OVERALL_ONLY" | "SUBGROUP_AND_OVERALL",
    (notIncludedInTotal: true)? (NOTE: used to indicate that a subgroup row is not included in the calculation of the total)
}

SUBGROUP_RESULT_DATA extends RESULT_DATA: {
    id: "<subgroupAnalysisId>",
    (NOTE: this is not included in the meta-analysis API output, but is added by ReviewDB.) 
    heterogeneity: {
        chiSquared: 0.0,
        degreesOfFreedom: 0,
        iSquared: 0.0,
        p: 0.0,
        (tauSquared: 0.0)? (NOTE: FOR RANDOM EFFECTS)
    },
    overallEffect: {
        z: 0.0,
        p: 0.0
    },
    (experimental: {
        total: 0
    },
    control: {
        total: 0
    })?
}

OVERALL_RESULT_DATA extends SUBGROUP_RESULT_DATA: {
    (subgroupDifferences: {
        chiSquared: 0.0,
        degreesOfFreedom: 0,
        iSquared: 0.0,
        p: 0.0},)?
    (experimental: {
        total: 0
    },
    control: {
        total: 0
    })?
}


Code Block
titleDTA Analysis result model
RESULT: {
    diagnosticDataRows: [
        <DIAGNOSTIC_RESULT_TEST_DATA_ROW>*
    ] |
    diagnosticSubgroups: [{
        meanD: 0.0,
        a: 0.0,
        b: 0.0,
        diagnosticDataRows: [
            <DIAGNOSTIC_RESULT_TEST_DATA_ROW_FOR_SUBGROUP>*
        ] 
    },...]
}

DIAGNOSTIC_RESULT_TEST_DATA_ROW: {
    sensitivity: 0.0,
    sensCiStart: 0.0,
    sensCiEnd: 0.0,
    specificity: 0.0,
    specCiStart: 0.0,
    specCiEnd: 0.0
}

DIAGNOSTIC_RESULT_TEST_DATA_ROW_FOR_SUBGROUP extends DIAGNOSTIC_RESULT_TEST_DATA_ROW: {
    d: 0.0,
    s: 0.0,
    weight: 0.0,
    scaleSpec: 0.0,
    scaleSens: 0.0
}

Platforms/protocol for analysis backend

...

Code Block
titleInput structure
 (NOTE: 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.) 

INPUT: [{
    options: {
        dataType: "DICHOTOMOUS"|"CONTINUOUS"|"CONTRAST"|"OBSERVED_EXPECTED", (NOTE: CONTRAST maps to INVERSE_VARIANCE in RM5/ and CONTRAST_LEVEL in Review DB)
        method: "MH"|"GIV"|"PETO",
        effectMeasure: "MD"|"SMD"|"LOR"|"LRR"|"RD"|"PetoLOR"|"Generic",
        model: "FIXED"|"RANDOM",
        ciLevelRows: 0.90|0.95|0.99,
        ciLevelTotals: 0.90|0.95|0.99,
        swapEvents: true|false,
        logData: true|false,
        totals: "YES"|"SUB"|"NO"
    },    
    dataRows: [
        <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>*
    ]|,
    subgroups: [{
        dataRows: [
	        <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>*
        },...]
    },...]
	 id: <ANALYSIS_ID>-<COVARIATE_VALUE_ID>
}]


DICHOTOMOUS_DATA: {
    studyId,
    experimental: {
        events: 0,
        total: 0
    },
    control: {
        events: 0,
        total: 0
    }
}
    
CONTINUOUS_DATA: {
    studyId, 
   experimental experimental: {
        total: 0,
        mean: 0.0,
        sd: 0.0
    },
    control: {
        total: 0,
        mean: 0.0,
        sd: 0.0
    }
}

CONTRAST_DATA: {
    studyId, 
   estimate estimate: 0.0,
    se: 0.0
    (experimental: {
        total: 0
    },
    control: {
        total: 0
    })?
}

OBSERVED_EXPECTED_DATA: {
    studyId, 
   oe oe: 0.0,
    variance: 0.0,
    (experimental: {
        events: 0,
        total: 0
    },
    control: {
        events: 0,
        total: 0
    })?
}


Code Block
titleDTA input structure
INPUT: [{
    diagnosticOptions: {
        scale: "EQUAL" | "SAMPLE_SIZE" | "INVERSE_SE" | "COVARIATE",
        weight: "EQUAL" | "SAMPLE_SIZE" | "INVERSE_V",
        ciLevel: 0.90 | 0.95 | 0.99
    },
    diagnosticDataRows: [
        <DIAGNOSTIC_TEST_DATA_ROW>*
    ] |
	diagnosticSubgroups: [{
        diagnosticDataRows: [
            <DIAGNOSTIC_TEST_DATA_ROW>*
        ]
    },...]
}]

DIAGNOSTIC_TEST_DATA_ROW: {
    tp: 0,
    fp: 0,
    fn: 0,
    tn: 0,
    covariateScaleValue?: 0.0
}