Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }