dcm4chee is a Java-based application for the management of digital clinical objects. As such, it should be run under the best hardware available for production systems. The minimal system configuration is as follows:
dcm4chee requires a database to store transient and permanent information from the clinical workflow and objects. The authors of dcm4chee realize that database expertise varies from site to site, and has included support for several different databases for deployment with the archive. The list of supported databases is:
dcm4chee is a Java-based application. It requires the installation of the JDK version 1.4.2 or higher. JDK version 5 is recommended for the best performance and stability.
For image compression/decompression, dcm4chee 2.8.x utilizes Sun's Java Advanced Imaging (JAI) Image I/O Tools 1.0_01. The binary distribution packages of dcm4chee 2.8.x already includes the necessary JARs and native libraries for Windows and Linux i586. For Solaris support, you need to download the software package from Sun at http://java.sun.com/products/java-media/jai/downloads/download-iio-1_0_01.html and replace the Linux version of libclib_jiio.so
in DCM4CHEE_DIST/bin/
with the file of the same name from the Solaris JAI Image IO distribution.
dcm4chee depends heavily on the JBoss (http://www.jboss.org) application server for its infrastructure. It is not necessary to download JBoss (as dcm4chee is pre-packaged within JBoss), but viewing the online (or downloaded) JBoss documentation will assist a great deal in learning the dcm4chee directory structure, and how the product operates under the covers. JBoss services such as XMBeans, JBossMQ (JMS), and EJB (Session and Entity beans) are utilized by dcm4chee.
Installing dcm4chee is fairly easy:
dcm4chee-standalone-psql-2.8.2.zip
file from SourceForge.DCM4CHEE_DIST/server/default/lib/
. This is not necessary for MySQL or PostgreSQL because the binary distribution of dcm4chee already contains the correct JDBC drivers for these database systems.For example, with PostgreSQL you can check the pg_hba.conf file for your database:
$PGDATA/pg_hba.conf: # IPv4 local connections: host all all 127.0.0.1/32 trustWith Oracle, you can verify that the TNS Listener is enabled:
C:\>netstat -b -p TCP Active Connections TCP localhost:1284 host.domain.com:1521 ESTABLISHED 1788 [ORACLE.EXE] TCP localhost:1521 host.domain.com:1284 ESTABLISHED 1816 [TNSLSNR.exe]
DCM4CHEE_DIST/sql/create.xxx
.
For example, with PostgreSQL on a Unix-based system:
> export PGUSER=postgres > createdb pacsdb > psql pacsdb \-f DCM4CHEE_DIST/sql/create.psqlTo initialize a MySQL database on a Unix-based system:
> mysql \-uroot mysql> create database pacsdb; mysql> grant all on pacsdb.\* to 'pacs'@'localhost' identified by 'pacs'; mysql> \q > mysql \-upacs \-ppacs < DCM4CHEE_DIST/sql/create.mysql
If you wish to take advantage of specific features of your RDBMS such as tablespaces, partitioning, etc. you will need to implement them on your own. This can sometimes be done with the tools that come with the database, or by modifying the DDL script before running it. If you make changes to the DDL script that you think might be useful to the wider audience, please submit them to the dcm4che-users listserv. |
DCM4CHEE_DIST/server/default/deploy/xxxx-ds.xml
to suit your environment. This includes the user name and password that the application should use when obtaining connections. In addition, JBoss allows for the configuration of other aspects of the connection pool. Although the default settings are fine for basic deployment scenarios, the following may be added to the XML file in order to tune the connection pool:
<\!\--example of how to specify class that determines if exception means connection should be destroyed-\-> <\!\--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-\-> <\!-\- this will be run before a managed connection is removed from the pool for use by a client--> <\!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> \--> <\!-\- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use \--> <min-pool-size>5</min-pool-size> <\!-\- The maximum connections in a pool/sub-pool \--> <max-pool-size>20</max-pool-size> <\!-\- The time before an unused connection is destroyed \--> <\!-\- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use \--> <idle-timeout-minutes>0</idle-timeout-minutes> <\!-\- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> \--> <\!-\- sql to call on an existing pooled connection when it is obtained from pool <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> \--> <\!-\- example of how to specify a class that determines a connection is valid before it is handed out from the pool <valid-connection-checker-class-name>fully qualified name of class to use</valid-connection-checker-class-name> \--> <\!-\- Whether to check all statements are closed when the connection is returned to the pool, this is a debugging feature that should be turned off in production <track-statements/> \--> |
For example, on GNU Linux:Windows:
DCM4CHEE_DIST/bin/run.bat:
rem Sun JVM memory allocation pool parameters. Modify as appropriate. set JAVA_OPTS=%JAVA_OPTS% \-Xms128m \-Xmx512mLinux/Unix:
DCM4CHEE_DIST/bin/run.conf
# Specify options to pass to the Java VM. JAVA_OPTS="-server \-Xms64m \-Xmx200m \-Djava.awt.headless=true ..Keep in mind the available RAM and memory requirements of other processes running on the hardware. For example, iif only 512 MB RAM is available on the machine, you should decrease the default value from
-Xmx512m
(on Windows to)-Xmx300
.
- Optional: Upon installation, all DICOM services are pre-configured with
DCM4CHEE
as the Application Entity Title (AE Title, or AET). Although it is possible to modify this default configuration at a later date through the Web-based administrative console, it is more efficient to replaceDCM4CHEE
withYOUR_AET
inDCM4CHEE_DIST/server/default/conf/xmdesc/*.xml
using utilities provided by your platform.
> find DCM4CHEE_DIST/server/default/conf/xmdesc \-exec \ sed \-i s/DCM4CHEE_DIST/YOUR_AET/g '{}' ';'}} |
ctrl-c
in the console window).DCM4CHEE_DIST/bin/install_service.bat
.DCM4CHEE_DIST/bin/dcm4chee_init_redhat.sh
to /etc/init.d/
and adjust it according to the dcm4chee installation location, the JDK installation location, and which user the dcm4chee should run under.Navigate to the DCM4CHEE_DIST/bin
directory, and execute the run.bat
or run.sh script
, as appropriate for your operating system. Your output should look like the following and contain no error or exception messages:
=============================================================================== . JBoss Bootstrap Environment . JBOSS_HOME: C:\apps\dcm4chee-standalone-psql-2.8.2\bin \\ .. . JAVA: C:\jdk1.5.0_06\bin\java . JAVA_OPTS: \-Dprogram.name=run.bat \-Xms128m \-Xmx512m . CLASSPATH: C:\jdk1.5.0_06\lib\tools.jar; C:\apps\dcm4chee-standalone-psql-2.8.2\bin \\ run.jar . =============================================================================== . 14:46:16,046 INFO [Server] Starting JBoss (MX MicroKernel)... 14:46:16,046 INFO [Server] Release ID: JBoss [Zion] 4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054) ... ... ... 14:46:50,626 INFO \-> [JkMain] Jk running ID=0 time=0/60 config=null 14:46:50,636 INFO \-> [Server] JBoss (MX MicroKernel) \[4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)\] Started in 34s:580ms |
admin
, with password admin
.admin
, with password admin
.
service=FileSystemMgt
to the File System Management service configuration page under the dcm4chee.archive
heading.
If no Storage File System is configured, the archive will auto-configure |
CompressionRules
attribute in the Storage SCP Service (service=StoreScp
) configuration page. For example, set it to JLSL
, to compress all types of images received from any Storage SCU with JPEG-LS Lossless codec.CacheRoot
attribute in the the WADO Service (service=WADOService
) configuration page. Default: DCM4CHEE_DIST/server/default/wadocache
.
CacheRoot
attribute in the RID Service (service=RIDService
) configuration page. Default: DCM4CHEE_DIST/server/default/ihe_rid_cache
.AE Title: DCMRCV Hostname: localhost Port: 11112 |
If everything worked, you are ready to start using dcm4chee. If not, post your questions to the dcm4che-users listserv.