diff Sphinx/source/plugins/worklists-plugin.rst @ 31:93bbfaf0e62c

worklist instructions migrated to a specific page, indexing of Osimis Web viewer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 20 Jul 2016 11:35:54 +0200
parents 25fa874803ab
children a52f1dc48ebc
line wrap: on
line diff
--- a/Sphinx/source/plugins/worklists-plugin.rst	Wed Jul 20 11:13:46 2016 +0200
+++ b/Sphinx/source/plugins/worklists-plugin.rst	Wed Jul 20 11:35:54 2016 +0200
@@ -1,10 +1,132 @@
 .. _worklists-plugin:
 
 
-Modality Worklists plugin
-=========================
+Sample Modality Worklists plugin
+================================
+
+This page describes the **official sample plugin** turns Orthanc into
+a server of DICOM worklists. The worklists must be provided in some
+folder of the filesystem by an external script.
+
+The source code of this sample plugin is `available in the source
+distribution of Orthanc
+<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__
+(GPLv3 license).  The plugin will serve the worklists stored in some
+folder on the filesystem. This mimics the behavior of the ``wlmscpfs``
+command-line tool from the `DCMTK software
+<http://support.dcmtk.org/docs/wlmscpfs.html>`__. ``dump2dcm`` might
+be a very `useful companion tool
+<http://support.dcmtk.org/docs/dump2dcm.html>`__ to feed the sample
+plugin with worklists for some separate maintenance script.
+
+General information about the support of DICOM worklists in Orthanc is
+explained in the :ref:`FAQ <worklist>`.
+
+
+
+How should I use it ?
+---------------------
+
+- download `DCMTK utilities <http://dicom.offis.de/download/dcmtk/release/bin/>`__
+- download sample `worklist files <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ from the Orthanc source code and copy them in a dedicated folder. 
+
+.. highlight:: javascript
+ 
+- Enable the ModalityWorklist plugin in your config.json by adding this section::
+	
+    "Worklists" : {
+      "Enable": true,
+      "Database": "WorklistsDatabase"  //this is the path to the folder with the worklist files.  Use absolute path !
+    },
+
+- Add the plugin to the list of plugins to load (this is an example for Windows)::
+	
+	"Plugins" : [
+	  "OsimisWebViewer.dll",
+	  "ModalityWorklists.dll" // on Linux, use ModalityWorklists.so
+	],
+
+- Add the findscu utility to the list of know modalities (considering findscu and Orthanc runs on the same machine)::
+	
+    "DicomModalities" : {
+      "horos" : [ "HOROS", "192.168.0.8", 11112 ],
+      "findscu" : [ "FINDSCU", "127.0.0.1", 1234 ]
+    },
+
+.. highlight:: bash
+	
+- Launch Orthanc as usual, make sure to pass him the configuration file (ex for Windows)::
+	
+	Orthanc.exe config.json
+
+- In a prompt, launch a findscu request to ask Orthanc to return all Worklists for 'CT' modalities (considering findscu and Orthanc both runs on your machine: 127.0.0.1 is the Orthanc url and 4242 is the Orthanc DICOM port)::
+
+    findscu -W -k "ScheduledProcedureStepSequence[0].Modality=CT" 127.0.0.1 4242
+
+- findscu should display the matching worklists
 
-This **official** plugin turns Orthanc into a server of DICOM
-worklists. The worklists must be provided in some folder of the
-filesystem by an external script. The support of DICOM worklists in
-Orthanc is explained in the :ref:`FAQ <worklist>`.
+How can I create worklist files ?
+---------------------------------
+
+- let's start from an existing `worklist file <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__.
+
+- dump the sample worklist file to a DCMTK dump file::
+
+    dcmdump.exe wklist1.wl > sampleWorklist.txt
+	
+- you'll get something like::
+
+    # Dicom-File-Format
+    
+    # Dicom-Meta-Information-Header
+    # Used TransferSyntax: Little Endian Explicit
+    (0002,0000) UL 202                                      #   4, 1 FileMetaInformationGroupLength
+    (0002,0001) OB 00\01                                    #   2, 1 FileMetaInformationVersion
+    (0002,0002) UI [1.2.276.0.7230010.3.1.0.1]              #  26, 1 MediaStorageSOPClassUID
+    (0002,0003) UI [1.2.276.0.7230010.3.1.4.2831176407.11154.1448031138.805061] #  58, 1 MediaStorageSOPInstanceUID
+    (0002,0010) UI =LittleEndianExplicit                    #  20, 1 TransferSyntaxUID
+    (0002,0012) UI [1.2.276.0.7230010.3.0.3.6.0]            #  28, 1 ImplementationClassUID
+    (0002,0013) SH [OFFIS_DCMTK_360]                        #  16, 1 ImplementationVersionName
+    
+    # Dicom-Data-Set
+    # Used TransferSyntax: Little Endian Explicit
+    (0008,0005) CS [ISO_IR 100]                             #  10, 1 SpecificCharacterSet
+    (0008,0050) SH [00000]                                  #   6, 1 AccessionNumber
+    (0010,0010) PN [VIVALDI^ANTONIO]                        #  16, 1 PatientName
+    (0010,0020) LO [AV35674]                                #   8, 1 PatientID
+    (0010,0030) DA [16780304]                               #   8, 1 PatientBirthDate
+    (0010,0040) CS [M]                                      #   2, 1 PatientSex
+    (0010,2000) LO [METASTASIS]                             #  10, 1 MedicalAlerts
+    (0010,2110) LO [TANTAL]                                 #   6, 1 Allergies
+    (0020,000d) UI [1.2.276.0.7230010.3.2.101]              #  26, 1 StudyInstanceUID
+    (0032,1032) PN [SMITH]                                  #   6, 1 RequestingPhysician
+    (0032,1060) LO [EXAM6]                                  #   6, 1 RequestedProcedureDescription
+    (0040,0100) SQ (Sequence with explicit length #=1)      # 176, 1 ScheduledProcedureStepSequence
+      (fffe,e000) na (Item with explicit length #=12)         # 168, 1 Item
+    	(0008,0060) CS [MR]                                     #   2, 1 Modality
+    	(0032,1070) LO [BARIUMSULFAT]                           #  12, 1 RequestedContrastAgent
+    	(0040,0001) AE [AA32\AA33]                              #  10, 2 ScheduledStationAETitle
+    	(0040,0002) DA [19951015]                               #   8, 1 ScheduledProcedureStepStartDate
+    	(0040,0003) TM [085607]                                 #   6, 1 ScheduledProcedureStepStartTime
+    	(0040,0006) PN [JOHNSON]                                #   8, 1 ScheduledPerformingPhysicianName
+    	(0040,0007) LO [EXAM74]                                 #   6, 1 ScheduledProcedureStepDescription
+    	(0040,0009) SH [SPD3445]                                #   8, 1 ScheduledProcedureStepID
+    	(0040,0010) SH [STN456]                                 #   6, 1 ScheduledStationName
+    	(0040,0011) SH [B34F56]                                 #   6, 1 ScheduledProcedureStepLocation
+    	(0040,0012) LO (no value available)                     #   0, 0 PreMedication
+    	(0040,0400) LT (no value available)                     #   0, 0 CommentsOnTheScheduledProcedureStep
+      (fffe,e00d) na (ItemDelimitationItem for re-encoding)   #   0, 0 ItemDelimitationItem
+    (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) #   0, 0 SequenceDelimitationItem
+    (0040,1001) SH [RP454G234]                              #  10, 1 RequestedProcedureID
+    (0040,1003) SH [LOW]                                    #   4, 1 RequestedProcedurePriority
+	
+	
+- open sampleWorklist.txt file in a text editor and modify/add/remove some Dicom Tags
+
+- then, generate a new worklist file with dump2dcm::
+
+	dump2dcm.exe sampleWorklist.txt newWorklist.wl
+	
+- copy that file in the folder where Orthanc searches for its worklist files and that's it !
+
+- of course, you'll automate this worklist generation workflow with some scripting language.