Contents
There are multiple ways to transfer studies to an Orthanc instance. Only a few of them provide a guarantee that the study has been transferred completely.
Notes:
transfer atomicity
, we mean the capability to transfer
only full studies and make sure that if a transfer fails before
it is complete, no partial data is saved in Orthanc. The study is either
fully stored or not stored at all.complete
. Actually, a study is never complete
since, e.g,
a viewing workstation or an AI algorithm can still add a new enhanced
series even years after the study has been acquired.
However, it is still important, in many applications, to make sure
that a study, in its current state, is fully transmitted to another
destination.Transfer method | What can the Client/source trust to make sure the full study has been stored in the server ? | Can Server/destination trust StableStudy
event to consider the study as complete ? |
---|---|---|
C-Store |
|
No |
C-Store with storage commitment |
|
No |
DicomWeb |
|
No |
Orthanc Rest API |
|
No |
Transfers accelerator plugin |
|
Yes (provided that the client sends full study) |
If you are sending a study to Orthanc via C-Store, the study will be
considered as stable
after a given period of time (defined by
the configuration StableAge
). This gives no guarantee at all that
the study has been fully transferred. The sending modality may have
paused transfer for a while and might resume in a few minutes.
Although inaccurate by design, the IsStable
status in Orthanc is the
best way to assume that a study has been fully transferred via DICOM.
The default value of 60 seconds
is appropriate for most setups.
Note:
Since release 1.6.0, Orthanc supports Storage Commitment. Storage commitment is not a guarantee of atomicity but simply provides a way to check that a set of instances have really been saved by Orthanc.
Given that Orthanc only responsds to C-Store with a success status once the instance has really been saved in DB and on disk, storage commitment actually do not provide any additional guarantee during transfer.
STOW-RS can be used to transfer studies to an Orthanc. The STOW-RS request contains a list of DICOM instances to store in the destination Orthanc (likely a complete study).
Files are stored as they are received which means that, if the transfer is interrupted,
only a partial study may be stored on the destination. Therefore, on the destination,
a StableStudy
event might be triggered even if the study was not fully received.
Note:
ChunkedTransfers
was disabled, and
the whole study was transmitted in a single HTTP request and parsed
only once the full HTTP request had been received. Therefore, the
whole study was stored at once on the destination. However, note
that ChunkedTransfers
is enabled by default on every Orthanc
server but it can be disabled in the client configuration. Also
note that studies bigger than 2 GB can not be transferred with
ChunkedTransfers
disabled which means it is not recommended to
perform transfers with disabled ChunkedTransfers
.When transferring a study through the Orthanc Rest API, each instance is transferred individually. Therefore, on server side, if the transfer is interrupted, the destination has no way to know that the study has been fully transmitted or not.
The server will respond with a 200 HTTP status only once the instance is stored in DB and on storage.
Transfers Accelerator plugin has been design to:
Provided that the client is sending a full study, the server receiving it
will store it completely. Therefore, on server side, the StableStudy
event will trigger only
on full studies.