I think you could use "spatial inheritance" via a form calculation to auto-calculate/fetch the survey code. Since you have the polygon layer in the map and you have the new point, line, or polygon, you can do a spatial intersection to find the survey area polygon the current feature is in. Then you can extract the code attribute.
Form calculations only run when the field is non-editable in the form. So it should work for your foreign key field. Form calculation authoring is supported in ArcGIS Online and will be coming to ArcGIS Enterprise 11 later this summer.
I'm working on a blog post that contains an expression similar to what you want to do, you should be able to tweak it to your data and have it work.
// Create a feature set using the 'Regions' layer in the map
var regions = FeatureSetByName($map, 'Regions')
// Intersect the current location with the regions and
// get the first region
var region = First(Intersects($feature, regions))
// If the current location does intersect a feature,
// return the name of the region. Otherwise, return null
if (!IsEmpty(region)) {
return region['name']
} else {
return null
}
Hope that helps.