Example #1
0
        /// <summary>
        /// Get concept reference term for the specified code system
        /// </summary>
        /// <param name="conceptId">The concept identifier.</param>
        /// <param name="codeSystem">The code system.</param>
        /// <returns>ReferenceTerm.</returns>
        /// <exception cref="System.InvalidOperationException">Cannot find concept service</exception>
        public ReferenceTerm GetConceptReferenceTerm(Guid conceptId, string codeSystem)
        {
            // Concept is loaded
            var refTermService = ApplicationContext.Current.GetService <IDataPersistenceService <ConceptReferenceTerm> >();

            if (refTermService == null)
            {
                throw new InvalidOperationException("Cannot find concept service");
            }

            int tr;

            ConceptReferenceTerm refTermEnt = null;

            Regex oidRegex = new Regex("^(\\d+?\\.){1,}\\d+$");
            Uri   uri      = null;

            if (oidRegex.IsMatch(codeSystem))
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Oid == codeSystem) && o.SourceEntityKey == conceptId, 0, 1, AuthenticationContext.Current.Principal, out tr).FirstOrDefault();
            }
            else if (Uri.TryCreate(codeSystem, UriKind.Absolute, out uri))
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Url == codeSystem) && o.SourceEntityKey == conceptId, 0, 1, AuthenticationContext.Current.Principal, out tr).FirstOrDefault();
            }
            else
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Authority == codeSystem) && o.SourceEntityKey == conceptId, 0, 1, AuthenticationContext.Current.Principal, out tr).FirstOrDefault();
            }

            return(refTermEnt.LoadProperty <ReferenceTerm>("ReferenceTerm"));
        }
Example #2
0
        public ConceptReferenceTerm InsertConceptReferenceTerm(ConceptReferenceTerm conceptReferenceTerm)
        {
            var persistenceService = ApplicationContext.Current.GetService <IDataPersistenceService <ConceptReferenceTerm> >();

            if (persistenceService == null)
            {
                throw new InvalidOperationException($"{nameof(IDataPersistenceService<ConceptReferenceTerm>)} not found");
            }

            return(persistenceService.Insert(conceptReferenceTerm, AuthenticationContext.Current.Principal, TransactionMode.Commit));
        }
Example #3
0
        /// <summary>
        /// Get the specified reference term for the specified code system
        /// </summary>
        public ReferenceTerm GetConceptReferenceTerm(Guid conceptId, string codeSystem)
        {
            var adhocCache = ApplicationServiceContext.Current.GetService <IAdhocCacheService>();
            var retVal     = adhocCache?.Get <ReferenceTerm>($"refTerm.{conceptId}.{codeSystem}");

            if (retVal != null)
            {
                return(retVal);
            }

            // Concept is loaded
            var refTermService = ApplicationServiceContext.Current.GetService <IDataPersistenceService <ConceptReferenceTerm> >();

            if (refTermService == null)
            {
                throw new InvalidOperationException("Cannot find concept/reference term service");
            }

            int tr;
            ConceptReferenceTerm refTermEnt = null;

            Regex oidRegex = new Regex("^(\\d+?\\.){1,}\\d+$");
            Uri   uri      = null;

            if (oidRegex.IsMatch(codeSystem))
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Oid == codeSystem) && o.SourceEntityKey == conceptId && o.ObsoleteVersionSequenceId == null, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            else if (Uri.TryCreate(codeSystem, UriKind.Absolute, out uri))
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Url == codeSystem) && o.SourceEntityKey == conceptId && o.ObsoleteVersionSequenceId == null, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            else
            {
                refTermEnt = refTermService.Query(o => (o.ReferenceTerm.CodeSystem.Authority == codeSystem) && o.SourceEntityKey == conceptId && o.ObsoleteVersionSequenceId == null, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            retVal = refTermEnt.LoadProperty <ReferenceTerm>("ReferenceTerm");

            adhocCache?.Add($"refTerm.{conceptId}.{codeSystem}", retVal, new TimeSpan(0, 0, 30));

            return(retVal);
        }
        /// <summary>
        /// Get the concept reference term in the code system by the concept mnemonic
        /// </summary>
        public ReferenceTerm GetConceptReferenceTerm(string conceptMnemonic, string codeSystem)
        {
            var cacheKey = $"refTerm.{conceptMnemonic}.{codeSystem}";
            var retVal   = this.m_adhocCacheService?.Get <ReferenceTerm>(cacheKey);

            if (retVal != null || this.m_adhocCacheService?.Exists(cacheKey) == true)
            {
                return(retVal);
            }

            int tr;
            ConceptReferenceTerm refTermEnt = null;

            Regex oidRegex = new Regex("^(\\d+?\\.){1,}\\d+$");
            Uri   uri      = null;

            if (String.IsNullOrEmpty(codeSystem))
            {
                refTermEnt = this.m_referenceTermService.Query(o => o.SourceEntity.Mnemonic == conceptMnemonic && o.ObsoleteVersionSequenceId == null && o.RelationshipTypeKey == ConceptRelationshipTypeKeys.SameAs, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            else if (oidRegex.IsMatch(codeSystem))
            {
                refTermEnt = this.m_referenceTermService.Query(o => (o.ReferenceTerm.CodeSystem.Oid == codeSystem) && o.SourceEntity.Mnemonic == conceptMnemonic && o.ObsoleteVersionSequenceId == null && o.RelationshipTypeKey == ConceptRelationshipTypeKeys.SameAs, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            else if (Uri.TryCreate(codeSystem, UriKind.Absolute, out uri))
            {
                refTermEnt = this.m_referenceTermService.Query(o => (o.ReferenceTerm.CodeSystem.Url == codeSystem) && o.SourceEntity.Mnemonic == conceptMnemonic && o.ObsoleteVersionSequenceId == null && o.RelationshipTypeKey == ConceptRelationshipTypeKeys.SameAs, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            else
            {
                refTermEnt = this.m_referenceTermService.Query(o => (o.ReferenceTerm.CodeSystem.Authority == codeSystem) && o.SourceEntity.Mnemonic == conceptMnemonic && o.ObsoleteVersionSequenceId == null && o.RelationshipTypeKey == ConceptRelationshipTypeKeys.SameAs, 0, 1, out tr, AuthenticationContext.Current.Principal).FirstOrDefault();
            }
            retVal = refTermEnt.LoadProperty <ReferenceTerm>("ReferenceTerm");

            this.m_adhocCacheService?.Add(cacheKey, retVal);

            return(retVal);
        }
Example #5
0
 public ConceptReferenceTerm SaveConceptReferenceTerm(ConceptReferenceTerm conceptReferenceTerm)
 {
     throw new NotImplementedException();
 }