dcmjs 0.29.13 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dcmjs.es.js +49 -21
- package/build/dcmjs.es.js.map +1 -1
- package/build/dcmjs.js +49 -21
- package/build/dcmjs.js.map +1 -1
- package/package.json +1 -1
- package/test/adapters.test.js +45 -1
package/build/dcmjs.es.js
CHANGED
|
@@ -10005,7 +10005,7 @@ var encodingMapping = {
|
|
|
10005
10005
|
"iso-2022-58": "gb2312",
|
|
10006
10006
|
gbk: "gbk"
|
|
10007
10007
|
};
|
|
10008
|
-
var encapsulatedSyntaxes = ["1.2.840.10008.1.2.4.50", "1.2.840.10008.1.2.4.51", "1.2.840.10008.1.2.4.57", "1.2.840.10008.1.2.4.70", "1.2.840.10008.1.2.4.80", "1.2.840.10008.1.2.4.81", "1.2.840.10008.1.2.4.90", "1.2.840.10008.1.2.4.91", "1.2.840.10008.1.2.4.92", "1.2.840.10008.1.2.4.93", "1.2.840.10008.1.2.4.94", "1.2.840.10008.1.2.4.95", "1.2.840.10008.1.2.5", "1.2.840.10008.1.2.6.1", "1.2.840.10008.1.2.4.100", "1.2.840.10008.1.2.4.102", "1.2.840.10008.1.2.4.103"];
|
|
10008
|
+
var encapsulatedSyntaxes = ["1.2.840.10008.1.2.4.50", "1.2.840.10008.1.2.4.51", "1.2.840.10008.1.2.4.57", "1.2.840.10008.1.2.4.70", "1.2.840.10008.1.2.4.80", "1.2.840.10008.1.2.4.81", "1.2.840.10008.1.2.4.90", "1.2.840.10008.1.2.4.91", "1.2.840.10008.1.2.4.92", "1.2.840.10008.1.2.4.93", "1.2.840.10008.1.2.4.94", "1.2.840.10008.1.2.4.95", "1.2.840.10008.1.2.5", "1.2.840.10008.1.2.6.1", "1.2.840.10008.1.2.4.100", "1.2.840.10008.1.2.4.102", "1.2.840.10008.1.2.4.103", "1.2.840.10008.1.2.4.201", "1.2.840.10008.1.2.4.202", "1.2.840.10008.1.2.4.203"];
|
|
10009
10009
|
var DicomMessage = /*#__PURE__*/function () {
|
|
10010
10010
|
function DicomMessage() {
|
|
10011
10011
|
_classCallCheck(this, DicomMessage);
|
|
@@ -17410,13 +17410,18 @@ function generateToolState$1(imageIds, arrayBuffer, metadataProvider) {
|
|
|
17410
17410
|
var imagePlaneModule = metadataProvider.get("imagePlaneModule", imageIds[0]);
|
|
17411
17411
|
var generalSeriesModule = metadataProvider.get("generalSeriesModule", imageIds[0]);
|
|
17412
17412
|
var SeriesInstanceUID = generalSeriesModule.seriesInstanceUID;
|
|
17413
|
-
|
|
17414
|
-
|
|
17415
|
-
|
|
17416
|
-
|
|
17413
|
+
var ImageOrientationPatient;
|
|
17414
|
+
var validOrientations;
|
|
17415
|
+
var hasCoordinateSystem = ("FrameOfReferenceUID" in multiframe);
|
|
17416
|
+
if (hasCoordinateSystem) {
|
|
17417
|
+
if (!imagePlaneModule) {
|
|
17418
|
+
console.warn("Insufficient metadata, imagePlaneModule missing.");
|
|
17419
|
+
}
|
|
17420
|
+
ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [].concat(_toConsumableArray(imagePlaneModule.rowCosines), _toConsumableArray(imagePlaneModule.columnCosines)) : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z];
|
|
17417
17421
|
|
|
17418
|
-
|
|
17419
|
-
|
|
17422
|
+
// Get IOP from ref series, compute supported orientations:
|
|
17423
|
+
validOrientations = getValidOrientations(ImageOrientationPatient);
|
|
17424
|
+
}
|
|
17420
17425
|
var sliceLength = multiframe.Columns * multiframe.Rows;
|
|
17421
17426
|
var segMetadata = getSegmentMetadata(multiframe, SeriesInstanceUID);
|
|
17422
17427
|
var TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0];
|
|
@@ -17434,7 +17439,12 @@ function generateToolState$1(imageIds, arrayBuffer, metadataProvider) {
|
|
|
17434
17439
|
throw new Error("Fractional segmentations are not yet supported");
|
|
17435
17440
|
}
|
|
17436
17441
|
}
|
|
17437
|
-
var orientation
|
|
17442
|
+
var orientation;
|
|
17443
|
+
if (hasCoordinateSystem) {
|
|
17444
|
+
orientation = checkOrientation(multiframe, validOrientations, [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length], tolerance);
|
|
17445
|
+
} else {
|
|
17446
|
+
orientation = "Planar";
|
|
17447
|
+
}
|
|
17438
17448
|
var overlapping = false;
|
|
17439
17449
|
if (!skipOverlapping) {
|
|
17440
17450
|
overlapping = checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance);
|
|
@@ -17505,9 +17515,7 @@ function findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadata
|
|
|
17505
17515
|
return imageId;
|
|
17506
17516
|
}
|
|
17507
17517
|
var frameSourceImageSequence = undefined;
|
|
17508
|
-
if (
|
|
17509
|
-
frameSourceImageSequence = SourceImageSequence[frameSegment];
|
|
17510
|
-
} else if (PerFrameFunctionalGroup.DerivationImageSequence) {
|
|
17518
|
+
if (PerFrameFunctionalGroup.DerivationImageSequence) {
|
|
17511
17519
|
var DerivationImageSequence = PerFrameFunctionalGroup.DerivationImageSequence;
|
|
17512
17520
|
if (Array.isArray(DerivationImageSequence)) {
|
|
17513
17521
|
if (DerivationImageSequence.length !== 0) {
|
|
@@ -17526,6 +17534,8 @@ function findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadata
|
|
|
17526
17534
|
}
|
|
17527
17535
|
}
|
|
17528
17536
|
}
|
|
17537
|
+
} else if (SourceImageSequence && SourceImageSequence.length !== 0) {
|
|
17538
|
+
frameSourceImageSequence = SourceImageSequence[frameSegment];
|
|
17529
17539
|
}
|
|
17530
17540
|
if (frameSourceImageSequence) {
|
|
17531
17541
|
imageId = getImageIdOfSourceImagebySourceImageSequence(frameSourceImageSequence, imageIds, metadataProvider);
|
|
@@ -17603,9 +17613,15 @@ function checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations
|
|
|
17603
17613
|
for (var i = 0; i < role.length; ++i) {
|
|
17604
17614
|
var _frameSegment = role[i];
|
|
17605
17615
|
var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[_frameSegment];
|
|
17606
|
-
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17607
17616
|
var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _frameSegment * sliceLength, sliceLength), [Rows, Columns]);
|
|
17608
|
-
var alignedPixelDataI =
|
|
17617
|
+
var alignedPixelDataI = void 0;
|
|
17618
|
+
var hasCoordinateSystem = ("FrameOfReferenceUID" in multiframe);
|
|
17619
|
+
if (hasCoordinateSystem) {
|
|
17620
|
+
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17621
|
+
alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
17622
|
+
} else {
|
|
17623
|
+
alignedPixelDataI = pixelDataI2D;
|
|
17624
|
+
}
|
|
17609
17625
|
if (!alignedPixelDataI) {
|
|
17610
17626
|
console.warn("Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.");
|
|
17611
17627
|
continue;
|
|
@@ -17668,9 +17684,15 @@ function insertOverlappingPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray,
|
|
|
17668
17684
|
i = _i2;
|
|
17669
17685
|
return "continue";
|
|
17670
17686
|
}
|
|
17671
|
-
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17672
17687
|
var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _i2 * sliceLength, sliceLength), [Rows, Columns]);
|
|
17673
|
-
var alignedPixelDataI =
|
|
17688
|
+
var alignedPixelDataI = void 0;
|
|
17689
|
+
var hasCoordinateSystem = ("FrameOfReferenceUID" in multiframe);
|
|
17690
|
+
if (hasCoordinateSystem) {
|
|
17691
|
+
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17692
|
+
alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
17693
|
+
} else {
|
|
17694
|
+
alignedPixelDataI = pixelDataI2D;
|
|
17695
|
+
}
|
|
17674
17696
|
if (!alignedPixelDataI) {
|
|
17675
17697
|
throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. " + "This is not yet supported. Aborting segmentation loading.");
|
|
17676
17698
|
}
|
|
@@ -17680,8 +17702,8 @@ function insertOverlappingPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray,
|
|
|
17680
17702
|
i = _i2;
|
|
17681
17703
|
return "continue";
|
|
17682
17704
|
}
|
|
17683
|
-
var sourceImageMetadata = metadataProvider.get("
|
|
17684
|
-
if (Rows !== sourceImageMetadata.
|
|
17705
|
+
var sourceImageMetadata = metadataProvider.get("imagePixelModule", imageId);
|
|
17706
|
+
if (Rows !== sourceImageMetadata.rows || Columns !== sourceImageMetadata.columns) {
|
|
17685
17707
|
throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) " + "respect to the source image reference frame. This is not yet supported. " + "Aborting segmentation loading. ");
|
|
17686
17708
|
}
|
|
17687
17709
|
var imageIdIndex = imageIds.findIndex(function (element) {
|
|
@@ -17751,9 +17773,15 @@ function insertPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBu
|
|
|
17751
17773
|
var sliceLength = Columns * Rows;
|
|
17752
17774
|
var _loop5 = function _loop5(groupsLen, _i3) {
|
|
17753
17775
|
var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[_i3];
|
|
17754
|
-
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17755
17776
|
var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _i3 * sliceLength, sliceLength), [Rows, Columns]);
|
|
17756
|
-
var alignedPixelDataI =
|
|
17777
|
+
var alignedPixelDataI = void 0;
|
|
17778
|
+
var hasCoordinateSystem = ("FrameOfReferenceUID" in multiframe);
|
|
17779
|
+
if (hasCoordinateSystem) {
|
|
17780
|
+
var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
17781
|
+
alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
17782
|
+
} else {
|
|
17783
|
+
alignedPixelDataI = pixelDataI2D;
|
|
17784
|
+
}
|
|
17757
17785
|
if (!alignedPixelDataI) {
|
|
17758
17786
|
throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. " + "This is not yet supported. Aborting segmentation loading.");
|
|
17759
17787
|
}
|
|
@@ -17766,8 +17794,8 @@ function insertPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBu
|
|
|
17766
17794
|
console.warn("Image not present in stack, can't import frame : " + _i3 + ".");
|
|
17767
17795
|
return "continue";
|
|
17768
17796
|
}
|
|
17769
|
-
var sourceImageMetadata = metadataProvider.get("
|
|
17770
|
-
if (Rows !== sourceImageMetadata.
|
|
17797
|
+
var sourceImageMetadata = metadataProvider.get("imagePixelModule", imageId);
|
|
17798
|
+
if (Rows !== sourceImageMetadata.rows || Columns !== sourceImageMetadata.columns) {
|
|
17771
17799
|
throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) " + "respect to the source image reference frame. This is not yet supported. " + "Aborting segmentation loading. ");
|
|
17772
17800
|
}
|
|
17773
17801
|
var imageIdIndex = imageIds.findIndex(function (element) {
|