diff --git a/cloud-functions/nodejs/functions/index.js b/cloud-functions/nodejs/functions/index.js index 38e877c..4425695 100644 --- a/cloud-functions/nodejs/functions/index.js +++ b/cloud-functions/nodejs/functions/index.js @@ -137,28 +137,85 @@ 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 } = event.value.fields; + const { kitSerial, classificationResult, _id, led1Average, led3Average } = event.value.fields; console.log('kitSerial', kitSerial); console.log('classificationResult', classificationResult); - if (classificationResult?.stringValue?.includes("Trait")) { - const currentKitTests = await admin.firestore().collection("testData").where("kitSerial", "==", kitSerial.stringValue).get(); - let traitCount = 0; - currentKitTests?.docs.forEach((x) => { - if (x.data().classificationResult?.includes("Trait")) { - traitCount++; - } - }); - console.log("traitCount", traitCount); - if (traitCount > 2) { - await admin.firestore().collection("alerts").add({ - name: 'Kit Alert', - kit: kitSerial.stringValue, - traitCount: traitCount, - message: `${kitSerial.stringValue} has ${traitCount} traits`, - createdAt: moment().utcOffset("+05:30").format("YYYY-MM-DD HH:mm:ss") - }); - } + // if (classificationResult?.stringValue?.includes("Trait")) { + // const currentKitTests = await admin.firestore().collection("testData").where("kitSerial", "==", kitSerial.stringValue).get(); + // let traitCount = 0; + // currentKitTests?.docs.forEach((x) => { + // if (x.data().classificationResult?.includes("Trait")) { + // traitCount++; + // } + // }); + // console.log("traitCount", traitCount); + // if (traitCount > 2) { + // await admin.firestore().collection("alerts").add({ + // name: 'Kit Alert', + // traitCount: traitCount, + // message: `${kitSerial.stringValue} has ${traitCount} traits` + // }); + // } + // const sgMail = require('@sendgrid/mail'); + // sgMail.setApiKey('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'); + // const msg = { + // to: ['hpos.smi@gmail.com', 'pritimay@sminnovations.in'], + // from: 'pritimay@sminnovations.in', + // subject: `Kit Alert: ${kitSerial.stringValue}`, + // text: `${kitSerial.stringValue} has ${traitCount} traits`, + // html: `
${kitSerial.stringValue} has ${traitCount} traits
`, + // }; + // sgMail.send(msg); + // } + + const led1Intercept = -0.85965; + const led3Slope = 0.184991; + 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; + + const Abs427 = LED1Average * 1.2648 - 0.85965; + const Abs555 = LED3Average * 0.184991 + 0.001704; + const pdr = Abs555 / Abs427; + // const pdr = 0.239; + console.log(pdr); + let classification = "NA"; + if (pdr > 0 && pdr <= 0.16) { + classification = "Normal"; } + + if (pdr > 0.16 && pdr <= 0.165) { + classification = "Negative Borderline"; + } + + if (pdr > 0.165 && pdr <= 0.235) { + classification = "Sickle Cell Trait"; + } + + if (pdr > 0.235 && pdr <= 0.24) { + classification = "Positive Borderline"; + } + + if (pdr > 0.24 && pdr <= 1) { + classification = "Sickle Cell Disease"; + } + + console.log(classification); + + const docs = await admin.firestore().collection("testData").where("_id", "==", _id.stringValue).get(); + docs?.forEach(async (doc) => { + await admin.firestore().collection("testData").doc(doc.id).update({ + abs427: Abs427, + abs555: Abs555, + predictedDenovixRatio: pdr, + prdClassification: classification + // incubationTime: admin.firestore.FieldValue.delete() + }); + }) };