SlicerRt / SlicerRT

Open-source toolkit for radiation therapy research, an extension of 3D Slicer. Features include DICOM-RT import/export, dose volume histogram, dose accumulation, external beam planning (TPS), structure comparison and morphology, isodose line/surface generation, etc.
https://slicerrt.org
127 stars 60 forks source link

ENH: Dynamic beam transform from IEC 61217:2011 hierarchy #133

Closed MichaelColonel closed 4 years ago

MichaelColonel commented 4 years ago

Allows correct patient support rotation for beam node within "Beams" module.

cpinter commented 4 years ago

I haven't built or tried it, but after reading the code it looks excellent work! I just added one minor comment. Thank you once more! If it looks good to @Sunderlandkyl and @lassoan then we can go ahead and integrate it.

cpinter commented 4 years ago

Screenshots and some additional info: https://discourse.slicer.org/t/how-to-make-rtbeamnode-or-volumenode-sensitive-to-patient-support-rotation-from-ui/10410/11 (@MichaelColonel right? :) )

MichaelColonel commented 4 years ago

I've fixes everything except debug and error messages (not quite sure how to make it properly), and added separate transformation from IEC Patient to RAS.

cpinter commented 4 years ago

If there are no comments from the other project owners, I think we can merge it later today. Thanks again for the contribution!

cpinter commented 4 years ago

@MichaelColonel please squash the extra commits into the first one and then I'll merge it. I would rather not add commits into the repository like "ENH: Fixes for PR #133" or "ENH: Tests fixes" (as a matter of fact, fixes are usually not ENH, see https://www.slicer.org/wiki/Documentation/Nightly/Developers/Style_Guide#Commit_message_prefix). In general, what I think is a better approach is to amend your initial commit with the fixes requested during review. Thanks!

MichaelColonel commented 4 years ago

PR has been squashed to initial commit.

Next i will try to apply dynamic transform for "Room's Eye View" module, at least for mandatory elements such as: Gantry, FixesReference, PatientSupport, Collimator, TableTopEccentricRotation, TableTop, Patient. All these coordinate systems will be transformed to RAS according to IEC hierarchy:

For example: Gantry to RAS: Gantry -> FixesReference -> PatientSupport -> TableTopEccentricRotation -> TableTop -> Patient -> RAS

TableTop to RAS: TableTop -> TableTopEccentricRotation -> PatientSupport -> FixesReference -> PatientSupport -> TableTopEccentricRotation -> TableTop -> Patient -> RAS

cpinter commented 4 years ago

Sounds good, looking forward to it!