GDT interface for Orthanc as Dockerimage

366 views
Skip to first unread message

Julian Hartig

unread,
Jul 18, 2020, 8:39:13 AM7/18/20
to Orthanc Users
Hallo,

I think this one will be interesting for any doctor running a practice in Germany and having the need to store DICOM information.

Alongside of selecting a new ultrasound device for my doctor's office, I setup Orthanc and wrote some (mainly) python code to glue it to the GDT interface most German AIS (Arztinformationssysteme - as opposed to e.g. the RIS used by radiologists) use for communicating with external applications and devices. This comes together with a small REST API extension that allows creating worklist files in the ModalityWorklists plugin's directory. Part of the plugin is also a small fix for a 'quirk' of Sonoscape devices. As they are sending lossy-compressed JPEG images in RGB representation, I've added a transcoding functionality into the plugin to convert these files to YBR and store them more efficiently. This is especially relevant for cine loop sequences which are quite big otherwise (ca. 100M for 200 frames as opposed to 10M with proper color representation and compression).

This enables us to start examinations from our AIS and to list available imaging resources there and open them up in a DICOM viewer by click.

The Github containing the Dockerfile and the required scripts including the plugin and a detailed README is here: https://github.com/crispinus2/orthanc-gdt , pre-built images are on Docker Hub: https://hub.docker.com/r/crispinus/orthanc-gdt .

While there has not been testing done with different AIS (as we only do have Medical Office by Indamed, I myself can't test others) or different ultrasound devices (we decided on buying a Sonoscape P40 and that is the one I tested with) it should be compatible in principle, as it adheres to the standards existing. Of course I'm also willing to modify/extend the plugin, if this should be necessary to make it support new AIS and/or devices.

Best regards!
Julian Hartig
(General Practitioner in Nachrodt-Wiblingwerde / Germany, NRW)

Alain Mazy

unread,
Jul 20, 2020, 9:37:05 AM7/20/20
to Julian Hartig, Orthanc Users
Hi Julian,

Thanks a lot for this contribution !  This is a wonderful example of a complete customization of Orthanc.  I'm sure we'll use it as a reference for python plugins & worklist usage !

Best regards,

Alain.


--
You received this message because you are subscribed to the Google Groups "Orthanc Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to orthanc-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/orthanc-users/a381d40a-2a51-48a1-abc7-e203297121f4o%40googlegroups.com.


--

Alain Mazy / Orthanc-Studio Manager & Software Developer
a...@osimis.io / +32 494 31 67 27

Osimis

OSIMIS S.A. 
Quai Banning 6BE-4000 Liège 
www.osimis.io

Twitter LinkedIn


Julian Hartig

unread,
Jul 20, 2020, 2:51:34 PM7/20/20
to Orthanc Users
Hallo Alain,
I'm delighted to hear that. I plan on extending the GDT-to-Worklist interface in the next days so that putting a GDT file in a certain configurable directory will suffice for creation of the corresponding worklist file. This will make integration a bit easier for AIS that don't support running PHP scripts as commands (as the software we use, Medical Office, does). And as another plus it won't require installing any additional software on the clients - you'd just have to mount this directory as a network share on the clients and the AIS on them can put their GDT files into it. On the downside, I won't be able to gather all the information from the GDT file I can gather via the REST API call, concerning especially the performing physician and the information for the study description.

Best regards
Julian

Sébastien Jodogne

unread,
Aug 4, 2020, 2:56:22 PM8/4/20
to Orthanc Users
Hello Julian,

As written by Alain, thanks so much for providing the Orthanc community with this very interesting plugin!

I have indexed your work in the Orthanc Book:

Kind Regards,
Sébastien-

Rainer David Kirchhofer

unread,
Sep 28, 2022, 4:43:24 AM9/28/22
to Orthanc Users
Hello Julian
I managed to have your Orthanc-GDT version installed with Docker on my Synology. Awesome work!! You wrote: "I plan on extending the GDT-to-Worklist interface in the next days so that putting a GDT file in a certain configurable directory will suffice for creation of the corresponding worklist file. "
Has this been done yet or not? I put some GDT files into the directory but no worklist was created, so I suspect this functionality does not yet exist ? 
THanks 
Rainer

Julian Hartig

unread,
Sep 28, 2022, 6:03:25 AM9/28/22
to Rainer David Kirchhofer, Orthanc Users
Hallo Rainer,
indeed there is no such functionality as of yet, as we didn't have a demand for it on our end, we're happy with the REST API. However, adding this functionality would not be that complicated - the Python watchdog module already implements the necessary tools to observe files or directories for changes, so there would be only a few lines of code needed to glue this together with the worklist-file generation method.

Best regards
Julian

You received this message because you are subscribed to a topic in the Google Groups "Orthanc Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/orthanc-users/NO7MnWzKsAc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to orthanc-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/orthanc-users/81cbe5ba-4f47-4d51-9947-9eec1d8db7bbn%40googlegroups.com.

Rainer David Kirchhofer

unread,
Sep 29, 2022, 3:03:59 AM9/29/22
to Julian Hartig, Orthanc Users
Hello Julian

Thank you for your kind response, thats what I was thinking. I already have developed a very simplistic GDT parsing method which would then call the Rest API. What is still missing is an implementation of the watchdog module then. Do you have any hint where I could implement that in the code ?

Best Regards
Rainer

Julian Hartig

unread,
Sep 29, 2022, 4:33:08 AM9/29/22
to Rainer David Kirchhofer, Orthanc Users
Hallo Rainer,
I'd suggest to start the watchdog's observer thread within the OnChange-method. This method is invoked upon Orthanc status changes and already contains an if-clause for Orthanc's startup (currently, the CleanupWorklist() method is invoked once upon startup from there).

Best Regards
Julian
Reply all
Reply to author
Forward
0 new messages