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); }
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(); } }