Class DicomCleaner
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Window
-
- java.awt.Frame
-
- javax.swing.JFrame
-
- com.pixelmed.display.ApplicationFrame
-
- com.pixelmed.display.DicomCleaner
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.RootPaneContainer
,javax.swing.WindowConstants
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).
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
-
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
-
-
Field Summary
-
Fields inherited from class com.pixelmed.display.ApplicationFrame
statusBarManager
-
Fields inherited from class java.awt.Frame
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
-
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description DicomCleaner()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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)
-
Methods inherited from class com.pixelmed.display.ApplicationFrame
createGUI, getApplicationPropertyFileName, getBuildDate, getProperties, getPropertyInsistently, getPropertyInsistently, getReleaseString, getStatusBar, loadProperties, makePathToFileInUsersHomeDirectory, setApplicationPropertyFileName, setBackgroundForGUI, setInternationalizedFontsForGUI, setPreferredLookAndFeelForPlatform, storeProperties, takeSnapShot
-
Methods inherited from class javax.swing.JFrame
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
-
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
-
Methods inherited from class java.awt.Window
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
-
Methods inherited from class java.awt.Container
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
-
Methods inherited from class java.awt.Component
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, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
resourceBundleName
protected static java.lang.String resourceBundleName
-
propertiesFileName
protected static java.lang.String propertiesFileName
-
propertyName_DicomCurrentlySelectedStorageTargetAE
protected static java.lang.String propertyName_DicomCurrentlySelectedStorageTargetAE
-
propertyName_DicomCurrentlySelectedQueryTargetAE
protected static java.lang.String propertyName_DicomCurrentlySelectedQueryTargetAE
-
rootNameForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String rootNameForDicomInstanceFilesOnInterchangeMedia
-
filePrefixForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String filePrefixForDicomInstanceFilesOnInterchangeMedia
-
fileSuffixForDicomInstanceFilesOnInterchangeMedia
protected static java.lang.String fileSuffixForDicomInstanceFilesOnInterchangeMedia
-
nameForDicomDirectoryOnInterchangeMedia
protected static java.lang.String nameForDicomDirectoryOnInterchangeMedia
-
exportedZipFileName
protected static java.lang.String exportedZipFileName
-
textFieldLengthForQueryPatientName
protected static int textFieldLengthForQueryPatientName
-
textFieldLengthForQueryPatientID
protected static int textFieldLengthForQueryPatientID
-
textFieldLengthForQueryStudyDate
protected static int textFieldLengthForQueryStudyDate
-
textFieldLengthForQueryAccessionNumber
protected static int textFieldLengthForQueryAccessionNumber
-
textFieldLengthForReplacementPatientName
protected static int textFieldLengthForReplacementPatientName
-
textFieldLengthForReplacementPatientID
protected static int textFieldLengthForReplacementPatientID
-
textFieldLengthForReplacementAccessionNumber
protected static int textFieldLengthForReplacementAccessionNumber
-
textFieldLengthForModifyDates
protected static int textFieldLengthForModifyDates
-
resourceBundle
protected java.util.ResourceBundle resourceBundle
-
srcDatabase
protected DatabaseInformationModel srcDatabase
-
dstDatabase
protected DatabaseInformationModel dstDatabase
-
srcDatabasePanel
protected javax.swing.JPanel srcDatabasePanel
-
dstDatabasePanel
protected javax.swing.JPanel dstDatabasePanel
-
remoteQueryRetrievePanel
protected javax.swing.JPanel remoteQueryRetrievePanel
-
removeIdentityCheckBox
protected javax.swing.JCheckBox removeIdentityCheckBox
-
removeDescriptionsCheckBox
protected javax.swing.JCheckBox removeDescriptionsCheckBox
-
removeSeriesDescriptionsCheckBox
protected javax.swing.JCheckBox removeSeriesDescriptionsCheckBox
-
removeProtocolNameCheckBox
protected javax.swing.JCheckBox removeProtocolNameCheckBox
-
removeCharacteristicsCheckBox
protected javax.swing.JCheckBox removeCharacteristicsCheckBox
-
removeDeviceIdentityCheckBox
protected javax.swing.JCheckBox removeDeviceIdentityCheckBox
-
removeInstitutionIdentityCheckBox
protected javax.swing.JCheckBox removeInstitutionIdentityCheckBox
-
cleanUIDsCheckBox
protected javax.swing.JCheckBox cleanUIDsCheckBox
-
removePrivateCheckBox
protected javax.swing.JCheckBox removePrivateCheckBox
-
addContributingEquipmentCheckBox
protected javax.swing.JCheckBox addContributingEquipmentCheckBox
-
removeClinicalTrialAttributesCheckBox
protected javax.swing.JCheckBox removeClinicalTrialAttributesCheckBox
-
zipExportCheckBox
protected javax.swing.JCheckBox zipExportCheckBox
-
hierarchicalExportCheckBox
protected javax.swing.JCheckBox hierarchicalExportCheckBox
-
acceptAnyTransferSyntaxCheckBox
protected javax.swing.JCheckBox acceptAnyTransferSyntaxCheckBox
-
replacePatientNameCheckBox
protected javax.swing.JCheckBox replacePatientNameCheckBox
-
replacePatientIDCheckBox
protected javax.swing.JCheckBox replacePatientIDCheckBox
-
replaceAccessionNumberCheckBox
protected javax.swing.JCheckBox replaceAccessionNumberCheckBox
-
modifyDatesCheckBox
protected javax.swing.JCheckBox modifyDatesCheckBox
-
replacementPatientNameTextField
protected javax.swing.JTextField replacementPatientNameTextField
-
replacementPatientIDTextField
protected javax.swing.JTextField replacementPatientIDTextField
-
replacementAccessionNumberTextField
protected javax.swing.JTextField replacementAccessionNumberTextField
-
modifyDatesTextField
protected javax.swing.JTextField modifyDatesTextField
-
queryFilterPatientNameTextField
protected javax.swing.JTextField queryFilterPatientNameTextField
-
queryFilterPatientIDTextField
protected javax.swing.JTextField queryFilterPatientIDTextField
-
queryFilterStudyDateTextField
protected javax.swing.JTextField queryFilterStudyDateTextField
-
queryFilterAccessionNumberTextField
protected javax.swing.JTextField queryFilterAccessionNumberTextField
-
progressBarUpdater
protected SafeProgressBarUpdaterThread progressBarUpdater
-
cursorChanger
protected SafeCursorChanger cursorChanger
-
logger
protected MessageLogger logger
-
networkApplicationProperties
protected NetworkApplicationProperties networkApplicationProperties
-
networkApplicationInformation
protected NetworkApplicationInformation networkApplicationInformation
-
currentRemoteQueryInformationModel
protected QueryInformationModel currentRemoteQueryInformationModel
-
currentRemoteQuerySelectionQueryTreeRecord
protected QueryTreeRecord currentRemoteQuerySelectionQueryTreeRecord
-
currentRemoteQuerySelectionUniqueKeys
protected AttributeList currentRemoteQuerySelectionUniqueKeys
-
currentRemoteQuerySelectionUniqueKey
protected Attribute currentRemoteQuerySelectionUniqueKey
-
currentRemoteQuerySelectionRetrieveAE
protected java.lang.String currentRemoteQuerySelectionRetrieveAE
-
currentRemoteQuerySelectionLevel
protected java.lang.String currentRemoteQuerySelectionLevel
-
ourCalledAETitle
protected java.lang.String ourCalledAETitle
-
earliestDatesIndexedBySourceFilePath
protected java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath
-
savedImagesFolder
protected java.io.File savedImagesFolder
-
storageSOPClassSCPDispatcher
protected StorageSOPClassSCPDispatcher storageSOPClassSCPDispatcher
-
currentSourceDatabaseSelections
protected DatabaseTreeRecord[] currentSourceDatabaseSelections
-
currentSourceFilePathSelections
protected java.util.Vector currentSourceFilePathSelections
-
currentDestinationDatabaseSelections
protected DatabaseTreeRecord[] currentDestinationDatabaseSelections
-
currentDestinationFilePathSelections
protected java.util.Vector currentDestinationFilePathSelections
-
importDirectoryPath
protected java.lang.String importDirectoryPath
-
exportDirectoryPath
protected java.lang.String exportDirectoryPath
-
-
Constructor Detail
-
DicomCleaner
public DicomCleaner() throws DicomException, java.io.IOException
- Throws:
DicomException
java.io.IOException
-
-
Method Detail
-
setCurrentRemoteQueryInformationModel
protected void setCurrentRemoteQueryInformationModel(java.lang.String remoteAEForQuery)
-
importFileIntoDatabase
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
- Throws:
java.io.FileNotFoundException
java.io.IOException
DicomException
-
activateStorageSCP
protected void activateStorageSCP() throws DicomException, java.io.IOException
Start DICOM storage listener for populating source database.
- Throws:
DicomException
java.io.IOException
-
activateTemporaryDatabases
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.
- Throws:
DicomException
-
purgeFilesAndDatabaseInformation
protected void purgeFilesAndDatabaseInformation(DatabaseTreeRecord[] databaseSelections, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum) throws DicomException, java.io.IOException
- Throws:
DicomException
java.io.IOException
-
purgeFilesAndDatabaseInformation
protected void purgeFilesAndDatabaseInformation(DatabaseTreeRecord databaseSelection, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum) throws DicomException, java.io.IOException
- Throws:
DicomException
java.io.IOException
-
copyFromOriginalToCleanedPerformingAction
protected boolean copyFromOriginalToCleanedPerformingAction(java.util.Vector paths, java.util.Date earliestDateInSet, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater) throws DicomException, java.io.IOException
- Throws:
DicomException
java.io.IOException
-
findEarliestDate
protected static java.util.Date findEarliestDate(java.util.Map<java.lang.String,java.util.Date> earliestDatesIndexedBySourceFilePath, java.util.Vector<java.lang.String> sourceFilePathSelections)
-
makeNewFullyQualifiedInterchangeMediaInstancePathName
protected java.lang.String makeNewFullyQualifiedInterchangeMediaInstancePathName(int fileCount) throws java.io.IOException
- Throws:
java.io.IOException
-
makeNewFullyQualifiedHierarchicalInstancePathName
protected java.lang.String makeNewFullyQualifiedHierarchicalInstancePathName(java.lang.String sourceFileName) throws DicomException, java.io.IOException
- Throws:
DicomException
java.io.IOException
-
setCurrentRemoteQuerySelection
protected void setCurrentRemoteQuerySelection(AttributeList uniqueKeys, Attribute uniqueKey, AttributeList identifier)
-
performRetrieve
protected void performRetrieve(AttributeList uniqueKeys, java.lang.String selectionLevel, java.lang.String retrieveAE)
-
main
public static void main(java.lang.String[] arg)
The method to invoke the application.
- Parameters:
arg
- none
-
-