It looks like a simple matter of creating and sorting hashes. If the volume of data is even somewhat large (5K+ records), use a database or you could run into memory problems.
The straight forward approach I would take for small record sets would be to create a hash for each field you want to sort on, making that field the key and the value being another hash of all the data related to that key. You will end up with a lot of data duplication.
The alternative is a bit more complex, creating one hash (keyed on SSN) containing hashes of all data. Then you would have to create some sort routines. Actually, this would not be too difficult if the sample data is anything like the real stuff.