When you run mapping and provide the variable to receive the data, you're actually setting the value of a variable...not filling the observable. So you're overriding the observable entirely.
Check out http://jsfiddle.net/BWgwt/3/
var visitDetailsVm = new VisitDetails();
visitDetailsVm.transfer(ko.mapping.fromJS(data));
var mappedAmas = ko.utils.arrayMap(amadata, function(ama) {
return ko.mapping.fromJS(ama);
});
visitDetailsVm.amas(mappedAmas);
With the observable array, you'd actually want to map each of the instances in your data array then fill your observable array with the mapped results.