worklist

hello every one,

hope you are all fine. please I like to know how to access the worklist
as i am only able to access the server as per below image

as i understand that worklist you can add patients and assign to them the image they will undergo etc . .

regards
hassan abbas

New Bitmap Image.jpg

Hassan,

That requires the MWL Plug-in, which I think comes with the Main Orthanc package, e.g. “libModalityWorklists.dylib”, or “libModalityWorklists.so”
That has to be configured in your Plug-ins in the Orthanc Config File:

“Plugins” : [
“libModalityWorklists.dylib”,
],

and you also have to specify the location of the MWL folder itself:

“Worklists” : {
“Enable”: true,
“Database”: “WorklistsDatabase” // Path to the folder with the worklist files, might have to be full path.
},

There is a bit of a tutorial here:

Sample Modality Worklists plugin

I don’t think there is an interface built-in to the Explorer for that. You basically need to create a .txt template for an order from the RIS system or HL7 message to create something like the example, and then convert that to a .wl file using dump2dcm from the Dicom Toolkit. dcmdump goes the other way, convert a .wl file to a dump in readable form. Your acquisition devices can then query Orthanc for the worklist files, somewhat explained in the documentation in the link provided.

I actually just wrote a Python Plugin that’ll create a .txt file from passed in arguments via the REST API, and then convert that a .wl by executing dump2dcm from the Python script… Could pretty easily make one to delete them also. It is setup to just name them by the accession number.

e.g. REST call:

curl --request POST --url http://localhost:8042/mwl/file/make --data ‘{“MediaStorageSOPClassUID”:“MediaStorageSOPClassUID”,“CharSet”:“CharSet”,“AccessionNumber”:“AccessionNumber”,“Modality”:“Modality”,“RequestingPhysician”:“RequestingPhysician”,“PatientName”:“PatientName”,“PatientID”:“PatientID”,“PatientBirthDate”:“PatientBirthDate”,“PatientSex”:“PatientSex”,“MedicalAlerts”:“MedicalAlerts”,“Allergies”:“Allergies”,“AdditionalPatientHistory”:“AdditionalPatientHistory”,“StudyInstanceUID”:“StudyInstanceUID”,“RequestingPhysician”:“RequestingPhysician”,“RequestedProcedureDescription”:“RequestedProcedureDescription”,“ScheduleStationAETitle”:“ScheduleStationAETitle”,“ScheduledProcedureStepStartDate”:“ScheduledProcedureStepStartDate”,“ScheduledProcedureStepStartTime”:“ScheduledProcedureStepStartTime”,“RequestedProcedureID”:“RequestedProcedureID”,“RequestedProcedurePriority”:“RequestedProcedurePriority”}’

That requires getting the path to the Worklist Folder via the Config, and also DCMTK. There is a REST call to get the Config from the Config file via a Python script, and directoy. Below if from a .py script.

e.g # pathtodcmtk = “/usr/bin/”
pathtodcmtk = “/usr/local/bin/”
pathtoworklist = json.loads(orthanc.GetConfiguration())[‘Worklists’][‘Database’] + ‘/’
filename = pathtoworklist + query[‘AccessionNumber’]

I don’t think managing that is built into Orthanc, but I think once you handle managing the files in the WorklistsDatabase Folder that Orthanc will handle the requests from Imaging devices. I think you would have to add something to your RIS system or whatever you are using to handle management of the Worklist Files themselves.

I’ve attached a sample Python Script that creates a .wl file in the WorklistsDatabase Folder, as well as a generated .txt file and generated .wl file. When you execute dcmdump fro the CLI you should get the .txt file, and when you execute dump2dcm from the CLI you should get the .wl file. It automatically put those files in the WorklistsDatabase folder.

In the Orthanc config.json, you would need to specify:

“Plugins” : [
“libOrthancPython.mainline.dylib”
],

The path to the Python Script.

“PythonScript” : “mwlcreate.py”,
“PythonVerbose” : true,

You would pass in the actual values for the template with the CURL call to the REST API.
The script is fairly well documented.

mwlcreate.py (6.72 KB)

AccessionNumber.txt (1.84 KB)

AccessionNumber.wl (816 Bytes)

I really appreciate and thank you for your reply

regards