QIICR / dcmqi

dcmqi (DICOM for Quantitative Imaging) is a free, open source C++ library for conversion between imaging research formats and the standard DICOM representation for image analysis results
https://qiicr.gitbook.io/dcmqi-guide/
BSD 3-Clause "New" or "Revised" License
242 stars 61 forks source link

Update to use SNOMED CT codes in place of SNOMED RT #386

Closed fedorov closed 4 years ago

fedorov commented 4 years ago

Notes for Afshin, who will be using this issue as an opportunity to get started with dcmqi:

afshinmessiah commented 4 years ago

Here is the list of srt codes that I couldn't find any sct equivalent for.

fedorov commented 4 years ago

@afshinmessiah as discussed, let's also see if we can replace instances like this one:

https://github.com/fedorov/dcmqi/blob/master/libsrc/ImageSEGConverter.cpp#L352

CodeSequenceMacro("121322","DCM","Source image for image processing operation")

to use #defined codes from DCMTK:

http://git.dcmtk.org/?p=dcmtk.git;a=blob;f=dcmsr/include/dcmtk/dcmsr/codes/dcm.h;h=16e3d449ba87f5d6971d695e3511a8c2062c01f2;hb=HEAD#l2397

CODE_DCM_SourceImageForImageProcessingOperation

This is less error prone, and more readable/maintainable.

afshinmessiah commented 4 years ago

I've also replaced the following srt codes with their corresponding sct (srt:sct) using this table. Tell me if it doesn't make sense. srt_sct_tags = { 'T-9200B': '41216001', 'T-41070': '7832008', 'T-48052': '19715009', 'T-45526': '11279006', 'D4-31320': '253276007', 'T-A0193': '128320002', 'T-47741': '86547008', 'T-1416B': '53967007', 'T-41040': '299716001', 'T-48470': '195416006', 'R-102BC': '698348000', 'T-14183': '41313007', 'T-49423': '714754004', 'T-4881F': '70253006', 'T-43126': '91760001', 'T-4882A': '73931004', 'T-11500': '421060004', 'T-4942C': '714759009', 'T-141A5': '88454005', 'T-48817': '284639000', 'T-70010': '431491007', 'T-40210': '61695000', 'T-41066': '51114001', 'T-4806E': '29092000', 'A-13510': '27065002', 'T-11167': '13881006', 'T-48440': '194996006', 'T-51000': '123851003', 'T-AB000': '117590005'}

fedorov commented 4 years ago

@dclunie this is to follow up on the discussion we had at the IDC call last week. The list of codes that Afshin had troubles matching to SCT is in this reference: https://gist.github.com/afshinmessiah/96f80ec9f5a2ba2cfc96161ae73a4c14. Can you please let us know your suggestion about how to proceed. If the content of that document is confusing, please let me know and I will clarify.

afshinmessiah commented 4 years ago

@afshinmessiah as discussed, let's also see if we can replace instances like this one:

https://github.com/fedorov/dcmqi/blob/master/libsrc/ImageSEGConverter.cpp#L352

CodeSequenceMacro("121322","DCM","Source image for image processing operation")

to use #defined codes from DCMTK:

http://git.dcmtk.org/?p=dcmtk.git;a=blob;f=dcmsr/include/dcmtk/dcmsr/codes/dcm.h;h=16e3d449ba87f5d6971d695e3511a8c2062c01f2;hb=HEAD#l2397

CODE_DCM_SourceImageForImageProcessingOperation

This is less error prone, and more readable/maintainable. I replaced them. It is just applicable to the set of dcm codes. for sct and ucum, DCMTK doesn't have complete list of macros.

fedorov commented 4 years ago

@nolden @emelalkim FYI just so that you know this change is coming, and you can at least think if/how it can affect MITK and ePAD (I don't know if/how exactly ePAD is using dcmqi, but I think at some point it was using it somehow, so just heads up!)

dclunie commented 4 years ago

Updated "http://gist.github.com/afshinmessiah/96f80ec9f5a2ba2cfc96161ae73a4c14" as requested

dclunie commented 4 years ago

Note that on creation, one should use SCT codes, but on reading, one should be prepared to accept either the old SRT codes or the new SCT codes, otherwise old objects will fail.

fedorov commented 4 years ago

Another component to this is the webapp that can be used to populate JSON files for dcmqi: http://qiicr.org/dcmqi/. It is built from the gh-pages branch of the repo, and is using JSON files with the codes from the main repository (see https://github.com/QIICR/dcmqi/blob/gh-pages/js/controllers.js#L24-L28). That webapp should transparently start offering the new codes to the user, but we should confirm this is the case, and it is functional, once the PR is merged.

afshinmessiah commented 4 years ago

I need David's help for some other SRT tags here. Sorry for the confusion, I added my question somewhere else by mistake.

dclunie commented 4 years ago

Suggested fixes are at https://github.com/ImagingDataCommons/IDC-ProjectManagement/issues/368#issuecomment-592070953

fedorov commented 4 years ago

Related note from @dclunie re mapping functionality in Pixelmed (email is here):

PPS. You or Afshin may also find the source of ConvertSRTCodesToSCT.java (which is in the com.pixelmed.apps package) useful, and in particular the manually created retiredsrtnewsctmapping.xml in com.pixelmed.validate (as opposed to srtsctmapping.xml, which is generated from Annex O), though I have not yet released the updates that I provided to Afshin, which I am experimenting with in the attached file (which is NOT updated in the current public release).