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);
                    }
                }
            }
        }