David:
I rebuilt DicomRouter and put the updated version on the RSNA site
at:
I made a few changes to add features that were not available when it was
originally written (specifically, several script functions).
If I understood your last email correctly, you want guidance on how to
create the configuration file for a specific project.
Here is a configuration I used for testing:
<router
log-depth="20">
<scp
aetitle="ROUTER"
ipaddress="autodetect"
port="9000"
/>
<queue
name="CT"
priority="5">
<script>
Modality.equals("CT")
</script>
</queue>
<queue
name="MR"
priority="3">
<script>
Modality.equals("MR")
</script>
</queue>
<queue
name="XX"
priority="9">
<script>
!Modality.equals("CT") * !Modality.equals("MR")
</script>
</queue>
<queue
name="All
Images"
priority="10">
<script>
true.
</script>
</queue>
</router>
The file must be called config.xml, and it must be in the
DicomRouter directory that is automatically created by the installer.
In this configuration, I specified that the router's DICOM Storage SCP
listen on port 9000. When the SCP receives images, it doesn't care about the AE
Titles, but the program displays the configuration parameters on its Status pane
in case a modality or ACS administrator needs them to configure their
equipment.
I defined four queues in this configuration. Each queue has its own DICOM
name, destination URL, priority, and script.
All received images are presented to all queues. Each queue accepts only
the images that match its script. The script language is described in this wiki
article:
http://mircwiki.rsna.org/index.php?title=The_CTP_DICOM_Filter. The article describes the syntax as well as all
the functions that are available in scripts.
The first queue only accepts CT images. The second, only MR. The third,
only images that are neither CT nor MR. The last queue accepts all images. Note
that I used DICOM standard keywords in the scripts. If you want to use numerical
notation, be sure to read the article above, which specifies that elements be
enclosed in square brackets, not parentheses - e.g., [0008,0060], not
(0008,0060).
For testing, I set up a CTP site with four pipelines, each with a
DicomStorageSCP on its own port (9001, 9002, 9003, and 9004). In a real-world
situation, queues would probably be aimed at systems with different IP
addresses, but the queue doesn't care where it is pointed.