From 0262ecdd957fd59a47cdd462dd28b0be0209dd33 Mon Sep 17 00:00:00 2001 From: "James A. Petts" Date: Tue, 1 Sep 2020 17:05:07 +0100 Subject: [PATCH 1/3] WIP --- .../src/getSourceDisplaySet.js | 73 +++++++++++++++++-- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/extensions/dicom-segmentation/src/getSourceDisplaySet.js b/extensions/dicom-segmentation/src/getSourceDisplaySet.js index f7b62bd096a..cb6da83a161 100644 --- a/extensions/dicom-segmentation/src/getSourceDisplaySet.js +++ b/extensions/dicom-segmentation/src/getSourceDisplaySet.js @@ -1,4 +1,7 @@ import setActiveLabelmap from './utils/setActiveLabelMap'; +import { classes } from '@ohif/core'; + +const { ImageSet } = classes; export default function getSourceDisplaySet(studies, segDisplaySet) { const referencedDisplaySet = _getReferencedDisplaySet(segDisplaySet, studies); @@ -19,15 +22,49 @@ const _getReferencedDisplaySet = (segDisplaySet, studies) => { ds => ds.displaySetInstanceUID !== segDisplaySet.displaySetInstanceUID ); - const ReferencedSeriesSequence = Array.isArray( - segDisplaySet.metadata.ReferencedSeriesSequence - ) - ? segDisplaySet.metadata.ReferencedSeriesSequence - : [segDisplaySet.metadata.ReferencedSeriesSequence]; + const { metadata } = segDisplaySet; - const referencedSeriesInstanceUIDs = ReferencedSeriesSequence.map( - ReferencedSeries => ReferencedSeries.SeriesInstanceUID - ); + let referencedSeriesInstanceUIDs; + + if (metadata.ReferencedSeriesSequence) { + const ReferencedSeriesSequence = _toArray( + metadata.ReferencedSeriesSequence + ); + + referencedSeriesInstanceUIDs = ReferencedSeriesSequence.map( + ReferencedSeries => ReferencedSeries.SeriesInstanceUID + ); + } else { + const { PerFrameFunctionalGroupsSequence } = metadata; + + let SourceImageSequence; + + if (metadata.SourceImageSequence) { + SourceImageSequence = metadata.SourceImageSequence; + } else { + const firstFunctionalGroups = _toArray( + PerFrameFunctionalGroupsSequence + )[0]; + const { DerivationImageSequence } = firstFunctionalGroups; + + SourceImageSequence = DerivationImageSequence; + } + + const firstSourceImage = _toArray(SourceImageSequence)[0]; + + const { ReferencedSOPInstanceUID } = firstSourceImage; + + referencedSeriesInstanceUIDs = _findReferencedSeriesInstanceUIDsFromSOPInstanceUID( + otherDisplaySets, + ReferencedSOPInstanceUID + ); + + console.log(otherDisplaySets); + + debugger; + + debugger; + } const referencedDisplaySet = otherDisplaySets.find(ds => referencedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID) @@ -35,3 +72,23 @@ const _getReferencedDisplaySet = (segDisplaySet, studies) => { return referencedDisplaySet; }; + +const _findReferencedSeriesInstanceUIDsFromSOPInstanceUID = ( + displaySets, + SOPInstanceUID +) => { + const imageSets = displaySets.filter(ds => ds instanceof ImageSet); + + for (let i = 0; i < imageSets.length; i++) { + const { images } = imageSets[i]; + for (let j = 0; j < images.length; j++) { + if (images[j].SOPInstanceUID === SOPInstanceUID) { + return [images[j].getData().metadata.SeriesInstanceUID]; + } + } + } +}; + +function _toArray(arrayOrObject) { + return Array.isArray(arrayOrObject) ? arrayOrObject : [arrayOrObject]; +} From b422d5f6676da649c5de7548971e02ac31517b47 Mon Sep 17 00:00:00 2001 From: "James A. Petts" Date: Wed, 2 Sep 2020 11:40:17 +0100 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Upgrade=20dcmjs=20ver?= =?UTF-8?q?sion=20to=20support=20more=20SEGs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extensions/cornerstone/package.json | 2 +- extensions/dicom-html/package.json | 2 +- extensions/dicom-rt/package.json | 2 +- extensions/dicom-segmentation/package.json | 2 +- extensions/vtk/package.json | 2 +- platform/core/package.json | 2 +- platform/viewer/package.json | 2 +- yarn.lock | 8 ++++---- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index aa7980a3d27..e19e614eaf6 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -36,7 +36,7 @@ "cornerstone-math": "^0.1.8", "cornerstone-tools": "^4.20.1", "cornerstone-wado-image-loader": "^3.1.0", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/dicom-html/package.json b/extensions/dicom-html/package.json index b48f436a8a9..62500d7ee66 100644 --- a/extensions/dicom-html/package.json +++ b/extensions/dicom-html/package.json @@ -29,7 +29,7 @@ }, "peerDependencies": { "@ohif/core": "^0.50.0", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/dicom-rt/package.json b/extensions/dicom-rt/package.json index e57a683af67..7d04563a695 100644 --- a/extensions/dicom-rt/package.json +++ b/extensions/dicom-rt/package.json @@ -31,7 +31,7 @@ "@ohif/core": "^0.50.0", "cornerstone-core": "^2.2.8", "cornerstone-tools": "^4.20.1", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/dicom-segmentation/package.json b/extensions/dicom-segmentation/package.json index 4847aae1eb6..3bfcb42bc94 100644 --- a/extensions/dicom-segmentation/package.json +++ b/extensions/dicom-segmentation/package.json @@ -31,7 +31,7 @@ "@ohif/core": "^0.50.0", "cornerstone-core": "^2.2.8", "cornerstone-tools": "^4.20.1", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/vtk/package.json b/extensions/vtk/package.json index 2015e178630..30d62f7a860 100644 --- a/extensions/vtk/package.json +++ b/extensions/vtk/package.json @@ -35,7 +35,7 @@ "cornerstone-core": "^2.2.8", "cornerstone-tools": "^4.20.1", "cornerstone-wado-image-loader": "^3.1.0", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "dicom-parser": "^1.8.3", "i18next": "^17.0.3", "i18next-browser-languagedetector": "^3.0.1", diff --git a/platform/core/package.json b/platform/core/package.json index 36b3f43f74b..8173e8d8e76 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -39,7 +39,7 @@ "dependencies": { "@babel/runtime": "^7.5.5", "ajv": "^6.10.0", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "dicomweb-client": "^0.6.0", "immer": "6.0.2", "isomorphic-base64": "^1.0.2", diff --git a/platform/viewer/package.json b/platform/viewer/package.json index 053e80cb7ad..44ad41bc40a 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -67,7 +67,7 @@ "cornerstone-math": "^0.1.8", "cornerstone-tools": "^4.20.1", "cornerstone-wado-image-loader": "^3.1.0", - "dcmjs": "0.16.0", + "dcmjs": "0.16.3", "dicom-parser": "^1.8.3", "dicomweb-client": "^0.4.4", "hammerjs": "^2.0.8", diff --git a/yarn.lock b/yarn.lock index 7ccb6133858..1ad78355821 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6539,10 +6539,10 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dcmjs@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.16.0.tgz#714755d006c3a49cf65ef13e627ff7a23151d35a" - integrity sha512-41nY3Isg5i5FoSd1s67aUgUHi146r+fb8JuiRvDsxvm7MEkkdjIzMYMtxjsrVwKRW1xRH+x34nxbV9+8cc7WQw== +dcmjs@0.16.3: + version "0.16.3" + resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.16.3.tgz#ef44ccc4988a473fd40e1601122c57f2babded11" + integrity sha512-pMQGifMpMW9i9ufCdUoEPHrLWnm6ilnpfLqUc+PPoWr7OnuBhiRVRunbv39oTtFDZOLhQ2Ampm7UrkidWAbqiA== dependencies: "@babel/polyfill" "^7.8.3" "@babel/runtime" "^7.8.4" From 526a4c8f3c2962d72b509a459db4fde902bdfb8b Mon Sep 17 00:00:00 2001 From: "James A. Petts" Date: Wed, 2 Sep 2020 11:43:17 +0100 Subject: [PATCH 3/3] Remove debugger + console --- extensions/dicom-segmentation/src/getSourceDisplaySet.js | 6 ------ .../viewer/src/connectedComponents/ViewerLocalFileData.js | 2 -- 2 files changed, 8 deletions(-) diff --git a/extensions/dicom-segmentation/src/getSourceDisplaySet.js b/extensions/dicom-segmentation/src/getSourceDisplaySet.js index cb6da83a161..f42351fcef2 100644 --- a/extensions/dicom-segmentation/src/getSourceDisplaySet.js +++ b/extensions/dicom-segmentation/src/getSourceDisplaySet.js @@ -58,12 +58,6 @@ const _getReferencedDisplaySet = (segDisplaySet, studies) => { otherDisplaySets, ReferencedSOPInstanceUID ); - - console.log(otherDisplaySets); - - debugger; - - debugger; } const referencedDisplaySet = otherDisplaySets.find(ds => diff --git a/platform/viewer/src/connectedComponents/ViewerLocalFileData.js b/platform/viewer/src/connectedComponents/ViewerLocalFileData.js index 9d211f2d8a0..512a269c4a7 100644 --- a/platform/viewer/src/connectedComponents/ViewerLocalFileData.js +++ b/platform/viewer/src/connectedComponents/ViewerLocalFileData.js @@ -78,8 +78,6 @@ class ViewerLocalFileData extends Component { study.displaySets || studyMetadata.createDisplaySets(sopClassHandlerModules); - debugger; - studyMetadata.forEachDisplaySet(displayset => { displayset.localFile = true; });