<<

Using WebAssembly to render medical images 2 Free and open-source viewers for Orthanc

Basic reviewing Advanced teleradiology (Osimis Web viewer)

Whole-slide imaging External, Web: DWV, ...

External, desktop:

Horos (Apple only) Aeksulap, ... 3 Two fully separate worlds

Web applications (teleradiology) Desktop (clinical radiology)

JavaScript + Cornerstone tag">C++ + 4 The problems

No code reuse between Web and Desktop! => Fully redundant developments, separate teams

Desktop teams: How can I relocate some part of my software as a for easy, fast delivery and to avoid the high cost of maintaining different ports and installers?

Web teams: How to use existing libraries for DICOM? 5 Question

Is it possible to run C++ -side in Web browsers? 6 Yes! 7 What is WebAssembly?

• Bytecode for the Web • Open standard maintained by the W3C • Official recommendation since 2019-12-05 • Precursors: applets, PNaCl from , asm.js from … • Supported by all the major Web browsers (including proprietary ones)

Official “C++ to WebAssembly” 8 Hello, world! (1/2)

Bullseye or Sid/Unstable 9 Hello, world! (2/2) 10 Stone of Orthanc

• Lightweight, cross-platform C++ library to render medical images (cf. VTK) • Part of the Orthanc ecosystem • Compatible withWebAssembly • Compatible withGUI libraries (SDL, Qt…) • Building block for the Stone Web viewer • Obviously, libre software!

More features: • 2D hardware acceleration (WebGL/OpenGL) • Primitives for DICOM (parsing and DICOMweb) • Built-in support of 3D volumes (MPR, volume reslicing) • Support of oncology: PET-CT fusion, doses, contours… 11 Stone Web viewer

• Reuse the layout of the Osimis Web viewer (now deprecated) • Online demo: ://demo.orthanc-server.com/ • Included in jodogne/orthanc-plugins and osimis/orthanc Docker images 12 More advanced applications: 3D/MPR rendering 13 Place in the Orthanc ecosystem

Stone Web viewer (WebAssembly + Orthanc plugin)

Orthanc Orthanc plugins Stone of Orthanc (rendering SDK) (executable) (shared libraries)

Orthanc Framework (higher-level toolkit)

DCMTK (DICOM toolkit) (software rendering) 14 Overview of the Stone architecture

Controller Layered 2D scene rendering

Desktop: ...

WebAssembly:

- DICOMweb

Oracle and loaders Model (slices and volumes) 15 Challenges of Stone

Deployments Different models Software libraries

• Need a to serve • JavaScript is single-threaded • Need to compile each third- WebAssembly and promise-driven party library for • Complexity of interaction with • C++ is multi-threaded and WebAssembly (no repository many technologies (C++, HTML, sequential of “side modules” so far) JavaScript, DICOMweb…) • Management of windows • Few thought about packaging differ strongly WebAssembly in GNU/ distros so far

• Partial solution: Orthanc plugins • Solution: Oracle that abstracts • Solution: CMake scripts of can add routes in the HTTP the system and network Orthanc already knows how server embedded into Orthanc primitives, plus platform- to statically build many specific 2D viewports libraries 16 Conclusions

Our mission statement: “Freely share knowledge about medical imaging”

• The Orthanc ecosystem is also about displaying medical images! • Stone of Orthanc is a lightweight, cross-platform C++ library • Stone Web viewer combines Stone of Orthanc with WebAssembly • The viewer can be used with other PACS servers than Orthanc (DICOMweb) • First official release: December 2020! • Easy integration with GNU Health: Simply open the URL of the study :-)