/// <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")); }
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)); }
/// <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); }
public ConceptReferenceTerm SaveConceptReferenceTerm(ConceptReferenceTerm conceptReferenceTerm) { throw new NotImplementedException(); }