changeset 422:b8b9b108a697

integration c-get->mainline
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 20 May 2020 17:07:12 +0200
parents 24b1c64002b8 (current diff) e0b4b88446a8 (diff)
children 71281b540ca1
files
diffstat 3 files changed, 137 insertions(+), 70 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/dicom-guide.rst	Wed May 20 07:06:07 2020 +0200
+++ b/Sphinx/source/dicom-guide.rst	Wed May 20 17:07:12 2020 +0200
@@ -289,7 +289,8 @@
 2. **Send images** from the local imaging device to a remote device
    (:ref:`C-Store <dicom-store>`).
 3. **Search the content** of a remote device (:ref:`C-Find <dicom-find>`).
-4. **Retrieve images** from a remote device (:ref:`C-Move <dicom-move>`).
+4. **Retrieve images** from a remote device (:ref:`C-Move
+   <dicom-move>` or :ref:`C-Get <dicom-get>`).
 
 Here is a picture that summarizes some key concepts:
 
@@ -569,11 +570,9 @@
 
 *Note 1:* Even if C-Move may seem counter-intuitive, this is the most
 popular and widespread way to initiate a query/retrieve against a PACS
-server. The DICOM standard features an `alternative mechanism called
-C-Get
-<http://dclunie.blogspot.be/2016/05/to-c-move-is-human-to-c-get-divine.html>`_.
-As of Orthanc 1.4.1, C-Get is not supported yet (but work is in
-progress).
+server. The DICOM standard features an alternative mechanism called
+:ref:`DICOM C-Get <dicom-get>` that has been introduced in Orthanc
+1.7.0 (see below).
 
 *Note 2:* As :ref:`written above <dicom-pixel-data>`, the Orthanc
 engine is quite generic and is compatible with virtually any image
@@ -591,6 +590,57 @@
 <configuration>` (by default, all the transfer syntaxes are enabled).
 
 
+.. _dicom-get:
+
+C-Get: Retrieve with one single SCP
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Orthanc 1.7.0 introduces support for `DICOM C-Get SCP
+<http://dclunie.blogspot.be/2016/05/to-c-move-is-human-to-c-get-divine.html>`__.
+C-Get provides a simpler alternative to C-Move, in the case where the
+*issuer* and the *target* (as depicted in the section about
+:ref:`C-Move <dicom-move>`) correspond to the same modality.
+
+In the case of C-Get, contrarily to C-Move, the *target* modality
+doesn't need to act as a C-Store SCP. This has advantage of
+simplifying the design of the SCU (only one DICOM server is needed in
+the *source* modality), and to ease the network configuration (instead
+of being bidirectional as in query/retrieve through C-Move, C-Get is
+unidirectional from *issuer* to *source*, which simplifies firewall
+rules). Nevertheless, C-Get is less generic than C-Move and is rarely
+encountered in clinical PACS workflow. It is more often used by DICOM
+viewers. Also note that :ref:`DICOMweb WADO-RS <dicomweb>` is designed
+for the same kind of use cases than C-Get.
+
+To retrieve DICOM instances using C-Get, you must provide one ore more
+of the unique key attributes (``PatientID``, ``StudyInstanceUID``,
+``SeriesInstanceUID`` or ``SOPInstanceUID``). This information can for
+instance be retrieved through a :ref:`C-Find request <dicom-find>`.
+
+.. highlight:: json
+               
+As an example, let us consider the following minimalist :ref:`Orthanc
+configuration <configuration>`::
+
+  {
+    "DicomModalities" : {
+      "getscu" : [ "GETSCU", "localhost", 2000 ]
+    }
+  }
+
+.. highlight:: text
+               
+Given this configuration, here is a sample command-line to call the
+C-Get SCP of Orthanc using the `DCMTK
+<https://support.dcmtk.org/docs/dcmconv.html>`__ toolkit, given some
+known ``StudyInstanceUID``::
+
+    $ getscu -v localhost 4242 -aec ORTHANC -k "0008,0052=STUDY" -k "0020,000d=1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129"
+
+*Note:* As of Orthanc 1.7.0, Orthanc implements C-Get as a service
+provider (SCP) but not as a service user (SCU).
+
+
 
 Using HTTP instead of the DICOM protocol
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--- a/Sphinx/source/faq/security.rst	Wed May 20 07:06:07 2020 +0200
+++ b/Sphinx/source/faq/security.rst	Wed May 20 17:07:12 2020 +0200
@@ -154,7 +154,7 @@
 * For each modality that is defined in ``DicomModalities``,
   selectively specify what DICOM commands are allowed to be issued by
   the SCU of this modality by setting the suboptions ``AllowEcho``,
-  ``AllowFind``, ``AllowMove`` and ``AllowStore``. For instance, a
+  ``AllowFind``, ``AllowMove``, ``AllowStore`` and ``AllowGet``. For instance, a
   modality could be allowed to C-STORE images, but be disallowed to
   C-FIND the content of Orthanc. Here is a sample configuration to
   define a single modality that is only allowed to send DICOM
@@ -169,6 +169,7 @@
           "AllowEcho" : false,
           "AllowFind" : false,
           "AllowMove" : false,
+          "AllowGet" : false,
           "AllowStore" : true
         }
       }
--- a/Sphinx/source/users/docker-osimis.rst	Wed May 20 07:06:07 2020 +0200
+++ b/Sphinx/source/users/docker-osimis.rst	Wed May 20 17:07:12 2020 +0200
@@ -236,7 +236,8 @@
 in their JSON section or as soon as you define to ``true`` their
 specific environment variable.
 
-Below is a list of all plugins, their environment variable and their default configuration:
+Below is a list of all plugins, their environment variable and their default configuration 
+(only when their default configuration is different from the plugin defaults):
 
 
 .. below table is obtained by running orthanc-builder/docker/orthanc/generatePluginDoc.py
@@ -244,75 +245,90 @@
 
 +--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
 | Plugin                                           | Environment variable                             | Default configuration                                                                              |
-+==================================================+==================================================+====================================================================================================+
-| **Authorization**                                | ``AUTHORIZATION_PLUGIN_ENABLED``                 |                                                                                                    |
++==================================================+==================================================+====================================================================================================+     
+| **Authorization**                                | ``AUTHORIZATION_PLUGIN_ENABLED``                 |                                                                                                    |     
 +--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| **ConnectivityChecks**                           | ``CONNECTIVITY_CHECKS_PLUGIN_ENABLED``           |                                                                                                    |
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| **DicomWeb**                                     | ``DICOM_WEB_PLUGIN_ENABLED``                     | .. code-block:: json                                                                               |
-|                                                  |                                                  |                                                                                                    |
-|                                                  |                                                  |   {                                                                                                |
+| **ConnectivityChecks**                           | ``CONNECTIVITY_CHECKS_PLUGIN_ENABLED``           |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **DicomWeb**                                     | ``DICOM_WEB_PLUGIN_ENABLED``                     | .. code-block:: json                                                                               |     
+|                                                  |                                                  |                                                                                                    |     
+|                                                  |                                                  |   {                                                                                                |     
 |                                                  |                                                  |     "DicomWeb": {                                                                                  |
 |                                                  |                                                  |       "Enable": true                                                                               |
-|                                                  |                                                  |     }                                                                                              |
+|                                                  |                                                  |     }                                                                                              |     
 |                                                  |                                                  |   }                                                                                                |
 +--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| **GoogleCloudPlatform**                          | ``GOOGLE_CLOUD_PLATFORM_PLUGIN_ENABLED``         |                                                                                                    |
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
+| **GoogleCloudPlatform**                          | ``GOOGLE_CLOUD_PLATFORM_PLUGIN_ENABLED``         |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **Gdcm**                                         | ``GDCM_PLUGIN_ENABLED``                          | .. code-block:: json                                                                               |     
+|                                                  | Note: enabled by default                         |                                                                                                    |     
+|                                                  |                                                  |   {                                                                                                |     
+|                                                  |                                                  |     "Gdcm": {                                                                                      |     
+|                                                  |                                                  |       "Throttling": 4,                                                                             |     
+|                                                  |                                                  |       "RestrictTransferSyntaxes": [                                                                |     
+|                                                  |                                                  |         "1.2.840.10008.1.2.4.90",                                                                  |     
+|                                                  |                                                  |         "1.2.840.10008.1.2.4.91",                                                                  |     
+|                                                  |                                                  |         "1.2.840.10008.1.2.4.92",                                                                  |     
+|                                                  |                                                  |         "1.2.840.10008.1.2.4.93"                                                                   |     
+|                                                  |                                                  |       ]                                                                                            |     
+|                                                  |                                                  |     }                                                                                              |     
+|                                                  |                                                  |   }                                                                                                |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
 | **OrthancWebViewer**                             | ``ORTHANC_WEB_VIEWER_PLUGIN_ENABLED``            |                                                                                                    |
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| **OsimisWebViewerBasic**                         | ``OSIMIS_WEB_VIEWER1_PLUGIN_ENABLED``            |                                                                                                    |
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| **OsimisWebViewerBasicAlpha**                    | ``OSIMIS_WEB_VIEWER1_ALPHA_PLUGIN_ENABLED``      |                                                                                                    |
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **PostgreSQL**                                   | ``POSTGRESQL_PLUGIN_ENABLED``                    | .. code-block:: json                                                                               |        
-|                                                  |                                                  |                                                                                                    |        
-|                                                  |                                                  |   {                                                                                                |        
-|                                                  |                                                  |     "PostgreSQL": {                                                                                |
-|                                                  |                                                  |       "EnableIndex": true,                                                                         |        
-|                                                  |                                                  |       "EnableStorage": false,                                                                      |        
-|                                                  |                                                  |       "Port": 5432,                                                                                |        
-|                                                  |                                                  |       "Host": "HOST MUST BE DEFINED",                                                              |        
-|                                                  |                                                  |       "Database": "postgres",                                                                      |        
-|                                                  |                                                  |       "Username": "postgres",                                                                      |
-|                                                  |                                                  |       "Password": "postgres",                                                                      |        
-|                                                  |                                                  |       "EnableSsl": false,                                                                          |        
-|                                                  |                                                  |       "Lock": false                                                                                |        
-|                                                  |                                                  |     }                                                                                              |        
-|                                                  |                                                  |   }                                                                                                |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **MySQL**                                        | ``MYSQL_PLUGIN_ENABLED``                         | .. code-block:: json                                                                               |        
-|                                                  |                                                  |                                                                                                    |        
-|                                                  |                                                  |   {                                                                                                |        
-|                                                  |                                                  |     "MySQL": {                                                                                     |        
-|                                                  |                                                  |       "EnableIndex": true,                                                                         |        
-|                                                  |                                                  |       "EnableStorage": false,                                                                      |        
-|                                                  |                                                  |       "Port": 3306,                                                                                |        
-|                                                  |                                                  |       "Host": "HOST MUST BE DEFINED",                                                              |        
-|                                                  |                                                  |       "Database": "mysql",                                                                         |        
-|                                                  |                                                  |       "Username": "root",                                                                          |        
-|                                                  |                                                  |       "Password": "mysql",                                                                         |        
-|                                                  |                                                  |       "Lock": false                                                                                |        
-|                                                  |                                                  |     }                                                                                              |        
-|                                                  |                                                  |   }                                                                                                |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **Python**                                       | ``PYTHON_PLUGIN_ENABLED``                        |                                                                                                    |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **ServeFolders**                                 | ``SERVE_FOLDERS_PLUGIN_ENABLED``                 |                                                                                                    |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **Transfers**                                    | ``TRANSFERS_PLUGIN_ENABLED``                     |                                                                                                    |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **Worklists**                                    | ``WORKLISTS_PLUGIN_ENABLED``                     | .. code-block:: json                                                                               |        
-|                                                  |                                                  |                                                                                                    |        
-|                                                  |                                                  |   {                                                                                                |        
-|                                                  |                                                  |     "Worklists": {                                                                                 |        
-|                                                  |                                                  |       "Enable": true,                                                                              |        
-|                                                  |                                                  |       "Database": "/var/lib/orthanc/worklists"                                                     |        
-|                                                  |                                                  |     }                                                                                              |        
-|                                                  |                                                  |   }                                                                                                |        
-+--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+        
-| **Wsi**                                          | ``WSI_PLUGIN_ENABLED``                           |                                                                                                    |        
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **OsimisWebViewerBasic**                         | ``OSIMIS_WEB_VIEWER1_PLUGIN_ENABLED``            |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **OsimisWebViewerBasicAlpha**                    | ``OSIMIS_WEB_VIEWER1_ALPHA_PLUGIN_ENABLED``      |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **PostgreSQL**                                   | ``POSTGRESQL_PLUGIN_ENABLED``                    | .. code-block:: json                                                                               |     
+|                                                  |                                                  |                                                                                                    |     
+|                                                  |                                                  |   {                                                                                                |     
+|                                                  |                                                  |     "PostgreSQL": {                                                                                |     
+|                                                  |                                                  |       "EnableIndex": true,                                                                         |     
+|                                                  |                                                  |       "EnableStorage": false,                                                                      |     
+|                                                  |                                                  |       "Port": 5432,                                                                                |     
+|                                                  |                                                  |       "Host": "HOST MUST BE DEFINED",                                                              |     
+|                                                  |                                                  |       "Database": "postgres",                                                                      |     
+|                                                  |                                                  |       "Username": "postgres",                                                                      |     
+|                                                  |                                                  |       "Password": "postgres",                                                                      |
+|                                                  |                                                  |       "EnableSsl": false,                                                                          |     
+|                                                  |                                                  |       "Lock": false                                                                                |     
+|                                                  |                                                  |     }                                                                                              |     
+|                                                  |                                                  |   }                                                                                                |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **MySQL**                                        | ``MYSQL_PLUGIN_ENABLED``                         | .. code-block:: json                                                                               |     
+|                                                  |                                                  |                                                                                                    |
+|                                                  |                                                  |   {                                                                                                |     
+|                                                  |                                                  |     "MySQL": {                                                                                     |     
+|                                                  |                                                  |       "EnableIndex": true,                                                                         |     
+|                                                  |                                                  |       "EnableStorage": false,                                                                      |     
+|                                                  |                                                  |       "Port": 3306,                                                                                |     
+|                                                  |                                                  |       "Host": "HOST MUST BE DEFINED",                                                              |     
+|                                                  |                                                  |       "Database": "mysql",                                                                         |     
+|                                                  |                                                  |       "Username": "root",                                                                          |     
+|                                                  |                                                  |       "Password": "mysql",                                                                         |     
+|                                                  |                                                  |       "Lock": false                                                                                |     
+|                                                  |                                                  |     }                                                                                              |     
+|                                                  |                                                  |   }                                                                                                |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **Python**                                       | ``PYTHON_PLUGIN_ENABLED``                        |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **ServeFolders**                                 | ``SERVE_FOLDERS_PLUGIN_ENABLED``                 |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **Transfers**                                    | ``TRANSFERS_PLUGIN_ENABLED``                     |                                                                                                    |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **Worklists**                                    | ``WORKLISTS_PLUGIN_ENABLED``                     | .. code-block:: json                                                                               |     
+|                                                  |                                                  |                                                                                                    |     
+|                                                  |                                                  |   {                                                                                                |     
+|                                                  |                                                  |     "Worklists": {                                                                                 |     
+|                                                  |                                                  |       "Enable": true,                                                                              |     
+|                                                  |                                                  |       "Database": "/var/lib/orthanc/worklists"                                                     |     
+|                                                  |                                                  |     }                                                                                              |     
+|                                                  |                                                  |   }                                                                                                |     
++--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+     
+| **Wsi**                                          | ``WSI_PLUGIN_ENABLED``                           |                                                                                                    |     
 +--------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------+  
+
 Under the hood
 --------------