This blog provides an overview of the 3D Slicer architecture and module development with a focus on image-guided therapy (IGT) scripted modules. There are two main components required to develop an IGT module, which are explained in detail in this blog: (1) a platform for data capture and broadcasting (commonly using the Plus library, PlusServer), and (2) the 3D SlicerIGT Extension to receive the broadcasted data in Slicer for further processing and visualization. Sample code is also provided for reference and to facilitate implementation of these modules.
How to navigate the blog:
The main page of this blog is fully interactive. A description of each component in the charts below appears when the cursor is placed over it, and detailed explanations can be accessed by clicking on the components.
IGT: Image-guided therapy
MRML: medical reality modeling language
GUI: graphic user interface
Model, view, controller (MVC) is a software architecture pattern, which promotes software maintenance and re-usability. Each component is responsible for a specific aspect of the application development. The 3D Slicer platform follows this architectural pattern. In 3D Slicer, 'model', or sometimes 'data model', is referred to as 'MRML'; 'view' is the user interface, which can be command line or graphical interface made up of Qt widgets; and 'controller' is referred to as logic (VTK logic). Following best practices, module development in 3D Slicer should follow this architectural pattern.
This image represents how streaming medical images such as ultrasound and tracking information is accessed in 3D Slicer. The examples provided throughout this tutorial focus on ultrasound-guided interventions.