Skip to content

Routing to multiple DICOM stores

Christian Hollinger edited this page May 27, 2021 · 5 revisions

NOTE: This feature is only available in v0.1.14+ of the import adapter.

Import adapter C-STORE service supports routing to multiple DICOM stores based on tags in the incoming instance and the client AE title. Filter is in the format of a QidoRS query, with the additional option of specifying the AETitle for matching against the calling client AET. If no filter matches, instances will be routed to '--dicomweb_address'.

WARNING: Matching tags with a hex value greater than pixeldata (7FE0,0010) is not supported.

The following configuration needs to be added to the dicom-adapter.yaml file to use C-STORE routing. Please see the Deployment using Kubernetes section for more information.

env:
- name: ENV_DESTINATION_CONFIG_JSON
  valueFrom:
    configMapKeyRef:
      name: destination-config
      key: destinations.json

Here is an example destination JSON file:

[
	{
		"filter": "AETitle=DEVICE_A", 
		"dicomweb_destination": "https://healthcare.googleapis.com/v1beta1/projects/your-project/locations/your-location/datasets/your-dataset/dicomStores/your-store/dicomWeb", 
	},
	{
		"filter": "AETitle=DEVICE_A&StudyDate=19700101", 
    		"dicomweb_destination": "https://healthcare.googleapis.com/v1beta1/projects/your-project/locations/your-location/datasets/your-dataset/dicomStores/your-store/dicomWeb", 
	},
	{
    		"filter": "00080020=19700101", 
    		"dicomweb_destination": "https://healthcare.googleapis.com/v1beta1/projects/your-project/locations/your-location/datasets/your-dataset/dicomStores/your-store/dicomWeb",
  	}
]

And command to create configmap from it:

kubectl create configmap destination-config --from-file=destinations.json

The same destination map can be applied when running the adapter locally with docker, using the --destinationConfigPath flag and a local mount:

docker run \
-p 2579:2579 \
-v /path/to/google_credentials.json:/credentials -e GOOGLE_APPLICATION_CREDENTIALS='/credentials' \
-v path/to/destinations.json:/maps/destinations.json \
${TAG} \
gcr.io/cloud-healthcare-containers/healthcare-api-dicom-dicomweb-adapter-import:0.2.15 \
--dimse_aet=IMPORTADAPTER \
--dimse_port=2579 \
--oauth_scopes=https://www.googleapis.com/auth/cloud-platform \
--monitoring_project_id=${PROJECT} \
--destination_config_path=/maps/destinations.json \
--verbose