seriesInstanceUID Property

Summary

Gets or sets the series instance UID of the series loaded in the cell.

Syntax
TypeScript
JavaScript
Object.defineProperty(Cell.prototype, 'seriesInstanceUID', 
	get: function(), 
	set: function(value) 
) 
seriesInstanceUID: string; 

Property Value

A string value that represents the series instance UID of the series loaded in the cell.

Remarks

This must be set to connect cells in the medical viewer and to generate and display reference lines.

Example
ReferenceLine.js
MedicalViewer_Multi_2DCell_Grid_Example.js
ReferenceLine.ts
MedicalViewer_Multi_2DCell_Grid_Example.ts
ReferenceLine.html
import { MedicalViewer_Multi_2DCell_Grid_Example } from "../MedicalViewer_Multi_2DCell_Grid_Example"; 
 
 
export class ReferenceLine_Example { 
    constructor() { 
        this.run = (medicalViewer) => { 
            this.medicalViewer = medicalViewer; 
            var cell = this.medicalViewer.layout.cells.get_item(1); 
            medicalViewer.layout.selectedItems.clear(); 
            medicalViewer.layout.selectedItem = cell; 
            medicalViewer.showFirstAndLastReferenceLine = true; 
            medicalViewer.showReferenceLine = true; 
        }; 
        this.viewerExample = new MedicalViewer_Multi_2DCell_Grid_Example(this.run); 
    } 
} 
export class MedicalViewer_Multi_2DCell_Grid_Example { 
    constructor(callback) { 
        // LEADTOOLS ImageViewer to be used with this example 
        this.medicalViewer = null; 
        // Generic state value used by the examples 
        this.timesClicked = 0; 
        this.authenticationCode = ""; 
        // Set the LEADTOOLS license. Replace this with your actual license file 
        lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null); 
        // Create an image viewer inside the imageViewerDiv element 
        const imageViewerDiv = document.getElementById("imageViewerDiv"); 
        const createOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv); 
        this.medicalViewer = new lt.Controls.Medical.MedicalViewer(imageViewerDiv, 2, 2); 
        this.medicalViewer.onSizeChanged(); 
        var self = this; 
        // we are now going to to download an image from LEADTOOLS medical viewer demo web site, you need to change this to download images from your database.  
        var xhttp = new XMLHttpRequest(); 
        xhttp.onreadystatechange = function (data) { 
            if (this.readyState == 4 && this.status == 200) { 
                self.authenticationCode = this.responseText; 
                var encodedAuthenticationCode = encodeURIComponent(self.authenticationCode); 
                // we get here the object query  that points to a service that retrieves the information and the images from the server. 
                var queryAddress = "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/query"; 
                var objectRetrieveAddress = "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/retrieve"; 
                var studyInstanceUID = "1.2.840.114257.1.13284181936210210457526500001710014006334"; 
                // this is the series instance UID that contains all the frames that will be retrieved. 
                var seriesInstanceUID = "1.2.840.113619.2.1.1.2703222953.509.953036679.225"; 
                var onreadystatechange = function (data) { 
                    if (this.readyState == 4 && this.status == 200) { 
                        var cell = new lt.Controls.Medical.Cell(self.medicalViewer, null, 1, 1); 
                        // Set the show border to "true", to show a border around the cell.  
                        cell.set_showFrameBorder(true); 
                        // Add the cell to the viewer.   
                        self.medicalViewer.layout.get_items().add(cell); 
                        // [optional] Select the cell (it can also be selected by clicking on it.)  
                        cell.set_selected(true); 
                        cell.fullDownload = true; 
                        cell.seriesInstanceUID = seriesInstanceUID; 
                        cell.studyInstanceUID = studyInstanceUID; 
                        // here we got the authentication Code that we need to retrieve the images from LEADTOOLS database.  
                        var json = JSON.parse(this.responseText); 
                        var instanceIndex = 0; 
                        var instanceCount = json.length; 
                        // add frames based on the size of the number of instances. 
                        for (instanceIndex = 0; instanceIndex < instanceCount; instanceIndex++) { 
                            var cellFrame = new lt.Controls.Medical.Frame(cell); 
                            cell.get_frames().add(cellFrame); 
                        } 
                        cell.frameOfReferenceUID = "1.2.840.114257.1.132841819362102104575.265000.17100.1"; 
                        var item; 
                        var page; 
                        // loop through every frame, and prepare the data. 
                        for (instanceIndex = 0; instanceIndex < instanceCount; instanceIndex++) { 
                            item = json[instanceIndex]; 
                            page = item.Pages[0]; 
                            cellFrame = cell.get_frames().get_item(instanceIndex); 
                            // now, this is the MRTI info that contains the image information, width, height, tiles....etc.  
                            var mrtiInfo = new lt.Controls.Medical.MRTIImage(); 
                            // The image dpi.  
                            mrtiInfo.fullDpi = lt.LeadSizeD.create(150, 150); 
                            // the tile size, recommended value is 256  
                            mrtiInfo.tileSize = lt.LeadSizeD.create(page.TileSize.width, page.TileSize.height); 
                            mrtiInfo.frameIndex = 0; 
                            // does this image support window level.  
                            mrtiInfo.supportWindowLevel = true; 
                            if (page.ImagePositionPatientArray != null) { 
                                cellFrame.set_imagePosition(page.ImagePositionPatientArray); 
                            } 
                            if (page.ImageOrientationPatientArray != null) { 
                                cellFrame.set_imageOrientation(page.ImageOrientationPatientArray); 
                            } 
                            if (page.PatientOrientation != null) { 
                                cellFrame.set_patientProjection(page.PatientOrientation); 
                            } 
                            if (page.PixelSpacingPatientArray != null && page.PixelSpacingPatientArray.length == 2) { 
                                cellFrame.set_rowSpacing(parseFloat(page.PixelSpacingPatientArray[1])); 
                                cellFrame.set_columnSpacing(parseFloat(page.PixelSpacingPatientArray[0])); 
                            } 
                            // different resolution for the image.  
                            mrtiInfo.resolutions = []; 
                            for (var i = 0; i < page.Resolutions.length; i++) { 
                                mrtiInfo.resolutions[i] = lt.LeadSizeD.create(page.Resolutions[i].width, page.Resolutions[i].height); 
                            } 
                            // the image width and height.  
                            cellFrame.set_width(mrtiInfo.resolutions[0].width); 
                            cellFrame.set_height(mrtiInfo.resolutions[0].height); 
                            // the image full size.  
                            mrtiInfo.fullSize = lt.LeadSizeD.create(cellFrame.get_width(), cellFrame.get_height()); 
                            // now we need the image URL,  
                            var imageUri = objectRetrieveAddress; 
                            imageUri += "/GetImageTile?auth="; 
                            imageUri += encodedAuthenticationCode; 
                            // this the image instance UID, change this if you want to retrieve anything else.  
                            imageUri += "&instance=" + item.SOPInstanceUID; 
                            mrtiInfo.imageUri = imageUri; 
                            // set this info to the cell frame.  
                            cellFrame.mrtiInfo = mrtiInfo; 
                            // now we need to set the information for the image so we can do window level.  
                            var imageInfo = new lt.Controls.Medical.DICOMImageInformation(); 
                            // set the image width and height.  
                            imageInfo.width = 256; 
                            imageInfo.height = 256; 
                            // bits per pixel for the image  
                            imageInfo.bitsPerPixel = 16; 
                            // low and high bit.  
                            imageInfo.lowBit = 0; 
                            imageInfo.highBit = 15; 
                            // other information, setting some of them to zero means that the toolkit will try and calculate it by itself, but you can always get those values from the DicomDataSet.  
                            imageInfo.modalityIntercept = 0; 
                            imageInfo.modalitySlope = 1; 
                            imageInfo.minValue = 0; 
                            imageInfo.maxValue = 0; 
                            imageInfo.windowWidth = 1750; 
                            imageInfo.windowCenter = 875; 
                            imageInfo.signed = false; 
                            imageInfo.photometricInterpretation = 'MONOCHROME2'; 
                            imageInfo.firstStoredPixelValueMapped = 0; 
                            // set these information to the frame.  
                            cellFrame.set_information(imageInfo); 
                        } 
                        // scroll to the middle of the series. 
                        cell.currentOffset = instanceCount >> 1; 
                    } 
                }; 
                var findInstances = { 
                    authenticationCookie: self.authenticationCode, 
                    options: { PatientsOptions: {}, SeriesOptions: { SeriesInstanceUID: seriesInstanceUID }, StudiesOptions: {} }, 
                    extraOptions: { UserData2: "" } 
                }; 
                // we are generating the address for retrieving the stack data. 
                var findInstancesAddress = queryAddress + "/FindInstances"; 
                var findInstancesRequest = new XMLHttpRequest(); 
                findInstancesRequest.open("POST", findInstancesAddress, true); 
                findInstancesRequest.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
                findInstancesRequest.onreadystatechange = onreadystatechange; 
                findInstancesRequest.send(JSON.stringify(findInstances)); 
                findInstances.options.SeriesOptions.SeriesInstanceUID = "1.2.840.113619.2.1.1.2703222953.509.953036679.82"; 
                findInstancesRequest = new XMLHttpRequest(); 
                findInstancesRequest.open("POST", findInstancesAddress, true); 
                findInstancesRequest.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
                findInstancesRequest.onreadystatechange = onreadystatechange; 
                findInstancesRequest.send(JSON.stringify(findInstances)); 
            } 
        }; 
        // We are trying to get an image from the LEADTOOLS database, we need to login and get the authentication code.  
        xhttp.open("POST", "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/auth/AuthenticateUser", true); 
        xhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
        // we log in as a 'guest', after calling the below line, we will receive the authentication code sent via 'onreadystatechange' above.  
        xhttp.send(JSON.stringify({ userName: 'guest', password: 'guest', userData: '' })); 
        const exampleButton = document.getElementById("exampleButton"); 
        exampleButton.addEventListener("click", () => { 
            this.timesClicked++; 
            // Run the example 
            if (callback) 
                callback(this.medicalViewer, this.authenticationCode); 
        }); 
    } 
} 
import { MedicalViewer_Multi_2DCell_Grid_Example } from "../MedicalViewer_Multi_2DCell_Grid_Example"; 
 
 
export class ReferenceLine_Example { 
   private viewerExample; 
   private medicalViewer; 
   constructor() { 
      this.viewerExample = new MedicalViewer_Multi_2DCell_Grid_Example(this.run); 
   } 
 
   private run = (medicalViewer: lt.Controls.Medical.MedicalViewer) => { 
      this.medicalViewer = medicalViewer; 
 
      var cell: lt.Controls.Medical.Cell = this.medicalViewer.layout.cells.get_item(1); 
      medicalViewer.layout.selectedItems.clear(); 
      medicalViewer.layout.selectedItem = cell; 
 
 
      medicalViewer.showFirstAndLastReferenceLine = true; 
      medicalViewer.showReferenceLine = true; 
 
 
 
 
   } 
} 
export class MedicalViewer_Multi_2DCell_Grid_Example { 
   // LEADTOOLS ImageViewer to be used with this example 
   protected medicalViewer: lt.Controls.Medical.MedicalViewer = null; 
   // Generic state value used by the examples 
   public timesClicked: number = 0; 
   public authenticationCode: string = ""; 
 
   constructor(callback?: (medicalViewer: lt.Controls.Medical.MedicalViewer, authenticationCode: string) => void) { 
      // Set the LEADTOOLS license. Replace this with your actual license file 
      lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null); 
 
      // Create an image viewer inside the imageViewerDiv element 
      const imageViewerDiv: HTMLDivElement = <HTMLDivElement>document.getElementById("imageViewerDiv"); 
      const createOptions: lt.Controls.ImageViewerCreateOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv); 
 
      this.medicalViewer = new lt.Controls.Medical.MedicalViewer(imageViewerDiv, 2, 2); 
      this.medicalViewer.onSizeChanged(); 
 
      var self = this; 
 
      // we are now going to to download an image from LEADTOOLS medical viewer demo web site, you need to change this to download images from your database.  
      var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function (data) { 
         if (this.readyState == 4 && this.status == 200) { 
            self.authenticationCode = this.responseText; 
            var encodedAuthenticationCode = encodeURIComponent(self.authenticationCode); 
 
            // we get here the object query  that points to a service that retrieves the information and the images from the server. 
            var queryAddress = "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/query"; 
            var objectRetrieveAddress = "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/retrieve"; 
 
            var studyInstanceUID = "1.2.840.114257.1.13284181936210210457526500001710014006334"; 
            // this is the series instance UID that contains all the frames that will be retrieved. 
            var seriesInstanceUID = "1.2.840.113619.2.1.1.2703222953.509.953036679.225"; 
 
            var onreadystatechange = function (data) { 
               if (this.readyState == 4 && this.status == 200) { 
 
                  var cell = new lt.Controls.Medical.Cell(self.medicalViewer, null, 1, 1); 
 
                  // Set the show border to "true", to show a border around the cell.  
                  cell.set_showFrameBorder(true); 
 
                  // Add the cell to the viewer.   
                  self.medicalViewer.layout.get_items().add(cell); 
 
                  // [optional] Select the cell (it can also be selected by clicking on it.)  
                  cell.set_selected(true); 
 
                  cell.fullDownload = true; 
 
                  cell.seriesInstanceUID = seriesInstanceUID; 
                  cell.studyInstanceUID = studyInstanceUID; 
 
                  // here we got the authentication Code that we need to retrieve the images from LEADTOOLS database.  
 
                  var json = JSON.parse(this.responseText); 
 
                  var instanceIndex = 0; 
                  var instanceCount = json.length; 
 
                  // add frames based on the size of the number of instances. 
                  for (instanceIndex = 0; instanceIndex < instanceCount; instanceIndex++) { 
                     var cellFrame = new lt.Controls.Medical.Frame(cell); 
                     cell.get_frames().add(cellFrame); 
 
                  } 
 
                  cell.frameOfReferenceUID = "1.2.840.114257.1.132841819362102104575.265000.17100.1"; 
 
                  var item; 
                  var page; 
                  // loop through every frame, and prepare the data. 
                  for (instanceIndex = 0; instanceIndex < instanceCount; instanceIndex++) { 
 
                     item = json[instanceIndex]; 
                     page = item.Pages[0]; 
 
                     cellFrame = cell.get_frames().get_item(instanceIndex); 
                     // now, this is the MRTI info that contains the image information, width, height, tiles....etc.  
                     var mrtiInfo = new lt.Controls.Medical.MRTIImage(); 
 
                     // The image dpi.  
                     mrtiInfo.fullDpi = lt.LeadSizeD.create(150, 150); 
 
                     // the tile size, recommended value is 256  
                     mrtiInfo.tileSize = lt.LeadSizeD.create(page.TileSize.width, page.TileSize.height); 
                     mrtiInfo.frameIndex = 0; 
 
                     // does this image support window level.  
                     mrtiInfo.supportWindowLevel = true; 
 
                     if (page.ImagePositionPatientArray != null) { 
                        cellFrame.set_imagePosition(page.ImagePositionPatientArray); 
                     } 
 
                     if (page.ImageOrientationPatientArray != null) { 
                        cellFrame.set_imageOrientation(page.ImageOrientationPatientArray); 
                     } 
 
                     if (page.PatientOrientation != null) { 
                        cellFrame.set_patientProjection(page.PatientOrientation); 
                     } 
 
                     if (page.PixelSpacingPatientArray != null && page.PixelSpacingPatientArray.length == 2) { 
                        cellFrame.set_rowSpacing(parseFloat(page.PixelSpacingPatientArray[1])); 
                        cellFrame.set_columnSpacing(parseFloat(page.PixelSpacingPatientArray[0])); 
                     } 
 
 
                     // different resolution for the image.  
                     mrtiInfo.resolutions = []; 
                     for (var i = 0; i < page.Resolutions.length; i++) { 
                        mrtiInfo.resolutions[i] = lt.LeadSizeD.create(page.Resolutions[i].width, page.Resolutions[i].height); 
                     } 
 
                     // the image width and height.  
                     cellFrame.set_width(mrtiInfo.resolutions[0].width); 
                     cellFrame.set_height(mrtiInfo.resolutions[0].height); 
 
                     // the image full size.  
                     mrtiInfo.fullSize = lt.LeadSizeD.create(cellFrame.get_width(), cellFrame.get_height()); 
 
                     // now we need the image URL  
                     var imageUri = objectRetrieveAddress; 
                     imageUri += "/GetImageTile?auth="; 
                     imageUri += encodedAuthenticationCode; 
                     // this the image instance UID, change this if you want to retrieve anything else.  
                     imageUri += "&instance=" + item.SOPInstanceUID; 
 
 
                     mrtiInfo.imageUri = imageUri; 
 
                     // set this info to the cell frame.  
                     cellFrame.mrtiInfo = mrtiInfo; 
 
 
                     // now we need to set the information for the image so we can do window level.  
                     var imageInfo = new lt.Controls.Medical.DICOMImageInformation(); 
 
 
                     // set the image width and height.  
                     imageInfo.width = 256; 
                     imageInfo.height = 256; 
 
                     // bits per pixel for the image  
                     imageInfo.bitsPerPixel = 16; 
                     // low and high bit.  
                     imageInfo.lowBit = 0; 
                     imageInfo.highBit = 15; 
 
                     // other information, setting some of them to zero means that the toolkit will try and calculate it by itself, but you can always get those values from the DicomDataSet.  
                     imageInfo.autoScaleIntercept = 0; 
                     imageInfo.autoScaleSlope = 1; 
                     imageInfo.minValue = 0; 
                     imageInfo.maxValue = 0; 
                     imageInfo.windowWidth = 1750; 
                     imageInfo.windowCenter = 875; 
                     imageInfo.signed = false; 
                     imageInfo.photometricInterpretation = 'MONOCHROME2'; 
                     imageInfo.firstStoredPixelValueMapped = 0; 
 
                     // set these information to the frame.  
 
                     cellFrame.set_information(imageInfo); 
                  } 
 
                  // scroll to the middle of the series. 
                  cell.currentOffset = instanceCount >> 1; 
               } 
            } 
 
 
 
            var findInstances = { 
               authenticationCookie: self.authenticationCode, 
               options: { PatientsOptions: {}, SeriesOptions: { SeriesInstanceUID: seriesInstanceUID }, StudiesOptions: {} }, 
               extraOptions: { UserData2: "" } 
            }; 
 
            // we are generating the address for retrieving the stack data. 
            var findInstancesAddress = queryAddress + "/FindInstances"; 
 
            var findInstancesRequest = new XMLHttpRequest(); 
            findInstancesRequest.open("POST", findInstancesAddress, true); 
            findInstancesRequest.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
            findInstancesRequest.onreadystatechange = onreadystatechange; 
            findInstancesRequest.send(JSON.stringify(findInstances)); 
 
 
            findInstances.options.SeriesOptions.SeriesInstanceUID = "1.2.840.113619.2.1.1.2703222953.509.953036679.82"; 
 
            findInstancesRequest = new XMLHttpRequest(); 
            findInstancesRequest.open("POST", findInstancesAddress, true); 
            findInstancesRequest.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
            findInstancesRequest.onreadystatechange = onreadystatechange; 
            findInstancesRequest.send(JSON.stringify(findInstances)); 
         } 
      }; 
 
      // We are trying here to get an image from the LEADTOOLS database, we need to login and get the authentication code.  
      xhttp.open("POST", "https://medicaldemos.leadtools.com/MedicalViewerServiceAsp22/api/auth/AuthenticateUser", true); 
      xhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
      // we log in as a 'guest', after calling the below line, we will receive the authentication code sent via 'onreadystatechange' above.  
      xhttp.send(JSON.stringify({ userName: 'guest', password: 'guest', userData: '' })); 
 
      const exampleButton = document.getElementById("exampleButton"); 
      exampleButton.addEventListener("click", () => { 
         this.timesClicked++; 
         // Run the example 
         if (callback) 
            callback(this.medicalViewer, this.authenticationCode); 
      }); 
   } 
} 
<!doctype html> 
<html lang="en"> 
   <title>Reference Line Example</title> 
 
<head> 
   <script src="https://code.jquery.com/jquery-2.2.4.min.js" 
      integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
   <script src="../../LT/Leadtools.js"></script> 
   <script src="../../LT/Leadtools.Controls.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Engine.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Designers.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Automation.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Main.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Color.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Core.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script> 
   <script src="../../LT/Leadtools.Document.js"></script> 
   <script src="../../LT/Leadtools.Document.Viewer.js"></script> 
   <script src="../../LT/Leadtools.Controls.Medical.js"></script> 
   <style> 
      body { 
         font-family: 'Segoe UI', sans-serif; 
      } 
 
      #imageViewerDiv { 
         border: 1px solid #888; 
         width: 500px; 
         height: 500px; 
         background-color: #eee; 
      } 
   </style> 
 
   <!-- All demo files are bundled and appended to the window --> 
   <script src="../../bundle.js" type="text/javascript"></script> 
</head> 
 
<body  oncontextmenu="return false;"> 
   <p>watch the reference line which represents the intersection between the first cell and the second cell, move the mouse to the right side of the second cell to see the scroll bar and drag it up and down and notice the change in the reference line.</p> 
   <div> 
      <button type="button" id="exampleButton">Run Example</button> 
   </div> 
   <div id="imageViewerDiv"></div> 
   <div id="output"></div> 
</body> 
 
<script> 
   window.onload = () => { 
       const example = new window.examples.MedicalViewer.ReferenceLine(); 
 
   }; 
</script> 
</html> 
Requirements

Target Platforms

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

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