explain_dicom_tag
Explain DICOM tags with detailed context including usage, common values, vendor-specific quirks, and related tags for healthcare data interoperability.
Instructions
Get a detailed explanation of a DICOM tag with context, including what it is, when it's used, common values, vendor quirks (Philips, GE, Siemens), gotchas, and related tags.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | DICOM tag identifier (number or keyword). |
Implementation Reference
- The `explain_dicom_tag` function, which provides detailed context, VR details, and practical notes about a DICOM tag.
def explain_dicom_tag(tag: str) -> str: """Get a detailed explanation of a DICOM tag with context. Args: tag: Tag identifier (number or keyword). Returns: Detailed explanation including usage context, vendor quirks, and gotchas. """ # Resolve the tag parsed = _parse_tag_input(tag) info = None tag_key = None if parsed is not None: info = DICOM_TAGS.get(parsed) tag_key = parsed else: results = _find_by_keyword(tag) if results: tag_key, info = results[0] if info is None: return f"Tag '{tag}' not found. Use 'lookup_dicom_tag' to search by keyword or number." parts = [ f"## {info['name']}", f"Tag: {format_dicom_tag(*tag_key)} | Keyword: {info['keyword']} | VR: {info['vr']} | VM: {info['vm']}", "", ] # What is it? parts.append("### What It Is") parts.append(info["description"]) parts.append("") # When is it used? parts.append("### When It's Used") parts.append(_get_usage_context(tag_key, info)) parts.append("") # Common values if info.get("common_values"): parts.append("### Common Values") for val in info["common_values"]: parts.append(f" - {val}") parts.append("") # VR details parts.append("### Value Representation Details") parts.append(f"VR: {info['vr']} — {format_vr_description(info['vr'])}") parts.append(_get_vr_notes(info["vr"])) parts.append("") # Practical notes and vendor quirks if info.get("notes"): parts.append("### Practical Notes & Vendor Quirks") parts.append(info["notes"]) parts.append("") # Related tags related = _get_related_tags(tag_key, info) if related: parts.append("### Related Tags") for rel_key, rel_info in related: parts.append(f" {format_dicom_tag(*rel_key)} {rel_info['keyword']} — {rel_info['name']}") parts.append("") # SOP Class context sop_context = _get_sop_context(tag_key) if sop_context: parts.append("### SOP Class Context") parts.append(sop_context) return "\n".join(parts)