# DicomProxy_Viewer **Repository Path**: fightroad/DicomProxy_Viewer ## Basic Information - **Project Name**: DicomProxy_Viewer - **Description**: 一个用于在DICOMWEB和传统DIMSE服务之间进行转换的代理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-20 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: DicomProxy, DicomWeb ## README # DicomProxy_Viewer 一个用于在[DICOMWEB](https://www.dicomstandard.org/dicomweb)和传统DICOM [DIMSE](https://dicom.nema.org/medical/dicom/current/output/chtml/part07/sect_7.5.html)服务之间进行转换的代理 ## 项目描述 * 一个Node.js工具,可以轻松地将支持DICOMWEB的DICOM查看器连接到一个或多个仅支持DIMSE服务的传统PACS系统。 * 预装了流行的[OHIF DICOM Web Viewer](https://github.com/OHIF/Viewers)(版本3.10.1)。 * 支持OHIF MPR(vtk.js)功能,用于查看体积数据集。 * 支持多线程处理。 ![界面截图1](doc/pic.png) ![界面截图2](doc/pic2.png) ![界面截图3](doc/pic3.png) ## 适用场景 * 如果您想查看来自一个或多个不支持DICOMWEB且不附带Web查看器的传统PACS的影像数据。 ## 工作原理 * 该应用应安装在医院内网中,并配置通过DIMSE网络连接到一个或多个PACS(节点)。 * 它托管默认的DICOMweb查看器(OHIF),可以替换。 * Web服务器暴露查看器所需的默认QIDO和WADOURI/WADORS API,并在两种协议之间即时转换。 ## 快速开始 1. 运行 `dicomweb-proxy.exe` 启动代理服务 2. 在 `config` 目录下编辑 `default.json` 配置文件 3. 打开Web浏览器访问查看器,默认地址:`http://localhost:5000` ## 配置说明 配置文件位于 `config/default.json`,主要配置项如下: ### 源配置 (source) 配置代理服务本身的DICOM参数: ```json { "source": { "aet": "DICOMWEB PROXY", // 应用实体标题 "ip": "127.0.0.1", // 监听IP地址 "port": 8888 // 监听端口 } } ``` ### PACS节点配置 (peers) 配置要连接的一个或多个PACS系统: ```json { "peers": [ { "aet": "QRSCP", // PACS的AET "ip": "192.168.2.10", // PACS的IP地址 "port": 11114 // PACS的端口 } // 可以添加多个PACS节点 ] } ``` ### 传输配置 ```json { "transferSyntax": "1.2.840.10008.1.2.4.80", // DICOM传输语法 "mimeType": "image/dicom+jpeg", // MIME类型 "lossyQuality": 60 // 有损压缩质量 (0-100) } ``` **常用传输语法 (transferSyntax):** | UID | 说明 | 类型 | |-----|------|------| | `1.2.840.10008.1.2` | Implicit VR Little Endian | 未压缩 | | `1.2.840.10008.1.2.1` | Explicit VR Little Endian | 未压缩 | | `1.2.840.10008.1.2.2` | Explicit VR Big Endian | 未压缩 | | `1.2.840.10008.1.2.4.50` | JPEG Baseline (Process 1) | 有损压缩 | | `1.2.840.10008.1.2.4.51` | JPEG Extended (Process 2 & 4) | 有损压缩 | | `1.2.840.10008.1.2.4.57` | JPEG Lossless (Process 14) | 无损压缩 | | `1.2.840.10008.1.2.4.70` | JPEG Lossless (Process 14 SV1) | 无损压缩 | | `1.2.840.10008.1.2.4.80` | JPEG-LS Lossless | 无损压缩 | | `1.2.840.10008.1.2.4.81` | JPEG-LS Near-Lossless | 近无损压缩 | | `1.2.840.10008.1.2.4.90` | JPEG 2000 Lossless | 无损压缩 | | `1.2.840.10008.1.2.4.91` | JPEG 2000 Lossy | 有损压缩 | | `1.2.840.10008.1.2.5` | RLE Lossless | 无损压缩 | **说明:** - **未压缩**:保持原始数据,文件较大但兼容性最好 - **有损压缩**:文件小但会损失部分图像质量,适合网络传输 - **无损压缩**:文件较小且不损失图像质量,推荐用于诊断 ### 存储配置 ```json { "logDir": "./logs", // 日志目录 "storagePath": "./data", // 数据存储路径 "cacheRetentionMinutes": 60 // 缓存保留时间(分钟) } ``` ### Web服务器配置 ```json { "webserverPort": 5000 // Web服务器端口 } ``` ### DICOM操作配置 ```json { "useCget": true, // 是否使用C-GET(false则使用C-MOVE) "useFetchLevel": "SERIES", // 获取级别:STUDY/SERIES/INSTANCE "maxAssociations": 4 // 最大并发关联数 } ``` ### 查询配置 ```json { "qidoMinChars": 0, // QIDO查询最小字符数 "qidoAppendWildcard": true // 是否自动追加通配符 } ``` ### 其他配置 ```json { "verboseLogging": false, // 详细日志 "fullMeta": true, // 是否获取完整元数据 "websocketUrl": "", // WebSocket URL(可选) "websocketToken": "" // WebSocket令牌(可选) } ``` ## 许可证 MIT