public async Task <IServiceBaseUrl> GetPrimaryAsync(Bug.Common.Enums.FhirVersion fhirVersion) { byte[]? data = await IDistributedCache.GetAsync(GetPrimaryKey(fhirVersion)); if (data is object) { return(JsonSerializer.Deserialize <ServiceBaseUrl>(data)); } else { IServiceBaseUrl?ServiceBaseUrl = await IServiceBaseUrlRepository.GetPrimary(fhirVersion); if (ServiceBaseUrl is object) { await this.SetPrimaryAsync(ServiceBaseUrl); return(ServiceBaseUrl); } else { ServiceBaseUrl = await IServiceBaseUrlRepository.AddAsync(fhirVersion, StringSupport.StripHttp(IServiceBaseUrlConfig.Url(fhirVersion).OriginalString), true); await this.SetPrimaryAsync(ServiceBaseUrl); return(ServiceBaseUrl); } } }
public async Task <IServiceBaseUrl?> GetAsync(Bug.Common.Enums.FhirVersion fhirVersion, string url) { byte[]? data = await IDistributedCache.GetAsync(GetKey(fhirVersion, url)); if (data is object) { return(JsonSerializer.Deserialize <ServiceBaseUrl>(data)); } else { IServiceBaseUrl?ServiceBaseUrl = await IServiceBaseUrlRepository.GetBy(fhirVersion, url); if (ServiceBaseUrl is object && ServiceBaseUrl is IServiceBaseUrl IServiceBaseUrl) { await this.SetAsync(IServiceBaseUrl); return(IServiceBaseUrl); } return(null); } }
private string GetKey(Bug.Common.Enums.FhirVersion fhirVersion, string url) { return($"table:serviceBaseUrl:fVer:{((int)fhirVersion).ToString()}:url:{url}"); }
private string GetPrimaryKey(Bug.Common.Enums.FhirVersion fhirVersion) { return($"table:serviceBaseUrl:fVer:{((int)fhirVersion).ToString()}:isPrimary:true"); }
public async Task RemovePrimaryAsync(Bug.Common.Enums.FhirVersion fhirVersion, string url) { await IDistributedCache.RemoveAsync(GetPrimaryKey(fhirVersion)); await RemoveAsync(fhirVersion, url); }
public FhirResourceSupport(IResourceNameToTypeMap IResourceNameToTypeMap) { this.IResourceNameToTypeMap = IResourceNameToTypeMap; this.FhirVersion = Common.Enums.FhirVersion.R4; }
public async Task <BundleModel> GetSearchBundleModel(IList <ResourceStore> ResourceStoreList, Bug.Common.Enums.FhirVersion fhirVersion) { var IServiceBaseUrl = await IServiceBaseUrlCache.GetPrimaryAsync(fhirVersion); //Construct the History Bundle var BundleModel = new BundleModel(BundleType.Searchset) { Total = ResourceStoreList.Count }; BundleModel.Entry = new List <BundleModel.EntryComponent>(); foreach (var ResourceStore in ResourceStoreList) { var entry = new BundleModel.EntryComponent { FullUrl = new Uri($"{IServiceBaseUrl.Url}/{ResourceStore.ResourceId}") }; BundleModel.Entry.Add(entry); if (ResourceStore.ResourceBlob is object) { entry.Resource = IFhirResourceParseJsonService.ParseJson(ResourceStore.FhirVersionId, IGZipper.Decompress(ResourceStore.ResourceBlob)); } } return(BundleModel); }