开源PACS(dcm4che-arc-light)部署教程,源码方式

在这里插入图片描述

目录

  • 文件清单
  • 下载地址
  • 安装概述
    • OpenLDAP、Apache Directory Studio
    • Wildfly
    • dcm4che
  • 安装部署
    • MySQL
    • 源码编译
      • dcm4chee
      • dcm4chee-arc-light
    • OpenLDAP安装
    • ApacheDirectoryStudio安装
    • 配置WildFly服务器
  • 部署完成

文件清单

在这里插入图片描述

下载地址

  • Apache directory studio - link
  • OpenLDAP - link
  • dcm4chee - link
  • JDK - link
  • MySQL - link
  • keycloak-oidc-wildfly-adapter-15.0.0.zi - link
  • widfly - link

安装概述

由于dcm4chee使用到的一些环境和配置在日常开发或者流行框架里都是很少见的所以我会大致讲解一下每个工具在这个环节中充当的作用,当然由于个人水平有限部分内容可能不能很好的或者正确的讲述,如果错误欢迎指正。
首先安装包中部分内容的讲解,

OpenLDAP、Apache Directory Studio

  • OpenLDAP 则是一个开源的LDAP服务器软件实现,它允许你运行自己的LDAP服务。
  • Apache Directory Studio 是一个基于 Eclipse 的 LDAP 目录管理工具。它提供了丰富的图形用户界面,使得管理和操作 LDAP 服务器变得更为简单直观。
    何为LDAP服务?轻量级目录访问协议,是一种开放的、跨平台的协议,用于访问和维护分布式目录信息服务。LDAP服务主要用于存储和检索关于用户、设备、权限以及其他资源的信息,并支持快速查询这些信息的能力。它被广泛应用于需要集中管理用户身份验证和授权的应用程序和服务中。非常适合于那些需要快速查找的静态数据集,在dcm4chee中保存了写配置信息,类似于Nacos的配置中心,不过是静态的 ~ ~

Wildfly

WildFly 是一个开源的、基于 Java EE(现已更名为 Jakarta EE)的应用服务器,由 Red Hat 开发和维护。它以前被称为 JBoss AS 或者是 JBoss EAP(Enterprise Application Platform)。WildFly 提供了一个运行企业级Java应用程序的强大平台,并支持最新的Java EE标准以及一系列丰富的功能。
看定义像不像Tomcat?我们放一下Tomcat的:
Tomcat 是一个专注于 Servlet 和 JSP 规范的轻量级开源Web服务器和Servlet容器。它主要用于部署基于Servlet和JSP技术的Java Web应用程序。
当然两个的侧重不一样,WildFly 提供了一个完整的 Jakarta EE 实现,而 Tomcat 更加专注于Servlet和JSP的支持,在此处不过多深入,暂时对比着看看。

dcm4che

重头戏!!!
dcm4che 是一个开源的Java库和一系列应用程序,主要用于医疗影像信息学领域,特别是处理DICOM(医学数字成像和通信)标准的数据。它为开发人员提供了工具和库来构建、存储、查询和检索医学影像及相关信息的应用程序。

题外话:基于C++的DCMTK、基于Java的dcm4che以及基于python的pydicom,都是非常优秀的解释DICOM标准的第三方库,通过在工程中引入它们可以避免软件开发人员去进行底层的解析工作,可为项目开发提高效率。

包的获取主要分两种方式源码方式和编译好的包,如果是简单的使用可以考虑编译好的包,自己想看细节的话肯定是要源码的

源码地址:https://github.com/dcm4che
编译包的地址:https://sourceforge.net/projects/dcm4che/

总结一下,dcm4chee就是在搭建好WildFly和OpenLDAP后将war包放到WilFly中运行起来。

安装部署

JDK环境

在这里插入图片描述
在这里插入图片描述

MySQL

安装步骤,略
创建表结构
在这里插入图片描述
在这里插入图片描述

源码编译

dcm4chee

从github https://github.com/dcm4che/dcm4che 下载然后install到本地,
在这里插入图片描述

mvn -T 8 install

在这里插入图片描述

建议科学上网,完全下载下来还是挺费时间的,如果中间存在失败的进入文件夹重新安装
在这里插入图片描述

dcm4chee-arc-light

下载dcm4chee-arc-light代码, https://github.com/dcm4che/dcm4chee-arc-light

使用Idea打开
在这里插入图片描述

同样使用maven install成功但是此时默认生成的是plsql的
进入最外层pom中修改
在这里插入图片描述

再次install
在这里插入图片描述

到此代码编译的工作就完成了,稍后我们部署好WildFly后再启动程序
看一下包中的内容,大致这样的结构
在这里插入图片描述

后续都会用到

OpenLDAP安装

双击
在这里插入图片描述

其实安装的过程就是一直下一步就完了,此处借鉴了下网上的截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ApacheDirectoryStudio安装

当然OpenLDAP的安装还可以通过Docker的方式,例如我mac本上就是通过此方式安装的,参考一下这个
https://blog.csdn.net/weixin_42176112/article/details/123390391
https://blog.csdn.net/weixin_42176112/article/details/123308975?spm=1001.2014.3001.5501
OpenLDAP配置
‪复制”dcm4chee-arc-5.30.0-mysql\ldap\schema“下文件至”OpenLDAP\schema“:
在这里插入图片描述

修改配置 编辑“OpenLDAP\slapd.conf”:
在这里插入图片描述

完整的

MDB Backend configuration file
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
ucdata-path    ./ucdata
include        ./schema/core.schema
include        ./schema/cosine.schema
include        ./schema/nis.schema
include        ./schema/inetorgperson.schema
include        ./schema/openldap.schema
include        ./schema/dyngroup.schema
include         ./schema/dicom.schema
include         ./schema/dcm4che.schema
include         ./schema/dcm4chee-archive.schema
include         ./schema/dcm4chee-archive-ui.schemapidfile        ./run/slapd.pid
argsfile    ./run/slapd.args# Enable TLS if port is defined for ldapsTLSVerifyClient never
TLSCipherSuite ECDHE-RSA-AES256-SHA384:AES256-SHA256:!RC4:HIGH:!MD5:!aNULL:!EDH:!EXP:!SSLV2:!eNULL
TLSProtocolMin 3.3
TLSCertificateFile ./secure/certs/maxcrc.cert.pem
TLSCertificateKeyFile ./secure/certs/maxcrc.key.pem
TLSCACertificateFile ./secure/certs/maxcrc.cert.pem#######################################################################
# mdb database definitions
#######################################################################database    mdb
suffix          "dc=dcm4che,dc=org"
rootdn          "cn=admin,dc=dcm4che,dc=org"
rootpw          secret
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw    {SSHA}7iVNbPoEZ/wAT+9Lfjs+fe38CZOSrLJo# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory ./data
searchstack 20
# Indices to maintain
index mail pres,eq
index objectclass pres
index default eq,sub
index sn eq,sub,subinitial
index telephonenumber
index cn

重启一下
在这里插入图片描述

配置一下
打开 Apache Directory Studio
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置WildFly服务器

解压,进入 standalone\configuration复制standalone.xml和dcm4chee-arc.xml
在这里插入图片描述

安装dcm4chee的核心模块,复制keycloak-oidc-wildfly-adapter-15.0.0.zip到\dcm4chee-arc-5.33.1-mysql\jboss-modules文件夹
一起解压
在这里插入图片描述

复制到wildfly-34.0.1.Final的文件夹
在这里插入图片描述

此时你有两种修改dcm4chee-arc.xml的选择,第一种,打开dcm4chee-arc.xml,借助gpt或者其他ai工具逐行理解修改
在这里插入图片描述

方式2
通过 wildfly 打开dcm4chee-arc.xml 修改里面的127.0.0.1为0.0.0.0
在这里插入图片描述

进入D:\wildfly-34.0.1.Final\bin中执行

standalone.bat -c dcm4chee-arc.xml

打开D:\dcm4chee\dcm4chee-arc-5.33.1-mysql\cli,调整你的数据库信息
在这里插入图片描述

然后在bin下面再打开一个命令行(Linux系统的自行修改)

jboss-cli.bat -c --file="D:\dcm4chee\dcm4chee-arc-5.33.1-mysql\cli\add-data-source-mysql.cli"
jboss-cli.bat -c --file="D:\dcm4chee\dcm4chee-arc-5.33.1-mysql\cli\adjust-managed-executor.cli"
jboss-cli.bat -c
/system-property=dcm4chee-arc.DeviceName:add(value=dcm4chee-arc)
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000)
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000) 
:reload

运行代码
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

D:\wildfly-34.0.1.Final\bin\standalone.bat -c dcm4chee-arc.xml

在这里插入图片描述
在这里插入图片描述

成功,如果你恰好有OHIF环境,找到 local_dcm4chee.js修改IP地址和端口
在这里插入图片描述

yarn run dev:dcm4chee

在这里插入图片描述
在这里插入图片描述

OK
在这里插入图片描述

部署完成

完成上述步骤,我们通过源码部署的方式成功搭建了dcm4che环境。这种方式的部署,不仅仅是一个技术上的实践,更为我们深入探索dcm4che的精髓打开了大门。它为我们提供了一个独特的视角来观察和理解这一强大工具集的工作原理,同时极大地促进了我们对DICOM标准的学习与应用。通过这样的过程,我们可以更深刻地认识到dcm4che在医疗影像管理中的重要性及其复杂性,为未来的开发和研究奠定了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java使用(Preference、Properties、XML、JSON)实现处理(读写)配置信息或者用户首选项的方式的代码示例和表格对比

在Java应用程序中,处理应用首选项(preferences)有多种方法,包括使用java.util.prefs.Preferences类、属性文件(如.properties文件)、XML文件和JSON文件。下面是每种方法的详细说明和代码示例,最…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

dataframe数据形式操作中的diff和shift函数区别与对比

问题分析 从错误日志中可以看到,代码在 report_services.py 的 gnss_monthly_report 函数中出现了 ValueError,具体错误信息是: ValueError: either both or neither of x and y should be given这个错误发生在以下代码行: rep…

C语言动态内存管理(下)

欢迎拜访:雾里看山-CSDN博客 本篇主题:C语言动态内存管理(下) 发布时间:2025.3.18 隶属专栏:C语言 目录 动态内存常见错误内存泄漏(Memory Leak)典型场景后果解决方案 悬挂指针(Dangling Pointe…

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪(Surface-Tracking)是指机器人通过实时感知工件曲面的三维形貌,动态调整运动轨迹和位姿,以精确跟随曲面进行加工(如打磨、抛光、喷涂等)的技术。 力 - 位姿协同控制 力控模式&#xff…

网络安全运维应急响应与溯源分析实战案例

在日常运维过程中,网络安全事件时有发生,快速响应和精准溯源是保障业务稳定运行的关键。本文将通过一个实际案例,详细解析从发现问题到溯源定位,再到最终解决的完整流程。 目录 一、事件背景 二、事件发现 1. 监控告警触发 2…

【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节

目录 一、事务标签(Transaction Label)机制 1.1 事务标签核心规则 1.2 事务标签作用域与并发性 1.3 实现建议与陷阱规避 1.4 协议设计思考 1.5 调试与验证 二、消息分片(Fragmentation)机制 2.1 分片触发条件 2.2 分片支…

harmonyOS NEXT开发与前端开发深度对比分析

文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…

OpenWebUI:一站式 AI 应用构建平台体验

🚀 大家好,今天给大家分享一个超棒的 AI 应用构建工具——OpenWebUI!体验下来,只能说丝滑!必须强烈推荐! 🔥 听说过阿里巴巴的 Qwen 吗?他们最新的 Qwen Chat 网站就是用 OpenWebUI…

多线程—进程与线程

1 进程 1.1 进程概念 进程:操作系统提供的一种抽象,当程序在运行时,好像计算机的所有硬件资源都在为其服务。换言之,进程就是程序的一次运行过程。进程是操作系统分配资源的基本单位。 注意:区分进程和程序&#xff0…

[原创](Modern C++)现代C++的关键性概念: 灵活多变的绑定: std::bind

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …

ssm框架之mybatis框架动态SQL

1 mybatis动态sql mybatis可以通过各种各样的标签在sql映射文件中实现如下功能 1、语句的动态拼接 2、前后缀格式处理 3、复杂参数处理 常用标签如下: 1.1 if标签 如下示例,当有一个入参为null或者空的时候的时候,不参与计算,…

Spring Boot 事务详解

Spring Boot 事务详解 引言 在现代应用程序中,事务管理是确保数据一致性和完整性的重要机制。Spring Boot 提供了强大的事务管理功能,使得开发者可以轻松地定义和管理事务。本文将详细介绍 Spring Boot 中的事务管理,包括事务传播行为、事务…

poetry使用

1.初始化 package name 填入口文件名 poetry init2.在本目录下虚拟 poetry config virtualenvs.in-project true 3.自动生成依赖文件和vent虚拟环境,管理本项目下载包 poetry add flask pandas numpy 4 4.下载依赖 poetry install 5.查看都安装了什么包 poe…

Git 新建本地分支并关联到远程仓库

文章目录 1、方法一2、方法二 1、方法一 A、新建本地分支: git checkout -b new-branch-nameB、push新分支到远程仓库: git push origin newBranchC、本地分支关联到远程(选一个即可): git branch --set…

一条SQL在mysql数据库中经历的过程

SQL语句在MySQL数据库中普遍经历的过程如下: 客户端发起查询请求到MySQL数据库服务器监听端口; MySQL数据库server端接收到请求; server端从已有的连接池或者新建一个线程,用来处理客户端发起的请求; server层…

Compose 的产生和原理

引言 compose 出现的目的: 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。 正文 compose 是什么? 就是一套ui框架 和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的…

【计算机网络】一二章

一 二 非常棒的例子 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 往返时间(Round-Trip Time,RTT)s是指从发送端发送数据分组…

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败&#xff1…