diff --git a/README.md b/README.md index 1b5a77dd..f4efef2e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ ADIT (Automated DICOM Transfer) is a Swiss army knife to exchange DICOM data bet - Upload a batch file to make multiple queries on a DICOM server - Upload a batch file to transfer or download multiple studies - A REST API and API client to manage transfers programmatically by an external script (see below) -- Define when transfers should happen (for example, at night to reduce server load on the PACS) +- Define when transfers should happen (for example, more workers at night to reduce server load on a PACS) - Fine-grained control of what users can or can't do and what they can access - Help modals with detailed information for the most important features @@ -42,12 +42,11 @@ ADIT client is a Python library to query, retrieve and upload DICOM images progr The backend of ADIT is built using the Django web framework, and data is stored in a PostgreSQL database. For DICOM transfer [pynetdicom](https://pydicom.github.io/pynetdicom/stable/) of the [pydicom](https://pydicom.github.io/) project is used. -A transfer job contains one or more transfer tasks that describe what DICOM data to transfer and how to transfer it (source, destination, pseudonym). -A transfer task is processed by a Celery worker (a task scheduler) in the background running in its own Docker container. Celery internally uses RabbitMQ to send new tasks to the worker and Redis to store the results (if needed). +A transfer job contains one or more transfer tasks that describe what studies or series to transfer. A task contains how to transfer it (source, destination, pseudonym). A transfer task is processed by a background worker running in its own Docker container and that is constantly polling queued pending tasks from the database. When the DICOM data to transfer needs to be modified (e.g. pseudonymized) it is downloaded temporarily to the ADIT web server, then transformed and uploaded to the destination server resp. moved to the destination folder. -Downloading data from a DICOM server can done by using a C-GET, C-MOVE operation or by using DICOMweb REST calls. C-GET is prioritized over C-MOVE as a worker can fetch the DICOM data directly from the server. When downloading data using a C-MOVE operation, ADIT commands the source DICOM server to send the data to a C-STORE SCP server running in a separate container (`Receiver`) that receives the DICOM data and sends it back to the worker using TCP Socket connection (`FileTransmitter`). +Downloading data from a DICOM server can done by using a DIMSE operation or by using DICOMweb REST calls. When using DIMSE operations C-GET is prioritized over C-MOVE as a worker can fetch the DICOM data directly from the server. When downloading data using a C-MOVE operation, ADIT commands the source DICOM server to send the data to a C-STORE SCP server of ADIT running in a separate container (`Receiver`) that receives the DICOM data and sends it back to the worker using a TCP Socket connection (`FileTransmitter`). ## Contributors