code: def process_raw_file(self, raw_file_name, field_names):
          
          #num_outouts = 0
          dist_vals = []
          group_dat = []
          events = []
          #facts = []
          
          with open(raw_file_name) as csvfile:
              reader = csv.DictReader(csvfile, fieldnames = field_names)
              for num_lines, row in enumerate(reader):
                  #print('row = =',row)
                  for col_num, fld in enumerate(field_names):
                      try:
                          #print('self.maps[', col_num, '] = ', self.maps[col_num])
                          if self.maps[col_num].val == 'group_distinct':
                              group_dat.append(str(row[fld]))
                          elif self.maps[col_num].val == 'event_date':
                              events.append(str(row[fld]))
  
                      except Exception as ex:
                          print('parsing error - shouldnt really be splitting using a comma anyway!', str(ex))
          
          dist_vals = sorted(list(set(group_dat)))
          
          return num_lines, dist_vals, group_dat, sorted(list(set(events)))
docs: takes the filename to be read and uses the maps setup 
          on class instantiation to process the file.
          This is a top level function and uses self.maps which 
          should be the column descriptions (in order).