List <string> GetTumorLineCombos(SentenceFragment sf, Dictionary <string, List <string> > tumorLines)
        {
            var    tumorLineCombos = new List <string>();
            string lineName        = sf.RecognizedEntities.
                                     Where(re => String.Compare(re.Entity.DomainName, CAConstants.DIMENSION1_COMPONENT2, true) == 0).
                                     FirstOrDefault()?.
                                     Value.
                                     ToString();
            string tumorName = sf.RecognizedEntities.
                               Where(re => String.Compare(re.Entity.DomainName, CAConstants.DIMENSION1_COMPONENT1, true) == 0).
                               FirstOrDefault()?.
                               Value.
                               ToString();

            if (!String.IsNullOrWhiteSpace(lineName))
            {
                tumorLineCombos.Add(tumorName + " " + lineName);
            }
            else if (!String.IsNullOrWhiteSpace(tumorName) && tumorLines.ContainsKey(tumorName))
            {
                foreach (var line in tumorLines[tumorName])
                {
                    if (String.IsNullOrWhiteSpace(line))
                    {
                        tumorLineCombos.Add(tumorName);
                    }
                    else
                    {
                        tumorLineCombos.Add(tumorName + " " + line);
                    }
                }
            }

            return(tumorLineCombos);
        }
        private List <SentenceFragment> GetDataSlicesFromDataTable(DataTable dt)
        {
            var slices = new List <SentenceFragment>();

            foreach (DataRow row in dt.Rows)
            {
                SentenceFragment sf = new SentenceFragment();
                var ners            = new List <RecognizedEntity>();
                if (dt.Columns.Contains(CAConstants.DIMENSION1_COMPONENT1))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new Tumor(), Value = row[CAConstants.DIMENSION1_COMPONENT1].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION1_COMPONENT2))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new TumorLine(), Value = row[CAConstants.DIMENSION1_COMPONENT2].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION1_COMPONENT3))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new TumorSegment(CAConstants.DEFAULT_SEGMENT), Value = row[CAConstants.DIMENSION1_COMPONENT3].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION1_COMPONENT4))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new TumorSubsegment(CAConstants.DEFAULT_SUBSEGMENT), Value = row[CAConstants.DIMENSION1_COMPONENT4].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION1_COMPONENT5))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new TumorTestStatus(), Value = row[CAConstants.DIMENSION1_COMPONENT5].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION2))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new Regimen(), Value = row[CAConstants.DIMENSION2].SafeTrim()
                    });
                }
                if (dt.Columns.Contains(CAConstants.DIMENSION4))
                {
                    ners.Add(new RecognizedEntity {
                        Entity = new Time(), Value = row[CAConstants.DIMENSION4].SafeTrim()
                    });
                }

                var measureRE = recognitionOutput.SentenceFragments[NERClause.EQUAL][0].RecognizedEntities.
                                Where(re => re.IsMeasure).
                                FirstOrDefault().
                                Clone() as RecognizedEntity;
                var    measureField = measureRE.Entity.FieldName;
                double measureVal   = Math.Round(row[measureField].SafeToDouble() * 100, CAConstants.CHART_LABEL_PRECISION);
                measureRE.Value           = measureVal;
                measureRE.RecognizedValue = measureVal;
                ners.Add(measureRE);

                if (ners.AnyOrNotNull())
                {
                    sf.AddOrReplaceNERs(ners);
                }
                slices.Add(sf);
            }

            return(slices);
        }