Class ScanDirResults

ScanDirResults is returned by scanDICOMDir and contains the complete DICOM study hierarchy as a result of the scan.

Fovia.ServerContext.scanDICOMDir reads all files in the directory and its subdirectories and returns a ScanDirResults organized by study that include all image and non-image (GSPS, SR, KOS, DSO, RT, etc.) DICOM objects. The application will then invoke getStudiesByPatient that organizes the results as a PatientArray, each which has a StudyArray.

Each Study contains a SeriesArray (array of ScanDirSeriesResults ) , one for each unique DICOM image series (all DICOM images that have a common seriesInstanceUID) and a single non-image DICOM that references all GSPS, SR, KOS, and all other non-image objects associated with the study. Each DICOM image series ( ScanDirSeriesResults ) contains a dicomSeries object ( SeriesDataContext ) that holds all its associated DICOM images (and frames) and an array of subSeries. Each subSeries itself is a unique ( SeriesDataContext ) that is a collection of images grouped (or split) based on the logic describe below. A single DICOM multi-frame (MF) image is typically grouped as its own unique subSeries, one for each MF image. Having a separate dicomSeries object (holding the full stack of images from the DICOM series) and the array of subSeries allows the application to organize and display the images based on their own workflow needs. The grouping logic organizes the data by splitting on the follow characteristics:

  • SOPClassUID
  • Acquisition number
  • Modality
  • Echo number (for MR)
  • Image plane attributes
  • Frame of Reference UID
  • Rows / columns
  • Pixel spacing
  • Image Orientation
  • Photometric interpretation (allow ultrasound color and grayscale series to be split)
  • Multi-frame (split MF images with a common seriesInstanceUID )

For 3D rendering purposes, a subSeries will be sorted based on the image orientation and image position attributes. If it has a consistent slab thickness and contain more than 6 slices, the specific subseries (SeriesDataContext) will be marked as 3Dable.

In other cases, for the other attributes, a subseries will be sorted based on the Instance Number and its Instance Creation Date / Time.

For CR, DR, DX, and MG modalieis, if splitByImage is enabled, each image will be in its own subseries regardless if the images acquired with a common seriesInstanceUID.

Hierarchy

  • ScanDirResults

Index

Constructors

constructor

  • Constructs a new object based on the results from the scanDICOMDir. This constructor should only called internal to the API.

    Parameters

    Returns ScanDirResults

    This is an synchronous method that returns the newly constructed ScanDirResults

Methods

convertDirectoryListFromMultibyte

  • convertDirectoryListFromMultibyte(directoryList: Array<DICOMDirEntry>): void
  • Parameters

    • directoryList: Array<DICOMDirEntry>

    Returns void

findSeries

  • findSeries(seriesInstanceUID: any, subSeriesID?: number): SeriesDataContext
  • Synchronous method that returns the SeriesDataContext that matches the seriesInstanceUID, and optional subSeriesID

    Parameters

    • seriesInstanceUID: any

      UID of the series to search for

    • Default value subSeriesID: number = 0

      0 indicates the original DICOM series, or > 0 for the ID of the subseries if sries contains of multiple, separable 3D-able seequences

    Returns SeriesDataContext

    SeriesDataContext if the series is found, or null otherwise

findStudy

  • findStudy(index: number): Array<ScanDirSeriesResults>
  • findStudy(studyInstanceUID: string): Array<ScanDirSeriesResults>
  • Synchronous method that returns an array of ScanDirSeriesResults, one for each DICOM series based on either the index or the StudyInstanceUID

    Parameters

    • index: number

      0-based index of the study

    Returns Array<ScanDirSeriesResults>

    SeriesDataContext if the study is found, or null otherwise

  • Parameters

    • studyInstanceUID: string

    Returns Array<ScanDirSeriesResults>

getDirectoryList

  • getDirectoryList(): DICOMDirEntry[]
  • Returns DICOMDirEntry[]

getNumStudies

  • getNumStudies(): number
  • Synchronous method to return the number of studies located. Each study can be accessed by calling findStudy with index 0 thorugh getNumStudies() - 1

    Returns number

getPatients

  • getPatients(uniqueIdentifierFields?: string[]): Array<ScanDirResults>
  • Parameters

    • Default value uniqueIdentifierFields: string[] = ["patientName", "patientID", "patientBirthDate"]

    Returns Array<ScanDirResults>

getStudies

  • getStudies(): Array<string>
  • Synchronous method to return an array of study instance UIDs which can be used in findStudy() method by study instance UID.

    Returns Array<string>

getStudiesByPatient

  • getStudiesByPatient(uniqueIdentifierFields?: string[]): PatientArray
  • getStudiesByPatient organizes the ScanDirResults as a PatientArray, each which has a StudyArray. Each Study contains a SeriesArray (array of ScanDirSeriesResults ) , one for each unique DICOM image series (all DICOM images that have a common seriesInstanceUID) and a single non-image DICOM that references all GSPS, SR, KOS, and all other non-image objects associated with the study. Each DICOM image series ( ScanDirSeriesResults ) contains a dicomSeries object ( SeriesDataContext ) that holds all its associated DICOM images (and frames) and an array of subSeries. Each subSeries itself is a unique ( SeriesDataContext ) that is a collection of images grouped (or split) based on the logic describe below. A single DICOM multi-frame (MF) image is typically grouped as its own unique subSeries, one for each MF image. Having a separate dicomSeries object (holding the full stack of images from the DICOM series) and the array of subSeries allows the application to organize and display the images based on their own workflow needs.

    The grouping logic organizes the data by splitting on the follow characteristics:

    • SOPClassUID
    • Acquisition number
    • Modality
    • Echo number (for MR)
    • Image plane attributes
    • Frame of Reference UID
    • Rows / columns
    • Pixel spacing
    • Image Orientation
    • Photometric interpretation (allow ultrasound color and grayscale series to be split)
    • Multi-frame (split MF images with a common seriesInstanceUID )

    For 3D rendering purposes, a subSeries will be sorted based on the image orientation and image position attributes. If it has a consistent slab thickness and contain more than 6 slices, the specific subseries (SeriesDataContext) will be marked as 3Dable.

    In other cases, for the other attributes, a subseries will be sorted based on the Instance Number and its Instance Creation Date / Time.

    For CR, DR, DX, and MG modalieis, if splitByImage is enabled, each image will be in its own subseries regardless if the images acquired with a common seriesInstanceUID.

    Parameters

    • Default value uniqueIdentifierFields: string[] = ["patientName", "patientID", "patientBirthDate"]

      defines the DICOM tags that must match in order for studies to be groupped as a single patient

    Returns PatientArray

    Array of patient objects, each with an array of study objects, each with their own ScanDirSeriesResults