SlicerRT icon indicating copy to clipboard operation
SlicerRT copied to clipboard

Orthovoltage treatment planning system

Open cpinter opened this issue 8 years ago • 6 comments

Treatment planning system for orthovoltage RT, for treating skin lesions.

This will contain various file readers and converters, as well as a dose engine class that calls EGSnrc code after providing it the proper input.

Wiki page containing all project information: https://github.com/SlicerRt/SlicerRT/wiki/Orthovoltage-RT

cpinter avatar Sep 22 '17 17:09 cpinter

  • [x] Duplicate VffFileReader module [2], call it DosxyzNrc3dDoseFileReader (Andras: please correct the name if you think it can be better)
    • [x] Rename all files, all class names, etc to the new name. Read through the code carefully and change things as you go (name in license text, contributor, etc.)
    • [x] The parameter defined in qSlicerVffFileReaderOptionsWidget won’t make sense in our case, but let’s leave it like that for now
  • [x] Add the module to SlicerRT: edit the CMakeLists.txt file [3] (build SlicerRT and make sure it compiles, then commit to your branch – I’ll give you more info)
  • [x] Edit the logic file [4] to read .3ddose files
    • [x] Find a sample dose file here [5] (I just googled it and downloaded one I found in a ResearchGate discussion)
    • [x] Check if the file complies with the specifications: Section 12 in [6]
    • [x] Check out this Matlab reader script [7], see if it makes sense to port this to C++. Even if not, see what checks and verifications it makes, and build it into your code

[2] https://github.com/SlicerRt/SlicerRT/tree/master/VffFileReader [3] https://github.com/SlicerRt/SlicerRT/blob/master/CMakeLists.txt [4] https://github.com/SlicerRt/SlicerRT/blob/master/VffFileReader/Logic/vtkSlicerVffFileReaderLogic.cxx [5] https://www.dropbox.com/s/fxrz88l3axdxjj4/Segment01.3ddose.zip?dl=0 [6] https://nrc-cnrc.github.io/EGSnrc/doc/pirs794-dosxyznrc.pdf [7] https://www.mathworks.com/matlabcentral/fileexchange/55085-dosxyznrc-3ddose-file-reader

cpinter avatar Sep 22 '17 18:09 cpinter

Next task will be exporting plan and beam parameters that can be fed as input to the CCSEO EGSnrc engine.

Until we have access to an EGSnrc dose engine to test the development of this task, we will work on surface scanning:

  • Use Artec Eva on a phantom and a painted lesion to get a surface scan
  • Register surface scan to CT in Slicer (using ICP on subsampled surfaces)
  • Contour lesion using Segment Editor
  • Export to DICOM-RTSS

cpinter avatar Oct 31 '17 15:10 cpinter

Surface scanning workflow has been developed by @anna-ilina, paper submitted to CARS 2018.

She is working on integrating ctcreate into the SlicerRT orthovoltage dose engine so that CTs can be automatically converted to the phantom format DOSXYZnrc requires.

cpinter avatar Feb 06 '18 17:02 cpinter

DOSXYZnrc inputs

cpinter avatar Feb 15 '18 21:02 cpinter

After the latest meeting these are the remaining steps:

Needed for continuing Slicer development

  • [x] Asymmetric virtual CT phantom (Chandra)
  • [x] Phase space file, reasonably small for validation (Ingrid)
  • [x] Config file for DOSXYZ run (Ingrid)
  • [x] IEC -> DOSXYZ conversion equations (Ingrid)

Next steps in Slicer development (Csaba)

  • [x] Meet with Ingrid, get data and config files, see one execution
  • [ ] IEC -> DOSXYZ angles conversion
  • [ ] Reproduction and validation of the test run of Ingrid
  • [x] Save paths in Application Settings

cpinter avatar Apr 05 '19 18:04 cpinter

Further tasks:

  • [ ] Find reason for DICOM to DOSXYZ phicol beam angle difference (270 != 180)
  • [ ] Confirm with Ingrid that the DOSXYSnrc parameters are OK
  • [ ] Apply couch angle (*)
  • [ ] Automatically read back 3ddose file into output dose volume

* The reason the couch angle is not changed, is that it does not have an effect in SlicerRT since we implemented the Room’s Eye View module. The reason for that is that we have the linac in RAS=World=FixedReference(IEC) in Slicer, and the couch is just another coordinate system. The way to apply the couch angle would be to rotate the whole patient along the IS axis, however it is not currently implemented. This is the reason for the difference in theta. I will run the dose engine like this for testing, and then we can figure out how to take the couch angle into account.

cpinter avatar Jun 18 '19 18:06 cpinter