Mercurial > hg > orthanc-book
annotate Sphinx/source/faq/worklist.rst @ 13:32c903a2ad04
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 18 Jun 2016 14:58:47 +0200 |
parents | 1a4e870d4953 |
children | 98c0c61e7931 |
rev | line source |
---|---|
5 | 1 Does Orthanc support worklists? |
7
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
2 =============================== |
5 | 3 |
7
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
4 Orthanc supports DICOM Modality Worklists (MWL) through its `plugin |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
5 SDK |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
6 <https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__. |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
7 In other words, Orthanc can act as a worklist server (C-Find SCP), but |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
8 an user-defined plugin must be provided to answer a list of worklists |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
9 given a MWL query. |
5 | 10 |
7
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
11 The rationale for using plugins instead of providing a built-in MWL |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
12 mechanism, is that the way worklists are generated is very specific to |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
13 the clinical flows and to the manufacturer of your `RIS system |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
14 <https://en.wikipedia.org/wiki/Radiology_information_system>`__. |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
15 Indeed, depending on the situation, worklists can be generated either |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
16 from HL7 messages, from calls to a Web service (e.g. through FHIR), or |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
17 from a direct access to some RIS database. It is thus up to the |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
18 Orthanc user to provide the worklist generator that is best suited for |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
19 her use. |
5 | 20 |
7
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
21 A `sample plugin |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
22 <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
23 is available to serve the worklists stored in some folder on the |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
24 filesystem. This mimics the behavior of the ``wlmscpfs`` command-line |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
25 tool from the `DCMTK software |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
26 <http://support.dcmtk.org/docs/wlmscpfs.html>`__. ``dump2dcm`` might |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
27 be a very `useful companion tool |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
28 <http://support.dcmtk.org/docs/dump2dcm.html>`__ to feed the sample |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
29 plugin with worklists for some separate maintenance script. |
5 | 30 |
7
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
31 For more complex or integrated workflows where you must implement a |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
32 custom MWL plugin, please check the `documentation of the part of the |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
33 Orthanc plugin SDK |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
34 <https://orthanc.chu.ulg.ac.be/sdk/group__Worklists.html>`__ that is |
485504440bea
Improved Does Orthanc support worklists?
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
35 related to the management of worklists. |
11
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
36 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
37 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
38 How should I use it ? |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
39 --------------------- |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
40 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
41 - download `DCMTK utilities <http://dicom.offis.de/download/dcmtk/release/bin/>`__ |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
42 - 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. |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
43 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
44 .. highlight:: javascript |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
45 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
46 - Enable the ModalityWorklist plugin in your config.json by adding this section:: |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
47 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
48 "Worklists" : { |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
49 "Enable": true, |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
50 "Database": "WorklistsDatabase" //this is the path to the folder with the worklist files. Use absolute path ! |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
51 }, |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
52 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
53 - Add the plugin to the list of plugins to load (this is an example for Windows):: |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
54 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
55 "Plugins" : [ |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
56 "OsimisWebViewer.dll", |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
57 "ModalityWorklists.dll" // on Linux, use ModalityWorklists.so |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
58 ], |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
59 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
60 - Add the findscu utility to the list of know modalities (considering findscu and Orthanc runs on the same machine):: |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
61 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
62 "DicomModalities" : { |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
63 "horos" : [ "HOROS", "192.168.0.8", 11112 ], |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
64 "findscu" : [ "FINDSCU", "127.0.0.1", 1234 ] |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
65 }, |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
66 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
67 .. highlight:: bash |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
68 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
69 - Launch Orthanc as usual, make sure to pass him the configuration file (ex for Windows):: |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
70 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
71 Orthanc.exe config.json |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
72 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
73 - 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):: |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
74 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
75 findscu -W -k "ScheduledProcedureStepSequence[0].Modality=CT" 127.0.0.1 4242 |
2394454105ee
how to use the DicomWorklist plugin
Alain Mazy <alain@mazy.be>
parents:
7
diff
changeset
|
76 |
12 | 77 - findscu should display the matching worklists |
78 | |
79 How can I create worklist files ? | |
80 --------------------------------- | |
81 | |
82 - let's start from an existing `worklist file <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__. | |
83 | |
84 - dump the sample worklist file to a DCMTK dump file:: | |
85 | |
86 dcmdump.exe wklist1.wl > sampleWorklist.txt | |
87 | |
88 - you'll get something like:: | |
89 | |
90 # Dicom-File-Format | |
91 | |
92 # Dicom-Meta-Information-Header | |
93 # Used TransferSyntax: Little Endian Explicit | |
94 (0002,0000) UL 202 # 4, 1 FileMetaInformationGroupLength | |
95 (0002,0001) OB 00\01 # 2, 1 FileMetaInformationVersion | |
96 (0002,0002) UI [1.2.276.0.7230010.3.1.0.1] # 26, 1 MediaStorageSOPClassUID | |
97 (0002,0003) UI [1.2.276.0.7230010.3.1.4.2831176407.11154.1448031138.805061] # 58, 1 MediaStorageSOPInstanceUID | |
98 (0002,0010) UI =LittleEndianExplicit # 20, 1 TransferSyntaxUID | |
99 (0002,0012) UI [1.2.276.0.7230010.3.0.3.6.0] # 28, 1 ImplementationClassUID | |
100 (0002,0013) SH [OFFIS_DCMTK_360] # 16, 1 ImplementationVersionName | |
101 | |
102 # Dicom-Data-Set | |
103 # Used TransferSyntax: Little Endian Explicit | |
104 (0008,0005) CS [ISO_IR 100] # 10, 1 SpecificCharacterSet | |
105 (0008,0050) SH [00000] # 6, 1 AccessionNumber | |
106 (0010,0010) PN [VIVALDI^ANTONIO] # 16, 1 PatientName | |
107 (0010,0020) LO [AV35674] # 8, 1 PatientID | |
108 (0010,0030) DA [16780304] # 8, 1 PatientBirthDate | |
109 (0010,0040) CS [M] # 2, 1 PatientSex | |
110 (0010,2000) LO [METASTASIS] # 10, 1 MedicalAlerts | |
111 (0010,2110) LO [TANTAL] # 6, 1 Allergies | |
112 (0020,000d) UI [1.2.276.0.7230010.3.2.101] # 26, 1 StudyInstanceUID | |
113 (0032,1032) PN [SMITH] # 6, 1 RequestingPhysician | |
114 (0032,1060) LO [EXAM6] # 6, 1 RequestedProcedureDescription | |
115 (0040,0100) SQ (Sequence with explicit length #=1) # 176, 1 ScheduledProcedureStepSequence | |
116 (fffe,e000) na (Item with explicit length #=12) # 168, 1 Item | |
117 (0008,0060) CS [MR] # 2, 1 Modality | |
118 (0032,1070) LO [BARIUMSULFAT] # 12, 1 RequestedContrastAgent | |
119 (0040,0001) AE [AA32\AA33] # 10, 2 ScheduledStationAETitle | |
120 (0040,0002) DA [19951015] # 8, 1 ScheduledProcedureStepStartDate | |
121 (0040,0003) TM [085607] # 6, 1 ScheduledProcedureStepStartTime | |
122 (0040,0006) PN [JOHNSON] # 8, 1 ScheduledPerformingPhysicianName | |
123 (0040,0007) LO [EXAM74] # 6, 1 ScheduledProcedureStepDescription | |
124 (0040,0009) SH [SPD3445] # 8, 1 ScheduledProcedureStepID | |
125 (0040,0010) SH [STN456] # 6, 1 ScheduledStationName | |
126 (0040,0011) SH [B34F56] # 6, 1 ScheduledProcedureStepLocation | |
127 (0040,0012) LO (no value available) # 0, 0 PreMedication | |
128 (0040,0400) LT (no value available) # 0, 0 CommentsOnTheScheduledProcedureStep | |
129 (fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem | |
130 (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem | |
131 (0040,1001) SH [RP454G234] # 10, 1 RequestedProcedureID | |
132 (0040,1003) SH [LOW] # 4, 1 RequestedProcedurePriority | |
133 | |
134 | |
135 - open sampleWorklist.txt file in a text editor and modify/add/remove some Dicom Tags | |
136 | |
137 - then, generate a new worklist file with dump2dcm:: | |
138 | |
139 dump2dcm.exe sampleWorklist.txt newWorklist.wl | |
140 | |
141 - copy that file in the folder where Orthanc searches for its worklist files and that's it ! | |
142 | |
143 - of course, you'll automate this worklist generation workflow with some scripting language. | |
144 | |
145 |