SlicerIGT / SlicerBoneReconstructionPlanner

3D Slicer module for planning mandible reconstruction surgery using fibula flap
BSD 3-Clause "New" or "Revised" License
26 stars 10 forks source link
3d-slicer-extension

BoneReconstructionPlanner

License

A 3D Slicer extension for virtual surgical planning of mandibular reconstruction with vascularized fibula free flap and generation of patient-specific surgical guides.

Virtual Surgery Planning Patient-specific Surgical Guides
See Custom Fibula Guide Use (click link below) See Neo Mandible (click link below)
GRAPHIC EXPLICIT PHOTO GRAPHIC EXPLICIT PHOTO
Pre Surgery Photo (left) and Post Surgery Photo (right) [*]
Pre Surgery Orthopantomogram [*] Post Surgery Orthopantomogram [*]
[*]: marked pictures belong to the same surgery and patient

Developer statement

As an open-source developer committed to quality, I am dedicated to ensuring that our "medical" software meets the highest standards, with the goal of achieving ISO 13485 compliance in the future. If you encounter any bugs or issues, please report them, and I will work diligently to address and resolve them promptly. (This software is not FDA approved)

Citations

If you use BoneReconstructionPlanner please cite our paper: https://www.sciencedirect.com/science/article/pii/S2666964123000103

@article{MAISI2023100109,
   title = {In-house virtual surgical planning for mandibular reconstruction with fibula free flap: Case series and literature review},
   author = {Steve Maisi and Mauro Dominguez and Peta Charmaine Gilong and Chung Tze Kiong and Syarfa Hajam and Ahmad Fadhli Ahmad Badruddin and Han Fong Siew and Saravanan Gopalan and Kok Tuck Choon},
   journal = {Annals of 3D Printed Medicine},
   volume = {10},
   pages = {100109},
   year = {2023},
   issn = {2666-9641},
   doi = {https://doi.org/10.1016/j.stlm.2023.100109},
   url = {https://www.sciencedirect.com/science/article/pii/S2666964123000103},
   keywords = {Virtual surgical planning, In-house VSP, Fibula free flap, Mandibular reconstruction},
}

Table of Contents

Description

From the engineering point of view this project attemps to be a What You See Is What You Get (WYSIWYG) editor.

Historically, this project started as Mauro I. Dominguez (EIE, FCEIA, UNR) MScEng Final Project with PhD Andras Lasso (PerkLab, Queens) supervision and Dr Manjula Herath (Malmö University) clinical advice on 2021. After first semester of '21 the project is maintained and keeps growing from Mauro's ad-honorem work.

Its math is robust so you should be able to correctly modify the reconstruction digitally at submillimeter scales (i.e. at features-sizes your eyes will not be able to distinguish).

Digital means ideal but real-world objects are not, and neither are our inputs (e.g. CT slice thickness, bone models triangle density, smoothing factor, fibula centerline, etc). In addition to that have in mind that other sources of errors (printer resolution, printing orientation, anatomic fit considerations, etc) will add up although most of the time they'll be negligible, that is assumed because complaints have not been reported.

As far as we know our BoneReconstructionPlanner custom surgical guides will be accurate and effective enough to be adequate tools. Although, you are invited to do a mock surgery to sawbones using BoneReconstructionPlanner designed instruments yourself and weight the results before attempting their use on a IRB-approved case.

Benefits:

Cons:

User Considerations:

Interactive VSP demo

See a finished Virtual Surgical Plan of a Mandibular Reconstruction using Fibula Pieces.
Link: https://3dviewer.net/index.html#model=https://github.com/SlicerIGT/SlicerBoneReconstructionPlanner/blob/main/BoneReconstructionPlanner.gltf

Teaser and Tutorial Videos

Teaser Tutorial (will be soon redone)
https://www.youtube.com/watch?v=wsr_g_1E_pw https://www.youtube.com/watch?v=g9Vql5h6uHM

Documentation

Reported Use Cases

See more than 40 plans of other users:

Sample Data

Instructions

(last validated October 6th, 2024)

Installing BoneReconstructionPlanner

  1. You need Slicer 5.6.2 Stable. You have 2 options to download it:
  2. Install Slicer
  3. Open Slicer
  4. Press Ctrl+4 to open the extension manager. Or click the upper-right icon with the letter 'E'
  5. Go to 'Install Extensions' tab
  6. On the upper-right search box write "BoneReconstructionPlanner"
  7. Click install and give okay to install other extensions if asked (wait till ALL dependencies are installed completely). Then click "Restart" on the bottom-right corner.

To have in mind: every once in a while, you can enter the extension manager and check for updates of this extension to get latest bug fixes and added features

Saving the scene

Segmentation (Preparation for Virtual Surgical Planning)

Make a mandible segmentation and a fibula segmentation.

Example of a fibula segmentation:

  1. CTs should have a recommended slice thickness of 0.65mm (or a maximum slice thickness of 1mm). Load the study to Slicer.
  2. Go to the segment editor. Create a new segmentation. Create a new segment, name it 'fibula'.
  3. Use threshold effect to select bone but not connecting tissue (like ligaments). Check if your selected threshold value is okay if there is no connection of the segmented bones near the joint. Threshold value should not be too low to not lose detail. Suggested value: 200. Avoid highlighting noise if possible as it will reduce the need for clean up later.
  4. Use Islands effect, select 'keep selected island' and click over the fibula to keep it. Click "Show 3D".
  5. If successful continue. If not start over and use a higher threshold value or use scissors to isolate the fibula
  6. Go to Wrap Solidify effect, on Advanced button set the suggested configuration below (by @SteveMaisi) and click apply. (This is needed because it is recommended that bone segmentations have no holes inside so the assisted miterBox positioning algorithms work well) 192679644-995cbed7-9732-4f87-a936-55e000179fc4
  7. Correct errors on segmentations with scissors if needed.
  8. The bone segment (fibula in this case) should be the first of the segment-list of the segmentation. In other words the bone segment should be in position zero of the list.

You'll have to do the same for mandible in another segmentation node.

Virtual Surgical Planning

  1. Click the search icon on the left of the module selector and write 'BoneReconstructionPlanner'. Click "Switch to module".
  2. If fibula is the one from the right leg tick "Right side leg" checkbox. This makes fibula coordinate system X axis be always medial independently of the which leg is used to harvest the fibula.
  3. Select the mandibular segmentation and the fibula segmentation.
  4. Click "Create bone models from segmentations"
  5. Click "Add mandibular curve" and create a curve along the mandible. This will help giving the cut planes their initial position. It's a bit important to make it quite similar to the ideal mandible curve the patient would have if he was healthy because the algorithm that does initial planes positioning depend on it.
  6. Click "Add cut plane" and click where you want plane. Add as many planes as needed. There will be a bone piece between every two adjacent planes. So the number of mandible planes should be the desired number of bone pieces for the reconstruction plus one. The first and the last mandible planes will be the mandible resection cuts.
  7. Click "Add fibula line". Draw a line over the fibula on the 3D view. First point distal, last point proximal. Try to draw the line over the diaphysis.
  8. Click "Center fibula line using fibula model" to make the line be similar to the anatomical axis of the fibula.
  9. Tick these options: "Automatic mandibular planes positioning for maximum bones contact area", "Make all mandible planes rotate together"
  10. Click "Update fibula planes over fibula line; update fibula bone pieces and transform them to mandible" to make the reconstruction and create the fibula cut planes. If VSP visualization is not working correctly you can try a hard-update using the button with recycle arrows, this will not change the objects used to create the VSP only the outputs.
  11. Move the mandible planes as desired to change the position/orientation of the cuts.
  12. Click "Update fibula planes over fibula line; update fibula bone pieces and transform them to mandible" again. And repeat as many times as needed. If you tick the button it will react on plane movements and update automatically.
  13. You may change "Segmental Mandibulectomy" to "Hemimandibulectomy" if desired, then click update again to calculate the new plan.
  14. "Show/Hide original mandible model" button may be useful.
  15. Explore other parameters. For example: "Between space" will guarantee some space between each fibula plane that creates a closing-wedge.

Personalized Fibula Guide Generation

  1. Go to "Fibula Surgical Guide Creation" section of BoneReconstructionPlanner. If the VSP changes, please remind all steps in this section need to be carried over again.
  2. If "Check security margin on miter box creation" is checked each saw-cut (and the bone it eats) will be tested to not collide with others.
  3. Press shift over some fibula piece on the corresponding 3D view. The model should be visible on the 2D slice with the corresponding color as an edge. Create a line over the 2D slice of the fibula that will set the direction of the miterBoxes (with this you select, for example, lateral approach or posterior approach). The line should me drawn from the centerline of the fibula to a point that is distal from the first one on the 2D slice of the fibula.
  4. Select the parameters of the miter boxes: lenght, width, height, wall thickness and tolerance (this last option is inside the Settings widget and it applies also to sawBoxes of the mandible). The combination of tolerance and the slot width suggested by most experienced user (@mrtig) is summarized below (more info here):
  These equations:
  - sawBoxWidth = sawBladeWidth
  - If SLA is used:
  clearanceFitPrintingTolerance = 0.25mm
  else if FDM is used:
  clearanceFitPrintingTolerance = 0.4mm
  1. Click "Create miter boxes from fibula planes". The yellow miterBoxes will appear, each one with a long box that will create the slit for the saw to go through.

Create the Fibula Guide Base

  1. Go to the segment editor, add a new segment and create a copy (using the copy-logical-operator) of the fibula segment, rename it to "fibGuideBase".
  2. Use Hollow tool with "inside surface" option and some "shell thickness" between 3 to 6mm. The number should be decision of the user. Usually more thickness makes the contact between the miterBoxes and the guideBase easier to achieve but sometimes the guideBase ends up too big, wasting material or being uncomfortable. You can solve this, using a smaller shell if you do "masked painting" in the areas that need filling. Here is explained how to do it
  3. Shape the guidebase using scissors effect.
  4. Go to the data module and leave only the fibGuideBase segment visible on its segmentation, right-click it and press "Export visible segments to models"

Finish the Fibula Surgical Guide

  1. On the "Fibula Surgical Guide Generation" layout of BRP click on the button "Create fiducial list" and position around one point per segment were you want the screw-hole to be (the fibGuideBase model should be visible).
  2. Select the fibula guide base model that you exported on the corresponding model selector. Be sure the correct pointList is selected on the corresponding point selector. If you go by defaults it should work fine.
  3. Click "Create cylinder from fiducial list and fibula surgical guide base". Some cylinders should appear over the fibula guide base.
  4. Congratulations: You are ready to execute boolean operations to create the guide. Click on "Make boolean operations to surgical guide base with screwHolesCylinders and miterBoxes". The guide will be created, you can be sure by using the NodeControlBox that is above and hiding everything else by clicking each "eye icon" of the component objects. The name of the guide will end with the word "Prototype". If you execute this button again after you did some changes to the plan (e.g. changed miterBoxes position) a new prototype will be created.
  5. (Infrequently needed) If boolean operations fail or there is a software crash in the step above, then shift by 0.1mm the virtual plan (i.e. "Initial space"), recalculate the fibula planes, recreate the miterBoxes and execute the boolean operations again.

Personalized Mandible Surgical Guide

The workflow doesn't differ much from fibula guide creation. Except that:

Mandible Reconstruction Simulation

This maybe useful for users that want to prebend plates with a 3D printed model.

  1. Do a Virtual Surgical Plan
  2. Optionally, you can add an inter-condylar beam (i.e. a tube model) to the reconstruction. You can create the tube easily from a markups line with points on the condyles using the "Markups To Model" module.
  3. Click "Create 3D model of the reconstruction for 3D printing".

Export the planning outputs

Settings

You can use the "Lights rendering" setting to make the 3D visualizations nicer. Try "MultiLamp and Shadows", if you don't like it, you can always go back to "Lamp" default setting.

User contact and feedback

Fell free to open an issue (or report here) if you find the instructions or the videotutorial inaccurate, or if you need help finishing the workflow

Contact

bone (dot) reconstruction (dot) planner (at) gmail (dot) com

License