Aspose.Medical DICOM 为 .NET 文本转换器

Aspose.Medical DICOM to Text Converter for .NET 是一个强大的 API 专注于 转换 DICOME 数据到人可阅读和机器可破坏的格式. 它将 DIKOME 的数据集序列化为 JSON 和 XML 形式,允许与 Web 服务、 REST APIs 以及现代医疗保健系统进行整合。

安装和设置

  • 安装 NuGet 包 Aspose.Medical (原始 API 功率转换)
  • 在初创公司申请测量许可,以避免评估限制:见 计量许可 .
  • 审查框架要求 安装指南 .

支持的平台

  • 操作系统:Windows、Linux、MacOS
  • ** 框架:** .NET 8.0+
  • ** 架构:** x64, ARM64 (macOS)

快速启动

(一)向JSON说话

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm);

2) DICOM 到 JSON 与 Pretty Print

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string formattedJson = DicomJsonSerializer.Serialize(dcm, writeIndented: true);
Console.WriteLine(formattedJson);

3) DICOM Dataset 到 JSON

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
Dataset dataset = dcm.Dataset;
string json = DicomJsonSerializer.Serialize(dataset, writeIndented: true);

4)多 DICOM 文件到 JSON Array

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm1 = DicomFile.Open("scan1.dcm");
DicomFile dcm2 = DicomFile.Open("scan2.dcm");
Dataset[] datasets = [dcm1.Dataset, dcm2.Dataset];
string json = DicomJsonSerializer.Serialize(datasets, writeIndented: true);

5) Serialize to Stream(记忆效益)

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
using MemoryStream stream = new();
DicomJsonSerializer.Serialize(stream, dcm.Dataset);

6) 保存为 JSON 文件

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
using FileStream output = File.Create("output.json");
DicomJsonSerializer.Serialize(output, dcm.Dataset, writeIndented: true);

JSON 消化

将 JSON 连接到 Dataset

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_data.json");
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

将 JSON Stream 转换为 Dataset

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

using FileStream stream = File.OpenRead("dicom_data.json");
Dataset? dataset = DicomJsonSerializer.Deserialize(stream);

将 JSON 转换为 DicomFile

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_file.json");
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonText);

将 JSON Array 转移到多个数据集

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_array.json");
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonText);

XML 序列化

DICOM 到 XML

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

XML 到 DICOM 数据集

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string xmlText = File.ReadAllText("dicom_data.xml");
Dataset? dataset = DicomXmlSerializer.Deserialize(xmlText);

Async 火焰

在网页应用和服务中的无同步操作:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Async deserialization from stream
using FileStream stream = File.OpenRead("dicom_data.json");
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(stream);

// Async serialization to stream
using FileStream output = File.Create("output.json");
await DicomJsonSerializer.SerializeAsync(output, dataset);

** 可用的 Async 方法:**

  • DeserializeAsync 将 UTF-8 JSON 流向 Dataset
  • DeserializeFileAsync 将 UTF-8 JSON 流向 DicomFile
  • DeserializeListAsync 将 UTF-8 JSON 流向 Dataset 序列
  • SerializeAsync 序列数据集、DicomFile 或 Dataset 连接到 UTF-8 JSON 流

特性和功能性

DICOM Web 服务兼容性

转换器符合 DICOM PS3.18 (Web Services) 标准,确保兼容性与:

  • 其余的DICOM Web API
  • 基于云的PACS系统
  • 现代医疗保健互动平台
  • FHIR兼容系统

序列化选项

定制序列化行为与 DicomJsonSerializerOptions:

DicomJsonSerializerOptions options = new()
{
    UseKeywordsAsJsonKeys = false,  // Use tags instead of keywords
    WriteKeyword = true,            // Include keyword as separate attribute
    WriteName = true,               // Include tag name as separate attribute
    NumberHandling = JsonNumberHandling.AsNumber  // Number format
};

string json = DicomJsonSerializer.Serialize(dataset, options);
选项描述
UseKeywordsAsJsonKeys使用 DICOM 关键字而不是标签作为 JSON 密钥(非标准)
WriteKeyword写 DICOM 标签作为单独的 JSON 属性
WriteName写 DICOM 标签名称作为不同的 JSON 属性
NumberHandling处理数字如 AsNumber 或 AsString
BulkDataLoader在 BulkData 元素中提到的 blob 数据的加载器
BulkDataConverter编写数据作为 BulkData 参考的转换器

System.Text.Json 集成

使用标准 .NET JSON 序列化转换器:

using System.Text.Json;
using Aspose.Medical.Dicom.Serialization;

JsonSerializerOptions options = new();
options.Converters.Add(new DicomFileJsonConverter());
options.Converters.Add(new DatasetJsonConverter());

// Now use with JsonSerializer
string json = JsonSerializer.Serialize(dicomFile, options);

支持的类型

入口类型输出格式
DicomFileJSON、XML
DatasetJSON、XML
Dataset[]JSON、XML

数据保存

序列化精确保留:

  • 所有 DICOM 标签和值
  • 值代表性(VR)
  • 沉默的序列
  • 个人标签
  • 大量数据参考
  • 特殊浮动值(NaN,Infinity)

常用案例

  • 网页观众:为基于浏览器的医学图像观看者提供DICOM数据服务。
  • REST APIs:构建以 JSON 格式交换 DICOM 数据的医疗保健 API。
  • 数据分析:在数据处理管道中进行分析的DICOM甲数据出口。
  • 集成:将遗产PACS连接到现代基于云的医疗保健平台。
  • Debugging:为解决问题创建人可阅读的DICOM数据代表。
  • ** 存档**:存储 DICOM 数据在文档数据库中,如 MongoDB 或 Elasticsearch。

最佳实践

  • 第一许可证:在任何转换之前启动测量授权,以避免评估限制。
  • 使用流:对于大文件或网页服务,使用基于流的方法来提高记忆效率。
  • Async 操作:在 Web 应用程序中使用 asynk 方法以避免阻止线条。
  • 验证环游:测试序列化/排序周期以确保数据完整性。
  • 标准遵守:使用默认选项,以确保 DICOM PS3.18 符合要求;非标准选择可能会破坏第三方承包商。
  • UTF-8 编码:流方法使用 UTF-8,适合网页 API 和文件操作。

行动总结

行动Input出口方法
SerializeDatasetString / 流量Serialize
SerializeDicomFileString / 流量Serialize
Serialize数据集( )String / 流量Serialize
DeserializeString / 流量DatasetDeserialize
DeserializeString / 流量DicomFileDeserializeFile
DeserializeString / 流量数据集( )DeserializeList

FAQ

**需要第三方图书馆吗?**它是一个单独的API,仅使用 .NET 内置的 JSON/XML 支持。

** JSON 输出是否符合 DICOM Web Services?**默认输出符合 DICOM PS3.18 规格。

** 可以自定义 JSON 密钥格式吗?**是的,使用 DicomJsonSerializerOptions 控制标签 vs. 关键词和额外属性。

** 已保留的序列?**是的,系列化器维持了完整的DICOM结构,包括粘着的序列。

** 如何处理大 DICOM 文件?**使用基于流的方法(Serialize(stream, ...) 和 DeserializeAsync( )为记忆效益处理。

** 是环游转换无损吗?**是的,序列化保留了所有 DICOM 数据,以便准确地撤回 Dataset 或 DicomFile 对象。

 中文