This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The documentation for this error isn't very good, unfortunately. The problem is that you are calling remove() directly on the collection while you are iterating that collection. If you want to modify a collection while iterating through it, you should use methods of the iterator, not of the collection. In this case you don't see the Iterator, because it's hidden by the for loop. However to do what you want, you will have to replace the loop with an old-fashioned iteration loop, so that you can see the iterator:
Here the key point is that we're no longer using getPatients().remove(patient) - we're using it.remove(). The Iterator knows how to safely remove objects while iterating. The Collection doesn't.