add abs-calibration based classification
This commit is contained in:
@@ -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: `<p>${kitSerial.stringValue} has ${traitCount} traits</p>`,
|
||||
// };
|
||||
// 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()
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user