OHIF V3 Architecture
and Cornerstone 3D
Virtual NA-MIC Project Week 36th, Jan 20th 2022
Outline
2
Let’s Start with a Demo!
3
UI and design not final
Project Week 35th Presentation
4
Why modes? One application with many workflows
Often core functionalities are being used for a specific purpose (use case)
Previously, to achieve this you had to create an extension to manage these features.
5
OHIF-v3 introduces Modes to enable building such workflows by re-using the core functionalities from the extensions.
New Architecture
6
OHIF v3 Architecture
7
OHIF Architecture
8
Core Components
9
Core Managers
10
Core Services
11
Providers
12
Extensions
13
Extensions
14
Functionalities
Panel Module - Introduction
15
Panel Module - Requirements
16
Panel Module - Requirements
17
Panel Module
18
Viewport Module - Introduction
19
Viewport Module - Requirements
20
Viewport Module - Requirements
21
Viewport Module - Requirements
22
Toolbar Module - Introduction
23
Toolbar Module - Requirements
24
Toolbar Module - Requirements
25
LayoutTemplate Module - Introduction
26
LayoutTemplate Module - Requirements
27
LayoutTemplate Module - Requirements
28
SOP Class Handler Module - Introduction
29
SOP Class Handler Module - Introduction
30
SOP Class Handler Module
31
SOP Class Handler Module
32
Hanging Protocol Module - Introduction
33
Hanging Protocol Module - Requirement
34
Hanging Protocol Module - Requirement
35
Hanging Protocol Module - Sample
36
Hanging Protocol Module - Sample
ProtocolMatchingRules
37
Hanging Protocol Module - Sample
Stages
38
Hanging Protocol Module - Sample
ViewportStructure
39
Hanging Protocol Module - Sample
Viewports
40
2x2 = 4 Viewports
Hanging Protocol Module - Sample
Viewports
41
Commands Module - Introduction
42
Commands Module - Requirement
43
Commands Module - Requirement
44
DataSource Module - Introduction
45
DataSource Module - Requirement
46
DataSource Module - Requirement
47
Custom DataSource
Any Custom DataSource should define the following API:
48
Mode
How does a mode use functionality from Extensions?
49
Mode
50
Extension ID
Module Type
Name
Mode
51
Extension ID
Module Type
Name
Mode
52
Extension ID
Module Type
Name
Mode
53
Mode
54
Extension ID
Module Type
Name
Mode
55
Extension ID
Module Type
Name
DataSource Configs
DataSource information for modes are given in the configuration of the App. Default config is located at :
platform/viewer/public/config/default.js
Spoiler Alert:
You can run OHIF with different configurations! See here
56
DataSource Configs
DataSource information for modes are given in the configuration of the App. Default config is located at :
platform/viewer/public/config/default.js
Spoiler Alert:
You can run OHIF with different configurations! See here
57
DataSource Configs
DataSource information for modes are given in the configuration of the App. Default config is located at :
platform/viewer/public/config/default.js
Spoiler Alert:
You can run OHIF with different configurations! See here
58
DataSource Configs
DataSource information for modes are given in the configuration of the App. Default config is located at :
platform/viewer/public/config/default.js
Spoiler Alert:
You can run OHIF with different configurations! See here
59
DataSource Configs
DataSource information for modes are given in the configuration of the App. Default config is located at :
platform/viewer/public/config/default.js
Spoiler Alert:
You can run OHIF with different configurations! See here
60
Mode Routes
Two routes will get registered for each mode:
Example:
61
Looking at the Mode Architecture Again
62
Modes �Life Cycle
63
Mode Life Cycle
64
Mode Life Cycle (Summary)
65
Services
66
Services Subscriptions
67
Services Subscriptions
68
DICOMMetadataStore
69
Custom Services
You can create your own custom services and register them with ServicesManager in the extension preRegistration
70
Custom Services
You can create your own custom services and register them with ServicesManager in the extension preRegistration
71
FAQ
What do I need to know to develop an Extension/Mode ?
Requirements:
Our vision is:
72
FAQ
How do I write a new Extension/Mode?
73
FAQ
How do I write a new Extension/Mode?
74
FAQ
How do I add/install a new Extension/Mode that I find in Github/npm?
75
FAQ
Do I need to clone OHIF to test Extensions and Modes?
76
FAQ
I want to use external libraries for my Extension, is it possible?
77
FAQ
Can I install a Mode on the fly?
78
FAQ
Can I use vue.js or Angular for the UI in OHIF?
79
OHIF-v3 UI Component Library
80
Cornerstone 3D
81
Cornerstone 3D - Offscreen Rendering
82
UI with JavaScript Canvas Elements
Single WebGL Canvas “off screen”
glViewport 1
glViewport 2
glViewport 3
glViewport 4
glViewport 1
glViewport 2
glViewport 3
glViewport 4
Draw WebGL rendered data to JavaScript Canvas Elements
Cornerstone 3D - Volume Viewports
83
Cornerstone 3D - Stack Viewports
84
Cornerstone 3D - Stack Viewports
85
Cornerstone 3D - Memory Optimizations
86
Cornerstone 3D Tools
87
Cornerstone 3D Update to Community
Targeted Release date: April 2022
Packages to be released:
Cornerstone-3D-core and Cornerstone-3D-tools
Cornerstone-Streaming-Image-Volume
Cornerstone-3D Segmentation rendering and editing Tools
Cornerstone-3D for OHIF-V3
A Total Metabolic Tumor Volume (TMTV) mode in OHIF-v3
As well as documentation and migration guides for Cornerstone users.
88
OHIF Future Directions
89
Team
90
Chris Hafey
Co-founder
Trinity Urban
Co-founder
Steve Pieper, Ph.D
Advisor
James Petts, Ph.D
Developer
Danny Brown
Developer
Gordon J. Harris, Ph.D
Co-founder
Dan Rukas
UX/UI Design
Erik Ziegler, Ph.D
Lead Architect
Hua Li, M.D.
Developer
Supriya Somarouthu, M.D.
Subject Matter Expert
James Hanks
Project Manager
Rob Lewis
Co-founder
Matt Leary
Product Manager
Alireza Sedghi, Ph.D
Developer
Thank you!