Mercurial > hg > orthanc-book
changeset 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 | 79b6d3ea92aa |
children | 03b32d0e49f2 |
files | Sphinx/source/faq/worklist.rst Sphinx/source/plugins.rst Sphinx/source/plugins/dicomweb.rst Sphinx/source/plugins/postgresql.rst Sphinx/source/plugins/serve-folders.rst Sphinx/source/plugins/webviewer.rst Sphinx/source/plugins/worklists-plugin.rst Sphinx/source/users/cookbook.rst |
diffstat | 8 files changed, 153 insertions(+), 138 deletions(-) [+] |
line wrap: on
line diff
--- a/Sphinx/source/faq/worklist.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/faq/worklist.rst Wed Jul 20 11:35:54 2016 +0200 @@ -20,128 +20,14 @@ Orthanc user to provide the worklist generator that is best suited for her use. -A `sample plugin -<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ -is available to 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. +A :ref:`sample plugin <worklists-plugin>` is available in the source +distribution of Orthanc to serve the worklists stored in some folder +on the filesystem. This sample plugin mimics the behavior of the +``wlmscpfs`` command-line tool from the `DCMTK software +<http://support.dcmtk.org/docs/wlmscpfs.html>`__. For more complex or integrated workflows where you must implement a custom MWL plugin, please check the `documentation of the part of the Orthanc plugin SDK <https://orthanc.chu.ulg.ac.be/sdk/group__Worklists.html>`__ that is related to the management of worklists. - - -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 - -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. - -
--- a/Sphinx/source/plugins.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/plugins.rst Wed Jul 20 11:35:54 2016 +0200 @@ -39,11 +39,11 @@ .. toctree:: :maxdepth: 1 - plugins/serve-folders.rst + plugins/webviewer.rst plugins/dicomweb.rst plugins/postgresql.rst - plugins/webviewer.rst plugins/worklists-plugin.rst + plugins/serve-folders.rst .. _plugins-contributed: @@ -51,6 +51,11 @@ Index of the contributed plugins -------------------------------- +* `Osimis <http://osimis.io/>`__ maintains an evolution of the + official Web viewer plugin. The Osimis plugin adds tools for + measuring, for viewing multiple series, and for split-pane. `Check + out their source code + <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__. * `DWV Orthanc Plugin <https://github.com/ivmartel/dwv-orthanc-plugin>`__: This plugin by Yves Martelli is based on `dwv
--- a/Sphinx/source/plugins/dicomweb.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/plugins/dicomweb.rst Wed Jul 20 11:35:54 2016 +0200 @@ -50,7 +50,7 @@ .. highlight:: json -You of course first have to :ref:`install Orthanc <compiling>`. Once +You of course first have to :ref:`install Orthanc <binaries>`. Once Orthanc is installed, you must change the :ref:`configuration file <configuration>` to tell Orthanc where it can find the plugin: This is done by properly modifying the ``Plugins`` option. You could for
--- a/Sphinx/source/plugins/postgresql.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/plugins/postgresql.rst Wed Jul 20 11:35:54 2016 +0200 @@ -46,7 +46,7 @@ .. highlight:: json -You of course first have to :ref:`install Orthanc <compiling>`, with a +You of course first have to :ref:`install Orthanc <binaries>`, with a version above 0.9.1. You then have to **create a database** dedicated to Orthanc on some PostgreSQL server. Please refer to the `PostgreSQL documentation
--- a/Sphinx/source/plugins/serve-folders.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/plugins/serve-folders.rst Wed Jul 20 11:35:54 2016 +0200 @@ -1,15 +1,17 @@ .. _serve-folders: -Serve Folders plugin -==================== +Sample Serve Folders plugin +=========================== This **official** plugin enables Orthanc to serve additional folders -from the filesystem using its embedded Web server. - -This plugin is extremely useful to create new Web applications on the -top of the REST API of Orthanc, as it allows to fulfill the -`same-origin policy +from the filesystem using its embedded Web server. This plugin is +extremely useful when creating new Web applications on the top of the +REST API of Orthanc, as it allows to fulfill the `same-origin policy <https://en.wikipedia.org/wiki/Same-origin_policy>`__ without setting up a reverse proxy. +The source code of this sample plugin is `available in the source +distribution of Orthanc +<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ServeFolders/>`__ +(GPLv3 license).
--- a/Sphinx/source/plugins/webviewer.rst Wed Jul 20 11:13:46 2016 +0200 +++ b/Sphinx/source/plugins/webviewer.rst Wed Jul 20 11:35:54 2016 +0200 @@ -18,7 +18,7 @@ .. highlight:: text The procedure to compile these plugins is similar of that for the -:ref:`core of Orthanc <compiling>`. The following commands should work +:ref:`core of Orthanc <binaries>`. The following commands should work for every UNIX-like distribution (including GNU/Linux):: $ mkdir Build
--- 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.