![]() |
Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.3.28
|
Leadtools.Dicom.Common.Extensions Namespace : LoadJsonBeforeElementCallback Delegate |
public delegate bool LoadJsonBeforeElementCallback( LoadJsonBeforeElementData data )
'Declaration
Public Delegate Function LoadJsonBeforeElementCallback( _ ByVal data As LoadJsonBeforeElementData _ ) As Boolean
'Usage
Dim instance As New LoadJsonBeforeElementCallback(AddressOf HandlerMethod)
public delegate bool LoadJsonBeforeElementCallback( LoadJsonBeforeElementData^ data )
This example will load a sample DICOM data set, then save it as an JSON file (with no binary data), and then reload the JSON file into a DicomDataSet object. The LoadJsonBeforeElementCallback callback is used to change the patient name, remove the patient birthdate, and display which elements have children.
Imports Leadtools.Dicom Imports Leadtools.Dicom.Common Imports Leadtools.Dicom.Common.Extensions Imports Leadtools.Dicom.Common.Linq Imports Leadtools.Dicom.Common.Linq.BasicDirectory Imports Leadtools Imports Leadtools.Dicom.Common.DataTypes <TestMethod()> _ Public Sub LoadJsonCallbackExample() Dim dicomFileNameIn As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.dcm") Dim jsonFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.json") Dim dicomFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.dcm") ' Initialize DICOM engine DicomEngine.Startup() Dim ds As New DicomDataSet() ' Load an existing DICOM file ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None) ' Save as JSON to a file with no binary data ' For the demo, keep the json output file size small by skipping the pixel data ' Use the SaveJsonCallback delegate to customize the json file Dim jsonFlags As DicomDataSetSaveJsonFlags = DicomDataSetSaveJsonFlags.IgnoreBinaryData Or DicomDataSetSaveJsonFlags.TrimWhiteSpace ds.SaveJson(jsonFileNameOut, jsonFlags) ' Use a LoadmlCallback to read the customized json file ds.LoadJson(jsonFileNameOut, DicomDataSetLoadJsonFlags.None, AddressOf MyLoadJsonBeforeElementCallback, AddressOf MyLoadJsonAfterElementCallback) ' Save the result -- there will be no pixel data ds.Save(dicomFileNameOut, DicomDataSetSaveFlags.None) DicomEngine.Shutdown() End Sub Private Shared Function MyLoadJsonBeforeElementCallback(ByVal data As LoadJsonBeforeElementData) As Boolean ' Remove Patient Birth Date If data.Tag = DicomTag.PatientBirthDate Then Return False End If ' Change the patient name If data.Tag = DicomTag.PatientName Then data.ElementValue = "NewLast^NewFirst" End If ' Write the elements to the consolee that have child elements If data.HasChildElements Then Console.WriteLine("Element {0} has child elements.", data.Tag) End If Return True End Function Private Shared Sub MyLoadJsonAfterElementCallback(ByVal data As LoadJsonAfterElementData) If data.DicomElement.Tag = DicomTag.PixelData Then ' here you could call one of the following to set the pixel data ' data.DicomDataSet.SetBinaryValue ' data.DicomDataSet.SetImage() End If End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
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; [TestMethod] public void LoadJsonCallbackExample() { string dicomFileNameIn = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.dcm"); string jsonFileNameOut = Path.Combine(LEAD_VARS.ImagesDir, "test.json"); string dicomFileNameOut = Path.Combine(LEAD_VARS.ImagesDir, "test.dcm"); // Initialize DICOM engine DicomEngine.Startup(); DicomDataSet ds = new DicomDataSet(); // Load an existing DICOM file ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None); // Save as JSON to a file with no binary data // For the demo, keep the json output file size small by skipping the pixel data // Use the SaveJsonCallback delegate to customize the json file DicomDataSetSaveJsonFlags jsonFlags = DicomDataSetSaveJsonFlags.IgnoreBinaryData | DicomDataSetSaveJsonFlags.TrimWhiteSpace; ds.SaveJson(jsonFileNameOut, jsonFlags); // Use a LoadmlCallback to read the customized json file ds.LoadJson(jsonFileNameOut, DicomDataSetLoadJsonFlags.None, MyLoadJsonBeforeElementCallback, MyLoadJsonAfterElementCallback); // Save the result -- there will be no pixel data ds.Save(dicomFileNameOut, DicomDataSetSaveFlags.None); DicomEngine.Shutdown(); } private static bool MyLoadJsonBeforeElementCallback(LoadJsonBeforeElementData data) { // Remove Patient Birth Date if (data.Tag == DicomTag.PatientBirthDate) { return false; } // Change the patient name if (data.Tag == DicomTag.PatientName) { data.ElementValue = "NewLast^NewFirst"; } // Write the elements to the consolee that have child elements if (data.HasChildElements) { Console.WriteLine("Element {0} has child elements.", data.Tag); } return true; } private static void MyLoadJsonAfterElementCallback(LoadJsonAfterElementData data) { if (data.DicomElement.Tag == DicomTag.PixelData) { // here you could call one of the following to set the pixel data // data.DicomDataSet.SetBinaryValue // data.DicomDataSet.SetImage() } } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
LoadJsonBeforeElementCallback Members
Leadtools.Dicom.Common.Extensions Namespace
LoadJson(DicomDataSet,String,DicomDataSetLoadJsonFlags,LoadJsonBeforeElementCallback,LoadJsonAfterElementCallback) Method
LoadJson(DicomDataSet,Stream,DicomDataSetLoadJsonFlags,LoadJsonBeforeElementCallback,LoadJsonAfterElementCallback) Method
LoadJson(DicomDataSet,String,DicomDataSetLoadJsonFlags) Method
LoadJson(DicomDataSet,Stream,DicomDataSetLoadJsonFlags) Method
SaveJson(DicomDataSet,String,DicomDataSetSaveJsonFlags,SaveJsonCallback) Method
SaveJson(DicomDataSet,Stream,DicomDataSetSaveJsonFlags,SaveJsonCallback) Method
SaveJson(DicomDataSet,String,DicomDataSetSaveJsonFlags) Method
SaveJson(DicomDataSet,Stream,DicomDataSetSaveJsonFlags) Method
SaveJsonCallback Delegate
LoadJsonBeforeElementCallback Delegate
LoadJsonAfterElementCallback Delegate