CTP Configuration for the Image Sharing Project

From MircWiki
Revision as of 14:23, 3 July 2012 by Johnperry (talk | contribs)
Jump to navigation Jump to search

++++++++++++++++++++ UNDER CONSTRUCTION ++++++++++++++++++++++++++

This article describes how the CTP application can be configured for use in the RSNA Image Sharing Project. This article is intended for Image Sharing Projerct developers. There are several CTP articles on the RSNA MIRC wiki. All would be useful references when reading this article.

The Image Sharing Project is separated into two main use cases, one for the transfer of images for clinical use and one for transfer of anonymized research data. Each use case has a sender and a receiver.

  • The clinical sender is completely contained in the Edge Server and does not involve CTP.
  • The clinical receiver has two alternative configurations, one using both the Edge Server and CTP and the other using CTP stand-alone.
  • The research sender uses both the Edge Server and CTP together.
  • The research receiver uses CTP stand-alone.

The configuration of a CTP instance is specified by an XML file called config.xml. See CTP-The RSNA Clinical Trial Processor for detailed information about pipelines, pipeline stages, plugins, and the general processing model of the program. This article presents separate configuration file examples for each of the use cases, but it should be understood that the configurations can be combined when multiple use cases are served by the same CTP instance.

In all the configurations shown below, the server is put on port 80, and SSL is not enabled for access to the server itself, although communication with the clearing house is always secure.

1 Configuration File for the Research Sender

The example configuration shown below assumes that unanonymized DICOM data objects are transmitted to CTP by an external application using the DICOM protocol. The objects are anonymized, removing PHI from both the text elements and the pixels. The objects are then cached until a user manually selects the study and assigns a destination, after which they are exported to the clearing house.

<Configuration>

   <Server port="80" />

   <Pipeline name="Source Pipeline">

        <DicomImportService
            name="DicomImportService-RS"
            class="org.rsna.ctp.stdstages.DicomImportService"
            root="roots/DicomImportService-RS" 
            port="104"
            calledAETTag="00097770" 
            callingAETTag="00097772"
            logConnections="no"
            suppressDuplicates="no"
            quarantine="quarantines/DicomImportService-RS" />

        <ObjectCache
            name="ObjectCache-RS"
            class="org.rsna.ctp.stdstages.ObjectCache"
            id="ObjectCache-RS"
            root="roots/ObjectCache-RS" />

        <DicomAnonymizer
            name="DicomAnonymizer-RS"
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            root="roots/DicomAnonymizer-RS" 
            lookupTable="scripts/lookup-table.properties"
            script="scripts/dicom-anonymizer.script"
            quarantine="quarantines/DicomAnonymizer-RS" />

        <DicomDecompressor
            name="DicomDecompressor-RS"
            class="org.rsna.ctp.stdstages.DicomDecompressor"
            root="roots/DicomDecompressor-RS" 
            quarantine="quarantines/DicomDecompressor-RS" />

        <DicomPixelAnonymizer
            name="DicomPixelAnonymizer-RS"
            class="org.rsna.ctp.stdstages.DicomPixelAnonymizer"
            root="roots/DicomPixelAnonymizer-RS" 
            script="scripts/DicomPixelAnonymizer.script"
            quarantine="quarantines/DicomPixelAnonymizer-RS" />

        <CachingXDSStorageService
            name="CachingXDSExportService-RS"
            cacheID="ObjectCache-RS"
            class="org.rsna.isn.ctp.xds.sender.CachingXDSExportService"
            root="roots/CachingXDSExportService-RS"
            servletContext="researchsender"

            ...more attributes, once we know what they are...

            quarantine="quarantines/CachingXDSExportService-RS" />

    </Pipeline>

</Configuration>

2 Configuration File for the Image Receiver

The Image Receiver polls the clearinghouse for images.

<Configuration>

   <Server port="80" />

   <Pipeline name="Source Pipeline">

        <PollingXDSImportService
            name="PollingXDSImportService"
            class="org.rsna.isp.PollingXDSImportService"
            root="roots/PollingXDSImportService" 
            
            rad69URL="..."
            registryURL="..."
            repositoryURL="..."
            repositoryUniqueID="..."
            assigningAuthorityUniversalId="..."
            assigningAuthorityUniversalIdType="..."
            
            homeCommunityId="..."
            
            keystore="..."
            keystorepassword="..."
            truststore="..."
            truststorepassword="..."
            
            siteID="..."
            servletContext="xds" />

        <DicomExportService
            name="DicomExportService"
            class="org.rsna.ctp.stdstages.DicomExportService"
            root="roots/DicomExportService" 
            quarantine="quarantines/DicomExportService"
            url="dicom://DestinationAET:ThisAET@ipaddress:port" />

    </Pipeline>

</Configuration>