imageLoader/wadors/metaData/NMHelpers.js

import getTagValue from '../getTagValue.js';
import getValue from './getValue.js';
import isNMReconstructable from '../../isNMReconstructable.js';
import getNumberValues from './getNumberValues.js';

function isNMModality(metaData) {
  const modality = getValue(metaData['00080060']);

  return modality.includes('NM');
}

/**
 * Get a subpart of Image Type dicom tag defined by index
 * @param {*} metaData
 * @param {*} index 0 based index of the subtype
 */
function getImageTypeSubItemFromMetadata(metaData, index) {
  const imageType = getTagValue(metaData['00080008'], false);

  if (imageType) {
    // const subTypes = imageType.split('\\');

    // if (subTypes.length > index) {
    //   return subTypes[index];
    // }
    return imageType[index];
  }

  return undefined;
}
/**
 * Extracts the orientation from NM multiframe metadata, if image type
 * equal to RECON TOMO or RECON GATED TOMO
 * @param {*} metaData
 */
function extractOrientationFromNMMultiframeMetadata(metaData) {
  let imageOrientationPatient;
  const imageSubType = getImageTypeSubItemFromMetadata(metaData, 2);

  if (imageSubType && isNMReconstructable(imageSubType)) {
    const detectorInformationSequence = getTagValue(metaData['00540022']);

    if (detectorInformationSequence) {
      imageOrientationPatient = getNumberValues(
        detectorInformationSequence['00200037'],
        6
      );
    }
  }

  return imageOrientationPatient;
}

/**
 * Extracts the position from NM multiframe dataset, if image type
 * equal to RECON TOMO or RECON GATED TOMO
 * @param {*} metaData
 */
function extractPositionFromNMMultiframeMetadata(metaData) {
  let imagePositionPatient;
  const imageSubType = getImageTypeSubItemFromMetadata(metaData, 2);

  if (imageSubType && isNMReconstructable(imageSubType)) {
    const detectorInformationSequence = getTagValue(metaData['00540022']);

    if (detectorInformationSequence) {
      imagePositionPatient = getNumberValues(
        detectorInformationSequence['00200032'],
        3
      );
    }
  }

  return imagePositionPatient;
}

export {
  extractOrientationFromNMMultiframeMetadata,
  extractPositionFromNMMultiframeMetadata,
  isNMModality,
  getImageTypeSubItemFromMetadata,
};