org.LexGrid.LexBIG.Utility
Class ConvenienceMethods

java.lang.Object
  extended by org.LexGrid.LexBIG.Utility.ConvenienceMethods
All Implemented Interfaces:
java.io.Serializable

public class ConvenienceMethods
extends java.lang.Object
implements java.io.Serializable

Convenience methods that have been implemented against the LexBIG API. This class doesn't contain any of the implementation - rather, it is a one stop shop for all of the other convenience methods.

Version:
subversion $Revision: $ checked in on $Date: $
Author:
Dan Armbrust, Pradip Kanjamala, Thomas Johnson
See Also:
Serialized Form

Constructor Summary
ConvenienceMethods()
          Serialization constructor for remote interface only
ConvenienceMethods(LexBIGService lbs)
           
 
Method Summary
static void addAll(AssociationList srcList, AssociationList tgtList)
          Add all associations in the source to the target list.
static AbsoluteCodingSchemeVersionReference createAbsoluteCodingSchemeVersionReference(CodingSchemeSummary summary)
          Create an AbsoluteCodingSchemeReference
static AbsoluteCodingSchemeVersionReference createAbsoluteCodingSchemeVersionReference(java.lang.String urn, java.lang.String version)
          Create an AbsoluteCodingSchemeReference
 CodedNodeSet createCodedNodeSet(java.lang.String[] conceptCodes, java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Create a CodedNodeSet from a set of concept codes from a coding scheme.
static ConceptReference createConceptReference(java.lang.String code, java.lang.String codeSystem)
          Create a ConceptReference from a code / codesystem combination.
static ConceptReferenceList createConceptReferenceList(java.lang.String code)
          Create a ConceptReferenceList from a single concept code.
static ConceptReferenceList createConceptReferenceList(java.lang.String[] codes)
          Create a conceptReferenceList from multiple codes.
static ConceptReferenceList createConceptReferenceList(java.lang.String[] codes, java.lang.String codeSystem)
          Create a ConceptReferenceList from a set of codes.
static ConceptReferenceList createConceptReferenceList(java.lang.String code, java.lang.String codeSystem)
          Create a ConceptReferenceList from a single concept / codesystem combination.
static LocalNameList createLocalNameList(java.lang.String entry)
          Create a LocalNameList from a single entry.
static LocalNameList createLocalNameList(java.lang.String[] entries)
          Create a LocalNameList out of a set of Strings.
static NameAndValue createNameAndValue(java.lang.String name, java.lang.String value)
          Create a NameAndValue from a name / value combination.
static NameAndValueList createNameAndValueList(java.lang.String name)
          Create a NameAndValueList from a single concept name.
static NameAndValueList createNameAndValueList(java.lang.String[] names)
          Create a NameAndValueList from multiple names.
static NameAndValueList createNameAndValueList(java.lang.String[] names, java.lang.String value)
          Create a NameAndValueList from multiple names / value combination.
static NameAndValueList createNameAndValueList(java.lang.String name, java.lang.String value)
          Create a NameAndValue from a name / value combination.
static CodingSchemeVersionOrTag createProductionTag()
          Create a "PRODUCTION" tag
static SortOption createSortOption(java.lang.String sortExtensionName, java.lang.Boolean ascending)
           
static SortOptionList createSortOptionList(java.lang.String[] sortExtensionNames)
           
static SortOptionList createSortOptionList(java.lang.String[] sortExtensionNames, java.lang.Boolean[] ascending)
           
 java.lang.String generateReverseNameForAssociation(java.lang.String forward_name)
          Returns a string which is generated by prepending "reverse_" to the forward_name provided.
 java.lang.String[] getAssociationForwardAndReverseNames(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Return all the association forward name and reverse name for the coding scheme.
 java.lang.String[] getAssociationForwardNames(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Return all the association forward name for the coding scheme.
 Association getAssociationForwardOneLevel(java.lang.String conceptCode, java.lang.String relationContainerName, java.lang.String association, java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, boolean buildReferencedEntries, NameAndValueList associationQualifiers)
          Return all of the concepts that come one level in the forward direction of the association when traversing the graph from the concept code.
 java.lang.String[] getAssociationReverseNames(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Return all the association reverse name for the coding scheme
 Association getAssociationReverseOneLevel(java.lang.String conceptCode, java.lang.String relationContainerName, java.lang.String association, java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, boolean buildReferencedEntries, NameAndValueList associationQualifiers)
          Return all of the concepts that are one level in the reverse direction of the association to the concept code in the graph.
 CodingSchemeRenderingList getCodingSchemesWithSupportedAssociation(java.lang.String associationName)
          Return the coding schemes who supported association matching with associationName.
 java.lang.String getCopyright(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Return copyright text for the given coding scheme; null if not available.
 java.lang.String getEntityDescription(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String code)
          Returns the entity description for the given code.
 java.lang.String[] getHierarchyIDs(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Returns the identifiers for hierarchical relationships available for navigation within a coding scheme.
 AssociationList getHierarchyLevelNext(java.lang.String conceptCode, java.lang.String hierarchyID, java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, boolean resolveConcepts, NameAndValueList associationQualifiers)
          Return a representation of associations between a concept and its immediate descendants.
 AssociationList getHierarchyLevelPrev(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String hierarchyID, java.lang.String conceptCode, boolean resolveConcepts, NameAndValueList associationQualifiers)
          Return a representation of associations between a concept and its immediate ancestor(s).
 AssociationList getHierarchyPathToRoot(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String hierarchyID, java.lang.String conceptCode, boolean resolveConcepts, LexBIGServiceConvenienceMethods.HierarchyPathResolveOption pathResolveOption, NameAndValueList associationQualifiers)
          Return a representation of associations between a concept and hierarchical root node(s).
 ResolvedConceptReferenceList getHierarchyRoots(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String hierarchyID)
          Returns all root nodes for the given hierarchy and coding scheme.
 CodedNodeSet getHierarchyRootSet(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String hierarchyID)
          Returns all root nodes for the given hierarchy as a CodeNodeSet, which can be further restricted.
 CodingSchemeRendering getRenderingDetail(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag)
          Return detailed rendering information (including coding scheme summary, version and status information, reference links, etc) for the given coding scheme; null if not available.
 boolean isCodeRetired(java.lang.String code, java.lang.String codingSchemeName, CodingSchemeVersionOrTag versionOrTag)
          Return the retired status of a concept code.
 boolean isForwardName(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String directionalName)
          Return true if directionalName is the forwardName of an association for the coding scheme
 boolean isReverseName(java.lang.String codingScheme, CodingSchemeVersionOrTag versionOrTag, java.lang.String directionalName)
          Return true if directionalName is the reverseName of an association for the coding scheme
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConvenienceMethods

public ConvenienceMethods()
                   throws LBParameterException,
                          LBInvocationException
Serialization constructor for remote interface only

Throws:
LBInvocationException
LBParameterException

ConvenienceMethods

public ConvenienceMethods(LexBIGService lbs)
                   throws LBException
Throws:
LBException
Method Detail

addAll

public static void addAll(AssociationList srcList,
                          AssociationList tgtList)
Add all associations in the source to the target list.


createLocalNameList

public static LocalNameList createLocalNameList(java.lang.String[] entries)
Create a LocalNameList out of a set of Strings.


createProductionTag

public static CodingSchemeVersionOrTag createProductionTag()
Create a "PRODUCTION" tag


createAbsoluteCodingSchemeVersionReference

public static AbsoluteCodingSchemeVersionReference createAbsoluteCodingSchemeVersionReference(java.lang.String urn,
                                                                                              java.lang.String version)
Create an AbsoluteCodingSchemeReference


createAbsoluteCodingSchemeVersionReference

public static AbsoluteCodingSchemeVersionReference createAbsoluteCodingSchemeVersionReference(CodingSchemeSummary summary)
Create an AbsoluteCodingSchemeReference


createLocalNameList

public static LocalNameList createLocalNameList(java.lang.String entry)
Create a LocalNameList from a single entry.


createNameAndValueList

public static NameAndValueList createNameAndValueList(java.lang.String name)
Create a NameAndValueList from a single concept name.


createNameAndValueList

public static NameAndValueList createNameAndValueList(java.lang.String[] names)
Create a NameAndValueList from multiple names.


createNameAndValue

public static NameAndValue createNameAndValue(java.lang.String name,
                                              java.lang.String value)
Create a NameAndValue from a name / value combination.


createNameAndValueList

public static NameAndValueList createNameAndValueList(java.lang.String[] names,
                                                      java.lang.String value)
Create a NameAndValueList from multiple names / value combination.


createNameAndValueList

public static NameAndValueList createNameAndValueList(java.lang.String name,
                                                      java.lang.String value)
Create a NameAndValue from a name / value combination.


createConceptReference

public static ConceptReference createConceptReference(java.lang.String code,
                                                      java.lang.String codeSystem)
Create a ConceptReference from a code / codesystem combination.


createConceptReferenceList

public static ConceptReferenceList createConceptReferenceList(java.lang.String code)
Create a ConceptReferenceList from a single concept code.


createConceptReferenceList

public static ConceptReferenceList createConceptReferenceList(java.lang.String[] codes)
Create a conceptReferenceList from multiple codes.


createConceptReferenceList

public static ConceptReferenceList createConceptReferenceList(java.lang.String code,
                                                              java.lang.String codeSystem)
Create a ConceptReferenceList from a single concept / codesystem combination.


createConceptReferenceList

public static ConceptReferenceList createConceptReferenceList(java.lang.String[] codes,
                                                              java.lang.String codeSystem)
Create a ConceptReferenceList from a set of codes. Assign the same code system to each.


createSortOption

public static SortOption createSortOption(java.lang.String sortExtensionName,
                                          java.lang.Boolean ascending)

createSortOptionList

public static SortOptionList createSortOptionList(java.lang.String[] sortExtensionNames,
                                                  java.lang.Boolean[] ascending)
                                           throws LBParameterException
Throws:
LBParameterException

createSortOptionList

public static SortOptionList createSortOptionList(java.lang.String[] sortExtensionNames)

createCodedNodeSet

public CodedNodeSet createCodedNodeSet(java.lang.String[] conceptCodes,
                                       java.lang.String codingScheme,
                                       CodingSchemeVersionOrTag versionOrTag)
                                throws LBException
Create a CodedNodeSet from a set of concept codes from a coding scheme.

Throws:
LBException

generateReverseNameForAssociation

public java.lang.String generateReverseNameForAssociation(java.lang.String forward_name)
Returns a string which is generated by prepending "reverse_" to the forward_name provided.

Parameters:
forward_name - The forward_name of an association.
Returns:
A String which is generated by prepending "reverse_" to the forward_name provided

getRenderingDetail

public CodingSchemeRendering getRenderingDetail(java.lang.String codingScheme,
                                                CodingSchemeVersionOrTag versionOrTag)
                                         throws LBException
Return detailed rendering information (including coding scheme summary, version and status information, reference links, etc) for the given coding scheme; null if not available.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Throws:
LBException

getCopyright

public java.lang.String getCopyright(java.lang.String codingScheme,
                                     CodingSchemeVersionOrTag versionOrTag)
                              throws LBException
Return copyright text for the given coding scheme; null if not available.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Throws:
LBException

getCodingSchemesWithSupportedAssociation

public CodingSchemeRenderingList getCodingSchemesWithSupportedAssociation(java.lang.String associationName)
                                                                   throws LBException
Return the coding schemes who supported association matching with associationName. The search is performed only for loaded coding schemes.

Parameters:
associationName - Association name to search for. It is case sensitive.
Returns:
List of coding schemes who has supported association matching with the value of associationName
Throws:
LBException

getAssociationForwardAndReverseNames

public java.lang.String[] getAssociationForwardAndReverseNames(java.lang.String codingScheme,
                                                               CodingSchemeVersionOrTag versionOrTag)
                                                        throws LBException
Return all the association forward name and reverse name for the coding scheme.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Throws:
LBException

getAssociationForwardNames

public java.lang.String[] getAssociationForwardNames(java.lang.String codingScheme,
                                                     CodingSchemeVersionOrTag versionOrTag)
                                              throws LBException
Return all the association forward name for the coding scheme.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Throws:
LBException

getAssociationReverseNames

public java.lang.String[] getAssociationReverseNames(java.lang.String codingScheme,
                                                     CodingSchemeVersionOrTag versionOrTag)
                                              throws LBException
Return all the association reverse name for the coding scheme

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Throws:
LBException

getEntityDescription

public java.lang.String getEntityDescription(java.lang.String codingScheme,
                                             CodingSchemeVersionOrTag versionOrTag,
                                             java.lang.String code)
                                      throws LBException
Returns the entity description for the given code.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
code - The code to resolve.
Returns:
The entity description associated with the code, or null if not available.
Throws:
LBException

getHierarchyIDs

public java.lang.String[] getHierarchyIDs(java.lang.String codingScheme,
                                          CodingSchemeVersionOrTag versionOrTag)
                                   throws LBException
Returns the identifiers for hierarchical relationships available for navigation within a coding scheme. These identifiers can be submitted to the getHierarchyBroader() or getHierarchyNarrower() methods to navigate corresponding tree structures.

Possible return values are defined by the LexBIG model (see http://informatics.mayo.edu/LexGrid/downloads/LexGrid%20Model/ schemas/2008/01/EAwebpublish/index.htm).

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
Returns:
The array of identifiers; empty if no hierarchies are explicitly defined (the ontology is 'flat').
Throws:
LBException

getHierarchyLevelNext

public AssociationList getHierarchyLevelNext(java.lang.String conceptCode,
                                             java.lang.String hierarchyID,
                                             java.lang.String codingScheme,
                                             CodingSchemeVersionOrTag versionOrTag,
                                             boolean resolveConcepts,
                                             NameAndValueList associationQualifiers)
                                      throws LBException
Return a representation of associations between a concept and its immediate descendants. The resolved association list represents the next branch of the hierarchy when visualized in a top (root) to bottom (leaf) representation.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
hierarchyID - Identifies the type of hierarchy being traversed. Supported values for the coding scheme are retrievable through the getHierarchyIDs() method. If null, associations for all registered hierarchies are navigated (less precise, but improves performance).
conceptCode - The starting point for resolution; not null.
resolveConcepts - True to fill in all information for concepts identified as part of the returned association; false to return only basic references (e.g. code, coding scheme, and description). If false, additional properties for referenced concepts can be resolved on an item-by-item basis as controlled by the application.
associationQualifiers - Restrict to associations with specific qualifiers (e.g. associations might be tagged with source-specific information); null or empty to ignore qualifications.
Returns:
The list of associations and referenced concepts representing immediate descendants within the hierarchy; empty if no items are found.
Throws:
LBException

getHierarchyLevelPrev

public AssociationList getHierarchyLevelPrev(java.lang.String codingScheme,
                                             CodingSchemeVersionOrTag versionOrTag,
                                             java.lang.String hierarchyID,
                                             java.lang.String conceptCode,
                                             boolean resolveConcepts,
                                             NameAndValueList associationQualifiers)
                                      throws LBException
Return a representation of associations between a concept and its immediate ancestor(s). The resolved association list represents the previous level of the hierarchy when visualized in a top (root) to bottom (leaf) representation.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
hierarchyID - Identifies the type of hierarchy being traversed. Supported values for the coding scheme are retrievable through the getHierarchyIDs() method. If null, associations for all registered hierarchies are navigated (less precise, but improves performance).
conceptCode - The starting point for resolution; not null.
resolveConcepts - True to fill in all information for concepts identified as part of the returned association; false to return only basic references (e.g. code, coding scheme, and description). If false, additional properties for referenced concepts can be resolved on an item-by-item basis as controlled by the application.
associationQualifiers - Restrict to associations with specific qualifiers (e.g. associations might be tagged with source-specific information); null or empty to ignore qualifications.
Returns:
The list of associations and referenced concepts representing the immediate ancestor(s) within the hierarchy; empty if no items are found.
Throws:
LBException

getHierarchyPathToRoot

public AssociationList getHierarchyPathToRoot(java.lang.String codingScheme,
                                              CodingSchemeVersionOrTag versionOrTag,
                                              java.lang.String hierarchyID,
                                              java.lang.String conceptCode,
                                              boolean resolveConcepts,
                                              LexBIGServiceConvenienceMethods.HierarchyPathResolveOption pathResolveOption,
                                              NameAndValueList associationQualifiers)
                                       throws LBException
Return a representation of associations between a concept and hierarchical root node(s). The resolved association list represents the path within the hierarchy from traversed from bottom (leaf) to top (root).

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
hierarchyID - Identifies the type of hierarchy being traversed. Supported values for the coding scheme are retrievable through the getHierarchyIDs() method. If null, associations for all registered hierarchies are navigated (less precise, but improves performance).
conceptCode - The starting point for resolution; not null.
resolveConcepts - True to fill in all information for concepts identified as part of the returned association; false to return only basic references (e.g. code, coding scheme, and description). If false, additional properties for referenced concepts can be resolved on an item-by-item basis as controlled by the application.
pathResolveOption - It is possible that more than one path can exist between the conceptCode and hierarchy roots by navigating different intermediate nodes. This parameter allows the number of returned paths to be constrained.
associationQualifiers - Restrict to associations with specific qualifiers (e.g. associations might be tagged with source-specific information); null or empty to ignore qualifications.
Returns:
The list of associations and referenced concepts representing the path to root node(s) within the hierarchy; empty if no items are found. If not empty, each association in the initial list represents a separate path to root for the given concept.
Throws:
LBException

getHierarchyRoots

public ResolvedConceptReferenceList getHierarchyRoots(java.lang.String codingScheme,
                                                      CodingSchemeVersionOrTag versionOrTag,
                                                      java.lang.String hierarchyID)
                                               throws LBException
Returns all root nodes for the given hierarchy and coding scheme. Each root concept represents the conceptual start or narrowest point of a tree when visualizing the hierarchy.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
hierarchyID - Identifies the type of hierarchy being traversed. Supported values for the coding scheme are retrievable through the getHierarchyIDs() method. If null, roots for all registered hierarchies are returned.
Returns:
The collection of references to root nodes; empty if the given hierarchy is not recognized or is unfulfilled by the given coding scheme and version.
Throws:
LBException

getHierarchyRootSet

public CodedNodeSet getHierarchyRootSet(java.lang.String codingScheme,
                                        CodingSchemeVersionOrTag versionOrTag,
                                        java.lang.String hierarchyID)
                                 throws LBException
Returns all root nodes for the given hierarchy as a CodeNodeSet, which can be further restricted. Each root concept represents the conceptual start or narrowest point of a tree when visualizing the hierarchy.

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
hierarchyID - Identifies the type of hierarchy being traversed. Supported values for the coding scheme are retrievable through the getHierarchyIDs() method. If null, roots for all registered hierarchies are returned.
Returns:
The collection of references to root nodes; empty if the given hierarchy is not recognized or is unfulfilled by the given coding scheme and version.
Throws:
LBException

getAssociationForwardOneLevel

public Association getAssociationForwardOneLevel(java.lang.String conceptCode,
                                                 java.lang.String relationContainerName,
                                                 java.lang.String association,
                                                 java.lang.String codingScheme,
                                                 CodingSchemeVersionOrTag versionOrTag,
                                                 boolean buildReferencedEntries,
                                                 NameAndValueList associationQualifiers)
                                          throws LBException
Return all of the concepts that come one level in the forward direction of the association when traversing the graph from the concept code.

Parameters:
conceptCode - conceptCode to lookup
relationContainerName - The relationContainerName to look under (null for default)
association - The association to look under ("hasSubtype", etc)
codingScheme - The coding scheme to use.
buildReferencedEntries - true to resolve the full concept codes, false for skeletons
Throws:
LBException

getAssociationReverseOneLevel

public Association getAssociationReverseOneLevel(java.lang.String conceptCode,
                                                 java.lang.String relationContainerName,
                                                 java.lang.String association,
                                                 java.lang.String codingScheme,
                                                 CodingSchemeVersionOrTag versionOrTag,
                                                 boolean buildReferencedEntries,
                                                 NameAndValueList associationQualifiers)
                                          throws LBException
Return all of the concepts that are one level in the reverse direction of the association to the concept code in the graph.

Parameters:
conceptCode - conceptCode to lookup
relationContainerName - The relationContainerName to look under (null for default)
association - The association to look under ("hasSubtype", etc)
codingScheme - The coding scheme to use.
buildReferencedEntries - true to resolve the full concept codes, false for skeletons
Throws:
LBException

isCodeRetired

public boolean isCodeRetired(java.lang.String code,
                             java.lang.String codingSchemeName,
                             CodingSchemeVersionOrTag versionOrTag)
                      throws LBException
Return the retired status of a concept code. True if retired, false if not retired. Throws a parameter exception if the code does not exist in the code system.

Parameters:
code -
codingSchemeName -
versionOrTag -
Returns:
Throws:
LBException

isForwardName

public boolean isForwardName(java.lang.String codingScheme,
                             CodingSchemeVersionOrTag versionOrTag,
                             java.lang.String directionalName)
                      throws LBException
Return true if directionalName is the forwardName of an association for the coding scheme

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
directionalName - The directionalName string
Throws:
LBException

isReverseName

public boolean isReverseName(java.lang.String codingScheme,
                             CodingSchemeVersionOrTag versionOrTag,
                             java.lang.String directionalName)
                      throws LBException
Return true if directionalName is the reverseName of an association for the coding scheme

Parameters:
codingScheme - The local name or URN of the coding scheme.
versionOrTag - The assigned tag/label or absolute version identifier of the coding scheme.
directionalName - The directionalName string
Throws:
LBException

Copyright: (c) 2004-2006 Mayo Foundation for Medical Education and Research (MFMER). All rights reserved. MAYO, MAYO CLINIC, and the triple-shield Mayo logo are trademarks and service marks of MFMER.