From 5c782fae71acfbb635f4733801058a336baceaa6 Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Sat, 23 Sep 2023 17:19:23 +0530 Subject: [PATCH] average waiting time --- scripts/waiting.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 scripts/waiting.py diff --git a/scripts/waiting.py b/scripts/waiting.py new file mode 100644 index 0000000..9b42f2a --- /dev/null +++ b/scripts/waiting.py @@ -0,0 +1,46 @@ +import firebase_admin +from firebase_admin import firestore +import os +from datetime import datetime, date, timedelta +from google.cloud.firestore_v1.base_query import FieldFilter + +if __name__ == "__main__": + + file_path = os.getcwd() + '/keys' + '/hpos-prod-firebase-adminsdk-bionp-3c041b2300.json' + cred = firebase_admin.credentials.Certificate(fr'{file_path}') + + firebase_admin.initialize_app(cred) + + db = firestore.client() + + registrations = db.collection("patientData").where(filter = FieldFilter("createdAt", ">", str(date.today()))).stream() + hpos_tests = db.collection("testData").stream() + + # print([doc.to_dict() for doc in patient_collection.stream()]) + + total_deta = timedelta(minutes=0) + total_count = 0 + for registration in registrations: + registration_dic = registration.to_dict() + # print(registration_dic["_id"]) + # hpos_test = filter(lambda x: x.to_dict()["_id"] != registration_dic["_id"], hpos_tests) + # print(list(hpos_test)) + + test_docs = db.collection("testData").where("_id", "==", registration_dic["_id"]).stream() + + for test_doc in test_docs: + test_data = test_doc.to_dict() + + # Combine the data from both collections into a single dictionary + combined_data = {**registration_dic, **test_data} + + start_time = combined_data["createdAt"] + end_time = combined_data["incubationTime"] + delta = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") - datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S") + total_deta = total_deta + delta + total_count = total_count + 1 + print(combined_data['_id'], combined_data["createdAt"], combined_data["incubationTime"], delta) + + print("tests count", total_count) + print("waiting avg:", total_deta / total_count) + firebase_admin.delete_app(firebase_admin.get_app())