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).
JFrame.AccessibleJFrame
Frame.AccessibleAWTFrame
Window.AccessibleAWTWindow, Window.Type
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
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
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
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 void |
copyFromOriginalToCleanedPerformingAction(Vector paths,
Date earliestDateInSet,
MessageLogger logger,
SafeProgressBarUpdaterThread progressBarUpdater) |
protected static Date |
findEarliestDate(Map<String,Date> earliestDatesIndexedBySourceFilePath,
Vector<String> sourceFilePathSelections) |
protected boolean |
haveJPEG2000Part1Codec() |
protected boolean |
haveJPEGLosslessCodec() |
protected static void |
importFileIntoDatabase(DatabaseInformationModel database,
String dicomFileName,
String fileReferenceType,
Map<String,Date> earliestDatesIndexedBySourceFilePath) |
static void |
main(String[] arg)
The method to invoke the application.
|
protected String |
makeNewFullyQualifiedHierarchicalInstancePathName(String sourceFileName) |
protected String |
makeNewFullyQualifiedInterchangeMediaInstancePathName(int fileCount) |
protected void |
performRetrieve(AttributeList uniqueKeys,
String selectionLevel,
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(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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getFont, postEvent
protected static String resourceBundleName
protected static String propertiesFileName
protected static String propertyName_DicomCurrentlySelectedStorageTargetAE
protected static String propertyName_DicomCurrentlySelectedQueryTargetAE
protected static String rootNameForDicomInstanceFilesOnInterchangeMedia
protected static String filePrefixForDicomInstanceFilesOnInterchangeMedia
protected static String fileSuffixForDicomInstanceFilesOnInterchangeMedia
protected static String nameForDicomDirectoryOnInterchangeMedia
protected static String exportedZipFileName
protected static int textFieldLengthForQueryPatientName
protected static int textFieldLengthForQueryPatientID
protected static int textFieldLengthForQueryStudyDate
protected static int textFieldLengthForReplacementPatientName
protected static int textFieldLengthForReplacementPatientID
protected static int textFieldLengthForReplacementAccessionNumber
protected static int textFieldLengthForModifyDates
protected ResourceBundle resourceBundle
protected DatabaseInformationModel srcDatabase
protected DatabaseInformationModel dstDatabase
protected JPanel srcDatabasePanel
protected JPanel dstDatabasePanel
protected JPanel remoteQueryRetrievePanel
protected JCheckBox removeIdentityCheckBox
protected JCheckBox removeDescriptionsCheckBox
protected JCheckBox removeSeriesDescriptionsCheckBox
protected JCheckBox removeProtocolNameCheckBox
protected JCheckBox removeCharacteristicsCheckBox
protected JCheckBox removeDeviceIdentityCheckBox
protected JCheckBox removeInstitutionIdentityCheckBox
protected JCheckBox cleanUIDsCheckBox
protected JCheckBox removePrivateCheckBox
protected JCheckBox addContributingEquipmentCheckBox
protected JCheckBox removeClinicalTrialAttributesCheckBox
protected JCheckBox zipExportCheckBox
protected JCheckBox hierarchicalExportCheckBox
protected JCheckBox replacePatientNameCheckBox
protected JCheckBox replacePatientIDCheckBox
protected JCheckBox replaceAccessionNumberCheckBox
protected JCheckBox modifyDatesCheckBox
protected JTextField replacementPatientNameTextField
protected JTextField replacementPatientIDTextField
protected JTextField replacementAccessionNumberTextField
protected JTextField modifyDatesTextField
protected JTextField queryFilterPatientNameTextField
protected JTextField queryFilterPatientIDTextField
protected JTextField queryFilterStudyDateTextField
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 String currentRemoteQuerySelectionRetrieveAE
protected String currentRemoteQuerySelectionLevel
protected String ourCalledAETitle
protected static boolean haveScannedForCodecs
protected static boolean haveCheckedForJPEGLosslessCodec
protected static boolean haveFoundJPEGLosslessCodec
protected static boolean haveCheckedForJPEG2000Part1Codec
protected static boolean haveFoundJPEG2000Part1Codec
protected Map<String,Date> earliestDatesIndexedBySourceFilePath
protected File savedImagesFolder
protected StorageSOPClassSCPDispatcher storageSOPClassSCPDispatcher
protected DatabaseTreeRecord[] currentSourceDatabaseSelections
protected Vector currentSourceFilePathSelections
protected DatabaseTreeRecord[] currentDestinationDatabaseSelections
protected Vector currentDestinationFilePathSelections
protected String importDirectoryPath
protected String exportDirectoryPath
public DicomCleaner() throws DicomException, IOException
DicomException
IOException
protected boolean haveJPEGLosslessCodec()
protected boolean haveJPEG2000Part1Codec()
protected void setCurrentRemoteQueryInformationModel(String remoteAEForQuery)
protected static void importFileIntoDatabase(DatabaseInformationModel database, String dicomFileName, String fileReferenceType, Map<String,Date> earliestDatesIndexedBySourceFilePath) throws FileNotFoundException, IOException, DicomException
protected void activateStorageSCP() throws DicomException, IOException
Start DICOM storage listener for populating source database.
DicomException
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, IOException
DicomException
IOException
protected void purgeFilesAndDatabaseInformation(DatabaseTreeRecord databaseSelection, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum) throws DicomException, IOException
DicomException
IOException
protected void copyFromOriginalToCleanedPerformingAction(Vector paths, Date earliestDateInSet, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater) throws DicomException, IOException
DicomException
IOException
protected static Date findEarliestDate(Map<String,Date> earliestDatesIndexedBySourceFilePath, Vector<String> sourceFilePathSelections)
protected String makeNewFullyQualifiedInterchangeMediaInstancePathName(int fileCount) throws IOException
IOException
protected String makeNewFullyQualifiedHierarchicalInstancePathName(String sourceFileName) throws DicomException, IOException
DicomException
IOException
protected void setCurrentRemoteQuerySelection(AttributeList uniqueKeys, Attribute uniqueKey, AttributeList identifier)
protected void performRetrieve(AttributeList uniqueKeys, String selectionLevel, String retrieveAE)
public static void main(String[] arg)
The method to invoke the application.
arg
- none