예제 #1
0
        internal void CreatePaper(PaperDto paperDto)
        {
            var newPaper      = paperDto.Publication;
            var newJournal    = paperDto.Journal;
            var newConf       = paperDto.Conference;
            var newMemberList = paperDto.Members;
            var newGrantList  = paperDto.Grants;

            int journalId = GetJournalId(newJournal.JournalName);
            int confId    = GetConfId(newConf);

            newPaper.ConferenceId = confId;
            newPaper.JounralId    = journalId;

            _dbContext.Publications.Add(newPaper);

            _dbContext.SaveChanges();

            foreach (var newMemberId in newMemberList)
            {
                newPaper.PublicationBioStats.Add(new PublicationBioStat()
                {
                    Publications_Id = newPaper.Id,
                    BioStats_Id     = newMemberId,
                    StartDate       = DateTime.Now,
                    EndDate         = _endDate
                });
            }

            foreach (var newGrantId in newGrantList)
            {
                newPaper.PublicationGrants.Add(new PublicationGrant()
                {
                    PublicationId = newPaper.Id,
                    GrantAffilId  = newGrantId,
                    StartDate     = DateTime.Now,
                    EndDate       = _endDate
                });
            }

            _dbContext.SaveChanges();
        }
        public static async Task <PaperDto> SearchPMIDResultsAsync(Tuple <string, string> search)
        {
            var url =
                $"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&query_key={search.Item1}&WebEnv={search.Item2}";
            var httpClient = new HttpClient();
            var result     = await httpClient.GetAsync(url);

            var stringResponse = await result.Content.ReadAsStringAsync();

            var xml = XDocument.Parse(stringResponse).LastNode.XPathSelectElements("//DocSum");

            if (xml == null)
            {
                throw new NullReferenceException("No se encontró nada para la búsqueda asignada");
            }

            var paper = new PaperDto();

            paper.Authors = new List <string>();
            paper.Title   = xml.Descendants("Item").FirstOrDefault(x => x.Attribute("Name")?.Value == "Title").Value;
            paper.PubDate = xml.Descendants("Item").FirstOrDefault(x => x.Attribute("Name")?.Value == "PubDate").Value;
            var pmid = xml.Select(x => x.Element("Id").Value).FirstOrDefault();

            paper.Link = $"https://www.ncbi.nlm.nih.gov/pubmed/{pmid}";
            paper.PMID = pmid;
            var authorsXml = xml.Descendants("Item")
                             .FirstOrDefault(x => x.Attribute("Name")?.Value == "AuthorList");

            foreach (var author in authorsXml?.Elements("Item"))
            {
                paper.Authors.Add(author.Value);
            }
            paper.LastAuthor = xml.Descendants("Item").FirstOrDefault(x => x.Attribute("Name")?.Value == "LastAuthor").Value;

            return(paper);
        }
예제 #3
0
        internal void UpdatePaper(PaperDto paperDto)
        {
            var newPaper      = paperDto.Publication;
            var newJournal    = paperDto.Journal;
            var newConf       = paperDto.Conference;
            var newMemberList = paperDto.Members;
            var newGrantList  = paperDto.Grants;
            int pubType       = newPaper.PubType;
            var creator       = paperDto.Creator;

            Publication paper = _dbContext.Publications.FirstOrDefault(p => p.Id == newPaper.Id);

            if (paper != null)
            {
                DateTime currentDate = DateTime.Now;

                DateTime submitDate = paper.SubmitDate;
                if (newPaper.Status == 1)
                {
                    submitDate = newPaper.SubmitDate;
                }

                int newJournalId = GetJournalId(newJournal.JournalName);

                int newConfId = -1;
                if (pubType == 1)
                {
                    newConfId          = GetConfId(newConf);
                    paper.ConferenceId = newConfId;
                    paper.IsPosterConf = newPaper.IsPosterConf;
                }

                if ((paper.Status != newPaper.Status) ||
                    (paper.JounralId > 0 && (paper.JounralId != newJournalId || paper.SubmitDate != submitDate)) ||
                    (pubType == 1 && paper.ConferenceId > 0 && paper.ConferenceId != newConfId))
                {
                    AddNewPaperHistory(paper, creator);
                }

                paper.PubType = pubType;

                paper.ProjectId = newPaper.ProjectId;

                paper.Title = newPaper.Title;

                paper.Author           = newPaper.Author;
                paper.Affiliation      = newPaper.Affiliation;
                paper.AffiliationOther = newPaper.AffiliationOther;

                paper.Comment = newPaper.Comment;

                paper.Status = newPaper.Status;

                switch (paper.Status)
                {
                case 1:
                    paper.SubmitDate = newPaper.SubmitDate;
                    break;

                case 3:
                    paper.PubDate = newPaper.SubmitDate;
                    break;

                default:
                    paper.AcceptDate = newPaper.SubmitDate;
                    break;
                }

                UpdateBiostats(paper, newMemberList);

                UpdateGrants(paper, newGrantList);

                paper.JounralId    = newJournalId;
                paper.Volume       = newPaper.Volume;
                paper.Issue        = newPaper.Issue;
                paper.Page         = newPaper.Page;
                paper.DOI          = newPaper.DOI;
                paper.PMID         = newPaper.PMID;
                paper.PMCID        = newPaper.PMCID;
                paper.SampleAccept = newPaper.SampleAccept;

                _dbContext.SaveChanges();
            }
        }