public async Task AddSearchParameterAsync(ITypedElement searchParam) { try { _searchParameterDefinitionManager.AddNewSearchParameters(new List <ITypedElement>() { searchParam }); var searchParameterUrl = searchParam.GetStringScalar("url"); await _searchParameterStatusManager.AddSearchParameterStatusAsync(new List <string>() { searchParameterUrl }); } catch (FhirException fex) { fex.Issues.Add(new OperationOutcomeIssue( OperationOutcomeConstants.IssueSeverity.Error, OperationOutcomeConstants.IssueType.Exception, Core.Resources.CustomSearchCreateError)); throw; } catch (Exception ex) { var customSearchException = new ConfigureCustomSearchException(Core.Resources.CustomSearchCreateError); customSearchException.Issues.Add(new OperationOutcomeIssue( OperationOutcomeConstants.IssueSeverity.Error, OperationOutcomeConstants.IssueType.Exception, ex.Message)); throw customSearchException; } }
public async Task AddSearchParameterAsync(ITypedElement searchParam) { try { // verify the parameter is supported before continuing var searchParameterWrapper = new SearchParameterWrapper(searchParam); var searchParameterInfo = new SearchParameterInfo(searchParameterWrapper); (bool Supported, bool IsPartiallySupported)supportedResult = _searchParameterSupportResolver.IsSearchParameterSupported(searchParameterInfo); if (!supportedResult.Supported) { throw new SearchParameterNotSupportedException(searchParameterInfo.Url); } // check data store specific support for SearchParameter if (!_dataStoreSearchParameterValidator.ValidateSearchParameter(searchParameterInfo, out var errorMessage)) { throw new SearchParameterNotSupportedException(errorMessage); } _searchParameterDefinitionManager.AddNewSearchParameters(new List <ITypedElement>() { searchParam }); var searchParameterUrl = searchParam.GetStringScalar("url"); await _searchParameterStatusManager.AddSearchParameterStatusAsync(new List <string>() { searchParameterWrapper.Url }); } catch (FhirException fex) { fex.Issues.Add(new OperationOutcomeIssue( OperationOutcomeConstants.IssueSeverity.Error, OperationOutcomeConstants.IssueType.Exception, Core.Resources.CustomSearchCreateError)); throw; } catch (Exception ex) { var customSearchException = new ConfigureCustomSearchException(Core.Resources.CustomSearchCreateError); customSearchException.Issues.Add(new OperationOutcomeIssue( OperationOutcomeConstants.IssueSeverity.Error, OperationOutcomeConstants.IssueType.Exception, ex.Message)); throw customSearchException; } }