Запуск dcm4chee на MacOS

RedDeveloper
17.03.2022 17:10
Запуск dcm4chee на MacOS

Запуск dcm4chee на MacOS

Что такое DICOM?

Если вы занимаетесь информационными технологиями в здравоохранении, вы, возможно, слышали о стандарте DICOM. В своей простейшей форме DICOM - это зрелый стандарт для управления и передачи медицинских изображений вместе с медицинскими данными.

dcm4che: Библиотека DICOM, посвященная памяти Че Гевары
dcm4che: Библиотека DICOM, посвященная памяти Че Гевары

Что такое dcm4che?

Dcm4che - это Java-библиотека, реализующая протокол DICOM. Надеюсь, она имеет открытый исходный код и размещена на Github. Это очень надежная реализация стандарта DICOM, и многие разработчики, включая меня, полагаются на эту замечательную библиотеку при разработке своего программного обеспечения для здравоохранения.

Что же такое dcm4chee?

Для внимательного читателя в названии есть двойное "е", dcm4chee. Нет, это не опечатка. На самом деле dcm4che - это гораздо больше, чем просто библиотека Java. Она включает в себя множество утилит и приложений для тестирования и разработки приложений Healthcare. Дополнительное "e" в dcm4chee означает "enterprise". Это полностью рабочий менеджер изображений/архив изображений.

Давайте запустим dcm4chee

Как разработчику программного обеспечения для здравоохранения или ИТ-специалисту, вам, вероятно, понадобится запустить dcm4chee, чтобы понять детали протокола DICOM. dcm4chee уже имеет хорошо написанный документ о запуске dcm4chee на Docker. Пожалуйста, проверьте эту ссылку. Как следует из названия, в статье будут описаны мелкие детали для правильного запуска dcm4chee на MacOS.

  1. Создайте пользовательскую мостовую сеть
docker network create dcm4chee_network

2. Нам нужно создать локальные каталоги для сохранения конфигурации. Я выбрал ~/.local/dcm4chee-arc/ в качестве корневой папки в моем домашнем каталоге. Вскоре мы сопоставим эти папки с нашими контейнерами Docker.

mkdir -p ~/.local/dcm4chee-arc/ldap/ ~/.local/dcm4chee-arc/slapd.d/ ~/.local/dcm4chee-arc/db/ ~/.local/dcm4chee-arc/wildfly/

3. Чтобы запускать контейнеры Docker в нашем текущем часовом поясе, мы создадим карту нашего файла часовых поясов. Однако, в отличие от Linux, в MacOS нет файла часовых поясов. Сначала проверьте текущий часовой пояс.

readlink /etc/localtime | sed 's#/var/db/timezone/zoneinfo/##'

4. Создайте файл часовых поясов с помощью следующей команды.

echo $(readlink /etc/localtime | sed 's#/var/db/timezone/zoneinfo/##') > ~/.local/dcm4chee-arc/timezone

5. Проверьте созданный файл таймзоны.

cat ~/.local/dcm4chee-arc/timezone

6. Мы готовы к запуску OpenLDAP Server. Проверьте папку slap.d/ через минуту. Она больше не пуста.

docker run --network=dcm4chee_network --name ldap \
-p 389:389 \
-v ~/.local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data \
-v ~/.local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d \
-d dcm4che/slapd-dcm4chee:2.6.0-25.2
$ ls -l ~/.local/dcm4chee-arc/slapd.dtotal
8drwxr-x
- - 8 haldun staff 256 Mar 14 16:41 cn=config-rw
- - - - 1 haldun staff 601 Mar 14 16:41 cn=config.ldif

7. Теперь запустите базу данных PostgresQL. После запуска в папке db/ будет много файлов. Если у вас запущен локальный PostgresQL, измените локальный порт на что-либо свободное в вашей системе (например, -p 15432:5432).

$ docker run --network=dcm4chee_network --name db \
-p 5432:5432 \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-v /etc/localtime:/etc/localtime:ro \
-v ~/.local/dcm4chee-arc/timezone:/etc/timezone:ro \
-v ~/.local/dcm4chee-arc/db:/var/lib/postgresql/data \
-d dcm4che/postgres-dcm4chee:14.1-25
$ ls -l ~/.local/dcm4chee-arc/db/
...

8. Наконец, запустите контейнер dcm4che Archive.

$ docker run --network=dcm4chee_network --name arc \
-p 8080:8080 \
-p 8443:8443 \
-p 9990:9990 \
-p 9993:9993 \
-p 11112:11112 \
-p 2762:2762 \
-p 2575:2575 \
-p 12575:12575 \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-e WILDFLY_WAIT_FOR="ldap:389 db:5432" \
-v /etc/localtime:/etc/localtime:ro \
-v ~/.local/dcm4chee-arc/timezone:/etc/timezone:ro \
-v ~/.local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
-d dcm4che/dcm4chee-arc-psql:5.25.2
$ ls -l ~/.local/dcm4chee-arc/wildflytotal
0drwxr-xr-x@
18 haldun staff 576 Feb 14 17:45 configurationdrwxr-xr-x
4 haldun staff 128 Mar 14 16:45 datadrwxr-xr-x@
7 haldun staff 224 Mar 14 16:45 deploymentsdrwxr-xr-x
3 haldun staff 96 Mar 14 16:45 logdrwxr-xr-x
3 haldun staff 96 Mar 14 16:45 tmp
$ tail -f ~/.local/dcm4chee-arc/wildfly/log/server.log
...

9. Давайте проверим, все ли работает. Используя dcm4che/dcm4che-tools, отправьте образы CT в Архив.

$ docker run --rm --network=dcm4chee_network dcm4che/dcm4che-tools storescu -cDCM4CHEE@arc:11112 /opt/dcm4che/etc/testdata/dicom

Полученные изображения должны появиться в пользовательском интерфейсе архива по адресу http://localhost:8080/dcm4chee-arc/ui2 или https://localhost:8443/dcm4chee-arc/ui2.

Полученные изображения должны появиться в пользовательском интерфейсе архива по адресу

Вуаля! Вот и все. Если эта статья помогла вам, пожалуйста, не забудьте поставить большой палец вверх. Если вы столкнулись с проблемой, пожалуйста, оставьте комментарий ниже.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.