上篇文件介绍了什么dicomhttps://blog.csdn.net/qq_39569480/article/details/149641920?spm=1001.2014.3001.5502 本篇文章我们来使用fo_dicom接收并解析dicom文件。

文章结尾附源码。

1.开发环境

visual studio 2019
.netframwork 4.8

2.关键知识点

dicom三要素为 AE title、IP、port

AE Title(Application Entity Title,应用实体标题)

是DICOM(医学数字成像与通信)标准中用于唯一标识网络中的通信节点的核心参数。它在医疗影像系统(如PACS、影像设备)的互联互通通过唯一命名和长度限制(≤16字符) 确保设备间精准通信。它在影像传输、来源追溯、服务调度中不可或缺,配置错误可能引发传输失败或数据混乱。实际应用中需严格遵循命名唯一性规则。

首先声明允许的ae title集合

private static readonly string[] AllowedAEs = { "PACS_SERVER", "MICRODICOM" }; // 允许的AE Title列表

端口号:用于通信端口

private const int Port = 11112; // PACS标准端口

ip: 服务的ip地址

什么是sop类:

SOP类(Service Object Pair,服务对象对)是DICOM(医学数字成像与通信)标准中的核心概念,定义了如何通过特定服务操作特定类型的医学数据对象。它是DICOM网络通信和数据处理的基础单元,确保不同医疗设备(如CT、MRI、PACS)之间的互操作性。
SOP类的作用与意义:
1.标准化通信
设备通过协商支持的SOP类建立关联(Association),确保双方能理解彼此的请求与响应。例如CT设备需声明支持CT Image Storage SOP Class才能向PACS传输图像5。
2.唯一标识
每个SOP类有唯一的UID(如CT图像存储类UID为1.2.840.10008.5.1.4.1.1.2),避免操作歧义45。
3.功能扩展性
新型医疗技术(如眼科层析成像)可定义专属SOP类,支持复杂数据(如动态多帧图像)8。

4.常见的sop类举例
(1).Verification SOP Class
作用:验证网络连通性(如C-ECHO命令)15。
UID:1.2.840.10008.1.1。
(2).Storage SOP Class
作用:传输图像(如CT/MR图像)。
特点:不同设备有专属UID(如MR图像类UID为1.2.840.10008.5.1.4.1.1.4)14。
(3).Modality Worklist SOP Class
作用:设备从HIS/RIS系统获取待检患者列表(C-FIND查询)6。
UID:1.2.840.10008.5.1.4.31。
(4).Query/Retrieve SOP Class
作用:分层级查询数据(如患者级、检查级)16。
(5).MPPS SOP Class
作用:管理设备执行检查的进度状态2。

设置支持的SOP类UID列表

private static readonly string[] SupportedSopClasses ={// 验证服务类SOP (必须添加)DicomUID.Verification.UID,// 存储类SOPDicomUID.CTImageStorage.UID,DicomUID.MRImageStorage.UID,DicomUID.ComputedRadiographyImageStorage.UID,DicomUID.DigitalXRayImageStorageForPresentation.UID,DicomUID.UltrasoundImageStorage.UID,DicomUID.SecondaryCaptureImageStorage.UID,DicomUID.NuclearMedicineImageStorageRetiredRETIRED.UID,DicomUID.NuclearMedicineImageStorage.UID,DicomUID.PositronEmissionTomographyImageStorage.UID,DicomUID.RTImageStorage.UID,DicomUID.UltrasoundImageStorageRetiredRETIRED.UID,DicomUID.UltrasoundMultiFrameImageStorage.UID,DicomUID.UltrasoundMultiFrameImageStorageRetiredRETIRED.UID,DicomUID.XRayAngiographicImageStorage.UID,DicomUID.XRayRadiofluoroscopicImageStorage.UID,DicomUID.DigitalXRayImageStorageForPresentation.UID,DicomUID.DigitalXRayImageStorageForProcessing.UID,DicomUID.DigitalMammographyXRayImageStorageForPresentation.UID,DicomUID.DigitalMammographyXRayImageStorageForProcessing.UID,DicomUID.DigitalIntraOralXRayImageStorageForPresentation.UID,DicomUID.DigitalIntraOralXRayImageStorageForProcessing.UID,DicomUID.XRayAngiographicBiPlaneImageStorageRETIRED.UID,DicomUID.VLEndoscopicImageStorage.UID,DicomUID.VLMicroscopicImageStorage.UID,DicomUID.VLSlideCoordinatesMicroscopicImageStorage.UID,DicomUID.VLPhotographicImageStorage.UID,DicomUID.GrayscaleSoftcopyPresentationStateStorage.UID,DicomUID.KeyObjectSelectionDocumentStorage.UID// 添加其他需要的SOP类};

3.环境配置

这里使用的是fo-dicom 4.0.8 大家可根据自己的需求使用对应版本
在这里插入图片描述
在这里插入图片描述

部分代码实现

DICOM服务类:

using Dicom;
using Dicom.Imaging;
using Dicom.Network;
using Dicom.Log;
using SixLabors.ImageSharp.Formats.Jpeg;
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DICOMkztDemo
{public class DICOMServer{private const int Port = 11112; // PACS标准端口private static readonly string StoragePath = @"C:\DICOM_Storage\";private static readonly string JpegOutputPath = @"C:\DICOM_Storage\DICOM_JPG\";private static readonly string[] AllowedAEs = { "PACS_SERVER", "MICRODICOM" }; // 允许的AE Title列表private static readonly DicomTransferSyntax[] AcceptedTransferSyntaxes ={DicomTransferSyntax.ExplicitVRLittleEndian,<

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

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

相关文章

在 IntelliJ IDEA 中打开这个用于设置 Git 用户名(Name)和邮箱(Email)的特定弹窗

要在 IntelliJ IDEA 中打开这个用于设置 Git 用户名&#xff08;Name&#xff09;和邮箱&#xff08;Email&#xff09;的特定弹窗&#xff08;如下图&#xff09;&#xff0c;可以通过以下几种常见方法触发&#xff1a;https://i.im.ge/2024/07/16/Kt6r1i.IDE-Git-UserName-Co…

redis 源码阅读

官网下载zip&#xff1a; 本文即是文件创建时间时候的版本~ 文章目录目录结构/srcint main()服务端 server足够的熵值 entropyumask掩码系统初始化*重启机制&#xff1a;保存执行数据 以便后续重启服务哨兵模式 sentinelrdb aof解析命令行参数声明实现的位置目录结构 目录/文…

《C++》面向对象编程--类(下)

文章目录一、赋值运算符重载1.1定义1.2基本规则1.3为什么需要运算符重载&#xff1f;1.4示例&#xff1a;二、前置和后置区别2.1前置的实现与特点2.2后置的实现与特点2.3核心区别三、const四、取地址及const取地址操作符重载4.1定义4.2语法4.3注意事项一、赋值运算符重载 1.1定…

EasyExcel 模板导出数据 + 自定义策略(合并单元格)

需求&#xff1a;数据库里的主表明细表&#xff0c;联查出数据并导出Excel&#xff0c;合并主表数据的单元格。代码&#xff1a;controllerPostMapping("export")ApiOperation(value "导出数据")protected void export(ApiParam Valid RequestBody NewWms…

股指期权可以随时平仓吗?

本文主要介绍股指期权可以随时平仓吗&#xff1f;股指期权是否可以随时平仓&#xff0c;需结合交易规则、合约状态及市场流动性综合判断&#xff0c;具体如下。股指期权可以随时平仓吗&#xff1f;一、正常交易时间内的平仓规则在交易日的交易时段内&#xff08;如国内上证50ET…

成品电池综合测试仪:保障电池品质与安全的核心工具|深圳鑫达能

随着新能源汽车、储能系统、消费电子等领域的快速发展&#xff0c;电池作为核心能源组件&#xff0c;其性能与安全性直接关系到产品的整体质量与用户体验。成品电池综合测试仪作为电池生产与质检环节的关键设备&#xff0c;通过模拟真实使用场景&#xff0c;对电池的电气性能、…

智慧工厂网络升级:新型 SD-WAN 技术架构与应用解析

1. 智慧工厂对网络的核心需求智慧工厂的网络需求高度复杂&#xff0c;主要体现在以下几个方面&#xff1a;高可靠性与低延迟工厂中的生产执行系统&#xff08;MES&#xff09;、设备监控系统&#xff08;如 PLC/SCADA&#xff09;、产品生命周期管理系统&#xff08;PLM&#x…

在 Windows 使用 Nginx/HAProxy 实现负载均衡

在本实验中&#xff0c;我们将在 Windows 系统 上使用 Python 编写一个 TCP 服务器&#xff0c;并启动两个服务实例。然后使用 Nginx 或 HAProxy 作为负载均衡器&#xff0c;将来自多个客户端的请求分发到这两个服务实例上&#xff0c;验证负载均衡效果。 &#x1f9e9; 环境准…

【物联网】基于树莓派的物联网开发【17】——物联网通信协议MQTT基础知识

使用背景 MQTT最初是为了解决物联网&#xff08;IoT&#xff09;领域设备之间的低带宽、高延迟、不稳定网络连接等问题而设计的。 场景介绍 广泛应用物联网领域&#xff0c;数据实时传输&#xff0c;连接各种智能设备和应用的关键桥梁 MQTT简介和概述 MQTT&#xff08;Message …

【qml-3】qml与c++交互第二次尝试(类型方式)

背景&#xff1a; 【qml-1】qml与c交互第一次尝试&#xff08;实例方式&#xff09; 【qml-2】尝试一个有模式的qml弹窗-CSDN博客 【qml-3】qml与c交互第二次尝试&#xff08;类型方式&#xff09; 还是qml学习笔记。 这次搁置太久了。其实不太会&#xff0c;还是以教程为主…

输电线路观冰精灵在线监测装置:科技赋能电网安全的新利器

一、技术架构与工作原理输电线路观冰精灵在线监测装置&#xff08;简称“观冰精灵”&#xff09;是一款集成多源感知、智能分析、远程通信于一体的专业化覆冰监测设备。其核心功能通过以下技术路径实现&#xff1a;1. 数据采集模块视觉识别系统&#xff1a;搭载工业级夜视摄像机…

Ubuntu22 上,用C++ gSoap 创建一个简单的webservice

创建calc.h// calc.h // gSOAP 服务定义 int ns__add(double a, double b, double &result); int ns__subtract(double a, double b, double &result);创建my_server.cpp#include "soapService.h" #include "ns.nsmap" class MyService : public S…

Java(LinkedList和ArrayList底层分析)

LinkedList全面说明:LinkedList底层操作机制:LinkedList的方法:add():增加节点对象remove():删除一个节点对象(默认删除第一个节点对象)set():修改一个节点对象get():得到一个节点对象LinkedList的遍历:增强for循环迭代器普通for循化LinkedList的源码解读:增加源码:1. LinkedLi…

开源项目XBuilder的user逻辑

stores \ userquery-keys.ts 统一管理Vue Query&#xff08;TanStack Query的Vue适配版本&#xff09;缓存键&#xff0c;在下面的文件中复用index.ts 入口文件&#xff0c;统一用户信息查询signed-in.ts 登录状态管理、认证逻辑在用户登录后&#xff0c;系统颁发一个令牌&…

第十五章 SEO的简单免费工具

SEO的基础工具和检测 前文中主要是讲一些SEO的网站基本功&#xff0c;而在这一章那&#xff0c;会讲到一些非常基本的工具&#xff0c;主要是关于&#xff1a;网站的流量、停留时长、关键词密度、内容、以及Google的站长工具。 Google Search Console Google Search Console这是…

SSL 证书与 HTTPS 的关系:一文理清核心关联

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;和 SSL 证书&#xff08;Secure Sockets Layer Certificate&#xff09;是网络安全的两大基石&#xff0c;它们共同保障了互联网通信的安全性和可信度。以下从定义、功能、关系及实际应用层面进行解析&#xf…

使用Jmeter参数化实现接口自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文记录如何使用Jmeter参数化&#xff08;csv)实现接口自动化——测试Token不同入参情况下&#xff0c;接口请求能够返回正确的结果1. 首先需要使用Jmeter获取一个…

X-plore File Manager v4.34.02 修改版:安卓设备上的全能文件管理器

在使用安卓设备时&#xff0c;文件管理是日常操作中不可或缺的一部分。X-plore File Manager 作为一款功能强大的文件管理器&#xff0c;凭借其丰富的功能和便捷的操作&#xff0c;成为安卓用户管理文件的首选工具之一。最新版 v4.34.02 修改版更是解锁了更多高级功能&#xff…

React+threejs两种3D多场景渲染方案

在现代 Web 开发中&#xff0c;3D 可视化需求日益增长&#xff0c;特别是在 React 生态系统中实现多 3D 场景的展示与交互。本文通过对比两种实现方案&#xff0c;探讨 React 中构建多 3D 场景的最佳实践&#xff0c;分析它们的技术特点、性能表现和适用场景。方案一&#xff1…

React性能优化终极指南:memo、useCallback、useMemo全解析

掌握 React.memo、useCallback、useMemo 的正确使用姿势&#xff0c;让你的 React 应用性能飞起来&#xff01; &#x1f3af; React.memo 作用 React.memo 是一个高阶组件&#xff0c;用于函数组件&#xff0c;通过浅比较 props 的变化来决定是否重新渲染。如果 props 没有变…