This commit is contained in:
2025-02-26 14:49:25 +07:00
commit 1c1d9c4474
6403 changed files with 1953774 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- $Id: AttributePersistenceService-xmbean.xml 23167 2004-08-23 16:57:19Z andd $ -->
<mbean>
<!-- MBean Info -->
<description>XMBean Attribute Persistence Service</description>
<descriptors>
<persistence persistPolicy="OnUpdate"
persistLocation="${jboss.server.data.dir}/xmbean-attrs"
persistName="AttributePersistenceService.ser"/>
<persistence-manager value="org.jboss.mx.persistence.ObjectStreamPersistenceManager"/>
</descriptors>
<class>org.jboss.system.pm.AttributePersistenceService</class>
<!-- Attributes -->
<attribute access="read-write" getMethod="getApmDestroyOnServiceStop" setMethod="setApmDestroyOnServiceStop">
<description>Specifies whether to call destroy() on the AttributePersistenceManager implementation, upon service stop</description>
<name>ApmDestroyOnServiceStop</name>
<type>boolean</type>
<descriptors>
<descriptor name="persistPolicy" value="Never"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAttributePersistenceManagerClass" setMethod="setAttributePersistenceManagerClass">
<description>The actual AttributePersistenceManager implementation</description>
<name>AttributePersistenceManagerClass</name>
<type>java.lang.String</type>
<descriptors>
<descriptor name="persistPolicy" value="Never"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAttributePersistenceManagerConfig" setMethod="setAttributePersistenceManagerConfig">
<description>The XML configuration that is passed to the AttributePersistenceManager implementation</description>
<name>AttributePersistenceManagerConfig</name>
<type>org.w3c.dom.Element</type>
<descriptors>
<descriptor name="persistPolicy" value="Never"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getVersionTag" setMethod="setVersionTag">
<description>The version tag to use for stored/loaded Attribute data</description>
<name>VersionTag</name>
<type>java.lang.String</type>
<descriptors>
<descriptor name="persistPolicy" value="OnUpdate"/>
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation>
<description>Factory method returning the active AttributePersistenceManager implementation, for internal usage</description>
<name>apmCreate</name>
<return-type>org.jboss.mx.persistence.AttributePersistenceManager</return-type>
</operation>
<operation>
<description>Delegated to the active APM returns true when a persisted image with this id exists</description>
<name>apmExists</name>
<parameter>
<description>The id of the persisted attribute image</description>
<name>id</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation>
<description>Delegated to the active APM removes the specified persisted attribute image</description>
<name>apmRemove</name>
<parameter>
<description>The id of the persisted attribute image</description>
<name>id</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation>
<description>Delegated to the active APM removes the persisted attribute images</description>
<name>apmRemoveAll</name>
<return-type>void</return-type>
</operation>
<operation>
<description>Delegated to the active APM it returns a list with the ids of all persisted attribute images</description>
<name>apmListAll</name>
<return-type>[Ljava.lang.String;</return-type>
</operation>
<operation>
<description>Delegated to the active APM it returns a single string with the ids of all persisted attribute images</description>
<name>apmListAllAsString</name>
<return-type>java.lang.String</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- $Id: ClientUserTransaction-xmbean.xml 18262 2003-12-20 21:12:07Z pilhuhn $ -->
<mbean>
<description>ClientUserTransaction Service.</description>
<class>org.jboss.tm.usertx.server.ClientUserTransactionService</class>
&defaultAttributes;
<attribute access="write-only" setMethod="setTxProxyName">
<description>Set the name of the proxy factory service used for the UserTransactionSession</description>
<name>TxProxyName</name>
<type>javax.management.ObjectName</type>
</attribute>
<operation>
<description>Expose UserTransactionSession and UserTransactionSessionFactory interfaces via JMX to invokers.</description>
<name>invoke</name>
<parameter>
<description>A pointer to the invocation object</description>
<name>invocation</name>
<type>org.jboss.invocation.Invocation</type>
</parameter>
<return-type>java.lang.Object</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- The JNDIView service XMBean
$Id: JNDIView-xmbean.xml 38992 2005-12-13 15:29:35Z jerrygauth $
-->
<mbean>
<description>JNDIView Service. List deployed application java:comp namespaces,
the java: namespace as well as the global InitialContext JNDI namespace.
</description>
<class>org.jboss.naming.JNDIView</class>
&defaultAttributes;
<attribute access="read-write" getMethod="getHANamingService" setMethod="setHANamingService">
<description>The HANamingService service name</description>
<name>HANamingService</name>
<type>java.lang.String</type>
</attribute>
<operation>
<description>Output JNDI info as text</description>
<name>list</name>
<parameter>
<description>If true, list the class of each object in addition to its name</description>
<name>verbose</name>
<type>boolean</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation>
<description>Output JNDI info in XML format</description>
<name>listXML</name>
<return-type>java.lang.String</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd" [
<!ATTLIST interceptor
proxyName CDATA #IMPLIED
>
]>
<!-- The Log4JService service XMBean
$Id: Log4jService-xmbean.xml 28573 2005-02-11 13:15:54Z pilhuhn $
-->
<mbean>
<description>
This MBean allows to get and set Log4j specific options.
See also resource:log4j.xml
</description>
<class>org.jboss.logging.Log4jService</class>
<constructor>
<description>The default constructor</description>
<name>Log4jService</name>
</constructor>
&defaultAttributes;
<attribute access="read-write" getMethod="getConfigurationURL" setMethod="setConfigurationURL">
<description>The URL of the log4j.xml config file.</description>
<name>ConfigurationURL</name>
<type>java.net.URL</type>
</attribute>
<attribute access="read-write" getMethod="getCatchSystemErr" setMethod="setCatchSystemErr">
<description>Should data writen to standard error be caught and integrated into the log output.</description>
<name>CatchSystemErr</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getCatchSystemOut" setMethod="setCatchSystemOut">
<description>Should data writen to standard output be caught and integrated into the log output.</description>
<name>CatchSystemOut</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getLog4jQuietMode" setMethod="setLog4jQuietMode">
<description>Sets the log4j quite mode. For log4j 1.2.8 this must stay on true.</description>
<name>Log4jQuietMode</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getRefreshPeriod" setMethod="setRefreshPeriod">
<description>The time in seconds between checking for new config.</description>
<name>RefreshPeriod</name>
<type>int</type>
</attribute>
<!-- Operations -->
<operation>
<description>Displays the log level of a given logger.</description>
<name>getLoggerLevel</name>
<parameter>
<description>The name of the logger to display.</description>
<name>logger</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation>
<description>Sets the log level for a given logger.</description>
<name>setLoggerLevel</name>
<parameter>
<description>The name of the logger to set.</description>
<name>logger</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>The log level to set.</description>
<name>level</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation>
<description>Sets the levels of each logger specified by the given comma
seperated list of logger names.</description>
<name>setLoggerLevels</name>
<parameter>
<description>The list of loggers</description>
<name>loggers</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>The log level to set</description>
<name>level</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation>
<description>Force the logging system to reconfigure.</description>
<name>reconfigure</name>
<return-type>void</return-type>
</operation>
<operation>
<description>Force the logging system to reconfigure with the given URL.</description>
<name>reconfigure</name>
<parameter>
<description>The url for the new configuration.</description>
<name>url</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- The JNDI Naming XMBean
$Id: NamingBean-xmbean.xml 60240 2007-02-03 18:29:53Z scott.stark@jboss.org $
-->
<mbean>
<description>The JNDI pojo bean</description>
<class>org.jnp.server.NamingBeanImpl</class>
<constructor>
<description>The default constructor</description>
<name>NamingBeanImpl</name>
</constructor>
<attribute access="read-only" getMethod="getNamingInstance">
<description>The NamingInstance</description>
<name>NamingInstance</name>
<type>org.jnp.interfaces.Naming</type>
</attribute>
<!-- Operations -->
<operation>
<description>The start lifecycle op</description>
<name>start</name>
<return-type>void</return-type>
</operation>
<operation>
<description>The stop lifecycle op</description>
<name>stop</name>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd"
[
<!ATTLIST interceptor proxyName CDATA #IMPLIED>
]>
<!-- The JNDI Naming service XMBean
$Id: NamingService-xmbean.xml 60231 2007-02-03 08:00:43Z scott.stark@jboss.org $
-->
<mbean>
<description>The standard JBoss JNDI naming server with a custom
ProxyFactoryInterceptor interceptor that does replacement of NamingContext
objects with the detached invoker proxy.
</description>
<descriptors>
<interceptors>
<!-- Uncomment to enable NamingContext replacement by the detached
invoker proxy. You need to set the proxyName attribute correctly.
<interceptor code="org.jboss.naming.interceptors.ProxyFactoryInterceptor"
proxyName="jboss:service=proxyFactory,type=pooled,target=Naming"/>
-->
<interceptor code="org.jboss.mx.interceptor.PersistenceInterceptor2" />
<interceptor code="org.jboss.mx.interceptor.ModelMBeanInterceptor" />
<interceptor code="org.jboss.mx.interceptor.ObjectReferenceInterceptor" />
</interceptors>
</descriptors>
<class>org.jboss.naming.NamingService</class>
<constructor>
<description>The default constructor</description>
<name>NamingService</name>
</constructor>
&defaultAttributes;
<attribute access="read-only" getMethod="getMethodMap">
<name>MethodMap</name>
<type>java.util.Map</type>
</attribute>
<attribute access="read-write" getMethod="getNaming" setMethod="setNaming">
<description>Underlying Naming bean instance</description>
<name>Naming</name>
<type>org.jnp.server.NamingBean</type>
</attribute>
<attribute access="read-only" getMethod="getNamingInstance">
<description>Underlying Naming bean instance</description>
<name>NamingInstance</name>
<type>org.jnp.interfaces.Naming</type>
</attribute>
<attribute access="read-write" getMethod="getCallByValue" setMethod="setCallByValue">
<description>The call by value mode. true if all lookups are unmarshalled using
the caller's TCL, false if in VM lookups return the value by reference.</description>
<name>CallByValue</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getBindAddress" setMethod="setBindAddress">
<description>The bind address of the bootstrap lookup socket.</description>
<name>BindAddress</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getPort" setMethod="setPort">
<description>The listening port for the bootstrap JNP service. Set this to -1
to run the NamingService without the JNP invoker listening port.</description>
<name>Port</name>
<type>int</type>
</attribute>
<attribute access="read-write" getMethod="getBacklog" setMethod="setBacklog">
<description>The bootstrap socket backlog count.</description>
<name>Backlog</name>
<type>int</type>
</attribute>
<attribute access="read-write" getMethod="getJNPServerSocketFactory"
setMethod="setJNPServerSocketFactory">
<description>The bootstrap socket javax.net.ServerSocketFactory class name</description>
<name>JNPServerSocketFactory</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getJNPServerSocketFactoryBean"
setMethod="setJNPServerSocketFactoryBean">
<description>The bootstrap socket javax.net.ServerSocketFactory</description>
<name>JNPServerSocketFactoryBean</name>
<type>javax.net.ServerSocketFactory</type>
</attribute>
<attribute access="read-write" getMethod="getRmiPort" setMethod="setRmiPort">
<description>The port of the RMI naming service, 0 == anonymous. This
is only used if an explicit InvokerProxyFactory has not been set.</description>
<name>RmiPort</name>
<type>int</type>
</attribute>
<attribute access="read-write" getMethod="getRmiBindAddress" setMethod="setRmiBindAddress">
<description>The RMI service bind address. Empty == all addresses</description>
<name>RmiBindAddress</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getClientSocketFactory" setMethod="setClientSocketFactory">
<description>The RMI service java.rmi.server.RMIClientSocketFactory class name</description>
<name>ClientSocketFactory</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getClientSocketFactoryBean" setMethod="setClientSocketFactoryBean">
<description>The RMI service java.rmi.server.RMIServerSocketFactory instance</description>
<name>ClientSocketFactoryBean</name>
<type>java.rmi.server.RMIClientSocketFactory</type>
</attribute>
<attribute access="read-write" getMethod="getServerSocketFactory" setMethod="setServerSocketFactory">
<description>The RMI service java.rmi.server.RMIServerSocketFactory class name</description>
<name>ServerSocketFactory</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getServerSocketFactoryBean" setMethod="setServerSocketFactoryBean">
<description>The RMI service java.rmi.server.RMIServerSocketFactory instance</description>
<name>ServerSocketFactory</name>
<type>java.rmi.server.RMIServerSocketFactory</type>
</attribute>
<attribute access="read-write" getMethod="getInstallGlobalService"
setMethod="setInstallGlobalService">
<description>Ghe InstallGlobalService which defines whether the MainMBean's
Naming server will be installed as the NamingContext.setLocal global
value.</description>
<name>InstallGlobalService</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getUseGlobalService"
setMethod="setUseGlobalService">
<description>The UseGlobalService which defines whether the MainMBean's
Naming server will initialized from the existing NamingContext.setLocal global
value.</description>
<name>UseGlobalService</name>
<type>boolean</type>
</attribute>
<attribute access="write-only" setMethod="setLookupPool">
<description>The thread pool service used to control the bootstrap lookups</description>
<name>LookupPool</name>
<type>org.jboss.util.threadpool.BasicThreadPoolMBean</type>
</attribute>
<attribute access="write-only" setMethod="setInvokerProxyFactory">
<description>The detached invoker proxy factory to use for the naming
service transport.</description>
<name>InvokerProxyFactory</name>
<type>org.jboss.invocation.jrmp.server.JRMPProxyFactoryMBean</type>
</attribute>
<!-- Operations -->
<operation>
<description>The generic invocation operation used by detached invokers
to route requests to the service
</description>
<name>invoke</name>
<parameter>
<description>The Naming interface method invocation encapsulation
</description>
<name>invocation</name>
<type>org.jboss.invocation.Invocation</type>
</parameter>
<return-type>java.lang.Object</return-type>
</operation>
<operation>
<description>Create an alias in jndi
</description>
<name>createAlias</name>
<parameter>
<description>The from name
</description>
<name>fromName</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>The to name
</description>
<name>toName</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation>
<description>Remove an alias from jndi
</description>
<name>removeAlias</name>
<parameter>
<description>The name
</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- $Id: TransactionManagerService-xmbean.xml 32334 2005-06-17 06:45:59Z adrian $ -->
<mbean>
<description>TransactionManager Service.</description>
<class>org.jboss.tm.TransactionManagerService</class>
&defaultAttributes;
<attribute access="read-write" getMethod="getGlobalIdsEnabled" setMethod="setGlobalIdsEnabled">
<description>Should be set to true for transaction demarcation over IIOP</description>
<name>GlobalIdsEnabled</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="isInterruptThreads" setMethod="setInterruptThreads">
<description>Whether to interrupt threads at transaction timeout</description>
<name>InterruptThreads</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getTransactionTimeout" setMethod="setTransactionTimeout">
<description>The transaction timeout in seconds</description>
<name>TransactionTimeout</name>
<type>int</type>
</attribute>
<attribute access="read-write" getMethod="getXidFactory" setMethod="setXidFactory">
<description>Name of the xidFactory</description>
<name>XidFactory</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="write-only" setMethod="setTransactionIntegrityFactory">
<description>Transaction Integrity Policy</description>
<name>TransactionIntegrityFactory</name>
<type>org.jboss.tm.integrity.TransactionIntegrityFactory</type>
</attribute>
<attribute access="read-only" getMethod="getTransactionManager">
<description>Returns the TransactionManager managed by this service</description>
<name>TransactionManager</name>
<type>javax.transaction.TransactionManager</type>
</attribute>
<attribute access="read-only" getMethod="getXATerminator">
<description>Returns the XATerminator managed by this service</description>
<name>XATerminator</name>
<type>org.jboss.tm.JBossXATerminator</type>
</attribute>
<attribute access="read-only" getMethod="getTransactionCount">
<description>Counts the number of active transactions</description>
<name>TransactionCount</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getCommitCount">
<description>Counts the number of commited transactions</description>
<name>CommitCount</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getRollbackCount">
<description>Counts the number of transactions that have been rolled back</description>
<name>RollbackCount</name>
<type>long</type>
</attribute>
<operation>
<description>Register a XAException Formatter</description>
<name>registerXAExceptionFormatter</name>
<parameter>
<description>The class of the formatter</description>
<name>clazz</name>
<type>java.lang.Class</type>
</parameter>
<parameter>
<description>A XAExceptionFromatter value</description>
<name>formatter</name>
<type>org.jboss.tm.XAExceptionFormatter</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation>
<description>Unregister a XAException Formatter</description>
<name>unregisterXAExceptionFormatter</name>
<parameter>
<description>The class of the formatter</description>
<name>clazz</name>
<type>java.lang.Class</type>
</parameter>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,516 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[AE Configuration Service.
Used to list/add/remove AE configuration entities - alternatively to more convenient
AE Management Page of the <a href='http://localhost:8080/dcm4chee-web/'>
Administration Web Application</a>.
Used/Required by various DICOM services (Query/Retrieve SCP, Storage Commitment SCU/SCP,
DICOM Hanging Protocol SCP) to 'guess' the port number of DICOM peer Application Entities,
if no AE configuration entry for a given AE Title matches.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.AEService</class>
<constructor>
<description>The default constructor</description>
<name>AEService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-only" getMethod="getAEs">
<description>Configured application entities.&lt;br&gt;
Use the addAE and removeAE commands below to add and remove AE configurations.</description>
<name>AEConfiguration</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getPortNumbers" setMethod="setPortNumbers">
<!-- Network -->
<description>Port numbers for AE auto configuration.&lt;br&gt;
The method getAE(title, hostname) use this list to find a DICOM service hosted by hostname.&lt;br&gt;
'NONE' will disable auto AE configuration!
</description>
<name>PortNumbers</name>
<type>java.lang.String</type>
<descriptors>
<value value="104,11112"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDontSaveIP" setMethod="setDontSaveIP">
<description> This flag is used by auto AE configuration, if no hostname is available.&lt;br&gt;
Set this flag to false if you explicitly allow the saving of ip address.&lt;br&gt;
This should be only necessary if your network have static ip address and no name service active!&lt;br&gt;
Avoid this option if you use DHCP!
</description>
<name>DontSaveIP</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isAutoUpdateIP" setMethod="setAutoUpdateIP">
<description>Controls if configured IP addresses of AE Titles shall be
updated automatically on receive of C-MOVE requests with the requester's
AE Title as Move Destination. Useful for retrieve to clients with dynamic
IP.
</description>
<name>AutoUpdateIP</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxCacheSize" setMethod="setMaxCacheSize">
<description>Maximal number of cached AE configurations.
</description>
<name>MaxCacheSize</name>
<type>int</type>
<descriptors>
<value value="20"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCacheSize">
<description>Current number of cached AE configurations.
</description>
<name>CacheSize</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getUpdateStudiesBatchSize"
setMethod="setUpdateStudiesBatchSize">
<description><![CDATA[Defines maximal number of studies fetched from the
data base in one transaction by operation <i>updateAETitle</i>
for update of <i>RetrieveAETs</i> values in Study, Series and Instance
records.]]>
</description>
<name>UpdateStudiesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getOtherServiceAETAttrs"
setMethod="setOtherServiceAETAttrs">
<description><![CDATA[List of AE Title attributes of other services
which are updated by operation updateAETitle.
]]>
</description>
<name>OtherServiceAETitleAttributesToUpdate</name>
<type>java.lang.String</type>
<descriptors>
<value value="
dcm4chee.archive:service=AttributesModificationScp#CalledAETitles
dcm4chee.archive:service=AttributesModificationScp#CallingAETitles
dcm4chee.archive:service=AttributesModificationScu#ForwardingRules
dcm4chee.archive:service=AttributesModificationScu#CallingAETitle
dcm4chee.archive:service=AuditLogger#LocalAETitles
dcm4chee.archive:service=ContentEditService#CalledAETitle
dcm4chee.archive:service=ContentEditService#CallingAETitle
dcm4chee.archive:service=ECHOService#CallingAETitle
dcm4chee.archive:service=ExportManager#CallingAETitle
dcm4chee.archive:service=FindScu#CallingAETitle
dcm4chee.archive:service=FileSystemMgt,group=LOSSY_STORAGE#DefaultRetrieveAETitle
dcm4chee.archive:service=FileSystemMgt,group=NEARLINE_STORAGE#DefaultRetrieveAETitle
dcm4chee.archive:service=FileSystemMgt,group=ONLINE_STORAGE#DefaultRetrieveAETitle
dcm4chee.archive:service=FileSystemMgt#RetrieveAETitle
dcm4chee.archive:service=Forward#ForwardModifiedToAETitles
dcm4chee.archive:service=GPWLScp#CalledAETitles
dcm4chee.archive:service=GPWLScp#CallingAETitles
dcm4chee.archive:service=GPWLScu#CallingAETitle
dcm4chee.archive:service=GPWLScu#CalledAETitle
dcm4chee.archive:service=HPScp#CalledAETitles
dcm4chee.archive:service=HPScp#CallingAETitles
dcm4chee.archive:service=IANScp#CalledAETitles
dcm4chee.archive:service=IANScp#CallingAETitles
dcm4chee.archive:service=IANScu#NotifiedAETitles
dcm4chee.archive:service=IANScu#CallingAETitle
dcm4chee.archive:service=LossyCompressionService#ExternalRetrieveAETitle
dcm4chee.archive:service=LossyCompressionService#SourceAETitle
dcm4chee.archive:service=MCMScu#CallingAETitle
dcm4chee.archive:service=MCMScu#RetrieveAETitle
dcm4chee.archive:service=MCMScu#MoveDestinationAETitle
dcm4chee.archive:service=MCMScu#McmScpAETitle
dcm4chee.archive:service=MoveScu#CallingAETitle
dcm4chee.archive:service=MoveScu#CalledAETitle
dcm4chee.archive:service=MPPSEmulator#ModalityAETitles
dcm4chee.archive:service=MPPSEmulator#CalledAETitle
dcm4chee.archive:service=MPPSScp#CalledAETitles
dcm4chee.archive:service=MPPSScp#CallingAETitles
dcm4chee.archive:service=MPPSScu#ForwardingRules
dcm4chee.archive:service=MPPSScu#CallingAETitle
dcm4chee.archive:service=MWLFindScp#CalledAETitles
dcm4chee.archive:service=MWLFindScp#CallingAETitles
dcm4chee.archive:service=MWLFindScp#LogAETitles
dcm4chee.archive:service=MWLScu#CallingAETitle
dcm4chee.archive:service=MWLScu#CalledAETitle
dcm4chee.archive:service=PPSScu#DestinationAETitles
dcm4chee.archive:service=PPSScu#CallingAETitle
dcm4chee.archive:service=Prefetch#PrefetchSourceAETitle
dcm4chee.archive:service=Prefetch#DestinationQueryAETitle
dcm4chee.archive:service=Prefetch#DestinationStorageAETitle
dcm4chee.archive:service=Prefetch#CallingAETitle
dcm4chee.archive:service=QueryRetrieveScp#CalledAETitles
dcm4chee.archive:service=QueryRetrieveScp#CallingAETitles
dcm4chee.archive:service=QueryRetrieveScp#LocalStorageAETitle
dcm4chee.archive:service=QueryRetrieveScp#SendWithDefaultTransferSyntaxToAETitles
dcm4chee.archive:service=QueryRetrieveScp#SendNoPixelDataToAETitles
dcm4chee.archive:service=QueryRetrieveScp#IgnoreUnsupportedSOPClassFailures
dcm4chee.archive:service=QueryRetrieveScp#PIXQueryCallingAETitles
dcm4chee.archive:service=QueryRetrieveScp#CoerceRequestPatientIdsAETitles
dcm4chee.archive:service=QueryRetrieveScp#UnrestrictedQueryPermissionsToAETitles
dcm4chee.archive:service=QueryRetrieveScp#UnrestrictedReadPermissionsToAETitles
dcm4chee.archive:service=QueryRetrieveScp#UnrestrictedExportPermissionsToAETitles
dcm4chee.archive:service=QueryRetrieveScp#LogAETitles
dcm4chee.archive:service=StgCmtScuScp#CalledAETitles
dcm4chee.archive:service=StgCmtScuScp#CallingAETitles
dcm4chee.archive:service=StgCmtScuScp#RequestStorageCommitFromAETitles
dcm4chee.archive:service=StgCmtScuScp#TrustStorageCommitFromAETitles
dcm4chee.archive:service=StoreScp#CalledAETitles
dcm4chee.archive:service=StoreScp#CallingAETitles
dcm4chee.archive:service=StoreScp#UnrestrictedAppendPermissionsToAETitles
dcm4chee.archive:service=StoreScp#WarnForCoercedAETitles
dcm4chee.archive:service=StoreScp#LogAETitles
dcm4chee.archive:service=StudyReconciliation#FindSCPAETitle
dcm4chee.archive:service=StudyReconciliation#CallingAETitle
dcm4chee.archive:service=StudyMgtScp#CalledAETitles
dcm4chee.archive:service=StudyMgtScp#CallingAETitles
dcm4chee.archive:service=StudyMgtScu#CallingAETitle
dcm4chee.archive:service=UPSScp#CalledAETitles
dcm4chee.archive:service=UPSScp#CallingAETitles
dcm4chee.archive:service=WADOService#FetchDestinationAET
dcm4chee.archive:service=XDS-I#DocRepositoryAET
dcm4chee.web:service=AttributesModificationSCU#CallingAETitle
dcm4chee.web:service=AttributesModificationSCU#CalledAETitles
dcm4chee.web:service=AttributesModificationSCU#ModifyingSystem
dcm4chee.web:service=ContentEditService#ModifyingSystem
dcm4chee.web:service=ContentEditService#ForwardModifiedToAETs
dcm4chee.web:service=EchoService#CallingAETitle
dcm4chee.web:service=IANSCU#CallingAETitle
dcm4chee.web:service=IANSCU#CalledAETitles
dcm4chee.web:service=MoveScu#CallingAETitle
dcm4chee.web:service=MoveScu#CalledAETitle
dcm4chee.web:service=RejectionNoteSCU#CallingAETitle
dcm4chee.web:service=RejectionNoteSCU#CalledAETitles
dcm4chee.web:service=TCStoreScu#CallingAETitle
dcm4chee.web:service=TCStoreScu#CalledAETitles
dcm4chee.web:service=Web3MwlSCU#CallingAETitle
dcm4chee.web:service=Web3MwlSCU#WorklistProviders
dcm4chee.web:service=Web3MwlSCU#DefaultWorklistProvider
" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getEchoServiceName" setMethod="setEchoServiceName">
<description>Used internally. Do not modify.
</description>
<name>EchoServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="INFO">
<description>Get list of AE Configurations</description>
<name>listAEs</name>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description>Get AE Configuration</description>
<name>getAE</name>
<parameter>
<description>AE Title</description>
<name>title</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.AEDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Get AE Configuration</description>
<name>getAE</name>
<parameter>
<description>AE Title</description>
<name>title</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Hostname or ip</description>
<name>host</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.AEDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Get AE Configuration</description>
<name>getAE</name>
<parameter>
<description>AE Title</description>
<name>title</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>InetAddress</description>
<name>addr</name>
<type>java.net.InetAddress</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.AEDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Update AE configuration</description>
<name>updateAE</name>
<parameter>
<description>Primary key of AE (use -1 for new AE)</description>
<name>pk</name>
<type>long</type>
</parameter>
<parameter>
<description>AE Title</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Hostname or ip</description>
<name>host</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Port number</description>
<name>port</name>
<type>int</type>
</parameter>
<parameter>
<description>Cipher (seperated with ',')</description>
<name>cipher</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default Issuer of Patient ID associated with this AE</description>
<name>issuerOfPatientID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default Issuer of Accession Number associated with this AE</description>
<name>issuerOfAccessionNumber</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default User ID associated with this AE</description>
<name>user</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Password of Default User ID associated with this AE</description>
<name>password</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File System Group ID associated with this AE</description>
<name>fsGroupID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Group to which this AE belongs</description>
<name>group</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Free text description of this AE</description>
<name>description</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>WADO URL for this AE</description>
<name>wadoUrl</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Station Name of this AE</description>
<name>stationName</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Name of the institution that this AE is associated with</description>
<name>institution</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Name of the department that this AE is associated with</description>
<name>department</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Signifies that this device is active on the network.</description>
<name>installed</name>
<type>boolean</type>
</parameter>
<parameter>
<description>Enable/disable check if host can be resolved to an IP address</description>
<name>checkHost</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Add AE configuration</description>
<name>addAE</name>
<parameter>
<description>AE Title</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Hostname or ip</description>
<name>host</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Port number</description>
<name>port</name>
<type>int</type>
</parameter>
<parameter>
<description>Cipher (seperated with ',')</description>
<name>cipher</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default Issuer of Patient ID associated with this AE</description>
<name>issuerOfPatientID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default Issuer of Accession Number associated with this AE</description>
<name>issuerOfAccessionNumber</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Default User ID associated with this AE</description>
<name>user</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Password of Default User ID associated with this AE</description>
<name>password</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File System Group ID associated with this AE</description>
<name>fsGroupID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Group to which this AE belongs</description>
<name>group</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Free text description of this AE</description>
<name>description</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>WADO URL for this AE</description>
<name>wadoUrl</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Station Name of this AE</description>
<name>stationName</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Name of the institution that this AE is associated with</description>
<name>institution</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Name of the department that this AE is associated with</description>
<name>department</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Signifies that this device is active on the network.</description>
<name>installed</name>
<type>boolean</type>
</parameter>
<parameter>
<description>Enable/disable check if host can be resolved to an IP address</description>
<name>checkHost</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Remove AE Configuration</description>
<name>removeAE</name>
<parameter>
<description>AET</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update specified AE Title to new value in AE
Configuration and in all service attributes listed by attribute
<b>OtherServiceAETitleAttributesToUpdate</b>. If the specified AE Title
is associated with file systems, also the Retrieve AE Title of these
file systems is updated to the new value as the Retrieve AE Titles
associated with Instances, Series and Studies that have files on this
file systems.]]>
</description>
<name>updateAETitle</name>
<parameter>
<description>AE Title to update.</description>
<name>prevAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>new AE Title.</description>
<name>newAET</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Sends an AetChanged notification]]>
</description>
<name>notifyAETchange</name>
<parameter>
<description>The old AE Title.</description>
<name>oldTitle</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>The new AE Title.</description>
<name>newTitle</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>An optional message.</description>
<name>message</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Clear AE Cache</description>
<name>clearCache</name>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Attributes Modification SCP Service. Updates
Study/Series/Instance attributes of stored DICOM Composite Objects on
receive of Attribute Modification Notifications.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.modify.AttributesModificationScpService</class>
<constructor>
<description>The default constructor</description>
<name>AttributesModificationScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \ (backslash).
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateOriginalAttributesSeq"
setMethod="setUpdateOriginalAttributesSeq">
<description><![CDATA[Controls, if original values of attributes which
were replaced on processing of received Attribute Modification
Notifications shall be documented in items of the <i>Original
Attributes Sequence (0400,0561)</i> on instance level.]]>
</description>
<name>UpdateOriginalAttributesSeq</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getEntityNotFoundErrorCodeAsString"
setMethod="setEntityNotFoundErrorCodeAsString">
<description><![CDATA[Defines Error Code returned if there is no entity
stored in the archive to which the received Attributes Modification Notification
applies. 0 => return Success Status in that case. See also attribute
<i>NoRetryErrorCode</i> of the <i>Attributes Modification SCU Service</i>.]]>
</description>
<name>EntityNotFoundErrorCode</name>
<type>java.lang.String</type>
<descriptors>
<value value="B006H"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCreatePatientOnMoveStudy"
setMethod="setCreatePatientOnMoveStudy">
<description><![CDATA[Enable creation of patient if patient of received 'moveStudyToPatient' request
doesn't exist or the identifier are not unique on this system.<br />
In regular workflows the patient should already exists with unique identifier]]>
</description>
<name>CreatePatientOnMoveStudy</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in the 'moveStudyToPatient' request
shall be considered for the selection of the target Patient.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
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.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-matches</i> 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.
<p><b>Warning:</b> Improper configuration may cause assignment of moved studies to wrong patient.<br/>
<p>Default: <code>pid,issuer?[familyname,givenname,middlename?,birthdate]</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?[familyname,givenname,middlename?,birthdate]" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Attributes Modification SCU Service. Forwards Attributes
Modification Notifications received by the Attributes Modification SCP
Service according specified Forwarding Rules.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.modify.AttributesModificationScuService</class>
<constructor>
<description>The default constructor</description>
<name>AttributesModificationScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getForwardingRules" setMethod="setForwardingRules">
<description><![CDATA[List of forwarding rules, dependent upon from which
application - identified by the Calling AE title - the Attributes
Modification Notification was received by the Attributes Modification SCP.
The comma separated list of AE titles after the (optional) condition defines
the forwarding destinations (= other Attributes Modification SCPs) by their
Called AE Titles.
<br><br>Syntax:
<br> rules = ( rule { newline rule } | 'NONE' ) (* 'NONE' = no forwarding *)
<br> rule = ['[' 'calling' ['!'] '=' from ']'] to
<br> from = aet { '|' aet } (* calling AE titles *)
<br> to = aet { ',' aet } (* destination AE titles *)
<br><br>Example: [calling!=CENTRAL]CENTRAL
<br>=> Forwards received Attributes Modification Notifications to CENTRAL,
except Attributes Modification Notifications received from CENTRAL]]>
</description>
<name>ForwardingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AE Title used in the Association Request.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent forwarded Attributes Modification Notifications.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority used in Attributes Modification Notifications C-STORE RQs.
Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description><![CDATA[Number and intervals of retries for failed
Attributes Modification Notifications.
<br>Format:
<br>Comma separated list of <i&gt;number</i>x<i>interval</i> pairs.
<br>The interval can be specified in seconds (##s), minutes (##m), hours (##h) or days (##d).
<br>Example:
<br>5x1m,10x10m means retry a total of 5 times, one minute apart for each retry;
then retry a total of 10 times, 10 minutes apart for each retry.]]></description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getNoRetryErrorCodeAsString"
setMethod="setNoRetryErrorCodeAsString">
<description><![CDATA[Defines particular Error Code in C-STORE RSP, which
shall <b>not</b> cause retry of the failed Attributes Modification Notifications.
Typically used to avoid retries of Attributes Modification Notifications failed
because the target entity does not exists at the forward destination. S. also
attribute <i>EntityNotFoundErrorCode</i> of the <i>Attributes Modification SCP
Service</i>.]]>
</description>
<name>NoRetryErrorCode</name>
<type>java.lang.String</type>
<descriptors>
<value value="B006H"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAttributesModificationScpServiceName"
setMethod="setAttributesModificationScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>AttributesModificationScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Audit Logger. Identifies Audit Source in emitted Audit
Log Messages formatted according the new RFC-3881 based schema of the
IHE ITI Audit Trail and Node Authentication Profile.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chee.audit.logger.AuditLogger</class>
<constructor>
<description>The default constructor</description>
<name>AuditLogger</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write" getMethod="getAuditSourceID"
setMethod="setAuditSourceID">
<description><![CDATA[Identifier of this application as source where
the event originated.<br/>
Format: Unique identifier text string, at least within the Audit
Enterprise Site ID<br/>
Default: host name]]></description>
<name>AuditSourceID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getAuditEnterpriseSiteID"
setMethod="setAuditEnterpriseSiteID">
<description><![CDATA[Logical source location within the healthcare
enterprise network, e.g., a hospital or other provider location within a
multi-entity provider group.<br/>
Format: Unique identifier text string within the healthcare
enterprise. May be unvalued (='-') when the audit-generating application
is uniquely identified by Audit Source ID.<br/>
Default: <code>-</code>]]></description>
<name>AuditEnterpriseSiteID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getAuditSourceTypeCodes"
setMethod="setAuditSourceTypeCodes">
<description><![CDATA[Code specifying the type of source where event originated.<br/>
Format/Values:<ul>
<li><code>1</code> - End-user interface</li>
<li><code>2</code> - Data acquisition device or instrument</li>
<li><code>3</code> - Web server process tier in a multi-tier system</li>
<li><code>4</code> - Application server process tier in a multi-tier system</li>
<li><code>5</code> - Database server process tier in a multi-tier system</li>
<li><code>6</code> - Security server, e.g., a domain controller</li>
<li><code>7</code> - ISO level 1-3 network component</li>
<li><code>8</code> - ISO level 4-6 operating software</li>
<li><code>9</code> - External source, other or unknown type</li>
</ul>
Multiple values separated by comma (',') can be specified.<br/>
Default: <code>4</code>]]></description>
<name>AuditSourceTypeCodes</name>
<type>java.lang.String</type>
<descriptors>
<value value="4"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getProcessID">
<description><![CDATA[Used to identify this application instance as
<i>Active Participant</i> in emitted Audit Messages. Initialized from
<i>System Property</i> <code>app.pid</code> or alternatively extracted
from <code>java.lang.management.RuntimeMXBean#getName()</code>.
]]></description>
<name>ProcessID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getProcessName"
setMethod="setProcessName">
<description><![CDATA[Used to identify this application as
<i>Active Participant</i> in emitted Audit Messages.<br/>
Format: Text string<br/>
Default: <i>System Property</i> <code>app.name</code>]]></description>
<name>ProcessName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getLocalAETitles"
setMethod="setLocalAETitles">
<description><![CDATA[List of AE titles supported by this application,
separated by \(backslash).<br/>
Default: <code>ABPACS</code>]]></description>
<name>LocalAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isEnableDNSLookups"
setMethod="setEnableDNSLookups">
<description><![CDATA[Enables reverse DNS lookups to identify remote hosts
by their host name - instead of their IP address - in emitted Audit Messages.<br/>
Default: <code>false</code>]]></description>
<name>EnableDNSLookups</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIncludeXMLDeclaration"
setMethod="setIncludeXMLDeclaration">
<description><![CDATA[Determines, if emitted Audit Messages starts with
<code><?xml version="1.0" encoding="UTF-8"?></code> or if the XML
declaration is skipped.<br/>
Default: <code>false</code>]]></description>
<name>IncludeXMLDeclaration</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isTimezonedDateTime"
setMethod="setTimezonedDateTime">
<description><![CDATA[Determines, if the Event Date/Time in emitted Audit
Messages includes the time-zone offset to Coordinated Universal Time (UTC).<br/>
Default: <code>true</code>]]></description>
<name>TimezonedDateTime</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUtcDateTime"
setMethod="setUtcDateTime">
<description><![CDATA[Determines, if the Event Date/Time in the emitted
Audit Messages is given as Coordinated Universal Time (UTC).<br/>
Default: <code>false</code>]]></description>
<name>UtcDateTime</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isQualifyHostname"
setMethod="setQualifyHostname">
<description><![CDATA[Determines, if host names included in the emitted
Audit Messages shall be fully qualified.<br/>
Default: <code>false</code>]]></description>
<name>QualifyHostname</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isEncodeUserIsRequestorTrue"
setMethod="setEncodeUserIsRequestorTrue">
<description><![CDATA[Determines, if attribute UserIsRequestor="true" of
element <ActiveParticipant> in the emitted Audit Messages is explicit
encoded.<br/>
Default: <code>false</code>]]></description>
<name>EncodeUserIsRequestorTrue</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isAllowMultipleRequestors"
setMethod="setAllowMultipleRequestors">
<description><![CDATA[Determines, if multiple requestors are allowed in a single Audit Message.<br/>
In RFC 3881 only one initiator/requestor is allowed!<br/>
Default: <code>false</code>]]></description>
<name>AllowMultipleRequestors</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConfigurationDirectory"
setMethod="setConfigurationDirectory">
<description><![CDATA[Directory which contains configuration files
<i>xxx</i><code>-xmbean.xml</code>, which list service attributes, for
which changes are audited by Security Alert messages. A relative path name
is resolved relative to <i>archive-install-directory</i>/server/default/.<br/>
Default: <code>conf/dcm4chee-auditlog</code>]]></description>
<name>ConfigurationDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-auditlog"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="isIHEYr4">
<description><![CDATA[Used to distinguish this RFC 3881 compliant Audit Logger
Service from the preceding Audit Logger Service, which creates Audit Messages
according the Provisional XML Schema definition of the IHE Basic Security
Integration Profile.]]></description>
<name>IHEYr4</name>
<type>boolean</type>
</attribute>
<!-- Operations -->
<operation>
<description><![CDATA[Emits Application Start Audit Message.]]></description>
<name>auditApplicationStart</name>
</operation>
<operation>
<description><![CDATA[Emits Application Stop Audit Message.]]></description>
<name>auditApplicationStop</name>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>JMX Config Backup Service</b><br/>
Provides a Service to save and load JMX MBean Configurations.<br/>
It use the XMLAttributePersistenceManager to store the attributes in xml files.
To separate the files from normal JMX Persistance we use the Version feature.
Therefore all files for a saved configuration are placed in a directory:
&lt;VersionPrefix&gt;&lt;configName&gt;
]]> </description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.ConfigBackupService</class>
<constructor>
<description>The default constructor</description>
<name>ConfigBackupService</name>
</constructor>
<attribute access="read-write" getMethod="getAttributesToStore" setMethod="setAttributesToStore">
<description><![CDATA[ List of services and their attributes to store as configuration.<p/>
Format: &lt;MBean&gt;:&lt;attributeList&gt;<br/>
MBean: Either the full ObjectName or the service name when <code>serviceDomainPrefix</code> can be applied.<br/>
attributeList: attribute names separated by ',', or '*' for all attributes of the MBean.
]]> </description>
<name>AttributesToStore</name>
<type>java.lang.String</type>
<descriptors>
<value value="
FileSystemMgt,group=NEARLINE_STORAGE:*
FileSystemMgt,group=ONLINE_STORAGE:*
AE:*
AttributesModificationScp:*
AttributesModificationScu:*
AuditLogger:*
CompressionService:*
ConsistencyService:*
ContentEditService:*
DcmServer:*
DeleteStudy:*
DeviceService:*
DicomSecurity:*
ECHOService:*
ExportManager:*
FileCopy:*
FileCopyByQuery:*
FileCopyHSMModule,type=Command:*
FileCopyHSMModule,type=DiceyFileBased:*
FileCopyHSMModule,type=FileBased:*
FileCopyHSMModule,type=Mapped:*
FileMove:*
FindScu:*
FixPatientAttributesService:*
Forward:*
Forward2:*
ForwardByQuery:*
GPWLFeed:*
GPWLFeed2:*
GPWLScp:*
GPWLScu:*
HL7Cmd:*
HL7Send:*
HL7Server:*
HL7Service,type=ADT:*
HL7Service,type=MDM:*
HL7Service,type=ORM:*
HL7Service,type=ORU:*
HPScp:*
HSMMigrate:*
IANScp:*
IANScu:*
JMS:*
KeyObjectService:*
MCMScu:*
MD5CheckService:*
MPPS2ORM:*
MPPSEmulator:*
MPPSScp:*
MPPSScu:*
MWLFindScp:*
MWLReplica:*
MWLScu:*
MoveScu:*
MoveScu_Prefetch:*
OnSwitchStorageFileSystem:*
PIXQuery:*
PPSExceptionMgtService:*
PPSScu:*
Prefetch:*
QueryRetrieveScp:*
RIDService:*
RejectionNoteStored:*
RouteOnPPS:*
Scheduler:*
Sendmail:*
Soundex:*
StgCmtScuBySeriesStored:*
StgCmtScuScp:*
StoreScp:*
StudyMgtScp:*
StudyMgtScu:*
StudyPermission:*
StudyReconciliation:*
StudyStatus:*
SyncFileStatus:*
TLSConfig:*
TarRetriever:*
Templates:*
UPSFeed:*
UPSScp:*
UpdateAttributesService:*
WADOPrefetch:*
WADOService:*
XDS-I:*
dfcmd:*
dcm4chee.web:service=AttributesModificationSCU:*
dcm4chee.web:service=ContentEditService:*
dcm4chee.web:service=DashboardService:*
dcm4chee.web:service=EchoService:*
dcm4chee.web:service=HL7SendV2:*
dcm4chee.web:service=IANSCU:*
dcm4chee.web:service=MoveScu:*
dcm4chee.web:service=RejectionNoteSCU:*
dcm4chee.web:service=StoreBridge:*
dcm4chee.web:service=TCStoreScu:*
dcm4chee.web:service=TlsConfig:*
dcm4chee.web:service=Web3MwlSCU:*
dcm4chee.web:service=WebConfig:*
"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getVersionPrefix" setMethod="setVersionPrefix">
<description><![CDATA[ Version prefix to build version for Persistance manager.<br/>
The version used to store a configuration:&lt;VersionPrefix&gt;&lt;configName&gt;
]]> </description>
<name>VersionPrefix</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS_"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getServiceDomainPrefix" setMethod="setServiceDomainPrefix">
<description><![CDATA[ Default ServiceDomainPrefix for the AttributesToStore List.<br/>
With this prefix you can use the service name (e.g. StoreScp) in
the AttributesToStore list instead of the full qualified ObjectName String
(e.g. dcm4chee.archive:service=StoreScp)
]]> </description>
<name>ServiceDomainPrefix</name>
<type>java.lang.String</type>
<descriptors>
<value value="dcm4chee.archive:service="/>
</descriptors>
</attribute>
<!-- Operations -->
<operation impact="ACTION">
<description><![CDATA[ Save current JMX configuration with given name.
]]> </description>
<name>save</name>
<parameter>
<description>Configuration Name</description>
<name>configName</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[ Load a JMX configuration for given name.
]]> </description>
<name>load</name>
<parameter>
<description>Configuration Name</description>
<name>configName</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,348 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[
Compression Service. The Compression Service supports delayed, lossless
compression of received images. This is an alternative to immediately
compressing images when received. (The lossless compression rules are
configured by the <b>CompressionRules</b> attribute in the StorageSCP
service.) The value of the attributes <b>MaxConcurrentCodec</b>,
<b>MaxBufferedImagePoolSize</b> and <b>MaxBufferedImagePoolMemoryattribute</b>
of the Compression Service also effects the on-the-fly compression and
decompression during the receive and retrieve of images by the StorageSCP and
QueryRetrieveSCP services. (For details, see the these attributes below.)
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.CompressionService</class>
<constructor>
<description>The default constructor</description>
<name>CompressionService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getMaxConcurrentCodec"
setMethod="setMaxConcurrentCodec">
<description><![CDATA[
Maximum number of concurrent tasks for compressing and decompressing images.
With the default value of <b>MaxConcurrentCodec</b> = 1, all compression and
decompression operations are serialized. For example, if on-the-fly compression
during an image receive is activated, and three modalities concurrently send
uncompressed images to the archive, only one image received from one modality
is compressed at the same time. This significantly reduces the receiving
performance. The used codec allocates memory for uncompressed pixel data of at
least one frame, so without limiting the maximum number of concurrent
compression tasks, memory consumption could become unacceptable.
You will receive an out of memory error if the memory consumption exceeds the
configured -Xmx value in the $ABPACS_HOME/bin/run.conf file).
]]></description>
<name>MaxConcurrentCodec</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxConcurrentCompression"
setMethod="setMaxConcurrentCompression">
<description><![CDATA[
Maximum number of concurrent tasks for compressing images. With the default value of
<b>MaxConcurrentCompression</b> = 1, all compression operations are serialized.
]]></description>
<name>MaxConcurrentCompression</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxConcurrentDecompression"
setMethod="setMaxConcurrentDecompression">
<description><![CDATA[
Maximum number of concurrent tasks for decompressing images. With the default value of
<b>MaxConcurrentDecompression</b> = 1, all decompression operations are serialized.
]]></description>
<name>MaxConcurrentDecompression</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileSystemGroupIDs"
setMethod="setFileSystemGroupIDs">
<description><![CDATA[Group IDs of writable file systems which are scanned
for image files to compress in configured <b>TaskInterval</b>. Separate
multiple values by comma (',').
]]>
</description>
<name>FileSystemGroupIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxBufferedImagePoolSize"
setMethod="setMaxBufferedImagePoolSize">
<description><![CDATA[
Maximum number of pooled BufferedImage objects. If
<b>MaxBufferedImagePoolSize</b> > 0, BufferedImage objects allocated for
compression and decompression operations are pooled so they can be reused by
subsequent compression and decompression operations with matching pixel matrix
dimensions. The pool size is additional limited by
<b>MaxBufferedImagePoolMemory</b>, the maximum amount of memory allocated by
pooled BufferedImage objects.
]]></description>
<name>MaxBufferedImagePoolSize</name>
<type>int</type>
<descriptors>
<value value="10" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCurrentBufferedImagePoolSize">
<description> Current number of pooled BufferedImage objects.
</description>
<name>CurrentBufferedImagePoolSize</name>
<type>int</type>
</attribute>
<attribute access="read-write" getMethod="getMaxBufferedImagePoolMemory"
setMethod="setMaxBufferedImagePoolMemory">
<description><![CDATA[
Maximum amount of memory allocated by pooled BufferedImage objects.
1MB = 1000000 bytes. If <b>MaxBufferedImagePoolSize</b> > 0, BufferedImage
objects allocated for compression and decompression operations are pooled so
they can be reused by subsequent compression and decompression operations with
matching pixel matrix dimensions. The pool size is additional limited by
<b>MaxBufferedImagePoolSize</b>, the maximum number of pooled BufferedImage
objects.
]]></description>
<name>MaxBufferedImagePoolMemory</name>
<type>java.lang.String</type>
<descriptors>
<value value="1MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCurrentBufferedImagePoolMemory">
<description> Current amount of memory allocated by pooled
BufferedImage objects. 1MB = 1000000 bytes. </description>
<name>CurrentBufferedImagePoolMemory</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getBufferedImagePoolHitRate">
<description> Ratio of the number of BufferedImage objects reused
from the pool to the total number of used (= reused or new
allocated) BufferedImage objects. </description>
<name>BufferedImagePoolHitRate</name>
<type>float</type>
</attribute>
<attribute access="read-write" getMethod="getTaskInterval"
setMethod="setTaskInterval">
<description><![CDATA[Interval in which the database is checked for image
files located on writeable file systems with one of the configured
<b>FileSystemGroupIDs</b> to compress.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##s (in seconds), ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no compression should be performed
<br><i>to</i> = end hour (0-23) when no compression should be performed
<br>NEVER = disable automatic compression
<br>Example:10s!9-17 means every 10 seconds, poll the database and check
for images to compress, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can ensure compression of
images happens outside of peak imaging hours.]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if compression task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getLimitNumberOfFilesPerTask"
setMethod="setLimitNumberOfFilesPerTask">
<description>Maximum number of files that are compressed in
one task.</description>
<name>LimitNumberOfFilesPerTask</name>
<type>int</type>
<descriptors>
<value value="1000" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCompressionRules"
setMethod="setCompressionRules">
<description><![CDATA[Specifies compression rules and delay for individual
SOP Classes.
<br>Format:
<br><i>sop-class-name-or-uid</i>:<i>compression</i>:<i>delay</i>
<br><i>sop-class-name-or-uid</i> = the UID of the SOP class, or a string
name defined in the dictionary.xml file under uids type="SOPClass"
<br><i>compression</i> = JPLL|JLSL|J2KR
<br>JPLL -JPEG lossless
<br>JLSL - JPEG-LS lossless
<br>J2KR - JPEG 2000 lossless
<br><i>delay</i> = ##d (in days)
<br>Example:
<br>ComputedRadiographyImageStorage:JLSL:5d means compress Computed
Radiography Images with JPEG-LS lossless compression after 5 days.
]]>
</description>
<name>CompressionRules</name>
<type>java.lang.String</type>
<descriptors>
<value
value="
ComputedRadiographyImageStorage:JLSL:5d
DigitalXRayImageStorageForPresentation:JLSL:5d
DigitalXRayImageStorageForProcessing:JLSL:5d
DigitalMammographyXRayImageStorageForPresentation:JLSL:5d
DigitalMammographyXRayImageStorageForProcessing:JLSL:5d
CTImageStorage:JLSL:5d
MRImageStorage:JLSL:5d
UltrasoundImageStorage:JLSL:5d
UltrasoundMultiframeImageStorage:JLSL:5d
UltrasoundImageStorageRetired:JLSL:5d
UltrasoundMultiframeImageStorageRetired:JLSL:5d
SecondaryCaptureImageStorage:JLSL:5d
XRayAngiographicImageStorage:JLSL:5d
XRayRadiofluoroscopicImageStorage:JLSL:5d
NuclearMedicineImageStorage:JLSL:5d
" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isVerifyCompression"
setMethod="setVerifyCompression">
<description>Enables the verification of the compressed file.
</description>
<name>VerifyCompression</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTempDir"
setMethod="setTempDir">
<description><![CDATA[Directory used to spool decompressed files for
compression verification. Relative path names are resolved relative to
$ABPACS_HOME/server/default/.]]>
</description>
<name>TempDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tmp" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getKeepTempFileIfVerificationFails"
setMethod="setKeepTempFileIfVerificationFails">
<description><![CDATA[Defines how long files that were decompressed for
verification remain for further analysis before being deleted, if the
decompressed pixel data differs from the pixel data in the original file.
<br>Format: <br>##m (in minutes), ##h (in hours), ##d (in days)]]>
</description>
<name>KeepTempFileIfVerificationFails</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCleanupTempFilesInterval"
setMethod="setCleanupTempFilesInterval">
<description><![CDATA[Interval in which temporary files (older than
KeepTempFileIfVerificationFails) are deleted from TempDirectory.]]>
</description>
<name>TempFileCleanupInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="3d" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of write byte buffer. </description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getTimerIDCheckFilesToCompress"
setMethod="setTimerIDCheckFilesToCompress">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDCheckFilesToCompress</name>
<type>java.lang.String</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>
<![CDATA[Reset <b>BufferedImagePoolHitRate</b>.]]>
</description>
<name>resetBufferedImagePoolHitRate</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Check for temporary image files to delete.</description>
<name>checkForTempFilesToDelete</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Check for files to compress.</description>
<name>checkForFilesToCompress</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Compress specified object if it is uncompressed
and if there is a Compression Rule for its SOP Class UID
configured</description>
<name>compress</name>
<parameter>
<name>fileDTO</name>
<type>org.dcm4chex.archive.ejb.interfaces.FileDTO</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Consistency Check Service. Sets up a schedule to automatically check the consistency of compressed images. You can set image compression rules in the Compression Service. You can also use the commands below to manually check the consistency of images.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.ConsistenceCheckService</class>
<constructor>
<description>The default constructor</description>
<name>ConsistenceCheckService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getAvailabilityOfExternalRetrieveable"
setMethod="setAvailabilityOfExternalRetrieveable">
<description><![CDATA[Defines Instance Availability of studies which
becomes only external retrievable after deletion from file systems
accessable by this archive instance. Enumerated values: "ONLINE",
"NEARLINE", "OFFLINE", "UNAVAILABLE"]]>
</description>
<name>AvailabilityOfExternalRetrieveable</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEARLINE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTaskInterval" setMethod="setTaskInterval">
<description>Interval in which to check for images for consistency.
&lt;br&gt;Format:
&lt;br&gt;&lt;i&gt;interval&lt;/i&gt;!&lt;i&gt;from&lt;/i&gt;-&lt;i&gt;to&lt;/i&gt; or NEVER
&lt;br&gt;&lt;i&gt;interval&lt;/i&gt; = ##s (in seconds), ##m (in minutes), ##h (in hours).
&lt;br&gt;&lt;i&gt;from&lt;/i&gt; = start hour (0-23) when no consistency check should be performed &lt;br&gt;&lt;i&gt;to&lt;/i&gt; = end hour (0-23) when no consistency check should be performed
&lt;br&gt;NEVER = disable automatic consistency checking &lt;br&gt;Example:10s!9-17 means every 10 seconds, poll the database and check image consistency, except between the hours of 9:00am and 5:00pm. By setting this type of TaskInterval, you can ensure checks occur outside of peak imaging hours. </description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinStudyAge" setMethod="setMinStudyAge">
<description>Minimum age of a study that will be checked for consistency, in
##w (in weeks), ##d (in days), or ##h (in hours).</description>
<name>MinStudyAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxStudyAge" setMethod="setMaxStudyAge">
<description>Maximum age of a study that will be checked for consistency, in
##w (in weeks), ##d (in days), or ##h (in hours).</description>
<name>MaxStudyAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="4w"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxCheckedBefore" setMethod="setMaxCheckedBefore">
<description>Maximum amount of time from the last consistency check, in
##w (in weeks), ##d (in days), or ##h (in hours).</description>
<name>MaxCheckedBefore</name>
<type>java.lang.String</type>
<descriptors>
<value value="1w"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLimitNumberOfStudiesPerTask" setMethod="setLimitNumberOfStudiesPerTask">
<description>Maximum number of studies that are checked in one task.
</description>
<name>LimitNumberOfStudiesPerTask</name>
<type>int</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckStudyConsistency"
setMethod="setTimerIDCheckStudyConsistency">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckStudyConsistency</name>
<type>java.lang.String</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Check consistency of studies.</description>
<name>check</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,620 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>Content Edit Service</b>. Identifies where patient
information and study information updates are sent and received. Also used by
the <b>Rejection Note Stored Service</b> to move instances referenced in
received Rejection Notes to the trash.
<p>
Use the values in <tt>ReceivingApplication</tt> and <tt>ReceivingFacility</tt>
attributes or the <tt>SendingApplication</tt> or <tt>SendingFacility</tt>
attributes to configure specific forwarding rules in the <b>HL7Send Service</b>
for patient information updates received from this Content Edit Service.
</p><p>
Use the values in the <tt>CalledAETitle</tt> and the <tt>CallingAETitle</tt>
attributes to configure specific forwarding rules in the <b>StudyMgtScu
Service</b> for study information updates received from this Content Edit Service.
</p><p>
The Content Edit Service sends <tt>PatientUpdated</tt> and
<tt>SeriesUpdated</tt> <i>JMX Notifications</i> to allow to forward instances
to systems not supporting either StudyMgtScu or HL7 ADT patient updates. In
this case the receiver must use the received instances for updating! Use the
<b>ForwardService</b> to configure this forward option.
</p><p>
If <tt>CreateIANonMoveToTrash=true</tt>, <i>Application Entities</i> configured
in the <b>IAN SCU Service</b> are notified by <i>Instance Availability
Notifications</i> with <i>Instance Availability</i> = <tt>UNAVAILABLE</tt>
about instances moved to trash.
</p>]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.ContentEditService</class>
<constructor>
<description>The default constructor</description>
<name>ContentEditService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write" getMethod="getReceivingApplication" setMethod="setReceivingApplication">
<description>Identifies the Receiving Application in HL7 messages that are directed to
the HL7SendService to notify other applications about patient information
updates. The values in the ReceivingApplication attribute may be used to configure specific
forwarding rules in the HL7SendService for HL7 messages that are received from this
Content Edit Service.
</description>
<name>ReceivingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getReceivingFacility" setMethod="setReceivingFacility">
<description>Identifies the Receiving Facility in HL7 messages that are directed to
the HL7SendService to notify other applications about patient information
updates.
The values in the ReceivingFacility attribute may be used to configure specific
forwarding rules in the HL7SendService for HL7 messages that are received from this
Content Edit Service.</description>
<name>ReceivingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSendingApplication" setMethod="setSendingApplication">
<description>Identifies the Sending Application in HL7 messages that are directed to
the HL7SendService to notify other applications about patient information
updates.
The values in the SendingApplication attribute may be used to configure specific
forwarding rules in the HL7SendService for HL7 messages that are received from this
Content Edit Service.</description>
<name>SendingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSendingFacility" setMethod="setSendingFacility">
<description>Identifies the Sending Facility in HL7 messages that are directed to
HL7SendService to notify other applications about patient information
updates.
The values in the SendingFacility attribute may be used to configure specific
forwarding rules in the HL7SendService for HL7 messages that are received from this
Content Edit Service.</description>
<name>SendingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description>Called AE title in DICOM messages that are directed to the StudyMgtScuService
to notify other applications about study information updates.
The CalledAETitle may be used to configure
specific forwarding rules in StudyMgtScu Service for DICOM messages
received from this Content Edit Service.
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AET in DICOM message directed to StudyMgtScuService
to notify other Applications about Study Information Updates.
The CallingAETitle may be used to configure
specific forwarding rules in StudyMgtScu Service for DICOM messages
received from this Content Edit Service.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isCreateIANonMoveToTrash"
setMethod="setCreateIANonMoveToTrash">
<description><![CDATA[Defines if <i>Application Entities</i> configured
in the <b>IAN SCU Service</b> are notified by <i>Instance Availability
Notifications</i> with <i>Instance Availability</i> = <tt>UNAVAILABLE</tt>
about instances moved to trash. Must be activated for compliance with
<i>IHE Mammography Acquistion Workflow (MAWF) Integration Profile</i>.]]>
</description>
<name>CreateIANonMoveToTrash</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isKeepPriorPatientAfterMerge"
setMethod="setKeepPriorPatientAfterMerge">
<description><![CDATA[Keep prior patient after Patient Merge.<br/>
This will allow to get correct patient information even the received DICOM objects contains a patient id of an merged patient.<br />
If disabled, the prior patient will be deleted.
]]></description>
<name>KeepPriorPatientAfterMerge</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAuditEnabled"
setMethod="setAuditEnabled">
<description>Enable or disable emission of audit messages on
create/merge/move/update/delete of Patient/Study/Series/Instance entities.
</description>
<name>auditEnabled</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogIUIDsForStudyUpdate"
setMethod="setLogIUIDsForStudyUpdate">
<description><![CDATA[Enable or disable logging of SOP Instance UIDs in audit logs of
move/update/delete events on Study level.<br/>
If this is enabled the SOPClass element in ParticipantObjectDescription will contain all effected SOP IUIDs.
]]></description>
<name>LogIUIDsForStudyUpdate</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogIUIDsForSeriesUpdate"
setMethod="setLogIUIDsForSeriesUpdate">
<description><![CDATA[Enable or disable logging of SOP Instance UIDs in audit logs of
move/update/delete events on Series level.<br/>
If this is enabled the SOPClass element in ParticipantObjectDescription will contain all effected SOP IUIDs.
]]></description>
<name>LogIUIDsForSeriesUpdate</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogDeletedOnMoveEntities"
setMethod="setLogDeletedOnMoveEntities">
<description><![CDATA[Enable or disable logging of Delete events for 'Move Studies/Series/Instances' <br/>
If enabled a 'Move xxx' will create a DELETE and a CREATE Instances Accessed audit log.<br/>
If disabled only a single UPDATE log will be created (without info of the source of the moved entities).
]]></description>
<name>LogDeletedOnMoveEntities</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHL7SendServiceName"
setMethod="setHL7SendServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>HL7SendServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStudyMgtScuServiceName"
setMethod="setStudyMgtScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StudyMgtScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<!-- create -->
<operation impact="ACTION">
<description>create new patient.
</description>
<name>createPatient</name>
<parameter>
<description>Dataset with patient info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>create new study.
</description>
<name>createStudy</name>
<parameter>
<description>Dataset with study info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Primary key of patient for the new study.</description>
<name>pk</name>
<type>java.lang.Long</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>create new series.
</description>
<name>createSeries</name>
<parameter>
<description>Dataset with series info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Primary key of study for the new series.</description>
<name>pk</name>
<type>java.lang.Long</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<!-- merge patient -->
<operation impact="ACTION">
<description>merge patient.
</description>
<name>mergePatients</name>
<parameter>
<description>Primary key of resulting patient</description>
<name>pk</name>
<type>java.lang.Long</type>
</parameter>
<parameter>
<description>Array of pks of patient to merge.</description>
<name>pks</name>
<type>[J</type>
</parameter>
<return-type>java.util.Map</return-type>
</operation>
<!-- update -->
<operation impact="ACTION">
<description>update patient.
</description>
<name>updatePatient</name>
<parameter>
<description>Dataset with patient info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>update study.
</description>
<name>updateStudy</name>
<parameter>
<description>Dataset with study info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>update series.
</description>
<name>updateSeries</name>
<parameter>
<description>Dataset with series info</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- move to trash -->
<operation impact="ACTION">
<description>Move patient to trash.
</description>
<name>movePatientToTrash</name>
<parameter>
<description>Primary key of patient.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move patient to trash.
</description>
<name>movePatientToTrash</name>
<parameter>
<description>Patient attributes.</description>
<name>patAttrs</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Patient Matching</description>
<name>patMatching</name>
<type>org.dcm4chex.archive.common.PatientMatching</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move study to trash.
</description>
<name>moveStudyToTrash</name>
<parameter>
<description>Primary key of study.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move study to trash.
</description>
<name>moveStudyToTrash</name>
<parameter>
<description>Study Instance UID.</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move series to trash.
</description>
<name>moveSeriesToTrash</name>
<parameter>
<description>Primary key of series.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move series to trash.
</description>
<name>moveSeriesToTrash</name>
<parameter>
<description>Series Instance UIDs</description>
<name>iuids</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>Move instance to trash.
</description>
<name>moveInstanceToTrash</name>
<parameter>
<description>Primary key of instance.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Move instances to trash.
</description>
<name>moveInstancesToTrash</name>
<parameter>
<description>SOP Instance UIDs</description>
<name>iuids</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<!-- undelete (recover from trash) -->
<operation impact="ACTION">
<description>Undelete patient.
</description>
<name>undeletePatient</name>
<parameter>
<description>Primary key of patient (PrivatePatient).</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Undelete study.
</description>
<name>undeleteStudy</name>
<parameter>
<description>Primary key of study (PrivateStudy).</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Undelete series.
</description>
<name>undeleteSeries</name>
<parameter>
<description>Primary key of series (PrivateSeries).</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Undelete instance.
</description>
<name>undeleteInstance</name>
<parameter>
<description>Primary key of instance.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<!-- delete (from trash) -->
<operation impact="ACTION">
<description>delete patient.
</description>
<name>deletePatient</name>
<parameter>
<description>Primary key of patient to delete.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>delete study.
</description>
<name>deleteStudy</name>
<parameter>
<description>Primary key of study to delete.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>delete series.
</description>
<name>deleteSeries</name>
<parameter>
<description>Primary key of series to delete.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>delete instance.
</description>
<name>deleteInstance</name>
<parameter>
<description>Primary key of instance to delete.</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Delete all entries from trash.
</description>
<name>emptyTrash</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Purge study. (Files will be removed from FilesystemMgt service see
</description>
<name>purgeStudy</name>
<parameter>
<description>Study Instance UID.</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- move -->
<operation impact="ACTION">
<description>move study.
</description>
<name>moveStudies</name>
<parameter>
<description>Array of pks of studies to move.</description>
<name>pks</name>
<type>[J</type>
</parameter>
<parameter>
<description>Primary key of target patient</description>
<name>ds</name>
<type>java.lang.Long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>move series.
</description>
<name>moveSeries</name>
<parameter>
<description>Array of pks of steries to move.</description>
<name>pks</name>
<type>[J</type>
</parameter>
<parameter>
<description>Primary key of target study</description>
<name>ds</name>
<type>java.lang.Long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>move instances.
</description>
<name>moveInstances</name>
<parameter>
<description>Array of pks of instances to move.</description>
<name>pks</name>
<type>[J</type>
</parameter>
<parameter>
<description>Primary key of target series</description>
<name>ds</name>
<type>java.lang.Long</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- MPPS MWL link -->
<operation impact="ACTION">
<description>Link MPPS to MWL entries (LOCAL Modality Worklist).</description>
<name>linkMppsToMwl</name>
<parameter>
<description>List of Scheduled Procedure Step IDs</description>
<name>spsIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>List of MPPS SOP Instance UIDs</description>
<name>mppsIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.Map</return-type>
</operation>
<operation impact="ACTION">
<description>Link MPPS to MWL entries of external Modality worklist.</description>
<name>linkMppsToMwl</name>
<parameter>
<description>List of Scheduled Procedure Step Attributes</description>
<name>spsAttrs</name>
<type>[Lorg.dcm4che.data.Dataset;</type>
</parameter>
<parameter>
<description>List of MPPS SOP Instance UIDs</description>
<name>mppsIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.Map</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[DICOM Security Service. Performs JAAS login with
user information provided in the Association Request or AE configuration
for the calling AE and make returned information about user roles
(<code>javax.security.auth.Subject</code>) available for invoked DICOM
services by association property <code>"user"</code>.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.DicomSecurityService</class>
<constructor>
<description>The default constructor</description>
<name>DicomSecurityService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getSecurityDomain"
setMethod="setSecurityDomain">
<description><![CDATA[
Name of security domain specified in <code>conf/login-config.xml</code>,
which defines authentication parameters and roles associated to user names.]]>
</description>
<name>SecurityDomain</name>
<type>java.lang.String</type>
<descriptors>
<value value="dcm4chee-dicom" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isRejectIfNoUserIdentity"
setMethod="setRejectIfNoUserIdentity">
<description><![CDATA[
Defines if Association Request w/o User Identity information from
remote AEs with no default User Identity specified by the AE
configuration shall be rejected!]]>
</description>
<name>RejectIfNoUserIdentity</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefaultUserID"
setMethod="setDefaultUserID">
<description><![CDATA[
Default user name associated with an Assocation, if no User
Identity information is provided neither in the Assocation
Request nor in the AE configuration for the Calling AE. Only
effective if <i>RejectIfNoUserIdentity</i> is <code>false</code>.
Use '-' (hypen) for specifying no default User ID. Then no
<code>javax.security.auth.Subject</code> will be associated
with the association in that case.
]]>
</description>
<name>DefaultUserID</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefaultPassword"
setMethod="setDefaultPassword">
<description><![CDATA[
Password for user specified in <i>DefaultUserID</i>. Only
effective if <i>DefaultUserID</i> is not '-' and
<i>RejectIfNoUserIdentity</i> is <code>false</code>.
Use '-' (hypen) for no password.
]]>
</description>
<name>DefaultPassword</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="INFO">
<description>get UserIdentityNegotiator</description>
<name>userIdentityNegotiator</name>
<return-type>
org.dcm4che.net.UserIdentityNegotiator
</return-type>
</operation>
<operation impact="INFO">
<description>Validate password for user and populate subject</description>
<name>isValid</name>
<parameter>
<name>userID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>password</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>subject</name>
<type>javax.security.auth.Subject</type>
</parameter>
<return-type>boolean</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Server. Sends incoming service requests to registered DICOM services. When configuring, select the TCP listening port, the security protocol for communication, timeouts, and the maximum number of connected DICOM clients (SCUs).</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.dcm.DcmServerService</class>
<constructor>
<description>The default constructor</description>
<name>DcmServerService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getPort"
setMethod="setPort">
<!-- Network -->
<description>Port that listens for TCP communication.
</description>
<name>TCPPort</name>
<type>int</type>
<descriptors>
<value value="11112" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLocalAddress"
setMethod="setLocalAddress">
<description>Local interface IP address to listen for TCP communication. 0.0.0.0 indicates all active interfaces.
</description>
<name>LocalAddress</name>
<type>java.lang.String</type>
<descriptors>
<value value="0.0.0.0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getProtocolName"
setMethod="setProtocolName">
<!-- Security -->
<description><![CDATA[Enable Transport Security Layer (TLS) mode:
<br>
<b>dicom</b>&#8212;<br>
<b>dicom-tls</b>&#8212;accept TLS connections; offer AES or DES encryption<br>
<b>dicom-tls.aes</b>&#8212;accept TLS connections; force AES or DES encryption<br>
<b>dicom-tls.3des</b>&#8212;accept TLS connections; force DES encryption<br>
<b>dicom-tls.nodes</b>&#8212;accept TLS connections without encryption]]>
</description>
<name>SecurityProtocol</name>
<type>java.lang.String</type>
<descriptors>
<value value="dicom" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSSLHandshakeSoTimeout"
setMethod="setSSLHandshakeSoTimeout">
<description>Sets the socket timeout during the SSL handshake in milliseconds. 0 = no timeout.
</description>
<name>SSLHandshakeSocketTimeout</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDimseTimeout"
setMethod="setDimseTimeout">
<description>DIMSE message timeout in milliseconds. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="1200000" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRqTimeout"
setMethod="setRqTimeout">
<description>Sets the DICOM A-Associate request timeout in milliseconds. 0 = no timeout.
</description>
<name>RequestTimeout</name>
<type>int</type>
<descriptors>
<value value="5000" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after a Dicom A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>Maximum Protocol Data Unit (PDU) package length for receiving PDUs.
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isPackPDVs"
setMethod="setPackPDVs">
<description>Pack command and data PDVs in one PDU.
</description>
<name>PackPDVs</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxClients"
setMethod="setMaxClients">
<description>Maximum number of DICOM clients that can simultaneously connect.
</description>
<name>MaximumDICOMClients</name>
<type>int</type>
<descriptors>
<value value="128" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getNumClients">
<description>Current number of connected DICOM clients.
</description>
<name>CurrentClients</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getMaxIdleThreads"
setMethod="setMaxIdleThreads">
<description>Maximum number of idle threads.
</description>
<name>MaximumIdleThreads</name>
<type>int</type>
<descriptors>
<value value="5" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getNumIdleThreads">
<description>Current number of idle threads.
</description>
<name>CurrentIdleThreads</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getDicomSecurityServiceName"
setMethod="setDicomSecurityServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>DicomSecurityServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Get DICOM Handler</description>
<name>dcmHandler</name>
<return-type>org.dcm4che.server.DcmHandler</return-type>
</operation>
<operation impact="INFO">
<description>Send CallingAET changed notification</description>
<name>notifyCallingAETchange</name>
<parameter>
<description>List of affected CalledAETs</description>
<name>calledAETs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>List of new CallingAETs</description>
<name>newCallingAETs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="INFO">
<description>get UserIdentityNegotiator</description>
<name>userIdentityNegotiator</name>
<return-type>
org.dcm4che.net.UserIdentityNegotiator
</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Delete Study Service. Perform scheduled deletion of
Studies.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.DeleteStudyService</class>
<constructor>
<description>The default constructor</description>
<name>DeleteStudyService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write" getMethod="isDeleteSeriesBySeries"
setMethod="setDeleteSeriesBySeries">
<description><![CDATA[Enables deletion of Studies Series by Series
to avoid failures of deletion of large studies caused by Transaction
timeout. May cause partially deleted Studies, because successfully deletion
of one Series cannot be reversed, when deletion of another Series of the
Study failed. But the deletion of such remaining Series will be also
retried according the configured <i>RetryIntervalsForJmsOrder</i>.]]>
</description>
<name>DeleteSeriesBySeries</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDeleteStudyFromDB"
setMethod="setDeleteStudyFromDB">
<description><![CDATA[Enables deletion of Studies also from the database,
if none of its instances is longer stored on any file system managed
by this archive instance. <b>Attention:</b> will also remove only
external retrieveable studies and studies archived to media from the
database, so its data is no longer accessable by the DICOM Query Service
and DICOM Retrieve requests can no longer be forwarded to the external
Retrieve Application Entity.]]>
</description>
<name>DeleteStudyFromDB</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDeletePatientWithoutObjects"
setMethod="setDeletePatientWithoutObjects">
<description><![CDATA[Enables deletion of patients without Studies, MWL,
MPPS, GPWL or GPPPS entries. Only effective with activated
<i>DeleteStudiesFromDB</i>.]]>
</description>
<name>DeletePatientWithoutObjects</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isCreateIANonStudyDelete"
setMethod="setCreateIANonStudyDelete">
<description><![CDATA[Defines if an Instance Availability Notification
shall be created for deleted studies to notify remote Application
Entities configured in the IAN Service about changes of the Instance
Availability and Retrieve AETs.]]>
</description>
<name>CreateIANonStudyDelete</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalsForJmsOrder"
setMethod="setRetryIntervalsForJmsOrder">
<description><![CDATA[Number and interval of retries made for failed JMS
order, e.g., deleteStudy.
<br>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs.
<br>The interval can be specified in seconds (##s), minutes (##m),
hours (##h) or days (##d).
<br>Example:
<br>5x1m,10x10m means retry a total of 5 times, one minute apart for
each retry; then retry a total of 10 times, 10 minutes apart for each
retry.]]>
</description>
<name>RetryIntervalsForJmsOrder</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyQueueName"
setMethod="setDeleteStudyQueueName">
<description>Used internally. Do NOT modify.</description>
<name>DeleteStudyQueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Schedule Delete Study Order.</description>
<name>scheduleDeleteOrder</name>
<parameter>
<name>order</name>
<type>org.dcm4chex.archive.common.DeleteStudyOrder</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
<notification>
<description>The notification sent for each deleted study, used by
the IAN SCU Service to notify configured remote Application Entities
about changes of the Instance Availability and Retrieve AETs.
</description>
<name>javax.management.Notification</name>
<notification-type>org.dcm4chex.archive.notif.StudyDeleted</notification-type>
</notification>
</mbean>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Device Service. Use the commands in this service to import device mapping files, delete device mappings, delete a specific device, get a list of all devices for a specific protocol, and add the scheduled station name AE title, the name, and the modality to the given SPS items.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.DeviceService</class>
<constructor>
<description>The default constructor</description>
<name>DeviceService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Import a device mapping file.</description>
<name>importDeviceMapping</name>
<parameter>
<name>importURL</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Delete all device mappings. &lt;b&gt;Note:&lt;/b&gt; This deletes all devices and the corresponding protocol codes.</description>
<name>deleteMapping</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Deletes the named device.</description>
<name>deleteDevice</name>
<parameter>
<description>Station name of the device</description>
<name>device</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Get a list of devices for the specified protocol.</description>
<name>getDeviceList</name>
<parameter>
<name>protocol</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description>Add the scheduled station AE Title and the name and the modality to the given SPS items.</description>
<name>addScheduledStationInfo</name>
<parameter>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[df Command Service. Defines command used on *nix
operation systems to assess free available disk space on storage file
system(s). Has no effect on Windows operation systems.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.DFCommandService</class>
<constructor>
<description>The default constructor</description>
<name>DFCommandService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write" getMethod="getDFCommand"
setMethod="setDFCommand">
<description><![CDATA[<tt>df</tt> command used on *nix operation
systems to assess free available disk space on storage file system(s).
You may change the default value to use a different version than the
first in the system PATH.<br/>
<p><b>Example:</b> <tt>/usr/xpg4/bin/df</tt><br/>
<p><b>Default:</b> <tt>df</tt>
]]>
</description>
<name>DFCommand</name>
<type>java.lang.String</type>
<descriptors>
<value value="df" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDFCommandOption"
setMethod="setDFCommandOption">
<description><![CDATA[<tt>df</tt> command option used on *nix operation
systems to assess free available disk space on storage file system(s).<br/>
If you change the default value for POSIX compliant output, a wrong
value for the free available disk space may be derived from the command
output.<br/>
=> Always verify, if <i>freeDiskSpace()</i> of file system service(s)
(still) returns the correct value, after any modification of
<i>DFCommandOption</i> or <i>DFCommand</i>.<br/>
Example: <tt>-k</tt><br/>
Default Value: <tt>-P</tt>]]>
</description>
<name>DFCommandOption</name>
<type>java.lang.String</type>
<descriptors>
<value value="-P" />
</descriptors>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Get free space for given path.
</description>
<name>freeSpace</name>
<parameter>
<description>Path String</description>
<name>path</name>
<type>java.lang.String</type>
</parameter>
<return-type>long</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Echo Service. Use this service to test the AE configurations (host and port and protocol) you defined with the AE Configuration Service. First, you must set the CallingAETitle used in echo associations used to test those AE configurations.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.EchoService</class>
<constructor>
<description>The default constructor</description>
<name>EchoService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AE title that is used in echo associations.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<!-- Operations -->
<operation impact="ACTION">
<description>Send a single echo request to the specified AE title.</description>
<name>echo</name>
<parameter>
<description>AE title to test</description>
<name>aeTitle</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Send an echo request to the specified AE title, for the specified number of times.</description>
<name>echo</name>
<parameter>
<description>AE title to test</description>
<name>aeTitle</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>number of times to repeat the request</description>
<name>nrOfTests</name>
<type>java.lang.Integer</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Send an echo request to an AE configuration, for the specified number of times.</description>
<name>echo</name>
<parameter>
<description>AE configuration to test. The AE configuration consists of a host, port, and protocol (dicom or dicom-tls with various TLS Ciphersuites combinations).</description>
<name>AEData</name>
<type>org.dcm4chex.archive.ejb.interfaces.AEDTO</type>
</parameter>
<parameter>
<description>number of times to repeat the request</description>
<name>nrOfTests</name>
<type>java.lang.Integer</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Send an echo request to all configured AE titles.</description>
<name>echoAll</name>
<return-type>[Ljava.lang.String;</return-type>
</operation>
<operation impact="ACTION">
<description>Checks if an echo request with the specified AE configuration works correctly.&lt;br&gt;
This method is quiet (no error messages or exceptions) but
return textual timing information or failure as result!
</description>
<name>echo</name>
<parameter>
<description>AE title</description>
<name>title</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Hostname or IP address</description>
<name>hostname</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Port number</description>
<name>port</name>
<type>int</type>
</parameter>
<parameter>
<description>Cipher Suites separated by ','. Use RFC-2246 string representation (e.g. 'SSL_RSA_WITH_3DES_EDE_CBC_SHA')</description>
<name>cipherSuites</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Number of echoes to test.(All in one Association)</description>
<name>nrOfTests</name>
<type>int</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Checks if an echo request with the specified AE configuration works correctly.&lt;br&gt;
This method is quiet (no error messages or exceptions)!
</description>
<name>checkEcho</name>
<parameter>
<description>AE title</description>
<name>title</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Hostname or IP address</description>
<name>hostname</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Port number</description>
<name>port</name>
<type>int</type>
</parameter>
<parameter>
<description>Cipher Suites separated by ','. Use RFC-2246 string representation (e.g. 'SSL_RSA_WITH_3DES_EDE_CBC_SHA')</description>
<name>cipherSuites</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Checks if an echo request to the specified AE title works correctly.&lt;br&gt;
This method is quiet (no error messages or exceptions)!
</description>
<name>checkEcho</name>
<parameter>
<description>AE title to test</description>
<name>AEData</name>
<type>org.dcm4chex.archive.ejb.interfaces.AEDTO</type>
</parameter>
<return-type>boolean</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,344 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description><![CDATA[Teaching File and Clinical Trial Export Manager.]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.tce.ExportManagerService</class>
<constructor>
<description>The default constructor</description>
<name>ExportManagerService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write"
getMethod="getCallingAET"
setMethod="setCallingAET">
<description>Calling AE title of the Storage SCU.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatchJpegLSImplCUID"
setMethod="setPatchJpegLSImplCUID">
<description><![CDATA[Patch faulty DICOM JPEG-LS images compressed by
JAI-IMAGEIO JPEG-LS encoder with matching Implementation SOP Class UID on
export by inserting a LSE marker segment with encoder parameter values T1,
T2 and T3 actually used by JAI-IMAGEIO JPEG-LS encoder.
<br/>NONE = Disable patching of DICOM JPEG-LS images
<br/>ANY = Patch DICOM JPEG-LS images with any Implementation SOP Class UID]]>
</description>
<name>PatchJpegLSwithImplementationClassUID</name>
<type>java.lang.String</type>
<descriptors>
<value value="1.2.40.0.13.1.1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getExportSelectorTitles"
setMethod="setExportSelectorTitles">
<description><![CDATA[Document Title of Export Selection Key Object
(Manifest) considered by this service.
Format: CODE_VALUE^CODING_SCHEME_DESIGNATOR.
Separate multiple values by new line. NONE = service disabled.
<dl><dt>Default:</dt>
<dd>TCE001^IHERADTF^For Teaching File Export</dd>
<dd>TCE002^IHERADTF^For Clinical Trial Export</dd>
<dd>TCE007^IHERADTF^For Research Collection Export</dd>
<dd>113019^99DCM4CHE^For Media Export</dd>
</dl>]]>
</description>
<name>ExportSelectorTitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="
TCE001^IHERADTF^For Teaching File Export;
TCE002^IHERADTF^For Clinical Trial Export;
TCE007^IHERADTF^For Research Collection Export;
113019^99DCM4CHE^For Media Export"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDelayReasons"
setMethod="setDelayReasons">
<description><![CDATA[Recognized Delay Reasons Codes
Format: CODE_VALUE^CODING_SCHEME_DESIGNATOR.
Separate multiple values by new line. NONE = ignore Delay Reason Codes in
Export Selection Key Object.
<dl><dt>Default:</dt>
<dd>TCE011^IHERADTF^Delay export until final report is available</dd>
<dd>TCE012^IHERADTF^Delay export until clinical information is available</dd>
<dd>TCE013^IHERADTF^Delay export until confirmation of diagnosis is available</dd>
<dd>TCE014^IHERADTF^Delay export until histopathology is available</dd>
<dd>TCE015^IHERADTF^Delay export until other laboratory results is available</dd>
<dd>TCE016^IHERADTF^Delay export until patient is discharged</dd>
<dd>TCE017^IHERADTF^Delay export until patient dies</dd>
<dd>TCE018^IHERADTF^Delay export until expert review is available</dd>
</dl>]]>
</description>
<name>DelayReasons</name>
<type>java.lang.String</type>
<descriptors>
<value value="
TCE011^IHERADTF^Delay export until final report is available;
TCE012^IHERADTF^Delay export until clinical information is available;
TCE013^IHERADTF^Delay export until confirmation of diagnosis is available;
TCE014^IHERADTF^Delay export until histopathology is available;
TCE015^IHERADTF^Delay export until other laboratory results is available;
TCE016^IHERADTF^Delay export until patient is discharged;
TCE017^IHERADTF^Delay export until patient dies;
TCE018^IHERADTF^Delay export until expert review is available"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDispositionConfigFile"
setMethod="setDispositionConfigFile">
<description><![CDATA[Configuration file, which maps
different Document Titles or Key Object Descriptions of the manifest
to different configurations about destination and de-identification.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>DispositionConfigFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-tce.conf"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAutoExportConfigDir"
setMethod="setAutoExportConfigDir">
<description><![CDATA[Directory where configuration files defining
auto-export rules are located: if XSL stylesheet "export.xsl" exists in
this directory or in a sub-directory equal to the AE Title of the
Performing Station AE Title in received MPPS COMPLETED messages,
objects referenced in the MPPS message will be exported according the
export rules in the stylesheet.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>AutoExportConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPersonNameMapping"
setMethod="setPersonNameMapping">
<description><![CDATA[Mapping login user name to Person Name to get Observer Person.<br>
Separate each mapping with newline or semicolon.<br>
Format: <user>:<PersonName> (e.g. Smith^John or Smith^John^^Dr^)<br>
If this mapping is disabled with NONE or a user is not mapped the PersonName will be created with following rule:<br>
<callingAET>^<user> (e.g. ABPACS^admin).]]>
</description>
<name>PersonNameMapping</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFilesetIDPattern"
setMethod="setFilesetIDPattern">
<description><![CDATA[Specifies format of Fileset ID of exported Media.
0 or # will be replaced by incremented value of <i>LastFilesetIDSeqno</i>.]]>
</description>
<name>FilesetIDPattern</name>
<type>java.lang.String</type>
<descriptors>
<value value="DISK_000" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLastFilesetIDSeqno"
setMethod="setLastFilesetIDSeqno">
<description><![CDATA[Used with <i>FilesetIDPattern</i> to generate the
Fileset ID for created Media. Will automatically incremented for each
exported Fileset on Media.]]>
</description>
<name>FilesetIDSeqno</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMediaIDPrefix"
setMethod="setMediaIDPrefix">
<description><![CDATA[Specifies prefix to Fileset ID for assembling a
Media ID for usage in the emitted Export Audit Message.]]>
</description>
<name>MediaURIPrefix</name>
<type>java.lang.String</type>
<descriptors>
<value value="cdr:" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteKeyObjects"
setMethod="setDeleteKeyObjects">
<description>Enable/disable deletion of Key Objects after export.
</description>
<name>DeleteKeyObjectsAfterExport</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxKOSage"
setMethod="setMaxKOSage">
<description>Maximum age of Key Object (ContentDate/ContentTime) to schedule export.
</description>
<name>MaxKeyObjectAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getExportDelay"
setMethod="setExportDelay">
<description>Delay in milliseconds before export process starts.
</description>
<name>ExportDelay</name>
<type>int</type>
<descriptors>
<value value="2000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of byte buffer used for copying data from file to TCP channel.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of concurrent processed Export Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getQueryRetrieveScpServiceName"
setMethod="setQueryRetrieveScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>QueryRetrieveScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getIANScuServiceName"
setMethod="setIANScuServiceName">
<description>Used internally. Do not modify.
</description>
<name>IANScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Clear configuration cache.<br>
Force to reread disposition configuration files. ]]></description>
<name>clearConfigCache</name>
<return-type>void</return-type>
</operation>
<operation impact="INFO">
<description>List Dispositions configured in DispositionConfigFile</description>
<name>listConfiguredDispositions</name>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="INFO">
<description>Get Observer Person Name for username</description>
<name>getObserverPerson</name>
<parameter>
<name>user</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Send Export Selector to specified destination</description>
<name>storeExportSelection</name>
<parameter>
<name>manifest</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<name>prior</name>
<type>int</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>File Copy Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.FileCopyService</class>
<constructor>
<description>The default constructor</description>
<name>FileCopyService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getDestination"
setMethod="setDestination">
<description><![CDATA[Destination file system or NONE to disable the
service. The file system name can be prefixed by a condition
'[calling'['!']'='<i>aeTitle</i>['|'..]']' to limit/exclude copying
to/of series received from modalities with specified AE title(s).
If the file system name is a tar URI (tar:<Directory/Mount Point>),
instances of one series are packed into one tarball. Otherwise
instance files are copied individually to the destination file system.
If an external command is used for the copy of tarballs to the destination,
the destination name (after the "tar:" prefix) need not follow the syntax
of a directory path (e.g.: tar:ftp://user@pass/service).
<p><b>Attention:</b> The file system must have already been configured
by invoking operation <code>File System Management
Service#addRWFileSystem()</code>. Otherwise the copy task will
fail! If you configured a tar URI as destination file system, the name
of the configured file system has to match that URI, and not only the
<Directory/Mount Point> part! <p />
The filesystem status and/or availability may be also changed to fulfil
configured deleter criteria. <br />
(see also <code>updateFileSystemStatus and updateFileSystemAvailability in
File System Managment Service</code>)
]]>
</description>
<name>DestinationFileSystem</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHSMModulServicename"
setMethod="setHSMModulServicename">
<description><![CDATA[HSM Module to store tarballs to HSM systems.<br/>
Use NONE to store files on local filesystem without additional HSM support.<br/>
Only effective if destination is a tar filesystem!<br/>
]]></description>
<name>HSMModulServicename</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getAvailableHSMModules">
<description>Available HSM modules.</description>
<name>AvailableHSMModules</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only"
getMethod="isReady">
<description><![CDATA[Status if FileCopy Service is ready to process FileCopy orders.<br/>
If the destination is a tar filesystem and a HSMModule is configured, this module must be also registered!<br/>
If this status is false the processing of Filecopy orders will be delayed according NotReadyDelay to wait for
deployment/registration of the configured HSMModule.
]]></description>
<name>isReady</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="isSeriesStoredDisabled"
setMethod="setSeriesStoredDisabled">
<description>Disable Series Stored Notification</description>
<name>SeriesStoredDisabled</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileStatus"
setMethod="setFileStatus">
<description>Status of copied file. Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED
</description>
<name>FileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isVerifyCopy" setMethod="setVerifyCopy">
<description>Verify MD5 sum of copied file.
</description>
<name>VerifyCopy</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description><![CDATA[Number and interval of retries made for
failed Copy Requests.
<br>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs.
<br>The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
<br>Example:
<br>5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.]]>
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNotReadyDelay"
setMethod="setNotReadyDelay">
<description><![CDATA[Delay to reschedule FileCopy orders when the FileCopy Service is not ready.
<br>The delay can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).]]>
</description>
<name>NotReadyDelay</name>
<type>java.lang.String</type>
<descriptors>
<value value="1m" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of concurrent invoked Copy Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of write byte buffer.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getQueryRetrieveScpServiceName"
setMethod="setQueryRetrieveScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>QueryRetrieveScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Copy files of given study</description>
<name>copyFilesOfStudy</name>
<parameter>
<description>Study Instance UID</description>
<name>studyIUID</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Copy files of given series</description>
<name>copyFilesOfSeries</name>
<parameter>
<description>Series Instance UID</description>
<name>seriesIUID</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Filecopy Order for given IAN Dataset</description>
<name>scheduleByIAN</name>
<parameter>
<description>IAN Dataset</description>
<name>ianDataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description><![CDATA[Schedule delivery time as long.<br />
Note: -1 means default behaviour (after business hours configured in destination: &lt;destination&gt;!&lt;from&gt;-&lt;to&gt;).
]]></description>
<name>scheduleTime</name>
<type>long</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Query based FileCopy Service.<br />
Provides automatic trigger of FileCopy service
that fulfills criteria defined by an SQL Query.
<p>The SQL statement must be defined with following rules:</p>
1) Series.pk must be the first column of the select statement.<br />
2) The where clause should contain a Series.updated_time. ]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.FileCopyByQueryService</class>
<constructor>
<description>The default constructor</description>
<name>FileCopyByQueryService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getPollInterval" setMethod="setPollInterval">
<description><![CDATA[Interval for polling for series to trigger FileCopy.
The interval can be specified in seconds (##s) or minutes (##m).
NEVER = disable this FileCopyByQuery service.]]>
</description>
<name>PollInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQuery"
setMethod="setQuery">
<description><![CDATA[SQL statement to filter series for FileCopy.<p />
Default Query to find series that are stored (series_status=0) and has no copy in NEARLINE filesystem (pk=2):<br />
SELECT DISTINCT series.pk FROM series, instance, files
WHERE series.series_status = 0 AND series.pk = instance.series_fk AND instance.pk = files.instance_fk
AND series.updated_time < ?
AND NOT EXISTS (SELECT pk FROM files WHERE files.instance_fk=instance.pk AND files.filesystem_fk=2) <br />
<b>Note:</b> The first column in the SELECT statement must be: series.pk!<br />
If limit > 0 the SQL statement is extended with: <br />
1) a database specific LIMIT <br />
2) a 'series.pk > ?' as first criteria in WHERE clause (if sql hasn't already a 'pk > ?')<br />
3) an 'ORDER BY series.pk' (if sql hasn't already a 'ORDER BY')]]>
</description>
<name>Query</name>
<type>java.lang.String</type>
<descriptors>
<value value="SELECT DISTINCT series.pk FROM series, instance, files
WHERE series.series_status = 0 AND series.pk = instance.series_fk AND instance.pk = files.instance_fk
AND series.updated_time &lt; ?
AND NOT EXISTS (SELECT pk FROM files WHERE files.instance_fk=instance.pk AND files.filesystem_fk=2)"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getLastQueryCheckResult">
<description><![CDATA[Result of last check of Query statement.<br />
If there is an error no automatic forward will be perfromed until the Query is corrected. <br /> ]]>
</description>
<name>LastQueryCheckResult</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDelay" setMethod="setDelay">
<description><![CDATA[Delay in seconds (##s), minutes (##m) or hours (##h) for which a series must be unchanged before forward is triggered.
Use NONE to disable parameter setting of Prepared Statement! (This would be necessary if your SQL statement doesn't contain a '?')]]>
</description>
<name>Delay</name>
<type>java.lang.String</type>
<descriptors>
<value value="1h"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLimit"
setMethod="setLimit">
<description><![CDATA[Limit number of series for forwarding in one step. <br />
This will add database specfic limit statements to the Query!
Set this to 0 if the query already contains a limitation.]]>
</description>
<name>Limit</name>
<type>int</type>
<descriptors>
<value value="2000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size. (-1 means: use Limit)
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if a FileCopy task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-only"
getMethod="getLastSeriesPk">
<description>Last used Series.pk. Used as additional query parameter (SERIES.pk > lastPk) if a Limit > 0 is specified!
</description>
<name>LastSeriesPk</name>
<type>long</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDFilecopyByQuery"
setMethod="setTimerIDFilecopyByQuery">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDFilecopyByQuery</name>
<type>java.lang.String</type>
<descriptors>
<value value="TimerIDFilecopyByQuery"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFilecopyServiceName"
setMethod="setFilecopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FilecopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Check for series and schedule FileCopy requests for these.<br />
Return number of FileCopyOrders that are scheduled.]]>
</description>
<name>checkFilecopy</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Show actual SQL statement as it will be used to find series.]]>
</description>
<name>showSQL</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,488 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[ File Move Service
Move files from one file system group (RW) to another RW file system group if usable disk space
of <i>SourceFileSystemGroup</i> falls below <i>MoveThresholds</i> and configured.
accessed studies.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hsm.FileMoveService</class>
<constructor>
<description>The default constructor</description>
<name>FileMoveService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getSrcFsGroup" setMethod="setSrcFsGroup">
<description><![CDATA[Source file system group ID or NONE to disable this service.]]>
</description>
<name>SourceFileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDestFsGroup" setMethod="setDestFsGroup">
<description><![CDATA[Destination file system group ID.<br/>
One filesystem of the configured group must be RW (selected via selectStorageFileSystem)<br/>
Use &lt;file system path&gt;@&lt;file system group&gt; to specify a concrete file system of a FS group.
In this case the file system can be also RO.]]>
</description>
<name>DestinationFileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getMinFreeDiskSpace" >
<description><![CDATA[Minimum free disk space on source filesystem group. Used to calculate usable disk space of the file system group.
1MB = 1000000 bytes, 1GB = 1000MB. Configured in corresponding FilesystemGroup service]]>
</description>
<name>MinimumFreeDiskSpaceOnSource</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpace">
<description><![CDATA[Usable free disk space on source file
system group, considering the configured value for <i>MinimumFreeDiskSpace</i>, in bytes.]]>
</description>
<name>UsableDiskSpaceOnSource</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceString">
<description><![CDATA[Usable free disk space on source file
systems group, considering the configured value for <i>MinimumFreeDiskSpace</i>, as string.]]>
</description>
<name>UsableDiskSpaceOnSourceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceStringOnDest">
<description><![CDATA[Usable free disk space on destination file systems group.]]>
</description>
<name>UsableDiskSpaceOnDestinationString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDeleterThresholds"
setMethod="setDeleterThresholds">
<description><![CDATA[Defines 'disc free' thresholds dependent on hour of day, for
moving the most infrequently accessed studies which satisfy the
configured set of constraints.
<p>Format: HOUR:##MB or HOUR:##GB or HOUR:##h, multiple thresholds with
different (start) hour separated by ';'. NONE = disable move of
studies on file systems of the configured source file system group.
<p>E.g.: 7:1h;19:24h => free space for expected data volume received in
24 hours between 7pm and 7am. Between 7am and 7pm only move studies if
the usable free space falls below the expected data volume received in
one hour.]]>
</description>
<name>MoveThresholdsOnSource</name>
<type>java.lang.String</type>
<descriptors>
<value value="7:1h;19:24h" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getExpectedDataVolumePerDay" >
<description><![CDATA[Expected data volume per day on source file system group. Used to transform
time based move thresholds (s. MoveThresholds) into disk space size
to free.]]>
</description>
<name>ExpectedDataVolumePerDayOnSource</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getExpectedDataVolumePerDayBytes">
<description><![CDATA[Get expected data volume per day on source filesystem group
in bytes, returned as a long.]]>
</description>
<name>ExpectedDataVolumePerDayBytesOnSource</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getCurrentDeleterThreshold">
<description><![CDATA[Get current effective move threshold in bytes
according configured <i>MoveThreshold</i> and
<i>ExpectedDataVolumePerDay</i>. If <i>UsableDiskSpaceOnSource</i> falls below
this value, most infrequently accessed studies which satisfy the
configured set of constraints will be moved on next invocation of
operation <i>scheduleStudiesForMove</i>.]]>
</description>
<name>CurrentMoveThresholdOnSource</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyIfNotAccessedFor"
setMethod="setDeleteStudyIfNotAccessedFor">
<description><![CDATA[Defines when a study not accessed for the specified
time can be moved from file systems of configured source file system group
to a file system of destination file system group, if it satisfies the configured set of constraints.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks) | NEVER
<br>NEVER = move of studies is only triggered by running out of disk
space.
<br>Example:
<br>52w = any studies that have not been accessed for 52 weeks or more
can be moved if they satisfies the configured set of constraints.]]>
</description>
<name>MoveStudyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyOnlyIfNotAccessedFor"
setMethod="setDeleteStudyOnlyIfNotAccessedFor">
<description><![CDATA[Defines minimal time a study must not be accessed
before it becomes a candidate for move.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks)]]>
</description>
<name>MoveStudyOnlyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfStorageNotCommited"
setMethod="setDeleteStudyOnlyIfStorageNotCommited">
<description><![CDATA[Defines if no Storage Commitment request must have
been accepted for any instances of a study to become a candidate for
move triggered by running out of disk space or being not accessed
longer than configured <i>MoveStudiesNotAccessedFor</i>. Typically only
activated if no other constraint for study move is configured.]]>
</description>
<name>MoveStudyOnlyIfStorageNotCommited</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyExternalRetrievable"
setMethod="setDeleteStudyOnlyIfCopyExternalRetrievable">
<description><![CDATA[Defines if all instances of a study must be
retrievable from an external Application Entity to become a candidate
for move triggered by running out of disk space or being not accessed
longer than configured <i>MoveStudiesNotAccessedFor</i>.]]>
</description>
<name>MoveStudyOnlyIfExternalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getInstanceAvailabilityOfExternalRetrievable"
setMethod="setInstanceAvailabilityOfExternalRetrievable">
<description><![CDATA[Defines assumed Instance Availability of only
external retrievable Studies. Enumerated values: ONLINE, NEARLINE, AUTO.
AUTO - query Instance Availability from external Retrieve AE.]]>
</description>
<name>InstanceAvailabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
<descriptors>
<value value="AUTO" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnMedia"
setMethod="setDeleteStudyOnlyIfCopyOnMedia">
<description><![CDATA[Defines if all instances of a study must be
stored on Media to become a candidate for move triggered by running out of
disk space or being not accessed longer than configured
<i>MoveStudiesNotAccessedFor</i>.]]>
</description>
<name>MoveStudyOnlyIfCopyOnMedia</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup"
setMethod="setDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup">
<description><![CDATA[Defines if all instances of a study must be
stored on a file system of the specified different file system group to
become a candidate for move triggered by running out of disk space or
being not accessed longer than configured <i>MoveStudiesNotAccessedFor</i>.
"NONE" = no such constraint.]]>
</description>
<name>MoveStudyOnlyIfCopyOnFileSystemOfFileSystemGroup</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEARLINE_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyArchived"
setMethod="setDeleteStudyOnlyIfCopyArchived">
<description><![CDATA[Defines if all instances of a study must be stored
on a file system of a different file system group with file status:
ARCHIVED to become a candidate for move triggered by running out of disk
space or being not accessed longer than configured
<i>MoveStudiesNotAccessedFor</i>. Typically the file system group of
the file system holding the archived copy is specified by
<i>MoveStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>MoveStudyOnlyIfCopyArchived</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnReadOnlyFileSystem"
setMethod="setDeleteStudyOnlyIfCopyOnReadOnlyFileSystem">
<description><![CDATA[Defines if all instances of a study must be stored
on a read-only file system of a different file system group to become a
candidate for move triggered by running out of disk space or being not
accessed longer than configured <i>MoveStudiesNotAccessedFor</i>.
Typically the file system group of the read-only file systems is
specified by <i>MoveStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>MoveStudyOnlyIfCopyOnReadOnlyFileSystem</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionInterval"
setMethod="setScheduleStudiesForDeletionInterval">
<description><![CDATA[Interval in which operation
<i>scheduleStudiesForMove</i> is invoked to schedule move of most
infrequently accessed studies which satisfies the configured set of
constraints from file systems of the source file system group,
if they were not accessed longer than configured
<i>MoveStudiesNotAccessedFor</i> or if <i>UsableDiskSpaceOnSource</i>
falls below <i>CurrentMoveThreshold</i>.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>scheduleStudiesForMove</i>
by timer thread automatically. ]]>
</description>
<name>ScheduleStudiesForMoveInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningScheduleStudiesForDeletion">
<description>Current state if ScheduleStudiesForMove task is running. Used to avoid concurrency!
</description>
<name>isRunningScheduleStudiesForMove</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionBatchSize"
setMethod="setScheduleStudiesForDeletionBatchSize">
<description><![CDATA[Defines maximal number of studies scheduled for
move in one transaction.]]>
</description>
<name>ScheduleStudiesForMoveBatchSize</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description><![CDATA[Number and interval of retries made for
failed Move Requests.
<br>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs.
<br>The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
<br>Example:
<br>5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.]]>
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isKeepSrcFiles" setMethod="setKeepSrcFiles">
<description>Keep source file (copy instead of move).
</description>
<name>KeepSrcFiles</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isVerifyCopy" setMethod="setVerifyCopy">
<description>Verify MD5 sum of copied file.
</description>
<name>VerifyCopy</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isKeepMovedFilesOnError" setMethod="setKeepMovedFilesOnError">
<description>Keep successfully moved files if one or more files failed. (not supported on tar file systems!).
If disabled the whole Move order is rolled back if one file failed!
</description>
<name>KeepMovedFilesOnError</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDestFileStatus" setMethod="setDestFileStatus">
<description><![CDATA[File status of destination files after move.<br/>
Suitable stati: DEFAULT, TO_ARCHIVE, ARCHIVED <br/>
Use '-' to leave file status unchanged.]]>
</description>
<name>DestinationFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of write byte buffer.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHSMModulServicename"
setMethod="setHSMModulServicename">
<description><![CDATA[HSM Module to store tarballs to HSM systems.<br/>
Use NONE to store files on local filesystem without additional HSM support.<br/>
Only effective if destination is a tar filesystem!<br/>
Please ensure with dependencies in deployment descriptor that this service starts after configured HSMModule!<br/>
]]></description>
<name>HSMModulServicename</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDScheduleStudiesForDeletion"
setMethod="setTimerIDScheduleStudiesForDeletion">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDScheduleStudiesForMove</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getFileSystemMgtServiceNamePrefix"
setMethod="setFileSystemMgtServiceNamePrefix">
<description>Used internally. Do NOT modify.
</description>
<name>FileSystemMgtServiceNamePrefix</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getFindScuServiceName"
setMethod="setFindScuServiceName">
<description>Used internally. Do NOT modify. </description>
<name>FindScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Schedules move of most infrequently accessed
studies which satisfies the configured set of constraints from writeable
file systems of the source file system group, if they
were not accessed longer than configured
<i>MoveStudiesNotAccessedFor</i> or if <i>UsableDiskSpaceOnSource</i> falls
below <i>CurrentMoveThreshold</i>.
Returns the number of studies scheduled for move.]]>
</description>
<name>scheduleStudiesForMove</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedule move of study with specified Study
Instance UID <b>without</b> consideration of the configured set of
constraints. Returns size of study in bytes scheduled for deletion.]]>
</description>
<name>scheduleStudyForMove</name>
<parameter>
<description>Study Instance UID.
</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<return-type>long</return-type>
</operation>
<operation impact="ACTION">
<description>Show current Move criteria.</description>
<name>showMoveCriteria</name>
<return-type>java.lang.String</return-type>
</operation>
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Find SCU Service to query Instance Availability of a particular Study.</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.dcm.findscu.FindScuService</class>
<constructor>
<description>The default constructor</description>
<name>FindScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write"
getMethod="getCallingAET"
setMethod="setCallingAET">
<description>Calling AE title of the Find SCU.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority for C-Find requests. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Query C-FIND SCP for Instance Availability of particular Study</description>
<name>availabilityOfStudy</name>
<parameter>
<description>C-FIND SCP AE Title</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Study Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description>Query C-FIND SCP for particular Study</description>
<name>findStudy</name>
<parameter>
<description>C-FIND SCP AE Title</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Study Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>FixPatientAttributes Service. Remove 'none patient attributes' in patient record.(e.g. no study attributes).</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.FixPatientAttributesService</class>
<constructor>
<description>The default constructor</description>
<name>FixPatientAttributesService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getLimitNumberOfPatientsPerTask" setMethod="setLimitNumberOfPatientsPerTask">
<description>Maximum number of patient that are checked in one task.
</description>
<name>LimitNumberOfPatientsPerTask</name>
<type>int</type>
<descriptors>
<value value="500"/>
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Check all patients if attributes contains only patient relevant attributes.</description>
<name>check</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Fix patient attributes. Return number of updated patients</description>
<name>repair</name>
<return-type>int</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Forward Service.<br>
Provides auto-routing of DICOM objects that are received by the DICOM Storage Service
to remote DICOM applications. <br>
This is done by queuing corresponding retrieve requests to the <b>Move SCU</b> service.
<p>
This Forward Service supports two additional Notifications <tt>PatientUpdated</tt> and <tt>SeriesUpdated</tt>
from <b>ContentEditService</b> to allow forwarding DICOM objects to serve the purpose of update.<br>
(Works only if the received objects are used for updating!)
</p>]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.movescu.ForwardService</class>
<constructor>
<description>The default constructor</description>
<name>ForwardService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getForwardingRules" setMethod="setForwardingRules">
<description><![CDATA[List of forwarding rules, dependent upon which
application - identified by the Calling AE title - sent the objects.
<p>
The comma separated list of AE titles after the (optional) condition defines
the forwarding destination (the other Storage SCP) by its Called AE Title.
<p>
Each AE title can be suffixed by !&lt;from>-&lt;to> to defer forwarding to that
destination outside a particular time interval , and by {&lt;priority>} to
overwrite the forwarding priority specified by attribute <b>ForwardPriority</b>
for this destination .
<p>
<b>Syntax:</b>
<br>&lt;forwarding rules> := (&lt;forwarding rule> &lt;EOL>)+ | 'NONE'
<br>&lt;forwarding rule> := ['['&lt;condition>[,&lt;condition>..]']'] &lt;aeTitleTo> ['!'&lt;from>'-'&lt;to>] ['{'&lt;priority>'}']
<br>&lt;condition> := calling ['!'] '=' &lt;aeTitleFrom> or
extRetrieveAET ['!'] '=' &lt;extRetrieveAET> or
archived ['!'] '=' 'true' | 'false'
<br>&lt;priority> := 'MEDIUM' | 'HIGH' | 'LOW'
<br>where
<br>&lt;aeTitleFrom> = calling AE titles separated by pipes ('|')
<br>&lt;extRetrieveAET> = external Retrieve AET (of all instances of SeriesStored) separated by pipes ('|') or '*'
<br>&lt;archived> = If all instances of SeriesStored are marked as archived
<br>&lt;aeTitleTo> = comma separated list of AE titles that objects are forwarded to
<br>'!'&lt;from>'-'&lt;to> = start and end hour (0-23) when no forwarding should be
performed to that destination
<p>
<b>Example:</b> [calling=SCU1|SCU2]SCP3 {HIGH} ,SCP4!8-16 {LOW}
Forwards objects received from AE Title SCU1 or SCU2 to Storage SCPs, SCP3 with
high priority and to SCP4 with low priority. Forwarding of objects received
between 8am and 4pm to SCP4 is delayed until 4 pm.
<b>Example with central archive:</b> [calling!=CENTRAL,extRetrieveAET!=*]CENTRAL
Forwards all objects to CENTRAL with following exceptions:<br/>
1) If sourceAET of received object is CENTRAL<br/>
2) If a local object already exists with an extenal RetrieveAET]]>
</description>
<name>ForwardingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="[calling=SCU1|SCU2]SCP3,SCP4!8-16;NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getForwardOnInstanceLevelFromAETs"
setMethod="setForwardOnInstanceLevelFromAETs">
<description><![CDATA[Comma separated list of AE titles of Storage SCUs
from which objects are forwarded by an Instance level retrieve request.
Objects received from other Storage SCUs are forwarded on Series level,
which may cause to multiple forwarding of objects, if the Storage SCU
sends instances of a single series in multiple associations in succession.
<br>ALL = Forward objects on Instance level received from any Storage SCUs.
<br>NONE = Forward objects on Series level received from any Storage SCUs.
<br>Exception: if only one object is received in the association,
the object will be forwarded by an Instance level retrieve request, even
if the AE title of the sending Storage SCU is not listed.
]]>
</description>
<name>ForwardOnInstanceLevelFromAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isEnablePatientUpdated" setMethod="setEnablePatientUpdated">
<description><![CDATA[Enable/Disable PatientUpdated notification support.<br>
If enabled a <tt>PatientUpdated</tt> notification will forward all instances of
the related patient to each AET listed in <tt>ForwardModifiedToAETs</tt>.<p>
You should enable this feature only if you have to update a system that doesnt support
<b>HL7 ADT</b> update messages]]>
</description>
<name>EnablePatientUpdated</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isEnableSeriesUpdated" setMethod="setEnableSeriesUpdated">
<description><![CDATA[Enable/Disable <tt>SeriesUpdated</tt> notification support.
If enabled a SeriesUpdated notification will forward all instances of
the series to each AET listed in <tt>ForwardModifiedToAETs</tt>.<p>
You should enable this feature only if you have to update a system that doesnt support
<b>StudyMgtScu</b> service.]]>
</description>
<name>EnableSeriesUpdated</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIgnoreNotLocalRetrievable" setMethod="setIgnoreNotLocalRetrievable">
<description><![CDATA[Disable forward of Series that are not local retrievable.<br />
i.e.:<tt>SeriesStored</tt> notification with no RetrieveAET will be ignored by this service. <br />
Such a SeriesStored notification is sent if instances are received with private TransferSyntax
'Dcm4che URI Referenced' (1.2.40.0.13.1.1.2.4.94) and a (external) RetrieveAET instead of RetrieveURI is given.<br />
]]>
</description>
<name>IgnoreNotLocalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getForwardModifiedToAETs" setMethod="setForwardModifiedToAETs">
<description><![CDATA[Comma separated list of AE titles to which objects modified
by using the web application are re-forwarded.<br> <tt>NONE</tt> = do not forward
modified objects.<p>
see also <tt>EnablePatientUpdated</tt> and <tt>EnableSeriesUpdated</tt>.]]>
</description>
<name>ForwardModifiedToAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getForwardPriority" setMethod="setForwardPriority">
<description>Forwarding priority. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>ForwardPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getEditContentServiceName"
setMethod="setEditContentServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>EditContentServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Forward Service.<br>
Provides auto-routing of DICOM objects that are received by the DICOM Storage Service
to remote DICOM applications.
<p>Forwarding Rules can be defined in one or several XSLT stylesheets
under the configuration directory (s.attribute <b>ConfigDirectory</b>).
]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.movescu.ForwardService2</class>
<constructor>
<description>The default constructor</description>
<name>ForwardService2</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getConfigDir"
setMethod="setConfigDir">
<description><![CDATA[Directory where configuration files defining
forwarding rules are located: if XSL stylesheet "forward.xsl" exists in
this directory or in a sub-directory equal to the AE Title of the
Storage SCU, received Series will be forwarded to one or several
destinations according the forwarding rules in the stylesheet.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>ConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getForwardOnInstanceLevelFromAETs"
setMethod="setForwardOnInstanceLevelFromAETs">
<description><![CDATA[Comma separated list of AE titles of Storage SCUs
from which objects are forwarded by an Instance level retrieve request.
Objects received from other Storage SCUs are forwarded on Series level,
which may cause to multiple forwarding of objects, if the Storage SCU
sends instances of a single series in multiple associations in succession.
<br>ALL = Forward objects on Instance level received from any Storage SCUs.
<br>NONE = Forward objects on Series level received from any Storage SCUs.
<br>Exception: if only one object is received in the association,
the object will be forwarded by an Instance level retrieve request, even
if the AE title of the sending Storage SCU is not listed.
]]>
</description>
<name>ForwardOnInstanceLevelFromAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIgnoreNotLocalRetrievable" setMethod="setIgnoreNotLocalRetrievable">
<description><![CDATA[Disable forward of Series that are not local retrievable.<br />
i.e.:<tt>SeriesStored</tt> notification with no RetrieveAET will be ignored by this service. <br />
Such a SeriesStored notification is sent if instances are received with private TransferSyntax
'Dcm4che URI Referenced' (1.2.40.0.13.1.1.2.4.94) and a (external) RetrieveAET instead of RetrieveURI is given.<br />
]]>
</description>
<name>IgnoreNotLocalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogForwardPriorXML"
setMethod="setLogForwardPriorXML">
<description><![CDATA[Log XML data for selection of priors as file. (in &lt;log_dir&gt;/forward_prior)]]>
</description>
<name>LogForwardPriorXML</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Query based Forward Service.<br />
Provides auto-routing of DICOM objects to a remote DICOM application
that fulfills criteria defined by an SQL Query.
<p>The SQL statement must be defined with following rules:</p>
1) Series.series_iuid and Series.retrieve_aets must be the first columns of the select statement.<br />
2) The where clause should contain a Series.updated_time. ]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.movescu.ForwardByQueryService</class>
<constructor>
<description>The default constructor</description>
<name>ForwardByQueryService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description>AE title of the STORE SCP, to which the Dicom objects should be forwarded.
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="STORE1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPollInterval" setMethod="setPollInterval">
<description><![CDATA[Interval for polling for series to forward.
The interval can be specified in seconds (##s) or minutes (##m).
NEVER = disable Forwarding of Dicom objects.]]>
</description>
<name>PollInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQuery"
setMethod="setQuery">
<description><![CDATA[SQL statement to filter series for forwarding.<p />
Default Query to find series that are stored (series_status=0) and not forwarded (ext_retr_aet is null)
and has associated Request Attributes (a reference in series_req):<br />
SELECT DISTINCT series.series_iuid, series.retrieve_aets, series.pk
FROM series INNER JOIN series_req ON series.pk = series_req.series_fk
WHERE series.series_status = 0 AND series.ext_retr_aet IS NULL
AND series.updated_time &lt; ? ORDER BY series.pk<br />
Mote: The first three columns in the SELECT statement must be: series_iuid, retrieve_aets and pk (Series table)!<br />
If limit > 0 the SQL statement is extended with: <br />
1) a database specific LIMIT <br />
2) a 'series.pk > ?' as first criteria in WHERE clause (if sql hasn't already a 'pk > ?')<br />
3) an 'ORDER BY series.pk' (if sql hasn't already a 'ORDER BY')]]>
</description>
<name>Query</name>
<type>java.lang.String</type>
<descriptors>
<value value="SELECT DISTINCT series.series_iuid, series.retrieve_aets, series.pk
FROM series INNER JOIN series_req ON series.pk = series_req.series_fk
WHERE series.series_status = 0 AND series.ext_retr_aet IS NULL
AND series.updated_time &lt; ? ORDER BY series.pk"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getLastQueryCheckResult">
<description><![CDATA[Result of last check of Query statement.<br />
If there is an error no automatic forward will be perfromed until the Query is corrected. <br /> ]]>
</description>
<name>LastQueryCheckResult</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDelay" setMethod="setDelay">
<description><![CDATA[Delay in seconds (##s), minutes (##m) or hours (##h) for which a series must be unchanged before forward is triggered.
Use NONE to disable parameter setting of Prepared Statement! (This would be necessary if your SQL statement doesn't contain a '?')]]>
</description>
<name>Delay</name>
<type>java.lang.String</type>
<descriptors>
<value value="1h"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLimit"
setMethod="setLimit">
<description><![CDATA[Limit number of series for forwarding in one step. <br />
This will add database specfic limit statements to the Query!
Set this to 0 if the query already contains a limitation.]]>
</description>
<name>Limit</name>
<type>int</type>
<descriptors>
<value value="2000"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if a forward task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-only"
getMethod="getLastSeriesPk">
<description>Last used Series.pk. Used as additional query parameter (SERIES.pk > lastPk) if a Limit > 0 is specified!
</description>
<name>LastSeriesPk</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="getForwardPriority" setMethod="setForwardPriority">
<description>Forwarding priority. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>ForwardPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDForwardByQuery"
setMethod="setTimerIDForwardByQuery">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDForwardByQuery</name>
<type>java.lang.String</type>
<descriptors>
<value value="TimerIDForwardByQuery"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Check for series to forward and schedule MOVE requests for these.<br />
Return number of series that are scheduled to be sent to calledAET.]]>
</description>
<name>checkForward</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Show actual SQL statement as it will be used to find series.]]>
</description>
<name>showSQL</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,886 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[File System Management Service. Specifies the location
of file systems in which DICOM objects received from the Store SCP Server
are stored. You can also set up rules to delete the most infrequently
accessed studies.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.FileSystemMgt2Service</class>
<constructor>
<description>The default constructor</description>
<name>FileSystemMgt2Service</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-only" getMethod="getFileSystemGroupID">
<description><![CDATA[Identifier of the file system group managed by this
service, specified by property <b>group</b> of its MBean name.]]>
</description>
<name>FileSystemGroupID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefRetrieveAET"
setMethod="setDefRetrieveAET">
<description><![CDATA[Default Retrieve AE Title, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultRetrieveAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefAvailability"
setMethod="setDefAvailability">
<description><![CDATA[Default Availability, which will be associated with
new file systems added by operation <i>addRWFileSystem</i>. Enumerated
values: "ONLINE", "NEARLINE","OFFLINE", "UNAVAILABLE".]]>
</description>
<name>DefaultAvailability</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefUserInfo"
setMethod="setDefUserInfo">
<description><![CDATA[Default User Information, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultUserInformation</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefStorageDir"
setMethod="setDefStorageDir">
<description><![CDATA[Default Storage Directory, used on receive of the
first object if no Storage File System was explicit configured by
operation <i>addRWFileSystem</i>. A relative path name is resolved
relative to <i>&lt;archive-install-directory&gt;</i>/server/default/.
Use "NONE" to disable auto-configuration to force failure to receive
objects, if no Storage File System was explicit configured.]]>
</description>
<name>DefaultStorageDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="archive-lossy" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isCheckStorageFileSystemStatus"
setMethod="setCheckStorageFileSystemStatus">
<description><![CDATA[Flag indicating if the RW status of the current
storage file system is checked before each file storage of objects
received by the Storage SCP.
<p>If the update of the status of the file system is only performed by
invoking operations <i>updateFileSystemStatus</i> of this service
- in particular, if there are no other running dcm4chee applications on
other nodes (dcm4chee cluster), and File System records in the database
will NOT be updated by executing SQL statements using some dcm4chee
external SQL client application - the check can be deactivated to spare
the execution of one additional SQL statement for each stored object.</p>
]]>
</description>
<name>CheckStorageFileSystemStatus</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isMakeStorageDirectory"
setMethod="setMakeStorageDirectory">
<description><![CDATA[Create storage directory, if no one exists.]]>
</description>
<name>MakeStorageDirectory</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMountFailedCheckFile"
setMethod="setMountFailedCheckFile">
<description><![CDATA[If the specified file exists, this signals a failed
mount.]]>
</description>
<name>MountFailedCheckFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NO_MOUNT" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinFreeDiskSpace"
setMethod="setMinFreeDiskSpace">
<description><![CDATA[Minimum free disk space. If the free available disk
space on the current storage file system falls below this value, the next
configured file system becomes the current storage system.
1MB = 1000000 bytes, 1GB = 1000MB.<br />
It is also possible to configure a relative value in %.<br />
In this case the MinimumFreeDiskSpace is calculated for current storage file system.
Note: This feature is not supported on java environments prior JDK 6!
NONE = disable check for minimal free available disk space.
Therefore switching to next file system is also disabled.
(Only useful for configurations with only one RW filesystem)]]>
</description>
<name>MinimumFreeDiskSpace</name>
<type>java.lang.String</type>
<descriptors>
<value value="50MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getMinFreeDiskSpaceBytes">
<description><![CDATA[Get minimum free available disk space on the current storage
file system in bytes, returned as a long. <br/> -1 means UNKNOWN]]>
</description>
<name>MinimumFreeDiskSpaceBytes</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFS">
<description><![CDATA[Get free available disk space on the current storage
file system in bytes.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFSString">
<description><![CDATA[Get free available disk space on the current storage
file system as string.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFS">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, in bytes.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFSString">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, as string.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpace">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service.]]>
</description>
<name>FreeDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceString">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service as string.]]>
</description>
<name>FreeDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpace">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, in bytes.]]>
</description>
<name>UsableDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceString">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, as string.]]>
</description>
<name>UsableDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMinimalInterval"
setMethod="setCheckFreeDiskSpaceMinimalInterval">
<description><![CDATA[Minimal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. The current interval (curInterval) is
calculated by multiplication of this value (minInterval) with the ratio
of the current free available disk space (curFDS) to the configured
<i>MinimumFreeDiskSpace</i> (minFDS), but maximal the value specified by
<i>CheckFreeDiskSpaceMaximalInterval</i> (maxInterval):
<p>
<tt>curInterval = min(minInterval * curFDS/minFDS, maxInterval)</tt>
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMinimalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="10s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMaximalInterval"
setMethod="setCheckFreeDiskSpaceMaximalInterval">
<description><![CDATA[Maximal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. Effective as long the current free available
disk space is greater than <i>MinimumFreeDiskSpace</i> multiplied by the
ratio of this value and the configured
<i>CheckFreeDiskSpaceMinimalInterval</i>. Otherwise the interval will be
calculated as described above for attribute
<i>CheckFreeDiskSpaceMinimalInterval</i>.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMaximalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceRetryInterval"
setMethod="setCheckFreeDiskSpaceRetryInterval">
<description><![CDATA[Pause check for free available disk space for the
specified time interval after no configured file system was found with
sufficent (= more than specified by <i>MinimumFreeDiskSpace</i>)
available disk space.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceRetryInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleterThresholds"
setMethod="setDeleterThresholds">
<description><![CDATA[Defines thresholds dependent on hour of day, for
deleting the most infrequently accessed studies which satisfy the
configured set of constraints.
<p>Format: HOUR:##MB or HOUR:##GB or HOUR:##h, multiple thresholds with
different (start) hour separated by ';'. NONE = disable deletion of
studies on file systems of the file system group managed by this service.
<p>E.g.: 7:1h;19:24h => free space for expected data volume received in
24 hours between 7pm and 7am. Between 7am and 7pm only delete studies if
the usable free space falls below the expected data volume received in
one hour.]]>
</description>
<name>DeleterThresholds</name>
<type>java.lang.String</type>
<descriptors>
<value value="7:1h;19:24h" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getExpectedDataVolumePerDay"
setMethod="setExpectedDataVolumePerDay">
<description><![CDATA[Expected data volume per day. Used to transform
time based deleter thresholds (s. DeleterThresholds) into disk space size
to free.]]>
</description>
<name>ExpectedDataVolumePerDay</name>
<type>java.lang.String</type>
<descriptors>
<value value="100MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getExpectedDataVolumePerDayBytes">
<description><![CDATA[Get expected data volume per day
in bytes, returned as a long.]]>
</description>
<name>ExpectedDataVolumePerDayBytes</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="isAdjustExpectedDataVolumePerDay"
setMethod="setAdjustExpectedDataVolumePerDay">
<description><![CDATA[Update value of attribute ExpectedDataVolumePerDay
at midnight, if data volume received during last 24 hours exceeds its
current value.]]>
</description>
<name>AdjustExpectedDataVolumePerDay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCurrentDeleterThreshold">
<description><![CDATA[Get current effective deleter threshold in bytes
according configured <i>DeleterThreshold</i> and
<i>ExpectedDataVolumePerDay</i>. If <i>UsableDiskSpace</i> falls below
this value, most infrequently accessed studies which satisfy the
configured set of constraints will be deleted on next invocation of
operation <i>scheduleStudiesForDeletion</i>.]]>
</description>
<name>CurrentDeleterThreshold</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyIfNotAccessedFor"
setMethod="setDeleteStudyIfNotAccessedFor">
<description><![CDATA[Defines when a study not accessed for the specified
time will be deleted from file systems of the file system group managed
by this service, if it satisfies the configured set of constraints.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks) | NEVER
<br>NEVER = deletion of studies is only triggered by running out of disk
space.
<br>Example:
<br>52w = any studies that have not been accessed for 52 weeks or more
can be deleted if they satisfies the configured set of constraints.]]>
</description>
<name>DeleteStudyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyOnlyIfNotAccessedFor"
setMethod="setDeleteStudyOnlyIfNotAccessedFor">
<description><![CDATA[Defines minimal time a study must not be accessed
before it becomes a candidate for deletion.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks)]]>
</description>
<name>DeleteStudyOnlyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfStorageNotCommited"
setMethod="setDeleteStudyOnlyIfStorageNotCommited">
<description><![CDATA[Defines if no Storage Commitment request must have
been accepted for any instances of a study to become a candidate for
deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>. Typically only
activated if no other constraint for study deletion is configured.]]>
</description>
<name>DeleteStudyOnlyIfStorageNotCommited</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyExternalRetrievable"
setMethod="setDeleteStudyOnlyIfCopyExternalRetrievable">
<description><![CDATA[Defines if all instances of a study must be
retrievable from an external Application Entity to become a candidate
for deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfExternalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getInstanceAvailabilityOfExternalRetrievable"
setMethod="setInstanceAvailabilityOfExternalRetrievable">
<description><![CDATA[Defines assumed Instance Availability of only
external retrievable Studies. Enumerated values: ONLINE, NEARLINE, AUTO.
AUTO - query Instance Availability from external Retrieve AE.]]>
</description>
<name>InstanceAvailabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
<descriptors>
<value value="AUTO" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnMedia"
setMethod="setDeleteStudyOnlyIfCopyOnMedia">
<description><![CDATA[Defines if all instances of a study must be
stored on Media to become a candidate for deletion from file systems of
the file system group managed by this service triggered by running out of
disk space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnMedia</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup"
setMethod="setDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup">
<description><![CDATA[Defines if all instances of a study must be
stored on a file system of the specified different file system group to
become a candidate for deletion from file systems of the file system
group managed by this service triggered by running out of disk space or
being not accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.<br/>
Several Filesystem groups can be configured by seperating group names by &lt;newline&gt;.<br />
In this case a copy must exist on all given filesystems.<br />
"NONE" = no such constraint.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEARLINE_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyArchived"
setMethod="setDeleteStudyOnlyIfCopyArchived">
<description><![CDATA[Defines if all instances of a study must be stored
on a file system of a different file system group with file status:
ARCHIVED to become a candidate for deletion from file systems of the file
system group managed by this service triggered by running out of disk
space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>. Typically the file system group of
the file system holding the archived copy is specified by
<i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyArchived</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnReadOnlyFileSystem"
setMethod="setDeleteStudyOnlyIfCopyOnReadOnlyFileSystem">
<description><![CDATA[Defines if all instances of a study must be stored
on a read-only file system of a different file system group to become a
candidate for deletion from file systems of the file system group managed
by this service triggered by running out of disk space or being not
accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.
Typically the file system group of the read-only file systems is
specified by <i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnReadOnlyFileSystem</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isScheduleStudiesForDeletionOnSeriesStored"
setMethod="setScheduleStudiesForDeletionOnSeriesStored">
<description><![CDATA[Defines if operation <i>scheduleStudiesForDeletion</i>
is invoked to schedule deletion of most infrequently accessed studies
after storage of a new Series by the Storage SCP Service.]]>
</description>
<name>ScheduleStudiesForDeletionOnSeriesStored</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionInterval"
setMethod="setScheduleStudiesForDeletionInterval">
<description><![CDATA[Interval in which operation
<i>scheduleStudiesForDeletion</i> is invoked to schedule deletion of most
infrequently accessed studies which satisfies the configured set of
constraints from writable file systems of the file system group managed
by this service, if they were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i>
falls below <i>CurrentDeleterThreshold</i>.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>scheduleStudiesForDeletion</i>
by timer thread automatically. => If also
<i>scheduleStudiesForDeletionOnSeriesStored</i> is not activated, no
studies will be deleted automatically from file systems of the file
system group managed by this service.]]>
</description>
<name>ScheduleStudiesForDeletionInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningScheduleStudiesForDeletion">
<description>Current state if ScheduleStudiesForDeletion task is running. Used to avoid concurrency!
</description>
<name>isRunningScheduleStudiesForDeletion</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionBatchSize"
setMethod="setScheduleStudiesForDeletionBatchSize">
<description><![CDATA[Defines maximal number of studies scheduled for
deletion in one transaction.]]>
</description>
<name>ScheduleStudiesForDeletionBatchSize</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesInterval"
setMethod="setDeleteOrphanedPrivateFilesInterval">
<description><![CDATA[Interval in which operation
<i>deleteOrphanedPrivateFiles</i> is invoked to delete orphaned private
files from writable file systems of the file system group managed by this
service. Orphaned private files are the result of deleting instances
from the web trash folder.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>deleteOrphanedPrivateFiles</i>
automatically => never delete orphaned private files from the file
system group managed by this service automatically.]]>
</description>
<name>DeleteOrphanedPrivateFilesInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="1m" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningDeleteOrphanedPrivateFiles">
<description>Current state if DeleteOrphanedPrivateFiles task is running. Used to avoid concurrency!
</description>
<name>isRunningDeleteOrphanedPrivateFiles</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesBatchSize"
setMethod="setDeleteOrphanedPrivateFilesBatchSize">
<description><![CDATA[Limit the number of orphaned private files that are
deleted by one invocation of operation <i>deleteOrphanedPrivateFiles</i>.]]>
</description>
<name>DeleteOrphanedPrivateFilesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getUpdateStudiesBatchSize"
setMethod="setUpdateStudiesBatchSize">
<description><![CDATA[Defines maximal number of studies fetched from the
data base in one transaction by operation
<i>updateFileSystemAvailability</i> and
<i>updateFileSystemRetrieveAETitle</i> for update of <i>Availability</i>
and <i>RetrieveAETs</i> values in Study, Series and Instance records.]]>
</description>
<name>UpdateStudiesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDScheduleStudiesForDeletion"
setMethod="setTimerIDScheduleStudiesForDeletion">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDScheduleStudiesForDeletion</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDDeleteOrphanedPrivateFiles"
setMethod="setTimerIDDeleteOrphanedPrivateFiles">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDDeleteOrphanedPrivateFiles</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyServiceName"
setMethod="setDeleteStudyServiceName">
<description>Used internally. Do NOT modify. </description>
<name>DeleteStudyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify. </description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getFindScuServiceName"
setMethod="setFindScuServiceName">
<description>Used internally. Do NOT modify. </description>
<name>FindScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>List all configured file systems.</description>
<name>listAllFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[List all configured file systems associated with the
file system group managed by this service.]]>
</description>
<name>listFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Return Directory Paths for all configured file
systems associated with the file system group managed by this service
as array of Files.]]>
</description>
<name>listFileSystemDirectories</name>
<return-type>[Ljava.io.File;</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Add RW file system to the file system group managed
by this service. The file system is also linked to existing other file
systems of the group.]]>
</description>
<name>addRWFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Remove empty file system from the file system group
managed by this service. Will fail, if there are already/still file
records associated with the file system.]]>
</description>
<name>removeFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Link or unlink two file systems of the file system
group managed by this service.]]>
</description>
<name>linkFileSystems</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Directory/Mount Point of next file
system or "" to unlink the file system from its successor.
</description>
<name>next</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update RW status of the specified file system. If
the new file system status is "RW+", which defines the file system as
current storage file system, the status of the previous storage file
system is set to "RW", to ensure that there is only one file system in
one file system group with status "RW+".]]>
</description>
<name>updateFileSystemStatus</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system status. Enumerated values: "RW", "RW+","RO".
</description>
<name>status</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update file system availability of the specified file
system.]]>
</description>
<name>updateFileSystemAvailability</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system availability. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availability</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Availability of only external retrievable studies. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update Retrieve AE Title associated to the specified
file system.]]>
</description>
<name>updateFileSystemRetrieveAETitle</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New Retrieve AE Title.
</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System</description>
<name>selectStorageFileSystem</name>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System and return Directory</description>
<name>selectStorageDirectory</name>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Switch to next Storage File System (mounted, available and sufficient disk space).<br />
Return true if Storage File System has been changed.
]]></description>
<name>switchFileSystem</name>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update value of attribute
<i>ExpectedDataVolumePerDay</i>, if data volume received during last
24 hours exceeds its current value.]]>
</description>
<name>adjustExpectedDataVolumePerDay</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedules deletion of most infrequently accessed
studies which satisfies the configured set of constraints from writable
file systems of the file system group managed by this service, if they
were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i> falls
below <i>CurrentDeleterThreshold</i>.
Returns the number of studies scheduled for deletion.]]>
</description>
<name>scheduleStudiesForDeletion</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedule deletion of study with specified Study
Instance UID from writable file systems of the file system group managed
by this service, <b>without</b> consideration of the configured set of
constraints. Returns size of study in bytes scheduled for deletion.]]>
</description>
<name>scheduleStudyForDeletion</name>
<parameter>
<description>Study Instance UID.
</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<return-type>long</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Delete orphaned private files from writable file
systems of the file system group managed by this service. Orphaned
private files are the result of deleting instances from the web trash
folder. Returns the number of deleted files.]]>
</description>
<name>deleteOrphanedPrivateFiles</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Show current Deleter criteria.</description>
<name>showDeleterCriteria</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Stop current Deleter Thread. (finish loop even there is still remaining size to delete)</description>
<name>stopCurrentDeleterThread</name>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
<notification>
<description>The notification sent whenever the current storage
file system changed to the next configured storage file system.
</description>
<name>javax.management.Notification</name>
<notification-type>org.dcm4chex.archive.notif.StorageFileSystemSwitched</notification-type>
</notification>
</mbean>

View File

@@ -0,0 +1,872 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[File System Management Service. Specifies the location
of file systems in which DICOM objects received from the Store SCP Server
are stored. You can also set up rules to delete the most infrequently
accessed studies.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.FileSystemMgt2Service</class>
<constructor>
<description>The default constructor</description>
<name>FileSystemMgt2Service</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-only" getMethod="getFileSystemGroupID">
<description><![CDATA[Identifier of the file system group managed by this
service, specified by property <b>group</b> of its MBean name.]]>
</description>
<name>FileSystemGroupID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefRetrieveAET"
setMethod="setDefRetrieveAET">
<description><![CDATA[Default Retrieve AE Title, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultRetrieveAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefAvailability"
setMethod="setDefAvailability">
<description><![CDATA[Default Availability, which will be associated with
new file systems added by operation <i>addRWFileSystem</i>. Enumerated
values: "ONLINE", "NEARLINE","OFFLINE", "UNAVAILABLE".]]>
</description>
<name>DefaultAvailability</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEARLINE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefUserInfo"
setMethod="setDefUserInfo">
<description><![CDATA[Default User Information, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultUserInformation</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefStorageDir"
setMethod="setDefStorageDir">
<description><![CDATA[Default Storage Directory, used on receive of the
first object if no Storage File System was explicit configured by
operation <i>addRWFileSystem</i>. A relative path name is resolved
relative to <i>&lt;archive-install-directory&gt;</i>/server/default/.
Use "NONE" to disable auto-configuration to force failure to receive
objects, if no Storage File System was explicit configured.]]>
</description>
<name>DefaultStorageDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isCheckStorageFileSystemStatus"
setMethod="setCheckStorageFileSystemStatus">
<description><![CDATA[Flag indicating if the RW status of the current
storage file system is checked before each file storage of objects
received by the Storage SCP.
<p>If the update of the status of the file system is only performed by
invoking operations <i>updateFileSystemStatus</i> of this service
- in particular, if there are no other running dcm4chee applications on
other nodes (dcm4chee cluster), and File System records in the database
will NOT be updated by executing SQL statements using some dcm4chee
external SQL client application - the check can be deactivated to spare
the execution of one additional SQL statement for each stored object.</p>
]]>
</description>
<name>CheckStorageFileSystemStatus</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isMakeStorageDirectory"
setMethod="setMakeStorageDirectory">
<description><![CDATA[Create storage directory, if no one exists.]]>
</description>
<name>MakeStorageDirectory</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMountFailedCheckFile"
setMethod="setMountFailedCheckFile">
<description><![CDATA[If the specified file exists, this signals a failed
mount.]]>
</description>
<name>MountFailedCheckFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NO_MOUNT" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinFreeDiskSpace"
setMethod="setMinFreeDiskSpace">
<description><![CDATA[Minimum free disk space. If the free available disk
space on the current storage file system falls below this value, the next
configured file system becomes the current storage system.
1MB = 1000000 bytes, 1GB = 1000MB.<br />
It is also possible to configure a relative value in %.<br />
In this case the MinimumFreeDiskSpace is calculated for current storage file system.
Note: This feature is not supported on java environments prior JDK 6!
NONE = disable check for minimal free available disk space.
Therefore switching to next file system is also disabled.
(Only useful for configurations with only one RW filesystem)]]>
</description>
<name>MinimumFreeDiskSpace</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getMinFreeDiskSpaceBytes">
<description><![CDATA[Get minimum free available disk space on the current storage
file system in bytes, returned as a long. <br/> -1 means UNKNOWN]]>
</description>
<name>MinimumFreeDiskSpaceBytes</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFS">
<description><![CDATA[Get free available disk space on the current storage
file system in bytes.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFSString">
<description><![CDATA[Get free available disk space on the current storage
file system as string.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFS">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, in bytes.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFSString">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, as string.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpace">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service.]]>
</description>
<name>FreeDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceString">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service as string.]]>
</description>
<name>FreeDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpace">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, in bytes.]]>
</description>
<name>UsableDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceString">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, as string.]]>
</description>
<name>UsableDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMinimalInterval"
setMethod="setCheckFreeDiskSpaceMinimalInterval">
<description><![CDATA[Minimal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. The current interval (curInterval) is
calculated by multiplication of this value (minInterval) with the ratio
of the current free available disk space (curFDS) to the configured
<i>MinimumFreeDiskSpace</i> (minFDS), but maximal the value specified by
<i>CheckFreeDiskSpaceMaximalInterval</i> (maxInterval):
<p>
<tt>curInterval = min(minInterval * curFDS/minFDS, maxInterval)</tt>
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMinimalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="10s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMaximalInterval"
setMethod="setCheckFreeDiskSpaceMaximalInterval">
<description><![CDATA[Maximal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. Effective as long the current free available
disk space is greater than <i>MinimumFreeDiskSpace</i> multiplied by the
ratio of this value and the configured
<i>CheckFreeDiskSpaceMinimalInterval</i>. Otherwise the interval will be
calculated as described above for attribute
<i>CheckFreeDiskSpaceMinimalInterval</i>.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMaximalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceRetryInterval"
setMethod="setCheckFreeDiskSpaceRetryInterval">
<description><![CDATA[Pause check for free available disk space for the
specified time interval after no configured file system was found with
sufficent (= more than specified by <i>MinimumFreeDiskSpace</i>)
available disk space.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceRetryInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleterThresholds"
setMethod="setDeleterThresholds">
<description><![CDATA[Defines thresholds dependent on hour of day, for
deleting the most infrequently accessed studies which satisfy the
configured set of constraints.
<p>Format: HOUR:##MB or HOUR:##GB or HOUR:##h, multiple thresholds with
different (start) hour separated by ';'. NONE = disable deletion of
studies on file systems of the file system group managed by this service.
<p>E.g.: 7:1h;19:24h => free space for expected data volume received in
24 hours between 7pm and 7am. Between 7am and 7pm only delete studies if
the usable free space falls below the expected data volume received in
one hour.]]>
</description>
<name>DeleterThresholds</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getExpectedDataVolumePerDay"
setMethod="setExpectedDataVolumePerDay">
<description><![CDATA[Expected data volume per day. Used to transform
time based deleter thresholds (s. DeleterThresholds) into disk space size
to free.]]>
</description>
<name>ExpectedDataVolumePerDay</name>
<type>java.lang.String</type>
<descriptors>
<value value="100MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getExpectedDataVolumePerDayBytes">
<description><![CDATA[Get expected data volume per day
in bytes, returned as a long.]]>
</description>
<name>ExpectedDataVolumePerDayBytes</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="isAdjustExpectedDataVolumePerDay"
setMethod="setAdjustExpectedDataVolumePerDay">
<description><![CDATA[Update value of attribute ExpectedDataVolumePerDay
at midnight, if data volume received during last 24 hours exceeds its
current value.]]>
</description>
<name>AdjustExpectedDataVolumePerDay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCurrentDeleterThreshold">
<description><![CDATA[Get current effective deleter threshold in bytes
according configured <i>DeleterThreshold</i> and
<i>ExpectedDataVolumePerDay</i>. If <i>UsableDiskSpace</i> falls below
this value, most infrequently accessed studies which satisfy the
configured set of constraints will be deleted on next invocation of
operation <i>scheduleStudiesForDeletion</i>.]]>
</description>
<name>CurrentDeleterThreshold</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyIfNotAccessedFor"
setMethod="setDeleteStudyIfNotAccessedFor">
<description><![CDATA[Defines when a study not accessed for the specified
time will be deleted from file systems of the file system group managed
by this service, if it satisfies the configured set of constraints.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks) | NEVER
<br>NEVER = deletion of studies is only triggered by running out of disk
space.
<br>Example:
<br>52w = any studies that have not been accessed for 52 weeks or more
can be deleted if they satisfies the configured set of constraints.]]>
</description>
<name>DeleteStudyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyOnlyIfNotAccessedFor"
setMethod="setDeleteStudyOnlyIfNotAccessedFor">
<description><![CDATA[Defines minimal time a study must not be accessed
before it becomes a candidate for deletion.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks)]]>
</description>
<name>DeleteStudyOnlyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfStorageNotCommited"
setMethod="setDeleteStudyOnlyIfStorageNotCommited">
<description><![CDATA[Defines if no Storage Commitment request must have
been accepted for any instances of a study to become a candidate for
deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>. Typically only
activated if no other constraint for study deletion is configured.]]>
</description>
<name>DeleteStudyOnlyIfStorageNotCommited</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyExternalRetrievable"
setMethod="setDeleteStudyOnlyIfCopyExternalRetrievable">
<description><![CDATA[Defines if all instances of a study must be
retrievable from an external Application Entity to become a candidate
for deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfExternalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getInstanceAvailabilityOfExternalRetrievable"
setMethod="setInstanceAvailabilityOfExternalRetrievable">
<description><![CDATA[Defines assumed Instance Availability of only
external retrievable Studies. Enumerated values: ONLINE, NEARLINE, AUTO.
AUTO - query Instance Availability from external Retrieve AE.]]>
</description>
<name>InstanceAvailabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
<descriptors>
<value value="AUTO" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnMedia"
setMethod="setDeleteStudyOnlyIfCopyOnMedia">
<description><![CDATA[Defines if all instances of a study must be
stored on Media to become a candidate for deletion from file systems of
the file system group managed by this service triggered by running out of
disk space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnMedia</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup"
setMethod="setDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup">
<description><![CDATA[Defines if all instances of a study must be
stored on a file system of the specified different file system group to
become a candidate for deletion from file systems of the file system
group managed by this service triggered by running out of disk space or
being not accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.<br/>
Several Filesystem groups can be configured by seperating group names by &lt;newline&gt;.<br />
In this case a copy must exist on all given filesystems.<br />
"NONE" = no such constraint.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyArchived"
setMethod="setDeleteStudyOnlyIfCopyArchived">
<description><![CDATA[Defines if all instances of a study must be stored
on a file system of a different file system group with file status:
ARCHIVED to become a candidate for deletion from file systems of the file
system group managed by this service triggered by running out of disk
space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>. Typically the file system group of
the file system holding the archived copy is specified by
<i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyArchived</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnReadOnlyFileSystem"
setMethod="setDeleteStudyOnlyIfCopyOnReadOnlyFileSystem">
<description><![CDATA[Defines if all instances of a study must be stored
on a read-only file system of a different file system group to become a
candidate for deletion from file systems of the file system group managed
by this service triggered by running out of disk space or being not
accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.
Typically the file system group of the read-only file systems is
specified by <i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnReadOnlyFileSystem</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isScheduleStudiesForDeletionOnSeriesStored"
setMethod="setScheduleStudiesForDeletionOnSeriesStored">
<description><![CDATA[Defines if operation <i>scheduleStudiesForDeletion</i>
is invoked to schedule deletion of most infrequently accessed studies
after storage of a new Series by the Storage SCP Service.]]>
</description>
<name>ScheduleStudiesForDeletionOnSeriesStored</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionInterval"
setMethod="setScheduleStudiesForDeletionInterval">
<description><![CDATA[Interval in which operation
<i>scheduleStudiesForDeletion</i> is invoked to schedule deletion of most
infrequently accessed studies which satisfies the configured set of
constraints from writable file systems of the file system group managed
by this service, if they were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i>
falls below <i>CurrentDeleterThreshold</i>.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>scheduleStudiesForDeletion</i>
by timer thread automatically. => If also
<i>scheduleStudiesForDeletionOnSeriesStored</i> is not activated, no
studies will be deleted automatically from file systems of the file
system group managed by this service.]]>
</description>
<name>ScheduleStudiesForDeletionInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionBatchSize"
setMethod="setScheduleStudiesForDeletionBatchSize">
<description><![CDATA[Defines maximal number of studies scheduled for
deletion in one transaction.]]>
</description>
<name>ScheduleStudiesForDeletionBatchSize</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesInterval"
setMethod="setDeleteOrphanedPrivateFilesInterval">
<description><![CDATA[Interval in which operation
<i>deleteOrphanedPrivateFiles</i> is invoked to delete orphaned private
files from writable file systems of the file system group managed by this
service. Orphaned private files are the result of deleting instances
from the web trash folder.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>deleteOrphanedPrivateFiles</i>
automatically => never delete orphaned private files from the file
system group managed by this service automatically.]]>
</description>
<name>DeleteOrphanedPrivateFilesInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesBatchSize"
setMethod="setDeleteOrphanedPrivateFilesBatchSize">
<description><![CDATA[Limit the number of orphaned private files that are
deleted by one invocation of operation <i>deleteOrphanedPrivateFiles</i>.]]>
</description>
<name>DeleteOrphanedPrivateFilesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getUpdateStudiesBatchSize"
setMethod="setUpdateStudiesBatchSize">
<description><![CDATA[Defines maximal number of studies fetched from the
data base in one transaction by operation
<i>updateFileSystemAvailability</i> and
<i>updateFileSystemRetrieveAETitle</i> for update of <i>Availability</i>
and <i>RetrieveAETs</i> values in Study, Series and Instance records.]]>
</description>
<name>UpdateStudiesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDScheduleStudiesForDeletion"
setMethod="setTimerIDScheduleStudiesForDeletion">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDScheduleStudiesForDeletion</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDDeleteOrphanedPrivateFiles"
setMethod="setTimerIDDeleteOrphanedPrivateFiles">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDDeleteOrphanedPrivateFiles</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyServiceName"
setMethod="setDeleteStudyServiceName">
<description>Used internally. Do NOT modify. </description>
<name>DeleteStudyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify. </description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getFindScuServiceName"
setMethod="setFindScuServiceName">
<description>Used internally. Do NOT modify. </description>
<name>FindScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>List all configured file systems.</description>
<name>listAllFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[List all configured file systems associated with the
file system group managed by this service.]]>
</description>
<name>listFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Return Directory Paths for all configured file
systems associated with the file system group managed by this service
as array of Files.]]>
</description>
<name>listFileSystemDirectories</name>
<return-type>[Ljava.io.File;</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Add RW file system to the file system group managed
by this service. The file system is also linked to existing other file
systems of the group.]]>
</description>
<name>addRWFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Remove empty file system from the file system group
managed by this service. Will fail, if there are already/still file
records associated with the file system.]]>
</description>
<name>removeFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Link or unlink two file systems of the file system
group managed by this service.]]>
</description>
<name>linkFileSystems</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Directory/Mount Point of next file
system or "" to unlink the file system from its successor.
</description>
<name>next</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update RW status of the specified file system. If
the new file system status is "RW+", which defines the file system as
current storage file system, the status of the previous storage file
system is set to "RW", to ensure that there is only one file system in
one file system group with status "RW+".]]>
</description>
<name>updateFileSystemStatus</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system status. Enumerated values: "RW", "RW+","RO".
</description>
<name>status</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update file system availability of the specified file
system.]]>
</description>
<name>updateFileSystemAvailability</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system availability. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availability</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Availability of only external retrievable studies. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update Retrieve AE Title associated to the specified
file system.]]>
</description>
<name>updateFileSystemRetrieveAETitle</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New Retrieve AE Title.
</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System</description>
<name>selectStorageFileSystem</name>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System and return Directory</description>
<name>selectStorageDirectory</name>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Switch to next Storage File System (mounted, available and sufficient disk space).<br />
Return true if Storage File System has been changed.
]]></description>
<name>switchFileSystem</name>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update value of attribute
<i>ExpectedDataVolumePerDay</i>, if data volume received during last
24 hours exceeds its current value.]]>
</description>
<name>adjustExpectedDataVolumePerDay</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedules deletion of most infrequently accessed
studies which satisfies the configured set of constraints from writable
file systems of the file system group managed by this service, if they
were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i> falls
below <i>CurrentDeleterThreshold</i>.
Returns the number of studies scheduled for deletion.]]>
</description>
<name>scheduleStudiesForDeletion</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedule deletion of study with specified Study
Instance UID from writable file systems of the file system group managed
by this service, <b>without</b> consideration of the configured set of
constraints. Returns size of study in bytes scheduled for deletion.]]>
</description>
<name>scheduleStudyForDeletion</name>
<parameter>
<description>Study Instance UID.
</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<return-type>long</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Delete orphaned private files from writable file
systems of the file system group managed by this service. Orphaned
private files are the result of deleting instances from the web trash
folder. Returns the number of deleted files.]]>
</description>
<name>deleteOrphanedPrivateFiles</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Show current Deleter criteria.</description>
<name>showDeleterCriteria</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Stop current Deleter Thread. (finish loop even there is still remaining size to delete)</description>
<name>stopCurrentDeleterThread</name>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
<notification>
<description>The notification sent whenever the current storage
file system changed to the next configured storage file system.
</description>
<name>javax.management.Notification</name>
<notification-type>org.dcm4chex.archive.notif.StorageFileSystemSwitched</notification-type>
</notification>
</mbean>

View File

@@ -0,0 +1,886 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[File System Management Service. Specifies the location
of file systems in which DICOM objects received from the Store SCP Server
are stored. You can also set up rules to delete the most infrequently
accessed studies.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.FileSystemMgt2Service</class>
<constructor>
<description>The default constructor</description>
<name>FileSystemMgt2Service</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-only" getMethod="getFileSystemGroupID">
<description><![CDATA[Identifier of the file system group managed by this
service, specified by property <b>group</b> of its MBean name.]]>
</description>
<name>FileSystemGroupID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefRetrieveAET"
setMethod="setDefRetrieveAET">
<description><![CDATA[Default Retrieve AE Title, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultRetrieveAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefAvailability"
setMethod="setDefAvailability">
<description><![CDATA[Default Availability, which will be associated with
new file systems added by operation <i>addRWFileSystem</i>. Enumerated
values: "ONLINE", "NEARLINE","OFFLINE", "UNAVAILABLE".]]>
</description>
<name>DefaultAvailability</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDefUserInfo"
setMethod="setDefUserInfo">
<description><![CDATA[Default User Information, which will be associated
with new file systems added by operation <i>addRWFileSystem</i>.]]>
</description>
<name>DefaultUserInformation</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getDefStorageDir"
setMethod="setDefStorageDir">
<description><![CDATA[Default Storage Directory, used on receive of the
first object if no Storage File System was explicit configured by
operation <i>addRWFileSystem</i>. A relative path name is resolved
relative to <i>&lt;archive-install-directory&gt;</i>/server/default/.
Use "NONE" to disable auto-configuration to force failure to receive
objects, if no Storage File System was explicit configured.]]>
</description>
<name>DefaultStorageDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="archive" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isCheckStorageFileSystemStatus"
setMethod="setCheckStorageFileSystemStatus">
<description><![CDATA[Flag indicating if the RW status of the current
storage file system is checked before each file storage of objects
received by the Storage SCP.
<p>If the update of the status of the file system is only performed by
invoking operations <i>updateFileSystemStatus</i> of this service
- in particular, if there are no other running dcm4chee applications on
other nodes (dcm4chee cluster), and File System records in the database
will NOT be updated by executing SQL statements using some dcm4chee
external SQL client application - the check can be deactivated to spare
the execution of one additional SQL statement for each stored object.</p>
]]>
</description>
<name>CheckStorageFileSystemStatus</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isMakeStorageDirectory"
setMethod="setMakeStorageDirectory">
<description><![CDATA[Create storage directory, if no one exists.]]>
</description>
<name>MakeStorageDirectory</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMountFailedCheckFile"
setMethod="setMountFailedCheckFile">
<description><![CDATA[If the specified file exists, this signals a failed
mount.]]>
</description>
<name>MountFailedCheckFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NO_MOUNT" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinFreeDiskSpace"
setMethod="setMinFreeDiskSpace">
<description><![CDATA[Minimum free disk space. If the free available disk
space on the current storage file system falls below this value, the next
configured file system becomes the current storage system.
1MB = 1000000 bytes, 1GB = 1000MB.<br />
It is also possible to configure a relative value in %.<br />
In this case the MinimumFreeDiskSpace is calculated for current storage file system.
Note: This feature is not supported on java environments prior JDK 6!
NONE = disable check for minimal free available disk space.
Therefore switching to next file system is also disabled.
(Only useful for configurations with only one RW filesystem)]]>
</description>
<name>MinimumFreeDiskSpace</name>
<type>java.lang.String</type>
<descriptors>
<value value="50MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getMinFreeDiskSpaceBytes">
<description><![CDATA[Get minimum free available disk space on the current storage
file system in bytes, returned as a long. <br/> -1 means UNKNOWN]]>
</description>
<name>MinimumFreeDiskSpaceBytes</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFS">
<description><![CDATA[Get free available disk space on the current storage
file system in bytes.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceOnCurFSString">
<description><![CDATA[Get free available disk space on the current storage
file system as string.]]>
</description>
<name>FreeDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFS">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, in bytes.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystem</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceOnCurFSString">
<description><![CDATA[Get usable free disk space on the current storage
file system, considering the configured value for
<i>MinimumFreeDiskSpace</i>, by substracting that value from
<i>FreeDiskSpaceOnCurrentStorageFileSystem</i>, as string.]]>
</description>
<name>UsableDiskSpaceOnCurrentStorageFileSystemString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpace">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service.]]>
</description>
<name>FreeDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getFreeDiskSpaceString">
<description><![CDATA[Get free available disk space on writable file
systems of the file system group managed by this service as string.]]>
</description>
<name>FreeDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpace">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, in bytes.]]>
</description>
<name>UsableDiskSpace</name>
<type>long</type>
</attribute>
<attribute access="read-only" getMethod="getUsableDiskSpaceString">
<description><![CDATA[Get usable free disk space on writable file
systems of the file system group managed by this service, considering
the configured value for <i>MinimumFreeDiskSpace</i>, as string.]]>
</description>
<name>UsableDiskSpaceString</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMinimalInterval"
setMethod="setCheckFreeDiskSpaceMinimalInterval">
<description><![CDATA[Minimal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. The current interval (curInterval) is
calculated by multiplication of this value (minInterval) with the ratio
of the current free available disk space (curFDS) to the configured
<i>MinimumFreeDiskSpace</i> (minFDS), but maximal the value specified by
<i>CheckFreeDiskSpaceMaximalInterval</i> (maxInterval):
<p>
<tt>curInterval = min(minInterval * curFDS/minFDS, maxInterval)</tt>
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMinimalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="10s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceMaximalInterval"
setMethod="setCheckFreeDiskSpaceMaximalInterval">
<description><![CDATA[Maximal Interval for checking free available disk
space on current storage file system against minimum value specified by
<i>MinimumFreeDiskSpace</i>. Effective as long the current free available
disk space is greater than <i>MinimumFreeDiskSpace</i> multiplied by the
ratio of this value and the configured
<i>CheckFreeDiskSpaceMinimalInterval</i>. Otherwise the interval will be
calculated as described above for attribute
<i>CheckFreeDiskSpaceMinimalInterval</i>.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceMaximalInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckFreeDiskSpaceRetryInterval"
setMethod="setCheckFreeDiskSpaceRetryInterval">
<description><![CDATA[Pause check for free available disk space for the
specified time interval after no configured file system was found with
sufficent (= more than specified by <i>MinimumFreeDiskSpace</i>)
available disk space.
<p>Format: ##m (in minutes) | ##s (in seconds).]]>
</description>
<name>CheckFreeDiskSpaceRetryInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="60s" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleterThresholds"
setMethod="setDeleterThresholds">
<description><![CDATA[Defines thresholds dependent on hour of day, for
deleting the most infrequently accessed studies which satisfy the
configured set of constraints.
<p>Format: HOUR:##MB or HOUR:##GB or HOUR:##h, multiple thresholds with
different (start) hour separated by ';'. NONE = disable deletion of
studies on file systems of the file system group managed by this service.
<p>E.g.: 7:1h;19:24h => free space for expected data volume received in
24 hours between 7pm and 7am. Between 7am and 7pm only delete studies if
the usable free space falls below the expected data volume received in
one hour.]]>
</description>
<name>DeleterThresholds</name>
<type>java.lang.String</type>
<descriptors>
<value value="7:1h;19:24h" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getExpectedDataVolumePerDay"
setMethod="setExpectedDataVolumePerDay">
<description><![CDATA[Expected data volume per day. Used to transform
time based deleter thresholds (s. DeleterThresholds) into disk space size
to free.]]>
</description>
<name>ExpectedDataVolumePerDay</name>
<type>java.lang.String</type>
<descriptors>
<value value="100MB" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getExpectedDataVolumePerDayBytes">
<description><![CDATA[Get expected data volume per day
in bytes, returned as a long.]]>
</description>
<name>ExpectedDataVolumePerDayBytes</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="isAdjustExpectedDataVolumePerDay"
setMethod="setAdjustExpectedDataVolumePerDay">
<description><![CDATA[Update value of attribute ExpectedDataVolumePerDay
at midnight, if data volume received during last 24 hours exceeds its
current value.]]>
</description>
<name>AdjustExpectedDataVolumePerDay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getCurrentDeleterThreshold">
<description><![CDATA[Get current effective deleter threshold in bytes
according configured <i>DeleterThreshold</i> and
<i>ExpectedDataVolumePerDay</i>. If <i>UsableDiskSpace</i> falls below
this value, most infrequently accessed studies which satisfy the
configured set of constraints will be deleted on next invocation of
operation <i>scheduleStudiesForDeletion</i>.]]>
</description>
<name>CurrentDeleterThreshold</name>
<type>long</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyIfNotAccessedFor"
setMethod="setDeleteStudyIfNotAccessedFor">
<description><![CDATA[Defines when a study not accessed for the specified
time will be deleted from file systems of the file system group managed
by this service, if it satisfies the configured set of constraints.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks) | NEVER
<br>NEVER = deletion of studies is only triggered by running out of disk
space.
<br>Example:
<br>52w = any studies that have not been accessed for 52 weeks or more
can be deleted if they satisfies the configured set of constraints.]]>
</description>
<name>DeleteStudyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyOnlyIfNotAccessedFor"
setMethod="setDeleteStudyOnlyIfNotAccessedFor">
<description><![CDATA[Defines minimal time a study must not be accessed
before it becomes a candidate for deletion.
<p>Format:
<br>##h (in hours) | ##d (in days) | ##w (in weeks)]]>
</description>
<name>DeleteStudyOnlyIfNotAccessedFor</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfStorageNotCommited"
setMethod="setDeleteStudyOnlyIfStorageNotCommited">
<description><![CDATA[Defines if no Storage Commitment request must have
been accepted for any instances of a study to become a candidate for
deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>. Typically only
activated if no other constraint for study deletion is configured.]]>
</description>
<name>DeleteStudyOnlyIfStorageNotCommited</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyExternalRetrievable"
setMethod="setDeleteStudyOnlyIfCopyExternalRetrievable">
<description><![CDATA[Defines if all instances of a study must be
retrievable from an external Application Entity to become a candidate
for deletion from file systems of the file system group managed by this
service triggered by running out of disk space or being not accessed
longer than configured <i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfExternalRetrievable</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getInstanceAvailabilityOfExternalRetrievable"
setMethod="setInstanceAvailabilityOfExternalRetrievable">
<description><![CDATA[Defines assumed Instance Availability of only
external retrievable Studies. Enumerated values: ONLINE, NEARLINE, AUTO.
AUTO - query Instance Availability from external Retrieve AE.]]>
</description>
<name>InstanceAvailabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
<descriptors>
<value value="AUTO" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnMedia"
setMethod="setDeleteStudyOnlyIfCopyOnMedia">
<description><![CDATA[Defines if all instances of a study must be
stored on Media to become a candidate for deletion from file systems of
the file system group managed by this service triggered by running out of
disk space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnMedia</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup"
setMethod="setDeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup">
<description><![CDATA[Defines if all instances of a study must be
stored on a file system of the specified different file system group to
become a candidate for deletion from file systems of the file system
group managed by this service triggered by running out of disk space or
being not accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.<br/>
Several Filesystem groups can be configured by seperating group names by &lt;newline&gt;.<br />
In this case a copy must exist on all given filesystems.<br />
"NONE" = no such constraint.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEARLINE_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyArchived"
setMethod="setDeleteStudyOnlyIfCopyArchived">
<description><![CDATA[Defines if all instances of a study must be stored
on a file system of a different file system group with file status:
ARCHIVED to become a candidate for deletion from file systems of the file
system group managed by this service triggered by running out of disk
space or being not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i>. Typically the file system group of
the file system holding the archived copy is specified by
<i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyArchived</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isDeleteStudyOnlyIfCopyOnReadOnlyFileSystem"
setMethod="setDeleteStudyOnlyIfCopyOnReadOnlyFileSystem">
<description><![CDATA[Defines if all instances of a study must be stored
on a read-only file system of a different file system group to become a
candidate for deletion from file systems of the file system group managed
by this service triggered by running out of disk space or being not
accessed longer than configured <i>DeleteStudiesNotAccessedFor</i>.
Typically the file system group of the read-only file systems is
specified by <i>DeleteStudyIfCopyOnFileSystemOfFileSystemGroup</i>.]]>
</description>
<name>DeleteStudyOnlyIfCopyOnReadOnlyFileSystem</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isScheduleStudiesForDeletionOnSeriesStored"
setMethod="setScheduleStudiesForDeletionOnSeriesStored">
<description><![CDATA[Defines if operation <i>scheduleStudiesForDeletion</i>
is invoked to schedule deletion of most infrequently accessed studies
after storage of a new Series by the Storage SCP Service.]]>
</description>
<name>ScheduleStudiesForDeletionOnSeriesStored</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionInterval"
setMethod="setScheduleStudiesForDeletionInterval">
<description><![CDATA[Interval in which operation
<i>scheduleStudiesForDeletion</i> is invoked to schedule deletion of most
infrequently accessed studies which satisfies the configured set of
constraints from writable file systems of the file system group managed
by this service, if they were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i>
falls below <i>CurrentDeleterThreshold</i>.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>scheduleStudiesForDeletion</i>
by timer thread automatically. => If also
<i>scheduleStudiesForDeletionOnSeriesStored</i> is not activated, no
studies will be deleted automatically from file systems of the file
system group managed by this service.]]>
</description>
<name>ScheduleStudiesForDeletionInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningScheduleStudiesForDeletion">
<description>Current state if ScheduleStudiesForDeletion task is running. Used to avoid concurrency!
</description>
<name>isRunningScheduleStudiesForDeletion</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getScheduleStudiesForDeletionBatchSize"
setMethod="setScheduleStudiesForDeletionBatchSize">
<description><![CDATA[Defines maximal number of studies scheduled for
deletion in one transaction.]]>
</description>
<name>ScheduleStudiesForDeletionBatchSize</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesInterval"
setMethod="setDeleteOrphanedPrivateFilesInterval">
<description><![CDATA[Interval in which operation
<i>deleteOrphanedPrivateFiles</i> is invoked to delete orphaned private
files from writable file systems of the file system group managed by this
service. Orphaned private files are the result of deleting instances
from the web trash folder.
<p>Format: ##s (in seconds), ##m (in minutes), ##h (in hours).
<br>NEVER = do not invoke operation <i>deleteOrphanedPrivateFiles</i>
automatically => never delete orphaned private files from the file
system group managed by this service automatically.]]>
</description>
<name>DeleteOrphanedPrivateFilesInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="1m" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningDeleteOrphanedPrivateFiles">
<description>Current state if DeleteOrphanedPrivateFiles task is running. Used to avoid concurrency!
</description>
<name>isRunningDeleteOrphanedPrivateFiles</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getDeleteOrphanedPrivateFilesBatchSize"
setMethod="setDeleteOrphanedPrivateFilesBatchSize">
<description><![CDATA[Limit the number of orphaned private files that are
deleted by one invocation of operation <i>deleteOrphanedPrivateFiles</i>.]]>
</description>
<name>DeleteOrphanedPrivateFilesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getUpdateStudiesBatchSize"
setMethod="setUpdateStudiesBatchSize">
<description><![CDATA[Defines maximal number of studies fetched from the
data base in one transaction by operation
<i>updateFileSystemAvailability</i> and
<i>updateFileSystemRetrieveAETitle</i> for update of <i>Availability</i>
and <i>RetrieveAETs</i> values in Study, Series and Instance records.]]>
</description>
<name>UpdateStudiesBatchSize</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDScheduleStudiesForDeletion"
setMethod="setTimerIDScheduleStudiesForDeletion">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDScheduleStudiesForDeletion</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDDeleteOrphanedPrivateFiles"
setMethod="setTimerIDDeleteOrphanedPrivateFiles">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDDeleteOrphanedPrivateFiles</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getDeleteStudyServiceName"
setMethod="setDeleteStudyServiceName">
<description>Used internally. Do NOT modify. </description>
<name>DeleteStudyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify. </description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getFindScuServiceName"
setMethod="setFindScuServiceName">
<description>Used internally. Do NOT modify. </description>
<name>FindScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>List all configured file systems.</description>
<name>listAllFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[List all configured file systems associated with the
file system group managed by this service.]]>
</description>
<name>listFileSystems</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Return Directory Paths for all configured file
systems associated with the file system group managed by this service
as array of Files.]]>
</description>
<name>listFileSystemDirectories</name>
<return-type>[Ljava.io.File;</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Add RW file system to the file system group managed
by this service. The file system is also linked to existing other file
systems of the group.]]>
</description>
<name>addRWFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Remove empty file system from the file system group
managed by this service. Will fail, if there are already/still file
records associated with the file system.]]>
</description>
<name>removeFileSystem</name>
<parameter>
<description>Directory/Mount Point</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Link or unlink two file systems of the file system
group managed by this service.]]>
</description>
<name>linkFileSystems</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Directory/Mount Point of next file
system or "" to unlink the file system from its successor.
</description>
<name>next</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update RW status of the specified file system. If
the new file system status is "RW+", which defines the file system as
current storage file system, the status of the previous storage file
system is set to "RW", to ensure that there is only one file system in
one file system group with status "RW+".]]>
</description>
<name>updateFileSystemStatus</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system status. Enumerated values: "RW", "RW+","RO".
</description>
<name>status</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update file system availability of the specified file
system.]]>
</description>
<name>updateFileSystemAvailability</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New file system availability. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availability</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Availability of only external retrievable studies. Enumerated values: "ONLINE",
"NEARLINE","OFFLINE", "UNAVAILABLE".
</description>
<name>availabilityOfExternalRetrievable</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update Retrieve AE Title associated to the specified
file system.]]>
</description>
<name>updateFileSystemRetrieveAETitle</name>
<parameter>
<description>Directory/Mount Point file system</description>
<name>dirPath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>New Retrieve AE Title.
</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System</description>
<name>selectStorageFileSystem</name>
<return-type>org.dcm4chex.archive.ejb.interfaces.FileSystemDTO</return-type>
</operation>
<operation impact="ACTION">
<description>Select Storage File System and return Directory</description>
<name>selectStorageDirectory</name>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Switch to next Storage File System (mounted, available and sufficient disk space).<br />
Return true if Storage File System has been changed.
]]></description>
<name>switchFileSystem</name>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update value of attribute
<i>ExpectedDataVolumePerDay</i>, if data volume received during last
24 hours exceeds its current value.]]>
</description>
<name>adjustExpectedDataVolumePerDay</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedules deletion of most infrequently accessed
studies which satisfies the configured set of constraints from writable
file systems of the file system group managed by this service, if they
were not accessed longer than configured
<i>DeleteStudiesNotAccessedFor</i> or if <i>UsableDiskSpace</i> falls
below <i>CurrentDeleterThreshold</i>.
Returns the number of studies scheduled for deletion.]]>
</description>
<name>scheduleStudiesForDeletion</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Schedule deletion of study with specified Study
Instance UID from writable file systems of the file system group managed
by this service, <b>without</b> consideration of the configured set of
constraints. Returns size of study in bytes scheduled for deletion.]]>
</description>
<name>scheduleStudyForDeletion</name>
<parameter>
<description>Study Instance UID.
</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<return-type>long</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Delete orphaned private files from writable file
systems of the file system group managed by this service. Orphaned
private files are the result of deleting instances from the web trash
folder. Returns the number of deleted files.]]>
</description>
<name>deleteOrphanedPrivateFiles</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Show current Deleter criteria.</description>
<name>showDeleterCriteria</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Stop current Deleter Thread. (finish loop even there is still remaining size to delete)</description>
<name>stopCurrentDeleterThread</name>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
<notification>
<description>The notification sent whenever the current storage
file system changed to the next configured storage file system.
</description>
<name>javax.management.Notification</name>
<notification-type>org.dcm4chex.archive.notif.StorageFileSystemSwitched</notification-type>
</notification>
</mbean>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>GPWL Feed Service. Used by dcm4chee-web to add entries to the General Purpose Worklist.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.gpwlscp.GPWLFeedService</class>
<constructor>
<description>The default constructor</description>
<name>GPWLFeedService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getTemplatePath"
setMethod="setTemplatePath">
<description>URL to the directory of worklist entry templates.
</description>
<name>TemplatePath</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-gpwl"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHumanPerformer"
setMethod="setHumanPerformer">
<description>List of human performers for a worklist entry.
</description>
<name>HumanPerformerList</name>
<type>java.lang.String</type>
<descriptors>
<value value="doc1^ABPACS^Dr. Allis,doc2^HUGO^Dr. Suse"/>
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description>Add a new general purpose worklist entry.
</description>
<name>addWorklistItem</name>
<parameter>
<description>study pk</description>
<name>studyPk</name>
<type>java.lang.Long</type>
</parameter>
<parameter>
<description>name of template file</description>
<name>templateFile</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>human performer</description>
<name>humanPerformer</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>scheduled date</description>
<name>scheduleDate</name>
<type>java.lang.Long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>List of templates for worklist entries. (List of all files in TemplateURL)
</description>
<name>listTemplates</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Clear cached list of templates for worklist entries.
</description>
<name>clearTemplateList</name>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>GPWL Feed Service. Used to add entries to the General Purpose Worklist, triggered by received MPPS N-Set messages.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.gpwlscp.GPWLFeedService2</class>
<constructor>
<description>The default constructor</description>
<name>GPWLFeedService2</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getLogStationAETs"
setMethod="setLogStationAETs">
<description><![CDATA[List of the AE titles for Modalities for which
XMLized MPPS attributes are logged into files
<i>AET</i>/<i>timestamp</i>-mpps.xml in the log directory.
Useful for creation of XSL stylesheets for GP Work Item creation.
Separate multiple values by \ (backslash).]]>
</description>
<name>LogStationAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="MESA_MOD\MODALITY1\MR3T"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPGPStationAETs"
setMethod="setPGPStationAETs">
<description><![CDATA[List of the AE titles for Modalities which
emits MPPS messages according the <i>Presentation of Grouped Procedure (PGP)</i>
defined by the <i>IHE Radiology Technical Framework</i>.
Separate multiple values by \ (backslash).]]>
</description>
<name>PGPStationAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="MESA_MOD\MODALITY1\MR3T"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAppendCaseStationAETs"
setMethod="setAppendCaseStationAETs">
<description><![CDATA[List of the AE titles for Modalities which
emits MPPS messages according the <i>Append Case</i>, with multiple
MPPS objects refering the same Scheduled Procedure Step,
<i>Relationship between Scheduled and Performed Procedure Steps</i>
defined by <i>IHE Radiology Technical Framework</i>.
Separate multiple values by \ (backslash).]]>
</description>
<name>AppendCaseStationAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="MESA_MOD\MODALITY1\MR3T"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getWorkItemConfigDir"
setMethod="setWorkItemConfigDir">
<description><![CDATA[Directory where configuration files for
creation of work items are located: if XSL stylesheet "mpps2gpwl.xsl"
exists in this directory or in a sub-directory equal to the AE Title of
the modality, a work item will be created on receive of the last object
refered in the final MPPS, according these stylesheet.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>WorkItemConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIANScuServiceName"
setMethod="setIANScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>IANScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,314 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM General Purpose Worklist related Service Class Providers</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.gpwlscp.GPWLScpService</class>
<constructor>
<description>The default constructor</description>
<name>GPWLScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getCalledAETs" setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \(backslash).
For example, ABPACS\ABPACS2.
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAETs" setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getGeneratePatientID"
setMethod="setGeneratePatientID">
<description><![CDATA[Generate a patient ID from a hash of the patient
name and birth date and/or study instance uid, if the received GP-PPS N-CREATE
message contains no patient ID.
<br>Use ### and/or $$$ as a placeholder for the decimal hash value of patient
name and/or study instance uid. For example, PACS-##########.
<br>NONE = do not generate patient IDs..
<br><i>Issuer of Patient ID</i> for generated <i>Patient IDs</i> will be set to
the <i>Issuer of Patient ID</i> associated to the GP-PPS SCP (=Called) AE by
its AE configuration entry. If no <i>Issuer of Patient ID</i> is configured for
the GP-PPS SCP, <i>Issuer of Patient ID</i> is set to the value configured by
attribute <b>IssuerOfPatientIDGeneratedPatientID</b>.]]>
</description>
<name>GeneratePatientID</name>
<type>java.lang.String</type>
<descriptors>
<value value="PACS-##########"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIssuerOfGeneratedPatientID"
setMethod="setIssuerOfGeneratedPatientID">
<description><![CDATA[<i>Issuer of Patient ID</i> for generated
<i>Patient ID's</i>, if no <i>Issuer of Patient ID</i> is associated with the
GP-PPS SCP (=Called) AE by its AE Configuration entry.]]>
</description>
<name>IssuerOfPatientIDGeneratedPatientID</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementIssuerOfPatientID"
setMethod="setSupplementIssuerOfPatientID">
<description><![CDATA[Supplement received GP-PPS N-CREATE message containing
a <i>Patient ID</i>, but no <i>Issuer of Patient ID</i>, with a value
for <i>Issuer of Patient ID</i>, if such is associated with the
GP-PPS SCU AE by its AE Configuration entry.]]>
</description>
<name>SupplementIssuerOfPatientID</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostName"
setMethod="setSupplementByHostName">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i>
associated to the GP-PPS 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 GP-PPS SCU AE will be considered to determine
the associated <i>Issuer of Patient ID</i>. If there are several
AE configuration entries with matching host name with different
non-zero values for <i>Issuer of Patient ID</i>, no
<i>Issuer of Patient ID</i> will be supplemented.]]>
</description>
<name>SupplementByHostName</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostAddress"
setMethod="setSupplementByHostAddress">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i>
associated to the GP-PPS 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 GP-PPS SCU AE will be considered to determine
the associated <i>Issuer of Patient ID</i>. If there are several
AE configuration entries with matching host name with different
non-zero values for <i>Issuer of Patient ID</i>, no
<i>Issuer of Patient ID</i> will be supplemented.]]>
</description>
<name>SupplementByHostAddress</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received
GP-PPS N-CREATE requests shall be considered for the selection of an existing
Patient record in the archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a attribute name specifies that a missing value in
received DICOM N-CREATE requests 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 GP-PPS
N-CREATE request. Attribute names without question marks specifies, that DICOM
GP-PPS N-CREATE requests 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 GP-PPS N-CREATE request.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-match</i> 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 GP-PPS N-CREATE request *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause GPPPS assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer?[familyname,givenname,middlename?,birthdate]</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?[familyname,givenname,middlename?,birthdate]" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedSOPClasses"
setMethod="setAcceptedSOPClasses">
<description><![CDATA[
List of accepted GPWL related SOP Classes. Use either the SOP Class
UID value, or following defined symbolic names:
GeneralPurposeWorklistInformationModelFIND,
GeneralPurposeScheduledProcedureStepSOPClass,
GeneralPurposePerformedProcedureStepSOPClass,
GeneralPurposeWorklistManagementMetaSOPClass,
]]>
</description>
<name>AcceptedSOPClasses</name>
<type>java.lang.String</type>
<descriptors>
<value value="
GeneralPurposeWorklistInformationModelFIND
GeneralPurposeScheduledProcedureStepSOPClass
GeneralPurposePerformedProcedureStepSOPClass
GeneralPurposeWorklistManagementMetaSOPClass
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAccessBlobAsLongVarBinary"
setMethod="setAccessBlobAsLongVarBinary">
<description>Change JDBC binding for Oracle BLOB's to LONGVARBINARY for
accessing attributes stored in BLOB columns of DB records.
</description>
<name>AccessBlobAsLongVarBinary</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTransactionIsolationLevel"
setMethod="setTransactionIsolationLevel">
<description>Transaction isolation level for queries. Values can be one of:
DEFAULT|READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE.
</description>
<name>TransactionIsolationLevel</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>General Purpose Worklist SCU</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.gpwlscu.GPWLScuService</class>
<constructor>
<description>The default constructor</description>
<name>GPWLScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>The calling AE title.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description>The AE title of the general purpose worklist used for find. Use LOCAL
if the DICOM general purpose worklist is provided by the archive and can be accessed
directly from the database.
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="LOCAL"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="isLocal">
<description>This value is is set to true if the &lt;b&gt;CalledAETitle&lt;/b&gt; attribute is set to LOCAL.
</description>
<name>Local</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority for C-Find requests. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Get a list of general purpose worklist entries.
</description>
<name>findGPWLEntries</name>
<parameter>
<description>Dataset for C-Find</description>
<name>searchDS</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Delete a general purpose worklist entry.
</description>
<name>deleteGPWLEntry</name>
<parameter>
<description>ID of general purpose worklist entry (Scheduled Procedure Step ID)</description>
<name>spsID</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>ADT HL7 Service</v>. Receives and processes incoming
ADT messages, based on which messages are accepted as defined in the
MessageTypes attribute. If a patient record does not exist in the database
about the patient in the incoming ADT message, one is created.<br/>
Note that ADT^A10 messages do not affect the patient record, but instead
checks if pending worklist items exist for this patient in the worklist
managed by the archive, and if so, changes the status of worklist item to
<tt>ARRIVED</tt>.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.ADTService</class>
<constructor>
<description>The default constructor</description>
<name>ADTService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getMessageTypes"
setMethod="setMessageTypes">
<description><![CDATA[Comma separated list of Message Types handled by
this service.]]>
</description>
<name>MessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A01,ADT^A04,ADT^A05,ADT^A08,ADT^A10,ADT^A23,ADT^A28,ADT^A31,ADT^A34,ADT^A40,ADT^A47" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientArrivingMessageType"
setMethod="setPatientArrivingMessageType">
<description><![CDATA[Message Type for Patient Arriving.
Messages of this type will cause to change the status of Scheduled
Procedure Steps for this patient in the modality worklist from SCHEDULED
to ARRIVED<br/>
The message type must be also listed in configured <i>MessageTypes</i>
handled by this service.]]>
</description>
<name>PatientArrivingMessageType</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A10" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeletePatientMessageType"
setMethod="setDeletePatientMessageType">
<description><![CDATA[Message Type for deletion of a Patient record.
Messages of this type will cause to delete a Patient, which all
associated entities, in particular including his/her studies, from the
system.<br/>
The message type must be also listed in configured <i>MessageTypes</i>
handled by this service.]]>
</description>
<name>DeletePatientMessageType</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A23" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMergeMessageTypes"
setMethod="setPatientMergeMessageTypes">
<description><![CDATA[Comma separated list of message types for merge of
two Patients. Messages of this type will cause to merge two Patients.<br/>
The message type must be also listed in configured <i>MessageTypes</i>
handled by this service.]]>
</description>
<name>PatientMergeMessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A40" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getChangePatientIdentifierListMessageType"
setMethod="setChangePatientIdentifierListMessageType">
<description><![CDATA[Message Type for change of the Patient Identifier
List of one Patient.<br/>
The message type must be also listed in configured <i>MessageTypes</i>
handled by this service.]]>
</description>
<name>ChangePatientIdentifierListMessageType</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A47" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPixUpdateNotificationMessageType"
setMethod="setPixUpdateNotificationMessageType">
<description><![CDATA[Message Type for PIX Update Notification.
Messages of this type <b>and</b> without (non-whitespace) Patient Name
(PID-5) will be interpreted as PIX Update Notification according <i>IHE
Transaction ITI-10</i> specified in the <i>IHE IT Infrastructure
Technical Framework</i>. <i>IHE Transaction ITI-10</i> specifies
<code>ADT^A31</code> as message type for PIX Update Notification.<br/>
The message type must be also listed in configured <i>MessageTypes</i>
handled by this service.]]>
</description>
<name>PixUpdateNotificationMessageType</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A31" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIssuersOfOnlyOtherPatientIDs"
setMethod="setIssuersOfOnlyOtherPatientIDs">
<description><![CDATA[Comma separated list of Issuers/Authorities,
which only qualifies Other Patient IDs - and NOT primary Patient IDs.
Patient IDs in PIX Update Notifications with such Issuer/Authority will
NOT cause to create a new Patient Record, in the case that there is no
Patient Record with such primary Patient ID]]>
</description>
<name>IssuersOfOnlyOtherPatientIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value="SSN" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIgnoredIssuersOfPatientIDPattern"
setMethod="setIgnoredIssuersOfPatientIDPattern">
<description><![CDATA[A regular expression of Issuer patterns to ignore
in PIX Update Notifications, or "NONE". Any Issuer of Patient ID that
matches the pattern will be removed from the list of patient identifiers
before the updates are applied to the database.]]>
</description>
<name>IgnoredIssuersOfPatientIDPattern</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received HL7
ADT messages are considered for selecting existing Patient records in the
archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a field name specifies that a missing value in
received HL7 ADT messages will match with any value for that field in
existing Patient Records, as Patient Records with missing values for that field
will match with any value for that field in received HL7 ADT messages. Field
names without question marks specifies, that HL7 ADT messages without values
for such fields will not match any existing Patient Record, and Patient Records
without values for such fields will not get selected on receive of any HL7 ADT
message.
<p>
Surrounding <i>demograhic-match</i> 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
HL7 ADT message *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause update/deletion of wrong patient or creation of doublets.<br/>
Furthermore, the consideration of demographic fields for the selection of
existing Patient records disables the update of such Patient Demographics
attributes by HL7 ADT messages!
<p>Default: <code>pid,issuer?</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplateDir"
setMethod="setTemplateDir">
<description><![CDATA[Directory where template file(s) are located.<br />
A style sheet can be placed in this directory or in a sub-directory to select a style sheet according to the sender.<br />
This sub-directory can be &lt;IPAddr&gt;, &lt;hostname&gt; or '&lt;Sending Application&gt;^&lt;Sending Facility&gt;' (In this order).<br />
(See also UseHostSubdirs attribute in HL7Server service to enable IP/hostname selection)<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>TemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPidStylesheet"
setMethod="setPidStylesheet">
<description><![CDATA[Stylesheet for HL7 PID to DICOM Patient Module mapping. <br />
Base dir: <code>TemplateDir</code><br/>
If this name contains a '/' or '\' the configured <code>TemplateDir</code> will be NOT applied!
In this case the name is the full path of the stylesheet and a relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>PidStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid2dcm.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMrgStylesheet"
setMethod="setMrgStylesheet">
<description><![CDATA[Stylesheet for HL7 MRG to DICOM Patient Module mapping.<br />
Base dir: <code>TemplateDir</code><br/>
If this name contains a '/' or '\' the configured <code>TemplateDir</code> will be NOT applied!
In this case the name is the full path of the stylesheet and a relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>MrgStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="mrg2dcm.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isIgnoreDeleteErrors"
setMethod="setIgnoreDeleteErrors">
<description>Ignore errors processing ADT^A23 messages (delete patient).
</description>
<name>IgnoreDeleteErrors</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isHandleEmptyMrgAsUpdate"
setMethod="setHandleEmptyMrgAsUpdate">
<description><![CDATA[Handle ADT messages with empty MGR segment as update.<br/>
This will allow processing of update/delete/arrived messages wich
contains an irregular empty MRG segment. (Missing MRG-1: Prior Patient ID)
]]></description>
<name>HandleEmptyMrgAsUpdate</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isKeepPriorPatientAfterMerge"
setMethod="setKeepPriorPatientAfterMerge">
<description><![CDATA[Keep prior patient after Patient Merge.<br/>
This will allow to get correct patient information even the received DICOM objects contains a patient id of an merged patient.<br />
If disabled, the prior patient will be deleted.
]]></description>
<name>KeepPriorPatientAfterMerge</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getContentEditServiceName"
setMethod="setContentEditServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>ContentEditServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>HL7 Cmd Service</b> Executes a command on receiving HL7 messages. <br/>
The cmd is generated via XSLT from HL7 message.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.HL7CmdService</class>
<constructor>
<description>The default constructor</description>
<name>HL7CmdService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCmdStylesheet"
setMethod="setCmdStylesheet">
<description><![CDATA[Stylesheet for HL7 to command mapping.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.<br/>
Use NONE to disable this Service. <br/>
e.g. 'conf/dcm4chee-hl7/hl72cmd.xsl']]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>MDM HL7 Service</b> converts MDM^T02/T10 messages
conveying a Base64 encoded PDF document according IHE Transaction CARD-7:
Encapsulated Report Submission, into DICOM encapsulated PDF documents,
so they can be retrieved by DICOM Retrieve or IHE RID.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.MDMService</class>
<constructor>
<description>The default constructor</description>
<name>MDMService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getMessageTypes"
setMethod="setMessageTypes">
<description>Comma separated list of Message Types handled by this Service.
</description>
<name>MessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="MDM^T02,MDM^T10" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplateDir"
setMethod="setTemplateDir">
<description><![CDATA[Directory where template file(s) are located.<br />
A style sheet can be placed in this directory or in a sub-directory to select a style sheet according to the sender.<br />
This sub-directory can be &lt;IPAddr&gt;, &lt;hostname&gt; or '&lt;Sending Application&gt;^&lt;Sending Facility&gt;' (In this order).<br />
(See also UseHostSubdirs attribute in HL7Server service to enable IP/hostname selection)<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>TemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Stylesheet for HL7 MDM^T02/T10 to DICOM Encapsulated
PDF mapping. <br/>
Base dir: <code>TemplateDir</code><br/>
If this name contains a '/' or '\' the configured <code>TemplateDir</code> will be NOT applied!
In this case the name is the full path of the stylesheet and a relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="mdm2pdf.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStorePriority"
setMethod="setStorePriority">
<description>Store priority. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>StorePriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getExportManagerName"
setMethod="setExportManagerName">
<description>Used internally - do NOT modify.
</description>
<name>ExportManagerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[ORM HL7 Service. Create, update or delete entries of
the Modality Worklist provided by [Modality Worklist SCP] according to
received ORM^O01 messages. Generally, this service is used if the connected
RIS cannot provide the modality worklist.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.ORMService</class>
<constructor>
<description>The default constructor</description>
<name>ORMService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getMessageTypes"
setMethod="setMessageTypes">
<description>Comma separated list of Message Types handled by this Service.
</description>
<name>MessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="ORM^O01" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getOrderControlOperationMap"
setMethod="setOrderControlOperationMap">
<description><![CDATA[Maps Order Control (Order Status) or - if no Order
Status is specified - Order Control (Result Status) in received ORM
to Operation to perform. This controls what happens to worklist items.
<p><b>Syntax:</b><br/>
map = entry+<br/>
entry = orderContol [ '(' orderStatus ')' ] ':' operation<br/>
operation = 'NW' (* create worklist item(s) *)<br/>
| 'XO' (* update worklist item(s) *)<br/>
| 'XO(' ('SCHEDULED' | 'ARRIVED' | 'READY' | 'STARTED' | 'COMPLETED' | 'DISCONTINUED') ')' (* update worklist item(s) and set status *)<br/>
| 'CA' (* remove worklist item(s) *)<br/>
| 'SC(' ('SCHEDULED' | 'ARRIVED' | 'READY' | 'STARTED' | 'COMPLETED' | 'DISCONTINUED') ')' (* update status of worklist item(s) *)<br/>
| 'NOOP' (* no operation *)</p>
]]>
</description>
<name>OrderControlOperationMap</name>
<type>java.lang.String</type>
<descriptors>
<value value="
NW:NW
XO:XO
XO(SC):XO(SCHEDULED)
XO(CM):XO(COMPLETED)
CA:CA
OC:CA
DC:SC(DISCONTINUED)
OD:SC(DISCONTINUED)
SC(IP):SC(STARTED)
SC(CM):SC(COMPLETED)
SC(DC):SC(DISCONTINUED)
SC(CA):CA
SC:NOOP
" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCreateMissingOrderOnStatusChange"
setMethod="setCreateMissingOrderOnStatusChange">
<description><![CDATA[Create a new order if a 'Status Changed (SC)' order message
(see <i>OrderControlOperationMap</i>) for an unknown order is received.<br />
Default behaviour (<i>false</i>) is to ignore such SC messages.
]]></description>
<name>CreateMissingOrderOnStatusChange</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateRequestAttributesForXO"
setMethod="setUpdateRequestAttributesForXO">
<description><![CDATA[Update Request Attributes if XO message is received after instances/MPPS are received.<br />
If disabled, Attributes are only updated by NW and CA messages.<br />
You should only enable this feature if the Order Filler fully supports linking via ORM messages.<br />
Note: Request Attributes will be also updated if the order is created for an update message (XO or SC,
see <i>OrderControlOperationMap</i> and <i>CreateMissingOrderOnStatusChange</i>)
]]></description>
<name>UpdateRequestAttributesForXO</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateDifferentPatientOfExistingStudy"
setMethod="setUpdateDifferentPatientOfExistingStudy">
<description><![CDATA[Controls the behavior on receive of an order
message to an already performed procedure (=matching Study Instance UID),
where the Patient referenced in the HL7 order message differs from the Patient
referenced in the DICOM Performed Procedure Step message(s) received before:
<br/>If <b>UpdateDifferentPatientOfExistingStudy</b>=<tt>true</tt>, already
existing DICOM Performed Procedure Step(s) and DICOM Study for that order will
be moved to the Patient referenced in the HL7 order message.
<br/>If <b>UpdateDifferentPatientOfExistingStudy</b>=<tt>false</tt>, the HL7
order message will be rejected, if the referenced Patient differs from the
Patient associated with an already existing Performed Procedure Step(s) for
that order.]]></description>
<name>UpdateDifferentPatientOfExistingStudy</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received HL7
ORM messages are considered for selecting existing Patient records in the
archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a field name specifies that a missing value in
received HL7 ORM messages will match with any value for that field in
existing Patient Records, as Patient Records with missing values for that field
will match with any value for that field in received HL7 ORM messages. Field
names without question marks specifies, that HL7 ORM messages without values
for such fields will not match any existing Patient Record, and Patient Records
without values for such fields will not get selected on receive of any HL7 ORM
message.
<p>
Surrounding <i>demograhic-match</i> 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
HL7 ORM message *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause assignments of Modality Worklist Items
to wrong patient.<br/>
Furthermore, the consideration of demographic fields for the selection of
existing Patient records disables the update of such Patient Demographics
attributes by HL7 ORM messages!
<p>Default: <code>pid,issuer?</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDefaultStationName"
setMethod="setDefaultStationName">
<description>Scheduled Station Name in generated MWL item,
if there is no device configured for the scheduled protocol.
</description>
<name>DefaultStationName</name>
<type>java.lang.String</type>
<descriptors>
<value value="UNKOWN" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDefaultStationAET"
setMethod="setDefaultStationAET">
<description>Scheduled Station AET in generated MWL item,
if there is no device configured for the scheduled protocol.
</description>
<name>DefaultStationAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="UNKOWN" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDefaultModality"
setMethod="setDefaultModality">
<description>Modality in generated MWL item, if the ORM message
does not contain modality information and if there is also no device
configured for the scheduled protocol.
</description>
<name>DefaultModality</name>
<type>java.lang.String</type>
<descriptors>
<value value="OT" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplateDir"
setMethod="setTemplateDir">
<description><![CDATA[Directory where template file(s) are located.<br />
A stylesheet can be placed in this directory or in a sub-directory equal to '&lt;Sending Application&gt;^&lt;Sending Facility&gt;'.<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>TemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Name of stylesheet for HL7 ORM^O01 to DICOM MWL mapping.<br />
Base dir: <code>TemplateDir</code><br/>
If this name contains a '/' or '\' the configured <code>TemplateDir</code> will be NOT applied!
In this case the name is the full path of the stylesheet and a relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="orm2dcm.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMWL2StoreConfigDir"
setMethod="setMWL2StoreConfigDir">
<description><![CDATA[Directory where configuration file(s)
for coercion of request attributes in already stored instances are located:
if there is a XSL stylesheet "mwl-cfindrsp2cstorerq.xsl" in this directory
or in a sub-directory equal to the AE Title of the Storage SCU, attributes
of already received instances from this SCU will be coerced according
these stylesheet(s) on create or update of worklist item(s).
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>MWL2StoreConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeviceServiceName"
setMethod="setDeviceServiceName">
<description>Used internally - do NOT modify.
</description>
<name>DeviceServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>ORU HL7 Service</b> converts ORU^R01 messages
into DICOM structured reports, so a viewer can just use the PACS system to
access the report.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.ORUService</class>
<constructor>
<description>The default constructor</description>
<name>ORUService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getMessageTypes"
setMethod="setMessageTypes">
<description>Comma separated list of Message Types handled by this Service.
</description>
<name>MessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="ORU^R01" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplateDir"
setMethod="setTemplateDir">
<description><![CDATA[Directory where template file(s) are located.<br />
A style sheet can be placed in this directory or in a sub-directory to select a style sheet according to the sender.<br />
This sub-directory can be &lt;IPAddr&gt;, &lt;hostname&gt; or '&lt;Sending Application&gt;^&lt;Sending Facility&gt;' (In this order).<br />
(See also UseHostSubdirs attribute in HL7Server service to enable IP/hostname selection)<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>TemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Name of Stylesheet for HL7 ORU^R01 to DICOM SR mapping.<br />
Base dir: <code>TemplateDir</code><br/>
If this name contains a '/' or '\' the configured <code>TemplateDir</code> will be NOT applied!
In this case the name is the full path of the stylesheet and a relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="oru2sr.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getObxIgnoreStati"
setMethod="setObxIgnoreStati">
<description><![CDATA[List of OBX Stati that should be ignored by this service. <br/>
Seperate multiple stati with ','.<br/>
Use NONE to process all ORU messages<p/>
Default field number in OBX segment is 11 (OBSERV RESULT STATUS).
You can change the default by preceeding '&lt;fieldNr&gt;:'<br/>
e.g.: 'D,X' ignore all ORU message with status D and X in OBX field 11 <br/>
'8:A' ignore all ORU messages with A in OBX field 8 (Abnormal Flags)]]>
</description>
<name>ObxIgnoreStati</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStorePriority"
setMethod="setStorePriority">
<description>Store priority. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>StorePriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getExportManagerName"
setMethod="setExportManagerName">
<description>Used internally. Do NOT modify.
</description>
<name>ExportManagerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally. Do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Process XML message</description>
<name>process</name>
<parameter>
<name>msg</name>
<type>org.dom4j.Document</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,425 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>HL7 Send Service</b> emits messages to HL7
receivers. It can be configured to forward messages received by the
[#HL7 Server] to other systems. It is also used by the <i>XDS-I Information
Source Service</i> to query the <i>Patient Identifier Cross-reference
Manager</i> to find out the identification of a patient in different Patient
Identifier Domains.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.HL7SendService</class>
<constructor>
<description>The default constructor</description>
<name>HL7SendService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-only" getMethod="getCharsetName">
<description><![CDATA[Charset of incoming and outgoing HL7 messages as
specified by the corresponding attribute of the associated HL7 Server
Service.]]>
</description>
<name>CharsetName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getSendingApplication"
setMethod="setSendingApplication">
<description>Sending Application in transmitted messages.
</description>
<name>SendingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendingFacility"
setMethod="setSendingFacility">
<description>Sending Facility in transmitted messages.
</description>
<name>SendingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getForwardingRules"
setMethod="setForwardingRules">
<description>List of forwarding rules.
Format:=['['CONDITION[,..]']'](DESTINATION[,..]|NONE)
CONDITION:=(sending|receiving|msgtype)[!]=value['|'...]
DESTINATION:=APPLICATION^FACILITY
</description>
<name>ForwardingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="[sending=PACS_NODEXX^ABPACS]PACS_CENTRAL^ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description>Number and intervalls of retries of failed
HL7 forward requests by a list of comma separated NUMBERxINTERVAL pairs.
The intervall can be specified in seconds (##s), minutes (##m),
hours (##h) or days (##d).
</description>
<name>RetryIntervalls</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximal number of concurrent forwarded messages.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getForwardTemplateDir"
setMethod="setForwardTemplateDir">
<description><![CDATA[Directory where template file(s) are located
to change the original HL7 message before forwarding it.<br />
A style sheet can be message type specific ("hl7forward_&lt;MSG Type&gt;^&lt;Event Type&gt;.xsl" or "hl7forward_&lt;MSG Type&gt;.xsl")
or generic "hl7forward.xsl"
and placed in this directory or in a sub-directory to select a style sheet according to the sender.<br />
This sub-directory can be &lt;IPAddr&gt;, &lt;hostname&gt; or '&lt;Receiving Application&gt;^&lt;Receiving Facility&gt;' (In this order).<br />
(See also UseHostSubdirs attribute in HL7Server service to enable IP/hostname selection)<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>ForwardTemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcTimeout"
setMethod="setAcTimeout">
<description>Acknowledge timeout in ms. 0 = no timeout.
</description>
<name>AcTimeout</name>
<type>int</type>
<descriptors>
<value value="10000" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in ms after receive of acknowledge message.
</description>
<name>SoCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isAuditPIXQuery"
setMethod="setAuditPIXQuery">
<description>
Controls if Audit Records are emitted for invoked PIX Queries (HL7
QBP^Q23).
</description>
<name>AuditPIXQuery</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally - do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally - do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Forward HL7 message according configured Forwarding Rules</description>
<name>forward</name>
<parameter>
<description>HL7 message as byte array</description>
<name>hl7msg</name>
<type>[B</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Send HL7 message to specified destination and evaluate received ACK</description>
<name>sendTo</name>
<parameter>
<description>HL7 message as byte array</description>
<name>hl7msg</name>
<type>[B</type>
</parameter>
<parameter>
<description>Destination. Format: ReceivingApplication^ReceivingFacility</description>
<name>receiving</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Send/Forward HL7 message with message Type and Patient data</description>
<name>sendHL7PatientXXX</name>
<parameter>
<description>Patient data (Dataset)</description>
<name>patient</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Type of message (ADT^A02,ADT^A03,..)</description>
<name>msgType</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Sending. Format: SendingApplication^SendingFacility</description>
<name>sender</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Destination. Format: ReceivingApplication^ReceivingFacility</description>
<name>destination</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Select false if the message should be sent directly or true to send via forwarding rules.</description>
<name>useForward</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Send/Forward HL7 Patient Merge message.</description>
<name>sendHL7PatientMerge</name>
<parameter>
<description>Dominant Patient data (Dataset)</description>
<name>dominant</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>List of prior patients</description>
<name>priorPats</name>
<type>[Lorg.dcm4che.data.Dataset;</type>
</parameter>
<parameter>
<description>Sending. Format: SendingApplication^SendingFacility</description>
<name>sender</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Destination. Format: ReceivingApplication^ReceivingFacility</description>
<name>destination</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Enable/disable forwarding (using forward rules) instead of send direct (local)</description>
<name>useForward</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Send HL7 QBP^Q23 (=Query corresponding Patient ID) message.</description>
<name>sendQBP_Q23</name>
<parameter>
<description>PIX Manager Application^Facility</description>
<name>PIXManager</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Message Query Name (QPD-1)</description>
<name>PIXQueryName</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Assigning Authority:
&lt;namespace ID&gt;&&lt;universal ID&gt;&&lt;universal ID type&gt;]]>
</description>
<name>authority</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>List of returned domains (What domains returned).
</description>
<name>domains</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Send HL7 QBP^Q22 (=Query Patients, PDQ) message.</description>
<name>sendQBP_Q22</name>
<parameter>
<description>PDQ Manager Application^Facility</description>
<name>PDQManager</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Query Parameters</description>
<name>params</name>
<type>java.util.Map</type>
</parameter>
<parameter>
<description>Domain for Patient IDs returned</description>
<name>domain</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Maximum number of entries to return. Will cause the last list entry to be the next continuation code.</description>
<name>count</name>
<type>int</type>
</parameter>
<parameter>
<description>Continuation flag.</description>
<name>continuation</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Show HL7 QBP^Q22 (=Query Patients, PDQ) message response. Intended for test purposes
to ensure the service is working - use the sendQBP_Q22 method from code.</description>
<name>showQBP_Q22</name>
<parameter>
<description>PDQ Manager Application^Facility</description>
<name>PDQManager</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Query Parameters</description>
<name>query</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Domain for Patient IDs returned</description>
<name>domain</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Send HL7 message from a Dataset given in a file.<br/>
The XSL stylesheet given by filename is used to transform the dataset into a HL7 message.
]]></description>
<name>sendHl7FromDataset</name>
<parameter>
<description>Filename of a Dataset file</description>
<name>dsFilename</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Filename of the XSLT stylesheet</description>
<name>xslFilename</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Sender in format: &lt;SendingApplication&gt;^&lt;SendingFacility&gt;]]></description>
<name>sender</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Receiver in format: &lt;ReceivingApplication&gt;^&lt;ReceivingFacility&gt;]]>
</description>
<name>receiver</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Send HL7 message from a Dataset to given reveiver.<br/>
The receiver (except LOCAL^LOCAL) must be configured in AE Managment!
The XSL stylesheet given as Templates object is used to transform the Dataset into a HL7 message.
]]></description>
<name>sendHl7FromDataset</name>
<parameter>
<description>Dataset</description>
<name>ds</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Templates object of an XSLT stylesheet</description>
<name>tpl</name>
<type>javax.xml.transform.Templates</type>
</parameter>
<parameter>
<description><![CDATA[Sender in format: &lt;SendingApplication&gt;^&lt;SendingFacility&gt;]]></description>
<name>sender</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Receiver in format: &lt;ReceivingApplication&gt;^&lt;ReceivingFacility&gt;]]>
</description>
<name>receiver</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,381 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[HL7 Server: Dispatch incoming HL7 messages to
registered HL7 services. When configuring, select the TCP listening port,
the security protocol for communication, timeouts, and the maximum number of
connected HL7 senders.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.HL7ServerService</class>
<constructor>
<description>The default constructor</description>
<name>HL7ServerService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCharsetName"
setMethod="setCharsetName">
<description><![CDATA[Specifies Charset of incoming and outgoing HL7
messages by its name as listed in the
<a href="http://www.iana.org/assignments/character-sets">
<i>IANA Charset Registry</i></a> (e.g. <code>ISO-8859-1</code>).]]>
</description>
<name>CharsetName</name>
<type>java.lang.String</type>
<descriptors>
<value value="ISO-8859-1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPort"
setMethod="setPort">
<!-- Network -->
<description>TCP listening port. This is the most important value in
the service, and by default is set to 2575.
</description>
<name>Port</name>
<type>int</type>
<descriptors>
<value value="2575" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLocalAddress"
setMethod="setLocalAddress">
<description>Local interface IP address to listen for TCP communication. 0.0.0.0 indicates all active interfaces.
</description>
<name>LocalAddress</name>
<type>java.lang.String</type>
<descriptors>
<value value="0.0.0.0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getProtocolName"
setMethod="setProtocolName">
<!-- Security -->
<description><![CDATA[Enable Transport Security Layer (TLS) mode:<ul>
<li><tt>mllp</tt> - plain <i>Minimal Lower Level Protocol</i>; <b>no</b> TLS</li>
<li><tt>mllp-tls</tt> - accept TLS connections; offer AES or DES encryption</li>
<li><tt>mllp-tls.aes</tt> - accept TLS connections; force AES or DES encryption</li>
<li><tt>mllp-tls.3des</tt> - accept TLS connections; force DES encryption</li>
<li><tt>mllp-tls.nodes</tt> - accept TLS connections without encryption</li>
</ul>]]>
</description>
<name>ProtocolName</name>
<type>java.lang.String</type>
<descriptors>
<value value="mllp" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoTimeout"
setMethod="setSoTimeout">
<description>Socket timeout in ms. 0 = no timeout.
This value determines how long the server is waiting for receiving
the next message on an open connection before it closes the idle connection.
HL7 senders (typical part of the RIS) typically keeps the connection
open between emitted messages, and some interprets a close of the idle
connection by the server as serious system failure. So the timeout value
may be configured quite large. Default: 600000 (=10min).
</description>
<name>SoTimeout</name>
<type>int</type>
<descriptors>
<value value="600000" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNoopMessageTypes"
setMethod="setNoopMessageTypes">
<description>Comma separated list of Message Types which are accepted
even if no HL7 Service is registered to actual process the message.
By setting this value, you avoid to reject messages, which are not
processed by the application.
</description>
<name>NoopMessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="ADT^A02,ADT^A03,ADT^A06,ADT^A07,ADT^A12,ADT^A13" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSuppressErrorResponse"
setMethod="setSuppressErrorResponse">
<description><![CDATA[Activates suppression of Application Reject or
Application Error as acknowledgment code but always returns acknowledgment
code AA (=Application Accept), even if the processing of the message fails.]]>
</description>
<name>SuppressErrorResponse</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSendNotification"
setMethod="setSendNotification">
<description>Activates notification of registered listeners about received
HL7 messages. Required for message forwarding by HL7 Send service and
for prefetch of studies on receive of ORM^O01 messages by the Prefetch
Service.
</description>
<name>SendNotification</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isFileReceivedHL7"
setMethod="setFileReceivedHL7">
<description><![CDATA[Activates writing received HL7 messages into file
(format: hl7-######.hl7, with ###### as the sequence number of the
received message since last application start) in log directory.
Useful to analyse HL7 encoding errors in incoming messages, which causes
the conversion of the message to XML for further processing to fail.]]>
</description>
<name>FileReceivedHL7</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isFileReceivedHL7OnError"
setMethod="setFileReceivedHL7OnError">
<description><![CDATA[Activates writing received HL7 messages, which
were rejected or which processing failed, into file (format: hl7-######.hl7,
with ###### as the sequence number of the received message since last
application start) in directory specified by <i>ErrorLogDirectory</i>]]>
</description>
<name>FileReceivedHL7OnError</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getErrorLogDirectory"
setMethod="setErrorLogDirectory">
<description><![CDATA[Directory to which HL7 messages which are rejected
or which processing fails are filed. Only effective if
<i>FileReceivedHL7OnError</i> = <code>true</code>.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>ErrorLogDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="log/hl7err" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isFileReceivedHL7AsXML"
setMethod="setFileReceivedHL7AsXML">
<description><![CDATA[Activates writing received and XMLized HL7 messages
into file (format: hl7-######.xml, with ###### as the sequence number of
the received message since last application start) in log directory.
Useful to test customized XSL stylesheets used by individual HL7 Services.]]>
</description>
<name>FileReceivedHL7AsXML</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxClients"
setMethod="setMaxClients">
<description>Maximal number of simultaneously connected HL7 senders.
</description>
<name>MaxClients</name>
<type>int</type>
<descriptors>
<value value="50" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getNumClients">
<description>Current number of connected HL7 senders.
</description>
<name>NumClients</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getMaxIdleThreads"
setMethod="setMaxIdleThreads">
<description>Maximal number of idle threads.
</description>
<name>MaxIdleThreads</name>
<type>int</type>
<descriptors>
<value value="5" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getNumIdleThreads">
<description>Current number of idle threads.
</description>
<name>NumIdleThread</name>
<type>int</type>
</attribute>
<attribute access="read-only"
getMethod="getNumberOfReceivedMessages">
<description><![CDATA[Number of received HL7 messages since last restart
of the application. Used for naming of log files, if logging of incoming
HL7 messages is activated by <b>FileReceivedHL7</b> or
<b>FileReceivedHL7AsXML</b>.]]>
</description>
<name>NumberOfReceivedMessages</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getAckStylesheet"
setMethod="setAckStylesheet">
<description><![CDATA[Stylesheet for generated ACK messages.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>AckStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7/msh2ack.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLogStylesheet"
setMethod="setLogStylesheet">
<description><![CDATA[Stylesheet for logging of received HL7 messages.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>LogStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7/logmsg.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplateDir"
setMethod="setTemplateDir">
<description><![CDATA[Directory where template file(s) are located
to preprocess the received HL7 message.<br />
A style sheet can be message type specific ("preprocess_&lt;MSG Type&gt;^&lt;Event Type&gt;.xsl" or "preprocess_&lt;MSG Type&gt;.xsl")
or generic "preprocess.xsl"
and placed in this directory or in a sub-directory to select a style sheet according to the sender.<br />
This sub-directory can be &lt;IPAddr&gt;, &lt;hostname&gt; or '&lt;Sending Application&gt;^&lt;Sending Facility&gt;' (In this order).<br />
(See also UseHostSubdirs attribute in HL7Server service to enable IP/hostname selection)<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>PreprocessTemplateDir</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUseHostSubdirs"
setMethod="setUseHostSubdirs">
<description><![CDATA[Enable selection of style sheets depending on IP address/hostname.<br />
If disabled, only Sending Application and Sending Facility can be used to select style sheet
depending on message sender but eliminates need of DNS lookup to get hostname.
]]></description>
<name>UseHostSubdirs</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally - do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Register HL7 Service</description>
<name>registerService</name>
<parameter>
<description>Message Type accepted by this service</description>
<name>messageType</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>HL7 Service</description>
<name>service</name>
<type>org.dcm4chex.archive.hl7.HL7Service</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Log Message</description>
<name>logMessage</name>
<parameter>
<description>Message</description>
<name>message</name>
<type>org.dom4j.Document</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,276 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Hanging Protocol SCP</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.dcm.hpscp.HPScpService</class>
<constructor>
<description>The default constructor</description>
<name>HPScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \(backslash).
For example, ABPACS\ABPACS2.
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isSendPendingMoveRSP" setMethod="setSendPendingMoveRSP">
<description>Return optional C-Move Response DICOM message with pending status.
</description>
<name>SendPendingMoveResponse</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAcTimeout" setMethod="setAcTimeout">
<description>A-Associate accept timeout in milliseconds. 0 = no timeout.
</description>
<name>AcceptTimeout</name>
<type>int</type>
<descriptors>
<value value="10000"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDimseTimeout" setMethod="setDimseTimeout">
<description>DIMSE message timeout in milliseconds. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="60000"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSoCloseDelay" setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after an A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueryAccessBlobAsLongVarBinary"
setMethod="setQueryAccessBlobAsLongVarBinary">
<description>Change JDBC binding for Oracle BLOB's to LONGVARBINARY for
accessing attributes stored in BLOB columns of DB records on query.
Only effective with Oracle as DB.
</description>
<name>QueryAccessBlobAsLongVarBinary</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetrieveAccessBlobAsLongVarBinary"
setMethod="setRetrieveAccessBlobAsLongVarBinary">
<description>Change JDBC binding for Oracle BLOB's to LONGVARBINARY for
accessing attributes stored in BLOB columns of DB records on retrieve.
Only effective with Oracle as DB.
</description>
<name>RetrieveAccessBlobAsLongVarBinary</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueryTransactionIsolationLevel"
setMethod="setQueryTransactionIsolationLevel">
<description>Transaction isolation level for queries. Values can be one of:
DEFAULT|READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE
</description>
<name>QueryTransactionIsolationLevel</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetrieveTransactionIsolationLevel"
setMethod="setRetrieveTransactionIsolationLevel">
<description>Transaction isolation level for retrieves. Values can be one of:
DEFAULT|READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE
</description>
<name>RetrieveTransactionIsolationLevel</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,268 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[CAStor-Based HSM Module Service.<br/>
This module uses CAStor as a storage for study tarballs.<br/>
It stores each study tarball as an unnamed object on the CAStor cluster. That object is identified
by a UUID, and can later be retrieved at <br/>
http://<i>cluster-address</i>:80/<i>uuid</i>
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.module.castor.CAStorHSMModule</class>
<constructor>
<description>The default constructor</description>
<name>CAStorHSMModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getHostname"
setMethod="setHostname">
<description><![CDATA[The hostname of the CAStor server (Primary Access Node).
]]></description>
<name>Hostname</name>
<type>java.lang.String</type>
<descriptors>
<value value="castor"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPort"
setMethod="setPort">
<description><![CDATA[The port of the CAStor server for SCSP communications.
]]></description>
<name>Port</name>
<type>int</type>
<descriptors>
<value value="80"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxConnectionPoolSize"
setMethod="setMaxConnectionPoolSize">
<description><![CDATA[The maximum connection pool size used by the SCSP client. The recommended value is
the number of threads multiplied by the number of CAStor cluster nodes.
]]></description>
<name>MaxConnectionPoolSize</name>
<type>int</type>
<descriptors>
<value value="5"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxRetries"
setMethod="setMaxRetries">
<description><![CDATA[The maximum number of retries that the SCSP client is allowed.
]]></description>
<name>MaxRetries</name>
<type>int</type>
<descriptors>
<value value="4"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConnectionTimeout"
setMethod="setConnectionTimeout">
<description><![CDATA[The connection timeout (in seconds) used by the SCSP client.
]]></description>
<name>ConnectionTimeout</name>
<type>int</type>
<descriptors>
<value value="120"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPoolTimeout"
setMethod="setPoolTimeout">
<description><![CDATA[The pool timeout (in seconds) used by the SCSP client.
]]></description>
<name>PoolTimeout</name>
<type>int</type>
<descriptors>
<value value="300"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLocatorRetryTimeout"
setMethod="setLocatorRetryTimeout">
<description><![CDATA[The locator retry timeout (in seconds) used by the SCSP client.
]]></description>
<name>LocatorRetryTimeout</name>
<type>int</type>
<descriptors>
<value value="300"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIncomingDir"
setMethod="setIncomingDir">
<description><![CDATA[The directory where study tarballs are temporarily saved after they are retrieved
from CAStor by the <b>TarRetriever</b> service. A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.
]]></description>
<name>IncomingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-incoming"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getOutgoingDir"
setMethod="setOutgoingDir">
<description><![CDATA[The directory where study tarballs are temporarily saved before they are sent to
CAStor by the <b>FileCopy</b> service. A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.
]]></description>
<name>OutgoingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-ougoing"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetentionPeriod"
setMethod="setRetentionPeriod">
<description><![CDATA[The period of time for which a study must remain in nearline storage before being
deleted, e.g. "52w" or "365d".
]]></description>
<name>RetentionPeriod</name>
<type>java.lang.String</type>
<descriptors>
<value value="1827d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from HSM.
(Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Query status of file in HSM.</description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,303 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Command based HSM Module for File Copy Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.module.HSMCommandModule</class>
<constructor>
<description>The default constructor</description>
<name>HSMCommandModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCopyCommand"
setMethod="setCopyCommand">
<description><![CDATA[External command to copy files or tarballs to the destination,
with
<br>%p will be replaced by the path of file/tarball to copy,
<br>%d will be replaced by the destination file system name,
<br>%f will be replaced by the destination filename
<br>Alternatively a suffix of ':%f' specifies, that the filename
on the destination file system shall be returned from the command
in stdout.
<br>NONE = write tarball on local accessable file system.
]]>
</description>
<name>CopyCommand</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getOutgoingDir"
setMethod="setOutgoingDir">
<description><![CDATA[Directory from which files/tarballs shall be copied
by external <b>CopyCommand</b>. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>OutgoingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-outgoing"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchCommand"
setMethod="setFetchCommand">
<description><![CDATA[External command to fetch files/tarballs from the source
file system, with
<br />%d will be replaced by the source file system name,
<br />%f will be replaced by the path of tarball on the source file system,
<br />%p will be replaced by the destination path.
<br />NONE = TAR file on local accessable file system.
<br />Note: The destination file given with %p always exists and must be overwritten!
]]>
</description>
<name>FetchCommand</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIncomingDir"
setMethod="setIncomingDir">
<description><![CDATA[Directory in which files/tarballs shall be retrieved
by external <b>FetchCommand</b>. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.
Not effective if FetchCommand=<code>NONE<code>]]>
</description>
<name>IncomingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-incoming"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueryCommand"
setMethod="setQueryCommand">
<description><![CDATA[Command to query status of specific file.
<br>%d will be replaced by file system name (directory path/mount point),
<br>%f will be replaced by the file path,
<br>%i will be replaced by user info associated with the file system.
]]>
</description>
<name>QueryCommand</name>
<type>java.lang.String</type>
<descriptors>
<value value="mmls %i/%f"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPattern"
setMethod="setPattern">
<description><![CDATA[Regular expression, applied to stdout of
command. Result determines if status is changed to MatchFileStatus
or NoMatchFileStatus.
]]>
</description>
<name>Pattern</name>
<type>java.lang.String</type>
<descriptors>
<value value=".*\bArchived\b.*"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCommandFailedFileStatus"
setMethod="setCommandFailedFileStatus">
<description>New file status, if the query command could not be executed.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>CommandFailedFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNonZeroExitFileStatus"
setMethod="setNonZeroExitFileStatus">
<description>New file status, if query command returns non-zero exit code.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>NonZeroExitFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="QUERY_HSM_FAILED"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNoMatchFileStatus"
setMethod="setNoMatchFileStatus">
<description>New file status, if the query result does NOT match specified pattern.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>NoMatchFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMatchFileStatus"
setMethod="setMatchFileStatus">
<description>New file status, if the query result does match specified pattern.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>MatchFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="ARCHIVED"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from HSM. (Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Query status of file in HSM.</description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
<operation impact="INFO">
<description>Apply pattern to given string</description>
<name>applyPattern</name>
<parameter>
<name>string</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,268 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[File Based HSM Module Service.<br/>
This File Based Module supports a WORM (write once, read many) like storage.<br/>
Therefore the file is set to readonly.<br/>
The access time of the file is set to current date + RetentionTime to indicate how long
a file should be in WORM state.
(This feature must be supported by the underlying filesystem/storage!)<br/>
This module supports synchronization of file status by checking existence
of files with specific extendions (see StatusExtensions and queryStatus).
This Module is able to handle tar retrievals from FileSystems, which have got a dicey IO behaviour.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.module.dicey.DiceyFSModule</class>
<constructor>
<description>The default constructor</description>
<name>DiceyFSModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getIncomingDir"
setMethod="setIncomingDir">
<description><![CDATA[Directory in which files/tarballs shall be retrieved.
A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.
]]>
</description>
<name>IncomingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-incoming"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReadTimeout"
setMethod="setReadTimeout">
<description>Read TimeOut for file access [seconds]</description>
<name>ReadTimeOut</name>
<type>int</type>
<descriptors>
<value value="30"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetentionTime"
setMethod="setRetentionTime">
<description><![CDATA[Time in y (years), M (month) or d (days) a modification / deletion of a file is not permitted.<br/>
Use a leading '+' to set access time after the file is set ReadOnly. (default is before ;
Please ensure that your filesystem/command allows setting access time when file is ReadOnly!)
]]></description>
<name>RetentionTime</name>
<type>java.lang.String</type>
<descriptors>
<value value="3y"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAccessTimeCmd"
setMethod="setAccessTimeCmd">
<description><![CDATA[External command to set Access Time of a file (retention), with
<br>%f will be replaced by the file
<br>%d will be replaced by the retention date (current date + retentionTime)
<br>NONE = Access Time of file will not be changed.
]]>
</description>
<name>AccessTimeCmd</name>
<type>java.lang.String</type>
<descriptors>
<value value="touch -a -t %d %f"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPattern"
setMethod="setPattern">
<description><![CDATA[Date pattern that is used to format retention date for %d in AccessTimeCmd.]]>
</description>
<name>DatePattern</name>
<type>java.lang.String</type>
<descriptors>
<value value="yyyyMMddhhmm"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStatusExtensions"
setMethod="setStatusExtensions">
<description><![CDATA[File extension to File Status mapping.<br/>
Used in queryStatus to get actual status of a file.
Enumerated status values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED<br/>
Format: &lt;extension&gt;=&lt;status&gt;<br/>
A entry without &lt;extension&gt;= is used if no file with configured extension exists.
This could also be set to NONE (do not change the file status).
]]></description>
<name>StatusExtensions</name>
<type>java.lang.String</type>
<descriptors>
<value value="
.archived=ARCHIVED
NONE
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCheckMD5forStatusChange"
setMethod="setCheckMD5forStatusChange">
<description>Enable verification of tar files when a status file (file with status extension) exists.
Set file status to MD5_CHECK_FAILED (-3) if verify failed.
</description>
<name>CheckMD5forStatusChange</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMountFailedCheckFile"
setMethod="setMountFailedCheckFile">
<description><![CDATA[If the specified file exists in the root of an filesystem, this signals a failed mount.]]>
</description>
<name>MountFailedCheckFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NO_MOUNT" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from HSM. (Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Query status of file in HSM.<br/>
Check the existence of a file with extensions configured in
StatusExtensions and set the corresponding status.
]]></description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File Path</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,242 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[File Based HSM Module Service.<br/>
This File Based Module supports a WORM (write once, read many) like storage.<br/>
Therefore the file is set to readonly.<br/>
The access time of the file is set to current date + RetentionTime to indicate how long
a file should be in WORM state.
(This feature must be supported by the underlying filesystem/storage!)<br/>
This module supports synchronization of file status by checking existence
of files with specific extendions (see StatusExtensions and queryStatus).
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.module.HSMFileBasedModule</class>
<constructor>
<description>The default constructor</description>
<name>HSMFileBasedModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getRetentionTime"
setMethod="setRetentionTime">
<description><![CDATA[Time in y (years), M (month) or d (days) a modification / deletion of a file is not permitted.<br/>
Use a leading '+' to set access time after the file is set ReadOnly. (default is before ;
Please ensure that your filesystem/command allows setting access time when file is ReadOnly!)
]]></description>
<name>RetentionTime</name>
<type>java.lang.String</type>
<descriptors>
<value value="3y"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAccessTimeCmd"
setMethod="setAccessTimeCmd">
<description><![CDATA[External command to set Access Time of a file (retention), with
<br>%f will be replaced by the file
<br>%d will be replaced by the retention date (current date + retentionTime)
<br>NONE = Access Time of file will not be changed.
]]>
</description>
<name>AccessTimeCmd</name>
<type>java.lang.String</type>
<descriptors>
<value value="touch -a -t %d %f"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPattern"
setMethod="setPattern">
<description><![CDATA[Date pattern that is used to format retention date for %d in AccessTimeCmd.]]>
</description>
<name>DatePattern</name>
<type>java.lang.String</type>
<descriptors>
<value value="yyyyMMddhhmm"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStatusExtensions"
setMethod="setStatusExtensions">
<description><![CDATA[File extension to File Status mapping.<br/>
Used in queryStatus to get actual status of a file.
Enumerated status values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED<br/>
Format: &lt;extension&gt;=&lt;status&gt;<br/>
A entry without &lt;extension&gt;= is used if no file with configured extension exists.
This could also be set to NONE (do not change the file status).
]]></description>
<name>StatusExtensions</name>
<type>java.lang.String</type>
<descriptors>
<value value="
.archived=ARCHIVED
NONE
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCheckMD5forStatusChange"
setMethod="setCheckMD5forStatusChange">
<description>Enable verification of tar files when a status file (file with status extension) exists.
Set file status to MD5_CHECK_FAILED (-3) if verify failed.
</description>
<name>CheckMD5forStatusChange</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMountFailedCheckFile"
setMethod="setMountFailedCheckFile">
<description><![CDATA[If the specified file exists in the root of an filesystem, this signals a failed mount.]]>
</description>
<name>MountFailedCheckFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NO_MOUNT" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from HSM. (Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Query status of file in HSM.<br/>
Check the existence of a file with extensions configured in
StatusExtensions and set the corresponding status.
]]></description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File Path</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[HSM Module to map HSM Modules to Filesystem ID's.<br/>
This service can be used to handle different HSM storage systems
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hsm.module.MappedHSMModule</class>
<constructor>
<description>The default constructor</description>
<name>MappedHSMModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getModuleMapping"
setMethod="setModuleMapping">
<description><![CDATA[Define mapping between FilesystemID and HSMModule.<br/>
Format:&lt;fsID&gt;=&lt;HSMModule Service Name&gt;[&lt;newline&gt;&lt;fsID&gt;=&lt;...&gt;[..]]<br/>
Use 'NONE' to disable mapping.<br/>
Example: <br/>
tar:/store1=dcm4chee.archive:service=FileCopyHSMModule,type=Command<br/>
tar:/store2=dcm4chee.archive:service=FileCopyHSMModule,type=FileBased
]]>
</description>
<name>ModuleMapping</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from HSM. (Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Query status of file in HSM.</description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Migrate a HSM Filesystem to another HSM Filesystem.<br />
Mapped HSMModule (<i>service=FileCopyHSMModule,type=Mapped</i>) must be configured for
the file system specific HSM modules.<br/>
This service copies all tar files with file status DEFAULT, TO_ARCHIVE and ARCHIVED from
<i>SourceFileSystem</i> to <i>TargetFileSystem</i>.<br/>
Migrated source files are marked with file status MIGRATED or MIGRATION_FAILED.<br/>
Source and Target files can be verified by enabling <i>VerifySourceTar</i> and/or <i>VerifyTargetTar</i>.<br/>
Note: the source files get file status MD5_CHECK_FAILED if verification of source tar file failed!<br/>
The source file entities (not the real files) can be removed by specifying <i>RemoveSrcOnTargetFileStatus</i>
and <i>RemoveTaskInterval</i>.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hsm.HSMMigrateService</class>
<constructor>
<description>The default constructor</description>
<name>HSMMigrateService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getSourceFileSystem"
setMethod="setSourceFileSystem">
<description><![CDATA[Directory/Mount Point of the source File System. <br />
NONE = disable this service.]]>
</description>
<name>SourceFileSystem</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getSourceFileSystemPk">
<description>Primary of the source File System.</description>
<name>SourceFileSystemPk</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTargetFileSystem"
setMethod="setTargetFileSystem">
<description><![CDATA[Directory/Mount Point of the target File System. <br />
NONE = disable this service.]]>
</description>
<name>TargetFileSystem</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getTargetFileSystemPk">
<description>Primary of the target File System.</description>
<name>TargetFileSystemPk</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTargetFileStatus"
setMethod="setTargetFileStatus">
<description>File status of created files in target file system.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>TargetFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isVerifySourceTar"
setMethod="setVerifySourceTar">
<description><![CDATA[Enables verification of source tar file.<br />
If enabled the tar file is verified by <br />
1) checking MD5 sums of the tar content.<br />
2) check if tar file contains the file.<br />
Only applicable if filesystem is a tar filesystem!
]]></description>
<name>VerifySourceTar</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isVerifyTargetTar"
setMethod="setVerifyTargetTar">
<description><![CDATA[Enables verification of the target tar file.<br />
If enabled the tar file is verified by <br />
1) checking MD5 sums of the tar content.<br />
2) check if tar file contains the file.<br />
Only applicable if filesystem is a tar filesystem!
]]></description>
<name>VerifyTargetTar</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRemoveSrcOnTargetFileStatus"
setMethod="setRemoveSrcOnTargetFileStatus">
<description><![CDATA[File status of files in target file system to allow remove of source file entities.<br />
NONE: Disable remove of source files.<br />
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED
]]></description>
<name>RemoveSrcOnTargetFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueryStatusMode"
setMethod="setQueryStatusMode">
<description><![CDATA[Mode how file status of target tar files are queried for 'remove source files' task.<br/>
Enumerated values: <br/>
NEVER.....Don't query file status of tar file. (status must be updated via SyncFileStatus service)<br />
ALWAYS....Always query status. (recheck if status is already <i>RemoveSrcOnTargetFileStatus</i> or an error stati)<br/>
ON_WRONG..Only query status if current status is not <i>RemoveSrcOnTargetFileStatus</i>
]]></description>
<name>QueryStatusMode</name>
<type>java.lang.String</type>
<descriptors>
<value value="ON_WRONG"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTaskIntervalMigrate"
setMethod="setTaskIntervalMigrate">
<description><![CDATA[Interval in which migration task is performed.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no migration should be performed
<br><i>to</i> = end hour (0-23) when no migration should be performed
<br>NEVER = disable migration of HSM file systems
<br>Example:<br>1h!9-17 means every hour,
migrate tar files, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can perform HSM migration outside of peak hours.
]]>
</description>
<name>MigrationTaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTaskIntervalRetry"
setMethod="setTaskIntervalRetry">
<description><![CDATA[Interval in which 'retry migration' task is performed.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no retry should be performed
<br><i>to</i> = end hour (0-23) when no retry should be performed
<br>NEVER = disable retry
]]>
</description>
<name>RetryTaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTaskIntervalRemove"
setMethod="setTaskIntervalRemove">
<description><![CDATA[Interval in which 'remove source files' task is performed.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no 'remove source files' should be performed
<br><i>to</i> = end hour (0-23) when no 'remove source files' should be performed
<br>NEVER = disable remove of source files
]]>
</description>
<name>RemoveTaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLastPksFirst"
setMethod="setLastPksFirst">
<description>Migrate newer files first.
</description>
<name>LastFilesFirst</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCreateNewTargetFilename"
setMethod="setCreateNewTargetFilename">
<description><![CDATA[Create new target filename. <br />
Should be used if source filename is only a UID (e.g. Centera) and target filesystem is file based.
]]></description>
<name>CreateNewTargetFilename</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getOffsetForRemove">
<description>Current DB offset for checking tar files for removal.
</description>
<name>OffsetForRemove</name>
<type>int</type>
</attribute>
<attribute access="read-only"
getMethod="getOffsetForRetry">
<description>Current DB offset for retry MIGRATION_FAILED source files.
</description>
<name>OffsetForRetry</name>
<type>int</type>
</attribute>
<attribute access="read-write"
getMethod="getLimitNumberOfFilesPerMigrateTask"
setMethod="setLimitNumberOfFilesPerMigrateTask">
<description>Maximum number of tar files which are migrated in one run.
</description>
<name>NumberOfFilesPerMigrateTask</name>
<type>int</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLimitNumberOfFilesPerRemoveTask"
setMethod="setLimitNumberOfFilesPerRemoveTask">
<description>Maximum number of tar files for which file entities are removed from source filesystem in one run.
</description>
<name>NumberOfFilesPerRemoveTask</name>
<type>int</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of parallel migration tasks.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxChunkSize"
setMethod="setMaxChunkSize">
<description>Maximum chunk size in MB to copy migration files. (limited by available heap memory)
</description>
<name>MaxChunkSize</name>
<type>long</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isQueryRunning">
<description>Current state if query to get migration tasks is running. Used to avoid concurrency!
</description>
<name>isQueryRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if migration task is running. Used to avoid concurrency!
</description>
<name>isMigrationRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-only"
getMethod="isRemoveSourceRunning">
<description>Current state if remove source files task is running. Used to avoid concurrency!
</description>
<name>isRemoveRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDHSMMigrate"
setMethod="setTimerIDHSMMigrate">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDHSMMigrate</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDHSMRetry"
setMethod="setTimerIDHSMRetry">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDHSMRetry</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDHSMRemove"
setMethod="setTimerIDHSMRemove">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDHSMRemove</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getHSMModuleServicename"
setMethod="setHSMModuleServicename">
<description>Used internally. Do NOT modify.
</description>
<name>HSMModuleServicename</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Start a migration task.<br />
Return number of migrated files or <br />
-1 if migration is already running (Timer)<br />
]]></description>
<name>migrate</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Start a retry (retry source files with status MIGRATION_FAILED) task.<br />
Return number of migrated files or <br />
-1 if migration is already running (Timer)<br />
]]></description>
<name>retry</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Start Removing source file entities.<br />
Return number of removed files or <br />
-1 if it is already running <br />
]]></description>
<name>removeSourceFiles</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Show current status of migration.</description>
<name>showMigrationStatus</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>URI based HSM Module for File Copy Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hsm.module.uri.HSMURIModule</class>
<constructor>
<description>The default constructor</description>
<name>HSMURIModule</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getRetentionTime"
setMethod="setRetentionTime">
<description><![CDATA[Time in y (years), M (month) or d (days) a modification / deletion of a file is not permitted.<br/>
Use a leading '+' to set access time after the file is set ReadOnly. (default is before ;
Please ensure that your filesystem/command allows setting access time when file is ReadOnly!) Set value to 0 to leave retention time as is.
]]></description>
<name>RetentionTime</name>
<type>java.lang.String</type>
<descriptors>
<value value="3y"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDestinationFilePathFormat"
setMethod="setDestinationFilePathFormat">
<description><![CDATA[Destination file path, with 'yyyy' will be replaced by the current year, 'MM' by the current month, 'dd' by the current date, 'HH' by the current hour and 'mm' by the current minute.
<br><code>NONE</code> = use default values (yyyy/M/d/HH) provided by system.
]]>
</description>
<name>DestinationFilePathFormat</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getOutgoingDir"
setMethod="setOutgoingDir">
<description><![CDATA[Directory from which files/tarballs shall be copied
by external <b>CopyCommand</b>. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>OutgoingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-outgoing" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getIncomingDir"
setMethod="setIncomingDir">
<description><![CDATA[Directory in which files/tarballs shall be retrieved
by external <b>FetchCommand</b>. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>IncomingDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-incoming" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getStatusExtensions" setMethod="setStatusExtensions">
<description><![CDATA[File extension to File Status mapping.<br/>
Used in queryStatus to get actual status of a file.
Enumerated status values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED<br/>
Format: &lt;extension&gt;=&lt;status&gt;<br/>
A entry without &lt;extension&gt;= is used if no file with configured extension exists.
This could also be set to NONE (do not change the file status).
]]></description>
<name>StatusExtensions</name>
<type>java.lang.String</type>
<descriptors>
<value value="
.archived=ARCHIVED
NONE
"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCheckCommand"
setMethod="setCheckCommand">
<description><![CDATA[External command to verify stored tar-files. Tar-file is retreived to local storage and CheckCommand is executed with tar-file as parameter. CheckCommand should exit with ZERO on succes and non-ZERO on failure. Set to <code>NONE</code> to check for existance (and filesize larger 0) only.]]>
</description>
<name>CheckCommand</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileStoredStatus"
setMethod="setFileStoredStatus">
<description>New file status, file is confirmed on URI.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED,
QUERY_HSM_FAILED
</description>
<name>FileStoredStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileNotStoredStatus"
setMethod="setFileNotStoredStatus">
<description>New file status, file could not be confirmed on URI.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED,
QUERY_HSM_FAILED
</description>
<name>FileNotStoredStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSshPrivateKeyFile"
setMethod="setSshPrivateKeyFile">
<description><![CDATA[Private-key-file for ssh key-based authentication. This only applies for ssh-URIs when password is not provided. (Example: <code>id_rsa</code>)
]]>
</description>
<name>SshPrivateKeyFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileCopyServiceName"
setMethod="setFileCopyServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>FileCopyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Prepare File for storage to HSM. Return File Object that is used in FileCopy Service.<br/>
]]></description>
<name>prepareHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Store given File to HSM. Return filename (fileID)</description>
<name>storeHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Called if FileCopy failed.</description>
<name>failedHSMFile</name>
<parameter>
<description>File to store in HSM</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Fetch a File from HSM.</description>
<name>fetchHSMFile</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Called from TarRetriever to finish Fetch of a File from
HSM. (Cleanup temporary resources)</description>
<name>fetchHSMFileFinished</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File object (returned from fetchHSMFile)</description>
<name>file</name>
<type>java.io.File</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Query status of file in HSM.</description>
<name>queryStatus</name>
<parameter>
<description>File system ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File path relative to file system (fsID)</description>
<name>filePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>User info associated with the file system</description>
<name>userInfo</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Instance Availability Notification SCP. Updates Instances
Availability in DB records for instances only retrievable from external AE
on receive of a DICOM Instance Availability Notification N-CREATE request.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.ianscp.IANScpService</class>
<constructor>
<description>The default constructor</description>
<name>IANScpService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \(backslash).
For example, ABPACS\ABPACS2.
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,294 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>IAN/SCN SCU Service. Used to notify DICOM peers about available instances for Instance Available Notifications and Study Content Notifications.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.ianscu.IANScuService</class>
<constructor>
<description>The default constructor</description>
<name>IanScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getNotifiedAETs" setMethod="setNotifiedAETs">
<description>List of AE titles of notified application entities, separated by \(backslash).
NONE = do not notify any application entity.
</description>
<name>NotifiedAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="isEnabled" >
<description>IAN Enabled? IAN SCU is enabled if NotifiedAETitles and/or Mpps2IanDestinationStylesheet not NONE</description>
<name>isEnabled</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="isNotifyOtherServices"
setMethod="setNotifyOtherServices">
<description><![CDATA[Enables notification of other services about the
event, that all objects referenced in a MPPS COMPLETE message became
available in the archive. Must be activated, if XDS-I auto-publishing
feature is used.<br />
Standard services which are notified: XDS-I, ExportManager, UPSFeed, GPWLFeed]]>
</description>
<name>NotifyOtherServices</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSendOneIANforEachMPPS"
setMethod="setSendOneIANforEachMPPS">
<description>Send IAN not before having received the last instance of the
instance set referenced in the MPPS. Otherwise send IAN already when
receiving the last instance of a Series or when the association over
which instances were received is closed by the sender.
</description>
<name>SendOneIANforEachMPPS</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isOnMppsLinkedEnabled"
setMethod="setOnMppsLinkedEnabled">
<description>Enable sending of IAN when MPPS was linked with MWL.
</description>
<name>OnMppsLinkedEnabled</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AE title used in the Association Request.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description>Number and intervals of retries for failed
Instance Available or Study Content Notification requests. &lt;br&gt;Format:
&lt;br&gt;Comma separated list of &lt;i&gt;number&lt;/I&gt; x &lt;i&gt;interval&lt;/I&gt; pairs.
&lt;br&gt;The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
&lt;br&gt;Example:
&lt;br&gt;5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isOfferStudyContentNotification" setMethod="setOfferStudyContentNotification">
<description>Offer Basic Study Content Notification Service - additionally
to the Instance Available Notification Service - in the Association Request.
</description>
<name>OfferStudyContentNotification</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isPreferInstanceAvailableNotification" setMethod="setPreferInstanceAvailableNotification">
<description>Prefer the use of the Instance Available Notification Service if
the Instance Available Notification and Basic Study Content Notification
Service is supported by the remote application entity.
</description>
<name>PreferInstanceAvailableNotification</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent sent notifications.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Stylesheet to get (additional) destinations from MPPS informations. <br />
The output must contain a &lt;destination aet="DEST" &gt; element for each destination.
Use NONE to disable this feature.<br />
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Mpps2IanDestinationStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getScnPriority" setMethod="setScnPriority">
<description>Priority used in Basic Study Content Notification Requests.
Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>StudyContentNotificationPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetrieveURI" setMethod="setRetrieveURI">
<description>Retrieve URI of this system. This value will be added to IAN dataset in attribute (0040,E010).
NONE = do not add Retrieve URI(0040,E010).
</description>
<name>RetrieveURI</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetrieveLocationUID" setMethod="setRetrieveLocationUID">
<description>Retrieve Location UID of this system. This value will be added to IAN dataset in attribute (0040,E011).
NONE = do not add Retrieve Location UID(0040,E011).
</description>
<name>RetrieveLocationUID</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do not modify.</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getDeleteStudyServiceName"
setMethod="setDeleteStudyServiceName">
<description>Used internally. Do not modify.
</description>
<name>DeleteStudyServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getContentEditServiceName"
setMethod="setContentEditServiceName">
<description>Used internally. Do not modify.
</description>
<name>ContentEditServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>schedule IAN for instances of specified study</description>
<name>scheduleIANforStudy</name>
<parameter>
<description>Study Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>schedule IAN for instances of specified series</description>
<name>scheduleIANforSeries</name>
<parameter>
<description>Series Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>schedule random IAN for testing</description>
<name>scheduleRandomIAN</name>
<parameter>
<description>Retrieve AE Title of all referenced instances</description>
<name>retrieveAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Availability (ONLINE, NEARLINE , OFFLINE or NOT AVAILABLE)
of all referenced instances</description>
<name>availability</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Number of referenced Series</description>
<name>numSeries</name>
<type>int</type>
</parameter>
<parameter>
<description>Number of referenced Instances per referenced Series</description>
<name>numInstancesPerSeries</name>
<type>int</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Notify other services about IAN. (can be also called from web3 after link/unlink)</description>
<name>notifyOtherServices</name>
<parameter>
<description>MPPS attributes</description>
<name>mpps</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[JMS Service used by other Services to register and
unregister JMS Message Listeners on JMS Queues and to schedule JMS messages]]>
</description>
<descriptors>
<persistence persistPolicy="Never"/>
<!--persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/-->
</descriptors>
<class>org.dcm4chex.archive.mbean.JMSService</class>
<constructor>
<description>The default constructor</description>
<name>JMSService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description>Register MessageListener on JMS Queue</description>
<name>startListening</name>
<parameter>
<description>Queue Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Message Listner</description>
<name>listener</name>
<type>javax.jms.MessageListener</type>
</parameter>
<parameter>
<description>Receiver count</description>
<name>receiverCount</name>
<type>int</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Unregister MessageListener from JMS Queue</description>
<name>stopListening</name>
<parameter>
<description>Queue Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Send Message to JMS Queue</description>
<name>queue</name>
<parameter>
<description>Queue Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Message Object</description>
<name>obj</name>
<type>java.io.Serializable</type>
</parameter>
<parameter>
<description>JMS Priority</description>
<name>priority</name>
<type>int</type>
</parameter>
<parameter>
<description>Scheduled Delivery Time</description>
<name>scheduledTime</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Indicate Message has exceeded maximum retry attempts</description>
<name>fail</name>
<parameter>
<description>Originating Queue Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Message Object</description>
<name>obj</name>
<type>java.io.Serializable</type>
</parameter>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Service for generating Key Objects.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.KeyObjectService</class>
<constructor>
<description>The default constructor</description>
<name>KeyObjectService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCompositeSopClassUIDs"
setMethod="setCompositeSopClassUIDs">
<description><![CDATA[List of composite SOP Classes. <br/>
Instances with a Class UID of this list are marked with <i>Value Type</i> <b>COMPOSITE</b>. ]]>
</description>
<name>CompositeSopClassUIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getWaveformSopClassUIDs"
setMethod="setWaveformSopClassUIDs">
<description><![CDATA[List of Waveform SOP Classes. <br/>
Instances with a Class UID of this list are marked with <i>Value Type</i> <b>WAVEFORM</b>. ]]>
</description>
<name>WaveformSopClassUIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileSystemGroupID"
setMethod="setFileSystemGroupID">
<description>ID of file system group, on which generated
KeyObjects are stored by operation storeAndRegister().
</description>
<name>FileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE_STORAGE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Creates a KeyObject Dataset for given list of Instance UIDs.</description>
<name>getKeyObject</name>
<parameter>
<description>List of SOP Instance UIDs separated with ',' or '|'</description>
<name>iuids</name>
<type>java.lang.String</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>Creates a KeyObject Dataset for given list of Instance UIDs.</description>
<name>getKeyObject</name>
<parameter>
<description>List of SOP Instance UIDs</description>
<name>iuids</name>
<type>java.util.Collection</type>
</parameter>
<parameter>
<description>Dataset with Attributes of Key object root node. (e.g. Concept Name Code Sequence for title)</description>
<name>rootInfo</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>List of Items for Content Sequence</description>
<name>contentItems</name>
<type>java.util.Collection</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>Creates a KeyObject Dataset for given Study.</description>
<name>getKeyObject</name>
<parameter>
<description>Primary key of Study</description>
<name>studyPk</name>
<type>long</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>Creates a KeyObject Dataset for given Study.</description>
<name>getKeyObject</name>
<parameter>
<description>Primary key of Study</description>
<name>studyPk</name>
<type>long</type>
</parameter>
<parameter>
<description>Dataset with Attributes of Key object root node. (e.g. Concept Name Code Sequence for title)</description>
<name>rootInfo</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>List of Items for Content Sequence</description>
<name>contentItems</name>
<type>java.util.Collection</type>
</parameter>
<return-type>org.dcm4che.data.Dataset</return-type>
</operation>
<operation impact="ACTION">
<description>Stores a KeyObject and registers it in the database.</description>
<name>storeAndRegister</name>
<parameter>
<description>The KeyObject</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,352 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[
Lossy Compression Service. The Lossy Compression Service supports delayed,
JPEG Lossy compression of received images.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.LossyCompressionService</class>
<constructor>
<description>The default constructor</description>
<name>LossyCompressionService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write" getMethod="getSourceFileSystemGroupID"
setMethod="setSourceFileSystemGroupID">
<description><![CDATA[Group ID of file systems which are scanned
for image files to compress in configured <b>TaskInterval</b>.]]>
</description>
<name>SourceFileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDestinationFileSystemGroupID"
setMethod="setDestinationFileSystemGroupID">
<description><![CDATA[Group ID of writable file systems to which lossy
compressed images are stored.]]>
</description>
<name>DestinationFileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="LOSSY_STORAGE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTaskInterval"
setMethod="setTaskInterval">
<description><![CDATA[Interval in which the database is checked for image
files located on file systems of the configured
<b>SourceFileSystemGroupID</b> to compress.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##s (in seconds), ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no compression should be performed
<br><i>to</i> = end hour (0-23) when no compression should be performed
<br>NEVER = disable automatic compression
<br>Example:10s!9-17 means every 10 seconds, poll the database and check
for images to compress, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can ensure compression of
images happens outside of peak imaging hours.]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if compression task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getLimitNumberOfFilesPerTask"
setMethod="setLimitNumberOfFilesPerTask">
<description>Maximum number of files that are compressed in
one task.</description>
<name>LimitNumberOfFilesPerTask</name>
<type>int</type>
<descriptors>
<value value="1000" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCompressionRules"
setMethod="setCompressionRules">
<description><![CDATA[Specifies compression rules for particular SOP Class, Body Part Examined, Source AE Title.
<br>
<br>Format: <i>sop-class-name-or-uid</i>:<i>body-part</i>:<i>source-aet</i>:<i>delay</i>:<i>quality</i>:<i>description</i>:<i>ratio</i>:<i>near</i>
<br>
<br><i>sop-class-name-or-uid</i> = the UID of the SOP class, or a string name defined in the dictionary.xml file under uids type="SOPClass"
<br>
<br><i>body-part</i> = Body Part Examined or '*'
<br>
<br><i>source-aet</i> = Source AE Title
<br>
<br><i>delay</i> = compression delay in minutes (##m), hours (##h) or days (##d)
<br>
<br><i>quality</i> = compression quality between 0 (= lowest image quality / highest compression ratio) and 1.0 (= highest quality / lowest compression ratio)
<br>
<br><i>description</i> = description stored in attribute <i>Derivation Description (0008,2111)</i> of compressed DICOM image
<br>
<br><i>ratio</i> = estimated compression ratio stored in attribute <i>Lossy Image Compression Ratio (0028,2112)</i> of compressed DICOM image
<br>
<br><i>near</i> = maximal absolute derivation of pixel sample values by lossy compression+decompression. -1 = disables validation of compressed images
]]>
</description>
<name>CompressionRules</name>
<type>java.lang.String</type>
<descriptors>
<value
value="
ComputedRadiographyImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
DigitalXRayImageStorageForPresentation:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
DigitalXRayImageStorageForProcessing:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
DigitalMammographyXRayImageStorageForPresentation:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
DigitalMammographyXRayImageStorageForProcessing:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
CTImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
MRImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
UltrasoundImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
UltrasoundMultiframeImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
UltrasoundImageStorageRetired:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
UltrasoundMultiframeImageStorageRetired:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
SecondaryCaptureImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
XRayAngiographicImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
XRayRadiofluoroscopicImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
NuclearMedicineImageStorage:*:MOD_AET:5d:0.75:JPEG Lossy Compression with quality=0.75:5.0:64;
" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getExternalRetrieveAET"
setMethod="setExternalRetrieveAET">
<description><![CDATA[Constrains lossy compression to objects which are
external retrievable from specified Application Entity.
<br>'-' = no such constrain.]]>
</description>
<name>ExternalRetrieveAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCopyOnFSGroupID"
setMethod="setCopyOnFSGroupID">
<description><![CDATA[Constrains lossy compression to objects for which
there is a copy available on a file system of the specified file system
group. Only effective if <b>ExternalRetrieveAETitle</b> = '-'.
<br>'-' = no such constrain.]]>
</description>
<name>CopyOnOtherFileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSourceAET"
setMethod="setSourceAET">
<description><![CDATA[Source AE Title used by operation
<b>compressSeriesJPEGLossy</b> for new created Series.]]>
</description>
<name>SourceAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSeriesDescription"
setMethod="setSeriesDescription">
<description><![CDATA[Series Description used by operation
<b>compressSeriesJPEGLossy</b> for new created Series. '{}' will
be replaced by Series Description of uncompressed objects.]]>
</description>
<name>SeriesDescription</name>
<type>java.lang.String</type>
<descriptors>
<value value="JPEG Lossy compressed {}" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of write byte buffer. </description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTempDir"
setMethod="setTempDir">
<description><![CDATA[Directory to spool decompressed already lossless
compressed files for its lossy compression. Relative path names are
resolved relative to $ABPACS_HOME/server/default/.]]>
</description>
<name>TempDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tmp" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getFileSystemMgtServiceNamePrefix"
setMethod="setFileSystemMgtServiceNamePrefix">
<description>Used internally. Do NOT modify.
</description>
<name>FileSystemMgtServiceNamePrefix</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getTimerIDCheckFilesToCompress"
setMethod="setTimerIDCheckFilesToCompress">
<description>Used internally. Do NOT modify. </description>
<name>TimerIDCheckFilesToCompress</name>
<type>java.lang.String</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Compress specified file JPEG Lossy with specified quality.
Prompts Compression Ratio, measured on file length and on bits per pixel.
</description>
<name>compressFileJPEGLossy</name>
<parameter>
<name>inFilePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>outFilePath</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>compressionQuality</name>
<type>float</type>
</parameter>
<parameter>
<name>derivationDescription</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>estimatedCompressionRatio</name>
<type>float</type>
</parameter>
<parameter>
<name>newSOPInstanceUID</name>
<type>boolean</type>
</parameter>
<parameter>
<name>newSeriesInstanceUID</name>
<type>boolean</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Compress specified Series located on file systems of
the configured <b>SourceFileSystemGroupID</b> JPEG Lossy with specified
quality. Prompts number of compressed images and minimum/average/maximum
Compression Ratio, measured on file length and on bits per pixel. If
decompress = True, also prompts minimum/average/maximum of maximal absolute
derivation of pixel sample values in decompressed images.]]>
</description>
<name>compressSeriesJPEGLossy</name>
<parameter>
<description>Series Instance UID of Series to compress</description>
<name>seriesIUID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Compression quality in the range 0.0 - 1.0.</description>
<name>compressionQuality</name>
<type>float</type>
</parameter>
<parameter>
<description>Description stored in Derivation Description (0008,2111) of
compressed images.</description>
<name>derivationDescription</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Estimated Compression Ratio stored in Lossy Image
Compression Ratio (0028,2112) of compressed images.</description>
<name>estimatedCompressionRatio</name>
<type>float</type>
</parameter>
<parameter>
<description>Decompress lossy compressed images and calculate maximal
absolute derivation of pixel sample values.</description>
<name>decompress</name>
<type>boolean</type>
</parameter>
<parameter>
<description>Archive lossy compressed image as additional Series of the
same Study.</description>
<name>archive</name>
<type>boolean</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Checked for image files located on file systems of
the configured <b>SourceFileSystemGroupID</b> to compress according the
configured <b>CompressionRules</b>.]]>
</description>
<name>checkForFilesToCompress</name>
</operation>
</mbean>

View File

@@ -0,0 +1,366 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Media Creation Management SCU. Used to where and how media are created, including the automatic creation of media.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mcmscu.MCMScuService</class>
<constructor>
<description>The default constructor</description>
<name>MCMScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>The calling AE title.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetrieveAET" setMethod="setRetrieveAET">
<description>The retrieve AE title for the move.
</description>
<name>RetrieveAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMoveDestinationAET" setMethod="setMoveDestinationAET">
<description>The move destination AE title.
</description>
<name>MoveDestinationAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="CDRECORD"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMcmScpAET" setMethod="setMcmScpAET">
<description>The Media Creation Management SCP AE Title.
</description>
<name>McmScpAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="CDRECORD"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent invoked Media Creation Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFileSetIdPrefix" setMethod="setFileSetIdPrefix">
<description>Prefix to be added the burn files for the file set ID.
</description>
<name>FileSetIdPrefix</name>
<type>java.lang.String</type>
<descriptors>
<value value="DISK_"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getNrOfCopies" setMethod="setNrOfCopies">
<description>Number of copies to create, from 1-99.
</description>
<name>NumberOfCopies</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxMediaUsage" setMethod="setMaxMediaUsage">
<description>Maximum media usage for DICOM files. This values is usually
smaller than the real media size to keep space for index and optional html
files. 1MB = 1000000 Byte, 1GB = 1000MB
</description>
<name>MaxMediaUsage</name>
<type>java.lang.String</type>
<descriptors>
<value value="600MB"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinStudyAge" setMethod="setMinStudyAge">
<description>The minimum duration before studies are
scheduled for offline storage. Increasing the delay for scheduling
ensures that all instances of a study are available, and will be stored on a single piece of media.
&lt;br&gt;Format: &lt;br&gt;##h (in hours), ##d (in days), ##w (in weeks)</description>
<name>MinStudyAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="2d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxStudyAge" setMethod="setMaxStudyAge">
<description>The maximum duration before studies are archived on
media. Only effective, if media creation is triggered automatically
if the &lt;b&gt;BurnMediaInterval&lt;/b&gt; attribute is enabled.
&lt;br&gt;Format: &lt;br&gt;##h (in hours), ##d (in days), ##w (in weeks)</description>
<name>MaxStudyAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="4w"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getScheduleMediaInterval" setMethod="setScheduleMediaInterval">
<description>Interval in which studies received thatare older than the configured
MinStudyAge are associated to media and scheduled for creation.
&lt;br&gt;Format: &lt;br&gt;##m (in minutes), ##h (in hours), ##d (in days) &lt;br&gt;NEVER = disable media scheduling
</description>
<name>ScheduleMediaInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningScheduleMedia">
<description>Current state if ScheduleMedia task is running. Used to avoid concurrency!
</description>
<name>isRunningScheduleMedia</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getUpdateMediaStatusInterval" setMethod="setUpdateMediaStatusInterval">
<description>Interval in which the Media Creation Server is queried for the status
of pending Media Creation Requests.
&lt;br&gt;Format: &lt;br&gt;##s (in seconds), ##m (in minutes), ##h (in hours)
&lt;br&gt;NEVER = disable query of Media Creation Server</description>
<name>UpdateMediaStatusInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningUpdateMediaStatus">
<description>Current state if UpdateMediaStatus task is running. Used to avoid concurrency!
</description>
<name>isRunningUpdateMediaStatus</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getBurnMediaInterval" setMethod="setBurnMediaInterval">
<description>Interval in which creation of media with studies
received that are older than configured MaxStudyAge is triggered
automatically. &lt;br&gt;Format: &lt;br&gt;##h (in hours), ##d (in days), ##w (in weeks) &lt;br&gt;NEVER = no automatic trigger of media creation
</description>
<name>BurnMediaInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunningBurnMedia">
<description>Current state if BurnMedia task is running. Used to avoid concurrency!
</description>
<name>isRunningBurnMedia</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="isAutomaticMediaCreation" setMethod="setAutomaticMediaCreation">
<description>Enables automatic media creation.
If automatic media creation is disabled, a notification is sent to the email list
defined in the &lt;b&gt;NotifyBurnMediaEmailTo&lt;/b&gt; attribute.
</description>
<name>AutomaticMediaCreation</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getNotifyBurnMediaEmailTo" setMethod="setNotifyBurnMediaEmailTo">
<description>List of comma-separated email addresses that should be notified when one or more media are ready to burn.
</description>
<name>NotifyBurnMediaEmailTo</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getNotifyBurnMediaEmailFrom" setMethod="setNotifyBurnMediaEmailFrom">
<description>Email address that is used as the from address in the notification email.
</description>
<name>NotifyBurnMediaEmailFrom</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority for move and media creation request.
Enumerated Values: LOW, MEDIUM, HIGH.</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getIncludeNonDICOMObj" setMethod="setIncludeNonDICOMObj">
<description>The type of none DICOM information or object that the SCP should include in the media.
Use NO if no additional information or objects should be included.
</description>
<name>IncludeNonDicomObj</name>
<type>java.lang.String</type>
<descriptors>
<value value="MD5_SUMS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUseInstanceInfo" setMethod="setUseInstanceInfo">
<description>Specifies whether to extract label information from the instances.
</description>
<name>UseInstanceInfo</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckForMediaToBurn"
setMethod="setTimerIDCheckForMediaToBurn">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckForMediaToBurn</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckForStudiesToSchedule"
setMethod="setTimerIDCheckForStudiesToSchedule">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckForStudiesToSchedule</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckMediaStatus"
setMethod="setTimerIDCheckMediaStatus">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckMediaStatus</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getSendmailServiceName"
setMethod="setSendmailServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SendmailServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Check the availability of the Media Creation Managment SCP. Returns OK, MOVE_DEST_UNAVAIL (move destination unavailable) or MCM_SCP_UNAVAIL (Media Creation Management SCP unavailable).
</description>
<name>checkMcmScpAvail</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Initiate creation of media with studies received older than MinStudyAge</description>
<name>scheduleMedia</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update media status</description>
<name>updateMediaStatus</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Initiate creation of media with studies received older than MaxStudyAge.
</description>
<name>burnMedia</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Delete media.
</description>
<name>deleteMedia</name>
<parameter>
<description>Primary key of media</description>
<name>mediaPk</name>
<type>java.lang.Long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="INFO">
<description>Check if all instances of medium are available as files.
</description>
<name>checkMediaInstances</name>
<parameter>
<description>Primary key of media</description>
<name>mediaPk</name>
<type>long</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Media Creation. Used by WEB application</description>
<name>scheduleMediaCreation</name>
<parameter>
<description>Media DTO</description>
<name>mediaDTO</name>
<type>org.dcm4chex.archive.ejb.interfaces.MediaDTO</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>MD5 Check Service. Used to check if the MD5 sum of the new object differs
from the MD5 sum of the existing file. If the MD5 sum does not match, the files may be corrupted.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.MD5CheckService</class>
<constructor>
<description>The default constructor</description>
<name>MD5CheckService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getTaskInterval"
setMethod="setTaskInterval">
<description><![CDATA[Interval in which the File sum is checked for local files.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##s (in seconds), ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no MD5 check should be performed
<br><i>to</i> = end hour (0-23) when no MD5 check should be performed
<br>NEVER = disable MD5 checking<br>Example:<br>10s!9-17 means every 10 seconds,
check the MD5 sum of local files, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can perform MD5 checks outside of peak hours.
]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if MD5check task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getMaxCheckedBefore" setMethod="setMaxCheckedBefore">
<description>Maximum amount of time from last check, in
##w (in weeks), ##d (in days), ##h (in hours).</description>
<name>MaxCheckedBefore</name>
<type>java.lang.String</type>
<descriptors>
<value value="1w"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLimitNumberOfFilesPerTask" setMethod="setLimitNumberOfFilesPerTask">
<description>Maximum number of files that are checked in one task.
</description>
<name>NumberOfFilesPerCheck</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of read byte buffer.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckMD5"
setMethod="setTimerIDCheckMD5">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckMD5</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Check the MD5 sum of files.</description>
<name>check</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>Audit Record Repository 2.x Migration Service</b>.
Used to re-emit audit messages received by dcm4chee-arr-2.x to another
- in particular to dcm4chee-arr-3.x - <i>Audit Record Repository</i>.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>
org.dcm4chex.archive.mbean.MigrateOldAuditRecordRepositoryService
</class>
<constructor>
<description>The default constructor</description>
<name>MigrateOldAuditRecordRepositoryService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getRecordsByPass"
setMethod="setRecordsByPass">
<description><![CDATA[Number of Audit Records fetched from the database and
emitted in one pass.]]>
</description>
<name>RecordsByPass</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getEmissionInterval"
setMethod="setEmissionInterval">
<description><![CDATA[Delay in ms between emission of Audit Records.]]>
</description>
<name>EmissionInterval</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLastEmittedPk"
setMethod="setLastEmittedPk">
<description><![CDATA[Primary Key of last successfully emitted Audit
Records by former invocation of <i>emitAuditRecords()</i>.]]>
</description>
<name>LastEmittedPk</name>
<type>long</type>
<descriptors>
<value value="-1" />
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description><![CDATA[Emit specified number of Audit Records in order
of their primary keys, starting with the Audit Record which primary key
exceeds <i>LastEmittedPk</i>.]]></description>
<name>emitAuditRecords</name>
<parameter>
<description>Maximal number of Audit Records to emit</description>
<name>num</name>
<type>int</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,232 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Move SCU Service to process move orders. Invokes DICOM
Retrieve requests, typically from the archive's own DICOM
Query/Retrieve Service (SCP).</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.dcm.movescu.MoveScuService</class>
<constructor>
<description>The default constructor</description>
<name>MoveSCUService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write"
getMethod="getCallingAET"
setMethod="setCallingAET">
<description>Calling AE title of the Move SCU.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCalledAET"
setMethod="setCalledAET">
<description>AE title of the default Move SCP. Only effective, if a
Move order does not specify a Retrieve AE title or the ForceCalledAET
flag is set to true.
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isForceCalledAET"
setMethod="setForceCalledAET">
<description><![CDATA[Specifies whether to ALWAYS use the Called AET
defined in the Move SCU. If false, the Retrieve AET of the move
order, if specified, will be used.]]>
</description>
<name>ForceCalledAET</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description><![CDATA[Number and interval of retries made for failed
Move Requests.
<p>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs or NEVER.
<br>The interval can be specified in seconds (##s), minutes (##m), hours (##h)
or days (##d).
<br/>Individual settings for specific Destination AETs can be specified by
prefix [AET], separating several AET setting by new line. An entry without
[AET] prefix will be treated as default.
<p>Example: 5x1m,10x10m
<br/>=> retry a total of 5 times, one minute apart for each retry; then retry
a total of 10 times, 10 minutes apart for each retry.
<p>Example:
<br/>[AET1]2x1m,3x10m
<br/>[AET2]NEVER
<br/>5x1m,10x10m
<br/>=> for destination AET1 retry a total of 2 times, one minute apart for
each retry; then retry a total of 3 times, 10 minutes apart for each retry.
Retries are disabled for destination AET2. For all other destinations retry a
total of 5 times, one minute apart for each retry; then retry a total of 10
times, 10 minutes apart for each retry. ]]>
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of concurrent invoked Move Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Schedule Retrieve</description>
<name>scheduleMove</name>
<parameter>
<description>Retrieve AE Title</description>
<name>retrieveAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Move Destination</description>
<name>destAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>DICOM Priority (0 = MEDIUM, 1 = HIGH, 2 = LOW)</description>
<name>priority</name>
<type>int</type>
</parameter>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Study Instance UID</description>
<name>studyIUID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Series Instance UID</description>
<name>seriesIUID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UIDs</description>
<name>sopIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>Scheduled Time in ms from 1970-01-01 00:00</description>
<name>scheduledTime</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Retrieve</description>
<name>scheduleMove</name>
<parameter>
<description>Retrieve AE Title</description>
<name>retrieveAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Move Destination</description>
<name>destAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>DICOM Priority (0 = MEDIUM, 1 = HIGH, 2 = LOW)</description>
<name>priority</name>
<type>int</type>
</parameter>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Study Instance UIDs</description>
<name>studyIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>Series Instance UIDs</description>
<name>seriesIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>SOP Instance UIDs</description>
<name>sopIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>Scheduled Time in ms from 1970-01-01 00:00</description>
<name>scheduledTime</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Retrieve</description>
<name>scheduleMoveOrder</name>
<parameter>
<description>SCU Move Order</description>
<name>order</name>
<type>org.dcm4chex.archive.dcm.movescu.MoveOrder</type>
</parameter>
<parameter>
<description>Scheduled Time in ms from 1970-01-01 00:00</description>
<name>scheduledTime</name>
<type>long</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[DICOM MPPS to HL7 ORM converter. Converts DICOM Modality
Performed Procedure Step received by MPPS SCP Service into HL7 ORM message
sent to any HL7 receiver by utilizing the HL7 Send Service.<br/>
This service can be used with RIS systems that cannot handle MPPS messages.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.hl7.MPPS2ORMService</class>
<constructor>
<description>The default constructor</description>
<name>MPPS2ORMService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="isMPPSReceivedEnabled" setMethod="setMPPSReceivedEnabled">
<description>Enable/disable this service for MPPS Received Notifications</description>
<name>MPPSReceivedEnabled</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getReceivingApplication" setMethod="setReceivingApplication">
<description>Identifies the Receiving Application in HL7 messages that are directed to
the HL7 Send Service. The values in the ReceivingApplication attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Receiving Application encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the matching Forwarding rule(s)
of the HL7 Send Service and will usually differ from the value of the ReceivingApplication
attribute of this service.</description>
<name>ReceivingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getReceivingFacility" setMethod="setReceivingFacility">
<description>Identifies the Receiving Facility in HL7 messages that are directed to
the HL7 Send Service. The values in the ReceivingFacility attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Receiving Facility encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the matching Forwarding rule(s)
of the HL7 Send Service and will usually differ from the value of the ReceivingFacility
attribute of this service.</description> <name>ReceivingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSendingApplication" setMethod="setSendingApplication">
<description>Identifies the Sending Application in HL7 messages that are directed to
the HL7 Send Service. The values in the SendingApplication attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Sending Application encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the SendingApplication attribute
of the HL7 Send Service and may differ from the value of the SendingApplication
attribute of this service.</description>
<name>SendingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSendingFacility" setMethod="setSendingFacility">
<description>Identifies the Sending Facility in HL7 messages that are directed to
the HL7 Send Service. The values in the SendingFacility attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Sending Facility encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the SendingFacility attribute
of the HL7 Send Service and may differ from the value of the SendingFacility
attribute of this service.</description>
<name>SendingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isMPPSLinkedEnabled" setMethod="setMPPSLinkedEnabled">
<description>Enable/disable this service for MPPS Linked Notifications.
MPPS Linked Notification is intended to provide ORM message notification
after manually linking an MPPS entry in dcm4chee-web with it's
corresponding MWL entry.</description>
<name>MPPSLinkedEnabled</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLinkedReceivingApplication" setMethod="setLinkedReceivingApplication">
<description>Identifies the Receiving Application in HL7 messages for MPPS Linked Notification that are directed to
the HL7 Send Service. The values in the ReceivingApplication attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Receiving Application encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the matching Forwarding rule(s)
of the HL7 Send Service and will usually differ from the value of the ReceivingApplication
attribute of this service.</description>
<name>LinkedReceivingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLinkedReceivingFacility" setMethod="setLinkedReceivingFacility">
<description>Identifies the Receiving Facility in HL7 messages for MPPS Linked Notification that are directed to
the HL7 Send Service. The values in the ReceivingFacility attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Receiving Facility encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the matching Forwarding rule(s)
of the HL7 Send Service and will usually differ from the value of the ReceivingFacility
attribute of this service.</description>
<name>LinkedReceivingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLinkedSendingApplication" setMethod="setLinkedSendingApplication">
<description>Identifies the Sending Application in HL7 messages for MPPS Linked Notification that are directed to
the HL7 Send Service. The values in the SendingApplication attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Sending Application encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the SendingApplication attribute
of the HL7 Send Service and may differ from the value of the SendingApplication
attribute of this service.</description>
<name>LinkedSendingApplication</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLinkedSendingFacility" setMethod="setLinkedSendingFacility">
<description>Identifies the Sending Facility in HL7 messages for MPPS Linked Notification that are directed to
the HL7 Send Service. The values in the SendingFacility attribute may be used to
configure specific forwarding rules for generated messages by this service in
the HL7 Send Service. NOTE: The Sending Facility encoded in the HL7 message
finally sent by the HL7 Send Service is defined by the SendingFacility attribute
of the HL7 Send Service and may differ from the value of the SendingFacility
attribute of this service.</description>
<name>LinkedSendingFacility</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIgnoreUnscheduled" setMethod="setIgnoreUnscheduled">
<description>Suppress generation of HL7 ORM messages for received MPPS which does not reference
any Scheduled Procedure Step. Otherwise, generates ORM messages with empty Placer/Filler Order Number
for received MPPS without Scheduled Procedure Step reference.
</description>
<name>IgnoreUnscheduled</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIgnoreInProgress" setMethod="setIgnoreInProgress">
<description>Generates HL7 ORM messages for received MPPS with status COMPLETED or
DISCONTINUED, but does not generate HL7 ORM messages for received MPPS with status IN PROGRESS.
Otherwise, generates ORM messages also for received MPPS with status IN PROGRESS.
</description>
<name>IgnoreInProgress</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isOneORMperSPS" setMethod="setOneORMperSPS">
<description>Generates one HL7 ORM message for each referenced Scheduled Procedure Step in the
received MPPS. Therefore, if one MPPS references several Scheduled Procedure Steps, several HL7 ORM
messages will be generated. Otherwise, only one HL7 ORM message per received MPPS will be generated.
</description>
<name>OneORMperSPS</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isLogXSLT" setMethod="setLogXSLT">
<description><![CDATA[Activates logging of input (= XML Presentation of
DICOM MPPS object) and output (= XML representation of HL7 ORM^O01 message)
of XSLT into files (mpps-<uid>.xml and mpps-<uid>.orm.xml) in log directory.]]>
</description>
<name>LogXSLT</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Stylesheet for DICOM MPPS to HL7 ORM^O01 mapping.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7/mpps2orm.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHl7SendServiceName"
setMethod="setHl7SendServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>Hl7SendServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>MPPS Emulator. Use to emulate the generation of MPPS messages for the defined AE titles.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mppsscu.MPPSEmulatorService</class>
<constructor>
<description>The default constructor</description>
<name>MPPSEmulatorService</name>
</constructor>
<attribute access="read-write"
getMethod="getModalityAETitles"
setMethod="setModalityAETitles">
<description><![CDATA[AE titles of modalities for which MPPS messages
shall be emulated. Multiple AE titles are separated by new line.]]>
</description>
<name>ModalityAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="MOD_AET"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDelay"
setMethod="setDelay">
<description><![CDATA[Minimum delay time specified in seconds (##s) or minutes (##m)
between the time the last object of the a study is received and the generation of the MPPS
message can be explicit specified.
<br>Sample: 3m]]>
</description>
<name>MPPSDelay</name>
<type>java.lang.String</type>
<descriptors>
<value value="5m"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPollInterval" setMethod="setPollInterval">
<description><![CDATA[Interval for polling for newly received series from
modalities you configured in the <b>ModalityAETitles</b> attribute.
The interval can be specified in seconds (##s) or minutes (##m).
NEVER = disable MPPS emulation.]]>
</description>
<name>PollInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description>AE title of the MPPS SCP, to which the emulated MPPS messages shall be sent.
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isIgnoreReqAttrIfNoStudyAccNo" setMethod="setIgnoreReqAttrIfNoStudyAccNo">
<description><![CDATA[Ignore Request Attribute Sequence if study has no Accession Number.<br/>
This will force an unscheduled MPPS and should only be used when the Request Attribute Sequence wrongly contains request attributes!<br/>
]]></description>
<name>IgnoreReqAttrIfNoStudyAccNo</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if a MPPS emulation task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckSeriesWithoutMPPS"
setMethod="setTimerIDCheckSeriesWithoutMPPS">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckSeriesWithoutMPPS</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScuServiceName"
setMethod="setMppsScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MppsScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Emulate MPPS messages for newly received series from the stations
or modalities specified by the <b>ModalityAETitles</b> attribute. Returns the number of
successfully created MPPS instances at the MPPS SCP that you specified with the <b>CalledAETitle</b> property.]]>
</description>
<name>emulateMPPS</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Emulate MPPS messages for a specific study with given Study Pk.]]>
</description>
<name>emulateMPPS</name>
<parameter>
<description>Study Primary Key.</description>
<name>studyPk</name>
<type>long</type>
</parameter>
<return-type>int</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,432 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Modality Performed Procedure Step SCP. Used to the calling and called AE titles for receiving MPPS messages.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mppsscp.MPPSScpService</class>
<constructor>
<description>The default constructor</description>
<name>MPPSScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \(backslash).
For example, ABPACS\ABPACS2.
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getGeneratePatientID"
setMethod="setGeneratePatientID">
<description><![CDATA[Generate a patient ID from a hash of the patient
name and birth date and/or study instance uid, if the received MPPS N-CREATE
message contains no patient ID.
<br>Use ### and/or $$$ as a placeholder for the decimal hash value of patient
name and/or study instance uid. For example, PACS-##########.
<br>NONE = do not generate patient IDs.
<br><i>Issuer of Patient ID</i> for generated <i>Patient IDs</i> will be set to
the <i>Issuer of Patient ID</i> associated to the MPPS SCP (=Called) AE by
its AE configuration entry. If no <i>Issuer of Patient ID</i> is configured for
the MPPS SCP, <i>Issuer of Patient ID</i> is set to the value configured by
attribute <b>IssuerOfPatientIDGeneratedPatientID</b>.]]>
</description>
<name>GeneratePatientID</name>
<type>java.lang.String</type>
<descriptors>
<value value="PACS-##########"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIssuerOfGeneratedPatientID"
setMethod="setIssuerOfGeneratedPatientID">
<description><![CDATA[<i>Issuer of Patient ID</i> for generated
<i>Patient ID's</i>, if no <i>Issuer of Patient ID</i> is associated with the
MPPS SCP (=Called) AE by its AE Configuration entry.]]>
</description>
<name>IssuerOfPatientIDGeneratedPatientID</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementIssuerOfPatientID"
setMethod="setSupplementIssuerOfPatientID">
<description><![CDATA[Supplement received MPPS N-CREATE message containing
a <i>Patient ID</i>, but no <i>Issuer of Patient ID</i>, with a value
for <i>Issuer of Patient ID</i>, if such is associated with the
MPPS SCU AE by its AE Configuration entry.]]>
</description>
<name>SupplementIssuerOfPatientID</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementIssuerOfAccessionNumber"
setMethod="setSupplementIssuerOfAccessionNumber">
<description><![CDATA[Supplement received MPPS N-CREATE message containing
<i>Scheduled Step Attributes Sequence</i> items with a non-empty <i>Accession
Number</i>, but no <i>Issuer of Accession Number Sequence</i>, with such
Sequence containing one item with <i>Local Namespace Enitity ID</i>,
<i>Universial Enitity ID</i> and <i>Universial Enitity ID Type</i>, if such is
associated with the MPPS SCU AE by its AE Configuration entry.]]>
</description>
<name>SupplementIssuerOfAccessionNumber</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostName"
setMethod="setSupplementByHostName">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i> associated to the MPPS 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 MPPS SCU AE will be considered to
determine the associated <i>Issuer of Patient ID</i> or <i>Issuer of Accession
Number</i>. If there are several AE configuration entries with matching host
name with different non-zero values for <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i>, no <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i> will be supplemented.]]>
</description>
<name>SupplementByHostName</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostAddress"
setMethod="setSupplementByHostAddress">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i> associated to the MPPS 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 MPPS SCU AE will be considered to
determine the associated <i>Issuer of Patient ID</i> or <i>Issuer of Accession
Number</i>. If there are several AE configuration entries with matching host
name with different non-zero values for <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i>, no <i>Issuer of Patient ID</i> or
<i>Issuer of Accession Number</i> will be supplemented.]]>
</description>
<name>SupplementByHostAddress</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getGeneratePatientIDForUnscheduledFromAETs"
setMethod="setGeneratePatientIDForUnscheduledFromAETs">
<description><![CDATA[List of AE titles of MPPS SCUs for which the
Patient ID in received MPPS N-CREATE request without Scheduled Procedure
Step reference shall be replaced by a new generated Patient ID.
Separate multiple values by "\"(backslash).
<br/>If the list is prefixed by "!\", the Patient ID in MPPS N-CREATE
requests without Scheduled Procedure Step reference received from
<b>any</b> MPPS SCUs, <b>except</b> which AE title is specified in the
list, will be replaced by a new generated Patient ID.
<br/>"NONE" = do not replace Patient IDs in MPPS N-CREATE request from
any MPPS SCU.
]]>
</description>
<name>GeneratePatientIDForUnscheduledFromAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received
MPPS N-CREATE requests shall be considered for the selection of an existing
Patient record in the archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a attribute name specifies that a missing value in
received DICOM N-CREATE requests 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 MPPS
N-CREATE request. Attribute names without question marks specifies, that DICOM
MPPS N-CREATE requests 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 MPPS N-CREATE request.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-match</i> 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 MPPS N-CREATE request *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause MPPS assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer?[familyname,givenname,middlename?,birthdate]</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?[familyname,givenname,middlename?,birthdate]" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceConfigDir"
setMethod="setCoerceConfigDir">
<description><![CDATA[Directory where configuration files for attribute
coercion are located: if XSL stylesheet "mpps-ncreaterq.xsl" or
"mpps-nsetrq.xsl" exists in this directory or in a sub-directory equal
to the AE Title of a MPPS SCU, attributes of MPPS N-CREATE or MPPS N-SET
requests from this SCU will be coerced according these stylesheets.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAddMwlAttrsToMppsXsl"
setMethod="setAddMwlAttrsToMppsXsl">
<description><![CDATA[ Stylesheet to add MWL Attributes to MPPS Dataset for 'MPPS Linked' notification.<br/>
This allow the use of additional MWL attributes to create ORM message in MPPS2ORM service.
A relative path name is resolved relative to <i>archive-install-directory</i>/server/default/.<br/>
NONE..use MPPS Attributes.
]]>
</description>
<name>AddMwlAttrsToMppsXsl</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isWriteCoercionXmlLog"
setMethod="setWriteCoercionXmlLog">
<description><![CDATA[Enable logging of coercions in separate log files.<br/>
FileName: &lt;LOG_DIR&gt;/coercion/&lt;timestamp&gt;.&lt;xsl file&gt;.[in]|[out]<br/>
Coercion logs are only written for Calling AETs specified in LogAETitles!]]>
</description>
<name>WriteCoercionXmlLog</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLogCallingAETs"
setMethod="setLogCallingAETs">
<description><![CDATA[List of the AE titles for the MPPS SCUs for which XMLized
N-CREATE and N-SET request attributes are logged into files
<i>AET</i>/<i>timestamp</i>-mpps-ncreaterq.xml and
<i>AET</i>/<i>timestamp</i>-mpps-nsetrq.xml in the log directory.
Useful for creation of XSL stylesheets for attribute coercion.
Separate multiple values by \ (backslash).
NONE = no calling AE titles.]]>
</description>
<name>LogAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Link MPPS to MWL entries (LOCAL Modality Worklist).</description>
<name>linkMppsToMwl</name>
<parameter>
<description>List of Scheduled Procedure Step IDs</description>
<name>spsIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>List of MPPS SOP Instance UIDs</description>
<name>mppsIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.Map</return-type>
</operation>
<operation impact="ACTION">
<description>Link MPPS to MWL entries of external Modality worklist.</description>
<name>linkMppsToMwl</name>
<parameter>
<description>List of Scheduled Procedure Step Attributes</description>
<name>spsAttrs</name>
<type>[Lorg.dcm4che.data.Dataset;</type>
</parameter>
<parameter>
<description>List of MPPS SOP Instance UIDs</description>
<name>mppsIUIDs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.Map</return-type>
</operation>
<operation impact="ACTION">
<description>Unlink MPPS to MWL entries.</description>
<name>unlinkMpps</name>
<parameter>
<description>MPPS SOP Instance UID</description>
<name>mppsIUID</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Deletes a list of MPPS entries.</description>
<name>deleteMPPSEntries</name>
<parameter>
<description>List of MPPS Instance UIDs</description>
<name>iuids</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>DICOM Modality Performed Procedure Step SCU Service. Used to forward MPPS messages received by
the MPPS SCP Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mppsscu.MPPSScuService</class>
<constructor>
<description>The default constructor</description>
<name>MPPSScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getForwardingRules" setMethod="setForwardingRules">
<description><![CDATA[List of forwarding rules, dependent upon which
application - identified by the Calling AE title - sent the MPPS.
The comma separated list of AE titles after the (optional) condition
defines the forwarding destination (the other MPPS SCP) by its Called
AE Title.
<br><br>Syntax:
<br> rules = ( rule { newline rule } | 'NONE' ) (* 'NONE' = no forwarding *)
<br> rule = ['[' 'calling' ['!'] '=' from ']'] to
<br> from = aet { '|' aet } (* calling AE titles *)
<br> to = aet { ',' aet } (* destination AE titles *)
<br><br>Example: [calling!=ORDER_FILLER]ORDER_FILLER
<br>=> Forwards received MPPS to ORDER_FILLER, except MPPS received
from ORDER_FILLER]]>
</description>
<name>ForwardingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AE Ttle used in the Association Request.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent forwarded MPPS messages.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description>Number and intervals of retries for failed
MPPS forward requests. &lt;br&gt;Format:
&lt;br&gt;Comma separated list of &lt;i&gt;number&lt;/i&gt;x&lt;i&gt;interval&lt;/i&gt; pairs.
&lt;br&gt;The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
&lt;br&gt;Example:
&lt;br&gt;5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Send MPPS to Application Entity specified by AET.</description>
<name>sendMPPS</name>
<parameter>
<description>if true, send N-CREATE, otherwise N-SET MPPS message.</description>
<name>create</name>
<type>boolean</type>
</parameter>
<parameter>
<description>MPPS Dataset</description>
<name>mpps</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Application Entity Title</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description><![CDATA[<b>Modality Worklist Replication Service</b><br/>
Provides a Service to replicate a MWL SCP with ABPACS Modality worklist.<br/>.
You can use XSL Templates to change MWL C-FIND Request for MWL SCPs.<br/>
Therefore put either mwl-replica-rq.xsl and/or mwl-replica-rsp.xsl in conf/dcm4chee-aet/[AET].
]]> </description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.tool.mwlreplica.MwlReplicaService</class>
<constructor>
<description>The default constructor</description>
<name>MwlReplicaService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description><![CDATA[The AE title(s) of the Modality Worklist SCP to query for replication.<br/>
Multible AET's must be separated by \(backslash). For example, MWL_SCP1\MWL_SCP2.]]>
</description>
<name>CalledAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="MWL_SCP"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AET.
</description>
<name>CallingAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTaskInterval" setMethod="setTaskInterval">
<description><![CDATA[Interval in which to replicate local Modality Work List with remote MWL SCP.<br/>
Format: interval (##s (in seconds), ##m (in minutes), ##h (in hours) or NEVER]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTimeBefore" setMethod="setTimeBefore">
<description><![CDATA[Time interval to calculate left border of time range.<br/>
Format: interval (##s (in seconds), ##m (in minutes), ##h (in hours) or NONE.<br/>
NONE means either no (time) left border or, if TimeAfter is also NONE the whole day.<br/>
E.g.: TimeBefore = 1h, TimeAfter = 2h, current time is 13:00 -> search for all MWL with start date between 12:00 and 15:00.<br/>
TimeBefore = 1h, TimeAfter = NONE, current time is 13:00 -> search for all MWL with start date between 12:00 and 23:59.59.<br/>
TimeBefore = NONE, TimeAfter = 2h, current time is 13:00 -> search for all MWL with start date before 15:00.<br/>
TimeBefore = NONE, TimeAfter = NONE, current time is 13:00 -> search for all MWL for current date.<br/>
]]></description>
<name>TimeBefore</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTimeAfter" setMethod="setTimeAfter">
<description><![CDATA[Time interval to calculate left border of time range.<br/>
Format: interval (##s (in seconds), ##m (in minutes), ##h (in hours) or NONE.<br/>
NONE means either no (time) right border or, if TimeBefore is also NONE the whole day.
]]></description>
<name>TimeAfter</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getIssuerOfPatient" setMethod="setIssuerOfPatient">
<description>Default Issuer Of Patient ID to coerce empty IssuerOfPatient attribute in MWL results. Use NONE to disable coercion.
</description>
<name>IssuerOfPatient</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isForceIssuerCoercion" setMethod="setForceIssuerCoercion">
<description>Force coercion of IssuerOfPatient attribute in MWL results even when result contains IssuerOfPatient.
</description>
<name>ForceIssuerCoercion</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceConfigDir"
setMethod="setCoerceConfigDir">
<description><![CDATA[Directory where configuration files for attribute
coercion are located: if XSL stylesheet "mwl-replica-rq.xsl" or
"mwl-replica-rsp.xsl" exists in this directory or in a sub-directory equal
to the AE Title of the MWL SCP, attributes of MWL C-FIND Request or Response
will be coerced according these stylesheets.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received HL7
ORM messages are considered for selecting existing Patient records in the
archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a field name specifies that a missing value in
received HL7 ORM messages will match with any value for that field in
existing Patient Records, as Patient Records with missing values for that field
will match with any value for that field in received HL7 ORM messages. Field
names without question marks specifies, that HL7 ORM messages without values
for such fields will not match any existing Patient Record, and Patient Records
without values for such fields will not get selected on receive of any HL7 ORM
message.
<p>
Surrounding <i>demograhic-match</i> 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
HL7 ORM message *and* in the matching Patient Record.
<p><b>Attention:</b>
<br/>Configuration of considertion of demographic fields for the selection of
existing Patient records disables the update of such Patient Demographics
attributes by HL7 ORM messages! => Only change the default value of
<code>pid,issuer?</code>, if you know, what you are doing!
<p><b>Warning:</b>Improper configuration may cause MWL assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer?</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDebugMode" setMethod="setDebugMode">
<description>Enable DEBUG mode. No MWL query will be performed but the Query Dataset will be logged!
</description>
<name>DebugMode</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if replication task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority for C-Find requests. Enumerated Values: LOW, MEDIUM, HIGH.
Only effective for queries of a remote Modality Worlist SCP which actual
interprets the priority attribute in the DICOM C-FIND request.
</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDMwlReplica"
setMethod="setTimerIDMwlReplica">
<description>Used internally. Do NOT modify.
</description>
<name>TimerID</name>
<type>java.lang.String</type>
<descriptors>
<value value="TimerIDMwlReplica"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getErrorCount" >
<description>ErrorCount since last reset.
</description>
<name>ErrorCount</name>
<type>int</type>
</attribute>
<attribute access="read-only" getMethod="getTotalErrorCount" >
<description>ErrorCount since service start.
</description>
<name>TotalErrorCount</name>
<type>int</type>
</attribute>
<!-- Operations -->
<operation impact="ACTION">
<description>Replicate modality worklist entries for given date.
</description>
<name>replicateMWLEntriesForDate</name>
<parameter>
<description>AET of MWL SCP to query. (null means configured calledAET - must be configured in AE Managment!)</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Date for which MWL items should be replicated. Use yyyy/MM/dd or null for current date.</description>
<name>Date</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Replicate modality worklist entries for given date.
</description>
<name>replicateMWLEntriesForDateRange</name>
<parameter>
<description>AET of MWL SCP to query. (null means configured calledAET - must be configured in AE Managment!)</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Start Date/Time for which MWL items should be replicated. Use 'yyyy/MM/dd hh:mm' or null for current date.</description>
<name>StartDate</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>End Date/Time for which MWL items should be replicated. Use 'yyyy/MM/dd hh:mm' or null for current date.</description>
<name>EndDate</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Replicate modality worklist entries of aet for given queryDS.
(MWL C-FIND Request Dataset)
</description>
<name>replicateMWLEntries</name>
<parameter>
<description>AET of MWL SCP to query. (must be configured in AE Managment!)</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Dataset for MWL C-Find. <br/>
Use <null> to use a Search Dataset with almost all
MWL attributes as return attributes, and matching SPS Start Date
for current date.
]]></description>
<name>queryDS</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
<operation impact="ACTION">
<description>Show error history.
</description>
<name>showErrorHistory</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Clear error history.
</description>
<name>resetErrorHistory</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>The start lifecycle operation.
</description>
<name>start</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>The stop lifecycle operation.
</description>
<name>stop</name>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Modality Worklist SCP</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mwlscp.MWLScpService</class>
<constructor>
<description>The default constructor</description>
<name>MWLScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>Accepted called AE titles, separated by \ (backslash).
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUseProxy"
setMethod="setUseProxy">
<description>Enable proxy C-FIND to remote MWL SCP.
Proxy MWL SCP is configured in MWL SCU Service.
</description>
<name>UseProxy</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCheckMatchingKeySupported"
setMethod="setCheckMatchingKeySupported">
<description>Enable check if unsupported matching key(s) are used in C-FIND.
In this case the C-FIND PENDING status is changed from 0xff00 to 0xff01.
(Not used if proxy is enabled!)
</description>
<name>CheckMatchingKeySupported</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getLogCallingAETs"
setMethod="setLogCallingAETs">
<description><![CDATA[List of the AE titles for the MWL SCUs for which XMLized
query and result attributes are logged into files
<i>AET</i>/<i>timestamp</i>-mwl-cfindrq.xml and
<i>AET</i>/<i>timestamp</i>-mwl-cfindrsp.xml in the log directory.
Useful for creation of XSL stylesheets for query/result attribute coercion.
Separate multiple values by \(backslash).
NONE = no calling AE titles.]]>
</description>
<name>LogAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceConfigDir"
setMethod="setCoerceConfigDir">
<description><![CDATA[Directory where configuration files for query/result
attribute coercion are located: if XSL stylesheet "mwl-cfindrq.xsl" or
"mwl-cfindrsp.xsl" exists in this directory or in a sub-directory equal
to the AE Title of a MWL SCU, query/result attributes from/to this SCU
will be coerced according these stylesheets. A relative path name is
resolved relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isWriteCoercionXmlLog"
setMethod="setWriteCoercionXmlLog">
<description><![CDATA[Enable logging of coercions in separate log files.<br/>
FileName: &lt;LOG_DIR&gt;/coercion/&lt;timestamp&gt;.&lt;xsl file&gt;.[in]|[out]<br/>
Coercion logs are only written for Calling AETs specified in LogAETitles!]]>
</description>
<name>WriteCoercionXmlLog</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMwlScuServiceName"
setMethod="setMwlScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>MwlScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,202 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Modality Worklist SCU. Used by the Modality Worklist Console
of the Archive Web Administration tool and by the Storage SCP service to
query the configured Modality Worklist SCP for Scheduled Procedure Steps.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.mwlscu.MWLScuService</class>
<constructor>
<description>The default constructor</description>
<name>MWLScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>The calling AE title.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCalledAET" setMethod="setCalledAET">
<description><![CDATA[The AE title of the Modality Worklist SCP to query.
Use <tt>LOCAL</tt> if the DICOM modality worklist is provided by the
archive and can be accessed directly from the database.<br/>
<b>Note:</b> Deletion of worklist entries by the Modality Worklist
Console of the Archive Web Administration tool is only possible if this
attribute is set to <tt>LOCAL</tt>.]]>
</description>
<name>CalledAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="LOCAL"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxResults" setMethod="setMaxResults">
<description>Limit number of returned matching MWL items by operation
findMWLEntries. If an external Modality Worklist SCP is queried, a cancel
request will be invoked after receive of the specified number of query responses.
</description>
<name>MaxResults</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isForceMatchingKeyCheck" setMethod="setForceMatchingKeyCheck">
<description>Force additional check of Matching Keys! This will only effect external MWL SCP queries.
You should enable this feature only if you need a 'unique' matching key (Accession Number, Study IUID or SPS ID) which the MWL SCP
doesn't support as matching key! (e.g. if you need to update image attributes with MWL entries)
</description>
<name>ForceMatchingKeyCheck</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isNoMatchForNoValue"
setMethod="setNoMatchForNoValue">
<description><![CDATA[Do not match entities with zero-length value for
specified matching keys. Effective if
<b>CalledAETitle</b> = <tt>LOCAL</tt>. Also effective for MWL SCP Service with
<b>UseProxy</b> = <tt>false</tt>.]]>
</description>
<name>NoMatchForNoValue</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-only" getMethod="isLocal">
<description>This value is is set to true if the &lt;b&gt;CalledAETitle&lt;/b&gt; attribute is set to LOCAL.
</description>
<name>Local</name>
<type>boolean</type>
</attribute>
<attribute access="read-write" getMethod="getPriority" setMethod="setPriority">
<description>Priority for C-Find requests. Enumerated Values: LOW, MEDIUM, HIGH.
Only effective for queries of a remote Modality Worlist SCP which actual
interprets the priority attribute in the DICOM C-FIND request.
</description>
<name>Priority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAccessBlobAsLongVarBinary"
setMethod="setAccessBlobAsLongVarBinary">
<description>Change JDBC binding for Oracle BLOB's to LONGVARBINARY for
accessing attributes stored in BLOB columns of DB records.
Only effective with CalledAETitle = LOCAL and with Oracle as DB.
</description>
<name>AccessBlobAsLongVarBinary</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTransactionIsolationLevel"
setMethod="setTransactionIsolationLevel">
<description>Transaction isolation level for queries. Values can be one of:
DEFAULT|READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE.
Only effective with CalledAETitle = LOCAL.
</description>
<name>TransactionIsolationLevel</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<operation impact="ACTION">
<description>Get a list of modality worklist entries.
</description>
<name>findMWLEntries</name>
<parameter>
<description>Dataset for C-Find</description>
<name>searchDS</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>fuzzy semantic matching of person names</description>
<name>fuzzyMatchingOfPN</name>
<type>boolean</type>
</parameter>
<parameter>
<description>Result list</description>
<name>result</name>
<type>java.util.List</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Get a list of modality worklist entries using local database access.
</description>
<name>findMWLEntriesLocal</name>
<parameter>
<description>Dataset for C-Find</description>
<name>searchDS</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>fuzzy semantic matching of person names</description>
<name>fuzzyMatchingOfPN</name>
<type>boolean</type>
</parameter>
<parameter>
<description>Result list</description>
<name>result</name>
<type>java.util.List</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Delete a modality worklist entry.
</description>
<name>deleteMWLEntry</name>
<parameter>
<description>Requested Procedure ID \ Scheduled Procedure Step ID</description>
<name>rqIDspsID</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[OnSwitchStorageFileSystem Service. Executes
configurable system command when the current storage file system becomes
full and is switched to the next configured. ]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.OnSwitchStorageFileSystemService</class>
<constructor>
<description>The default constructor</description>
<name>OnSwitchStorageFileSystemService</name>
</constructor>
<!-- Attributes --> &defaultAttributes;
<attribute access="read-write" getMethod="getOnSwitchStorageFileSystemInvoke"
setMethod="setOnSwitchStorageFileSystemInvoke">
<description><![CDATA[Executes specified command when the current
storage file system becomes full and is switched to the next configured.
'{0}' will be replaced by the directory path of the previous,
'{1}' with the directory path of the new storage file system.
NONE = service disabled.]]>
</description>
<name>OnSwitchStorageFilesystemInvoke</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileSystemMgtName"
setMethod="setFileSystemMgtName">
<description>Used internally. Do not modify.
</description>
<name>FileSystemMgtName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,439 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>Study Permission Service</b> grants/revokes
study access permissions to particular roles on receive of HL7 messages,
MPPS N-CREATE messages, Series Stored events or by direct user interaction.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.StudyPermissionService</class>
<constructor>
<description>The default constructor</description>
<name>StudyPermissionService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="isUpdateOnHl7Received"
setMethod="setUpdateOnHl7Received">
<!-- Security -->
<description><![CDATA[Activates grant/revoke of study permissions on
receive of HL7 messages according specified <i>Hl7ReceivedStylesheet</i>.]]>
</description>
<name>UpdateOnHl7Received</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHl7ReceivedStylesheet"
setMethod="setHl7ReceivedStylesheet">
<!-- Security -->
<description><![CDATA[Stylesheet defining study permissions to
grant/revoke on receive of HL7 messages. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Hl7ReceivedStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-permission/hl7-permission.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateOnMppsCreate"
setMethod="setUpdateOnMppsCreate">
<!-- Security -->
<description><![CDATA[Activates grant/revoke of study permissions on
receive of MPPS N-CREATE requests according specified
<i>MppsCreateStylesheet</i>.]]>
</description>
<name>UpdateOnMppsCreate</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMppsCreateStylesheet"
setMethod="setMppsCreateStylesheet">
<!-- Security -->
<description><![CDATA[Stylesheet defining study permissions to
grant/revoke on receive of MPPS N-CREATE requests. A relative path name is
resolved relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>MppsCreateStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-permission/mpps-permission.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateOnSeriesStored"
setMethod="setUpdateOnSeriesStored">
<!-- Security -->
<description><![CDATA[Activates grant/revoke of study permissions on
Series Stored events according specified <i>SeriesStoredStylesheet</i>.]]>
</description>
<name>UpdateOnSeriesStored</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSeriesStoredStylesheet"
setMethod="setSeriesStoredStylesheet">
<!-- Security -->
<description><![CDATA[Stylesheet defining study permissions to
grant/revoke on Series Stored events. A relative path name is resolved
relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>SeriesStoredStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-permission/series-permission.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateOnNewStudy"
setMethod="setUpdateOnNewStudy">
<!-- Security -->
<description><![CDATA[Activates grant/revoke of study permissions on
NewStudy events according specified <i>SeriesStoredStylesheet</i>.]]>
</description>
<name>UpdateOnNewStudy</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUpdateOnIanNotification"
setMethod="setUpdateOnIanNotification">
<description><![CDATA[Activates grant/revoke of study permissions on
receive of IAN JMX Notification according specified <i>MppsCreateStylesheet</i>.]]>
</description>
<name>UpdateOnIanNotification</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIanStylesheet"
setMethod="setIanStylesheet">
<description><![CDATA[Stylesheet defining study permissions to
grant/revoke on receive ofIAN JMX Notification.<br />
A relative path name is resolved relative to <i>archive-install-directory</i>/server/default/.<br />
The input is the MPPS dataset.]]>
</description>
<name>IanNotificationStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-permission/ian_mpps-permission.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getContentEditServiceName"
setMethod="setContentEditServiceName">
<description>Used internally. Do not modify.
</description>
<name>ContentEditServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getIanScuServiceName"
setMethod="setIanScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>IanScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description><![CDATA[Returns <code>true</code> if <i>role</i> has
permission for <i>action</i> on Study with given
<i>Study Instance UID</i>, otherwise returns <code>false</code>.]]>
</description>
<name>hasPermission</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Action</description>
<name>action</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Returns Study Permissions currently granted
on all existing Studies of Patient with given primary key.]]>
</description>
<name>findByPatientPk</name>
<parameter>
<description>Patient Primary Key</description>
<name>pk</name>
<type>long</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Returns Study Permissions currently granted on
Study with given <i>Study Instance UID</i>.]]>
</description>
<name>findByStudyIuid</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Returns Study Permissions for <i>action</i>
currently granted on Study with given <i>Study Instance UID</i>.]]>
</description>
<name>findByStudyIuidAndAction</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Action</description>
<name>action</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Grant permission for <i>actions</i> on Study with
given <i>Study Instance UID</i> to <i>role</i>. Returns number of new
granted Study Permissions.]]>
</description>
<name>grant</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Comma separated list of actions</description>
<name>actions</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Revoke permission for <i>actions</i> on Study with
given <i>Study Instance UID</i> from <i>role</i>. Returns number of
revoked Study Permissions..]]>
</description>
<name>revoke</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Comma separated list of actions</description>
<name>actions</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Revoke given <i>Study Permission</i>. Returns
<code>true</code>, if an existing Study Permission was revoked, or
<code>false</code>, if there was no such Study Permission.]]>
</description>
<name>revoke</name>
<parameter>
<description>Study Permission</description>
<name>permission</name>
<type>org.dcm4chex.archive.ejb.interfaces.StudyPermissionDTO</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Grant permission for <i>actions</i> on all existing
Studies of Patient with given primary key to <i>role</i>. Returns number
of new granted Study Permissions.]]>
</description>
<name>grantForPatient</name>
<parameter>
<description>Patient Primary Key</description>
<name>pk</name>
<type>long</type>
</parameter>
<parameter>
<description>Comma separated list of actions</description>
<name>actions</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Grant permission for <i>actions</i> on all existing
Studies of Patient with given <i>Patient ID</i> and
<i>Issuer of Patient ID</i> to <i>role</i>. Returns number of new granted
Study Permissions.]]>
</description>
<name>grantForPatient</name>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Issuer of Patient ID</description>
<name>issuer</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Comma separated list of actions</description>
<name>actions</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Revoke permission for <i>actions</i> on all existing
Studies of Patient with given primary key to <i>role</i>. Returns number
of revoked Study Permissions.]]>
</description>
<name>revokeForPatient</name>
<parameter>
<description>Patient Primary Key</description>
<name>pk</name>
<type>long</type>
</parameter>
<parameter>
<description>Comma separated list of actions</description>
<name>actions</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Revoke permission for <i>actions</i> on all existing
Studies of Patient with given <i>Patient ID</i> and
<i>Issuer of Patient ID</i> to <i>role</i>. Returns number of revoked
Study Permissions.]]>
</description>
<name>revokeForPatient</name>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Issuer of Patient ID</description>
<name>issuer</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Actions</description>
<name>actions</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<description>Role</description>
<name>role</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.util.Collection</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Return total number of studies for given patient.]]>
</description>
<name>countStudiesOfPatient</name>
<parameter>
<description>Patient Pk</description>
<name>patPk</name>
<type>java.lang.Long</type>
</parameter>
<return-type>int</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>PIX Query Service</b> is used to find out the
identification of a patient in different Patient Identifier Domains by
query the data base for Patients linked by Other Patient IDs or by sending a
HL7 v2.5 QBP^Q23 message to the specified <i>Patient Identifier
Cross-reference (PIX) Manager</i> and evaluating the returned HL7 RSP^K23
message.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.PIXQueryService</class>
<constructor>
<description>The default constructor</description>
<name>PIXQueryService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getPIXManager"
setMethod="setPIXManager">
<description><![CDATA[External PIX Manager &lt;Application&gt;^&lt;Facility&gt;
or <code>LOCAL</code> (=> query data base for Patients linked by Other Patient IDs)]]>
</description>
<name>PIXManager</name>
<type>java.lang.String</type>
<descriptors>
<value value="LOCAL" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isPIXManagerLocal">
<description><![CDATA[<code>true</code>, if <i>PIXManager</i>=<code>LOCAL</code>]]>
</description>
<name>PIXManagerLocal</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getPIXQueryName"
setMethod="setPIXQueryName">
<description><![CDATA[Message Query Name (QPD-1) used in PIX Query for
Corresponding Patient IDs.
Only effective if <i>PIXManager</i>!=<code>LOCAL</code>.]]>
</description>
<name>PIXQueryName</name>
<type>java.lang.String</type>
<descriptors>
<value value="IHE PIX Query" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIssuersOfOnlyOtherPatientIDs"
setMethod="setIssuersOfOnlyOtherPatientIDs">
<description><![CDATA[Comma separated list of Issuers/Authorities,
which only qualifies Other Patient IDs - and NOT primary Patient IDs.
Used to optimize data base queries.
Only effective if <i>PIXManager</i>=<code>LOCAL</code>.]]>
</description>
<name>IssuersOfOnlyOtherPatientIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value="SSN" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getIssuersOfOnlyPrimaryPatientIDs"
setMethod="setIssuersOfOnlyPrimaryPatientIDs">
<description><![CDATA[Comma separated list of Issuers/Authorities,
which only qualifies primary Patient IDs - and NOT Other Patient IDs.
Used to optimize data base queries.
Only effective if <i>PIXManager</i>=<code>LOCAL</code>.]]>
</description>
<name>IssuersOfOnlyPrimaryPatientIDs</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMockResponse"
setMethod="setMockResponse">
<description><![CDATA[If specified (!= '-'), return list of Patient IDs
(&lt;ID&gt;^^^&lt;namespace ID&gt;&&lt;universal ID&gt;&&lt;universal ID type&gt;)
separated by '~'. Useful for debugging service clients.]]>
</description>
<name>MockResponse</name>
<type>java.lang.String</type>
<descriptors>
<value value="-" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHL7SendServiceName"
setMethod="setHL7SendServiceName">
<description>Used internally - do NOT modify.
</description>
<name>HL7SendServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Show corresponding Patient IDs of all domains.</description>
<name>showCorrespondingPIDs</name>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Issuer Of Patient ID/Assigning Authority</description>
<name>authority</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Query PIX Manger for corresponding Patient IDs of specific domain(s).</description>
<name>queryCorrespondingPIDs</name>
<parameter>
<description>Patient ID</description>
<name>pid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Issuer Of Patient ID/Assigning Authority</description>
<name>authority</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>List of returned domains (What domains returned).
</description>
<name>domains</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>java.util.List</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Service for IHE Transaction 'Modality Procedure Step Completed/Dicontinued' Option: PPS Exception Managment.<br>
Checks a received MPPS for Discontinuation Reason Code 'Incorrect Worklist Entry Selected' (code:110514 designator:DCM)
and move all referenced series to trash folder.<br>
Instances stored after receiving such an MPPS will be ignored in StoreSCP directly. (if <i>CheckIncorrectWorklistEntry</i> is enabled)
]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.PPSExceptionMgtService</class>
<constructor>
<description>The default constructor</description>
<name>PPSExceptionMgtService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getDelay" setMethod="setDelay">
<description>Set delay for removing discontinued series in millisecond after MPPS received.
</description>
<name>Delay</name>
<type>long</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getMppsScpServiceName"
setMethod="setMppsScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>MppsScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>PPS SCU Service to forward GP-PPS messages received by
the PPS SCP Service
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.gpwlscp.PPSScuService</class>
<constructor>
<description>The default constructor</description>
<name>GPPPSScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getDestAETs" setMethod="setDestAETs">
<description>List of the AE titles of application entities being notified
about Work item status changes by GP-PPS messages, separated by \(backslash).
NONE = do not send GP-PPS messages to any application entities. Duplicate
GP-PPS N-CREATE messages triggered by multiple GP-SPS N-ACTION with status
IN PROGRESS can be avoided by configuration of local GP-PPS SCP as
additional destination.
</description>
<name>DestinationAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AE title used in the Association Request.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPpsUidSuffix" setMethod="setPpsUidSuffix">
<description>Suffix used to derive SOP Instance UID of emitted GP-PPS from
SOP Instance UID of corresponding GP-SPS.
</description>
<name>PpsUidSuffix</name>
<type>java.lang.String</type>
<descriptors>
<value value=".1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCopyWorkitemCode"
setMethod="setCopyWorkitemCode">
<description>Specifies if Scheduled Workitem Code of GP-SPS
is set as Performed Workitem Code in emitted GP-PPS.
</description>
<name>CopyWorkitemCode</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCopyStationNameCode"
setMethod="setCopyStationNameCode">
<description>Specifies if Scheduled Station Name Code of GP-SPS
is set as Performed Station Name Code in emitted GP-PPS.
</description>
<name>CopyStationNameCode</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCopyStationClassCode"
setMethod="setCopyStationClassCode">
<description>Specifies if Scheduled Station Class Code of GP-SPS
is set as Performed Station Class Code in emitted GP-PPS.
</description>
<name>CopyStationClassCode</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCopyStationGeographicLocationCode"
setMethod="setCopyStationGeographicLocationCode">
<description>Specifies if Scheduled Station Geographic Location Code of GP-SPS
is set as Performed Station Geographic Location Code in emitted GP-PPS.
</description>
<name>CopyStationGeographicLocationCode</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCopyProcessingApplicationsCode"
setMethod="setCopyProcessingApplicationsCode">
<description>Specifies if Scheduled Processing Applications Code of GP-SPS
is set as Performed Processing Applications Code in emitted GP-PPS.
</description>
<name>CopyProcessingApplicationsCode</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent forwarded GP-PPS messages.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description>Number and intervals of retries of failed
GP-PPS forward requests.&lt;br&gt;Format:
&lt;br&gt;Comma separated list of &lt;i&gt;number&lt;/i&gt;x&lt;i&gt;interval&lt;/i&gt; pairs.
&lt;br&gt;The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
&lt;br&gt;Example:
&lt;br&gt;5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getGpwlScpServiceName"
setMethod="setGpwlScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>GpwlScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[The <b>Prefetch Service</b> prefetches no longer
ONLINE available studies from an external archive or attached NEARLINE
storage on receive of a HL7 Order Message (ORM^O01) for the patient.<br/>
Therefore <code>Stylesheet</code> is used to create a C-FIND Request from the received HL7 message
which is sent to source and destination AET. The results are used to get a list of series that are available on source but not on destination.<br />
The <code>PostSelectStylesheet</code> can be used for further, more detailed selection and/or to specify the schedule time of the C-MOVE request.
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hl7.PrefetchService</class>
<constructor>
<description>The default constructor</description>
<name>PrefetchService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getStylesheet"
setMethod="setStylesheet">
<description><![CDATA[Stylesheet for HL7 to C-FIND RQ mapping.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>Stylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-hl7/hl72prefetch.xsl" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isOnlyKnownSeries"
setMethod="setOnlyKnownSeries">
<description><![CDATA[Prefetch only series that are already known on destination?]]>
</description>
<name>OnlyKnownSeries</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPostSelectStylesheet"
setMethod="setPostSelectStylesheet">
<description><![CDATA[Stylesheet for post selection of C-FIND responses.<br/>
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.<br/>
Use NONE to disable post selection (use the 'notAvailable' list gathered from C-FIND responses instead)<br/>
This stylesheet should create a 'schedule' tag for each series that should be prefetched:
&lt;schedule seriesIUID='...' [scheduleAt='yyyyMMddHHmmss.SSS'] [reason='some reason'] /&gt;<br/>
The 'input' xml format:<br/><code>
&lt;prefetch&gt;<br/>
&nbsp;&lt;hl7&gt; ... &lt;hl7&gt;<br/>
&nbsp;&lt;dataset&gt; ... &lt;dataset&gt;<br/>
&nbsp;...<br/>
&lt;/prefetch&gt;</code>
]]></description>
<name>PostSelectStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogPostSelectXML"
setMethod="setLogPostSelectXML">
<description><![CDATA[Log XML data for post selection as file. (in &lt;log_dir&gt;/postselect)]]>
</description>
<name>LogPostSelectXML</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPrefetchMessageTypes"
setMethod="setPrefetchMessageTypes">
<description><![CDATA[Comma separated list of HL7 message types which
shall trigger prefetch of studies. For each listed message type a value for a
particular message field can be specified as additional condition.
<p>Format:<br/>
<i>message-type</i> '^' <i>trigger-event</i> [<i>condition</i>[|<i>condition</i>[|...]]] [,...]<br/>
| 'NONE' (* prefetch disabled *)<br/>
<i>condition</i> := '[' <i>field-name</i> '=' <i>field-value</i> ']'<br/>
<i>field-name</i> := <i>segment</i> '-' <i>seq</i>
<p>Example:<br/>
<tt>ORM^O01[ORC-1=NW]</tt> (* trigger prefetch on receive of new order *)]]>
</description>
<name>PrefetchMessageTypes</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPrefetchSourceAET"
setMethod="setPrefetchSourceAET">
<description><![CDATA[AE title of C-FIND SCP, which shall be queried for
available studies of a particular patient.]]>
</description>
<name>PrefetchSourceAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="PACS_CENTRAL" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSourceQueryPriority"
setMethod="setSourceQueryPriority">
<description><![CDATA[Priority of query requests to the Prefetch Source AE.
Enumerated Values: LOW, MEDIUM, HIGH.]]>
</description>
<name>SourceQueryPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDestinationQueryAET"
setMethod="setDestinationQueryAET">
<description><![CDATA[AE title of C-FIND SCP, which shall be queried to
identify the availability of studies. Studies which are not ONLINE
available - which includes (parts of) studies which are not available
on this AE at all - will be retrieved to the configured Destination
Storage AE.]]>
</description>
<name>DestinationQueryAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDestinationQueryPriority"
setMethod="setDestinationQueryPriority">
<description><![CDATA[Priority of query requests to the Destination Query AE.
Enumerated Values: LOW, MEDIUM, HIGH.]]>
</description>
<name>DestinationQueryPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDestinationStorageAET"
setMethod="setDestinationStorageAET">
<description><![CDATA[AE title of C-STORE SCP, to which (parts of)
studies of a patient shall be retrieved, which are known by the
Prefetch Source AE, but are not ONLINE available from the Destination
Query AE.]]>
</description>
<name>DestinationStorageAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAET"
setMethod="setCallingAET">
<description>Calling AE title of the Move SCU.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetrievePriority"
setMethod="setRetrievePriority">
<description><![CDATA[Priority of invoked retrieve requests.
Enumerated Values: LOW, MEDIUM, HIGH.]]>
</description>
<name>RetrievePriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute> <attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description><![CDATA[Number and intervalls of retries of failed
prefetch requests by a list of comma separated NUMBERxINTERVAL pairs.
The intervall can be specified in seconds (##s), minutes (##m),
hours (##h) or days (##d).]]>
</description>
<name>RetryIntervalls</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,12x1h" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximal number of concurrent processed prefetch orders.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcTimeout"
setMethod="setAcTimeout">
<description>A-Associate accept timeout in milliseconds. 0 = no timeout.</description>
<name>AcceptTimeout</name>
<type>int</type>
<descriptors>
<value value="10000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDimseTimeout"
setMethod="setDimseTimeout">
<description>DIMSE message timeout in ms. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="60000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after an A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>Maximum protocol data unit (PDU) package length for receiving PDUs.
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPrefetchAuditEventID"
setMethod="setPrefetchAuditEventID">
<description><![CDATA[EventID of 'Prefetch Schedule' audit message or NONE to disable audit log.<br/>
Format: &lt;code&gt;^&lt;code system&gt;^&lt;display name&gt; <br />
Note: Neither DICOM Supplement 95 nor IHE defines a applicable audit message for such an event.
Therefore we use a RFC 3881 compliant audit message with this EventID. e.g. prefetch^dcm4chee^Schedule Series Prefetch
]]></description>
<name>PrefetchScheduleAuditEventID</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally - do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally - do NOT modify.
</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getHL7ServerName"
setMethod="setHL7ServerName">
<description>Used internally - do NOT modify.
</description>
<name>HL7ServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally - do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Schedule 'Test' Pre-Fetch Order.</description>
<name>processFile</name>
<parameter>
<description>Filename of hl7 file containing ORM message</description>
<name>filename</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>Rejection Note Stored Service</b>. Responsible to
move previous received DICOM Composite Objects referenced in <i>Key Object
Selection Documents</i> with particular Document Titles (=<i>Rejection Note</i>
received afterwards into the trash.
<p>
Fullfills the requirement for <i>IHE Mammography Acquisition Workflow (MAWF)
Integration Profile</i> compliant <i>Image Managers</i> to support
<i>Transaction: Image Rejection Note Stored [RAD-66]</i>.
</p><p>
To also notify <i>Application Entities</i> configured in the
<b>IAN SCU Service</b> by <i>Instance Availability Notifications</i> about
the deletion of DICOM Composite Objects referenced in the received <i>Rejection
Note</i> - as required by IHE MAWF - <b>Content Edit Service</b> attribute
<tt>CreateIANonMoveToTrash</tt> must be <tt>= true</tt>.
</p>]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mawf.RejectionNoteStoredService</class>
<constructor>
<description>The default constructor</description>
<name>RejectionNoteStoredService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write"
getMethod="getRejectionNoteCodes"
setMethod="setRejectionNoteCodes">
<description><![CDATA[Controls which Key Object Selection Objects,
identified by its document title, shall trigger the move of referenced
DICOM Composite Objects from the archive. For compliance with
<i>IHE Mammography Acquisition Workflow (MAWF) Integration Profile</i>, the
list must contain
<pre>
(113037, DCM, "Rejected for Patient Safety Reasons")</code>,
</pre>
and optionally also
<pre>
(113001,, DCM, "Rejected for Quality Reasons")
</pre>,
]]></description>
<name>RejectionNoteCodes</name>
<type>java.lang.String</type>
<descriptors>
<value value='
(113001, DCM, "Rejected for Quality Reasons")
(113037, DCM, "Rejected for Patient Safety Reasons")
'/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCheckCallingAET"
setMethod="setCheckCallingAET">
<description><![CDATA[Check source AET of series with calling AET of RejectionNote request.<br/>
Skip Instances of Series if source and calling AET's are different.
]]></description>
<name>CheckCallingAET</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDeletionDelay"
setMethod="setDeletionDelay">
<description><![CDATA[Controls the delay between the receive of an
Key Object Selection Objects which document title match one of the configured
<b>RejectionNoteCodes</b> and the deletion of the referenced objects in
seconds (##s), minutes (##m) or hours (##h). If <b>KeepRejectionNote</b>
=<code>false</code>, the delay shall be configured large enough, so the
Storage Commitment Request for Key Object Selection Object is always received
before its deletion.]]>
</description>
<name>DeletionDelay</name>
<type>java.lang.String</type>
<descriptors>
<value value="1m"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isKeepRejectionNote"
setMethod="setKeepRejectionNote">
<description><![CDATA[Controls, if the Key Object Selection Object, which
triggered the deletion of referenced objects, will not be deleted, but be kept
stored in the archive. ]]>
</description>
<name>KeepRejectionNote</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervals"
setMethod="setRetryIntervals">
<description><![CDATA[Number and interval of retries made for failed
deletion of referenced objects.
<p>
Format: Comma separated list of <i>number</i>x<i>interval</i> pairs. The
interval can be specified in seconds (##s), minutes (##m), hours (##h) or
days (##d).
</p><p>
Example: <code>5x1m,10x10m</code>, means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes apart for each
retry.</p>]]>
</description>
<name>RetryIntervalsForJmsOrder</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,1x1h,1x1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getContentEditServiceName"
setMethod="setContentEditServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>ContentEditServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,338 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>Retrieve Information for Display Service</b><br/>
Provides a RID Information Source Actor with ECG support.<br/>
This Information Source is based on this PACs system and therefore only allows access to DICOM documents (Structured Reports, Waveforms (RID-ECG) and encapsulated Documents (PDF,CDA) <br/>
The enumerated DICOM objects can be queried via RID retrieve information request
and are rendered (and cached) as PDF documents for a RID retrieve document request.<br/>
DICOM waveform objects are only visible in cardiology related queries and due to the resolution requirements
of ECG RID profile rendered as vector graphic (PDF or xml+svg).
<p>
To allow domain specific queries (radiology, cardiology..), the Concept Name Code is used to assign 'document titles'
to info request type (e.g requestType=SUMMARY-RADIOLOGY). This can be done in 'ConceptNameCodes'.
</p><p>
You may also define a list of SOP Class UIDs that are aware of Concept Name Code and always visible in a SUMMARY info request. (CuidsForSummaryAll)
</p>]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.rid.mbean.RIDService</class>
<constructor>
<description>The default constructor</description>
<name>RIDService</name>
</constructor>
<attribute access="read-write" getMethod="getECGSopCuids"
setMethod="setECGSopCuids">
<description> List of SOP Class UIDs that are used to find ECG
documents (seperated with semicolon or newline). Use either the
SOP Class UID or the symbolic name! Use an empty value to reset
this list. </description>
<name>ECGSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value value="" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSRSopCuids"
setMethod="setSRSopCuids">
<description> List of SOP Class UIDs that are used to find SR (text)
documents (separated with semicolon or newline). Use either the
SOP Class UID or the symbolic name! </description>
<name>SRSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value
value="
BasicTextSR;
EnhancedSR;
ComprehensiveSR;
ProcedureLogStorage;
MammographyCADSR;
KeyObjectSelectionDocument;
ChestCADSR;
XRayRadiationDoseSR;
StructuredReportTextStorageRetired;
StructuredReportDetailStorageRetired;
StructuredComprehensiveStorageRetired
" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getEncapsulatedDocumentSopCuids"
setMethod="setEncapsulatedDocumentSopCuids">
<description><![CDATA[List of SOP Class UIDs that are used to find encapsulated documents (PDF, CDA or others(private))<br/>
Use either the SOP Class UID or the symbolic name! (seperated with semicolon or newline).<br/>
Default: EncapsulatedPDFStorage;EncapsulatedCDAStorage
]]></description>
<name>EncapsulatedDocumentSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value
value="EncapsulatedPDFStorage;
EncapsulatedCDAStorage" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCuidsForSummaryAll"
setMethod="setCuidsForSummaryAll">
<description><![CDATA[List of SOP Class UIDs that should be added to a SUMMARY (all) list.<br/>
Use either the SOP Class UID or the symbolic name (seperated with semicolon or newline).<br/>
Use NONE to disable this feature.
]]></description>
<name>CuidsForSummaryAll</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSopCuidGroups"
setMethod="setSopCuidGroups">
<description><![CDATA[List of SOP Class UID Groups.(seperated with semicolon or newline)<br/>
<dl><dt>Format: &lt;cuidGrpID&gt;:&lt;SOPClassUID&gt;</dt>
<dd>cuidGrpID: configurable (case sensitive) with exception to default groups:
<dd> SR - Structured Reports</dd>
<dd> ECG - ECG Waveforms</dd>
<dd> DOC - Encapsulated Documents</dd>
<dd/>
<dd> SOPClassUID:Use either the SOP Class UID or the symbolic name</dd>
</dl>
]]></description>
<name>SOPClassUIDGroups</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getConceptNameCodes"
setMethod="setConceptNameCodes">
<description><![CDATA[List of Concept Name Codes to assign 'document titles' to domains (requestType).<br/>
<dl><dt>Format: &lt;Code&gt;:&lt;reqTypes&gt;</dt>
<dd> Code:&lt;CodeValue&gt;^&lt;Designator&gt;[^&lt;Meaning&gt;]</dd>
<dd> reqTypes:&lt;reqType&gt;[,&lt;reqType&gt;[,..]]</dd>
<dd> reqType :&lt;reqTypeID&gt;[(&lt;cuidGrp&gt;,&lt;cuidGrp&gt;,..)]</dd>
<dd> cuidGrp: List of SOPClassUID Groups that are used to find document for this ConceptNameCode.
(if not specified: all configured SOPClassUIDs in SOPClassUIDGroups)</dd>
</dl>
<dl><dt>reqType: Following reqTypeID can be used:</dt>
<dd> A - SUMMARY</dd>
<dd> R - SUMMARY-RADIOLOGY</dd>
<dd> C - SUMMARY-CARDIOLOGY</dd>
<dd> ECG - SUMMARY-CARDIOLOGY-ECG</dd>
<dd> L - SUMMARY-LABORATORY</dd>
<dd> S - SUMMARY-SURGERY</dd>
<dd> E - SUMMARY-EMERGENCY</dd>
<dd> D - SUMMARY-DISCHARGE</dd>
<dd> I - SUMMARY-ICU (Intensive Care Report)</dd>
<dd> P - SUMMARY-RX (Prescription Report)</dd>
</dl>
<dl><dt>cuidGrp: Each cuidGrpID defined in SOPClassUIDGroups can be used. Default groups:</dt>
<dd> SR - Structured Reports</dd>
<dd> ECG - ECG Waveforms</dd>
<dd> DOC - Encapsulated Documents</dd>
</dl>
]]></description>
<name>ConceptNameCodes</name>
<type>java.lang.String</type>
<descriptors>
<value value="
11522-0^LN^Echocardiography Report:A,C;
11538-6^LN^CT Chest Report:R,A;
18760-9^LN^Ultrasound Report:R,A;
18758-3^LN^PET Scan Report:R,A;
18757-5^LN^Nuclear Medicine Report:R,A;
18745-0^LN^Cardiac Catheteization Report:A,C;
11541-0^LN^MRI Head Report:R,A;
11540-2^LN^CT Abdomen Report:R,A;
18756-7^LN^MRI Spine Report:R,A;
18755-9^LN^MRI Report:R,A;
125200^DCM^Adult Echocardiography Procedure Report:A,C;
11525-3^LN^Ultrasound Obstetric and Gyn Report:R,A;
18747-6^LN^CT Report:R,A;
10001^99SUPP97^Quantitative Arteriography report:A,C;
122291^DCM^CT/MR Cardiovascular Report:A,C;
18748-4^LN^Diagnostic Imaging Report:R,A;
122292^DCM^Quantitative Ventriculography Report:A,C;
11539-4^LN^CT Head Report:R,A;
11528-7^LN^Radiology Report:R,A" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDocTitlePatterns"
setMethod="setDocTitlePatterns">
<description><![CDATA[List of RegEx patterns to find encapsulated documents by Document Title (0042,0010).<br/>
<dl><dt>Format: &lt;reqType&gt;:&lt;title&gt;</dt>
<dt>reqType: Following IDs can be used:</dt>
<dd> A - SUMMARY</dd>
<dd> R - SUMMARY-RADIOLOGY</dd>
<dd> C - SUMMARY-CARDIOLOGY</dd>
<dd> ECG - SUMMARY-CARDIOLOGY-ECG</dd>
<dd> L - SUMMARY-LABORATORY</dd>
<dd> S - SUMMARY-SURGERY</dd>
<dd> E - SUMMARY-EMERGENCY</dd>
<dd> D - SUMMARY-DISCHARGE</dd>
<dd> I - SUMMARY-ICU (Intensive Care Report)</dd>
<dd> P - SUMMARY-RX (Prescription Report)</dd>
<dt>title: Regular expression for selecting Document Title</dt>
</dl>
]]></description>
<name>DocTitlePatterns</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getWadoURL"
setMethod="setWadoURL">
<description> URL to WADO service to get images for reports.
</description>
<name>WadoURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="http://localhost:8080/wado" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRIDSummaryXsl"
setMethod="setRIDSummaryXsl">
<description> Path and name of XSL file to render RID Summary
request. </description>
<name>RIDSummaryXsl</name>
<type>java.lang.String</type>
<descriptors>
<value value="xsl/IHEDocumentList.xsl" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUseXSLInstruction"
setMethod="setUseXSLInstruction">
<description> Enables XSL processing instruction in xml file.
</description>
<name>UseXSLInstruction</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUseOrigFile"
setMethod="setUseOrigFile">
<description> If enabled, A RID request will use the original dicom
file to generate a document. </description>
<name>UseOrigFile</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSrImageRows"
setMethod="setSrImageRows">
<description> Set fixed size of referenced images in rendered
Structured Reports (by rows). NONE means original image size.
</description>
<name>SRfixedImageRows</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getWaveformCorrection"
setMethod="setWaveformCorrection">
<description>Waveform Correction factor.</description>
<name>WaveformCorrection</name>
<type>float</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConfigDir"
setMethod="setConfigDir">
<description><![CDATA[Directory where XSL stylesheet <code>fobsr.xsl</code> to render SR exists.<br/>
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-rid"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getQueryRetrieveScpName"
setMethod="setQueryRetrieveScpName">
<description>Used internally. Do NOT modify.</description>
<name>QueryRetrieveScpName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description> Retrieve Information for Display (Summary)
</description>
<name>getRIDSummary</name>
<parameter>
<description>Value object of the request.</description>
<name>reqVO</name>
<type>org.dcm4chex.rid.common.RIDRequestObject</type>
</parameter>
<return-type> org.dcm4chex.rid.common.RIDResponseObject
</return-type>
</operation>
<operation impact="ACTION">
<description>Retrieve Document for Display</description>
<name>getRIDDocument</name>
<parameter>
<description>Value object of the request.</description>
<name>reqVO</name>
<type>org.dcm4chex.rid.common.RIDRequestObject</type>
</parameter>
<return-type> org.dcm4chex.rid.common.RIDResponseObject
</return-type>
</operation>
<operation impact="ACTION">
<description>Get DataHandler for Document</description>
<name>getDocumentDataHandler</name>
<parameter>
<description>ObjectUID of Document.</description>
<name>objectUID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Content Type (MIME Type).</description>
<name>contentType</name>
<type>java.lang.String</type>
</parameter>
<return-type>javax.activation.DataHandler</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Route Studies triggered by receiving
General Purpose Performed Procedure Step N-CREATE-RQ with particular
Performed Work Item Code by General Purpose Performed Procedure Step SCP.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.movescu.RouteOnPPSService</class>
<constructor>
<description>The default constructor</description>
<name>RouteOnPPSService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getRoutingRules"
setMethod="setRoutingRules">
<description><![CDATA[
Maps Performed Work Item Codes in received General Purpose
Performed Procedure Step N-CREATE-RQ to destination AETs.
Format: CODE_VALUE^CODING_SCHEMEDESIGNATOR:AET1,AET2
(e.g.: 110001^DCM:CENTRAL1,CENTRAL2).
Multiple mappings can be specified, separated by new line (or semicolon).
NONE = no routing of Studies.
]]>
</description>
<name>RoutingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRoutingPriority" setMethod="setRoutingPriority">
<description>Routing priority. Enumerated Values: LOW, MEDIUM, HIGH.
</description>
<name>RoutingPriority</name>
<type>java.lang.String</type>
<descriptors>
<value value="MEDIUM"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getGpwlScpServiceName"
setMethod="setGpwlScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>GpwlScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally. Do not modify.
</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Performs a test routing by handling a fake GPPPS Notification</description>
<name>testRouting</name>
<parameter>
<description>Code (Format:codeValue^designator)</description>
<name>code</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Study Instance UID</description>
<name>studyUID</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Scheduler Service used by other Services to register
callbacks for periodical invocation by the JMX Timer Service]]>
</description>
<descriptors>
<persistence persistPolicy="Never"/>
<!--persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/-->
</descriptors>
<class>org.dcm4chex.archive.mbean.SchedulerService</class>
<constructor>
<description>The default constructor</description>
<name>SchedulerService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description>Register callback, return Scheduler ID</description>
<name>startScheduler</name>
<parameter>
<description>Scheduler Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Period in ms</description>
<name>period</name>
<type>long</type>
</parameter>
<parameter>
<description>Callback</description>
<name>listener</name>
<type>javax.management.NotificationListener</type>
</parameter>
<return-type>java.lang.Integer</return-type>
</operation>
<operation impact="ACTION">
<description>Unregister callback</description>
<name>stopScheduler</name>
<parameter>
<description>Scheduler Name</description>
<name>name</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Scheduler ID</description>
<name>id</name>
<type>java.lang.Integer</type>
</parameter>
<parameter>
<description>Callback</description>
<name>listener</name>
<type>javax.management.NotificationListener</type>
</parameter>
<return-type>void</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % mbean.dtd PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
%mbean.dtd;
<!ENTITY defaultSCUAttributes '
<attribute access="read-write"
getMethod="getAcTimeout"
setMethod="setAcTimeout">
<description>A-Associate accept timeout in milliseconds. 0 = no timeout.</description>
<name>AcceptTimeout</name>
<type>int</type>
<descriptors>
<value value="30000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDimseTimeout"
setMethod="setDimseTimeout">
<description>DIMSE message timeout in ms. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="1200000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after an A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>Maximum protocol data unit (PDU) package length for receiving PDUs.
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
'>

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Simple SMTP Mail Sender. Use to send email messages through SMTP.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.SendMailService</class>
<constructor>
<description>The default constructor</description>
<name>SendMailService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getSmtpHost" setMethod="setSmtpHost">
<!-- Network -->
<description>The SMTP host name of your mail server.
</description>
<name>SmtpHost</name>
<type>java.lang.String</type>
<descriptors>
<value value="localhost"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSmtpPort" setMethod="setSmtpPort">
<!-- Network -->
<description>The SMTP port of your mail server (default is 25).
</description>
<name>SmtpPort</name>
<type>int</type>
<descriptors>
<value value="25"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isSmtpAuth" setMethod="setSmtpAuth">
<description>If true, attempt to authenticate the user using the AUTH command. Defaults to false.
</description>
<name>SmtpAuthentication</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSmtpUser" setMethod="setSmtpUser">
<description>Optional - if you use authenticated SMTP to send email, enter your username.
</description>
<name>SmtpUser</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="write-only" setMethod="setSmtpPassword">
<description>Optional - as above, enter your password if you use authenticated SMTP.
</description>
<name>SmtpPassword</name>
<type>java.lang.String</type>
<descriptors>
<value value=""/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description>Number and intervals of retries for a failed
email delivery. &lt;br&gt;Format:
&lt;br&gt;Comma separated list of &lt;i&gt;number&lt;/i&gt; x &lt;i&gt;interval&lt;/i&gt; pairs.
&lt;br&gt;The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
&lt;br&gt;Example:
&lt;br&gt;5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description>Send email.
</description>
<name>send</name>
<parameter>
<description>Subject</description>
<name>subject</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>from address</description>
<name>fromAddr</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>destination address</description>
<name>toAddr</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Mail Body</description>
<name>body</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Soundex service. Provides operations to update Soundex
codes for person names after change of Soundex algorithm configured in
<code>conf/dcm4chee-attribute-filter.xml</code>.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.SoundexUpdateService</class>
<constructor>
<description>The default constructor</description>
<name>SoundexUpdateService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Update Soundex code of Patient name.</description>
<name>updatePatientNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Referring Physician name.</description>
<name>updateReferringPhysicianNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Performing Physician name.</description>
<name>updatePerformingPhysicianNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Requesting Physician name.</description>
<name>updateRequestingPhysicianNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Verifying Observer name.</description>
<name>updateVerifyingObserverNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Performing Physician name in MWL items.</description>
<name>updateMWLPerformingPhysicianNameSoundex</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Update Soundex code of Human Performer name in GPSPS.</description>
<name>updateGPSPSHumanPerformerNameSoundex</name>
<return-type>int</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,449 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>DICOM Storage Commitment SCU/SCP. Provides a DICOM Storage
Commitment Service in the Service Class Provider
(SCP) and the Service Class User (SCU) Role. When acting as the SCP,
the service handles storage commitment requests that it receives
from modalities or evidence creators (workstations).
When acting as the SCU, it may request storage
commitment for objects for itself that were retrieved from the archive to a remote
application. Typically this application is a further archive
instance acting as a long-term or central archive.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.stgcmt.StgCmtScuScpService</class>
<constructor>
<description>The default constructor</description>
<name>StgCmtScuScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>Accepted called AE titles, separated by \ (backslash).
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRequestStgCmtFromAETs"
setMethod="setRequestStgCmtFromAETs">
<description><![CDATA[Move Destination AE titles, from which Storage
Commitment for transmitted objects shall be requested.
<br>Format:
<br><i>STORAGE_AET</i>:<i>STGCMT_AET</i>.
<br>The AE title of the Storage Commitment Service (<i>STGCMT_AET</i>)
can be omitted, if identical to the AE title of the
Move Destination (<i>STORAGE_AET</i>).
Separate multiple values with a \(backslash).
NONE = No Move Destination from which Storage Commitment
will be requested.]]>
</description>
<name>RequestStorageCommitFromAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTrustStgCmtFromAETs"
setMethod="setTrustStgCmtFromAETs">
<description><![CDATA[AE titles of trusted Storage Commitment SCPs.
Only Storage Commitment results received from these sources will cause
to mark referenced instances as external retrievable.
Separate multiple values with a \(backslash).
<br>NONE = Do not mark instances as external retrievable.
<br>ANY = Trust Storage Commitment results from any Storage
Commitment SCP.]]>
</description>
<name>TrustStorageCommitFromAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveResultInSameAssocTimeout"
setMethod="setReceiveResultInSameAssocTimeout">
<description>Time in milliseconds that the Storage Commit SCU waits to
receive the Storage Commit Result in the same association
as the storage commit was requested, before releasing the association.
</description>
<name>ReceiveResultInSameAssociationTimeout</name>
<type>long</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScuRetryIntervalls"
setMethod="setScuRetryIntervalls">
<description><![CDATA[Number and interval of retries by the SCU to invoke
Storage Commitment Requests.
<br>Format:
<br>Comma separated list of <i>number</i> x <i>interval</i> pairs.
<br>The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
<br>Example:
<br>5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.]]>
</description>
<name>SCURetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScpRetryIntervalls"
setMethod="setScpRetryIntervalls">
<description><![CDATA[Number and interval of retries by the SCP to send
Storage Commitment Results to the SCU.
<br>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs.
<br>The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
<br>Example: 5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.]]>
</description>
<name>SCPRetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceConfigDir"
setMethod="setCoerceConfigDir">
<description><![CDATA[Directory where configuration files for Storage
Commitment Result attribute coercion are located: if XSL stylesheet
"stgcmt-neventreportrq.xsl" exists in this directory or a sub-directory
equal to the AE Title of a Storage Commitment SCP, Storage Commitment
Result attributes from this SCP will be coerced according this stylesheet.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of concurrent invoked or processed
Storage Commit Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcTimeout"
setMethod="setAcTimeout">
<description>A-Associate accept timeout in milliseconds. 0 = no timeout.
</description>
<name>AcceptTimeout</name>
<type>int</type>
<descriptors>
<value value="10000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDimseTimeout"
setMethod="setDimseTimeout">
<description>DIMSE message timeout in milliseconds. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="60000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after an A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getQueryRetrieveScpServiceName"
setMethod="setQueryRetrieveScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>QueryRetrieveScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Used internally.</description>
<name>onInstancesRetrieved</name>
<parameter>
<description>Called AE Title of Move SCP</description>
<name>moveScp</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>AE Title of Move Destination.</description>
<name>moveDest</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Dataset for StgCmt N-ACTION request.</description>
<name>actionInfo</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Delay of sending StgCmt in ms.</description>
<name>Delay</name>
<type>int</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Storage Commitment Request for Study.
Return number of instances of scheduled StgCmt request.</description>
<name>scheduleStgCmtForStudy</name>
<parameter>
<description>Study Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Called AET of StgCmt SCP to send request.</description>
<name>called</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Calling AET in StgCmt request. (Use first AET of CalledAETs attribute as default)</description>
<name>calling</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Schedule Storage Commitment Request for Series.
Return number of instances of scheduled StgCmt request.</description>
<name>scheduleStgCmtForSeries</name>
<parameter>
<description>Series Instance UID</description>
<name>suid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Called AET of StgCmt SCP to send request.</description>
<name>called</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Calling AET in StgCmt request. (Use first AET of CalledAETs attribute as default)</description>
<name>calling</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[DICOM Storage Commitment SCU requesting storage
commitment for objects received from specific AETs.<br/>
Use case: Request Storage Commit (and set external retrieve AET in consequence)
for objects received from central archive without need to forward the objects
back to central archive. (Migration, Prefetching, ..)
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.stgcmt.StgCmtScuBySeriesStoredService</class>
<constructor>
<description>The default constructor</description>
<name>StgCmtScuBySeriesStoredService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getRqStgCmtOnReceiveFromAETs"
setMethod="setRqStgCmtOnReceiveFromAETs">
<description><![CDATA[
List of AET's for which a Storage Commit should be requested when objects are received from there.<br/>
Use NONE to disable this service.
Format:
&lt;AET&gt;[=[&lt;callingAET&gt;:]&lt;calledAET&gt;<br/>
AET : The callingAET of C-STORE that should trigger a StgCmt request.<br/>
callingAET : Calling AET of StgCmt request (default: first entry of CalledAETs attribute in StgCmtScuScp service) <br/>
calledAET : Called AET of StgCmt request (default: &lt;AET&gt;)
]]>
</description>
<name>RequestStgCmtOnReceiveFromAETs</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNoStgCmtIfExternalRetrieveAET"
setMethod="setNoStgCmtIfExternalRetrieveAET">
<description><![CDATA[
Dont request a Storage Commit if objects are external retrievable.<br/>
Possible Values:<br />
NONE : Do always request a StgCmt.<br />
ANY : Only request a StgCmt if a object is not external retrievable.<br />
&lt;AET&gt;: Only request a StgCmt if a object is not external retrievable from this AET.<br/>
]]>
</description>
<name>NoStgCmtIfExternalRetrieveAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDelay"
setMethod="setDelay">
<description>Delay of sending StgCmt request in ms. This can be used to avoid DB deadlocks (SeriesStored.commit and StgCmt update)
</description>
<name>Delay</name>
<type>int</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStgCmtServiceName"
setMethod="setStgCmtServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StgCmtServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Study Reconciliation Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.StudyReconciliationService</class>
<constructor>
<description>The default constructor</description>
<name>StudyReconciliationService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getTaskInterval" setMethod="setTaskInterval">
<description><![CDATA[Interval in which to check for studies for Reconciliation.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##s (in seconds), ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no Study Reconciliation should be performed
<br><i>to</i> = end hour (0-23) when no Study Reconciliation should be performed
<br>NEVER = disable automatic Study Reconciliation
<br>Example:10s!9-17 means every 10 seconds, poll the database and
check study that need Reconciliation, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can ensure checks occur outside of peak imaging hours.]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if StudyReconciliation task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getCalledAET"
setMethod="setCalledAET">
<description>AE Title of reference FIND SCP.
</description>
<name>FindSCPAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="TIANI_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAET"
setMethod="setCallingAET">
<description>Calling AE Title used in association request to reference FIND SCP.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMinStudyAge" setMethod="setMinStudyAge">
<description>Minimum age of a study that will be checked for need of Reconciliation, in
##w (in weeks), ##d (in days), or ##h (in hours).</description>
<name>MinStudyAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLimitNumberOfStudiesPerTask" setMethod="setLimitNumberOfStudiesPerTask">
<description>Maximum number of studies that are checked in one task.
</description>
<name>LimitNumberOfStudiesPerTask</name>
<type>int</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getScheduledStatus"
setMethod="setScheduledStatus">
<description>Status indicating studies scheduled for reconciliation..
</description>
<name>ScheduledStatus</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSuccessStatus"
setMethod="setSuccessStatus">
<description>Status to indicate successful reconciliation.
</description>
<name>SuccessStatus</name>
<type>int</type>
<descriptors>
<value value="0"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFailureStatus"
setMethod="setFailureStatus">
<description>Status to indicate failed reconciliation.
</description>
<name>FailureStatus</name>
<type>int</type>
<descriptors>
<value value="-1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isKeepPriorPatientAfterMerge"
setMethod="setKeepPriorPatientAfterMerge">
<description><![CDATA[Keep prior patient after Patient Merge.<br/>
This will allow to get correct patient information even the received DICOM objects contains a patient id of an merged patient.<br />
If disabled, the prior patient will be deleted.
]]></description>
<name>KeepPriorPatientAfterMerge</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckStudyReconciliation"
setMethod="setTimerIDCheckStudyReconciliation">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckStudyReconciliation</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Used internally.</description>
<name>check</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Reschedule failed Reconciliations.</description>
<name>reschedule</name>
<return-type>java.lang.String</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Study Status Service to update Study Status triggered by receive
of General Purpose Performed Procedure Step N-CREATE-RQ with particular
Performed Work Item Code by General Purpose Performed Procedure Step SCP.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.StudyStatusService</class>
<constructor>
<description>The default constructor</description>
<name>StudyStatusService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getStatusUpdateRules"
setMethod="setStatusUpdateRules">
<description><![CDATA[
Maps Performed Work Item Codes in received General Purpose
Performed Procedure Step N-CREATE-RQ to Study Status IDs.
Format: CODE_VALUE^CODING_SCHEMEDESIGNATOR:STUDY_STATUS_ID
(e.g.: 110005^DCM:READ).
Multiple mappings can be specified, separated by new line (or semicolon).
NONE = no update of Study Status.
]]>
</description>
<name>StatusUpdateRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="110001^DCM:COMPLETED;110005^DCM:READ"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getGpwlScpServiceName"
setMethod="setGpwlScpServiceName">
<description>Used internally. Do not modify.
</description>
<name>GpwlScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>Private Study Management Service SCP</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.stymgt.StudyMgtScpService</class>
<constructor>
<description>The default constructor</description>
<name>StudyMgtScpService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \ (backslash).
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.
]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isIgnoreDeleteFailed"
setMethod="setIgnoreDeleteFailed">
<description>Ignore study deletion failures if the study was not found.
</description>
<name>IgnoreStudyDeleteFailed</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received
N-CREATE requests for a Study Create action shall be considered for the selection of an existing
Patient record in the archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a attribute name specifies that a missing value in
received DICOM N-CREATE requests 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 STUDY MANAGEMENT
N-CREATE request. Attribute names without question marks specifies, that DICOM
N-CREATE requests 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 N-CREATE request.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-match</i> 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 N-CREATE request *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause study assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer?</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getStudyMovePatientMatching"
setMethod="setStudyMovePatientMatching">
<description><![CDATA[Defines which Patient Attributes in received
N-SET requests for a Study Move action shall be considered for the selection of an existing
Patient record in the archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that a value with only one
character will be interpreted as initial, and match with any value starting
with this character.
<p>
A question mark('?') after a attribute name specifies that a missing value in
received DICOM N-CREATE requests 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 STUDY MANAGEMENT
N-CREATE request. Attribute names without question marks specifies, that DICOM
N-CREATE requests 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 N-CREATE request.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-match</i> 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 N-CREATE request *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause study assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer</code>
]]>
</description>
<name>StudyMovePatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getContentEditServiceName"
setMethod="setContentEditServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>ContentEditServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,228 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "DCMSCU attributes template extends jboss_xmbean_1_1.dtd" "dcm4chee-scu-xmbean.dtd">
<mbean>
<description>Private Study Management Service SCU Service used to forward
messages received by private Study Management Service SCP Service. You must use the Content Edit service to identify where study information updates are sent and received. Use the values in the CalledAETitle and the CallingAETitle attributesto configure
specific forwarding rules in this StudyMgtScu Service for study information updates
received from the Content Edit Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.stymgt.StudyMgtScuService</class>
<constructor>
<description>The default constructor</description>
<name>StudyMgtScuService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
&defaultSCUAttributes;
<attribute access="read-write" getMethod="getForwardingRules" setMethod="setForwardingRules">
<description>List of forwarding rules.
&lt;br&gt;Format:&lt;br&gt;[&lt;i&gt;condition&lt;/i&gt;=&lt;i&gt;value&lt;/i&gt;,&lt;i&gt;condition&lt;/i&gt;=&lt;i&gt;value&lt;/i&gt;,...]&lt;i&gt;aeTitle&lt;/i&gt;, &lt;i&gt;aeTitle&lt;/i&gt;,... | NONE
&lt;br&gt;where
&lt;br&gt;&lt;i&gt;condition&lt;/i&gt; = calling|called|command
&lt;br&gt;&lt;i&gt;value&lt;/i&gt; =
the &lt;i&gt;value&lt;/i&gt; is dependant on the condition variable used:&lt;br&gt;calling - if the condition variable is calling, the value is the AE title. Possible values can be configured in the ContentEdit service.
&lt;br&gt;called - if the condition variable is called, the value is the called AE title. Possible values can be configured in the ContentEdit service.
&lt;br&gt;command - if the condition variable is command, the values can be N_CREATE_RQ | N_SET_RQ | N_DELETE_RQ | N_ACTION_RQ(1) | N_ACTION_RQ(2)
&lt;br&gt;Note that you can optionally have a comma-separated list of &lt;i&gt;condition&lt;/i&gt;=&lt;i&gt;value&lt;/i&gt; statements.
&lt;br&gt;&lt;i&gt;aeTitle&lt;/i&gt; = the AE title the forward rule applies to
&lt;br&gt;Note that you can have a comma-separate list of &lt;i&gt;aeTitles&lt;/i&gt; to which the forwarding rule applies.
</description>
<name>ForwardingRules</name>
<type>java.lang.String</type>
<descriptors>
<value value="[calling=PACS_NODEXX]PACS_CENTRAL"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isRetryIfNoSuchSOPInstance" setMethod="setRetryIfNoSuchSOPInstance">
<description>Retry forward if SCP returns status 0112H (No Such SOP Instance).
</description>
<name>RetryIfNoSuchSOPInstance</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCallingAET" setMethod="setCallingAET">
<description>Calling AET used in Association Request.
</description>
<name>CallingAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRetryIntervalls" setMethod="setRetryIntervalls">
<description>Number and intervals of retries for the failed
forward requests.
&lt;br&gt;Format:
&lt;br&gt;Comma separated list of &lt;i&gt;number&lt;/i&gt; x &lt;i&gt;interval&lt;/i&gt; pairs.
&lt;br&gt;The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
&lt;br&gt;Example:
&lt;br&gt;5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
apart for each retry.
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x1m,12x5m,24x1h,7x1d"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency" setMethod="setConcurrency">
<description>Maximum number of concurrent forwarded messages.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getStudyMgtScpServiceName" setMethod="setStudyMgtScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StudyMgtScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Forward DIMSE according to the configured ForwardingRules</description>
<name>forward</name>
<parameter>
<description>Original Calling AE title</description>
<name>origCallingAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Original Called AE title</description>
<name>origCalledAET</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Command Field</description>
<name>cmdfield</name>
<type>int</type>
</parameter>
<parameter>
<description>Action Type ID</description>
<name>actionTypeID</name>
<type>int</type>
</parameter>
<parameter>
<description>Data Set</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>Invoke N_CREATE at remote AE.</description>
<name>ncreate</name>
<parameter>
<description>AET of Remote AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Data Set</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
</operation>
<operation impact="ACTION">
<description>Invoke N_SET at remote AE.</description>
<name>nset</name>
<parameter>
<description>AET of Remote AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Data Set</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
</operation>
<operation impact="ACTION">
<description>Invoke N_ACTION at remote AE.</description>
<name>naction</name>
<parameter>
<description>AET of Remote AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Action Type ID</description>
<name>actionTypeID</name>
<type>int</type>
</parameter>
<parameter>
<description>Data Set</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
</operation>
<operation impact="ACTION">
<description>Invoke N_DELETE at remote AE.</description>
<name>ndelete</name>
<parameter>
<description>AET of Remote AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
</operation>
</mbean>

View File

@@ -0,0 +1,249 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Check File Status Service.<br />
Check one or more file systems for files with given file status <b>CheckFileStatus</b> and query file stati via
configured HSM Module for update.<br />
By configuring <b>HSMModulServicename</b> to Mapped HSMModule (<i>service=FileCopyHSMModule,type=Mapped</i>)
the monitored file systems can be of different types (FileBased, Command,..)
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.hsm.SyncFileStatusService</class>
<constructor>
<description>The default constructor</description>
<name>SyncFileStatusService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getFileSystem"
setMethod="setFileSystem">
<description><![CDATA[Directory/Mount Points of the monitored File Systems. <br />
NONE = disabled this service.]]>
</description>
<name>MonitoredFileSystem</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getHSMModulServicename"
setMethod="setHSMModulServicename">
<description><![CDATA[HSM Module to query status of files on HSM systems.<br />
Module 'dcm4chee.archive:service=FileCopyHSMModule,type=Mapped' can be used if more than one HSM modules are active.
]]></description>
<name>HSMModulServicename</name>
<type>java.lang.String</type>
<descriptors>
<value value="dcm4chee.archive:service=FileCopyHSMModule,type=Command"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMinimumFileAge"
setMethod="setMinimumFileAge">
<description><![CDATA[Only files created longer ago than the specified intervall
##w (in weeks), ##d (in days), ##h (in hours) are checked for status change.]]>
</description>
<name>MinimumFileAge</name>
<type>java.lang.String</type>
<descriptors>
<value value="1w"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCheckFileStatus"
setMethod="setCheckFileStatus">
<description>Checks files with the specified status for status change.
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED
</description>
<name>CheckFileStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="TO_ARCHIVE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isVerifyTar"
setMethod="setVerifyTar">
<description><![CDATA[Enables verification of tar files.<br />
If enabled the tar file is verified by <br />
1) checking MD5 sums of the tar content.<br />
2) check if tar file contains the file.<br />
Only applicable if filesystem is a tar filesystem!
]]></description>
<name>VerifyTar</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSkipVerifyTarHSMStati"
setMethod="setSkipVerifyTarHSMStati">
<description><![CDATA[List of HSM stati for which tar verify should be skipped.<br />
Enumerated values: DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED or NONE.<br />
Optionally HSM status can be overwritten by &lt;hsmStatus&gt;=&lt;newStatus&gt;<br />
newStatus can be DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED or DELETE.<br />
Only applicable if VeryfyTar is enabled!
]]></description>
<name>SkipVerifyTarHSMStati</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getInvalidTarStatus"
setMethod="setInvalidTarStatus">
<description><![CDATA[New file status or DELETE if verification of tar failed.<br />
Enumerated values: DELETE or DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED, MD5_CHECK_FAILED<br />
DELETE..Delete all file entities related to this invalid tar file.<br />
Only applicable if VerifyTar is enabled.
]]></description>
<name>InvalidTarStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNotInTarStatus"
setMethod="setNotInTarStatus">
<description><![CDATA[New file status or DELETE if file is not found in related tar file.<br />
Enumerated values: DELETE or DEFAULT, TO_ARCHIVE, ARCHIVED, QUERY_HSM_FAILED<br />
DELETE..Delete such invalid file entities.
Only applicable if VerifyTar is enabled.
]]></description>
<name>NotInTarStatus</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTaskInterval"
setMethod="setTaskInterval">
<description><![CDATA[Interval in which the File status is checked.
<br>Format:
<br><i>interval</i>!<i>from</i>-<i>to</i> or NEVER
<br><i>interval</i> = ##m (in minutes), ##h (in hours).
<br><i>from</i> = start hour (0-23) when no file status check should be performed
<br><i>to</i> = end hour (0-23) when no file status check should be performed
<br>NEVER = disable file status checking
<br>Example:<br>1h!9-17 means every hour,
synchronize file status, except between the hours of 9:00am and 5:00pm.
By setting this type of TaskInterval, you can perform file status synchronisation outside of peak hours.
]]>
</description>
<name>TaskInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getOldestCreatedTimeOfCheckFileStatus">
<description>Creation Date of oldest file on configured filesystem with file status of configured CheckFileStatus.
</description>
<name>OldestCreatedTimeOfCheckFileStatus</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getLimitNumberOfFilesPerTask"
setMethod="setLimitNumberOfFilesPerTask">
<description>Maximum number of files which are checked for status change in one task.
</description>
<name>NumberOfFilesPerTask</name>
<type>int</type>
<descriptors>
<value value="1000"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if syncFileStatus task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDCheckSyncFileStatus"
setMethod="setTimerIDCheckSyncFileStatus">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDCheckSyncFileStatus</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getTarRetrieverName"
setMethod="setTarRetrieverName">
<description>Used internally. Do NOT modify.
</description>
<name>TarRetrieverName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description><![CDATA[Check files for status changes.<br />
Return number of updated files or -1 if check is already running (Timer).
]]></description>
<name>check</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Update OldestCreatedTimeOfCheckFileStatus.
This will be done automatically every day after midnight if this service is enabled.
]]></description>
<name>updateOldestCreatedTimeOfCheckFileStatus</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Set ARCHIVED flag of Instances where files on given file system has file_status=2 (ARCHIVED).<br />
This can be used to update instances that are already copied with a version prior to 2.16.0.
]]></description>
<name>syncArchivedStatusOfInstances</name>
<parameter>
<description>File System ID where files must have file status ARCHIVED.
</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[Limit number of files that are processed. (values &lt; 1 --&gt; default of 1000)
]]></description>
<name>limit</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>TAR Retriever Service.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.hsm.TarRetrieverService</class>
<constructor>
<description>The default constructor</description>
<name>TarRetrieverService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getHSMModulServicename"
setMethod="setHSMModulServicename">
<description><![CDATA[HSM Module to retrieve files/tarballs from HSM systems.<br />
Use NONE if filesystem has no HSM support.<br />
Module 'dcm4chee.archive:service=FileCopyHSMModule,type=Mapped' can be used if more than one HSM modules are active.
]]></description>
<name>HSMModulServicename</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCacheRoot"
setMethod="setCacheRoot">
<description><![CDATA[Root directory in which retrieved tars are extracted.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.
<b>Attention</b>: For reliable function of the deletion of least recent
accessed objects, a separate file system should be used for the cache.
You also have to take care for moving existing files in the cache to the
new location yourself!]]>
</description>
<name>CacheRoot</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-extracted"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCacheJournalRootDir"
setMethod="setCacheJournalRootDir">
<description><![CDATA[Root directory for cache journal files. A relative
path name is resolved relative to
<i>&lt;archive-install-directory&gt;</i>/server/default/.
<b>Attention:</b> You have to take care for moving existing journal files
to the new location yourself!]]>
</description>
<name>CacheJournalRootDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="tar-extracted-journal" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCacheJournalFilePathFormat"
setMethod="setCacheJournalFilePathFormat">
<description><![CDATA[Defines journal file path, with 'yyyy' will be
replaced by the current year, 'MM' by the current month, 'dd' by the
current date, 'HH' by the current hour and 'mm' by the current minute.
<b>Attention:</b> Can only be modified if the cache is empty!]]>
</description>
<name>CacheJournalFilePathFormat</name>
<type>java.lang.String</type>
<descriptors>
<value value="yyyy/MM/dd/HH/mm" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMinFreeDiskSpace"
setMethod="setMinFreeDiskSpace">
<description><![CDATA[Minimum free disk space on Cache Directory. If the
free available disk space on the cache directory falls below this value,
least recent accessed sub-directories are deleted, BEFORE further TARs
are retrieved and extracted. 1MB = 1000000 bytes, 1GB = 1000MB.]]>
</description>
<name>MinimumFreeDiskSpace</name>
<type>java.lang.String</type>
<descriptors>
<value value="50MB"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPreferredFreeDiskSpace"
setMethod="setPreferredFreeDiskSpace">
<description><![CDATA[Preferred free disk space on Cache Directory. If the
free available disk space on the cache directory falls below this value,
least recent accessed sub-directories are deleted, WITHOUT blocking
retrieve and extraction of further TARs. 1MB = 1000000 bytes, 1GB = 1000MB.]]>
</description>
<name>PreferredFreeDiskSpace</name>
<type>java.lang.String</type>
<descriptors>
<value value="100MB"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getFreeDiskSpace">
<description><![CDATA[Current free disk space on Cache Directory.
1MB = 1000000 bytes, 1GB = 1000MB.]]>
</description>
<name>FreeDiskSpace</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="isCheckMD5"
setMethod="setCheckMD5">
<description><![CDATA[
Defines if the MD5 sum of TAR file entries shall be checked against
values in first entry <code>MD5SUM</code> file during retrieval. If
the check fails, the retrieval will fail. If activated, but the first
TAR entry is not the <code>MD5SUM</code> file, a WARN messages will be
logged in <code>server.log</code>.]]>
</description>
<name>CheckMD5</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getBufferSize"
setMethod="setBufferSize">
<description>Size of write byte buffer.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192"/>
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Retrieve file from TAR specified by File System ID and File ID.
</description>
<name>retrieveFile</name>
<parameter>
<description>File System ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>File ID</description>
<name>fileID</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[Fetch TAR file by File System ID and TAR path.
]]></description>
<name>fetchTarFile</name>
<parameter>
<description>File System ID</description>
<name>fsID</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description><![CDATA[TAR Path (File ID without file reference (!&ltFilePath in tar file&gt;))]]></description>
<name>tarPath</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.io.File</return-type>
</operation>
<operation impact="ACTION">
<description>Delete oldest directories to free specified amount of disk space.
</description>
<name>free</name>
<parameter>
<description>minimal amount of disk space to be released</description>
<name>amount</name>
<type>long</type>
</parameter>
<return-type>long</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[Cache compiled XSL Stylesheets.]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.TemplatesService</class>
<constructor>
<description>The default constructor</description>
<name>TemplatesService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Get compiled stylesheet for specified XSL file.</description>
<name>getTemplates</name>
<parameter>
<name>xslfile</name>
<type>java.io.File</type>
</parameter>
<return-type>javax.xml.transform.Templates</return-type>
</operation>
<operation impact="ACTION">
<description>Get compiled stylesheet for specified AE title and file name.</description>
<name>getTemplatesForAET</name>
<parameter>
<name>configDirectory</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>fileName</name>
<type>java.lang.String</type>
</parameter>
<return-type>javax.xml.transform.Templates</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[find compiled stylesheet in list of subdirectories and file names.<br>
A filename has following format: [&lt;prefix&gt;]&lt;fileNames[i]&gt;[&lt;postfix&gt;] <br />
The first file that exists in given subdirectories or configDirectory is used to get the Template.
]]></description>
<name>findTemplates</name>
<parameter>
<name>configDirectory</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>subdirs</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<name>prefix</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<name>fileNames</name>
<type>[Ljava.lang.String;</type>
</parameter>
<parameter>
<name>postfix</name>
<type>java.lang.String</type>
</parameter>
<return-type>javax.xml.transform.Templates</return-type>
</operation>
<operation impact="ACTION">
<description>Clear cache to force recompile at next access.</description>
<name>clearCache</name>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>TLS Configuration</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.TLSConfigService</class>
<constructor>
<description>The default constructor</description>
<name>TLSConfigService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getEnabledProtocols"
setMethod="setEnabledProtocols">
<!-- Security -->
<description><![CDATA[Comma separated list of protocol versions enabled
for use on this connection. See <b>SupportedProtocols</b> for possible
values. Default: TLSv1,SSLv3]]>
</description>
<name>EnabledProtocols</name>
<type>java.lang.String</type>
<descriptors>
<value value="TLSv1,SSLv3" />
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="getSupportedProtocols">
<description><![CDATA[Supported protocol versions by the used SSL provider.
Defines possible values for <b>EnabledProtocols</b>.]]>
</description>
<name>SupportedProtocols</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="isNeedClientAuth"
setMethod="setNeedClientAuth">
<!-- Security -->
<description><![CDATA[Set to <tt>true</tt> if client authentication is
required, or <tt>false</tt> if no client authentication is desired.]]>
</description>
<name>NeedClientAuthentication</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getKeyStoreURL"
setMethod="setKeyStoreURL">
<!-- Security -->
<description>URL of key store containing key used in SSL handshake,
when running in TLS mode.
</description>
<name>KeyStoreURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="resource:certificates/test_sys_1.p12" />
</descriptors>
</attribute>
<attribute access="write-only"
setMethod="setKeyStorePassword">
<!-- Security -->
<description>The password for access to key store,
specified by attribute KeyStoreURL.
</description>
<name>KeyStorePassword</name>
<type>java.lang.String</type>
<descriptors>
<value value="secret" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTrustStoreURL"
setMethod="setTrustStoreURL">
<!-- Security -->
<description>URL of trust store containing accepted certificates,
when running in TLS mode.
</description>
<name>TrustStoreURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="resource:certificates/mesa_certs.jks" />
</descriptors>
</attribute>
<attribute access="write-only"
setMethod="setTrustStorePassword">
<!-- Security -->
<description>The password for access to trust store,
specified by attribute TrustStoreURL.
</description>
<name>TrustStorePassword</name>
<type>java.lang.String</type>
<descriptors>
<value value="secret" />
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Used internally</description>
<name>handshakeFailedListener</name>
<return-type>org.dcm4che.util.HandshakeFailedListener</return-type>
</operation>
<operation impact="INFO">
<description>Used internally</description>
<name>handshakeCompletedListener</name>
<return-type>javax.net.ssl.HandshakeCompletedListener</return-type>
</operation>
<operation impact="ACTION">
<description>Used internally</description>
<name>serverSocketFactory</name>
<parameter>
<name>cipherSuites</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>javax.net.ServerSocketFactory</return-type>
</operation>
<operation impact="ACTION">
<description>Used internally</description>
<name>socketFactory</name>
<parameter>
<name>cipherSuites</name>
<type>[Ljava.lang.String;</type>
</parameter>
<return-type>javax.net.SocketFactory</return-type>
</operation>
<operation impact="ACTION">
<description>Used internally</description>
<name>startHandshake</name>
<parameter>
<name>sock</name>
<type>java.net.Socket</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
<notification>
<description>The notification sent whenever a SSL handshake failed on a
given SSL connection.
</description>
<name>javax.management.Notification</name>
<notification-type>org.dcm4che.util.HandshakeFailedEvent</notification-type>
</notification>
<notification>
<description>The notification sent whenever a SSL handshake completed on
a given SSL connection.
</description>
<name>javax.management.Notification</name>
<notification-type>javax.net.ssl.HandshakeCompletedEvent</notification-type>
</notification>
</mbean>

View File

@@ -0,0 +1,234 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>
Service to update patient.pat_attrs, study.study_attrs, series.series_attrs
and instance.inst_attrs BLOB columns from filed instances. Useful after
modification/extension of attribute filter configuration
conf/dcm4chee-attribute-filter.xml.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.mbean.UpdateAttributesService</class>
<constructor>
<description>The default constructor</description>
<name>UpdateAttributesService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getModality"
setMethod="setModality">
<description>
Limit update to Series with specified Modality. 'ANY' = update Series
with any Modality.
</description>
<name>Modality</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSourceAETitle"
setMethod="setSourceAETitle">
<description>
Limit update to Series received from Storage SCU with specified AE
Title. 'ANY' = update Series received from any Storage SCU.
</description>
<name>SourceAETitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getUpdatedAfter"
setMethod="setUpdatedAfter">
<description>
Limit update to Series which were last updated after the specified time.
Format: YYYY-MM-DD hh:mm:ss, with YYYY = Year, MM = Month, DD = Day,
hh = Hour, mm = Minute, ss = Second.
</description>
<name>UpdatedAfter</name>
<type>java.lang.String</type>
<descriptors>
<value value="2004-01-01 00:00:00" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getUpdatedBefore"
setMethod="setUpdatedBefore">
<description>
Limit update to Series which were last updated before the specified time.
Format: YYYY-MM-DD hh:mm:ss, with YYYY = Year, MM = Month, DD = Day, hh =
Hour, mm = Minute, ss = Second. 'AUTO' will be replaced by modification
date of attribute filter configuration conf/dcm4chee-attribute-filter.xml.
</description>
<name>UpdatedBefore</name>
<type>java.lang.String</type>
<descriptors>
<value value="AUTO" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAvailability"
setMethod="setAvailability">
<description>
Update Series with specified Availability: 'ONLINE' or 'NEARLINE'.
</description>
<name>Availability</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaximalNumberOfSeriesToUpdateByOneTask"
setMethod="setMaximalNumberOfSeriesToUpdateByOneTask">
<description>
Limit maximal number of Series updated by operation updateMatchingSeries().
</description>
<name>MaximalNumberOfSeriesToUpdateByOneTask</name>
<type>int</type>
<descriptors>
<value value="100" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceConfigDir"
setMethod="setCoerceConfigDir">
<description><![CDATA[Directory where configuration files for
attribute coercion are located.<br /> A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCoerceStylesheet"
setMethod="setCoerceStylesheet">
<description><![CDATA[Name of stylesheet to coerce attributes after updating.<br />
Use NONE to disable coercion]]>
</description>
<name>CoerceStylesheet</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isCoerceInstanceLevel"
setMethod="setCoerceInstanceLevel">
<description><![CDATA[Enable coercion via stylsheet also on instance level. <br />
If disabled coercion is applied on Series/Study/Patient level.<br />
Caution: enable this will be a performance issue!]]>
</description>
<name>CoerceInstanceLevel</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueryRetrieveScpServiceName"
setMethod="setQueryRetrieveScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>QueryRetrieveScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>
Returns number of Series which match specified Modality, source AE Title
and last update time.
</description>
<name>countNumberOfMatchingSeriesToUpdate</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>
Update attributes of instances of Series which match specified Modality,
Source AE Title and last update time, limited by configured
MaximalNumberOfSeriesToUpdateByOneTask. Returns number of updated Series.
</description>
<name>updateMatchingSeries</name>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>
Update attributes of instances of Series which match specified Modality,
Source AE Title and last update time, limited by configured
MaximalNumberOfSeriesToUpdateByOneTask. Returns number of updated Series
and elapsed time in string message.
</description>
<name>updateMatchingSeriesShowElapsedTime</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>
Update attributes of instances of Series with specified Series Instance
UID. Returns number of updated Instances.
</description>
<name>updateSeries</name>
<parameter>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description>
Update attributes of instance with specified SOP Instance UID.
Returns number of updated Instances.
</description>
<name>updateInstance</name>
<parameter>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<return-type>int</return-type>
</operation>
<operation impact="ACTION">
<description><![CDATA[
Reload Attribute Filter configuration from
<i>conf/dcm4chee-attribute-filter.xml</i>. Implicit invoked by
operations <b>updateMatchingSeries()</b>,
<b>updateMatchingSeriesShowElapsedTime()</b> and <b>updateSeries()</b>.]]>
</description>
<name>reloadAttributeFilter</name>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>
Upgrade to Enhanced Multi-frame Image Service. Upgrades received Series of
legacy DICOM CT/MR/PET Single-frame images to a Private ABPACS Upgraded
CT/MR/PET Multi-frame image, which IOD match that of a regular DICOM Enhanced
CT/MR/PET Multi-frame image at maximum degree.
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.archive.emf.UpgradeToEnhancedMFService</class>
<constructor>
<description>The default constructor</description>
<name>UpgradeToEnhancedMFService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getConfigDir"
setMethod="setConfigDir">
<description>
Directory where XML configuration files defining the generation of ABPACS
Upgraded Multi-frame images from DICOM CT, MR or PET Single-frame images are
located: if "upgrade-ct.xml", "upgrade-mr.xml" or "upgrade-pet.xml" exists in
this directory or in a sub-directory equal to the AE Title of the Storage
SCU, received CT, MR or PET Series will be upgraded ABPACS Upgraded CT, MR
or PET Multi-frame images. A relative path name is resolved relative to
archive-install-directory/server/default/.
</description>
<name>ConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFileSystemGroupID"
setMethod="setFileSystemGroupID">
<description>ID of file system group, on which generated Upgraded Multi-frame
images are stored.
</description>
<name>FileSystemGroupID</name>
<type>java.lang.String</type>
<descriptors>
<value value="ONLINE_STORAGE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isMergePatientStudySeriesAttributesFromDB"
setMethod="setMergePatientStudySeriesAttributesFromDB">
<description>
&lt;p&gt;Defines, if Patient, Study and Series attributes are merged from
corresponding DB records into the generated Multi-frame image, so they need
not be specified in upgrade-XX.xml to be copied from the Single-frame images
to the generated Multi-frame image. Attributes not specified in
upgrade-XX.xml are not verified for equality of values over all source
images. Therefore, skipping such attributes from upgrade-XX.xml allows the
generation of the Multi-frame image even if the attribute value differs
between source images.&lt;/p&gt; &lt;p&gt;Series Instance UID is never merged
from the DB, so it can be defined by upgrade-XX.xml - including an entry for
the Series Instance UID attribute or not - if the generated Multi-frame image
shall be put into the same Series as the source images, or not.&lt;/p&gt;
</description>
<name>MergePatientStudySeriesAttributesFromDB</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isNoPixelData"
setMethod="setNoPixelData">
<description>
Defines, if the generated Multi-frame image is stored with DICOM Transfer
Syntax: No Pixel Data [Deflate] without pixel data. If
&lt;code&gt;false&lt;/code&gt;, pixel data is copied from the original
Single-frame images into the generated Multi-frame image.
</description>
<name>NoPixelData</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDeflate" setMethod="setDeflate">
<description>
Defines, if the generated Multi-frame image is stored with DICOM Transfer
Syntax &lt;i&gt;No Pixel Data&lt;/i&gt; or &lt;i&gt;No Pixel Data
Deflate&lt;/i&gt;. Only effective, if attribute
&lt;b&gt;NoPixelData&lt;/b&gt; is &lt;code&gt;true&lt;/code&gt;.
</description>
<name>Deflate</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDeleteOriginalStoredSeries"
setMethod="setDeleteOriginalStoredSeries">
<description>
Defines, if original stored Series of legacy CT/MR/PET Single-frame images
are deleted after successful storage of the generated Enhanced Multi-frame
image.&lt;br/&gt; Warning: Will break configured forwarding, file copy to HSM
file system and Image Available Notification. Also cause loss of private
attributes of legacy CT/MR/PET Single-frame images, which are not included in
the generated Enhanced Multi-frame image.
</description>
<name>DeleteOriginalStoredSeries</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getBufferSize"
setMethod="setBufferSize">
<description>
Size of byte buffer used for copying pixel data to generated Multi-frame
image file.
</description>
<name>BufferSize</name>
<type>int</type>
<descriptors>
<value value="8192" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConcurrency"
setMethod="setConcurrency">
<description>
Maximum number of concurrent processed Upgrade Requests.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getQueryRetrieveScpServiceName"
setMethod="setQueryRetrieveScpServiceName">
<description>Used internally. Do NOT modify.</description>
<name>QueryRetrieveScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Check if upgrade of stored Series is enabled</description>
<name>isUpgradeEnabled</name>
<parameter>
<name>storedSeries</name>
<type>org.dcm4chex.archive.common.SeriesStored</type>
</parameter>
<return-type>boolean</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- $Id$ -->
<mbean>
<description>UPS Feed Service. Used to add entries to the Unified Worklist,
triggered by received MPPS N-Set messages.</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.ups.UPSFeedService</class>
<constructor>
<description>The default constructor</description>
<name>UPSFeedService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write"
getMethod="getWorkItemConfigDir"
setMethod="setWorkItemConfigDir">
<description><![CDATA[Directory where configuration files for
creation of work items on receive of final MPPS messages are located:
if XSL stylesheet "mpps2ups.xsl" exists in this directory or in a
sub-directory equal to the AE Title of the modality, a work item will be
created on receive of the last object refered in the final MPPS,
according these stylesheet. A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>WorkItemConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getUPSScpServiceName"
setMethod="setUPSScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>UPSScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getIANScuServiceName"
setMethod="setIANScuServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>IANScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,655 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<!-- $Id$ -->
<mbean>
<description>DICOM Unified Worklist and Procedure Step related Service Class Providers</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.dcm.ups.UPSScpService</class>
<constructor>
<description>The default constructor</description>
<name>UPSScpService</name>
</constructor>
<!-- Attributes -->
&defaultAttributes;
<attribute access="read-write"
getMethod="getCalledAETs"
setMethod="setCalledAETs">
<description>List of accepted called AE titles, separated by \(backslash).
For example, ABPACS\ABPACS2.
</description>
<name>CalledAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getCallingAETs"
setMethod="setCallingAETs">
<description><![CDATA[
List of accepted calling AE titles, separated by \(backslash).<br/>
ANY = accept any. <br/>
CONFIGURED_AETS = accept any configured AE Title.]]>
</description>
<name>CallingAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="ANY"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getWorklistLabel"
setMethod="setWorklistLabel">
<description><![CDATA[Default value for <i>Worklist Label (0074,1202)</i>,
used if no value is provided in the N-CREATE RQ by the UPS Push SCU.]]>
</description>
<name>WorklistLabel</name>
<type>java.lang.String</type>
<descriptors>
<value value="Worklist"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementIssuerOfPatientID"
setMethod="setSupplementIssuerOfPatientID">
<description><![CDATA[Supplement received UPS N-CREATE message containing
a <i>Patient ID</i>, but no <i>Issuer of Patient ID</i>, with a value
for <i>Issuer of Patient ID</i>, if such is associated with the
UPS SCU AE by its AE Configuration entry.]]>
</description>
<name>SupplementIssuerOfPatientID</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostName"
setMethod="setSupplementByHostName">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i>
associated to the UPS 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 UPS SCU AE will be considered to determine
the associated <i>Issuer of Patient ID</i>. If there are several
AE configuration entries with matching host name with different
non-zero values for <i>Issuer of Patient ID</i>, no
<i>Issuer of Patient ID</i> will be supplemented.]]>
</description>
<name>SupplementByHostName</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isSupplementByHostAddress"
setMethod="setSupplementByHostAddress">
<description><![CDATA[If there is no <i>Issuer of Patient ID</i>
associated to the UPS 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 UPS SCU AE will be considered to determine
the associated <i>Issuer of Patient ID</i>. If there are several
AE configuration entries with matching host name with different
non-zero values for <i>Issuer of Patient ID</i>, no
<i>Issuer of Patient ID</i> will be supplemented.]]>
</description>
<name>SupplementByHostAddress</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPatientMatching"
setMethod="setPatientMatching">
<description><![CDATA[Defines which Patient Attributes in received
UPS N-CREATE requests shall be considered for the selection of an existing
Patient record in the archive.
<p>
Format: 'pid'['?']',issuer'['?'][',' ['['] <i>demograhic-matches</i> [']'] ]
<br/><i>demograhic-matches</i> ::= <i>demograhic-match</i>['|' ...]
<br/><i>demograhic-match</i> ::= [<i>ignore</i>',']<i>demograhic-fields</i>
<br/><i>ignore</i> ::= 'ignore("' <i>regular-expression</i> '")'
<br/><i>demograhic-fields</i> ::= <i>demograhic-field</i>['?'][',' ...]
<br/><i>demograhic-field</i> ::= 'familyname'['(1)'] | 'givenname'['(1)'] | 'middlename'['(1)'] | 'nameprefix'['(1)'] | 'namesuffix'['(1)'] | birthdate | sex
<p>
Multiple alternative <i>demograhic-matches</i> can be specified using '|' as
delimiter.
<p>
Substrings specified by 'ignore("' <i>regular-expression</i> '")' will be ignored for matching patient name
components.
<p>
A '(1)' suffix of the attribute name specifies that only the first character
need to match.
<p>
A question mark('?') after a attribute name specifies that a missing value in
received DICOM N-CREATE requests 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 UPS
N-CREATE request. Attribute names without question marks specifies, that DICOM
UPS N-CREATE requests 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 UPS N-CREATE request.
<p>
With 'pid<b>?</b>', you have to configure the Patient's family name complex
('familyname') as additional matching criterium.
<p>
Surrounding <i>demograhic-match</i> 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 UPS N-CREATE request *and* in the matching Patient Record.
<p><b>Warning:</b>Improper configuration may cause UPS assignments to wrong patient.<br/>
<p>Default: <code>pid,issuer?[familyname,givenname,middlename?,birthdate]</code>
]]>
</description>
<name>PatientMatching</name>
<type>java.lang.String</type>
<descriptors>
<value value="pid,issuer?[familyname,givenname,middlename?,birthdate]" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isNoMatchForNoValue"
setMethod="setNoMatchForNoValue">
<description>Do not match entities with zero-length value for specified
matching keys.
</description>
<name>NoMatchForNoValue</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedSOPClasses"
setMethod="setAcceptedSOPClasses">
<description><![CDATA[
List of accepted UPS related SOP Classes. Use either the SOP Class
UID value, or following defined symbolic names:
UnifiedProcedureStepPushSOPClass,
UnifiedProcedureStepWatchSOPClass,
UnifiedProcedureStepPullSOPClass,
UnifiedProcedureStepEventSOPClass]]>
</description>
<name>AcceptedSOPClasses</name>
<type>java.lang.String</type>
<descriptors>
<value value="
UnifiedProcedureStepPushSOPClass
UnifiedProcedureStepWatchSOPClass
UnifiedProcedureStepPullSOPClass
UnifiedProcedureStepEventSOPClass
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcceptedTransferSyntax"
setMethod="setAcceptedTransferSyntax">
<description><![CDATA[
List of accepted Transfer Syntaxes. Order defines selection preference.
Use either the Transfer Syntaxes UID value or following defined
symbolic names:
ImplicitVRLittleEndian,
ExplicitVRLittleEndian,
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian
]]>
</description>
<name>AcceptedTransferSyntax</name>
<type>java.lang.String</type>
<descriptors>
<value value="
ExplicitVRLittleEndian
ImplicitVRLittleEndian
"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxPDULength"
setMethod="setMaxPDULength">
<description>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!
</description>
<name>MaximumPDULength</name>
<type>int</type>
<descriptors>
<value value="16352"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsInvoked"
setMethod="setMaxOpsInvoked">
<description>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!
</description>
<name>MaximumOperationsInvoked</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getMaxOpsPerformed"
setMethod="setMaxOpsPerformed">
<description>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!
</description>
<name>MaximumOperationsPerformed</name>
<type>int</type>
<descriptors>
<value value="1"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAcTimeout"
setMethod="setAcTimeout">
<description>A-Associate accept timeout in milliseconds. 0 = no timeout.
</description>
<name>AcceptTimeout</name>
<type>int</type>
<descriptors>
<value value="10000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getDimseTimeout"
setMethod="setDimseTimeout">
<description>DIMSE message timeout in milliseconds. 0 = no timeout.
</description>
<name>DIMSETimeout</name>
<type>int</type>
<descriptors>
<value value="60000"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSoCloseDelay"
setMethod="setSoCloseDelay">
<description>Socket close delay in milliseconds after an A-Release response.
</description>
<name>SocketCloseDelay</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isTcpNoDelay"
setMethod="setTcpNoDelay">
<description>Send packets as quickly as possible (Disable Nagle's algorithmn).
</description>
<name>TcpNoDelay</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getSendBufferSize"
setMethod="setSendBufferSize">
<description>Buffer size used for socket output. 0 = use platform default.
</description>
<name>SendBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReceiveBufferSize"
setMethod="setReceiveBufferSize">
<description>Buffer size used for socket input. 0 = use platform default.
</description>
<name>ReceiveBufferSize</name>
<type>int</type>
<descriptors>
<value value="0" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAccessBlobAsLongVarBinary"
setMethod="setAccessBlobAsLongVarBinary">
<description>Change JDBC binding for Oracle BLOB's to LONGVARBINARY for
accessing attributes stored in BLOB columns of DB records.
</description>
<name>AccessBlobAsLongVarBinary</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTransactionIsolationLevel"
setMethod="setTransactionIsolationLevel">
<description>Transaction isolation level for queries. Values can be one of:
DEFAULT|READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE.
</description>
<name>TransactionIsolationLevel</name>
<type>java.lang.String</type>
<descriptors>
<value value="DEFAULT"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getReportRetryIntervalls"
setMethod="setReportRetryIntervalls">
<description><![CDATA[Number and interval of retries made to notify a
SCU of a change in state of a UPS instance.
<p>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs or NEVER.
<br>The interval can be specified in seconds (##s), minutes (##m), hours (##h)
or days (##d).
<br/>Individual settings for specific Destination AETs can be specified by
prefix [AET], separating several AET setting by new line. An entry without
[AET] prefix will be treated as default.
<p>Example: 5x1m,10x10m
<br/>=> retry a total of 5 times, one minute apart for each retry; then retry
a total of 10 times, 10 minutes apart for each retry.
<p>Example:
<br/>[AET1]2x1m,3x10m
<br/>[AET2]NEVER
<br/>5x1m,10x10m
<br/>=> for destination AET1 retry a total of 2 times, one minute apart for
each retry; then retry a total of 3 times, 10 minutes apart for each retry.
Retries are disabled for destination AET2. For all other destinations retry a
total of 5 times, one minute apart for each retry; then retry a total of 10
times, 10 minutes apart for each retry. ]]>
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConcurrency"
setMethod="setConcurrency">
<description>Maximum number of concurrent notifications.
</description>
<name>Concurrency</name>
<type>int</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size.
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getDcmServerName"
setMethod="setDcmServerName">
<description>Used internally. Do NOT modify.
</description>
<name>DcmServerName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getAEServiceName"
setMethod="setAEServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>AEServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTLSConfigName"
setMethod="setTLSConfigName">
<description>Used internally. Do NOT modify.
</description>
<name>TLSConfigName</name>
<type>javax.management.ObjectName</type>
</attribute>
<!-- Operations -->
&defaultOperations;
<operation impact="ACTION">
<description>Create UPS.</description>
<name>createUPS</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
notification of globally subscribed Receiving AEs.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Attribute List</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Update UPS with matching Work Item Code and Requested
Procedure ID or create new UPS.</description>
<name>updateOrCreateUPS</name>
<parameter>
<description>Attribute List</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Update specified UPS.</description>
<name>updateUPS</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
notification of subscribed Receiving AEs.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>UPS SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Modification List</description>
<name>dataset</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Change State of specified UPS to IN PROGRESS.
Returns Transaction UID.</description>
<name>startUPS</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
notification of subscribed Receiving AEs.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>UPS SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Change State of specified UPS to COMPLETED.</description>
<name>completeUPS</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
notification of subscribed Receiving AEs.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>UPS SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Transaction UID</description>
<name>tuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Change State of specified UPS to CANCELED.</description>
<name>cancelUPS</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
notification of subscribed Receiving AEs.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>UPS SOP Instance UID</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Transaction UID</description>
<name>tuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Subscribe to receive UPS Event Reports for specified
UPS.</description>
<name>subscribeReceiveUPSEventReports</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
initial notification of subscribing Receiving AE.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>UPS SOP Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Receiving AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Deletion Lock</description>
<name>dellock</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Subscribe to receive UPS Event Reports globally.</description>
<name>subscribeGlobally</name>
<parameter>
<description>Calling AE Title used by UPS SCP in Association RQ for
initial notification of subscribing Receiving AE.</description>
<name>scpaet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Receiving AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Deletion Lock</description>
<name>dellock</name>
<type>boolean</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Unsubscribe from receiving UPS Event Reports for
specified UPS.</description>
<name>unsubscribeReceiveUPSEventReports</name>
<parameter>
<description>UPS SOP Instance UID</description>
<name>uid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Receiving AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Unsubscribe from Receiving UPS Event Reports globally.</description>
<name>unsubscribeGlobally</name>
<parameter>
<description>Receiving AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Suspend Global Subscription.</description>
<name>suspendGlobalSubscription</name>
<parameter>
<description>Receiving AE</description>
<name>aet</name>
<type>java.lang.String</type>
</parameter>
<return-type>void</return-type>
</operation>
<!-- Notifications -->
</mbean>

View File

@@ -0,0 +1,564 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[<b>WADO Service</b><br/>
Provides a Web Enabled DICOM Server to allow <b>W</b>eb <b>A</b>ccess for <b>D</b>ICOM persistent <b>O</b>bjects.<br/>
Supported mime-types are <tt>application/dicom</tt> ,<tt>image/jpeg</tt> ,<tt>image/png</tt>.<br>
Supported Optional request parameter: <i>rows, column, frameNumber, transferSyntax</i> and <i>contentType</i>.
<p>
<dl>
<dt>particular features:</dt>
<dd>This implementation use relational query support.<br>
Therefore the request parameter <i>studyUID</i> and <i>seriesUID</i> may be empty.
(it is NOT allowed to omit these parameters due to WADO specification)</dd>
<dd>Redirect: If this WADO service handles a request for an object that is external retrievable,
a client- or server side redirect can be initiated (see <tt>useClientRedirect</tt>).</dd>
<dd> special mime types:
<dl>
<dt>image/png16:</dt>
<dd>Get 16 bit grayscale PNG without applied LUT's</dd>
<dt>application/dicom+xml:</dt>
<dd>get XML representation (dcm4che14 format) of dicom header (note: '+' is %2B in URL).</dd>
<dd>This XML can be transformed with an XSL stylesheet configured by <code>DicomXslURL</code> MBean attribute.</dd>
<dd>Use DicomXslURL=NONE to get the xml without transformation</dd>
<dd>With the URL parameter <code>privateTags=no</code> the private tags will be removed from output.</dd>
</dd>
</dl>
<dd>
</dl>
</p>
]]>
</description>
<descriptors>
<persistence persistPolicy="OnUpdate" />
<persistence-manager
value="org.jboss.mx.persistence.DelegatingPersistenceManager" />
</descriptors>
<class>org.dcm4chex.wado.mbean.WADOService</class>
<constructor>
<description>The default constructor</description>
<name>WADOService</name>
</constructor>
<attribute access="read-write" getMethod="getCacheDataRootDir"
setMethod="setCacheDataRootDir">
<description><![CDATA[Root directory of JPEG file cache.
A relative path name is resolved relative to
<i>&lt;archive-install-directory&gt;</i>/server/default/.<br/>
<b>Attention:</b> You have to take care for moving existing JPEG files in the
cache to the new location yourself!]]>
</description>
<name>CacheDataRootDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="wadocachedata" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCacheNumberOfStudyBags"
setMethod="setCacheNumberOfStudyBags">
<description><![CDATA[Defines numbers of sub-directories to which study
directories are distributed to reduce the number of sub-directories in the
root directory. Examples:<br/>
'1' - no distribution of study directores - the root directory
contains as many sub-directories as different studies in the cache.<br/>
'67'- study directories are distributed across 67 sub-directories of the root
directory.<br/>
'67*71' - study directories are distributed across 67*71 sub-directories,
where the root directory contains 67 sub-directories, which each is itself
splitted into 71 sub-directories.<br/>
<b>Attention:</b> Can only be modified if the cache is empty!]]>
</description>
<name>CacheNumbersOfStudyBags</name>
<type>java.lang.String</type>
<descriptors>
<value value="1" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCacheJournalRootDir"
setMethod="setCacheJournalRootDir">
<description><![CDATA[Root directory for JPEG file cache journal files.
A relative path name is resolved relative to
<i>&lt;archive-install-directory&gt;</i>/server/default/.<br/>
<b>Attention:</b> You have to take care for moving existing journal files to
the new location yourself!]]>
</description>
<name>CachJournalRootDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="wadocachejournal" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getCacheJournalFilePathFormat"
setMethod="setCacheJournalFilePathFormat">
<description><![CDATA[Defines Journal File path, with 'yyyy' will be
replaced by the current year, 'MM' by the current month, 'dd' by the current
date, 'HH' by the current hour and 'mm' by the current minute.<br/>
<b>Attention:</b> Can only be modified if the cache is empty!]]>
</description>
<name>CacheJournalFilePathFormat</name>
<type>java.lang.String</type>
<descriptors>
<value value="yyyy/MM/dd/HH/mm" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDisableCache"
setMethod="setDisableCache">
<description>Disable/enable File caching of generated images. </description>
<name>DisableCache</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isEnableClearCacheForReceivedSeries"
setMethod="setEnableClearCacheForReceivedSeries">
<description>Disable/enable removing cache entries when a series is received.
This is only required when modified objects are resent with the same SOP Instance UID (NOT DICOM conform!).
</description>
<name>EnableClearCacheForReceivedSeries</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDeleterThresholds"
setMethod="setDeleterThresholds">
<description><![CDATA[Defines thresholds dependent on hour of day, for deleting the most
infrequently accessed images. Format: HOUR:##MB or HOUR:##GB,
multiple thresholds with different (start) hour separated by ';'.]]>
</description>
<name>DeleterThresholds</name>
<type>java.lang.String</type>
<descriptors>
<value value="7:10MB;19:100MB" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFreeDiskSpaceInterval"
setMethod="setFreeDiskSpaceInterval">
<description>Interval in which the available disk space is
checked and, if necessary, the cache is cleaned. Format: ##m (in
minutes), ##h (in hours), ##d (in days). NEVER (= disable cache
deletion). </description>
<name>FreeDiskSpaceInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="10m" />
</descriptors>
</attribute>
<attribute access="read-only" getMethod="getImageSopCuids">
<description><![CDATA[
List of image SOP Classes that this WADO service can handled as image.
(List is defined as AcceptedImageSOPClasses in StoreScp Service]]>
</description>
<name>ImageSOPClasses</name>
<type>java.lang.String</type>
<descriptors>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getImageQuality"
setMethod="setImageQuality">
<description>The quality of JPEG images to be returned within the
range 1 to 100, 100 being the best quality. </description>
<name>ImageQuality</name>
<type>java.lang.String</type>
<descriptors>
<value value="75" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getImageWriterClass"
setMethod="setImageWriterClass">
<description><![CDATA[Class name of used JPEG Encoder, either implementing
<code>javax.imageio.ImageWriter</code> (e.g.:
<code>com.sun.imageio.plugins.jpeg.JPEGImageWriter</code>,
<code>com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter</code>) or
- if provided by the JRE -
<code>com.sun.image.codec.jpeg.JPEGImageEncoder</code>.]]>
</description>
<name>ImageWriterClass</name>
<type>java.lang.String</type>
<descriptors>
<value
value="com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isJpgWriterSupportsByteColormap"
setMethod="setJpgWriterSupportsByteColormap">
<description><![CDATA[JPEG Writer supports 8 bit images with indexed colors.<br />
If <code>false</code>: Force 8-bit RGB conversion to handle windowing,
PALETTE COLOR images,.. directly in WADO Service.]]>
</description>
<name>JpgWriterSupportsByteColormap</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isJpgWriterSupportsShortColormap"
setMethod="setJpgWriterSupportsShortColormap">
<description><![CDATA[JPEG Writer supports >8 bit images with indexed colors.<br />
If <code>false</code>: Force 8-bit RGB conversion for > 8bit/pixel images to handle windowing,
PALETTE COLOR images,.. directly in WADO Service.]]>
</description>
<name>JpgWriterSupportsShortColormap</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPNGImageWriterClass"
setMethod="setPNGImageWriterClass">
<description><![CDATA[Class name of used PNG Encoder, implementing
<code>javax.imageio.ImageWriter</code> <br/>
e.g.: com.sun.imageio.plugins.png.PNGImageWriter, com.sun.media.imageioimpl.plugins.png.CLibPNGImageWriter ]]>
</description>
<name>PNGImageWriterClass</name>
<type>java.lang.String</type>
<descriptors>
<value
value="com.sun.imageio.plugins.png.PNGImageWriter" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isClientRedirect"
setMethod="setClientRedirect">
<description>Enables client side redirection if requested
DICOM object is no locally available. If client side redirect is
disabled, the server side redirect is enabled! </description>
<name>useClientRedirect</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isRedirectCaching"
setMethod="setRedirectCaching">
<description>Enables caching for server side redirect! has no
effect if client side redirect is enabled! </description>
<name>useRedirectCaching</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUseTransferSyntaxOfFileAsDefault"
setMethod="setUseTransferSyntaxOfFileAsDefault">
<description>Set the handling of missing transfersyntax parameter
if content type is application/dicom. If enabled, the default
transfer syntax is chosen from the file.(NOT WADO conform!) If
disabled, the default transfer syntax is explicit VR little endian
(as defined in part 18). </description>
<name>UseTransferSyntaxOfFileAsDefault</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getSrImageRows"
setMethod="setSrImageRows">
<description>Set fixed size of referenced images in rendered
Structured Reports (by rows). NONE means original image size.
</description>
<name>SRfixedImageRows</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getHtmlXslURL"
setMethod="setHtmlXslURL">
<description><![CDATA[Filepath or URL to XSLT stylesheet to render DICOM SR to HTML<br/>
A relative path name (filepath or File URL) is resolved relative to <i>&lt;archive-install-directory&gt;</i>/server/default/
(Use NONE to disable this transformation). ]]></description>
<name>HtmlXslURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-wado/sr_html.xsl" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getXHtmlXslURL"
setMethod="setXHtmlXslURL">
<description><![CDATA[Filepath or URL to XSLT stylesheet to render DICOM SR to XHTML<br/>
A relative path name (filepath or File URL) is resolved relative to <i>&lt;archive-install-directory&gt;</i>/server/default/
(Use NONE to disable this transformation). ]]></description>
<name>XHtmlXslURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-wado/sr_html.xsl" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getXmlXslURL"
setMethod="setXmlXslURL">
<description><![CDATA[Filepath or URL to XSLT stylesheet to render DICOM SR to XML<br/>
A relative path name (filepath or File URL) is resolved relative to <i>&lt;archive-install-directory&gt;</i>/server/default/
(Use NONE to disable this transformation). ]]></description>
<name>XmlXslURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-wado/sr_xml_style.xsl" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDicomXslURL"
setMethod="setDicomXslURL">
<description><![CDATA[Filepath or URL to XSLT stylesheet to transform xml output of requests with contentType application/dicom+xml<br/>
A relative path name (filepath or File URL) is resolved relative to <i>&lt;archive-install-directory&gt;</i>/server/default/
Use NONE to disable this transformation for pure xml representation of requested DICOM object (dcm4che14 format).<br />
Use <i>conf/dcm4chee-wado/dicom_html.xsl</i> to render attributes of DICOM object as HTML.]]></description>
<name>DicomXslURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getContentTypeDicomXML"
setMethod="setContentTypeDicomXML">
<description>Response Content type (mime type) of request
with application/dicom+xml. Use NONE to disable
application/dicom+xml requests. </description>
<name>ContentTypeDicomXML</name>
<type>java.lang.String</type>
<descriptors>
<value value="text/html" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTextSopCuids"
setMethod="setTextSopCuids">
<description>List of SOP Class UIDs that are used to find Text
(SR) documents (separated with semicolon or newline). Use either
the SOP Class UID or the symbolic name! Use an empty value to
reset this list. </description>
<name>TextSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value value="" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getVideoSopCuids"
setMethod="setVideoSopCuids">
<description>List of Video SOP Class UIDs for mpeg2 support
(separated with semicolon or newline). Use either the SOP Class
UID or the symbolic name! Use NONE to disable mpeg2 support.
</description>
<name>VideoSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value
value="VideoEndoscopicImageStorage;VideoMicroscopicImageStorage;VideoPhotographicImageStorage" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getEncapsulatedSopCuids"
setMethod="setEncapsulatedSopCuids">
<description>List of SOP Class UIDs where content is
encapsulated like EncapsulatedPDFStorage. (separated with
semicolon or newline). Use either the SOP Class UID or the
symbolic name! Use NONE to disable encapsulated DICOM support.
</description>
<name>EncapsulatedSopCuids</name>
<type>java.lang.String</type>
<descriptors>
<value value="EncapsulatedPDFStorage;Dcm4cheEncapsulatedDocumentStorage" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDisabledAuditLogHosts"
setMethod="setDisabledAuditLogHosts">
<description><![CDATA[List of host names where audit log is disabled. Use NONE
or ALL to enable/disable audit log for all WADO requests.<br />
<b>Note:</b>Using host name(s) will force DNS lookup!
]]></description>
<name>DisabledAuditLogHosts</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDisableDNS"
setMethod="setDisableDNS">
<description>Disable/enable Hostname Lookup (DNS) for
Audit Log. </description>
<name>DisableHostLookup</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isRenderOverlays"
setMethod="setRenderOverlays">
<description>Disable/enable rendering of overlays when generating JPEGS. </description>
<name>RenderOverlays</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFetchDestAET"
setMethod="setFetchDestAET">
<description>Destination AET for fetching objects if they are not locally available and the external retrieve AET has no WADO support.
(You have to define this in AE management by setting WADOUrl 'DICOM_QR_ONLY'!)
</description>
<name>FetchDestinationAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isUseSeriesLevelFetch"
setMethod="setUseSeriesLevelFetch">
<description><![CDATA[Use SERIES level fetch? <br/>
true : Use a SERIES level C-MOVE request. (May fetch instances that are already online!)<br/>
false: Use a C-MOVE on INSTANCE level with all instances of the series that are not online
and retrievable from the external retrieve AET. ]]>
</description>
<name>UseSeriesLevelFetch</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getFetchTimeout"
setMethod="setFetchTimeout">
<description>Fetch timeout in ms. A requested object will be fetched if it is not locally available and the external retrieve AET doesn't support WADO.
(You have to define this in AE management by setting WADOUrl to 'DICOM_QR_ONLY'!)
In this case the object will be fetched via a C-MOVE request and the WADO request waits until the object is received.
If the object get not received within this timeout, the WADO request will fail.
</description>
<name>FetchTimeout</name>
<type>long</type>
<descriptors>
<value value="10000" />
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getTimerID"
setMethod="setTimerID">
<description>Used internally. Do NOT modify. </description>
<name>TimerID</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write" getMethod="getQueryRetrieveScpName"
setMethod="setQueryRetrieveScpName">
<description>Used internally. Do NOT modify.</description>
<name>QueryRetrieveScpName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getMoveScuServiceName"
setMethod="setMoveScuServiceName">
<description>Used internally. Do NOT modify.</description>
<name>MoveScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify. </description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify. </description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
<operation impact="INFO">
<description>Show free disk space</description>
<name>showFreeSpace</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description><![CDATA[Show current effective deleter threshold according
configured <i>DeleterThreshold</i>.]]>
</description>
<name>showMinFreeSpace</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Clear Cache</description>
<name>clearCache</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Show available ImageWriter for given format name</description>
<name>showImageWriter</name>
<parameter>
<description>Format name (e.g. JPEG, PNG,..).</description>
<name>formatName</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Free Disk Space.
Delete old files from cache to free disk space.
</description>
<name>freeDiskSpace</name>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="ACTION">
<description>Get WADO response object</description>
<name>getWADOObject</name>
<parameter>
<description>Value object of the request.</description>
<name>reqVO</name>
<type>org.dcm4chex.wado.common.WADORequestObject</type>
</parameter>
<return-type>org.dcm4chex.wado.common.WADOResponseObject</return-type>
</operation>
<operation impact="ACTION">
<description>Clear Template Cache</description>
<name>clearTemplateCache</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Reconfigure WADO Service. Update list of image SOPClass UID's from StoreSCP service'</description>
<name>reconfigure</name>
<return-type>void</return-type>
</operation>
</mbean>

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC
"-//JBoss//DTD JBOSS XMBEAN 1.1//EN"
"http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description><![CDATA[WADO Prefetch Service.<br/>
This service is triggered by SeriesStored notifications and use a stylesheet (<code>wado-prefetch.xsl</code>)
to get WADO URLs and optional an exportPath.<br>
Both are based on series level and will be extended with the SOP InstanceUIDs
in Referenced Series Sequence (0008,1115)
<dl>
<dt>Output format of <code>wado-prefetch.xsl</code>:</dt>
<dd>&lt;wado-prefetches&gt;</dd>
<dd>&nbrsp;&nbrsp;&lt;prefetch wadourl="" [exportPath=""] /&gt;</dd>
<dd>&nbrsp;&nbrsp;...</dd>
<dd>&lt;/wado-prefetches&gt;</dd>
<dd/>
<dd>wadourl : WADO URL without objectUID parameter. (will be added for every image of the series)</dd>
<dd>exportPath : Directory path for exported images. '{0}' will be replaced with SOP Instance UID</dd>
<dd>e.g.: &lt;prefetch wado="http://localhost:8080/wado?requestType=WADO&amp;studyUID=1.2.3&amp;seriesUID=1.2.4"</dd>
<dd> exportPath="exported/1.2.3/1.2.4/{0}.jpg" /&gt;</dd>
</dl>
]]></description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.mbean.WadoPrefetchService</class>
<constructor>
<description>The default constructor</description>
<name>WadoPrefetchService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write"
getMethod="getWadoBaseUrl"
setMethod="setWadoBaseUrl">
<description><![CDATA[Base WADO URL that can be extended in a stylesheet to get
the <code>wadourl</code> attribute.<br />
This URL should contain request parameter 'requestType=WADO'
]]></description>
<name>WadoBaseUrl</name>
<type>java.lang.String</type>
<descriptors>
<value value="http://localhost:8080/wado?requestType=WADO" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getExportBasePath"
setMethod="setExportBasePath">
<description><![CDATA[Base directory path where exported images will be stored.<br />
This directory can be used in a stylesheet to build the <code>exportPath</code> attribute.
A relative path name is resolved relative to <i>archive-install-directory</i>/server/default/.]]>
</description>
<name>ExportBasePath</name>
<type>java.lang.String</type>
<descriptors>
<value value="exported/images" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getConfigDir"
setMethod="setConfigDir">
<description><![CDATA[Directory where configuration files defining
WADO Prefetch rules are located: if XSL stylesheet <code>wado-prefetch.xsl</code> exists in
this directory or in a sub-directory equal to the AE Title of the
Storage SCU, images of received Series will be prefetched (and optional exported)
according the rules in the stylesheet.
A relative path name is resolved relative to
<i>archive-install-directory</i>/server/default/.]]>
</description>
<name>CoerceConfigDirectory</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-ae"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getRetryIntervalls"
setMethod="setRetryIntervalls">
<description><![CDATA[Number and interval of retries made for
failed WADO Prefetch orders.
<br>Format:
<br>Comma separated list of <i>number</i>x<i>interval</i> pairs or NEVER to disable retry for any destinations.
<br>The interval can be specified in seconds (##s),
minutes (##m), hours (##h) or days (##d).
<br/>Example:
<br/>5x1m,10x10m means retry a total of 5 times, one minute
apart for each retry; then retry a total of 10 times, 10 minutes
]]>
</description>
<name>RetryIntervals</name>
<type>java.lang.String</type>
<descriptors>
<value value="5x5m,24x1h,7x1d" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getQueueName"
setMethod="setQueueName">
<description>Used internally. Do NOT modify.
</description>
<name>QueueName</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getStoreScpServiceName"
setMethod="setStoreScpServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>StoreScpServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getJmsServiceName"
setMethod="setJmsServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>JMSServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
&defaultAttributes;
<!-- Operations -->
&defaultOperations;
</mbean>

View File

@@ -0,0 +1,747 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd">
<mbean>
<description>XDS-I Service. Cross-enterprise Document Sharing for Imaging. (Imaging Document Source actor)</description>
<descriptors>
<persistence persistPolicy="OnUpdate"/>
<persistence-manager value="org.jboss.mx.persistence.DelegatingPersistenceManager"/>
</descriptors>
<class>org.dcm4chex.archive.xdsi.XDSIService</class>
<constructor>
<description>The default constructor</description>
<name>XDSIService</name>
</constructor>
<!-- Attributes -->
<attribute access="read-write" getMethod="getSourceID" setMethod="setSourceID">
<description>Source ID - unique identifier of this Document Source.
</description>
<name>SourceID</name>
<type>java.lang.String</type>
<descriptors>
<value value="1.3.6.1.4.1.21367.2009.1.2.134.54.1.30.1"/> <!-- 2008-2009 OID Base: 1.3.6.1.4.1.21367.2009.1.2. -->
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAutoPublishAETs"
setMethod="setAutoPublishAETs">
<description>List of Source (Modality) AE titles separated by \(backslash),
from which studies shall be automatically published to the configured
XDS-I Repository. NONE = do not publish studies received from any source
automatically.
</description>
<name>AutoPublishSourceAETitles</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDocRepositoryURI" setMethod="setDocRepositoryURI">
<description>Document Repository URI.
</description>
<name>DocRepositoryURI</name>
<type>java.lang.String</type>
<descriptors>
<value value="http://localhost:8080/dcm4chee-xds/XDSRepository"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getDocRepositoryAET" setMethod="setDocRepositoryAET">
<description>AET of Document Repository (for Audit Log only).
</description>
<name>DocRepositoryAET</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getPropertyFile" setMethod="setPropertyFile">
<description>Metadata Property File.
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>MetadataPropertyFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/metadata.conf"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAutoPublishPropertyFile" setMethod="setAutoPublishPropertyFile">
<description>Metadata Property File for AutoPublish.
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>AutoPublishPropertyFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/nist/metadata.conf"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAutoPublishXSLFile" setMethod="setAutoPublishXSLFile">
<description>XSL File for AutoPublish to get metadata from manifest info (Dataset with patient, study and series attributes).
Use NONE to disable this XSLT processing.
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>AutoPublishXSLFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAutoPublishStudyDeletedPDFFile" setMethod="setAutoPublishStudyDeletedPDFFile">
<description><![CDATA[PDF or text (.txt) File or 'TEXT' to mark a published study as deleted.<br />
A relative path name is resolved relative to dcm4chee_home/server/default/.<br />
With TEXT a simple text/plain document will be registered for a deleted study. <br />
Content: Study has been removed from Source PACS System!
]]>
</description>
<name>AutoPublishStudyDeletedPDFFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/study_deleted.pdf" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getAutoPublishInterval"
setMethod="setAutoPublishInterval">
<description><![CDATA[Interval in hours (#h), minutes (#m) or
seconds (#s) in which the data base is polled for Studies that are not published to XDS.<br/>
Use NEVER to disable this feature.<br />
Note: This feature requires XdsQueryServiceName]]>
</description>
<name>AutoPublishInterval</name>
<type>java.lang.String</type>
<descriptors>
<value value="NEVER"/>
</descriptors>
</attribute>
<attribute access="read-only"
getMethod="isRunning">
<description>Current state if a AutoPublish task is running. Used to avoid concurrency!
</description>
<name>isRunning</name>
<type>boolean</type>
</attribute>
<attribute access="read-write"
getMethod="getAutoPublishSQL"
setMethod="setAutoPublishSQL">
<description><![CDATA[SQL Statements to select studies for XDS auto publish. <br />
Format: Each line can contain a complete SQL Statement or a comment (Line starts with '*')<br />
The statement must return only one column with study.pk!<br />
<dl><dt>Following named parameter can be used:</dt>
<dd>:AfterDate</dd>
<dd>:BeforeDate</dd>
<dd>:OlderThan</dd>
<dd>:NotOlderThan</dd>
</dl>
<dl><dt>Example:</dt>
<dd>*</dd>
<dd>* All studies with updated_time between configured AfterDate and BeforeDate:</dd>
<dd>SELECT pk FROM study WHERE updated_time > :AfterDate AND updated_time < :BeforeDate</dd>
<dd>*</dd>
<dd>* All studies that are created before n days:</dd>
<dd>SELECT pk FROM study WHERE created_time < :OlderThan</dd>
</dl>
Note: the configured queries are used as subquery of a query which exclude studies that are already published (via table published_study) <br />
This behaviour can be disabled by using '@' as first character in SQL statement. In this case
the first culumns must be study.pk, published_study.pk and published_study.docentry_uid!<br /><br />
If the SQL statement starts with '[&lt;startHour&gt;-&lt;endHour&gt;]' this query will be only performed between start and end hour (0-23).<br />
e.g.: '[23-4]SELECT pk from study' check all (unpublished) studies between 23:00:00 and 4:59:59.
]]>
</description>
<name>AutoPublishSQL</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isDisableStudyDeleteSQL" setMethod="setDisableStudyDeleteSQL">
<description><![CDATA[Disable Query for deleted published studies.<br />
Should be only disabled if a similar query is defined in AutoPublishSQL!<br />
(@SELECT study_fk, pk, docentry_uid from published_study where study_fk IS NULL)
]]>
</description>
<name>DisableStudyDeleteSQL</name>
<type>boolean</type>
<descriptors>
<value value="false"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAfterDate" setMethod="setAfterDate">
<description><![CDATA[AfterDate SQL parameter for auto publish migration. <br />
Usage: ':AfterDate' in WHERE clause. e.g WHERE study.updated_time > :AfterDate <br />
Format:yyyy[-MM[-dd[ HH[:mm[:ss]]]]] or NONE<br />
Note: Missing parts are set to corresponding minimum. eg. '2013-03' -> '2013-03-01 00:00:00'
]]>
</description>
<name>AfterDate</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getBeforeDate" setMethod="setBeforeDate">
<description><![CDATA[BeforeDate SQL parameter for auto publish. <br />
Usage: ':BeforeDate' in WHERE clause. e.g WHERE study.updated_time < :BeforeDate <br />
Format:yyyy[-MM[-dd[ HH[:mm[:ss]]]]] or NONE<br />
Note: Missing parts are set to corresponding maximun. eg. '2012-02' -> '2012-02-29 23:55:55' (and 999 milliseconds)
]]>
</description>
<name>BeforeDate</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getOlderThan"
setMethod="setOlderThan">
<description><![CDATA[OlderThan SQL parameter for auto publish. <br />
Usage: ':OlderThan' in WHERE clause. e.g WHERE study.updated_time < :OlderThan <br />
Format: days(#d), weeks (#w), hours (#h), minutes (#m) or seconds (#s)<br/>
Note: the SQL parameter value is a timestamp calculated as currentDate - olderThan.]]>
</description>
<name>OlderThan</name>
<type>java.lang.String</type>
<descriptors>
<value value="1d"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getNotOlderThan"
setMethod="setNotOlderThan">
<description><![CDATA[NotOlderThan SQL parameter for auto publish. <br />
Usage: ':NotOlderThan' in WHERE clause. e.g WHERE study.updated_time > :NotOlderThan <br />
Format: days(#d), weeks (#w), hours (#h), minutes (#m) or seconds (#s)<br/>
Note: the SQL parameter value is a timestamp calculated as currentDate - NotOlderThan.]]>
</description>
<name>NotOlderThan</name>
<type>java.lang.String</type>
<descriptors>
<value value="10w"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getMaxNumberOfStudiesByOneTask" setMethod="setMaxNumberOfStudiesByOneTask">
<description><![CDATA[Maximum number of Migrated MPPS by one task. <br />
]]>
</description>
<name>MaxNumberOfStudiesByOneTask</name>
<type>int</type>
<descriptors>
<value value="100"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="isAddStudyInstanceUIDSlot" setMethod="setAddStudyInstanceUIDSlot">
<description><![CDATA[Add Study Instance UID as extra metadata (Slot with name 'studyInstanceUID') to published studies. <br />
]]>
</description>
<name>AddStudyInstanceUIDSlot</name>
<type>boolean</type>
<descriptors>
<value value="true"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getFetchSize"
setMethod="setFetchSize">
<description>JDBC Fetch size. (-1 means: use Limit)
</description>
<name>FetchSize</name>
<type>int</type>
<descriptors>
<value value="50"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAutoPublishDocTitle" setMethod="setAutoPublishDocTitle">
<description><![CDATA[Document title for auto published metainfo KOS. <br>
Format:&lt;CodeValue&gt;^&lt;CodeMeaning&gt;[^&lt;CodeDesignator&gt;] ]]>
</description>
<name>AutoPublishDocTitle</name>
<type>java.lang.String</type>
<descriptors>
<value value="AutoPublish^Automatic XDS-I export of received images"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getRidURL" setMethod="setRidURL">
<description>RID URL to get PDF Document for exportPDF.
</description>
<name>RidURL</name>
<type>java.lang.String</type>
<descriptors>
<value value="http://localhost:8080/rid/IHERetrieveDocument?requestType=DOCUMENT&amp;preferredContentType=application/pdf&amp;documentUID="/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getLocalDomain" setMethod="setLocalDomain">
<description><![CDATA[Local Affinity Domain (Authority)<br/>
Name of the patient ID authorithy of this Document Source.<br/>
This is normally the 'Issuer of patient ID' (issuer) DICOM attribute.<br/>
We can overwrite this default behaviour with:<br/>
'&lt;Domain&gt;' : use &lt;Domain&gt; if issuer is missing.<br/>
'=&lt;Domain&gt;' : use always &lt;Domain&gt; as local authority. <br/>
'NONE' : default behaviour: use always issuer as local authority.
]]></description>
<name>LocalDomain</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAffinityDomain" setMethod="setAffinityDomain">
<description><![CDATA[XDS Affinity Domain (Authority)<br/>
This name is used in PIX Query Service to get patient id of affinity domain.<br/>
You can disable PIX Query by setting this value with '=' as first character.<br/>
'=' : use the source patient ID and issuer.<br/>
'=?&lt;Domain&gt;' : use patientID from source and &lt;Domain&gt; as issuer. <br/>
'=?[&lt;issuer&gt;]&lt;Domain&gt;' : Dedicated issuer replacement: Only patientID's with given
&lt;issuer&gt; will be exported as &lt;patId&gt;&#94;&#94;&#94&lt;domain&gt;. <br/>
'=&lt;patient&gt;' : use &lt;patient&gt; for patientID and issuer (patid&#94;&#94;&#94;issuer).
]]></description>
<name>AffinityDomain</name>
<type>java.lang.String</type>
<descriptors>
<value value="=?AffinityDomain"/>
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isRemoveNamespaceID"
setMethod="setRemoveNamespaceID">
<description><![CDATA[Remove Namespace ID subcomponent from assigning authority.<br/>
Patient ID's are in HL7 CX format but since revision 7 this is restricted by:<br/>
<i>...this specification restricts them to the use of two components, the ID Number, and the Assigning Authority (AA).<br/>
No other values/modifications in other components or subcomponents are allowed.
Specifically, components 2 and 3 shall be empty as listed above.</i><br/>
see <code>Table 4.1-3 Data Types</code> in
<code>IT Infrastructure Technical Framework Volume 3 (ITI TF-3) revision 7.0</code>
]]></description>
<name>RemoveNamespaceID</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogSOAPMessage"
setMethod="setLogSOAPMessage">
<description>Enable logging of SOAP message.
</description>
<name>LogSOAPMessage</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isIndentSOAPLog"
setMethod="setIndentSOAPLog">
<description>Enable/disable indention of logged SOAP message.
</description>
<name>IndentSOAPLog</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isLogITI15"
setMethod="setLogITI15">
<description><![CDATA[ Enable/disable audit logging of ITI-15 export message (XDS audit log).<br/>
If enabled an XDS audit message will be sent in addition to the Dicom export audit log message.<br/>
Note: ITI-15 logging requires XdsbSourceServiceName!
]]>
</description>
<name>LogITI15</name>
<type>boolean</type>
<descriptors>
<value value="true" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getPixQueryServiceName"
setMethod="setPixQueryServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>PixQueryServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getIANScuServiceName"
setMethod="setIANScuServiceName">
<description>Used internally. Do not modify.
</description>
<name>IANScuServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getKeyObjectServiceName"
setMethod="setKeyObjectServiceName">
<description>Used internally. Do not modify.
</description>
<name>KeyObjectServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getXdsHttpCfgServiceName"
setMethod="setXdsHttpCfgServiceName">
<description><![CDATA[ internally. Do not modify. (dcm4chee.xds:service=XdsHttpCfgService)<br/>
This service is part of dcm4chee-xds and you have to set proxy and ssl configuration in
start script when it is not installed!
]]></description>
<name>XdsHttpCfgServiceName</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="isUseXDSb"
setMethod="setUseXDSb">
<description><![CDATA[Use XDS.b rather than XDS.a to export documents.<br />
Note: XDS.b requires XdsbSourceServiceName]]>
</description>
<name>UseXDSb</name>
<type>boolean</type>
<descriptors>
<value value="false" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getXdsbSourceServiceName"
setMethod="setXdsbSourceServiceName">
<description><![CDATA[Used internally. Do not modify (dcm4chee.xds:service=XDSbSourceService).<br />
Note: Requires installed dcm4chee.xds services!]]>
</description>
<name>XdsbSourceServiceName</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getXdsQueryServiceName"
setMethod="setXdsQueryServiceName">
<description>Used internally. Used if AutoPublishSQL is configured! Do not modify (dcm4chee.xds:service=XDSQueryService).
</description>
<name>XdsQueryServiceName</name>
<type>java.lang.String</type>
<descriptors>
<value value="NONE" />
</descriptors>
</attribute>
<attribute access="read-write"
getMethod="getTimerIDAutoPublish"
setMethod="setTimerIDAutoPublish">
<description>Used internally. Do NOT modify.
</description>
<name>TimerIDAutoPublish</name>
<type>java.lang.String</type>
</attribute>
<attribute access="read-write"
getMethod="getSchedulerServiceName"
setMethod="setSchedulerServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>SchedulerServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write"
getMethod="getTemplatesServiceName"
setMethod="setTemplatesServiceName">
<description>Used internally. Do NOT modify.
</description>
<name>TemplatesServiceName</name>
<type>javax.management.ObjectName</type>
</attribute>
<attribute access="read-write" getMethod="getDocTitleCodeListFile" setMethod="setDocTitleCodeListFile">
<description>File containing Codes for Document Title for web2 XDS-I export(for KOS object and therefore xds metadata 'title').
Format: [designator&#94;]codevalue&#94;meaning
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>DocTitleCodeListFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/web2/docTitleCodes.txt"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getEventCodeListFile" setMethod="setEventCodeListFile">
<description>File containing Codes for eventCodeList for web2 XDS-I export.
Format: [designator&#94;]codevalue&#94;meaning
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>EventCodeListFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/web2/eventCodes.txt"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getClassCodeListFile" setMethod="setClassCodeListFile">
<description>File containing Codes for ClassCode for web2 XDS-I export.
Format: [designator&#94;]codevalue&#94;meaning
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>ClassCodeListFile</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/web2/classCodes.txt"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getContentTypeCodeListFile" setMethod="setContentTypeCodeListFile">
<description>File containing codes for Content Type Codes for web2 XDS-I export.
Format: [designator&#94;]codevalue&#94;meaning
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>ContentTypeCodes</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/web2/contentTypeCodes.txt"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getHealthCareFacilityCodeListFile" setMethod="setHealthCareFacilityCodeListFile">
<description>File containing codes for Healthcare Facility Type Codes for web2 XDS-I export.
Format: [designator&#94;]codevalue&#94;meaning
A relative path name is resolved relative to dcm4chee_home/server/default/.
</description>
<name>HealthCareFacilityTypeCode</name>
<type>java.lang.String</type>
<descriptors>
<value value="conf/dcm4chee-xdsi/web2/healthCareFacilityTypeCodes.txt"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getConfidentialityCodes" setMethod="setConfidentialityCodes">
<description>Code list for confidentialityCode for web2 XDS-I export.
Format: [designator&#94;]codevalue&#94;meaning
Use either newline or semicolon to seperate codes
</description>
<name>ConfidentialityCodes</name>
<type>java.lang.String</type>
<descriptors>
<value value="cc1&#94;confidentialityCode"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAuthorPersonMapping" setMethod="setAuthorPersonMapping">
<description><![CDATA[Set either a fix authorPerson or a user to authorPerson mapping for web2 XDS-I export.
<br/>
Mapping format: &lt;user&gt;=&lt;authorPerson&gt;<br/>
Use either newline or semicolon to seperate mappings.
<br/>
If '=' is ommited, a fix (global) authorPerson is set]]>
</description>
<name>AuthorPersonMapping</name>
<type>java.lang.String</type>
<descriptors>
<value value="ABPACS&#94;&#94;&#94;XDSITEST"/>
</descriptors>
</attribute>
<attribute access="read-write" getMethod="getAuthorRoles" setMethod="setAuthorRoles">
<description><![CDATA[List of author roles (with display name) for web2 XDS-I export.<br/>
Format: &lt;role&gt;&#94;&lt;displayName&gt;<br/>
Use either newline or semicolon to seperate codes.
]]>
</description>
<name>AuthorRoles</name>
<type>java.lang.String</type>
<descriptors>
<value value="stdRole&#94;Standard Role;adminRole&#94;Admin Role"/>
</descriptors>
</attribute>
&defaultAttributes;
<!-- Operations -->
<operation impact="ACTION">
<description>Performs a NIST test.</description>
<name>nistTest</name>
<parameter>
<description>TestID</description>
<name>testID</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Performs a simple soap test.</description>
<name>sendSOAP</name>
<parameter>
<description>SOP Instance UID of Key Object</description>
<name>kosIuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Metadata properties</description>
<name>mdProps</name>
<type>java.util.Properties</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Performs a simple soap test.</description>
<name>sendSOAP</name>
<parameter>
<description>SOP Instance UID of Key Object</description>
<name>kosIuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Performs a simple soap test.</description>
<name>exportPDF</name>
<parameter>
<description>SOP Instance UID of PDF RID document</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>Metadata properties</description>
<name>mdProps</name>
<type>java.util.Properties</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Performs a simple soap test.</description>
<name>exportPDF</name>
<parameter>
<description>SOP Instance UID of PDF RID document</description>
<name>iuid</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Send a SOAP message to DocRepositoryURI.</description>
<name>sendSOAP</name>
<parameter>
<description>Filename of metadata file</description>
<name>metadataFilename</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<description>List of documents (Format:filename|mimiType|docUID[,filename|mimeType|docUID[,..]])</description>
<name>docNames</name>
<type>java.lang.String</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Send a SOAP message to DocRepositoryURI.</description>
<name>sendSOAP</name>
<parameter>
<description>Key Object Selection Dataset to submit.</description>
<name>kos</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<parameter>
<description>Metadata Properties</description>
<name>mdProps</name>
<type>java.util.Properties</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="ACTION">
<description>Create a new XDS Folder.</description>
<name>createFolder</name>
<parameter>
<description>Metadata properties</description>
<name>mdProps</name>
<type>java.util.Properties</type>
</parameter>
<return-type>boolean</return-type>
</operation>
<operation impact="INFO">
<description>Get the authorPerson for a user.</description>
<name>getAuthorPerson</name>
<parameter>
<description>user</description>
<name>user</name>
<type>java.lang.String</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
<operation impact="INFO">
<description>Join Metadata Properties with properties from Metadata Property File.</description>
<name>joinMetadataProperties</name>
<parameter>
<description>Additional Metadata properties</description>
<name>props</name>
<type>java.util.Properties</type>
</parameter>
<return-type>java.util.Properties</return-type>
</operation>
<operation impact="INFO">
<description>get list of roles used by web2 XDS-I export.</description>
<name>listAuthorRoles</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of document titles used by web2 XDS-I export.</description>
<name>listDocTitleCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of Event Type Codes used by web2 XDS-I export.</description>
<name>listEventCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of Class Codes used by web2 XDS-I export.</description>
<name>listClassCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of Content Type Codes used by web2 XDS-I export.</description>
<name>listContentTypeCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of Healthcare Facility Type Codes used by web2 XDS-I export.</description>
<name>listHealthCareFacilityTypeCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>get list of Confidentiality Codes used by web2 XDS-I export.</description>
<name>listConfidentialityCodes</name>
<return-type>java.util.List</return-type>
</operation>
<operation impact="INFO">
<description>clear CodeFileCache (only used by web2 XDS-I export).</description>
<name>clearCodeFileCache</name>
<return-type>void</return-type>
</operation>
<operation impact="ACTION">
<description>Read the configured Metadata Property File</description>
<name>readPropertyFile</name>
<return-type>void</return-type>
</operation>
<operation impact="INFO">
<description>Obtain Affinity Domain patient ID for given patient information</description>
<name>getAffinityDomainPatientID</name>
<parameter>
<description>Dataset containing local patient id and issuer of id</description>
<name>kos</name>
<type>org.dcm4che.data.Dataset</type>
</parameter>
<return-type>java.lang.String</return-type>
</operation>
&defaultOperations;
</mbean>

Some files were not shown because too many files have changed in this diff Show More