Discussion:
Best open source API for developing PACS system
(too old to reply)
e***@gmail.com
2015-05-16 05:02:20 UTC
Permalink
I'm newbie in DICOM and PACS. I have to make PACS system for my company (both PACS client and server). My question is what API is suitable for this project?
Chris Hafey
2015-05-16 06:19:58 UTC
Permalink
Post by e***@gmail.com
I'm newbie in DICOM and PACS. I have to make PACS system for my company (both PACS client and server). My question is what API is suitable for this project?
I am not sure what you are asking here, but most PACS systems use proprietary/custom protocols between the client and server. It is possible to use DICOM standard protocols for most client/server communication and there are two choices for this - DIMSE (port 104 TCP protocol) or DICOMweb (RESTful APIs). DIMSE is the more complete and mature protocol and is therefore something you can depend upon today. DICOMweb has a lot of momentum behind is not widely available yet (due to being new) and doesn't have all the functionality of DIMSE (yet). Which protocol is best for you really depends on your requirements
e***@gmail.com
2015-05-16 12:18:46 UTC
Permalink
Post by Chris Hafey
Post by e***@gmail.com
I'm newbie in DICOM and PACS. I have to make PACS system for my company (both PACS client and server). My question is what API is suitable for this project?
I am not sure what you are asking here, but most PACS systems use proprietary/custom protocols between the client and server. It is possible to use DICOM standard protocols for most client/server communication and there are two choices for this - DIMSE (port 104 TCP protocol) or DICOMweb (RESTful APIs). DIMSE is the more complete and mature protocol and is therefore something you can depend upon today. DICOMweb has a lot of momentum behind is not widely available yet (due to being new) and doesn't have all the functionality of DIMSE (yet). Which protocol is best for you really depends on your requirements
I know that to develop PACS we need DICOM protocol, but here I need recommendation what framework is suitable. I found that LEADTOOLS SDK sounds good for develop PACS system, but not open source. I have search the possibility for open source framework is DCMTK, ClearCanvas, or Dvtk. Which one is more recommended? (I have tried Dvtk, but seems not suitable for developing PACS.)
David Clunie
2015-05-16 12:40:22 UTC
Permalink
I see you have clarified that it is an open source toolkit that
you are looking for, in response to the reply from Chris.

Here is the direct link to a list in my FAQ:

http://www.dclunie.com/medical-image-faq/html/part8.html#DICOMToolkits

It is probably a bit out of date and there may be stale links.

Don't forget that many dead links can probably be found via the Internet
Archive:

http://archive.org/web/web.php

though I am not sure you want to be using an unmaintained toolkit (though
some folks take over toolkit maintenance for dead projects when it has a
particular set of features they like, on a platform they like).

David
Post by e***@gmail.com
I know that to develop PACS we need DICOM protocol, but here I need recommendation what framework is suitable. I found that LEADTOOLS SDK sounds good for develop PACS system, but not open source. I have search the possibility for open source framework is DCMTK, ClearCanvas, or Dvtk. Which one is more recommended? (I have tried Dvtk, but seems not suitable for developing PACS.)
Ravindran Padmanabhan
2015-05-17 05:44:10 UTC
Permalink
Hi,

From experience of setting up a development team for many startups, I would share my experiences.

1. Decide on the platform Windows Only or Linux, Windows and Mac.
2. Choose the target devices, RISC/Soc/ARM or CISC/Intel/AMD.
3. Scope of your PACS DIMSE services. Just basic PACS (Store or Q/R) or extending this to a comprehensive IHE framework (MWL/MPPS/WADO/BrokerLess Integration with RIS and HIS) or later to DICOMWeb.
4. Development Platform .net / Java / C++;

There are few Framework that I suggest, that to me are reasonably active with development has a great Open-Source framework to build upon.

1. Clearcanvas : Pure .net (only c# and SqlServer), good engineering (some areas are over engineered and complex to understand), scalable and reliable. Having the track record of handling thousands of studies, Work only on .net so mostly Windows Only. Check this link : http://clearcanvas.github.io/.

You can build upon this platform for MWL, MPPS, HL7, WADO etc... Have a DICOM Server and Client (Workstation) completely open Source. No Web viewing.

2. Dcm4chee : Java multi platform and multiple hardware device (RISC or CISC), very reliable and stable, good helping community. Most of the IHE framework are implemented or in development. Java, J2EE, many database supported. Check this Link : http://www.dcm4che.org/

Dcm4chee is a complete Server Platform, the client side I recommend - Weasis, Oviyam, Mayam, Osirix and Clearcanvas Workstation.

3. Orthanc : Very lightweight yet powerful C++ DICOM Server platform. The core is C++, support RESTFul-Api so any language can control and take advantage of its server services. I see this evolving very fast though, I have tested a router on Raspberry Pi, it worked. Used this on a QNAP Nas box as a Stand alone archive (RnD) without any external hardware. Currently using it as a Router to sync images with Cloud. Check this link : http://www.orthanc-server.com/

Orthanc is a complete Server Platform, the client side I recommend - Weasis, Oviyam, Mayam, Osirix and Clearcanvas Workstation.

4. Dcmtk : This is Purely C++ and not application like the above but pure DICOM DIMSE implementation. Good starting point for any DICOM Learners. There are large application are build on these. Top companies have used these code base. Check this Link : http://dicom.offis.de/dcmtk.php.en.

There are few other options, but too many cooks spoil the broth. If you need further information, please write to me I will certainly help you.

with regards
Rady
Post by David Clunie
I see you have clarified that it is an open source toolkit that
you are looking for, in response to the reply from Chris.
http://www.dclunie.com/medical-image-faq/html/part8.html#DICOMToolkits
It is probably a bit out of date and there may be stale links.
Don't forget that many dead links can probably be found via the Internet
http://archive.org/web/web.php
though I am not sure you want to be using an unmaintained toolkit (though
some folks take over toolkit maintenance for dead projects when it has a
particular set of features they like, on a platform they like).
David
On 5/16/15 8:18 AM, wrote:...
Post by e***@gmail.com
I know that to develop PACS we need DICOM protocol, but here I need recommendation what framework is suitable. I found that LEADTOOLS SDK sounds good for develop PACS system, but not open source. I have search the possibility for open source framework is DCMTK, ClearCanvas, or Dvtk. Which one is more recommended? (I have tried Dvtk, but seems not suitable for developing PACS.)
David Clunie
2015-05-16 12:33:34 UTC
Permalink
Hi
Post by e***@gmail.com
I'm newbie in DICOM and PACS. I have to make PACS system for my company
(both PACS client and server).
That sounds like fun.
Post by e***@gmail.com
My question is what API is suitable for this project?
The only time DICOM uses the term "API" in its traditional sense is
in the PS3.19 Application Hosting API, which really is intended to be
a platform neutral programmer's interface between a "host" and a
"hosted application" (think "plugin"), usually (but not necessarily)
on the same machine.

But though you asked about "API", you also mentioned "open source".

If you are actually asking about which open source "toolkit" to use,
there are lots of them, and which to choose depends on your platform
for client, platform for server, language of choice, etc. There is
an incomplete list in my FAQ.

If you are asking what "protocol" and "services" to use for communication
between client and server, there are also quite as few choices, depending
on whether or not you are restricted to using HTTP, and whether you are
of the RESTful or SOAP religious persuasion. The DICOM standard defines
"open" "APIs" (in that they are freely published and free to use without
any license fees, submarine patents aside).

Assuming that by "client/server" you mean a viewer retrieving images for
display, you could use:

- DICOM PS3.4 services DICOM PS3.7 messages DICOM PS3.8 protocol,
specifically C-MOVE/C-STORE or C-GET images, +/- C-GET metadata
- DICOM PS3.5 JPIP (JPEG Interactive Protocol for JPEG 2000 pixel data)
- DICOM PS3.18 WADO-URI to get DICOM or JPEG rendered images (HTTP)
- DICOM PS3.18 WADO-RS to get DICOM images, metadata or bulk data by (HTTP)
- DICOM PS3.18 WADO-WS to get DICOM or JPEG images (HTTP using SOAP)
- DICOM PS3.19 Application Hosting API using SOAP access to binary,
native or abstract metadata + bulkdata (including shared memory)
- IHE XDS-I.b to get manifest of images, images by PS3.4/7/8, WADO-URI or
RAD-69 (which is the same as PS3.18 WADO-WS RetrieveImagingDocumentSet),
or JPIP

To find the right images to display in the first place, you could use:

- DICOM PS3.4 C-FIND service, DICOM PS3.7 messages, DICOM PS3.8 protocol
- DICOM PS3.18 QIDO (HTTP)
- IHE XDS-I.b XDS metadata (limited) to find the right manifest

If you are interested in other use cases (like workflow, availability),
that is a whole other can of worms.

The nice thing about standards is that there are so many to choose from
(and as you can see, in DICOM/IHE we are making quite a mess in this
respect, in an attempt to cover various use cases, religious preferences
and be buzzword compliant and conventional IT friendly). The price of
"progress" I suppose (plus ça change, plus c'est la même chose).

David
Loading...