Это руководство пошагово описывает минимальный пример подключения dcm4chee-arc-light к Google Cloud Healthcare API с помощью DICOM -> DICOMweb Adapter.
Данное руководство объединяет инструкции из Run-minimum-set-of-archive-services-on-a-single-host и README к DICOM -> DICOMweb Adapter, поэтому инструкции в этих документах имеют приоритет.
docker-compose.yml:yaml
version: "3"
services:
ldap:
image: dcm4che/slapd-dcm4chee:2.4.48-21.0
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "389:389"
- "636:636"
env_file: docker-compose.env
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data
- /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d
- ./adapter-config.ldif:/var/local/adapter-config.ldif
db:
image: dcm4che/postgres-dcm4chee:12.2-22
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "5432:5432"
env_file: docker-compose.env
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/db:/var/lib/postgresql/data
arc:
image: dcm4che/dcm4chee-arc-psql:5.22.0
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "8080:8080"
- "8443:8443"
- "9990:9990"
- "9993:9993"
- "11112:11112"
- "2762:2762"
- "2575:2575"
- "12575:12575"
env_file: docker-compose.env
environment:
WILDFLY_CHOWN: /opt/wildfly/standalone /storage
WILDFLY_WAIT_FOR: ldap:389 db:5432
depends_on:
- ldap
- db
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone
- /var/local/dcm4chee-arc/storage:/storage
adapter:
image: gcr.io/cloud-healthcare-containers/healthcare-api-dicom-dicomweb-adapter-import:0.1.21
logging:
driver: json-file
options:
max-size: "10m"
command:
- '--dimse_aet=HEALTHCARE_API'
- '--dimse_port=2676'
- '--dicomweb_address=$DICOMWEB_ADDRESS'
- '--oauth_scopes=https://www.googleapis.com/auth/cloud-platform'
- '--aet_dictionary_inline="[{"name":"DCM4CHEE","host":arc,"port":11112}]"'
- '--verbose'
ports:
- "2676:2676"
volumes:
- ${GOOGLE_APPLICATION_CREDENTIALS}:/credentials
environment:
GOOGLE_APPLICATION_CREDENTIALS: /credentials
depends_on:
- arc
ПРИМЕЧАНИЕ: Для MacOS к любым локальным путям /var необходимо добавить префикс /private. Например, используйте /private/var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data вместо /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data.
adapter-config.ldif; либо ту же конфигурацию можно выполнить через UI после запуска службы:```LDIF version: 1
dn: dicomAETitle=HEALTHCARE_API,cn=Unique AE Titles Registry,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dicomUniqueAETitle dicomAETitle: HEALTHCARE_API
dn: dicomDeviceName=HEALTHCARE_API,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dicomDevice dicomDeviceName: HEALTHCARE_API dicomInstalled: TRUE
dn: cn=dicom,dicomDeviceName=HEALTHCARE_API,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dicomNetworkConnection cn: dicom dicomHostname: adapter dicomPort: 2676
dn: dicomAETitle=HEALTHCARE_API,dicomDeviceName=HEALTHCARE_API,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dicomNetworkAE dicomAETitle: HEALTHCARE_API dicomNetworkConnectionReference: cn=dicom,dicomDeviceName=HEALTHCARE_API,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org dicomAssociationInitiator: TRUE dicomAssociationAcceptor: TRUE
dn: dcmExporterID=HEALTHCARE_API,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dcmExporter dcmExporterID: HEALTHCARE_API dcmURI: dicom:HEALTHCARE_API dicomAETitle: DCM4CHEE dcmQueueName: Export1 dicomDescription: HEALTHCARE_API
dn: cn=Forward to HEALTHCARE_API,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dcmExportRule cn: Forward to HEALTHCARE_API dcmEntity: Series dcmDuration: PT1M dcmExporterID: HEALTHCARE_API ```
docker-compose.env (например):```INI
IMPORT_LDIF=/var/local/adapter-config.ldif
STORAGE_DIR=/storage/fs1
POSTGRES_DB=pacsdb
POSTGRES_USER=pacs
POSTGRES_PASSWORD=pacs
```
```console
$ export GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
$ export DICOMWEB_ADDRESS=https://healthcare.googleapis.com/v1beta1/projects/$PROJECT/locations/$LOCATION/datasets/$DATASET/dicomStores/$STORE/dicomWeb
```
```console
$ docker-compose -p dcm4chee up
```
в каталоге, содержащем `docker-compose.yml`, `adapter-config.ldif` и `docker-compose.env`. Эта команда поднимет все docker-образы и запустит стартовые скрипты dcm4chee для инициализации базы данных и серверов LDAP. Команда не завершит работу, а продолжит выводить журналы сервера после того, как окружение будет поднято.
stowrs --url "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs/studies/" /path/to/test/file.dcmmovescu -c HEALTHCARE_API@localhost:2676 -m SOPInstanceUID=$UID --relational -L IMAGE --dest DCM4CHEEЕсли вы успешно отправляете изображение в dcm4chee-arc-light, но не видите записей HEALTHCARE_API в UI /monitoring/export, проверьте, что конфигурация в adapter-config.ldif применена корректно:
adapter-config.ldif.