changeset 1297:d9a41e2beedd

done annotations
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 10 Sep 2026 07:54:41 +0200
parents 7dec13dcc13a
children bf8c8edded61
files Sphinx/source/images/2026-09-10-wsi-annotations.png Sphinx/source/plugins/wsi.rst
diffstat 2 files changed, 106 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
Binary file Sphinx/source/images/2026-09-10-wsi-annotations.png has changed
--- a/Sphinx/source/plugins/wsi.rst	Wed Sep 09 19:23:54 2026 +0200
+++ b/Sphinx/source/plugins/wsi.rst	Thu Sep 10 07:54:41 2026 +0200
@@ -129,8 +129,15 @@
 
 Starting with release 4.0, the Web Viewer plugin provides a user
 interface for **drawing annotations over the whole-slide images**. The
-viewer also supports a notion of individual **user layers** that can be
-edited and shown or hidden independently. Annotations are enabled by
+viewer also supports a notion of individual **user layers** that can
+be edited and shown or hidden independently. Here is a screenshot of
+the user interface:
+
+.. image:: ../images/2026-09-10-wsi-annotations.png
+           :align: center
+           :width: 640px
+
+Annotations are enabled by
 default, but they can be disabled by modifying the :ref:`configuration
 file <configuration>` as follows::
 
@@ -149,8 +156,8 @@
 authentication mechanism is set up. If you are using Orthanc in an
 educational context, we recommend installing the :ref:`education
 plugin <education>` alongside the whole-slide imaging plugin. The
-education plugin provides user authentication. To enable this, use the
-following configuration::
+education plugin will provide user authentication. To enable this, use
+the following configuration::
 
   {
     [...]
@@ -162,9 +169,9 @@
 If you do not want to rely on the education plugin, the whole-slide
 imaging plugin can be configured to obtain user authentication
 information from an **HTTP header**. This header can be set by any
-:ref:`reverse proxy <nginx>` or an `institutional SSO infrastructure
-<https://en.wikipedia.org/wiki/Single_sign-on>`__. Here is the associated
-configuration::
+:ref:`reverse proxy <nginx>` or by an `institutional SSO
+infrastructure <https://en.wikipedia.org/wiki/Single_sign-on>`__. Here
+is the associated configuration::
 
   {
     [...]
@@ -188,12 +195,102 @@
 using the education plugin, the distinction between instructors and
 learners is handled by the education plugin.
 
+Individual user layers can be **shared** between users. This can be
+particularly useful in pedagogical settings, where an instructor wants
+to broadcast questions to learners, or where a group of learners
+collaborates on a contouring exercise. The sharing workflow starts
+with the owner of the layer sharing its content by clicking on the
+"share" icon next to the layer of interest:
 
-Sharing
+.. image:: ../images/2026-09-10-wsi-sharing.png
+           :align: center
+           :width: 640px
+
+Note that the layer can be made public to all users or shared with a
+specific subset of users. Once the layer owner has shared a layer,
+another user can import it into their workspace:
+
+.. image:: ../images/2026-09-10-wsi-importing.png
+           :align: center
+           :width: 640px
+
+The name of the layer owner is required to import one of their layers.
+Once a shared layer is imported, it is displayed in read-only mode.
+However, it can still be shown or hidden, and its color can be
+changed.
+
+By default, layer sharing is disabled. The following two configuration
+options control layer sharing::
+
+  {
+    [...]
+    "WholeSlideImaging" : {
+      [...]
+      "EnableAnnotationsSharing" : true,
+      "EnableLearnerToLearnerSharing" : true
+    }
+  }
+
+The distinction between instructors and learners plays a key role in
+layer sharing. In a pedagogical context, it can be important to limit
+how learners communicate, while allowing instructors to remain the
+trusted source of information. At the same time, learners can still
+use collaborative editing features inside a group of
+students. Conversely, instructors should be able to access layers
+shared by any learner, for instance to correct an exercise.
+
+This leads to the following visibility rules:
+
+**Instructors can see:**
 
-``&project=``
+* All layers marked as public, regardless of whether they were created
+  by an instructor or a learner.
+
+* Any layer explicitly shared with them by another user.
+
+**Learners can see:**
+
+* All public layers created by instructors. These layers are visible
+  to all learners.
+
+* Any instructor layer explicitly shared with them.
+
+* Any learner layer explicitly shared with them, provided that
+  learner-to-learner sharing is enabled (see the
+  ``EnableLearnerToLearnerSharing`` configuration option).
+
+.. note::
+
+   A learner's public layers are visible only to instructors. They are
+   never visible to other learners, regardless of the
+   learner-to-learner sharing configuration.
 
+   This means that, for a learner, marking a layer as public submits
+   the layer to the instructors rather than sharing it with the whole
+   class.  This prevents a learner's work from being visible to all
+   other learners, while still allowing collaboration within a
+   specific group through explicit sharing.
 
+.. note::
+
+   The ``EnableLearnerToLearnerSharing`` configuration option affects
+   only sharing between learners. It has no effect on the visibility
+   of learner layers to instructors, and does not change the behavior
+   of public learner layers. Public learner layers are never visible
+   to other learners, whether learner-to-learner sharing is enabled or
+   disabled.
+
+Finally, annotations for each whole-slide image (i.e., for each DICOM
+series or instance) displayed by the whole-slide imaging viewer can be
+separated into different **projects**.  The current project is
+selected using the ``&project=`` GET argument in the URL used to open
+the viewer. Changing the project creates a separate workspace for its
+layers and annotations. If the ``project`` argument is not specified,
+the default project is the empty string.  The :ref:`education plugin
+<education>` automatically sets the project argument: each course
+corresponds to a separate project.  This makes it possible to share
+the same whole-slide image across multiple courses without mixing
+their annotations.
 
 
 Support of IIIF