示例#1
0
 public static Dictionary <string, PcsOrderTxtLineData> GetOrderLineData(string filename)
 {
     return(TextFiles.ReadFileLines(filename)
            .Select((line) => new PcsOrderTxtLineData(line))
            .OrderBy((line) => line.Code)
            .ToDictionary((line) => line.Code));
 }
示例#2
0
 public static IEnumerable <IcdLinkedTitle> GetLinkedTitlesNoGem(string filename, string forType)
 {
     if (!String.IsNullOrWhiteSpace(filename))
     {
         if (System.IO.File.Exists(filename))
         {
             var icd10Lines = TextFiles.ReadFileLines(filename);
             foreach (var line in icd10Lines)
             {
                 var codeSplit  = SplitByFirstWhitespace(line);
                 var codeTitles = GetIndexTitle(codeSplit.Item2);
                 foreach (var title in codeTitles)
                 {
                     yield return(new IcdLinkedTitle()
                     {
                         Id = null,
                         Code = codeSplit.Item1.Trim(),
                         Title = title.Trim(),
                         Type = forType.Trim()
                     });
                 }
             }
         }
     }
 }
示例#3
0
        public static Dictionary <string, List <string> > GetGemsDictionary(string file, bool addPeriodToCode)
        {
            var ret = new Dictionary <string, List <string> >(StringComparer.CurrentCultureIgnoreCase);

            if (!String.IsNullOrWhiteSpace(file))
            {
                if (System.IO.File.Exists(file))
                {
                    var icd9Lines = TextFiles.ReadFileLines(file);
                    foreach (var line in icd9Lines)
                    {
                        var firstSplit  = SplitByFirstWhitespace(line);
                        var secondSplit = SplitByFirstWhitespace(firstSplit.Item2);

                        if (!NoGemEquiv.Contains(secondSplit.Item1))
                        {
                            List <string> workGem = null;
                            var           code    = secondSplit.Item1;
                            if ((code.Length > 3) && addPeriodToCode)
                            {
                                code = code.Insert(3, ".");
                            }

                            if (ret.TryGetValue(firstSplit.Item1, out workGem))
                            {
                                workGem.Add(code);
                            }
                            else
                            {
                                ret.Add(firstSplit.Item1, new List <string>()
                                {
                                    code
                                });
                            }
                        }
                    }
                }
            }

            return(ret);
        }
示例#4
0
        public static IEnumerable <IcdLinkedTitle> GetLinkedTitles(string filename, Dictionary <string, List <string> > gemsDict, string forType)
        {
            if (!String.IsNullOrWhiteSpace(filename) && (gemsDict.Count > 0))
            {
                if (System.IO.File.Exists(filename))
                {
                    var icd9Lines = TextFiles.ReadFileLines(filename);
                    foreach (var line in icd9Lines)
                    {
                        var codeSplit  = SplitByFirstWhitespace(line);
                        var codeTitles = GetIndexTitle(codeSplit.Item2);

                        List <string> workGem = null;
                        if (gemsDict.TryGetValue(codeSplit.Item1, out workGem))
                        {
                            if (workGem == null)
                            {
                                continue;
                            }
                            foreach (var code in workGem)
                            {
                                foreach (var title in codeTitles)
                                {
                                    yield return(new IcdLinkedTitle()
                                    {
                                        Id = null,
                                        Code = code.Trim(),
                                        Title = title.Trim(),
                                        Type = forType.Trim()
                                    });
                                }
                            }
                        }
                        else if (!String.IsNullOrWhiteSpace(codeSplit.Item1))
                        {
                            var matchingCodes = (from term in gemsDict
                                                 where term.Key.StartsWith(codeSplit.Item1)
                                                 from matchCode in term.Value
                                                 select matchCode)
                                                .Distinct()
                                                .ToList();
                            var trimmedMatches = from match in matchingCodes
                                                 let trueMatch = match.Replace(".", "")
                                                                 where !matchingCodes.Any(s => trueMatch.Substring(0, trueMatch.Length - 1).StartsWith(s.Replace(".", "")))
                                                                 select match;
                            foreach (var code in trimmedMatches)
                            {
                                foreach (var title in codeTitles)
                                {
                                    yield return(new IcdLinkedTitle()
                                    {
                                        Id = null,
                                        Code = code.Trim(),
                                        Title = title.Trim(),
                                        Type = forType.Trim()
                                    });
                                }
                            }
                        }
                    }
                }
            }
        }