private SavedMappings processISAFields(IsaFieldMappingsDocument isaDocument) {
    SavedMappings mappings = new SavedMappings();

    IsaFieldMappings isaFields = isaDocument.getIsaFieldMappings();

    for (IsaField field : isaFields.getIsaFieldArray()) {

      MappingField isaFieldBeingMappedTo = new MappingField(field.getColumnName());

      ISAFieldMapping currentMapping = new ISAFieldMapping();
      for (FieldMapping fieldMapping : field.getFieldMappingArray()) {
        processFieldMappings(
            fieldMapping.getMappedFieldArray(), ISAFieldMapping.FIELD, currentMapping);
      }

      if (field.sizeOfDateMappingArray() > 0) {
        for (DateMapping dateMapping : field.getDateMappingArray()) {
          processFieldMappings(
              dateMapping.getMappedFieldArray(), ISAFieldMapping.DATE, currentMapping);
        }
      }

      if (field.sizeOfProviderMappingArray() > 0) {
        for (ProviderMapping providerMapping : field.getProviderMappingArray()) {
          processFieldMappings(
              providerMapping.getMappedFieldArray(), ISAFieldMapping.PERFORMER, currentMapping);
        }
      }

      if (field.sizeOfUnitMappingArray() > 0) {
        for (UnitMapping unitMapping : field.getUnitMappingArray()) {
          processFieldMappings(
              unitMapping.getMappedFieldArray(), ISAFieldMapping.UNIT, currentMapping);
        }
      }

      mappings.addMapping(isaFieldBeingMappedTo, currentMapping);
    }

    return mappings;
  }