ImagingDataCommons / highdicom

High-level DICOM abstractions for the Python programming language
https://highdicom.readthedocs.io
MIT License
172 stars 37 forks source link

TrackingIdentifier / TrackingUniqueIdentifier should not be mandatory in all cases #213

Closed fedorov closed 1 year ago

fedorov commented 1 year ago

We are using highdicom to encode slice-level qualitative annotations of the imaged body part in CT images (rows 6 and 11/11b of https://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_A.html#sect_TID_1501). The first iteration of that dataset is here: https://zenodo.org/record/7473971.

Currently, we are in the process of revising that dataset, and we would like to not use either "Tracking identifier" or "Tracking unique identifier", since they are meaningless in the context of our application. Per standard, we are allowed not to specify those, they are marked as U in the template. However, it appears that highdicom is using a class that implements TID 4108, which is NOT the template that is used by TID 1501.

@CPBridge can you please confirm our understanding is accurate?

If this is correct, I believe it is not right and unfortunate that highdicom enforces this convention. It makes a lot of sense to require tracking ID/UID when measurements are derived from regions of interest, but if those are qualitative assessment at the slice/series/study/patient level, such identifiers have no meaning and no use, as far as I can tell.

cc: @deepakri201 who investigated this issue and is working on the conversion task.

hackermd commented 1 year ago

The standard doesn't require both attributes. It was an API design decision to require the parameters for object construction. We felt that a lack of those identifiers is generally more problematic for downstream use of the objects than having potentially superfluous information.

seandoyle commented 1 year ago

The tracking UIDs can be very useful in a workstation UI if new SRs are created derived from the one generated from the algorithm. When I was working on the lumbar spine stenosis project we were planning to use the tracking UIDs to identify which qualitative values (stenosis gradings) had been changed by the radiologist. I haven't reviewed the spec here recently but the idea was to change the value and the observer context so that later we could automate detecting differences in the algorithm and radiologist's qualitative judgements.

fedorov commented 1 year ago

Thanks for the responses! The use case of using the UIDs of the individual qualitative annotations to track modifications by the user is an interesting one! We will initialize those identifiers then to have distinct combinations of ID/UID for each per-slice measurement group. For the reference, this is the CP that relaxed the requirement to have those mandatory in TID 1501 https://dicom.nema.org/medical/dicom/Final/cp1998_ft_TID1500ptionalityForAIUseCases.pdf.