codingSchemeDesignator: Number()

in pathology/viewer/src/services/dicom-annotations.service.ts [900:961]


        codingSchemeDesignator: Number(getValue(
          annotationPropertyCategoryCodeModel,
          DicomTag.CODING_SCHEME_DESIGNATOR)),
        codingSchemeVersion: getValue(
          annotationPropertyCategoryCodeModel,
          DicomTag.CODING_SCHEME_VERSION),
        contextIdentifier: getValue(
          annotationPropertyCategoryCodeModel,
          DicomTag.CONTEXT_IDENTIFIER),
      };
      annotationGroup.annotationPropertyCategoryCodeSequence =
        [annotationPropertyCategoryCode];
    }
    annotationGroup.graphicType =
      (annotationGroupModel[DicomTag.GRAPHIC_TYPE].Value as ['POINT'] |
      ['POLYGON'] | ['RECTANGLE'])[0];

    const binaryPointIndexList =
      annotationGroupModel[DicomTag.LONG_PRIMITIVE_POINT_INDEX_LIST]
        ?.InlineBinary ??
      '';
    const binaryPointIndexType =
      annotationGroupModel[DicomTag.LONG_PRIMITIVE_POINT_INDEX_LIST]
        ?.vr ??
      'OL';
    const inlineBinaryNumber = inlineBinaryToNumberArray(
        vrToType(binaryPointIndexType as string), binaryPointIndexList);
    if (!inlineBinaryNumber.length) {
      inlineBinaryNumber.push(1);  // default, assume single shape
    }

    const indecesArr =
        (inlineBinaryNumber).map((v) => v - 1);  // change to 0 based indeces.

    // Parse out Point Coordinates Data.
    const coordinatesTag =
      annotationGroupModel[DicomTag.DOUBLE_POINT_COORDINATES_DATA]
        ?.InlineBinary ?
        DicomTag.DOUBLE_POINT_COORDINATES_DATA :
        DicomTag.POINT_COORDINATES_DATA;
    const binaryCoordinates =
      annotationGroupModel[coordinatesTag]?.InlineBinary ?? '';
    const binaryCoordinatesType =
      annotationGroupModel[coordinatesTag]?.vr ?? '';

    const coordsArr = inlineBinaryToNumberArray(
      vrToType(binaryCoordinatesType as string), binaryCoordinates);

    // Check if the indeces array ends with the end of the coord array index
    if (indecesArr.slice(-1)[0] !== coordsArr.length) {
      indecesArr.push(coordsArr.length);
    }

    const annotationGroups: AnnotationGroup[] = [];

    if (annotationGroup.graphicType === 'POINT') {
      const newAnnotationGroup = { ...annotationGroup };
      newAnnotationGroup.pointCoordinatesData =
        this.pixelsToMetersWithYFlip(coordsArr, pixelSize);
      annotationGroups.push(newAnnotationGroup);
    } else {
      for (let i = 0; i < indecesArr.length - 1; i++) {