If all image patches fit into memory, you could create a large tensor and directly index them.
If that’s not the case, you might create a custom Dataset for each stored file and e.g. lazily load the data in its __getitem__.
Assuming you don’t want to shuffle the dataset, you could also use a modulo operation to check, which file to load and which patch should be loaded via this pseudo code:
def __getitem__(self, index):
    file_idx = index // 112
    patch_index = index % 112
    # check of correct file is already open
    if self.loaded_data_path != self.data_path[file_idx]:
        # load file
    patch = self.loaded_data[patch_index]
    return patch

Note that shuffling the data (and thus the index) will open and close a lot of files, which might hurt the performance.