Como personalizar a saída do DICOM JSON com a Opções de Serializer do DicomJson
Este tutorial demonstra como personalizar a saída de serialização DICOM JSON usando DicomJsonSerializerOptions em C#. A personalização permite que você controle os formatos-chave de jSON, inclua metadados adicionais e gerencie valores numéricos de acordo com os seus requisitos de integração.
Por que personalizar o JSON Output?
Diferentes sistemas podem exigir diferentes formatos JSON. A personalização permite:
- Usar palavras-chave de leitura humana em vez de números de tag
- Incluindo nomes de etiquetas para documentação
- Verificar como os valores numéricos são representados
- Reunião com requisitos específicos do sistema de terceiros
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.
Opções de série disponíveis
| Option | Descrição | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Use palavras-chave DICOM em vez de números de tag como chaves JSON | "PatientName" vs "00100010" |
WriteKeyword | Incluir o campo de palavras-chave em cada objeto de tag | Adds "keyword": "PatientName" |
WriteName | Incluir um campo de nome em cada objeto de tag | Adds "name": "Patient's Name" |
NumberHandling | Representação de Valor Numérico | Números como linhas ou números JSON reais |
Guia passo a passo para personalizar a saída JSON
Passo 1: Instalar Aspose.Medical
Adicione a Aspose.Medical Library ao seu projeto usando NuGet.
Install-Package Aspose.MedicalPasso 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;
using System.Text.Json.Serialization;Passo 3: Criar Opções Instância
Criar a DicomJsonSerializerOptions Por exemplo, para configurar as configurações.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Passo 4: Configure opções
Defina as opções desejadas para a sua saída JSON.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Passo 5: Serialize com opções
Passar as opções para o método Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Passo 6: Salve a saída personalizada
Salve ou use o JSON personalizado.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Exemplo de código completo com todas as opções
Aqui está um exemplo completo que mostra todas as opções de customização:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;
// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);
// Save output
File.WriteAllText("fully_customized.json", json);
Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);Comparação de formatos de saída
Output padrão (formato PS3.18)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Usando palavras-chaveAsJsonKeys = verdade
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Escrever e escrever = verdade
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Com númeroHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Com NúmeroHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Use exemplos de caso
Documentação Humano-Leitável
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);PS3.18 Serviços Web Compatíveis
// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = false, // Use tag numbers
WriteKeyword = false,
WriteName = false,
NumberHandling = JsonNumberHandling.WriteAsString
};
string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);Integração do JavaScript Frontend
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Para armazenamento de banco de dados
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Considerações importantes
Aviso de interoperabilidade
Opções não padrão podem quebrar a compatibilidade com alguns parsers DICOM:
// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true // Not PS3.18 compliant
};
// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();Recomendação de conformidade
Quando a conformidade com o DICOM PS3.18 é necessária, use as configurações padrão:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerialização baseada em fluxo com opções
Para arquivos grandes, use serializar baseado em fluxo:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
DicomFile dcm = DicomFile.Open("large_scan.dcm");
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true
};
using (FileStream fs = File.Create("large_customized.json"))
{
DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}Informações adicionais
- As opções personalizadas afetam tanto a serialização como a deseriização - garantindo opcoes consistentes quando os dados são rodados.
- O que
WriteNameA opção adiciona nomes de tag DICOM que podem ser lidos pelo homem, o que aumenta o tamanho do JSON, mas melhora a leitura. - Alguns sistemas de terceiros podem exigir formatos JSON específicos - consulte a sua documentação antes de escolher opções.
Conclusão
Este tutorial demonstrou como personalizar a saída de serialização DICOM JSON em C# usando Aspose.Medical.Com a configuração de DicomJsonSerializerOptions, você pode ajustar o formato J SON para atender aos requisitos de integração específicos, enquanto equilibra as necessidades de leitura, tamanho e interoperabilidade.