Запуск dcm4chee на MacOS
Если вы занимаетесь информационными технологиями в здравоохранении, вы, возможно, слышали о стандарте DICOM. В своей простейшей форме DICOM - это зрелый стандарт для управления и передачи медицинских изображений вместе с медицинскими данными.
Dcm4che - это Java-библиотека, реализующая протокол DICOM. Надеюсь, она имеет открытый исходный код и размещена на Github. Это очень надежная реализация стандарта DICOM, и многие разработчики, включая меня, полагаются на эту замечательную библиотеку при разработке своего программного обеспечения для здравоохранения.
Для внимательного читателя в названии есть двойное "е", dcm4chee. Нет, это не опечатка. На самом деле dcm4che - это гораздо больше, чем просто библиотека Java. Она включает в себя множество утилит и приложений для тестирования и разработки приложений Healthcare. Дополнительное "e" в dcm4chee означает "enterprise". Это полностью рабочий менеджер изображений/архив изображений.
Как разработчику программного обеспечения для здравоохранения или ИТ-специалисту, вам, вероятно, понадобится запустить dcm4chee, чтобы понять детали протокола DICOM. dcm4chee уже имеет хорошо написанный документ о запуске dcm4chee на Docker. Пожалуйста, проверьте эту ссылку. Как следует из названия, в статье будут описаны мелкие детали для правильного запуска dcm4chee на MacOS.
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.
Вуаля! Вот и все. Если эта статья помогла вам, пожалуйста, не забудьте поставить большой палец вверх. Если вы столкнулись с проблемой, пожалуйста, оставьте комментарий ниже.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.