60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
/**
|
|
* Calculates total lesion burden given the Trial Criteria Type.
|
|
* Supports RECIST 1.1 and irRC at present, defaults to RECIST.
|
|
*
|
|
* @param criteriaType Either 'RECIST' or 'irRC'
|
|
* @returns {*}
|
|
*/
|
|
calculateTotalLesionBurden = function(criteriaType) {
|
|
var totalBurden;
|
|
var measurements = Measurements.find({
|
|
isTarget: true
|
|
});
|
|
|
|
switch (criteriaType) {
|
|
default:
|
|
case 'RECIST':
|
|
// - Time Point Measurement Total =
|
|
// Sum of long axis measurements for extranodal target lesion +
|
|
// short axis measurements for nodal lesions
|
|
var sumLongAxisExtranodal = 0,
|
|
sumShortAxisNodal = 0;
|
|
|
|
measurements.forEach(function(measurement) {
|
|
var LD = parseFloat(measurement.longestDiameter);
|
|
var SD = parseFloat(measurement.shortestDiameter);
|
|
|
|
if (measurement.nodal === true) {
|
|
sumShortAxisNodal += SD;
|
|
} else {
|
|
sumLongAxisExtranodal += LD;
|
|
}
|
|
});
|
|
|
|
totalBurden = sumLongAxisExtranodal + sumShortAxisNodal;
|
|
break;
|
|
case 'irRC':
|
|
// - Time Point Measurement Total = SPD target lesions + SPD new lesions
|
|
// (SPD = sum of product of long axis and short axis diameters)
|
|
var sumProductLesions = 0,
|
|
sumProductNewLesions = 0;
|
|
|
|
measurements.forEach(function(measurement) {
|
|
var LD = parseFloat(measurement.longestDiameter);
|
|
var SD = parseFloat(measurement.shortestDiameter);
|
|
var product = LD * SD;
|
|
|
|
if (measurement.newLesion === true) {
|
|
sumProductNewLesions += product;
|
|
} else {
|
|
sumProductLesions += product;
|
|
}
|
|
});
|
|
|
|
totalBurden = sumProductLesions + sumProductNewLesions;
|
|
break;
|
|
}
|
|
|
|
return totalBurden;
|
|
};
|