public async Task <Spine> GetProviderDetails(string odsCode)
        {
            var fhirApiQuery = _configurationService.GetFhirApiQueryConfiguration(Enumerations.FhirQueryTypes.GetRoutingReliabilityDetailsFromSDS.ToString());
            var query        = fhirApiQuery.QueryText.SearchAndReplace(new Dictionary <string, string> {
                { "{odsCode}", Regex.Escape(odsCode) }
            });

            var tokenSource = new CancellationTokenSource();
            var token       = tokenSource.Token;

            var spineProviderDetails = await _fhirRequestExecution.ExecuteFhirQuery <DTO.Response.Fhir.Spine>(query, _spineOptionsDelegate.CurrentValue.SpineFhirApiSystemsRegisterFqdn, token);

            if (spineProviderDetails != null && spineProviderDetails.Entries != null && spineProviderDetails.Entries.Count > 0)
            {
                var spineProviderAsId = await GetGpProviderAsIdByOdsCodeAndPartyKey(odsCode, spineProviderDetails.PartyKey);

                var spine = new Spine
                {
                    PartyKey = spineProviderDetails.PartyKey,
                    AsId     = spineProviderAsId?.AsId,
                    OdsCode  = odsCode,
                    ManufacturingOrganisationOdsCode = spineProviderAsId?.ManufacturingOrganisationOdsCode,
                    EndpointAddress = spineProviderDetails.EndpointAddress,
                    ProductName     = await GetProductName(spineProviderAsId?.ManufacturingOrganisationOdsCode)
                };
                return(spine);
            }
            return(null);
        }
        public async Task <Spine> GetConsumerDetails(string odsCode)
        {
            if (!string.IsNullOrEmpty(odsCode))
            {
                var fhirApiQuery = _configurationService.GetFhirApiQueryConfiguration(Enumerations.FhirQueryTypes.GetAccreditedSystemDetailsForConsumerFromSDS.ToString());
                var query        = fhirApiQuery.QueryText.SearchAndReplace(new Dictionary <string, string> {
                    { "{odsCode}", Regex.Escape(odsCode) }
                });
                var tokenSource          = new CancellationTokenSource();
                var token                = tokenSource.Token;
                var spineConsumerDetails = await _fhirRequestExecution.ExecuteFhirQuery <DTO.Response.Fhir.Spine>(query, _spineOptionsDelegate.CurrentValue.SpineFhirApiSystemsRegisterFqdn, token);

                var spine = new Spine
                {
                    AsId    = spineConsumerDetails?.AsId,
                    OdsCode = odsCode
                };
                return(spine);
            }
            return(null);
        }