Como converter um arquivo DICOM para JSON usando DicomJsonSerializer

Como converter um arquivo DICOM para JSON usando DicomJsonSerializer

Este tutorial demonstra como converter arquivos DICOM para o formato JSON usando C#. A saída de jSON é essencial para a integração de metadados DicOM com serviços web modernos, APIs REST e sistemas de informação de saúde.

Benefícios da conversão de DICOM para JSON

  • • Integração da Web:- JSON é o formato padrão para APIs REST e serviços web.

  • Análise de dados:- Processar facilmente os metadados DICOM em tubos de análise de dados.

  • • Interoperabilidade *:- Compartilhe metadados com sistemas que não suportam formatos nativos DICOM.

Título: Preparando o Meio Ambiente

  • Instale o Visual Studio ou qualquer .NET IDE compatível.
  • Crie um novo projeto de aplicação .NET 8 console.
  • Instale Aspose.Medical do NuGet Package Manager.

Guia passo a passo para converter DICOM para JSON

Passo 1: Instalar Aspose.Medical

Adicione a Aspose.Medical Library ao seu projeto usando NuGet.

Install-Package Aspose.Medical

Passo 2: Incluir os espaços de nome necessários

Adicione referências aos espaços de nomes necessários em seu código.

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

Passo 3: Carregar o arquivo DICOM

Carregue o arquivo DICOM que você deseja converter.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

Passo 4: Serialize para JSON

Use o DicomJsonSerializer.Serialize Método para converter o arquivo DICOM para JSON.

string json = DicomJsonSerializer.Serialize(dcm);

Passo 5: Salve ou use a saída JSON

Salve o JSON para um arquivo ou use-o diretamente na sua aplicação.

// Save to file
File.WriteAllText("patient_scan.json", json);

// Or use directly
Console.WriteLine(json);

Exemplo de código completo para converter DICOM para JSON

Aqui está um exemplo completo mostrando como converter um arquivo DICOM para JSON:

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

// Load the DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Convert to JSON
string json = DicomJsonSerializer.Serialize(dcm);

// Save to file
File.WriteAllText("patient_scan.json", json);

Console.WriteLine("DICOM file converted to JSON successfully!");
Console.WriteLine($"Output saved to: patient_scan.json");

Impressão JSON Pretty-Printed

Para JSON com indentação, use o writeIndented Parâmetros :

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

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Serialize with indentation for readability
string prettyJson = DicomJsonSerializer.Serialize(dcm, writeIndented: true);

File.WriteAllText("patient_scan_pretty.json", prettyJson);

Console.WriteLine("Pretty-printed JSON saved successfully!");

Conversão de Dataset em vez de DicomFile

Você também pode converter apenas a parte do Dataset:

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

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Serialize only the dataset (without file meta information)
string datasetJson = DicomJsonSerializer.Serialize(dcm.Dataset);

File.WriteAllText("patient_dataset.json", datasetJson);

Estrutura de saída JSON

A saída JSON segue o padrão DICOM PS3.18. aqui está um exemplo do que a saída parece:

{
  "00080005": {
    "vr": "CS",
    "Value": ["ISO_IR 100"]
  },
  "00080020": {
    "vr": "DA",
    "Value": ["20240115"]
  },
  "00080030": {
    "vr": "TM",
    "Value": ["143022"]
  },
  "00100010": {
    "vr": "PN",
    "Value": [
      {
        "Alphabetic": "DOE^JOHN"
      }
    ]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Serialização Baseada em Stream

Para grandes arquivos ou aplicações da web, use serializadores baseados no fluxo:

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

DicomFile dcm = DicomFile.Open("large_scan.dcm");

// Write directly to a file stream
using (FileStream fs = File.Create("large_scan.json"))
{
    DicomJsonSerializer.Serialize(fs, dcm.Dataset);
}

Console.WriteLine("Large DICOM file serialized to JSON stream!");

Exemplo de integração: Enviar JSON para Web API

Aqui está como integrar a conversão DICOM para JSON com um cliente HTTP:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Net.Http;
using System.Text;

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

// Send to web API
using HttpClient client = new();
var content = new StringContent(json, Encoding.UTF8, "application/json");

HttpResponseMessage response = await client.PostAsync(
    "https://api.example.com/dicom/metadata",
    content
);

if (response.IsSuccessStatusCode)
{
    Console.WriteLine("DICOM metadata successfully sent to API!");
}

Tipos de Uso

Descrição de DICOM Metadata

Use a conversão JSON para verificar os valores de tag DICOM:

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

Enviar para Web Front-End

JSON é ideal para exibir metadados DICOM em espectadores baseados no navegador:

// In ASP.NET Core controller
[HttpGet("dicom/{id}/metadata")]
public IActionResult GetMetadata(string id)
{
    DicomFile dcm = DicomFile.Open($"storage/{id}.dcm");
    string json = DicomJsonSerializer.Serialize(dcm);
    return Content(json, "application/json");
}

O que está incluído na JSON Output

O produto JSON inclui:

  • Todos os DICOM tags com seus valores
  • Representações de Valor (VR) para cada tag
  • Objetos de sequência como objetos JSON
  • Referências de dados binários (BulkData) para dados de pixel

Informações adicionais

  • O formato JSON segue a especificação DICOM PS3.18 Web Services.
  • Grandes valores binários (como os dados de pixel) são geralmente referenciados em vez de incorporados.
  • Considere usar opções de serialização personalizadas para requisitos específicos de integração.

Conclusão

Este tutorial mostrou-lhe como converter os arquivos DICOM para o formato JSON em C# usando Aspose.Medical. a saída de jSON permite a integração sem fio com APIs de saúde modernos, web viewers e sistemas de análise de dados.

 Português