public Data.ApiModels.Rx.DrugResponse DrugSearch(string query) { var cacheKey = RevolutionaryStuff.Core.Caching.Cache.CreateKey(typeof(DrugResponse).Name, query, "traffk"); var tDrugResponse = ScopedCacher.FindOrCreate <Data.ApiModels.Rx.DrugResponse>(cacheKey, outerKey => { var searchCacheKey = RevolutionaryStuff.Core.Caching.Cache.CreateKey(typeof(DrugResponse).Name, query); Log(EventType, OrchestraRxApiClient.OrchestraEndpoints.DrugSearch); var oDrugResponse = ScopedCacher.FindOrCreate <DrugResponse>(searchCacheKey, key => Client.DrugSearchAsync(query).Result); var oDrugs = oDrugResponse.Value.Drugs.ToList(); var tDrugs = new List <Drug>(); Parallel.ForEach(oDrugs, (oDrug) => { var tDrug = new Drug(oDrug); Log(EventType, OrchestraRxApiClient.OrchestraEndpoints.DrugDetail); var oDrugDetail = ScopedCacher.FindOrCreate <DrugDetailResponse>((oDrug.DrugID.ToString()), key => Client.DrugDetailAsync(oDrug.DrugID.ToString()).ExecuteSynchronously()); var oDosages = oDrugDetail.Value.Dosages; tDrug.Dosages = new Dosages(oDosages); tDrugs.Add(tDrug); } ); var drugResponse = new Data.ApiModels.Rx.DrugResponse { Data = tDrugs.ToArray() }; return(drugResponse); }); return(tDrugResponse.Value); }
public Alternative(Option o) { TotalCost = o.AWPTotalCost; IsDirectGeneric = o.Alternatives.ToList().Any(x => x.IsDirectGeneric); SwitchScore = o.SwitchScore; SwitchDescription = o.SwitchDescription; var alternativeDrugList = new List <Drug>(); foreach (var alternative in o.Alternatives) { var drug = new Drug(alternative); alternativeDrugList.Add(drug); } var alternativeDrugs = new AlternativeDrugs { Data = alternativeDrugList.ToArray() }; Drugs = alternativeDrugs; }