NIH | National Cancer Institute | NCI Wiki  

This document is geared towards providing common templates for using CTP to submit data to NBIA.  For more information about configuring CTP pipelines please refer to the RSNA's CTP pipeline wiki section at: http://mircwiki.rsna.org/index.php?title=CTP-The_RSNA_Clinical_Trial_Processor#Pipelines.

Overview

CTP functions both as a client and server for transmitting data to NBIA.  In a typical installation of NBIA you will configure CTP clients for each submitting site that is sending data to your NBIA server.  At your server location you will have a CTP server to receive the data sent by the CTP clients.  In general you should not need to make any changes to the CTP server component as that is configured during the installation of NBIA.  However there are some scenarios where you will need to make changes to the CTP clients in order to meet the needs of the submitters providing you with data. 

Below are some common scenarios along with configuration file templates that will help you easily setup CTP clients for each situation.  Please keep in mind that you will need to update the HTTP Export information appropriately with the server and port of your NBIA server. 

 Single collection of images stored in PACS

In the scenario where the submitter's image data is all stored on their PACS you would leverage CTP's ability to import data directly via a DICOM send from the PACS.  Your configuration pipeline would be setup to process objects in the following manner: DICOM Import --> IDMap --> Anonymization --> HTTP Export.

  • Here is an example config.xml which you can use to achieve this. In this case CTP will listen for your PACS to send data on port 1104 and send the processed data to a CTP server listening at https://university.edu:1443:
<Configuration>
   <Server port="80" />
   <Pipeline name="Main Pipeline">
        <ImportService
            name="DICOM Import"
            class="org.rsna.ctp.stdstages.DicomImportService"
            root="roots/dicom-import"
            port="1104" />
        <Processor
            name="ID Map"
            class="org.rsna.ctp.stdstages.IDMap"
            root="roots/idmap" />
        <Anonymizer
            name="Anonymizer"
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            root="roots/anonymizer"
            script="roots/anonymizer/scripts/da.script"
            quarantine="quarantines/anonymizer" />
        <ExportService
            name="HTTP Export"
            class="org.rsna.ctp.stdstages.HttpExportService"
            root="roots/http-export"
            url="https://university.edu:1443" />
   </Pipeline>
</Configuration>

 Single collection of images stored on HDD/CD

In a scenario where the submitter's data is stored on a hard drive or CD you will need an additional tool called FileSender.  Once you have downloaded and extracted FileSender you will use it to select the files from your computer to send them to the CTP client.

In this situation your configuration pipeline would be setup to process objects in the following manner: HTTP Import --> IDMap --> Anonymization --> Export.

  • Here is an example config.xml which you can use to achieve this. In this case CTP will listen only for DICOM Objects transmitted from your FileSender on port 7777 and send the processed data to a CTP server listening at https://university.edu:1443:
<Configuration>
   <Server port="80" />
   <Pipeline name="Main Pipeline">
        <ImportService
            name="HTTP Import"
            id="HTTP Import"
            class="org.rsna.ctp.stdstages.HttpImportService"
            root="roots/http-import"
            port="7777"
            ssl="yes"
            zip="no"
            acceptDicomObjects="yes"
            acceptXmlObjects="no"
            acceptZipObjects="no"
            acceptFileObjects="no"
            quarantine="quarantines/http-import" />
        <Processor
            name="ID Map"
            class="org.rsna.ctp.stdstages.IDMap"
            root="roots/idmap" />
        <Anonymizer
            name="Anonymizer"
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            root="roots/anonymizer"
            script="roots/anonymizer/scripts/da.script"
            quarantine="quarantines/anonymizer" />
        <ExportService
            name="HTTP Export"
            class="org.rsna.ctp.stdstages.HttpExportService"
            root="roots/http-export"
            url="https://university.edu:1443" />
   </Pipeline>
</Configuration>

 Multiple image collections using a single CTP client

In a scenario where the submitter intends to send more than one collection of images to NBIA via CTP you will need to setup new pipelines for each collection. For this situation let's assume the submitter has two collections of images. The first is a CT Lung study which they have stored on DICOM CDs and the second is an MR Brain study which is stored on their PACS.

  • Before beginning the transmission the submitter should first copy the CT Lung Study data to their hard drive and download FileSender (http://mircwiki.rsna.org/index.php?title=FileSender).
  • Note that each pipeline is using a different anonymization script so that you can fill in parameters for each data set separately
  • Here is an example config.xml which you can use to submit the data to NBIA. In this case CTP will listen for the CT Lung study DICOM Objects transmitted from your FileSender on port 7777. It will listen for your PACS to send MR Brain study data on port 1104. It will send the processed data for both pipelines to a CTP server listening at https://university.edu:1443:
<Configuration>
   <Server port="80" />
   <Pipeline name="CT Lung Pipeline">
        <ImportService
            name="CT Lung HTTP Import"
            id="CT Lung HTTP Import"
            class="org.rsna.ctp.stdstages.HttpImportService"
            root="roots/http-import/CT-Lung"
            port="7777"
            ssl="yes"
            zip="no"
            acceptDicomObjects="yes"
            acceptXmlObjects="no"
            acceptZipObjects="no"
            acceptFileObjects="no"
            quarantine="quarantines/http-import/CT-Lung" />
        <Processor
            name="CT Lung ID Map"
            class="org.rsna.ctp.stdstages.IDMap"
            root="roots/idmap/CT-Lung" />
        <Anonymizer
            name="CT Lung Anonymizer"
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            root="roots/anonymizer/CT-Lung"
            script="roots/anonymizer/scripts/CT-Lung-da.script"
            quarantine="quarantines/anonymizer/CT-Lung" />
        <ExportService
            name="CT Lung HTTP Export"
            class="org.rsna.ctp.stdstages.HttpExportService"
            root="roots/http-export/CT-Lung"
            url="https://university.edu:1443" />
   </Pipeline>

   <Pipeline name="MR Brain Pipeline">
        <ImportService
            name="MR Brain DICOM Import"
            class="org.rsna.ctp.stdstages.DicomImportService"
            root="roots/dicom-import/MR-Brain"
            port="1104" />
        <Processor
            name="ID Map"
            class="org.rsna.ctp.stdstages.IDMap"
            root="roots/idmap/MR-Brain" />
        <Anonymizer
            name="MR Brain Anonymizer"
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            root="roots/anonymizer/MR-Brain"
            script="roots/anonymizer/scripts/MR-Brain-da.script"
            quarantine="quarantines/anonymizer/MR-Brain" />
        <ExportService
            name="MR Brain HTTP Export"
            class="org.rsna.ctp.stdstages.HttpExportService"
            root="roots/http-export/MR-Brain"
            url="https://university.edu:1443" />
   </Pipeline>
</Configuration>
  • No labels