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.