private void ProcessResult(IFHIRParam fhirParam, ResourceData resourceData, List <dynamic> searchResults) { var mainEntityInResult = searchResults.FirstOrDefault(); if (mainEntityInResult == null) { return; } dynamic mainEntity; if (mainEntityInResult is System.Collections.IEnumerable) { mainEntity = mainEntityInResult[0]; } else { mainEntity = mainEntityInResult; } var resourceEntityType = fhirParam.TypeName.GetHL7ModelType(); var dataType = TypeExtensions.ConvertToListOrType(resourceEntityType, mainEntity); var data = this._mapper.Map(mainEntity, mainEntity.GetType(), dataType); AppendWithSubsequentData(resourceEntityType, data, searchResults); resourceData.Resource = data; }
private void AppendWithSubsequentData(Type resourceEntityType, dynamic dataItem, List <dynamic> searchResults) { for (int resIndex = 1; resIndex < searchResults.Count; resIndex++) { var result = searchResults[resIndex]; if (result != null) { if (result is System.Collections.IEnumerable) { foreach (var resultData in result) { if (resultData != null) { var dataType = TypeExtensions.ConvertToListOrType(resourceEntityType, resultData); this._mapper.Map(resultData, dataItem, resultData.GetType(), dataType); } } } else { var dataType = TypeExtensions.ConvertToListOrType(resourceEntityType, result); this._mapper.Map(result, dataItem, result.GetType(), dataType); } } } }