Using the CTP AuditLog Plugin

From MircWiki
Revision as of 13:05, 6 November 2015 by Johnperry (talk | contribs) (Created page with "UNDER CONSTRUCTION This article describes how to configure the CTP AuditLog plugin to capture information from objects processed by pipeline stages. The intended audience for th...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

UNDER CONSTRUCTION

This article describes how to configure the CTP AuditLog plugin to capture information from objects processed by pipeline stages. The intended audience for this article is administrators configuring CTP for clinical trials.

The AuditLog is a persistent database of entries made by other CTP components. It provides a servlet allowing the database to be searched through a browser. The servlet also supports downloading the entire database.

Entries in the AuditLog are text. Each entry has a Content-Type. All standard CTP stages create log entries with the Content-Type "xml", but the AuditLog accepts all Content-Type identifiers.

An AuditLog plugin must have an id attribute uniquely identifying the plugin. A single configuration can have multiple AuditLog plugins. An AuditLog's servlet is accessed using the identifier as the resource context.

The DicomAuditLogger pipeline stage can be used to make AuditLog entries containing the values of specified elements in DicomObjects processed by the stage. The entries can be made on three levels:

  • patient: one entry for each unique PatientID processed by the stage
  • study: one entry for each unique StudyInstanceUID processed by the stage
  • instance: one entry for each unique SOPInstanceUID processed by the stage

The DicomAuditLogger

This is an example configuration that logs both the PHI and anonymized values of the PatientID and PatientName elements for each patient:

<Configuration>
    <Server
        maxThreads="20"
        port="1999"/>
    <Plugin
        class="org.rsna.ctp.stdplugins.AuditLog"
        id="AuditLog"
        name="AuditLog"
        root="roots/AuditLog"/>
    <Pipeline
        name="Pipeline"
        root="test">
        <DicomImportService
            class="org.rsna.ctp.stdstages.DicomImportService"
            logConnections="no"
            name="DicomImportService"
            port="104"
            quarantine="quarantines/DicomImportService"
            root="roots/DicomImportService"/>
        <ObjectCache
            class="org.rsna.ctp.stdstages.ObjectCache"
            id="ObjectCache"
            name="ObjectCache"
            root="roots/ObjectCache"/>
        <DicomAnonymizer
            class="org.rsna.ctp.stdstages.DicomAnonymizer"
            lookupTable="scripts/LookupTable.properties"
            name="DicomAnonymizer"
            quarantine="quarantines/DicomAnonymizer"
            root="roots/DicomAnonymizer"
            script="scripts/DicomAnonymizer.script"/>
        <DicomAuditLogger
            auditLogID="AuditLog"
            auditLogTags="PatientID;PatientName"
            cacheID="ObjectCache"
            class="org.rsna.ctp.stdstages.DicomAuditLogger"
            id="DicomAuditLogger"
            level="patient"
            name="DicomAuditLogger"
            root="roots/DicomAuditLogger"/>
        <FileStorageService
            class="org.rsna.ctp.stdstages.FileStorageService"
            name="FileStorageService"
            port="9999"
            quarantine="quarantines/FileStorageService"
            returnStoredFile="yes"
            root="roots/FileStorageService"/>
    </Pipeline>
</Configuration>