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处理数字如 AsNumberAsString
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 对象。

 中文