public class DicomCleaner extends ApplicationFrame
This class is an application for importing or retrieving DICOM studies, cleaning them (i.e., de-identifying them or replacing UIDs, etc.), and sending them elsewhere.
It is configured by use of a properties file that resides in the user's
home directory in .com.pixelmed.display.DicomCleaner.properties
.
It supports import and network retrieval of uncompressed, deflate and bzip compressed, and baseline JPEG compressed images (but not yet other encapsulated compressed pixel data).
javax.swing.JFrame.AccessibleJFrame
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
statusBarManager
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Constructor and Description |
---|
DicomCleaner() |
Modifier and Type | Method and Description |
---|---|
protected void |
activateStorageSCP()
Start DICOM storage listener for populating source database.
|
protected void |
activateTemporaryDatabases()
Start two databases, one for the "source" instances and one for the "target" instances.
|
protected boolean |
copyFromOriginalToCleanedPerformingAction(java.util.Vector paths,
java.util.Date earliestDateInSet,
MessageLogger logger,
SafeProgressBarUpdaterThread progressBarUpdater) |
protected static java.util.Date |
findEarliestDate(java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath,
java.util.Vector<java.lang.String> sourceFilePathSelections) |
protected static void |
importFileIntoDatabase(DatabaseInformationModel database,
java.lang.String dicomFileName,
java.lang.String fileReferenceType,
java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath) |
static void |
main(java.lang.String[] arg)
The method to invoke the application.
|
protected java.lang.String |
makeNewFullyQualifiedHierarchicalInstancePathName(java.lang.String sourceFileName) |
protected java.lang.String |
makeNewFullyQualifiedInterchangeMediaInstancePathName(int fileCount) |
protected void |
performRetrieve(AttributeList uniqueKeys,
java.lang.String selectionLevel,
java.lang.String retrieveAE) |
protected void |
purgeFilesAndDatabaseInformation(DatabaseTreeRecord[] databaseSelections,
MessageLogger logger,
SafeProgressBarUpdaterThread progressBarUpdater,
int done,
int maximum) |
protected void |
purgeFilesAndDatabaseInformation(DatabaseTreeRecord databaseSelection,
MessageLogger logger,
SafeProgressBarUpdaterThread progressBarUpdater,
int done,
int maximum) |
protected void |
setCurrentRemoteQueryInformationModel(java.lang.String remoteAEForQuery) |
protected void |
setCurrentRemoteQuerySelection(AttributeList uniqueKeys,
Attribute uniqueKey,
AttributeList identifier) |
createGUI, getApplicationPropertyFileName, getBuildDate, getProperties, getPropertyInsistently, getPropertyInsistently, getReleaseString, getStatusBar, loadProperties, makePathToFileInUsersHomeDirectory, setApplicationPropertyFileName, setBackgroundForGUI, setInternationalizedFontsForGUI, setPreferredLookAndFeelForPlatform, storeProperties, takeSnapShot
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
protected static java.lang.String resourceBundleName
protected static java.lang.String propertiesFileName
protected static java.lang.String propertyName_DicomCurrentlySelectedStorageTargetAE
protected static java.lang.String propertyName_DicomCurrentlySelectedQueryTargetAE
protected static java.lang.String rootNameForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String filePrefixForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String fileSuffixForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String nameForDicomDirectoryOnInterchangeMedia
protected static java.lang.String exportedZipFileName
protected static int textFieldLengthForQueryPatientName
protected static int textFieldLengthForQueryPatientID
protected static int textFieldLengthForQueryStudyDate
protected static int textFieldLengthForQueryAccessionNumber
protected static int textFieldLengthForReplacementPatientName
protected static int textFieldLengthForReplacementPatientID
protected static int textFieldLengthForReplacementAccessionNumber
protected static int textFieldLengthForModifyDates
protected java.util.ResourceBundle resourceBundle
protected DatabaseInformationModel srcDatabase
protected DatabaseInformationModel dstDatabase
protected javax.swing.JPanel srcDatabasePanel
protected javax.swing.JPanel dstDatabasePanel
protected javax.swing.JPanel remoteQueryRetrievePanel
protected javax.swing.JCheckBox removeIdentityCheckBox
protected javax.swing.JCheckBox removeDescriptionsCheckBox
protected javax.swing.JCheckBox removeSeriesDescriptionsCheckBox
protected javax.swing.JCheckBox removeProtocolNameCheckBox
protected javax.swing.JCheckBox removeCharacteristicsCheckBox
protected javax.swing.JCheckBox removeDeviceIdentityCheckBox
protected javax.swing.JCheckBox removeInstitutionIdentityCheckBox
protected javax.swing.JCheckBox cleanUIDsCheckBox
protected javax.swing.JCheckBox removePrivateCheckBox
protected javax.swing.JCheckBox addContributingEquipmentCheckBox
protected javax.swing.JCheckBox removeClinicalTrialAttributesCheckBox
protected javax.swing.JCheckBox zipExportCheckBox
protected javax.swing.JCheckBox hierarchicalExportCheckBox
protected javax.swing.JCheckBox acceptAnyTransferSyntaxCheckBox
protected javax.swing.JCheckBox replacePatientNameCheckBox
protected javax.swing.JCheckBox replacePatientIDCheckBox
protected javax.swing.JCheckBox replaceAccessionNumberCheckBox
protected javax.swing.JCheckBox modifyDatesCheckBox
protected javax.swing.JTextField replacementPatientNameTextField
protected javax.swing.JTextField replacementPatientIDTextField
protected javax.swing.JTextField replacementAccessionNumberTextField
protected javax.swing.JTextField modifyDatesTextField
protected javax.swing.JTextField queryFilterPatientNameTextField
protected javax.swing.JTextField queryFilterPatientIDTextField
protected javax.swing.JTextField queryFilterStudyDateTextField
protected javax.swing.JTextField queryFilterAccessionNumberTextField
protected SafeProgressBarUpdaterThread progressBarUpdater
protected SafeCursorChanger cursorChanger
protected MessageLogger logger
protected NetworkApplicationProperties networkApplicationProperties
protected NetworkApplicationInformation networkApplicationInformation
protected QueryInformationModel currentRemoteQueryInformationModel
protected QueryTreeRecord currentRemoteQuerySelectionQueryTreeRecord
protected AttributeList currentRemoteQuerySelectionUniqueKeys
protected Attribute currentRemoteQuerySelectionUniqueKey
protected java.lang.String currentRemoteQuerySelectionRetrieveAE
protected java.lang.String currentRemoteQuerySelectionLevel
protected java.lang.String ourCalledAETitle
protected java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath
protected java.io.File savedImagesFolder
protected StorageSOPClassSCPDispatcher storageSOPClassSCPDispatcher
protected DatabaseTreeRecord[] currentSourceDatabaseSelections
protected java.util.Vector currentSourceFilePathSelections
protected DatabaseTreeRecord[] currentDestinationDatabaseSelections
protected java.util.Vector currentDestinationFilePathSelections
protected java.lang.String importDirectoryPath
protected java.lang.String exportDirectoryPath
public DicomCleaner() throws DicomException, java.io.IOException
DicomException
java.io.IOException
protected void setCurrentRemoteQueryInformationModel(java.lang.String remoteAEForQuery)
protected static void importFileIntoDatabase(DatabaseInformationModel database, java.lang.String dicomFileName, java.lang.String fileReferenceType, java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath) throws java.io.FileNotFoundException, java.io.IOException, DicomException
java.io.FileNotFoundException
java.io.IOException
DicomException
protected void activateStorageSCP() throws DicomException, java.io.IOException
Start DICOM storage listener for populating source database.
DicomException
java.io.IOException
protected void activateTemporaryDatabases() throws DicomException
Start two databases, one for the "source" instances and one for the "target" instances.
Neither will persist when the application is closed, so in memory databases only are used and instances live in the temporary filesystem.
DicomException
protected void purgeFilesAndDatabaseInformation(DatabaseTreeRecord[] databaseSelections, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum) throws DicomException, java.io.IOException
DicomException
java.io.IOException
protected void purgeFilesAndDatabaseInformation(DatabaseTreeRecord databaseSelection, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum) throws DicomException, java.io.IOException
DicomException
java.io.IOException
protected boolean copyFromOriginalToCleanedPerformingAction(java.util.Vector paths, java.util.Date earliestDateInSet, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater) throws DicomException, java.io.IOException
DicomException
java.io.IOException
protected static java.util.Date findEarliestDate(java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath, java.util.Vector<java.lang.String> sourceFilePathSelections)
protected java.lang.String makeNewFullyQualifiedInterchangeMediaInstancePathName(int fileCount) throws java.io.IOException
java.io.IOException
protected java.lang.String makeNewFullyQualifiedHierarchicalInstancePathName(java.lang.String sourceFileName) throws DicomException, java.io.IOException
DicomException
java.io.IOException
protected void setCurrentRemoteQuerySelection(AttributeList uniqueKeys, Attribute uniqueKey, AttributeList identifier)
protected void performRetrieve(AttributeList uniqueKeys, java.lang.String selectionLevel, java.lang.String retrieveAE)
public static void main(java.lang.String[] arg)
The method to invoke the application.
arg
- none