In [5]:
from pymongo import MongoClient, ASCENDING
import random
import datetime

# MongoDB URI & client setup
uri = "mongodb+srv://tanvirxf:7T0YMWUdLEjVXWtl@cluster0.uakz7xn.mongodb.net/?retryWrites=true&w=majority&ssl=true&authSource=admin"
client = MongoClient(uri)
db = client["MediCareDB"]

try:
    client.admin.command('ping')
    print("Connected to MongoDB Atlas.")
except Exception as e:
    print("Connection failed:", e)
    exit()

# ---------------- Generate Data---------------

def generate_patient_info(id):
    return {
        "PatientID": id,
        "FirstName": f"PatientFirst{id}",
        "LastName": f"Last{id}",
        "Age": random.randint(20, 85),
        "DOB": f"{random.randint(1,12):02}/{random.randint(1,28):02}/{random.randint(1960,2000)}",
        "Gender": random.choice(["Male", "Female"]),
        "ContactNumber": f"+1-{random.randint(100,999)}-{random.randint(1000,9999)}",
        "Address": f"{random.randint(100,999)} {random.choice(['Main St','Oak St','Pine St'])}",
        "BloodType": random.choice(["A+", "B+", "O+", "AB+"]),
        "Allergies": random.choice(["None", "Peanuts", "Pollen", "Shellfish"]),
        "MedicalHistory": random.choice(["None", "Diabetes", "Hypertension", "Asthma"])
    }

def generate_doctor(id):
    return {
        "DoctorID": id,
        "FirstName": f"DoctorFirst{id}",
        "LastName": f"DoctorLast{id}",
        "Specialization": random.choice(["Cardiology", "Neurology", "Pediatrics"]),
        "ContactNumber": f"+1-{random.randint(100,999)}-{random.randint(1000,9999)}",
        "Email": f"doctor{id}@hospital.com",
        "DepartmentID": random.randint(1, 10),
        "HospitalID": 1
    }

def generate_appointment(pid, doc):
    return {
        "PatientID": pid["PatientID"],
        "DoctorID": doc["DoctorID"],
        "PatientName": pid["FirstName"] + " " + pid["LastName"],  # Denormalized Patient's Name
        "DoctorName": doc["FirstName"] + " " + doc["LastName"],    # Denormalized Doctor's Name
        "Date": datetime.datetime(2024, random.randint(1, 12), random.randint(1, 28), random.randint(9, 17)),
        "Status": random.choice(["Scheduled", "Completed"]),
        "Notes": "Follow-up"
    }

def generate_billing(pid):
    return {
        "PatientID": pid["PatientID"],
        "PatientName": pid["FirstName"] + " " + pid["LastName"],  # Denormalized Patient's name again
        "TotalAmount": round(random.uniform(50, 500), 2),
        "PaymentStatus": random.choice(["Paid", "Pending", "Overdue"])
    }

def generate_prescription(pid):
    return {
        "PatientID": pid["PatientID"],
        "Medication": random.choice(["Ibuprofen", "Paracetamol"]),
        "Dosage": "1 tablet",
        "Duration": "5 days"
    }

def generate_lab_result(pid):
    return {
        "PatientID": pid["PatientID"],
        "TestName": random.choice(["Blood Test", "X-Ray"]),
        "Result": random.choice(["Normal", "Abnormal"]),
        "ResultDate": str(datetime.datetime.now().date())
    }

def generate_room(pid):
    return {
        "PatientID": pid["PatientID"],
        "RoomNumber": f"R{random.randint(100,999)}",
        "AdmissionDate": str(datetime.datetime.now().date()),
        "DischargeDate": str(datetime.datetime.now().date())
    }

def generate_pharmacy():
    return {
        "DrugName": random.choice(["Aspirin", "Amoxicillin"]),
        "Manufacturer": random.choice(["PharmaX", "MedCorp"]),
        "ExpiryDate": str(datetime.datetime(2025, random.randint(1, 12), 1)),
        "Stock": random.randint(10, 500)
    }

def generate_hospital():
    return {
        "HospitalID": 1,
        "HospitalName": "General Hospital",
        "Location": "London",
        "PhoneNumber": "+44-1234-567890",
        "Email": "info@hospital.com"
    }

# ---------------- Generate Bulk Datasets ----------------

patients = [generate_patient_info(i) for i in range(1, 201)]
doctors = [generate_doctor(i) for i in range(1, 21)]
appointments = [generate_appointment(random.choice(patients), random.choice(doctors)) for _ in range(300)]
billings = [generate_billing(random.choice(patients)) for _ in range(300)]
prescriptions = [generate_prescription(random.choice(patients)) for _ in range(200)]
labs = [generate_lab_result(random.choice(patients)) for _ in range(200)]
rooms = [generate_room(random.choice(patients)) for _ in range(200)]
pharmacies = [generate_pharmacy() for _ in range(20)]
departments = [{"DepartmentID": i, "DepartmentName": f"Dept{i}"} for i in range(1, 11)]
hospitals = [generate_hospital()]

#----------------------Bulk Insertation to Corresponding MongoDB Collections------------

db["patients"].insert_many(patients)
db["doctors"].insert_many(doctors)
db["appointments"].insert_many(appointments)
db["billing_records"].insert_many(billings)
db["prescriptions"].insert_many(prescriptions)
db["lab_results"].insert_many(labs)
db["room_assignments"].insert_many(rooms)
db["pharmacy"].insert_many(pharmacies)
db["departments"].insert_many(departments)
db["hospitals"].insert_many(hospitals)

# ---------------- Indexing ----------------

db["patients"].create_index([("PatientID", ASCENDING)])
db["appointments"].create_index([("DoctorID", ASCENDING)])
db["appointments"].create_index([("PatientID", ASCENDING)])
db["billing_records"].create_index([("PatientID", ASCENDING)])

# ---------------- Queries with Execution time and Aggregation ----------------

# Q1. Find patients who are aged over 60
print("Q1 - Patients over age 60")
explain_cmd = {"find": "patients", "filter": {"Age": {"$gt": 60}}}
stats = db.command("explain", explain_cmd, verbosity="executionStats")  # Measures query execution performance
print(f"executionTimeMillis: {stats['executionStats']['executionTimeMillis']} ms")  # Prints execution time
for patient in db.patients.find({"Age": {"$gt": 60}}, {"_id": 0, "PatientID": 1, "FirstName": 1, "Age": 1}):
    print(patient)
print()
Connected to MongoDB Atlas.
Q1 - Patients over age 60
executionTimeMillis: 1 ms
{'PatientID': 3, 'FirstName': 'PatientFirst3', 'Age': 74}
{'PatientID': 6, 'FirstName': 'PatientFirst6', 'Age': 75}
{'PatientID': 10, 'FirstName': 'PatientFirst10', 'Age': 76}
{'PatientID': 12, 'FirstName': 'PatientFirst12', 'Age': 78}
{'PatientID': 16, 'FirstName': 'PatientFirst16', 'Age': 62}
{'PatientID': 17, 'FirstName': 'PatientFirst17', 'Age': 75}
{'PatientID': 22, 'FirstName': 'PatientFirst22', 'Age': 75}
{'PatientID': 23, 'FirstName': 'PatientFirst23', 'Age': 72}
{'PatientID': 27, 'FirstName': 'PatientFirst27', 'Age': 75}
{'PatientID': 28, 'FirstName': 'PatientFirst28', 'Age': 74}
{'PatientID': 31, 'FirstName': 'PatientFirst31', 'Age': 84}
{'PatientID': 32, 'FirstName': 'PatientFirst32', 'Age': 69}
{'PatientID': 33, 'FirstName': 'PatientFirst33', 'Age': 61}
{'PatientID': 39, 'FirstName': 'PatientFirst39', 'Age': 77}
{'PatientID': 40, 'FirstName': 'PatientFirst40', 'Age': 76}
{'PatientID': 47, 'FirstName': 'PatientFirst47', 'Age': 80}
{'PatientID': 49, 'FirstName': 'PatientFirst49', 'Age': 82}
{'PatientID': 51, 'FirstName': 'PatientFirst51', 'Age': 83}
{'PatientID': 53, 'FirstName': 'PatientFirst53', 'Age': 76}
{'PatientID': 54, 'FirstName': 'PatientFirst54', 'Age': 73}
{'PatientID': 55, 'FirstName': 'PatientFirst55', 'Age': 67}
{'PatientID': 57, 'FirstName': 'PatientFirst57', 'Age': 62}
{'PatientID': 58, 'FirstName': 'PatientFirst58', 'Age': 85}
{'PatientID': 61, 'FirstName': 'PatientFirst61', 'Age': 74}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 65}
{'PatientID': 66, 'FirstName': 'PatientFirst66', 'Age': 61}
{'PatientID': 67, 'FirstName': 'PatientFirst67', 'Age': 72}
{'PatientID': 68, 'FirstName': 'PatientFirst68', 'Age': 62}
{'PatientID': 72, 'FirstName': 'PatientFirst72', 'Age': 68}
{'PatientID': 78, 'FirstName': 'PatientFirst78', 'Age': 74}
{'PatientID': 80, 'FirstName': 'PatientFirst80', 'Age': 77}
{'PatientID': 81, 'FirstName': 'PatientFirst81', 'Age': 82}
{'PatientID': 85, 'FirstName': 'PatientFirst85', 'Age': 75}
{'PatientID': 88, 'FirstName': 'PatientFirst88', 'Age': 61}
{'PatientID': 94, 'FirstName': 'PatientFirst94', 'Age': 76}
{'PatientID': 95, 'FirstName': 'PatientFirst95', 'Age': 72}
{'PatientID': 100, 'FirstName': 'PatientFirst100', 'Age': 65}
{'PatientID': 102, 'FirstName': 'PatientFirst102', 'Age': 71}
{'PatientID': 107, 'FirstName': 'PatientFirst107', 'Age': 80}
{'PatientID': 109, 'FirstName': 'PatientFirst109', 'Age': 68}
{'PatientID': 110, 'FirstName': 'PatientFirst110', 'Age': 62}
{'PatientID': 112, 'FirstName': 'PatientFirst112', 'Age': 61}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 73}
{'PatientID': 115, 'FirstName': 'PatientFirst115', 'Age': 73}
{'PatientID': 117, 'FirstName': 'PatientFirst117', 'Age': 80}
{'PatientID': 122, 'FirstName': 'PatientFirst122', 'Age': 82}
{'PatientID': 125, 'FirstName': 'PatientFirst125', 'Age': 75}
{'PatientID': 129, 'FirstName': 'PatientFirst129', 'Age': 79}
{'PatientID': 136, 'FirstName': 'PatientFirst136', 'Age': 85}
{'PatientID': 139, 'FirstName': 'PatientFirst139', 'Age': 68}
{'PatientID': 140, 'FirstName': 'PatientFirst140', 'Age': 84}
{'PatientID': 142, 'FirstName': 'PatientFirst142', 'Age': 63}
{'PatientID': 144, 'FirstName': 'PatientFirst144', 'Age': 78}
{'PatientID': 145, 'FirstName': 'PatientFirst145', 'Age': 64}
{'PatientID': 153, 'FirstName': 'PatientFirst153', 'Age': 74}
{'PatientID': 154, 'FirstName': 'PatientFirst154', 'Age': 72}
{'PatientID': 159, 'FirstName': 'PatientFirst159', 'Age': 80}
{'PatientID': 165, 'FirstName': 'PatientFirst165', 'Age': 63}
{'PatientID': 166, 'FirstName': 'PatientFirst166', 'Age': 74}
{'PatientID': 174, 'FirstName': 'PatientFirst174', 'Age': 77}
{'PatientID': 175, 'FirstName': 'PatientFirst175', 'Age': 74}
{'PatientID': 176, 'FirstName': 'PatientFirst176', 'Age': 73}
{'PatientID': 178, 'FirstName': 'PatientFirst178', 'Age': 83}
{'PatientID': 182, 'FirstName': 'PatientFirst182', 'Age': 77}
{'PatientID': 187, 'FirstName': 'PatientFirst187', 'Age': 80}
{'PatientID': 189, 'FirstName': 'PatientFirst189', 'Age': 82}
{'PatientID': 190, 'FirstName': 'PatientFirst190', 'Age': 74}
{'PatientID': 194, 'FirstName': 'PatientFirst194', 'Age': 79}
{'PatientID': 195, 'FirstName': 'PatientFirst195', 'Age': 84}
{'PatientID': 200, 'FirstName': 'PatientFirst200', 'Age': 69}
{'PatientID': 2, 'FirstName': 'PatientFirst2', 'Age': 71}
{'PatientID': 10, 'FirstName': 'PatientFirst10', 'Age': 82}
{'PatientID': 12, 'FirstName': 'PatientFirst12', 'Age': 79}
{'PatientID': 14, 'FirstName': 'PatientFirst14', 'Age': 78}
{'PatientID': 15, 'FirstName': 'PatientFirst15', 'Age': 61}
{'PatientID': 18, 'FirstName': 'PatientFirst18', 'Age': 76}
{'PatientID': 20, 'FirstName': 'PatientFirst20', 'Age': 80}
{'PatientID': 22, 'FirstName': 'PatientFirst22', 'Age': 70}
{'PatientID': 26, 'FirstName': 'PatientFirst26', 'Age': 81}
{'PatientID': 27, 'FirstName': 'PatientFirst27', 'Age': 77}
{'PatientID': 29, 'FirstName': 'PatientFirst29', 'Age': 68}
{'PatientID': 30, 'FirstName': 'PatientFirst30', 'Age': 79}
{'PatientID': 31, 'FirstName': 'PatientFirst31', 'Age': 82}
{'PatientID': 33, 'FirstName': 'PatientFirst33', 'Age': 62}
{'PatientID': 35, 'FirstName': 'PatientFirst35', 'Age': 85}
{'PatientID': 36, 'FirstName': 'PatientFirst36', 'Age': 78}
{'PatientID': 38, 'FirstName': 'PatientFirst38', 'Age': 76}
{'PatientID': 40, 'FirstName': 'PatientFirst40', 'Age': 68}
{'PatientID': 41, 'FirstName': 'PatientFirst41', 'Age': 71}
{'PatientID': 44, 'FirstName': 'PatientFirst44', 'Age': 70}
{'PatientID': 46, 'FirstName': 'PatientFirst46', 'Age': 69}
{'PatientID': 47, 'FirstName': 'PatientFirst47', 'Age': 62}
{'PatientID': 48, 'FirstName': 'PatientFirst48', 'Age': 73}
{'PatientID': 50, 'FirstName': 'PatientFirst50', 'Age': 84}
{'PatientID': 51, 'FirstName': 'PatientFirst51', 'Age': 75}
{'PatientID': 52, 'FirstName': 'PatientFirst52', 'Age': 64}
{'PatientID': 53, 'FirstName': 'PatientFirst53', 'Age': 70}
{'PatientID': 56, 'FirstName': 'PatientFirst56', 'Age': 67}
{'PatientID': 60, 'FirstName': 'PatientFirst60', 'Age': 77}
{'PatientID': 61, 'FirstName': 'PatientFirst61', 'Age': 76}
{'PatientID': 63, 'FirstName': 'PatientFirst63', 'Age': 63}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 69}
{'PatientID': 67, 'FirstName': 'PatientFirst67', 'Age': 70}
{'PatientID': 73, 'FirstName': 'PatientFirst73', 'Age': 84}
{'PatientID': 74, 'FirstName': 'PatientFirst74', 'Age': 65}
{'PatientID': 76, 'FirstName': 'PatientFirst76', 'Age': 74}
{'PatientID': 78, 'FirstName': 'PatientFirst78', 'Age': 79}
{'PatientID': 81, 'FirstName': 'PatientFirst81', 'Age': 73}
{'PatientID': 84, 'FirstName': 'PatientFirst84', 'Age': 82}
{'PatientID': 86, 'FirstName': 'PatientFirst86', 'Age': 83}
{'PatientID': 88, 'FirstName': 'PatientFirst88', 'Age': 61}
{'PatientID': 90, 'FirstName': 'PatientFirst90', 'Age': 79}
{'PatientID': 93, 'FirstName': 'PatientFirst93', 'Age': 83}
{'PatientID': 94, 'FirstName': 'PatientFirst94', 'Age': 73}
{'PatientID': 96, 'FirstName': 'PatientFirst96', 'Age': 69}
{'PatientID': 97, 'FirstName': 'PatientFirst97', 'Age': 83}
{'PatientID': 98, 'FirstName': 'PatientFirst98', 'Age': 77}
{'PatientID': 101, 'FirstName': 'PatientFirst101', 'Age': 61}
{'PatientID': 106, 'FirstName': 'PatientFirst106', 'Age': 80}
{'PatientID': 108, 'FirstName': 'PatientFirst108', 'Age': 79}
{'PatientID': 109, 'FirstName': 'PatientFirst109', 'Age': 85}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 85}
{'PatientID': 117, 'FirstName': 'PatientFirst117', 'Age': 75}
{'PatientID': 118, 'FirstName': 'PatientFirst118', 'Age': 71}
{'PatientID': 119, 'FirstName': 'PatientFirst119', 'Age': 66}
{'PatientID': 122, 'FirstName': 'PatientFirst122', 'Age': 80}
{'PatientID': 126, 'FirstName': 'PatientFirst126', 'Age': 80}
{'PatientID': 130, 'FirstName': 'PatientFirst130', 'Age': 76}
{'PatientID': 131, 'FirstName': 'PatientFirst131', 'Age': 82}
{'PatientID': 134, 'FirstName': 'PatientFirst134', 'Age': 70}
{'PatientID': 135, 'FirstName': 'PatientFirst135', 'Age': 68}
{'PatientID': 136, 'FirstName': 'PatientFirst136', 'Age': 76}
{'PatientID': 139, 'FirstName': 'PatientFirst139', 'Age': 73}
{'PatientID': 140, 'FirstName': 'PatientFirst140', 'Age': 79}
{'PatientID': 141, 'FirstName': 'PatientFirst141', 'Age': 65}
{'PatientID': 144, 'FirstName': 'PatientFirst144', 'Age': 65}
{'PatientID': 147, 'FirstName': 'PatientFirst147', 'Age': 64}
{'PatientID': 154, 'FirstName': 'PatientFirst154', 'Age': 81}
{'PatientID': 155, 'FirstName': 'PatientFirst155', 'Age': 69}
{'PatientID': 156, 'FirstName': 'PatientFirst156', 'Age': 85}
{'PatientID': 165, 'FirstName': 'PatientFirst165', 'Age': 67}
{'PatientID': 174, 'FirstName': 'PatientFirst174', 'Age': 81}
{'PatientID': 175, 'FirstName': 'PatientFirst175', 'Age': 68}
{'PatientID': 176, 'FirstName': 'PatientFirst176', 'Age': 81}
{'PatientID': 180, 'FirstName': 'PatientFirst180', 'Age': 62}
{'PatientID': 181, 'FirstName': 'PatientFirst181', 'Age': 82}
{'PatientID': 186, 'FirstName': 'PatientFirst186', 'Age': 80}
{'PatientID': 188, 'FirstName': 'PatientFirst188', 'Age': 80}
{'PatientID': 190, 'FirstName': 'PatientFirst190', 'Age': 79}
{'PatientID': 191, 'FirstName': 'PatientFirst191', 'Age': 69}
{'PatientID': 193, 'FirstName': 'PatientFirst193', 'Age': 66}
{'PatientID': 196, 'FirstName': 'PatientFirst196', 'Age': 62}
{'PatientID': 198, 'FirstName': 'PatientFirst198', 'Age': 69}
{'PatientID': 200, 'FirstName': 'PatientFirst200', 'Age': 74}
{'PatientID': 1, 'FirstName': 'PatientFirst1', 'Age': 66}
{'PatientID': 3, 'FirstName': 'PatientFirst3', 'Age': 84}
{'PatientID': 5, 'FirstName': 'PatientFirst5', 'Age': 66}
{'PatientID': 9, 'FirstName': 'PatientFirst9', 'Age': 66}
{'PatientID': 10, 'FirstName': 'PatientFirst10', 'Age': 73}
{'PatientID': 14, 'FirstName': 'PatientFirst14', 'Age': 70}
{'PatientID': 17, 'FirstName': 'PatientFirst17', 'Age': 83}
{'PatientID': 18, 'FirstName': 'PatientFirst18', 'Age': 71}
{'PatientID': 19, 'FirstName': 'PatientFirst19', 'Age': 65}
{'PatientID': 25, 'FirstName': 'PatientFirst25', 'Age': 72}
{'PatientID': 27, 'FirstName': 'PatientFirst27', 'Age': 65}
{'PatientID': 28, 'FirstName': 'PatientFirst28', 'Age': 67}
{'PatientID': 29, 'FirstName': 'PatientFirst29', 'Age': 77}
{'PatientID': 36, 'FirstName': 'PatientFirst36', 'Age': 68}
{'PatientID': 38, 'FirstName': 'PatientFirst38', 'Age': 64}
{'PatientID': 40, 'FirstName': 'PatientFirst40', 'Age': 69}
{'PatientID': 43, 'FirstName': 'PatientFirst43', 'Age': 63}
{'PatientID': 49, 'FirstName': 'PatientFirst49', 'Age': 63}
{'PatientID': 56, 'FirstName': 'PatientFirst56', 'Age': 77}
{'PatientID': 58, 'FirstName': 'PatientFirst58', 'Age': 64}
{'PatientID': 63, 'FirstName': 'PatientFirst63', 'Age': 84}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 81}
{'PatientID': 65, 'FirstName': 'PatientFirst65', 'Age': 77}
{'PatientID': 68, 'FirstName': 'PatientFirst68', 'Age': 77}
{'PatientID': 74, 'FirstName': 'PatientFirst74', 'Age': 76}
{'PatientID': 79, 'FirstName': 'PatientFirst79', 'Age': 62}
{'PatientID': 81, 'FirstName': 'PatientFirst81', 'Age': 84}
{'PatientID': 85, 'FirstName': 'PatientFirst85', 'Age': 72}
{'PatientID': 86, 'FirstName': 'PatientFirst86', 'Age': 74}
{'PatientID': 89, 'FirstName': 'PatientFirst89', 'Age': 61}
{'PatientID': 90, 'FirstName': 'PatientFirst90', 'Age': 65}
{'PatientID': 91, 'FirstName': 'PatientFirst91', 'Age': 76}
{'PatientID': 92, 'FirstName': 'PatientFirst92', 'Age': 78}
{'PatientID': 96, 'FirstName': 'PatientFirst96', 'Age': 82}
{'PatientID': 103, 'FirstName': 'PatientFirst103', 'Age': 65}
{'PatientID': 104, 'FirstName': 'PatientFirst104', 'Age': 63}
{'PatientID': 112, 'FirstName': 'PatientFirst112', 'Age': 77}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 64}
{'PatientID': 114, 'FirstName': 'PatientFirst114', 'Age': 77}
{'PatientID': 117, 'FirstName': 'PatientFirst117', 'Age': 71}
{'PatientID': 120, 'FirstName': 'PatientFirst120', 'Age': 72}
{'PatientID': 123, 'FirstName': 'PatientFirst123', 'Age': 61}
{'PatientID': 124, 'FirstName': 'PatientFirst124', 'Age': 73}
{'PatientID': 125, 'FirstName': 'PatientFirst125', 'Age': 64}
{'PatientID': 128, 'FirstName': 'PatientFirst128', 'Age': 64}
{'PatientID': 132, 'FirstName': 'PatientFirst132', 'Age': 79}
{'PatientID': 136, 'FirstName': 'PatientFirst136', 'Age': 77}
{'PatientID': 137, 'FirstName': 'PatientFirst137', 'Age': 79}
{'PatientID': 140, 'FirstName': 'PatientFirst140', 'Age': 68}
{'PatientID': 142, 'FirstName': 'PatientFirst142', 'Age': 64}
{'PatientID': 146, 'FirstName': 'PatientFirst146', 'Age': 62}
{'PatientID': 148, 'FirstName': 'PatientFirst148', 'Age': 63}
{'PatientID': 151, 'FirstName': 'PatientFirst151', 'Age': 74}
{'PatientID': 154, 'FirstName': 'PatientFirst154', 'Age': 85}
{'PatientID': 158, 'FirstName': 'PatientFirst158', 'Age': 79}
{'PatientID': 160, 'FirstName': 'PatientFirst160', 'Age': 84}
{'PatientID': 161, 'FirstName': 'PatientFirst161', 'Age': 73}
{'PatientID': 163, 'FirstName': 'PatientFirst163', 'Age': 76}
{'PatientID': 164, 'FirstName': 'PatientFirst164', 'Age': 73}
{'PatientID': 165, 'FirstName': 'PatientFirst165', 'Age': 79}
{'PatientID': 170, 'FirstName': 'PatientFirst170', 'Age': 66}
{'PatientID': 177, 'FirstName': 'PatientFirst177', 'Age': 61}
{'PatientID': 178, 'FirstName': 'PatientFirst178', 'Age': 75}
{'PatientID': 181, 'FirstName': 'PatientFirst181', 'Age': 69}
{'PatientID': 185, 'FirstName': 'PatientFirst185', 'Age': 62}
{'PatientID': 187, 'FirstName': 'PatientFirst187', 'Age': 73}
{'PatientID': 188, 'FirstName': 'PatientFirst188', 'Age': 78}
{'PatientID': 195, 'FirstName': 'PatientFirst195', 'Age': 65}
{'PatientID': 198, 'FirstName': 'PatientFirst198', 'Age': 77}
{'PatientID': 199, 'FirstName': 'PatientFirst199', 'Age': 79}
{'PatientID': 1, 'FirstName': 'PatientFirst1', 'Age': 75}
{'PatientID': 2, 'FirstName': 'PatientFirst2', 'Age': 68}
{'PatientID': 3, 'FirstName': 'PatientFirst3', 'Age': 62}
{'PatientID': 9, 'FirstName': 'PatientFirst9', 'Age': 69}
{'PatientID': 10, 'FirstName': 'PatientFirst10', 'Age': 68}
{'PatientID': 17, 'FirstName': 'PatientFirst17', 'Age': 76}
{'PatientID': 21, 'FirstName': 'PatientFirst21', 'Age': 63}
{'PatientID': 24, 'FirstName': 'PatientFirst24', 'Age': 78}
{'PatientID': 25, 'FirstName': 'PatientFirst25', 'Age': 66}
{'PatientID': 29, 'FirstName': 'PatientFirst29', 'Age': 77}
{'PatientID': 30, 'FirstName': 'PatientFirst30', 'Age': 72}
{'PatientID': 31, 'FirstName': 'PatientFirst31', 'Age': 62}
{'PatientID': 32, 'FirstName': 'PatientFirst32', 'Age': 62}
{'PatientID': 33, 'FirstName': 'PatientFirst33', 'Age': 67}
{'PatientID': 35, 'FirstName': 'PatientFirst35', 'Age': 73}
{'PatientID': 37, 'FirstName': 'PatientFirst37', 'Age': 72}
{'PatientID': 38, 'FirstName': 'PatientFirst38', 'Age': 84}
{'PatientID': 41, 'FirstName': 'PatientFirst41', 'Age': 71}
{'PatientID': 43, 'FirstName': 'PatientFirst43', 'Age': 61}
{'PatientID': 44, 'FirstName': 'PatientFirst44', 'Age': 83}
{'PatientID': 46, 'FirstName': 'PatientFirst46', 'Age': 63}
{'PatientID': 48, 'FirstName': 'PatientFirst48', 'Age': 65}
{'PatientID': 49, 'FirstName': 'PatientFirst49', 'Age': 64}
{'PatientID': 50, 'FirstName': 'PatientFirst50', 'Age': 81}
{'PatientID': 51, 'FirstName': 'PatientFirst51', 'Age': 62}
{'PatientID': 53, 'FirstName': 'PatientFirst53', 'Age': 63}
{'PatientID': 55, 'FirstName': 'PatientFirst55', 'Age': 82}
{'PatientID': 57, 'FirstName': 'PatientFirst57', 'Age': 65}
{'PatientID': 59, 'FirstName': 'PatientFirst59', 'Age': 80}
{'PatientID': 60, 'FirstName': 'PatientFirst60', 'Age': 71}
{'PatientID': 63, 'FirstName': 'PatientFirst63', 'Age': 67}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 64}
{'PatientID': 67, 'FirstName': 'PatientFirst67', 'Age': 65}
{'PatientID': 72, 'FirstName': 'PatientFirst72', 'Age': 75}
{'PatientID': 76, 'FirstName': 'PatientFirst76', 'Age': 76}
{'PatientID': 81, 'FirstName': 'PatientFirst81', 'Age': 74}
{'PatientID': 83, 'FirstName': 'PatientFirst83', 'Age': 66}
{'PatientID': 85, 'FirstName': 'PatientFirst85', 'Age': 71}
{'PatientID': 87, 'FirstName': 'PatientFirst87', 'Age': 73}
{'PatientID': 90, 'FirstName': 'PatientFirst90', 'Age': 79}
{'PatientID': 92, 'FirstName': 'PatientFirst92', 'Age': 72}
{'PatientID': 95, 'FirstName': 'PatientFirst95', 'Age': 77}
{'PatientID': 96, 'FirstName': 'PatientFirst96', 'Age': 76}
{'PatientID': 100, 'FirstName': 'PatientFirst100', 'Age': 69}
{'PatientID': 101, 'FirstName': 'PatientFirst101', 'Age': 70}
{'PatientID': 102, 'FirstName': 'PatientFirst102', 'Age': 68}
{'PatientID': 108, 'FirstName': 'PatientFirst108', 'Age': 73}
{'PatientID': 110, 'FirstName': 'PatientFirst110', 'Age': 85}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 66}
{'PatientID': 115, 'FirstName': 'PatientFirst115', 'Age': 83}
{'PatientID': 119, 'FirstName': 'PatientFirst119', 'Age': 70}
{'PatientID': 120, 'FirstName': 'PatientFirst120', 'Age': 84}
{'PatientID': 123, 'FirstName': 'PatientFirst123', 'Age': 73}
{'PatientID': 132, 'FirstName': 'PatientFirst132', 'Age': 70}
{'PatientID': 134, 'FirstName': 'PatientFirst134', 'Age': 62}
{'PatientID': 136, 'FirstName': 'PatientFirst136', 'Age': 77}
{'PatientID': 140, 'FirstName': 'PatientFirst140', 'Age': 83}
{'PatientID': 143, 'FirstName': 'PatientFirst143', 'Age': 82}
{'PatientID': 146, 'FirstName': 'PatientFirst146', 'Age': 68}
{'PatientID': 151, 'FirstName': 'PatientFirst151', 'Age': 67}
{'PatientID': 156, 'FirstName': 'PatientFirst156', 'Age': 61}
{'PatientID': 157, 'FirstName': 'PatientFirst157', 'Age': 68}
{'PatientID': 166, 'FirstName': 'PatientFirst166', 'Age': 70}
{'PatientID': 168, 'FirstName': 'PatientFirst168', 'Age': 80}
{'PatientID': 171, 'FirstName': 'PatientFirst171', 'Age': 77}
{'PatientID': 172, 'FirstName': 'PatientFirst172', 'Age': 62}
{'PatientID': 175, 'FirstName': 'PatientFirst175', 'Age': 74}
{'PatientID': 179, 'FirstName': 'PatientFirst179', 'Age': 68}
{'PatientID': 180, 'FirstName': 'PatientFirst180', 'Age': 68}
{'PatientID': 181, 'FirstName': 'PatientFirst181', 'Age': 76}
{'PatientID': 182, 'FirstName': 'PatientFirst182', 'Age': 72}
{'PatientID': 185, 'FirstName': 'PatientFirst185', 'Age': 63}
{'PatientID': 186, 'FirstName': 'PatientFirst186', 'Age': 64}
{'PatientID': 187, 'FirstName': 'PatientFirst187', 'Age': 81}
{'PatientID': 188, 'FirstName': 'PatientFirst188', 'Age': 82}
{'PatientID': 189, 'FirstName': 'PatientFirst189', 'Age': 82}
{'PatientID': 191, 'FirstName': 'PatientFirst191', 'Age': 73}
{'PatientID': 192, 'FirstName': 'PatientFirst192', 'Age': 78}
{'PatientID': 197, 'FirstName': 'PatientFirst197', 'Age': 62}
{'PatientID': 200, 'FirstName': 'PatientFirst200', 'Age': 63}
{'PatientID': 4, 'FirstName': 'PatientFirst4', 'Age': 67}
{'PatientID': 12, 'FirstName': 'PatientFirst12', 'Age': 82}
{'PatientID': 14, 'FirstName': 'PatientFirst14', 'Age': 78}
{'PatientID': 16, 'FirstName': 'PatientFirst16', 'Age': 63}
{'PatientID': 25, 'FirstName': 'PatientFirst25', 'Age': 62}
{'PatientID': 26, 'FirstName': 'PatientFirst26', 'Age': 63}
{'PatientID': 28, 'FirstName': 'PatientFirst28', 'Age': 80}
{'PatientID': 31, 'FirstName': 'PatientFirst31', 'Age': 67}
{'PatientID': 34, 'FirstName': 'PatientFirst34', 'Age': 77}
{'PatientID': 37, 'FirstName': 'PatientFirst37', 'Age': 74}
{'PatientID': 39, 'FirstName': 'PatientFirst39', 'Age': 82}
{'PatientID': 42, 'FirstName': 'PatientFirst42', 'Age': 64}
{'PatientID': 43, 'FirstName': 'PatientFirst43', 'Age': 66}
{'PatientID': 45, 'FirstName': 'PatientFirst45', 'Age': 74}
{'PatientID': 54, 'FirstName': 'PatientFirst54', 'Age': 85}
{'PatientID': 55, 'FirstName': 'PatientFirst55', 'Age': 79}
{'PatientID': 56, 'FirstName': 'PatientFirst56', 'Age': 63}
{'PatientID': 58, 'FirstName': 'PatientFirst58', 'Age': 68}
{'PatientID': 62, 'FirstName': 'PatientFirst62', 'Age': 66}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 80}
{'PatientID': 65, 'FirstName': 'PatientFirst65', 'Age': 82}
{'PatientID': 67, 'FirstName': 'PatientFirst67', 'Age': 84}
{'PatientID': 68, 'FirstName': 'PatientFirst68', 'Age': 78}
{'PatientID': 73, 'FirstName': 'PatientFirst73', 'Age': 85}
{'PatientID': 75, 'FirstName': 'PatientFirst75', 'Age': 70}
{'PatientID': 77, 'FirstName': 'PatientFirst77', 'Age': 64}
{'PatientID': 79, 'FirstName': 'PatientFirst79', 'Age': 72}
{'PatientID': 81, 'FirstName': 'PatientFirst81', 'Age': 85}
{'PatientID': 83, 'FirstName': 'PatientFirst83', 'Age': 82}
{'PatientID': 85, 'FirstName': 'PatientFirst85', 'Age': 64}
{'PatientID': 86, 'FirstName': 'PatientFirst86', 'Age': 74}
{'PatientID': 88, 'FirstName': 'PatientFirst88', 'Age': 79}
{'PatientID': 89, 'FirstName': 'PatientFirst89', 'Age': 62}
{'PatientID': 90, 'FirstName': 'PatientFirst90', 'Age': 81}
{'PatientID': 93, 'FirstName': 'PatientFirst93', 'Age': 78}
{'PatientID': 96, 'FirstName': 'PatientFirst96', 'Age': 65}
{'PatientID': 98, 'FirstName': 'PatientFirst98', 'Age': 72}
{'PatientID': 101, 'FirstName': 'PatientFirst101', 'Age': 61}
{'PatientID': 102, 'FirstName': 'PatientFirst102', 'Age': 84}
{'PatientID': 109, 'FirstName': 'PatientFirst109', 'Age': 72}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 81}
{'PatientID': 116, 'FirstName': 'PatientFirst116', 'Age': 75}
{'PatientID': 127, 'FirstName': 'PatientFirst127', 'Age': 61}
{'PatientID': 129, 'FirstName': 'PatientFirst129', 'Age': 75}
{'PatientID': 132, 'FirstName': 'PatientFirst132', 'Age': 76}
{'PatientID': 133, 'FirstName': 'PatientFirst133', 'Age': 63}
{'PatientID': 134, 'FirstName': 'PatientFirst134', 'Age': 83}
{'PatientID': 135, 'FirstName': 'PatientFirst135', 'Age': 68}
{'PatientID': 139, 'FirstName': 'PatientFirst139', 'Age': 70}
{'PatientID': 142, 'FirstName': 'PatientFirst142', 'Age': 67}
{'PatientID': 148, 'FirstName': 'PatientFirst148', 'Age': 72}
{'PatientID': 150, 'FirstName': 'PatientFirst150', 'Age': 73}
{'PatientID': 153, 'FirstName': 'PatientFirst153', 'Age': 73}
{'PatientID': 156, 'FirstName': 'PatientFirst156', 'Age': 64}
{'PatientID': 159, 'FirstName': 'PatientFirst159', 'Age': 75}
{'PatientID': 160, 'FirstName': 'PatientFirst160', 'Age': 78}
{'PatientID': 166, 'FirstName': 'PatientFirst166', 'Age': 69}
{'PatientID': 167, 'FirstName': 'PatientFirst167', 'Age': 63}
{'PatientID': 169, 'FirstName': 'PatientFirst169', 'Age': 69}
{'PatientID': 173, 'FirstName': 'PatientFirst173', 'Age': 68}
{'PatientID': 174, 'FirstName': 'PatientFirst174', 'Age': 67}
{'PatientID': 179, 'FirstName': 'PatientFirst179', 'Age': 75}
{'PatientID': 181, 'FirstName': 'PatientFirst181', 'Age': 62}
{'PatientID': 183, 'FirstName': 'PatientFirst183', 'Age': 71}
{'PatientID': 186, 'FirstName': 'PatientFirst186', 'Age': 74}
{'PatientID': 187, 'FirstName': 'PatientFirst187', 'Age': 81}
{'PatientID': 192, 'FirstName': 'PatientFirst192', 'Age': 70}
{'PatientID': 1, 'FirstName': 'PatientFirst1', 'Age': 66}
{'PatientID': 2, 'FirstName': 'PatientFirst2', 'Age': 61}
{'PatientID': 3, 'FirstName': 'PatientFirst3', 'Age': 71}
{'PatientID': 6, 'FirstName': 'PatientFirst6', 'Age': 65}
{'PatientID': 11, 'FirstName': 'PatientFirst11', 'Age': 61}
{'PatientID': 13, 'FirstName': 'PatientFirst13', 'Age': 77}
{'PatientID': 15, 'FirstName': 'PatientFirst15', 'Age': 65}
{'PatientID': 17, 'FirstName': 'PatientFirst17', 'Age': 78}
{'PatientID': 20, 'FirstName': 'PatientFirst20', 'Age': 85}
{'PatientID': 23, 'FirstName': 'PatientFirst23', 'Age': 78}
{'PatientID': 32, 'FirstName': 'PatientFirst32', 'Age': 73}
{'PatientID': 36, 'FirstName': 'PatientFirst36', 'Age': 78}
{'PatientID': 40, 'FirstName': 'PatientFirst40', 'Age': 76}
{'PatientID': 42, 'FirstName': 'PatientFirst42', 'Age': 83}
{'PatientID': 45, 'FirstName': 'PatientFirst45', 'Age': 62}
{'PatientID': 47, 'FirstName': 'PatientFirst47', 'Age': 84}
{'PatientID': 51, 'FirstName': 'PatientFirst51', 'Age': 68}
{'PatientID': 54, 'FirstName': 'PatientFirst54', 'Age': 84}
{'PatientID': 62, 'FirstName': 'PatientFirst62', 'Age': 75}
{'PatientID': 67, 'FirstName': 'PatientFirst67', 'Age': 64}
{'PatientID': 70, 'FirstName': 'PatientFirst70', 'Age': 70}
{'PatientID': 72, 'FirstName': 'PatientFirst72', 'Age': 72}
{'PatientID': 74, 'FirstName': 'PatientFirst74', 'Age': 65}
{'PatientID': 76, 'FirstName': 'PatientFirst76', 'Age': 74}
{'PatientID': 78, 'FirstName': 'PatientFirst78', 'Age': 71}
{'PatientID': 79, 'FirstName': 'PatientFirst79', 'Age': 62}
{'PatientID': 82, 'FirstName': 'PatientFirst82', 'Age': 75}
{'PatientID': 83, 'FirstName': 'PatientFirst83', 'Age': 74}
{'PatientID': 84, 'FirstName': 'PatientFirst84', 'Age': 79}
{'PatientID': 85, 'FirstName': 'PatientFirst85', 'Age': 83}
{'PatientID': 99, 'FirstName': 'PatientFirst99', 'Age': 75}
{'PatientID': 102, 'FirstName': 'PatientFirst102', 'Age': 68}
{'PatientID': 106, 'FirstName': 'PatientFirst106', 'Age': 72}
{'PatientID': 107, 'FirstName': 'PatientFirst107', 'Age': 71}
{'PatientID': 108, 'FirstName': 'PatientFirst108', 'Age': 72}
{'PatientID': 113, 'FirstName': 'PatientFirst113', 'Age': 64}
{'PatientID': 115, 'FirstName': 'PatientFirst115', 'Age': 78}
{'PatientID': 118, 'FirstName': 'PatientFirst118', 'Age': 79}
{'PatientID': 121, 'FirstName': 'PatientFirst121', 'Age': 67}
{'PatientID': 122, 'FirstName': 'PatientFirst122', 'Age': 72}
{'PatientID': 123, 'FirstName': 'PatientFirst123', 'Age': 67}
{'PatientID': 124, 'FirstName': 'PatientFirst124', 'Age': 81}
{'PatientID': 128, 'FirstName': 'PatientFirst128', 'Age': 64}
{'PatientID': 134, 'FirstName': 'PatientFirst134', 'Age': 64}
{'PatientID': 135, 'FirstName': 'PatientFirst135', 'Age': 73}
{'PatientID': 138, 'FirstName': 'PatientFirst138', 'Age': 64}
{'PatientID': 142, 'FirstName': 'PatientFirst142', 'Age': 77}
{'PatientID': 144, 'FirstName': 'PatientFirst144', 'Age': 70}
{'PatientID': 145, 'FirstName': 'PatientFirst145', 'Age': 76}
{'PatientID': 149, 'FirstName': 'PatientFirst149', 'Age': 65}
{'PatientID': 150, 'FirstName': 'PatientFirst150', 'Age': 74}
{'PatientID': 151, 'FirstName': 'PatientFirst151', 'Age': 62}
{'PatientID': 153, 'FirstName': 'PatientFirst153', 'Age': 75}
{'PatientID': 155, 'FirstName': 'PatientFirst155', 'Age': 69}
{'PatientID': 156, 'FirstName': 'PatientFirst156', 'Age': 69}
{'PatientID': 158, 'FirstName': 'PatientFirst158', 'Age': 74}
{'PatientID': 164, 'FirstName': 'PatientFirst164', 'Age': 72}
{'PatientID': 165, 'FirstName': 'PatientFirst165', 'Age': 62}
{'PatientID': 166, 'FirstName': 'PatientFirst166', 'Age': 80}
{'PatientID': 167, 'FirstName': 'PatientFirst167', 'Age': 72}
{'PatientID': 169, 'FirstName': 'PatientFirst169', 'Age': 63}
{'PatientID': 172, 'FirstName': 'PatientFirst172', 'Age': 65}
{'PatientID': 174, 'FirstName': 'PatientFirst174', 'Age': 75}
{'PatientID': 175, 'FirstName': 'PatientFirst175', 'Age': 71}
{'PatientID': 176, 'FirstName': 'PatientFirst176', 'Age': 69}
{'PatientID': 181, 'FirstName': 'PatientFirst181', 'Age': 77}
{'PatientID': 184, 'FirstName': 'PatientFirst184', 'Age': 63}
{'PatientID': 185, 'FirstName': 'PatientFirst185', 'Age': 82}
{'PatientID': 186, 'FirstName': 'PatientFirst186', 'Age': 72}
{'PatientID': 188, 'FirstName': 'PatientFirst188', 'Age': 61}
{'PatientID': 190, 'FirstName': 'PatientFirst190', 'Age': 66}
{'PatientID': 192, 'FirstName': 'PatientFirst192', 'Age': 68}
{'PatientID': 195, 'FirstName': 'PatientFirst195', 'Age': 71}
{'PatientID': 196, 'FirstName': 'PatientFirst196', 'Age': 78}
{'PatientID': 199, 'FirstName': 'PatientFirst199', 'Age': 82}
{'PatientID': 2, 'FirstName': 'PatientFirst2', 'Age': 65}
{'PatientID': 8, 'FirstName': 'PatientFirst8', 'Age': 62}
{'PatientID': 12, 'FirstName': 'PatientFirst12', 'Age': 85}
{'PatientID': 13, 'FirstName': 'PatientFirst13', 'Age': 64}
{'PatientID': 14, 'FirstName': 'PatientFirst14', 'Age': 74}
{'PatientID': 15, 'FirstName': 'PatientFirst15', 'Age': 75}
{'PatientID': 18, 'FirstName': 'PatientFirst18', 'Age': 71}
{'PatientID': 19, 'FirstName': 'PatientFirst19', 'Age': 83}
{'PatientID': 21, 'FirstName': 'PatientFirst21', 'Age': 80}
{'PatientID': 22, 'FirstName': 'PatientFirst22', 'Age': 75}
{'PatientID': 23, 'FirstName': 'PatientFirst23', 'Age': 69}
{'PatientID': 24, 'FirstName': 'PatientFirst24', 'Age': 62}
{'PatientID': 29, 'FirstName': 'PatientFirst29', 'Age': 62}
{'PatientID': 31, 'FirstName': 'PatientFirst31', 'Age': 83}
{'PatientID': 33, 'FirstName': 'PatientFirst33', 'Age': 81}
{'PatientID': 37, 'FirstName': 'PatientFirst37', 'Age': 84}
{'PatientID': 40, 'FirstName': 'PatientFirst40', 'Age': 61}
{'PatientID': 46, 'FirstName': 'PatientFirst46', 'Age': 71}
{'PatientID': 48, 'FirstName': 'PatientFirst48', 'Age': 64}
{'PatientID': 50, 'FirstName': 'PatientFirst50', 'Age': 66}
{'PatientID': 52, 'FirstName': 'PatientFirst52', 'Age': 78}
{'PatientID': 57, 'FirstName': 'PatientFirst57', 'Age': 64}
{'PatientID': 58, 'FirstName': 'PatientFirst58', 'Age': 62}
{'PatientID': 61, 'FirstName': 'PatientFirst61', 'Age': 72}
{'PatientID': 64, 'FirstName': 'PatientFirst64', 'Age': 64}
{'PatientID': 68, 'FirstName': 'PatientFirst68', 'Age': 76}
{'PatientID': 70, 'FirstName': 'PatientFirst70', 'Age': 84}
{'PatientID': 71, 'FirstName': 'PatientFirst71', 'Age': 63}
{'PatientID': 78, 'FirstName': 'PatientFirst78', 'Age': 68}
{'PatientID': 80, 'FirstName': 'PatientFirst80', 'Age': 83}
{'PatientID': 86, 'FirstName': 'PatientFirst86', 'Age': 63}
{'PatientID': 89, 'FirstName': 'PatientFirst89', 'Age': 85}
{'PatientID': 90, 'FirstName': 'PatientFirst90', 'Age': 83}
{'PatientID': 91, 'FirstName': 'PatientFirst91', 'Age': 75}
{'PatientID': 95, 'FirstName': 'PatientFirst95', 'Age': 68}
{'PatientID': 97, 'FirstName': 'PatientFirst97', 'Age': 76}
{'PatientID': 98, 'FirstName': 'PatientFirst98', 'Age': 77}
{'PatientID': 101, 'FirstName': 'PatientFirst101', 'Age': 62}
{'PatientID': 107, 'FirstName': 'PatientFirst107', 'Age': 66}
{'PatientID': 111, 'FirstName': 'PatientFirst111', 'Age': 69}
{'PatientID': 118, 'FirstName': 'PatientFirst118', 'Age': 64}
{'PatientID': 119, 'FirstName': 'PatientFirst119', 'Age': 76}
{'PatientID': 120, 'FirstName': 'PatientFirst120', 'Age': 66}
{'PatientID': 121, 'FirstName': 'PatientFirst121', 'Age': 73}
{'PatientID': 123, 'FirstName': 'PatientFirst123', 'Age': 73}
{'PatientID': 125, 'FirstName': 'PatientFirst125', 'Age': 61}
{'PatientID': 128, 'FirstName': 'PatientFirst128', 'Age': 83}
{'PatientID': 131, 'FirstName': 'PatientFirst131', 'Age': 76}
{'PatientID': 138, 'FirstName': 'PatientFirst138', 'Age': 85}
{'PatientID': 143, 'FirstName': 'PatientFirst143', 'Age': 61}
{'PatientID': 145, 'FirstName': 'PatientFirst145', 'Age': 61}
{'PatientID': 149, 'FirstName': 'PatientFirst149', 'Age': 77}
{'PatientID': 154, 'FirstName': 'PatientFirst154', 'Age': 78}
{'PatientID': 158, 'FirstName': 'PatientFirst158', 'Age': 70}
{'PatientID': 160, 'FirstName': 'PatientFirst160', 'Age': 69}
{'PatientID': 164, 'FirstName': 'PatientFirst164', 'Age': 68}
{'PatientID': 165, 'FirstName': 'PatientFirst165', 'Age': 82}
{'PatientID': 168, 'FirstName': 'PatientFirst168', 'Age': 81}
{'PatientID': 173, 'FirstName': 'PatientFirst173', 'Age': 74}
{'PatientID': 175, 'FirstName': 'PatientFirst175', 'Age': 70}
{'PatientID': 177, 'FirstName': 'PatientFirst177', 'Age': 61}
{'PatientID': 178, 'FirstName': 'PatientFirst178', 'Age': 79}
{'PatientID': 179, 'FirstName': 'PatientFirst179', 'Age': 85}
{'PatientID': 182, 'FirstName': 'PatientFirst182', 'Age': 63}
{'PatientID': 186, 'FirstName': 'PatientFirst186', 'Age': 73}
{'PatientID': 187, 'FirstName': 'PatientFirst187', 'Age': 70}
{'PatientID': 188, 'FirstName': 'PatientFirst188', 'Age': 64}
{'PatientID': 190, 'FirstName': 'PatientFirst190', 'Age': 69}
{'PatientID': 191, 'FirstName': 'PatientFirst191', 'Age': 69}
{'PatientID': 196, 'FirstName': 'PatientFirst196', 'Age': 74}
{'PatientID': 197, 'FirstName': 'PatientFirst197', 'Age': 63}
{'PatientID': 200, 'FirstName': 'PatientFirst200', 'Age': 85}

In [6]:
# Q6. Total billing amount per patient
print("Q6 - Total billed per patient")
aggregation_query = [
    {"$group": {
        "_id": "$PatientID",
        "totalBilled": {"$sum": "$TotalAmount"}
    }}
]
for doc in db.billing_records.aggregate(aggregation_query):
    print(doc)
Q6 - Total billed per patient
{'_id': 96, 'totalBilled': 2628.04}
{'_id': 112, 'totalBilled': 1705.48}
{'_id': 136, 'totalBilled': 1946.94}
{'_id': 58, 'totalBilled': 1994.0500000000002}
{'_id': 37, 'totalBilled': 3741.8}
{'_id': 50, 'totalBilled': 3975.96}
{'_id': 178, 'totalBilled': 2250.94}
{'_id': 187, 'totalBilled': 2196.75}
{'_id': 139, 'totalBilled': 1939.58}
{'_id': 70, 'totalBilled': 1897.62}
{'_id': 48, 'totalBilled': 3132.01}
{'_id': 90, 'totalBilled': 2643.6}
{'_id': 114, 'totalBilled': 678.26}
{'_id': 107, 'totalBilled': 3034.9}
{'_id': 129, 'totalBilled': 1983.6}
{'_id': 9, 'totalBilled': 1351.79}
{'_id': 23, 'totalBilled': 4623.94}
{'_id': 164, 'totalBilled': 4059.16}
{'_id': 105, 'totalBilled': 4147.27}
{'_id': 155, 'totalBilled': 3003.34}
{'_id': 135, 'totalBilled': 1797.28}
{'_id': 20, 'totalBilled': 3035.06}
{'_id': 186, 'totalBilled': 1814.67}
{'_id': 8, 'totalBilled': 2699.3}
{'_id': 76, 'totalBilled': 4202.15}
{'_id': 13, 'totalBilled': 3752.61}
{'_id': 78, 'totalBilled': 2929.1}
{'_id': 172, 'totalBilled': 2886.9300000000003}
{'_id': 42, 'totalBilled': 2594.57}
{'_id': 200, 'totalBilled': 2657.27}
{'_id': 95, 'totalBilled': 2220.27}
{'_id': 177, 'totalBilled': 3496.21}
{'_id': 16, 'totalBilled': 3976.88}
{'_id': 128, 'totalBilled': 3315.9}
{'_id': 145, 'totalBilled': 2572.1}
{'_id': 10, 'totalBilled': 3031.61}
{'_id': 188, 'totalBilled': 2972.31}
{'_id': 69, 'totalBilled': 3604.55}
{'_id': 125, 'totalBilled': 3937.32}
{'_id': 101, 'totalBilled': 3988.5}
{'_id': 6, 'totalBilled': 3059.52}
{'_id': 118, 'totalBilled': 1930.05}
{'_id': 25, 'totalBilled': 3291.78}
{'_id': 184, 'totalBilled': 3334.24}
{'_id': 24, 'totalBilled': 1460.74}
{'_id': 183, 'totalBilled': 5760.11}
{'_id': 56, 'totalBilled': 929.62}
{'_id': 191, 'totalBilled': 3454.09}
{'_id': 100, 'totalBilled': 1530.82}
{'_id': 65, 'totalBilled': 2662.5}
{'_id': 176, 'totalBilled': 2491.24}
{'_id': 149, 'totalBilled': 1611.9299999999998}
{'_id': 159, 'totalBilled': 744.9200000000001}
{'_id': 34, 'totalBilled': 2959.04}
{'_id': 170, 'totalBilled': 4197.65}
{'_id': 17, 'totalBilled': 2531.91}
{'_id': 122, 'totalBilled': 2556.72}
{'_id': 63, 'totalBilled': 1108.71}
{'_id': 142, 'totalBilled': 1959.1}
{'_id': 171, 'totalBilled': 1634.31}
{'_id': 173, 'totalBilled': 3809.34}
{'_id': 166, 'totalBilled': 1826.57}
{'_id': 80, 'totalBilled': 2782.48}
{'_id': 92, 'totalBilled': 4738.82}
{'_id': 74, 'totalBilled': 3817.66}
{'_id': 133, 'totalBilled': 2580.57}
{'_id': 15, 'totalBilled': 2593.1}
{'_id': 169, 'totalBilled': 3613.73}
{'_id': 167, 'totalBilled': 3461.1400000000003}
{'_id': 46, 'totalBilled': 2701.42}
{'_id': 60, 'totalBilled': 2705.85}
{'_id': 150, 'totalBilled': 1695.75}
{'_id': 68, 'totalBilled': 3425.13}
{'_id': 62, 'totalBilled': 2635.51}
{'_id': 55, 'totalBilled': 3709.78}
{'_id': 193, 'totalBilled': 2055.89}
{'_id': 124, 'totalBilled': 472.54}
{'_id': 197, 'totalBilled': 1787.03}
{'_id': 54, 'totalBilled': 1462.79}
{'_id': 111, 'totalBilled': 2186.86}
{'_id': 108, 'totalBilled': 2212.98}
{'_id': 123, 'totalBilled': 2956.7}
{'_id': 175, 'totalBilled': 3663.16}
{'_id': 163, 'totalBilled': 2600.5}
{'_id': 185, 'totalBilled': 3993.48}
{'_id': 102, 'totalBilled': 5218.57}
{'_id': 134, 'totalBilled': 4251.38}
{'_id': 140, 'totalBilled': 3197.76}
{'_id': 110, 'totalBilled': 3506.91}
{'_id': 39, 'totalBilled': 3468.22}
{'_id': 40, 'totalBilled': 3008.2999999999997}
{'_id': 14, 'totalBilled': 2715.4}
{'_id': 103, 'totalBilled': 2308.76}
{'_id': 199, 'totalBilled': 3738.08}
{'_id': 132, 'totalBilled': 3585.41}
{'_id': 71, 'totalBilled': 4477.21}
{'_id': 27, 'totalBilled': 3779.57}
{'_id': 64, 'totalBilled': 4763.43}
{'_id': 45, 'totalBilled': 3397.83}
{'_id': 117, 'totalBilled': 2967.14}
{'_id': 88, 'totalBilled': 2419.67}
{'_id': 153, 'totalBilled': 4476.09}
{'_id': 83, 'totalBilled': 1901.71}
{'_id': 182, 'totalBilled': 1687.99}
{'_id': 127, 'totalBilled': 2707.67}
{'_id': 97, 'totalBilled': 1304.11}
{'_id': 26, 'totalBilled': 2332.4}
{'_id': 86, 'totalBilled': 3476.2599999999998}
{'_id': 44, 'totalBilled': 2385.75}
{'_id': 11, 'totalBilled': 1261.85}
{'_id': 146, 'totalBilled': 4325.16}
{'_id': 2, 'totalBilled': 1995.29}
{'_id': 165, 'totalBilled': 2410.0}
{'_id': 30, 'totalBilled': 3744.46}
{'_id': 3, 'totalBilled': 2783.23}
{'_id': 85, 'totalBilled': 3810.29}
{'_id': 22, 'totalBilled': 1976.88}
{'_id': 52, 'totalBilled': 1811.15}
{'_id': 160, 'totalBilled': 3736.95}
{'_id': 38, 'totalBilled': 2327.99}
{'_id': 72, 'totalBilled': 2398.57}
{'_id': 179, 'totalBilled': 3995.71}
{'_id': 66, 'totalBilled': 3905.7200000000003}
{'_id': 82, 'totalBilled': 3752.37}
{'_id': 109, 'totalBilled': 3175.9700000000003}
{'_id': 36, 'totalBilled': 4163.46}
{'_id': 61, 'totalBilled': 1998.59}
{'_id': 5, 'totalBilled': 3955.28}
{'_id': 77, 'totalBilled': 3998.7}
{'_id': 29, 'totalBilled': 3445.12}
{'_id': 180, 'totalBilled': 3844.35}
{'_id': 67, 'totalBilled': 3997.38}
{'_id': 31, 'totalBilled': 1757.6}
{'_id': 35, 'totalBilled': 1963.0900000000001}
{'_id': 104, 'totalBilled': 2937.98}
{'_id': 51, 'totalBilled': 4137.44}
{'_id': 116, 'totalBilled': 2353.21}
{'_id': 190, 'totalBilled': 2121.6}
{'_id': 181, 'totalBilled': 3682.93}
{'_id': 59, 'totalBilled': 2188.14}
{'_id': 49, 'totalBilled': 3286.63}
{'_id': 79, 'totalBilled': 3239.77}
{'_id': 28, 'totalBilled': 2290.44}
{'_id': 32, 'totalBilled': 2391.65}
{'_id': 84, 'totalBilled': 4142.74}
{'_id': 1, 'totalBilled': 1327.4}
{'_id': 119, 'totalBilled': 3991.14}
{'_id': 33, 'totalBilled': 2180.02}
{'_id': 73, 'totalBilled': 1956.23}
{'_id': 21, 'totalBilled': 1784.96}
{'_id': 7, 'totalBilled': 3501.32}
{'_id': 189, 'totalBilled': 3388.17}
{'_id': 192, 'totalBilled': 5625.2699999999995}
{'_id': 99, 'totalBilled': 3099.37}
{'_id': 156, 'totalBilled': 4416.96}
{'_id': 106, 'totalBilled': 3334.01}
{'_id': 157, 'totalBilled': 2375.14}
{'_id': 89, 'totalBilled': 1997.31}
{'_id': 154, 'totalBilled': 3745.42}
{'_id': 194, 'totalBilled': 2806.6}
{'_id': 43, 'totalBilled': 4062.81}
{'_id': 138, 'totalBilled': 2716.63}
{'_id': 126, 'totalBilled': 2723.54}
{'_id': 53, 'totalBilled': 2985.88}
{'_id': 41, 'totalBilled': 2194.15}
{'_id': 19, 'totalBilled': 4538.51}
{'_id': 18, 'totalBilled': 2650.63}
{'_id': 152, 'totalBilled': 2513.5299999999997}
{'_id': 12, 'totalBilled': 2984.4300000000003}
{'_id': 4, 'totalBilled': 2106.13}
{'_id': 94, 'totalBilled': 3090.66}
{'_id': 47, 'totalBilled': 3560.9700000000003}
{'_id': 168, 'totalBilled': 2841.1}
{'_id': 162, 'totalBilled': 3811.89}
{'_id': 148, 'totalBilled': 3592.32}
{'_id': 143, 'totalBilled': 3810.48}
{'_id': 113, 'totalBilled': 4019.92}
{'_id': 87, 'totalBilled': 2805.57}
{'_id': 174, 'totalBilled': 2292.6}
{'_id': 151, 'totalBilled': 2539.04}
{'_id': 198, 'totalBilled': 2417.56}
{'_id': 158, 'totalBilled': 3967.29}
{'_id': 144, 'totalBilled': 1885.8700000000001}
{'_id': 161, 'totalBilled': 1950.06}
{'_id': 141, 'totalBilled': 3056.18}
{'_id': 130, 'totalBilled': 2859.78}
{'_id': 81, 'totalBilled': 2515.16}
{'_id': 75, 'totalBilled': 3269.44}
{'_id': 120, 'totalBilled': 2749.9700000000003}
{'_id': 91, 'totalBilled': 2831.11}
{'_id': 57, 'totalBilled': 2080.64}
{'_id': 98, 'totalBilled': 4006.5}
{'_id': 115, 'totalBilled': 1837.37}
{'_id': 121, 'totalBilled': 1778.79}
{'_id': 131, 'totalBilled': 3223.29}
{'_id': 195, 'totalBilled': 1648.82}
{'_id': 93, 'totalBilled': 2401.19}
{'_id': 137, 'totalBilled': 2765.93}
{'_id': 196, 'totalBilled': 2503.39}
{'_id': 147, 'totalBilled': 3006.9}
In [ ]:
 
In [7]:
# Q2. Find appointments by Doctor ID that is sorted by Date
print("Q2 - Appointments for DoctorID=101 sorted by Date")
explain_cmd = {
    "find": "appointments",
    "filter": {"DoctorID": 101},
    "sort": {"Date": -1}
}
stats = db.command("explain", explain_cmd, verbosity="executionStats")  # Measures query execution performance
print(f"executionTimeMillis: {stats['executionStats']['executionTimeMillis']} ms")  # Prints execution time
for appt in db.appointments.find({"DoctorID": 101}, {"_id": 0, "DoctorID": 1, "Date": 1}).sort("Date", -1):
    print(appt)
print()
Q2 - Appointments for DoctorID=101 sorted by Date
executionTimeMillis: 0 ms


In [8]:
# Q3. Count how many prescriptions are for 'Paracetamol'
print("Q3 - Count of 'Paracetamol' prescriptions")
stats = db.command({
    "explain": {
        "count": "prescriptions",
        "query": {"Medication": "Paracetamol"}
    },
    "verbosity": "executionStats"
})  # Measures performance of count query
print(f"executionTimeMillis: {stats['executionStats']['executionTimeMillis']} ms")  # Prints execution time
count = db.prescriptions.count_documents({"Medication": "Paracetamol"})
print(f"Total prescriptions for Paracetamol: {count}\n")
Q3 - Count of 'Paracetamol' prescriptions
executionTimeMillis: 1 ms
Total prescriptions for Paracetamol: 698

In [9]:
# Q4. Aggregate: Appointments grouped by department
print("Q4 - Appointments per Department")
pipeline = [
    {"$lookup": {  # Join with doctors collection
        "from": "doctors",
        "localField": "DoctorID",
        "foreignField": "DoctorID",
        "as": "doctor_info"
    }},
    {"$unwind": "$doctor_info"},  # Flatten array from $lookup
    {"$group": {  # Group by department ID
        "_id": "$doctor_info.DepartmentID",
        "TotalAppointments": {"$sum": 1}
    }}
]
stats = db.command({
    "explain": {
        "aggregate": "appointments",
        "pipeline": pipeline,
        "cursor": {}
    },
    "verbosity": "executionStats"
})  # Measures aggregation execution performance
execution_time = stats['stages'][0]['$cursor']['executionStats']['executionTimeMillis']
print(f"executionTimeMillis: {execution_time} ms")
for result in db.appointments.aggregate(pipeline):
    print(result)
print()
Q4 - Appointments per Department
executionTimeMillis: 423 ms
{'_id': 8, 'TotalAppointments': 1385}
{'_id': 10, 'TotalAppointments': 1591}
{'_id': 6, 'TotalAppointments': 1155}
{'_id': 2, 'TotalAppointments': 1771}
{'_id': 7, 'TotalAppointments': 1275}
{'_id': 1, 'TotalAppointments': 1886}
{'_id': 9, 'TotalAppointments': 1019}
{'_id': 3, 'TotalAppointments': 1894}
{'_id': 4, 'TotalAppointments': 1349}
{'_id': 5, 'TotalAppointments': 1375}

In [10]:
# Q5. Find doctors who have more than 10 patients assigned
print("Q5 - Doctors with >10 patients")
pipeline = [
    {"$group": {  # Group by doctor ID and count patients
        "_id": "$DoctorID",
        "TotalPatients": {"$sum": 1}
    }},
    {"$match": {"TotalPatients": {"$gt": 10}}},  # Only include those with more than 10
    {"$sort": {"TotalPatients": -1}}  # Sort descending
]
stats = db.command({
    "explain": {
        "aggregate": "patients",
        "pipeline": pipeline,
        "cursor": {}
    },
    "verbosity": "executionStats"
})  # Measures performance of aggregation
execution_time = stats['stages'][0]['$cursor']['executionStats']['executionTimeMillis']
print(f"executionTimeMillis: {execution_time} ms")
for result in db.patients.aggregate(pipeline):
    print(result)
print()
Q5 - Doctors with >10 patients
executionTimeMillis: 1 ms
{'_id': None, 'TotalPatients': 1400}

In [11]:
# Q8. Total number of prescriptions per patient
print("\nQ8 - Prescriptions per patient")
aggregation_query = [
    {"$group": {
        "_id": "$PatientID",
        "prescriptionCount": {"$sum": 1}
    }}
]
for doc in db.prescriptions.aggregate(aggregation_query):
    print(doc)
Q8 - Prescriptions per patient
{'_id': 96, 'prescriptionCount': 8}
{'_id': 112, 'prescriptionCount': 6}
{'_id': 136, 'prescriptionCount': 9}
{'_id': 58, 'prescriptionCount': 5}
{'_id': 37, 'prescriptionCount': 10}
{'_id': 50, 'prescriptionCount': 11}
{'_id': 178, 'prescriptionCount': 9}
{'_id': 187, 'prescriptionCount': 7}
{'_id': 139, 'prescriptionCount': 12}
{'_id': 70, 'prescriptionCount': 6}
{'_id': 48, 'prescriptionCount': 6}
{'_id': 90, 'prescriptionCount': 12}
{'_id': 9, 'prescriptionCount': 7}
{'_id': 114, 'prescriptionCount': 8}
{'_id': 129, 'prescriptionCount': 9}
{'_id': 107, 'prescriptionCount': 4}
{'_id': 23, 'prescriptionCount': 5}
{'_id': 164, 'prescriptionCount': 7}
{'_id': 135, 'prescriptionCount': 8}
{'_id': 105, 'prescriptionCount': 5}
{'_id': 20, 'prescriptionCount': 6}
{'_id': 155, 'prescriptionCount': 5}
{'_id': 186, 'prescriptionCount': 6}
{'_id': 8, 'prescriptionCount': 13}
{'_id': 78, 'prescriptionCount': 3}
{'_id': 76, 'prescriptionCount': 4}
{'_id': 13, 'prescriptionCount': 8}
{'_id': 172, 'prescriptionCount': 8}
{'_id': 95, 'prescriptionCount': 8}
{'_id': 200, 'prescriptionCount': 7}
{'_id': 42, 'prescriptionCount': 7}
{'_id': 177, 'prescriptionCount': 8}
{'_id': 16, 'prescriptionCount': 8}
{'_id': 145, 'prescriptionCount': 11}
{'_id': 128, 'prescriptionCount': 7}
{'_id': 10, 'prescriptionCount': 4}
{'_id': 188, 'prescriptionCount': 8}
{'_id': 69, 'prescriptionCount': 8}
{'_id': 101, 'prescriptionCount': 8}
{'_id': 125, 'prescriptionCount': 7}
{'_id': 25, 'prescriptionCount': 7}
{'_id': 6, 'prescriptionCount': 7}
{'_id': 184, 'prescriptionCount': 8}
{'_id': 118, 'prescriptionCount': 5}
{'_id': 24, 'prescriptionCount': 7}
{'_id': 183, 'prescriptionCount': 11}
{'_id': 56, 'prescriptionCount': 5}
{'_id': 191, 'prescriptionCount': 6}
{'_id': 100, 'prescriptionCount': 4}
{'_id': 176, 'prescriptionCount': 5}
{'_id': 65, 'prescriptionCount': 5}
{'_id': 149, 'prescriptionCount': 11}
{'_id': 34, 'prescriptionCount': 7}
{'_id': 159, 'prescriptionCount': 7}
{'_id': 17, 'prescriptionCount': 5}
{'_id': 170, 'prescriptionCount': 8}
{'_id': 122, 'prescriptionCount': 6}
{'_id': 63, 'prescriptionCount': 5}
{'_id': 142, 'prescriptionCount': 7}
{'_id': 171, 'prescriptionCount': 4}
{'_id': 173, 'prescriptionCount': 3}
{'_id': 166, 'prescriptionCount': 11}
{'_id': 193, 'prescriptionCount': 9}
{'_id': 92, 'prescriptionCount': 10}
{'_id': 74, 'prescriptionCount': 8}
{'_id': 133, 'prescriptionCount': 12}
{'_id': 60, 'prescriptionCount': 10}
{'_id': 15, 'prescriptionCount': 4}
{'_id': 46, 'prescriptionCount': 7}
{'_id': 150, 'prescriptionCount': 7}
{'_id': 197, 'prescriptionCount': 7}
{'_id': 54, 'prescriptionCount': 6}
{'_id': 68, 'prescriptionCount': 6}
{'_id': 62, 'prescriptionCount': 7}
{'_id': 80, 'prescriptionCount': 10}
{'_id': 167, 'prescriptionCount': 8}
{'_id': 55, 'prescriptionCount': 9}
{'_id': 169, 'prescriptionCount': 3}
{'_id': 124, 'prescriptionCount': 4}
{'_id': 111, 'prescriptionCount': 4}
{'_id': 123, 'prescriptionCount': 8}
{'_id': 39, 'prescriptionCount': 8}
{'_id': 175, 'prescriptionCount': 8}
{'_id': 163, 'prescriptionCount': 7}
{'_id': 102, 'prescriptionCount': 12}
{'_id': 185, 'prescriptionCount': 9}
{'_id': 134, 'prescriptionCount': 7}
{'_id': 108, 'prescriptionCount': 6}
{'_id': 110, 'prescriptionCount': 3}
{'_id': 103, 'prescriptionCount': 11}
{'_id': 40, 'prescriptionCount': 7}
{'_id': 14, 'prescriptionCount': 7}
{'_id': 140, 'prescriptionCount': 7}
{'_id': 132, 'prescriptionCount': 7}
{'_id': 199, 'prescriptionCount': 6}
{'_id': 71, 'prescriptionCount': 8}
{'_id': 27, 'prescriptionCount': 5}
{'_id': 64, 'prescriptionCount': 12}
{'_id': 45, 'prescriptionCount': 6}
{'_id': 153, 'prescriptionCount': 7}
{'_id': 88, 'prescriptionCount': 8}
{'_id': 182, 'prescriptionCount': 13}
{'_id': 83, 'prescriptionCount': 9}
{'_id': 117, 'prescriptionCount': 4}
{'_id': 127, 'prescriptionCount': 7}
{'_id': 97, 'prescriptionCount': 6}
{'_id': 26, 'prescriptionCount': 7}
{'_id': 86, 'prescriptionCount': 7}
{'_id': 44, 'prescriptionCount': 7}
{'_id': 11, 'prescriptionCount': 5}
{'_id': 146, 'prescriptionCount': 5}
{'_id': 2, 'prescriptionCount': 9}
{'_id': 165, 'prescriptionCount': 9}
{'_id': 3, 'prescriptionCount': 8}
{'_id': 30, 'prescriptionCount': 4}
{'_id': 85, 'prescriptionCount': 10}
{'_id': 22, 'prescriptionCount': 7}
{'_id': 52, 'prescriptionCount': 3}
{'_id': 160, 'prescriptionCount': 8}
{'_id': 38, 'prescriptionCount': 7}
{'_id': 72, 'prescriptionCount': 5}
{'_id': 179, 'prescriptionCount': 8}
{'_id': 66, 'prescriptionCount': 5}
{'_id': 61, 'prescriptionCount': 5}
{'_id': 109, 'prescriptionCount': 7}
{'_id': 36, 'prescriptionCount': 10}
{'_id': 82, 'prescriptionCount': 2}
{'_id': 5, 'prescriptionCount': 11}
{'_id': 77, 'prescriptionCount': 6}
{'_id': 29, 'prescriptionCount': 8}
{'_id': 180, 'prescriptionCount': 6}
{'_id': 67, 'prescriptionCount': 3}
{'_id': 35, 'prescriptionCount': 8}
{'_id': 31, 'prescriptionCount': 1}
{'_id': 104, 'prescriptionCount': 7}
{'_id': 51, 'prescriptionCount': 5}
{'_id': 116, 'prescriptionCount': 8}
{'_id': 190, 'prescriptionCount': 9}
{'_id': 181, 'prescriptionCount': 8}
{'_id': 59, 'prescriptionCount': 11}
{'_id': 28, 'prescriptionCount': 9}
{'_id': 79, 'prescriptionCount': 8}
{'_id': 49, 'prescriptionCount': 4}
{'_id': 32, 'prescriptionCount': 3}
{'_id': 84, 'prescriptionCount': 8}
{'_id': 119, 'prescriptionCount': 8}
{'_id': 33, 'prescriptionCount': 8}
{'_id': 1, 'prescriptionCount': 6}
{'_id': 73, 'prescriptionCount': 7}
{'_id': 192, 'prescriptionCount': 5}
{'_id': 21, 'prescriptionCount': 6}
{'_id': 7, 'prescriptionCount': 7}
{'_id': 189, 'prescriptionCount': 6}
{'_id': 99, 'prescriptionCount': 7}
{'_id': 156, 'prescriptionCount': 9}
{'_id': 89, 'prescriptionCount': 8}
{'_id': 157, 'prescriptionCount': 9}
{'_id': 106, 'prescriptionCount': 6}
{'_id': 154, 'prescriptionCount': 9}
{'_id': 43, 'prescriptionCount': 7}
{'_id': 194, 'prescriptionCount': 6}
{'_id': 130, 'prescriptionCount': 4}
{'_id': 152, 'prescriptionCount': 8}
{'_id': 53, 'prescriptionCount': 11}
{'_id': 138, 'prescriptionCount': 6}
{'_id': 91, 'prescriptionCount': 7}
{'_id': 126, 'prescriptionCount': 6}
{'_id': 18, 'prescriptionCount': 2}
{'_id': 12, 'prescriptionCount': 5}
{'_id': 113, 'prescriptionCount': 6}
{'_id': 162, 'prescriptionCount': 5}
{'_id': 168, 'prescriptionCount': 9}
{'_id': 47, 'prescriptionCount': 11}
{'_id': 151, 'prescriptionCount': 11}
{'_id': 198, 'prescriptionCount': 6}
{'_id': 143, 'prescriptionCount': 5}
{'_id': 148, 'prescriptionCount': 6}
{'_id': 87, 'prescriptionCount': 3}
{'_id': 174, 'prescriptionCount': 7}
{'_id': 161, 'prescriptionCount': 6}
{'_id': 4, 'prescriptionCount': 8}
{'_id': 158, 'prescriptionCount': 6}
{'_id': 141, 'prescriptionCount': 4}
{'_id': 144, 'prescriptionCount': 4}
{'_id': 121, 'prescriptionCount': 7}
{'_id': 94, 'prescriptionCount': 1}
{'_id': 81, 'prescriptionCount': 7}
{'_id': 75, 'prescriptionCount': 5}
{'_id': 120, 'prescriptionCount': 5}
{'_id': 41, 'prescriptionCount': 2}
{'_id': 57, 'prescriptionCount': 13}
{'_id': 98, 'prescriptionCount': 11}
{'_id': 115, 'prescriptionCount': 9}
{'_id': 19, 'prescriptionCount': 4}
{'_id': 93, 'prescriptionCount': 10}
{'_id': 131, 'prescriptionCount': 3}
{'_id': 195, 'prescriptionCount': 4}
{'_id': 137, 'prescriptionCount': 8}
{'_id': 196, 'prescriptionCount': 9}
{'_id': 147, 'prescriptionCount': 10}
In [12]:
# Q7. Total number of appointments per doctor
print("\nQ7 - Appointments per doctor")
aggregation_query = [
    {"$group": {
        "_id": "$DoctorID",
        "appointmentCount": {"$sum": 1}
    }}
]
for doc in db.appointments.aggregate(aggregation_query):
    print(doc)
Q7 - Appointments per doctor
{'_id': 9, 'appointmentCount': 102}
{'_id': 17, 'appointmentCount': 94}
{'_id': 10, 'appointmentCount': 104}
{'_id': 2, 'appointmentCount': 94}
{'_id': 3, 'appointmentCount': 103}
{'_id': 15, 'appointmentCount': 113}
{'_id': 20, 'appointmentCount': 110}
{'_id': 14, 'appointmentCount': 108}
{'_id': 6, 'appointmentCount': 119}
{'_id': 18, 'appointmentCount': 102}
{'_id': 19, 'appointmentCount': 106}
{'_id': 12, 'appointmentCount': 100}
{'_id': 4, 'appointmentCount': 110}
{'_id': 13, 'appointmentCount': 97}
{'_id': 8, 'appointmentCount': 107}
{'_id': 1, 'appointmentCount': 106}
{'_id': 16, 'appointmentCount': 115}
{'_id': 7, 'appointmentCount': 103}
{'_id': 5, 'appointmentCount': 96}
{'_id': 11, 'appointmentCount': 111}
In [13]:
# Q9. Top 5 most frequently prescribed medications
print("\nQ9 - Top 5 most common medications")
aggregation_query = [
    {"$group": {
        "_id": "$Medication",
        "count": {"$sum": 1}
    }},
    {"$sort": {"count": -1}},  # Sort by count descending
    {"$limit": 5}  # Limit to top 5
]
for doc in db.prescriptions.aggregate(aggregation_query):
    print(doc)

print("\nAll operations complete.")
Q9 - Top 5 most common medications
{'_id': 'Ibuprofen', 'count': 702}
{'_id': 'Paracetamol', 'count': 698}

All operations complete.