Exemplo n.º 1
0
        /// <summary>
        /// Merges the drugDataSets and produces an instance of <seealso cref="Drug"/>
        /// </summary>
        /// <param name="drugDataSets"></param>
        /// <param name="precipitantName"></param>
        /// <returns></returns>
        private static Drug ToPrecipitant(IEnumerable <DrugDataSet> drugDataSets, string precipitantName)
        {
            var drug = new Drug();

            foreach (var drugDataSet in drugDataSets)
            {
                if (drug.Name == null)
                {
                    drug.Name   = precipitantName;
                    drug.DrugId = drugDataSet.Drug2;
                }
                if (drugDataSet.Label != "None")
                {
                    drug.WarningText = drugDataSet.Label;
                }
                //if (drugDataSet.Severity != "None")
                //{
                //    drug.Severity = drugDataSet.Label;
                //}
            }
            return(drug);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Finds the overgiven drug
        /// </summary>
        /// <remarks>If more than one result is found null will be returned.</remarks>
        /// <param name="drugName"></param>
        /// <returns></returns>
        public Drug FindDrugByPredict(Predicate <CsvMappingResult <DrugDataSet> > lookupPattern)
        {
            Drug drug         = null;
            var  drugDataSets = _csvParser.ReadFromStream(Stream, Encoding.ASCII)
                                .Where(a => a?.Result?.Object != null &&
                                       lookupPattern.Invoke(a))
                                .Select(a => a.Result)
                                .ToArray();

            if (drugDataSets.Select(a => a.Drug1.ToLowerInvariant()).Distinct().Count() > 1)
            {
                drugDataSets = new DrugDataSet[0];
            }

            if (drugDataSets.Any())
            {
                //create the drug itself
                drug = ToDrug(drugDataSets.FirstOrDefault());

                foreach (DrugDataSet drugDataSet in drugDataSets)
                {
                    string drugIdPrecipitant = drugDataSet.Drug2;

                    //underneath code does not performe good so we remove it temporary
                    //var interactions = _csvParser.ReadFromStream(Stream, Encoding.ASCII)
                    //    .Where(a => a?.Result?.Drug1 != null
                    //        && a.Result.Drug1 == drugIdPrecipitant
                    //        && a.Result.Drug2 == drug.DrugId)
                    //            .Select(a => a.Result)
                    //                .ToArray();
                    //drug.Precipitant.Add(ToPrecipitant(interactions, drugDataSet.Precipitant));
                    drug.Precipitant.Add(ToPrecipitant(drugDataSet));
                }
            }

            return(drug);
        }