Esempio n. 1
0
        public void GenerateJsonResponse(IDictionary <string, string> mimToGeneSymbol)
        {
            var i          = 0;
            var mimNumbers = mimToGeneSymbol.Select(x => x.Key).ToArray();

            bool needComma = false;

            using (Stream gzStream = new GZipStream(_jsonResponseStream, CompressionMode.Compress))
                using (StreamWriter writer = new StreamWriter(gzStream))
                {
                    while (i < mimNumbers.Length)
                    {
                        int    endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Length - 1);
                        string mimNumberString   = GetMimNumbersString(mimNumbers, i, endMimNumberIndex);
                        string queryUrl          = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString),
                                                                  ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"),
                                                                  ("format", ReturnDataFormat));

                        using (var response = _httpClient.GetAsync(queryUrl).Result)
                        {
                            string responseContent = response.Content.ReadAsStringAsync().Result;
                            string entries         = SetPrefixAndGetEntriesString(responseContent);
                            if (i == 0)
                            {
                                writer.Write(_jsonPrefix);
                            }
                            if (needComma)
                            {
                                writer.Write(',');
                            }
                            writer.Write(entries);
                            needComma = true;
                        }

                        i = endMimNumberIndex + 1;
                    }

                    writer.WriteLine(JsonTextEnding);
                }
        }
Esempio n. 2
0
        public void GenerateJsonResponse()
        {
            var i          = 0;
            var mimNumbers = GetMimsToDownload();

            var needComma = false;

            using Stream gzStream     = new GZipStream(_jsonResponseStream, CompressionMode.Compress);
            using StreamWriter writer = new StreamWriter(gzStream);
            while (i < mimNumbers.Count)
            {
                var endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Count - 1);
                var mimNumberString   = GetMimNumbersString(mimNumbers, i, endMimNumberIndex);
                var queryUrl          = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString),
                                                       ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"),
                                                       ("format", ReturnDataFormat));

                using (var response = _httpClient.GetAsync(queryUrl).Result)
                {
                    string responseContent = response.Content.ReadAsStringAsync().Result;
                    string entries         = SetPrefixAndGetEntriesString(responseContent);
                    if (i == 0)
                    {
                        writer.Write(_jsonPrefix);
                    }
                    if (needComma)
                    {
                        writer.Write(',');
                    }
                    writer.Write(entries);
                    needComma = true;
                }

                i = endMimNumberIndex + 1;
            }

            writer.WriteLine(JsonTextEnding);
        }
Esempio n. 3
0
        private IEnumerable <OmimItem> GetOmimItemsFromMinNumbers(IDictionary <string, string> mimToGeneSymbol, ZipArchive zipArchive)
        {
            var i          = 0;
            var queryIndex = 1;
            var mimNumbers = mimToGeneSymbol.Select(x => x.Key).ToArray();

            while (i < mimNumbers.Length)
            {
                int    endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Length - 1);
                string mimNumberString   = GetMimNumbersString(mimNumbers, i, endMimNumberIndex);
                string queryUrl          = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString), ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"), ("format", ReturnDataFormat));
                using (StreamWriter writer = zipArchive == null ? null : new StreamWriter(zipArchive.CreateEntry($"EntryQueryResponses/response{queryIndex}.txt").Open()))
                    using (var response = _httpClient.GetAsync(queryUrl).Result)
                    {
                        string responseContent = response.Content.ReadAsStringAsync().Result;
                        writer?.Write(responseContent);
                        var entryResponse = JsonConvert.DeserializeObject <EntryRoot>(responseContent);
                        var entryIndex    = 0;
                        foreach (var entry in entryResponse.omim.entryList)
                        {
                            int mimNumber = entry.entry.mimNumber;

                            string description = OmimUtilities.RemoveLinksInText(entry.entry.textSectionList?[0].textSection.textSectionContent);
                            string geneName    = entry.entry.geneMap?.geneName;
                            var    phenotypes  = entry.entry.geneMap?.phenotypeMapList?.Select(x => OmimUtilities.GetPhenotype(x, _jsonSchema.GetSubSchema("phenotypes"))).ToList() ??
                                                 new List <OmimItem.Phenotype>();

                            yield return(new OmimItem(mimToGeneSymbol[mimNumber.ToString()], geneName, description, mimNumber, phenotypes, _jsonSchema));

                            entryIndex++;
                        }
                    }

                i = endMimNumberIndex + 1;
                queryIndex++;
            }
        }