Shoud the user be able to manipulate a list before it is fully populated?

I am facing a problem with a desktop app that, upon startup, should display a large list of items (Patients in a medical record system).

Typical uses of that list would be as usual:

  • Scroll up and down
  • Sort by column
  • Filter by typing

Since the items in the list are created from the content of files in a folder, it takes a variable amount of time for the list to populate.

Besides, while the list is populating, and disregarding the order in which is sorted, is quite common that you try to select an item by clicking, just to be surprised by the sudden appearance of a newly-loaded item.

So I believe there are some possibilities, all of them full of drawbacks:

  1. I can display a "loading" progress view instead of the list, or even overlay the loading list with some progress indicator. This has a drawback that the user cannot do anything really useful with the app until the item list is fully loaded;
  2. I can just deliver the list to the user right away, while it is being populated. This allow the user to immediately manipulate it, but has what I feel like a significant drawback, since a search or filtering might be made and the expected result not returned, giving the impression that the item does not exist, while instead it just wasn't loaded yet.

Currently I cannot figure out any other interesting alternative, and I wonder if there is some sort of design pattern or best/current/accepted practice to solve this problem.