Difference between revisions of "CTP Configuration for the Image Sharing Project"
Line 71: | Line 71: | ||
<CachingXDSExportService | <CachingXDSExportService | ||
name="CachingXDSExportService-RS" | name="CachingXDSExportService-RS" | ||
− | |||
class="org.rsna.isn.ctp.xds.sender.CachingXDSExportService" | class="org.rsna.isn.ctp.xds.sender.CachingXDSExportService" | ||
root="roots/CachingXDSExportService-RS" | root="roots/CachingXDSExportService-RS" | ||
+ | cacheID="ObjectCache-RS" | ||
servletContext="researchsender" | servletContext="researchsender" | ||
minAge="300" | minAge="300" | ||
Line 91: | Line 91: | ||
===CachingXDSExportService=== | ===CachingXDSExportService=== | ||
− | The | + | The special attributes of the CachingXDSExportService are: |
− | |||
*<b>root</b> is a directory within which the CachingXDSExportService caches objects and stores its indexing information. | *<b>root</b> is a directory within which the CachingXDSExportService caches objects and stores its indexing information. | ||
*<b>cacheID</b> specified the ID of an ObjectCache stage that may be accessed by the CachingXDSExportService to obtain pre-anonyization information so it can index the objects by their PHI and make that information available to a user who accesses the servlet. If the cacheID attribute is not supplied, the CachingXDSExportService indexes the objects by the anonymized values. | *<b>cacheID</b> specified the ID of an ObjectCache stage that may be accessed by the CachingXDSExportService to obtain pre-anonyization information so it can index the objects by their PHI and make that information available to a user who accesses the servlet. If the cacheID attribute is not supplied, the CachingXDSExportService indexes the objects by the anonymized values. | ||
Line 98: | Line 97: | ||
*<b>minAge</b> is the minimum age in seconds which defines the completion of a study. When the last object received for a study is at least minAge old, the study is considered complete and is available for selection for export. The default value is <b>300</b>; the minimum accepted value is <b>60</b>. | *<b>minAge</b> is the minimum age in seconds which defines the completion of a study. When the last object received for a study is at least minAge old, the study is considered complete and is available for selection for export. The default value is <b>300</b>; the minimum accepted value is <b>60</b>. | ||
*<b>timeDepth</b> specifies the length of time in days that studies are stored. The default value is <b>0</b>, which means forever. If timeDepth is greater than zero, studies older than that value are automatically removed from the cache, making them no longer available for export. | *<b>timeDepth</b> specifies the length of time in days that studies are stored. The default value is <b>0</b>, which means forever. If timeDepth is greater than zero, studies older than that value are automatically removed from the cache, making them no longer available for export. | ||
− | |||
==Configuration File for the Image Receiver== | ==Configuration File for the Image Receiver== |
Revision as of 14:12, 5 July 2012
++++++++++++++++++++ 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 Project 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 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.
In this configuration, the DicomDecompressor and DicomPixelAnonymizer can be removed if PHI is known not to be burned into the pixels. If the DicomPixelAnonymizer is in the pipeline, the DicomDecompressor must also be present, and it must appear in the sequence shown below.
<Configuration> <Server port="80" /> <Pipeline name="Research Sender 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" /> <CachingXDSExportService name="CachingXDSExportService-RS" class="org.rsna.isn.ctp.xds.sender.CachingXDSExportService" root="roots/CachingXDSExportService-RS" cacheID="ObjectCache-RS" servletContext="researchsender" minAge="300" timeDepth="30" ...more attributes, once we know what they are... quarantine="quarantines/CachingXDSExportService-RS" /> </Pipeline> </Configuration>
Notes:
- All the stages except the CachingXDSExportService are standard CTP stages. They are all documented in CTP-The RSNA Clinical Trial Processor.
1.1 CachingXDSExportService
The special attributes of the CachingXDSExportService are:
- root is a directory within which the CachingXDSExportService caches objects and stores its indexing information.
- cacheID specified the ID of an ObjectCache stage that may be accessed by the CachingXDSExportService to obtain pre-anonyization information so it can index the objects by their PHI and make that information available to a user who accesses the servlet. If the cacheID attribute is not supplied, the CachingXDSExportService indexes the objects by the anonymized values.
- servletContext specifies the context of a servlet that provides a user interface allowing as user to select cached studies and assign them destinations for export. The purpose of the servletContext attribute is to allow each CachingXDSExportService to have its own servlet in cases where multiple export pipelines are present in the same CTP instance.
- minAge is the minimum age in seconds which defines the completion of a study. When the last object received for a study is at least minAge old, the study is considered complete and is available for selection for export. The default value is 300; the minimum accepted value is 60.
- timeDepth specifies the length of time in days that studies are stored. The default value is 0, which means forever. If timeDepth is greater than zero, studies older than that value are automatically removed from the cache, making them no longer available for export.
2 Configuration File for the Image Receiver
The Image Receiver polls the clearinghouse for images.
<Configuration> <Server port="80" /> <Pipeline name="Research Receiver 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>