Skip to content

Tag Helpers

imgtools.dicom.utils.lookup_tag cached

lookup_tag(
    keyword: str, hex_format: bool = False
) -> Optional[str]

Lookup the tag for a given DICOM keyword.

Parameters:

Name Type Description Default

keyword

str
        The DICOM keyword to look up.
required

hex_format

bool
        If True, return the tag in hexadecimal format (default is False).
False

Returns:

Type Description
str or None

The DICOM tag as a string, or None if the keyword is invalid.

Examples:

Lookup a DICOM tag in decimal format:

>>> lookup_tag('PatientID')
'1048608'

Lookup a DICOM tag in hexadecimal format:

>>> lookup_tag(
...     'PatientID',
...     hex_format=True,
... )
'0x100020'
Source code in src/imgtools/dicom/utils.py
@functools.lru_cache(maxsize=1024)
def lookup_tag(keyword: str, hex_format: bool = False) -> Optional[str]:
    """
    Lookup the tag for a given DICOM keyword.

    Parameters
    ----------
    keyword : str
                    The DICOM keyword to look up.
    hex_format : bool, optional
                    If True, return the tag in hexadecimal format (default is False).

    Returns
    -------
    str or None
                    The DICOM tag as a string, or None if the keyword is invalid.

    Examples
    --------

    Lookup a DICOM tag in decimal format:

    >>> lookup_tag('PatientID')
    '1048608'

    Lookup a DICOM tag in hexadecimal format:

    >>> lookup_tag(
    ...     'PatientID',
    ...     hex_format=True,
    ... )
    '0x100020'
    """
    if (tag := tag_for_keyword(keyword)) is None:
        return None
    return f'0x{tag:X}' if hex_format else str(tag)

imgtools.dicom.utils.tag_exists cached

tag_exists(keyword: str) -> bool

Boolean check if a DICOM tag exists for a given keyword.

Parameters:

Name Type Description Default

keyword

str
        The DICOM keyword to check.
required

Returns:

Type Description
bool

True if the tag exists, False otherwise.

Examples:

>>> tag_exists('PatientID')
True
>>> tag_exists('InvalidKeyword')
False
Source code in src/imgtools/dicom/utils.py
@functools.lru_cache(maxsize=1024)
def tag_exists(keyword: str) -> bool:
    """Boolean check if a DICOM tag exists for a given keyword.

    Parameters
    ----------
    keyword : str
                    The DICOM keyword to check.

    Returns
    -------
    bool
                    True if the tag exists, False otherwise.

    Examples
    --------

    >>> tag_exists('PatientID')
    True

    >>> tag_exists('InvalidKeyword')
    False
    """
    return dictionary_has_tag(keyword)

imgtools.dicom.utils.similar_tags cached

similar_tags(
    keyword: str, n: int = 3, threshold: float = 0.6
) -> List[str]

Find similar DICOM tags for a given keyword.

Useful for User Interface to suggest similar tags based on a misspelled keyword.

Parameters:

Name Type Description Default

keyword

str
        The keyword to search for similar tags.
required

n

int
        Maximum number of similar tags to return (default is 3).
3

threshold

float
        Minimum similarity ratio (default is 0.6).
0.6

Returns:

Type Description
List[str]

A list of up to n similar DICOM tags.

Examples:

Find similar tags for a misspelled keyword:

>>> similar_tags('PatinetID')
['PatientID', 'PatientName', 'PatientBirthDate']

Adjust the number of results and threshold:

>>> similar_tags(
...     'PatinetID',
...     n=5,
...     threshold=0.7,
... )
['PatientID', 'PatientName']
Source code in src/imgtools/dicom/utils.py
@functools.lru_cache(maxsize=1024)
def similar_tags(keyword: str, n: int = 3, threshold: float = 0.6) -> List[str]:
    """Find similar DICOM tags for a given keyword.

    Useful for User Interface to suggest similar tags based on a misspelled keyword.

    Parameters
    ----------
    keyword : str
                    The keyword to search for similar tags.
    n : int, optional
                    Maximum number of similar tags to return (default is 3).
    threshold : float, optional
                    Minimum similarity ratio (default is 0.6).

    Returns
    -------
    List[str]
                    A list of up to `n` similar DICOM tags.

    Examples
    --------
    Find similar tags for a misspelled keyword:

    >>> similar_tags('PatinetID')
    ['PatientID', 'PatientName', 'PatientBirthDate']

    Adjust the number of results and threshold:

    >>> similar_tags(
    ...     'PatinetID',
    ...     n=5,
    ...     threshold=0.7,
    ... )
    ['PatientID', 'PatientName']
    """
    return difflib.get_close_matches(keyword, ALL_DICOM_TAGS, n, threshold)