示例#1
0
 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
         };
 }
示例#3
0
        /// <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);
        }