private CodedConceptDto GetCodedConceptDto(TerminologyConcept terminologyConcept) { return(new CodedConceptDto { CodedConceptCode = terminologyConcept.Code, CodeSystemIdentifier = _codeSystemIdentifier, CodeSystemName = _codeSystemName, DisplayName = terminologyConcept.DisplayName }); }
private CodedConceptDto GetCodedConceptDto( TerminologyConcept terminologyConcept ) { return new CodedConceptDto { CodedConceptCode = terminologyConcept.Code, CodeSystemIdentifier = _codeSystemIdentifier, CodeSystemName = _codeSystemName, DisplayName = terminologyConcept.DisplayName }; }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>A <see cref="Agatha.Common.Response"/></returns> public override Response Handle(MedicationFormStrengthRequest request) { var concepts = _terminologyService.GetConceptByCodeSystemCodeWithAssociation(request.SelectedConcept.CodedConceptCode, 1552, "has_ingredient"); TerminologyConcept mainConcept = null; var isIngredient = false; if (concepts.Count() == 0) { throw new Exception("Error drug not found."); } if (concepts.ElementAt(0).Properties.FirstOrDefault(p => p.Value == "BN" || p.Value == "IN") != null) { isIngredient = concepts.ElementAt(0).Properties.FirstOrDefault(p => p.Value == "IN") != null; mainConcept = concepts.ElementAt(0); } else if (concepts.Count() > 1) { mainConcept = concepts.ElementAt(1); } else if (concepts.ElementAt(0).Properties.FirstOrDefault(p => p.Value == "SCD") != null) { concepts = _terminologyService.GetConceptByCodeSystemCodeWithAssociation(concepts.ElementAt(0).Code, 1552, "isa"); if (concepts.Count() < 2) { throw new Exception("Error drug not found."); } concepts = _terminologyService.GetConceptByCodeSystemCodeWithAssociation(concepts.ElementAt(1).Code, 1552, "has_ingredient"); if (concepts.Count() < 2) { throw new Exception("Error drug not found."); } mainConcept = concepts.ElementAt(1); isIngredient = true; } else { throw new Exception("Error drug not found."); } var response = CreateTypedResponse(); response.DTSInfo = new MedicationDtsInfoDto(); if (isIngredient) { var nameToSearch = mainConcept.DisplayName.Split(' ')[0]; IEnumerable <TerminologyConcept> allconcepts = _terminologyService.FindConceptsWithNameMatching( nameToSearch, mainConcept.VocabularyId, "RxNorm Single Ing Drugs"); allconcepts = _terminologyService.FindConceptsByNames( allconcepts.Select(ac => ac.DisplayName).ToArray(), mainConcept.VocabularyId, "constitutes", "isa"); response.DTSInfo.Strengths = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SCDC") != null)); response.DTSInfo.Drugs = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SCD") != null)); response.DTSInfo.Forms = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SCDF") != null)); } else { var allconcepts = _terminologyService.FindConceptAssociationsWithNameMatching( mainConcept.DisplayName, mainConcept.VocabularyId, "has_ingredient", "isa", "constitutes"); response.DTSInfo.Strengths = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SBDC") != null)); response.DTSInfo.Forms = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SBDF") != null)); response.DTSInfo.Drugs = new ObservableCollection <TerminologyConcept> ( allconcepts.Where(concept => concept.Properties.FirstOrDefault(p => p.Value == "SBD") != null)); } response.MainCode = mainConcept; return(response); }