SaveJson(DicomDataSet,string,DicomDataSetSaveJsonFlags,SaveJsonCallback) Method

Summary
Saves the contents of the DICOM data set in the DICOM JSON model format (specified in PS3.18) to the specified output file.
Syntax
C#
C++/CLI
public static void SaveJson( 
   this DicomDataSet ds, 
   string fileName, 
   DicomDataSetSaveJsonFlags jsonFlags, 
   SaveJsonCallback cb 
) 
[ExtensionAttribute()] 
public: 
static void SaveJson(  
   DicomDataSet^ ds, 
   String^ fileName, 
   DicomDataSetSaveJsonFlags jsonFlags, 
   SaveJsonCallback^ cb 
)  

Parameters

ds
The contents of this data set to be saved

fileName
The name of the output JSON file.

jsonFlags
Flags that affect how binary data and other information is saved in the JSON output file.

cb
Optional callback that allows you to change the element names, attributes, and values of the JSON output file.

Remarks

Use this method to export a DicomDataSet as a human-readable JSON file. By default, all binary data is using BulkDataUri with dummy URIs, but this behavior can be modified by passing appropriate DicomDataSetSaveJsonFlags

The output JSON format is the DICOM JSON Model defined in the DICOM specification in PS3.18.F.

Note: When saving the pixel data of multipage compressed files to JSON, only the first frame is saved. This is because of the restriction specified in PS3.18.F.2.7 that states "There is a single InlineBinary value representing the entire Value Field, and not one per Value".

Example
C#
using Leadtools.Dicom; 
using Leadtools.Dicom.Common; 
using Leadtools.Dicom.Common.Extensions; 
using Leadtools; 
using Leadtools.Dicom.Common.Linq.BasicDirectory; 
using Leadtools.Dicom.Common.DataTypes; 
 
using Leadtools.Codecs; 
 
public void SaveJsonCallbackExample() 
{ 
   uriIndex = 0; 
 
   string dicomFileNameIn = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "IMAGE3.dcm"); 
   string xmlFileNameOut = Path.Combine(LEAD_VARS.ImagesDir, "test.json"); 
 
   DicomEngine.Startup(); 
 
   DicomDataSet ds = new DicomDataSet(); 
 
   // Load an existing DICOM file 
   ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None); 
 
   // Keep the JSON output file size small by writing binary data as BulkDataUri  
   // The URI written is modified in the callback 
   ds.SaveJson(xmlFileNameOut, DicomDataSetSaveJsonFlags.BulkDataUri, MySaveJsonCallback); 
 
   DicomEngine.Shutdown(); 
} 
 
public static int uriIndex = 0; 
 
public static string GenerateUri() 
{ 
   uriIndex++; 
   return string.Format(@"http://MySampleUri/{0}", uriIndex); 
} 
 
public static bool MySaveJsonCallback(SaveJsonData d) 
{ 
   if (d.DicomElement == null) 
      return true; 
 
   DicomVRType vr = d.DicomElement.VR; 
   bool isBinary = ( 
                      vr == DicomVRType.OB || 
                      vr == DicomVRType.OD || 
                      vr == DicomVRType.OF || 
                      vr == DicomVRType.OW || 
                      vr == DicomVRType.UN 
                   ); 
   if (isBinary) 
   { 
      // Set a URI 
      d.BulkDataUri = GenerateUri(); 
   } 
 
   return true; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom.Common Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.