Arrays in NET Framework start at index zero and end at Count - 1.
In your loop
For counter = 0 To PatientCollection.Count
you stop at Count, so the last valued assumed by counter
is not valid.
You need to change that loop to
For counter = 0 To PatientCollection.Count - 1
The property Count for an array represents the number of items contained in the array. So, if the first index is zero, the last one should be Count - 1