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);
|
console.log('Function triggered by change to: ' + resource);
|
||||||
// now log the full event object
|
// now log the full event object
|
||||||
console.log(JSON.stringify(event));
|
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('kitSerial', kitSerial);
|
||||||
console.log('classificationResult', classificationResult);
|
console.log('classificationResult', classificationResult);
|
||||||
if (classificationResult?.stringValue?.includes("Trait")) {
|
// if (classificationResult?.stringValue?.includes("Trait")) {
|
||||||
const currentKitTests = await admin.firestore().collection("testData").where("kitSerial", "==", kitSerial.stringValue).get();
|
// const currentKitTests = await admin.firestore().collection("testData").where("kitSerial", "==", kitSerial.stringValue).get();
|
||||||
let traitCount = 0;
|
// let traitCount = 0;
|
||||||
currentKitTests?.docs.forEach((x) => {
|
// currentKitTests?.docs.forEach((x) => {
|
||||||
if (x.data().classificationResult?.includes("Trait")) {
|
// if (x.data().classificationResult?.includes("Trait")) {
|
||||||
traitCount++;
|
// traitCount++;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
console.log("traitCount", traitCount);
|
// console.log("traitCount", traitCount);
|
||||||
if (traitCount > 2) {
|
// if (traitCount > 2) {
|
||||||
await admin.firestore().collection("alerts").add({
|
// await admin.firestore().collection("alerts").add({
|
||||||
name: 'Kit Alert',
|
// name: 'Kit Alert',
|
||||||
kit: kitSerial.stringValue,
|
// traitCount: traitCount,
|
||||||
traitCount: traitCount,
|
// message: `${kitSerial.stringValue} has ${traitCount} traits`
|
||||||
message: `${kitSerial.stringValue} has ${traitCount} traits`,
|
// });
|
||||||
createdAt: moment().utcOffset("+05:30").format("YYYY-MM-DD HH:mm:ss")
|
// }
|
||||||
});
|
// 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