...
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 | ||
|---|---|---|
| ||
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 { ciEndid: 0.0, (NOTE: ON THE SCALE OF ANALYSIS, SO LOG SCALE FOR LOG SCALE OUTCOMES)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 | ||
|---|---|---|
| ||
export interface DtaResult { (experimentaldiagnosticSubgroups: DtaSubgroupResult[]; } export interface DtaSubgroupResult { a: number; b: number; total meanD: 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; totalweight?: number; scaleSpec?: 0number; })?scaleSens?: number; } |
Platforms/protocol for analysis backend
...
| Code Block | ||
|---|---|---|
| ||
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; ciLevelRowsheterogeneityEstimator?: 0.90|0.95|0.99,HeterogeneityEstimator; ciMethod: CIMethod; ciLevelTotals ciLevel: 0.90 | 0.95 | 0.99,; swapEvents: true|falseboolean; }, logData: boolean; dataRowstotals: [ <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>* ]| subgroups: [Totals; } export interface InputSubgroup { dataRows: InputData[ <DICHOTOMOUS_DATA>*|<CONTINUOUS_DATA>*|<CONTRAST_DATA>*|<OBSERVED_EXPECTED_DATA>* },...] },...] }] DICHOTOMOUS_DATA: {]; } export type InputData = DichotomousInputData | ContinuousInputData | ContrastInputData | ObservedExpectedInputData; export interface DichotomousInputData { studyId: string; experimental: { events: 0,number; total: 0number; },; control: { events: 0,number; total: 0number; }; applicability?: Applicability; } export interface ContinuousInputData { CONTINUOUS_DATA studyId: {string; experimental: { total: 0,number; mean: 0.0,number; sd: 0.0number; }, control: { total: 0,number; mean: 0.0,number; sd: 0.0number; } applicability?: Applicability; } CONTRAST_DATA: {export interface ContrastInputData { studyId: string; estimate: 0.0,number; se: 0.0number; (experimental?: { total: 0number; },; control?: { total: 0number; })?; applicability?: Applicability; } OBSERVED_EXPECTED_DATA: { export interface ObservedExpectedInputData { studyId: string; oe: 0.0,number; variance: 0.0,number; (experimental?: { events: 0,number; total: 0number; },; control?: { events: 0,number; total: number; }; applicability?: Applicability; } |
| Code Block | ||
|---|---|---|
| ||
export interface DtaInput { diagnosticOptions: DtaInputOptions; diagnosticDataRows?: DtaTestDataRowInput[]; diagnosticSubgroups?: DtaSubgroupInput[]; } export interface DtaInputOptions { scale: Scale; weight: Weight; ciLevel: 0.90 | 0.95 | 0.99; } export interface DtaSubgroupInput { })? diagnosticDataRows: DtaTestDataRowInput[]; } export interface DtaTestDataRowInput { tp: number; fp: number; fn: number; tn: number; covariateScaleValue?: number; } |