C#模擬pacs系統接收并解析影像設備數據(DICOM文件解析)

上篇文件介紹了什么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 沒有變…