AcceptedImageSOPClasses and AcceptedOtherSOPClasses atributes. The dcm4chee.archive=DCMServer must be deployed first because the StoreScp registers itself against this server.]]> org.dcm4chex.archive.dcm.storescp.StoreScpService The default constructor StoreScpService &defaultAttributes; List of accepted called AE titles, separated by \(backslash). For example, DCM4CHEE\DCM4CHEE2. CalledAETitles java.lang.String ANY = accept any.
CONFIGURED_AETS = accept any configured AE Title. ]]>
CallingAETitles java.lang.String
UnrestrictedAppendPermissionsToAETitles java.lang.String List of the AE titles for the Storage SCUs for which a warning status, B000, is returned if data elements were coerced. Separate multiple values by \(backslash). NONE = no calling AE titles. WarnForCoercedAETitles java.lang.String List of the AE titles for the Storage SCUs from which storage requests with Affected SOP Instance UID in the command differs from the SOP Instance UID are accepted. Separate multiple values by \(backslash). NONE = no calling AE titles. AcceptMismatchAffectedSOPInstanceUIDCallingAETiles java.lang.String DefaultFileSystemGroupID java.lang.String AcceptMissingPatientID boolean AcceptMissingPatientName boolean GeneratePatientIDForUnscheduledFromAETitles and does not contain a reference to a Scheduled Procedure Step.
Use ### and/or $$$ as a placeholder for the decimal hash value of patient name and/or study instance uid. For example, PACS-##########.
NONE = do not generate patient IDs.
Issuer of Patient ID for generated Patient IDs will be set to the Issuer of Patient ID associated to the Storage SCP (=Called) AE by its AE configuration entry. If no Issuer of Patient ID is configured for the Storage SCP, Issuer of Patient ID is set to the value configured by attribute IssuerOfPatientIDGeneratedPatientID.]]>
GeneratePatientID java.lang.String
Issuer of Patient ID for generated Patient ID's, if no Issuer of Patient ID is associated with the Storage SCP (=Called) AE by its AE Configuration entry.]]> IssuerOfPatientIDGeneratedPatientID java.lang.String Patient ID, but no Issuer of Patient ID, with a value for Issuer of Patient ID, if such is associated with the Storage SCU AE by its AE Configuration entry.]]> SupplementIssuerOfPatientID boolean Accession Number, but no Issuer of Accession Number Sequence, with such Sequence containing one item with Local Namespace Enitity ID, Universial Enitity ID and Universial Enitity ID Type, if such is associated with the Storage SCU AE by its AE Configuration entry.]]> SupplementIssuerOfAccessionNumber boolean Institution within the database AE Configuration, use this value to supplement objects received from the AE which do not contain an Institution Name (DICOM tag (0008,0080)).]]> SupplementInstitutionName boolean Department within the database AE Configuration, use this value to supplement objects received from the AE which do not contain an Institutional Department Name (DICOM tag (0008,1040)).]]> SupplementInstitutionalDepartmentName boolean Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name, Institutional Department Name associated to the Storage SCU AE by an AE configuration entry with matching AE Title, AE configuration entries which host name is equals to the host name of the Storage SCU AE will be considered to determine the associated Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name. If there are several AE configuration entries with matching host name with different non-zero values for Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name, no Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name will be supplemented.]]> SupplementByHostName boolean Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name, Institutional Department Name associated to the Storage SCU AE by an AE configuration entry with matching AE Title, AE configuration entries which host name is equals to the IP address of the Storage SCU AE will be considered to determine the associated Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name. If there are several AE configuration entries with matching host name with different non-zero values for Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name, no Issuer of Patient ID, Issuer of Accession Number Sequence item, Institution Name or Institutional Department Name will be supplemented.]]> SupplementByHostAddress boolean If the list is prefixed by "!\", the Patient ID in objects without Scheduled Procedure Step reference received from any Storage SCU, except which AE title is specified in the list, will be replaced by a new generated Patient ID.
"NONE" = do not replace Patient IDs in objects received from any Storage SCU. ]]>
GeneratePatientIDForUnscheduledFromAETitles java.lang.String
Format: 'pid'['?']',issuer'['?'][',' ['['] demograhic-matches [']'] ]
demograhic-matches ::= demograhic-match['|' ...]
demograhic-match ::= [ignore',']demograhic-fields
ignore ::= 'ignore("' regular-expression '")'
demograhic-fields ::= demograhic-field['?'][',' ...]
demograhic-field ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex

Multiple alternative demograhic-matches can be specified using '|' as delimiter.

Substrings specified by 'ignore("' regular-expression '")' will be ignored for matching patient name components.

A '(1)' suffix of the attribute name specifies that only the first character need to match.

A question mark('?') after a attribute name specifies that a missing value in received DICOM objects will match with any value for that attribute in existing Patient Records, as Patient Records with missing values for that attribute will match with any value for that attribute in received DICOM objects. Attribute names without question marks specifies, that DICOM objects without values for such attributes will not match any existing Patient Record, and Patient Records without values for such attributes will not get selected on receive of any DICOM Composite Object.

With 'pid?', you have to configure the Patient's family name complex ('familyname') as additional matching criterium.

Surrounding demograhic-matches by brackets('[]') defines, that demographic fields shall *not* be considered for the selection of an existing Patient record, if the Patient ID is qualified by an Issuer/Authority in the received DICOM Composite Object *and* in the matching Patient Record.

Without surrounding brackets('[]'), the specified demograhic-match will be considered even if the Patient ID is qualified by an Issuer/Authority in the received DICOM Composite Object and there is an existing Patient Record with such Patient ID and Issuer/Authority: If the Patient Record does not also match in the specified demographic attributes, it will not be selected, but Patient ID and Issuer/Authority in the received DICOM Composite Object will be replace by a new Patient ID generated according configured GeneratePatientID and by configured IssuerOfGeneratedPatientID. If StoreOriginalPatientIDInOtherPatientIDsSequence = true, the original Patient ID and Issuer of Patient ID in the received DICOM Composite Object will be stored in an item of the Other Patient IDs Sequence.

Warning:Improper configuration may cause study assignments to wrong patient.

Default: pid,issuer?[familyname,givenname,middlename?,birthdate] ]]> PatientMatching java.lang.String Patient ID and Issuer of Patient ID in the received DICOM Composite Object will be stored in an item of the Other Patient IDs Sequence, if they have to be replaced by a new generated Patient ID, caused by an already existing Patient Record with matching Patient ID and Issuer of Patient ID, but not matching demographic fields.]]> StoreOriginalPatientIDInOtherPatientIDsSequence boolean Patient ID and Issuer of Patient ID in the received DICOM Composite Object will be stored in an item of the Original Attributes Sequence, if they have to be replaced by a new generated Patient ID, caused by an already existing Patient Record with matching Patient ID and Issuer of Patient ID, but not matching demographic fields.]]> StoreOriginalPatientIDInOriginalAttrsSeq boolean StudyDateInFilePath boolean SourceAETInFilePath boolean YearInFilePath boolean MonthInFilePath boolean DayInFilePath boolean HourInFilePath boolean archive-install-directory/server/default/. Alternatively an URI can be specified. In any case, there must be already a file system configured, which directory path match the value. If an URI is specified, the (0040,E010) Retrieve URI in received objects must start with the value + '/'. If a directory path is specified, the Retrieve URI must start with 'file:' + absolute directory path. Otherwise the storage will fail.
Multiple path/URI can be specified (one per line)
ALL means All configured filesystems of ReferencedFileSystemGroupID]]> ReferencedDirectoryPath java.lang.String ReferencedDirectoryPath belongs.]]> ReferencedFileSystemGroupID java.lang.String ReadReferencedFile boolean ReadReferencedFile = true.]]> Md5sumReferencedFile boolean Md5sum boolean before sending successful C-STORE RSP. Excludes possibility of truncated files on disk, caused by a system crash just after storage of a received object because the OS disk cache may not yet have written to the storage device, at the expense of storage performance.]]> SyncFileBeforeCStoreRSP boolean after sending successful C-STORE RSP. Minimize likilihood of truncated files on disk, caused by a system crash just after storage of a received object because the OS disk cache may not yet have written to the storage device, without significant decrease of storage performance. Only effective, if SyncFileBeforeCStoreRSP is false.]]> SyncFileAfterCStoreRSP boolean StoreDuplicatesIfDifferentMD5 boolean Further processing like forward, filecopy,.. of the new object is disabled in this case! Use NONE to disable this feature.]]> AllowDuplicateForBetterAvailabilityForAET java.lang.String AllowDuplicateForBetterAvailabilityForAET
]]>
AllowDiffMD5ForBetterAvailability boolean
DontStoreDuplicateIfFromExternalRetrieveAET boolean NOT located on this host.]]> StoreDuplicatesIfDifferentHost boolean Attributes for compression conditions below).

Syntax:
<compression rules> := (<compression rule> <EOL>)+

<compression rule> := [<conditions>] <compression>

<conditions> := '[' <condition> {',' <condition>} ']'

<condition> := <attribute> ['!']'=' <value> {'|' <value>}

<attribute> := 'calling' | 'called' | 'pmi' | 'cuid' | 'imgtype' | 'bodypart'

<compression> := 'NONE' | 'JPLL' | 'JLSL' | 'J2KR' | ('JPLY' ['(' <quality> ':' <description> ':' <ratio> ')'])

<quality> := used compression quality between 0.0 and 1.0, 0.75 by default.

<description> := description stored in attribute Derivation Description (0008,2111), "JPEG Lossy Compression with quality=0.75" by default.

<ratio> := estimated compression ratio stored in attribute Lossy Image Compression Ratio (0028,2112), 5.0 by default.

Supported compression modes:

  • NONE - do not apply compression.
  • JPLL - JPEG Lossless
  • JLSL - JPEG-LS Lossless
  • J2KR - JPEG 2000 Lossless
  • JPLY - JPEG Lossy

Attributes for compression conditions:

  • calling - Calling AE title in A-Associate RQ from Storage SCU.
  • called - Called AE title in A-Associate RQ from Storage SCU.
  • pmi - Photometric Interpretation (0028,0004) of image.
  • cuid - SOP Class UID (0008,0016) of image.
  • imgtype - Image Type (0008,0008) of image.
  • bodypart - Body Part Examined (0018,0015) of image.

The value of the attribute MaxConcurrentCodec of the Compression Service also effects the on-the-fly compression and decompression during the store of images by the Storage SCP.]]> CompressionRules java.lang.String CheckPendingSeriesStoredInterval java.lang.String Current state if CheckPendingSeriesStored task is running. Used to avoid concurrency! isRunning boolean Supports also AE specific delays.
Format: [<AE Title>:]<delay>
Note: A default delay (without '<AE Title>:') must be configured! ]]>
SeriesStoredNotificationDelay java.lang.String
SerializeDBUpdate boolean Maximum number of retries to update the database records for new received objects, before a processing failure is returned to the Storage SCU. UpdateDatabaseMaximumRetries int Maximum number of retries actually performed to update the database records for new received objects. UpdateDatabasePerformedRetries int Delay in milliseconds between retries to update the database records for new received objects. UpdateDatabaseRetryInterval long AcceptedImageSOPClasses java.lang.String AcceptedTransferSyntaxForImageSOPClasses java.lang.String AcceptedVideoSOPClasses java.lang.String AcceptedTransferSyntaxForVideoSOPClasses java.lang.String AcceptedWaveformSOPClasses java.lang.String AcceptedTransferSyntaxForWaveformSOPClasses java.lang.String AcceptedSRSOPClasses java.lang.String AcceptedTransferSyntaxForSRSOPClasses java.lang.String AcceptedOtherSOPClasses java.lang.String AcceptedTransferSyntaxForOtherSOPClasses java.lang.String Check if a received instance should be ignored due to 'Incorrect Worklist Entry Selected'. CheckIncorrectWorklistEntry boolean This can be used to avoid getting wrong instances from systems (e.g. central archive) that are not aware of changes of this archive.
Separate multiple values by \(backslash). NONE = no calling AE titles. ]]>
OnlyWellKnownInstancesCallingAETs java.lang.String
Maximum protocol data unit (PDU) package length for receiving PDUs. Attention: This property should be set to equal values for all DICOM SCP services with same called AE Title(s)! Otherwise it is non-deterministic, which configured value is effective! MaximumPDULength int The maximum number of outstanding operations and/or sub-operations it allows the Association-requester to invoke asynchronously. A value of zero indicates an unlimited number of outstanding operations. Attention: This property should be set to equal values for all DICOM SCP services with same called AE Title(s)! Otherwise it is non-deterministic, which configured value is effective! MaximumOperationsInvoked int The maximum number of outstanding operations and/or sub-operations it allows the Association-requester to perform asynchronously. A value of zero indicates an unlimited number of outstanding operations. Attention: This property should be set to equal values for all DICOM SCP services with same called AE Title(s)! Otherwise it is non-deterministic, which configured value is effective! MaximumOperationsPerformed int Maximum value length of non-pixel data attributes of received objects. Storage of objects with attributes with larger value length will fail. MaximumValueLength int Size of byte buffer used for copying data from TCP channel to file. BufferSize int AET/timestamp-cstorerq.xml in the log directory. Useful for creation of XSL stylesheets for attribute coercion. Separate multiple values by \ (backslash). NONE = no calling AE titles.]]> LogAETitles java.lang.String archive-install-directory/server/default/.]]> CoerceConfigDirectory java.lang.String FileName: <LOG_DIR>/coercion/<timestamp>.<xsl file>.[in]|[out]
Coercion logs are only written for Calling AETs specified in LogAETitles!]]>
WriteCoercionXmlLog boolean
CoerceBeforeWrite boolean Used internally. Do NOT modify. TimerIDCheckPendingSeriesStored java.lang.String Used internally. Do NOT modify. SchedulerServiceName javax.management.ObjectName Used internally. Do NOT modify. FileSystemMgtServiceNamePrefix java.lang.String Used internally. Do NOT modify. MwlScuServiceName javax.management.ObjectName Used internally. Do NOT modify. DcmServerName javax.management.ObjectName Used internally. Do NOT modify. TemplatesServiceName javax.management.ObjectName Used internally. Do NOT modify. PerfMonServiceName javax.management.ObjectName Used internally. Do NOT modify. AEServiceName javax.management.ObjectName &defaultOperations; Reset Update Database - Performed Retries to 0. resetMaxCountUpdateDatabaseRetries void Import a DICOM file (internal use only) importFile Transfer object for File fileDTO org.dcm4chex.archive.ejb.interfaces.FileDTO Dataset. ds org.dcm4che.data.Dataset Previous Series Instance UID - triggers SeriesStored Notification if different to Series Instance UID in Dataset prevSeriesInstanceUID java.lang.String mark last object to import - triggers SeriesStored Notification last boolean Delete the given file if a duplicate file (same md5 checksum) already exists on the same filesystem. deleteFileIfDuplicateExists boolean void Create empty file in storage directory (internal use only) of specified file system group makeFile FileSystemGroupID fsgroupid java.lang.String Dataset ds org.dcm4che.data.Dataset org.dcm4chex.archive.ejb.interfaces.FileDTO The notification sent whenever a Series of DICOM composite object was stored. It is triggered by the periodic check for received Series, for which no Series Stored Notifications were not yet emitted. javax.management.Notification org.dcm4chex.archive.common.SeriesStored The notification sent whenever a DICOM composite object was stored. javax.management.Notification org.dcm4chex.archive.dcm.storescp