public ISearchParametersServiceOutcome ProcessOperationSearchParameters( ISearchParameterGeneric SearchParameterGeneric, SearchParameterServiceType SearchParameterServiceType, OperationClass OperationClass) { return(ProcessSearchParameters(SearchParameterGeneric, SearchParameterServiceType, null, OperationClass)); }
private List <DtoServiceSearchParameterLight> GetSupportedSearchParameters(SearchParameterServiceType SearchParameterServiceType, OperationClass OperationClass, string ResourceType) { List <DtoServiceSearchParameterLight> DtoSupportedServiceSearchParameterList = new List <DtoServiceSearchParameterLight>(); //For non Resource URL values, e.g _format, _summary if ((SearchParameterServiceType & SearchParameterServiceType.Base) == SearchParameterServiceType.Base) { DtoSupportedServiceSearchParameterList.AddRange(ServiceSearchParameterFactory.BaseSearchParameters()); } //For Bundle URL Parameters e.g page, _sort if ((SearchParameterServiceType & SearchParameterServiceType.Bundle) == SearchParameterServiceType.Bundle) { DtoSupportedServiceSearchParameterList.AddRange(ServiceSearchParameterFactory.BundleSearchParameters()); } //For $Operation URL Parameters e.g profile, mode if ((SearchParameterServiceType & SearchParameterServiceType.Operation) == SearchParameterServiceType.Operation) { DtoSupportedServiceSearchParameterList.AddRange(ServiceSearchParameterFactory.OperationSearchParameters(OperationClass)); } //For Resource search parameters if ((SearchParameterServiceType & SearchParameterServiceType.Resource) == SearchParameterServiceType.Resource) { DtoSupportedServiceSearchParameterList.AddRange(IServiceSearchParameterCache.GetSearchParameterForResource(ResourceType)); } return(DtoSupportedServiceSearchParameterList); }
public ISearchParametersServiceOutcome ProcessResourceSearchParameters( ISearchParameterGeneric SearchParameterGeneric, SearchParameterServiceType SearchParameterServiceType, FHIRAllTypes?ResourceType) { return(ProcessSearchParameters(SearchParameterGeneric, SearchParameterServiceType, ResourceType, null)); }
private List <DtoServiceSearchParameterLight> GetSupportedSearchParameters(SearchParameterServiceType SearchParameterServiceType, OperationClass OperationClass, FHIRAllTypes?ResourceType) { string ResourceString = string.Empty; if (ResourceType.HasValue) { ResourceString = ResourceType.Value.GetLiteral(); } return(GetSupportedSearchParameters(SearchParameterServiceType, OperationClass, ResourceString)); }
public ISearchParametersServiceOutcome ProcessSearchParameters( ISearchParameterGeneric SearchParameterGeneric, SearchParameterServiceType SearchParameterServiceType, FHIRAllTypes?ResourceType, OperationClass OperationClass) { if (SearchParameterServiceType == SearchParameterServiceType.None) { throw new NullReferenceException("Server error: SearchParameterServiceType can not be 'None'."); } if (SearchParameterGeneric == null) { throw new NullReferenceException("Server error: SearchParameterGeneric can not be null."); } if (((SearchParameterServiceType & SearchParameterServiceType.Resource) == SearchParameterServiceType.Resource) && ResourceType == null) { throw new NullReferenceException("Server error: ResourceType can not be null when enum SearchParameterServiceType is set to Resource."); } if (((SearchParameterServiceType & SearchParameterServiceType.Operation) == SearchParameterServiceType.Operation) && OperationClass == null) { throw new NullReferenceException("Server error: OperationClass can not be null when enum SearchParameterServiceType is set to Operation."); } _ResourceType = ResourceType; _OperationClass = OperationClass; _SearchParameterServiceType = SearchParameterServiceType; _SearchParametersServiceOutcome = ISearchParametersServiceOutcomeFactory.CreateSearchParametersServiceOutcome(); _SearchParametersServiceOutcome.SearchParameters = new PyroSearchParameters(); _SearchParametersServiceOutcome.SearchParameters.ResourceTarget = _ResourceType; _SearchParametersServiceOutcome.SearchParameters.SearchParametersList = new List <ISearchParameterBase>(); _SearchParametersServiceOutcome.SearchParameters.UnspportedSearchParameterList = new List <UnspportedSearchParameter>(); _SearchParametersServiceOutcome.SearchParameters.CountOfRecordsRequested = SearchParameterGeneric.Count; _SearchParametersServiceOutcome.SearchParameters.SummaryType = SearchParameterGeneric.SummaryType; //Parse Include and RevInclude parameters ProcessIncludeSearchParameters(SearchParameterGeneric.Include); ProcessIncludeSearchParameters(SearchParameterGeneric.RevInclude); foreach (var Parameter in SearchParameterGeneric.ParameterList) { //We will just ignore an empty parameter such as this last '&' URL?family=Smith&given=John& if (Parameter.Item1 + Parameter.Item2 != string.Empty) { if (Parameter.Item1.Contains(SearchParams.SEARCH_CHAINSEPARATOR)) { ChainSearchProcessing(Parameter); } else { NormalSearchProcessing(Parameter); } } } //resolve Sort order parameters if (SearchParameterGeneric.Sort != null) { _SearchParametersServiceOutcome.SearchParameters.SortList = new List <PyroSearchParameters.Sort>(); foreach (var SortItem in SearchParameterGeneric.Sort) { string SearchParameterName = SortItem.Item1.Trim(); DtoServiceSearchParameterLight oSupportedSearchParameter = _DtoSupportedSearchParametersList.SingleOrDefault(x => x.Name == SearchParameterName); _SearchParametersServiceOutcome.SearchParameters.SortList.Add(new PyroSearchParameters.Sort() { Value = oSupportedSearchParameter, SortOrderType = SortItem.Item2 }); } } return(_SearchParametersServiceOutcome); }