diff --git a/cloud-functions/nodejs/functions/index.js b/cloud-functions/nodejs/functions/index.js index 9232015..9e9d7ab 100644 --- a/cloud-functions/nodejs/functions/index.js +++ b/cloud-functions/nodejs/functions/index.js @@ -137,7 +137,7 @@ exports.kitAlert = async (event, context) => { console.log('Function triggered by change to: ' + resource); // now log the full event object console.log(JSON.stringify(event)); - const { kitSerial, classificationResult, _id, led1Average, led3Average, deviceRatio } = event.value.fields; + const { kitSerial, classificationResult, _id, led1Average, led2Average, led3Average, deviceRatio, abs1, abs2 } = event.value.fields; console.log('kitSerial', kitSerial); console.log('classificationResult', classificationResult); // if (classificationResult?.stringValue?.includes("Trait")) { @@ -173,8 +173,6 @@ exports.kitAlert = async (event, context) => { const led3Intercept = 0.001704; console.log('_id', _id?.stringValue); - console.log('led1Average', led1Average?.doubleValue); - console.log('led3Average', led3Average?.doubleValue); const LED1Average = led1Average?.doubleValue; const LED3Average = led3Average?.doubleValue; @@ -223,6 +221,26 @@ exports.kitAlert = async (event, context) => { devRatioClass = "Sickle Cell Disease"; } + const slope = (led1Average?.doubleValue - led2Average?.doubleValue) / (435 - 415); + const slopeRatio = Math.abs(led3Average?.doubleValue / slope); + let slopeRatioClass = "INVALID"; + + if (slopeRatio > 0 && slopeRatio <= 35.0) { + slopeRatioClass = "Normal"; + } + if (slopeRatio > 35.0 && slopeRatio <= 40.0) { + slopeRatioClass = "Negative Borderline"; + } + if (slopeRatio > 40.0 && slopeRatio <= 70.0) { + slopeRatioClass = "Sickle Cell Trait"; + } + if (slopeRatio > 70.0 && slopeRatio <= 75.0) { + slopeRatioClass = "Positive Borderline"; + } + if (slopeRatio > 75.0 && slopeRatio <= 300.0) { + slopeRatioClass = "Sickle Cell Disease"; + } + console.log(classification); const docs = await admin.firestore().collection("testData").where("_id", "==", _id.stringValue).get(); @@ -234,6 +252,8 @@ exports.kitAlert = async (event, context) => { // prdClassification: classification // incubationTime: admin.firestore.FieldValue.delete() deviceRatioClass: devRatioClass, + slopeRatio: slopeRatio, + slopeRatioClass: slopeRatioClass, }); }) };