← Навигация по документации

Это руководство пошагово описывает минимальный пример подключения dcm4chee-arc-light к Google Cloud Healthcare API с помощью DICOM -> DICOMweb Adapter.

Данное руководство объединяет инструкции из Run-minimum-set-of-archive-services-on-a-single-host и README к DICOM -> DICOMweb Adapter, поэтому инструкции в этих документах имеют приоритет.

  1. Скопируйте приведённую ниже конфигурацию в локальный файл с именем 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.

  1. Укажите конфигурацию LDAP в файле 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 ```

  2. Укажите переменные окружения в упомянутом файле docker-compose.env (например):
    ```INI
    IMPORT_LDIF=/var/local/adapter-config.ldif
    STORAGE_DIR=/storage/fs1
    POSTGRES_DB=pacsdb
    POSTGRES_USER=pacs
    POSTGRES_PASSWORD=pacs
    ```
    
  3. Укажите переменные окружения для конфигурации адаптера. Если у вас ещё нет сервисного аккаунта, получите учётные данные согласно инструкциям в Creating and Managing Service Account Keys.
    ```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
    ```
    
  4. Создайте и запустите 4 контейнера, выполнив команду
    ```console
    $ docker-compose -p dcm4chee up
    ```
    в каталоге, содержащем `docker-compose.yml`, `adapter-config.ldif` и `docker-compose.env`. Эта команда поднимет все docker-образы и запустит стартовые скрипты dcm4chee для инициализации базы данных и серверов LDAP. Команда не завершит работу, а продолжит выводить журналы сервера после того, как окружение будет поднято.
    

Тестирование

Необходимые инструменты

Шаги для отправки файла через dcm4chee в Healthcare API

Шаги для получения файла из Healthcare API и отправки его в dcm4chee

Устранение неполадок

Изображение сохраняется, но не отправляется в Cloud Healthcare API

Если вы успешно отправляете изображение в dcm4chee-arc-light, но не видите записей HEALTHCARE_API в UI /monitoring/export, проверьте, что конфигурация в adapter-config.ldif применена корректно: