private IEnumerable <OmimItem> GetOmimItems(EntryRoot entryRoot, IDictionary <int, string> mimToGeneSymbol, IDictionary <int, string> phenotypeDescriptions) { foreach (var entry in entryRoot.omim.entryList) { var item = entry.entry; var mimNumber = item.mimNumber; //skip if not a supported gene symbol if (!mimToGeneSymbol.TryGetValue(mimNumber, out var geneSymbol)) { continue; } string description = OmimUtilities.ExtractAndProcessItemDescription(item); string geneName = item.geneMap?.geneName; var phenotypes = item.geneMap?.phenotypeMapList?.Select(x => OmimUtilities.GetPhenotype(x, phenotypeDescriptions, _jsonSchema.GetSubSchema("phenotypes"))) .ToList() ?? new List <OmimItem.Phenotype>(); yield return(new OmimItem(geneSymbol, geneName, description, mimNumber, phenotypes, _jsonSchema)); } }
private static IDictionary <int, string> GetPhenotypeDescriptions(EntryRoot entryRoot) { IDictionary <int, string> phenotypeToDescription = new Dictionary <int, string>(); foreach (var entry in entryRoot.omim.entryList) { var item = entry.entry; // gene only item if (item.prefix == '*') { continue; } var description = OmimUtilities.ExtractAndProcessItemDescription(item); if (string.IsNullOrEmpty(description)) { continue; } phenotypeToDescription[item.mimNumber] = description; } return(phenotypeToDescription); }