diff --git a/scripts/recompute_device_data.py b/scripts/recompute_device_data.py new file mode 100644 index 0000000..3c53875 --- /dev/null +++ b/scripts/recompute_device_data.py @@ -0,0 +1,53 @@ + + # datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") +import firebase_admin +from firebase_admin import credentials, firestore +import os +from google.cloud.firestore_v1.base_query import FieldFilter +from datetime import datetime + +key_path = os.getcwd() + '/keys/hpos-qa-firebase-adminsdk.json' +cred = credentials.Certificate(key_path) +firebase_admin.initialize_app(cred) + +def classify(calculatedRatio): + if calculatedRatio < 0.05: + return "Inconclusive. Very low Absorbance - Repeat test with Higher Blood Volume" + if calculatedRatio > 0.05 and calculatedRatio < 0.155: + return "Normal" + if calculatedRatio > 0.155 and calculatedRatio < 0.175: + return "Negative Borderline. Repeat Test" + if calculatedRatio > 0.175 and calculatedRatio < 0.22: + return "Sickle Cell Trait" + if calculatedRatio > 0.22 and calculatedRatio < 0.25: + return "Positive for Sickle Cell. HPLC for Confirmation" + if calculatedRatio > 0.25 and calculatedRatio < 0.35: + return "Sickle Cell Disease" + if calculatedRatio > 0.35: + return "Inconclusive. Repeat with test with lower volume of blood" + +def update_coefficent(source_collection): + db = firestore.client() + + docs = db.collection(source_collection).where(filter = FieldFilter("deviceId", "==", "HC-V1-003")).stream() + + for doc in docs: + doc_id = doc.id #doc.to_dict()["_id"] + print(doc_id) + + slope = 0.5453 + intercept = 0.0099 + calculatedRatio = slope * doc.to_dict()["deviceRatio"] + intercept + + try: + db.collection(source_collection).document(doc_id).update({ + "coefficients": [slope, intercept], + "calculatedRatio": calculatedRatio, + "classificationResult": classify(calculatedRatio) + }) + print(f"Document with ID '{doc_id}' updated") + except Exception as e: + print(f"Error updating document with ID '{doc_id}' from the source collection: {e}") + +if __name__ == "__main__": + update_coefficent("testData")