1919 </div >
2020 <div id =" patient-data-list" >
2121 <item-group :value =" selectedBaseImage" @change =" setSelection" >
22- <template v-if =" ! patientName " >
23- No patient selected
24- </template >
22+ <template v-if =" ! patientName " > No patient selected </template >
2523 <template v-else-if =" patientName === IMAGES " >
26- <div v-if =" imageList.length === 0" >
27- No non-dicom images available
28- </div >
24+ <div v-if =" imageList.length === 0" >No non-dicom images available</div >
2925 <groupable-item
3026 v-for =" imgID in imageList"
3127 :key =" imgID"
9086 </div >
9187 </v-expansion-panel-header >
9288 <v-expansion-panel-content >
93- <div class =" my-2 series -list" >
89+ <div class =" my-2 volume -list" >
9490 <groupable-item
95- v-for =" series in getSeries(study.StudyInstanceUID)"
96- :key =" series.SeriesInstanceUID"
91+ v-for =" volInfo in getVolumesForStudy(
92+ study.StudyInstanceUID
93+ )"
94+ :key =" volInfo.VolumeID"
9795 v-slot:default =" { active, select }"
98- :value =" dicomSeriesToID[series.SeriesInstanceUID ]"
96+ :value =" dicomVolumeToDataID[volInfo.VolumeID ]"
9997 >
10098 <v-card
10199 outlined
102100 ripple
103101 :color =" active ? 'light-blue lighten-4' : ''"
104- class =" series -card"
105- :title =" series .SeriesDescription"
102+ class =" volume -card"
103+ :title =" volInfo .SeriesDescription"
106104 @click =" select"
107105 >
108106 <v-img
109107 contain
110108 height =" 100px"
111- :src =" dicomThumbnails[series.SeriesInstanceUID ]"
109+ :src =" dicomThumbnails[volInfo.VolumeID ]"
112110 />
113111 <v-card-text
114112 class =" text--primary caption text-center series-desc mt-n3"
115113 >
116- <div >[{{ series .NumberOfSlices }}]</div >
114+ <div >[{{ volInfo .NumberOfSlices }}]</div >
117115 <div class =" text-ellipsis" >
118- {{ series .SeriesDescription || '(no description)' }}
116+ {{ volInfo .SeriesDescription || '(no description)' }}
119117 </div >
120118 <div class =" actions" >
121119 <v-btn
122120 small
123121 icon
124122 @click.stop ="
125- removeData(
126- dicomSeriesToID[series.SeriesInstanceUID]
127- )
123+ removeData(dicomVolumeToDataID[volInfo.VolumeID])
128124 "
129125 >
130126 <v-icon >mdi-delete</v-icon >
@@ -207,7 +203,7 @@ export default {
207203 return {
208204 patientName: ' ' ,
209205 imageThumbnails: {}, // dataID -> Image
210- dicomThumbnails: {}, // seriesUID -> Image
206+ dicomThumbnails: {}, // volumeID -> Image
211207 pendingDicomThumbnails: {},
212208
213209 IMAGES , // symbol
@@ -217,7 +213,7 @@ export default {
217213 computed: {
218214 ... mapState ({
219215 selectedBaseImage: ' selectedBaseImage' ,
220- dicomSeriesToID : ' dicomSeriesToID ' ,
216+ dicomVolumeToDataID : ' dicomVolumeToDataID ' ,
221217 imageList : (state ) => state .data .imageIDs ,
222218 dataIndex : (state ) => state .data .index ,
223219 vtkCache : (state ) => state .data .vtkCache ,
@@ -226,8 +222,8 @@ export default {
226222 patientIndex: ' patientIndex' ,
227223 patientStudies: ' patientStudies' ,
228224 studyIndex: ' studyIndex' ,
229- studySeries : ' studySeries ' ,
230- seriesIndex : ' seriesIndex ' ,
225+ studyVolumes : ' studyVolumes ' ,
226+ volumeIndex : ' volumeIndex ' ,
231227 }),
232228 patients (state ) {
233229 const seen = new Set ();
@@ -303,15 +299,15 @@ export default {
303299 },
304300
305301 methods: {
306- getSeries (studyUID ) {
307- const seriesList = (this .studySeries [studyUID] ?? []).map (
308- (seriesUID ) => this .seriesIndex [seriesUID ]
302+ getVolumesForStudy (studyUID ) {
303+ const volumeList = (this .studyVolumes [studyUID] ?? []).map (
304+ (volID ) => this .volumeIndex [volID ]
309305 );
310306
311307 // trigger a background job fetch thumbnails
312- this .doBackgroundDicomThumbnails (seriesList );
308+ this .doBackgroundDicomThumbnails (volumeList );
313309
314- return seriesList ;
310+ return volumeList ;
315311 },
316312
317313 async setSelection (sel ) {
@@ -321,23 +317,23 @@ export default {
321317 }
322318 },
323319
324- async doBackgroundDicomThumbnails (seriesList ) {
325- seriesList .forEach (async (series ) => {
326- const uid = series . SeriesInstanceUID ;
320+ async doBackgroundDicomThumbnails (volumeList ) {
321+ volumeList .forEach (async (volInfo ) => {
322+ const id = volInfo . VolumeID ;
327323 if (
328- ! (uid in this .dicomThumbnails || uid in this .pendingDicomThumbnails )
324+ ! (id in this .dicomThumbnails || id in this .pendingDicomThumbnails )
329325 ) {
330- this .$set (this .pendingDicomThumbnails , uid , true );
326+ this .$set (this .pendingDicomThumbnails , id , true );
331327 try {
332- const middleSlice = Math .round (Number (series .NumberOfSlices ) / 2 );
333- const thumbItkImage = await this .getSeriesImage ({
334- seriesKey : uid ,
328+ const middleSlice = Math .round (Number (volInfo .NumberOfSlices ) / 2 );
329+ const thumbItkImage = await this .getVolumeSlice ({
330+ volumeID : id ,
335331 slice: middleSlice,
336332 asThumbnail: true ,
337333 });
338- this .$set (this .dicomThumbnails , uid , itkImageToURI (thumbItkImage));
334+ this .$set (this .dicomThumbnails , id , itkImageToURI (thumbItkImage));
339335 } finally {
340- delete this .pendingDicomThumbnails [uid ];
336+ delete this .pendingDicomThumbnails [id ];
341337 }
342338 }
343339 });
@@ -373,7 +369,7 @@ export default {
373369
374370 ... mapActions ([' selectBaseImage' , ' removeData' ]),
375371 ... mapActions (' visualization' , [' updateScene' ]),
376- ... mapActions (' dicom' , [' getSeriesImage ' ]),
372+ ... mapActions (' dicom' , [' getVolumeSlice ' ]),
377373 },
378374};
379375< / script>
@@ -413,14 +409,14 @@ export default {
413409 border: 1px solid #ddd;
414410}
415411
416- .series - list {
412+ .volume - list {
417413 display: grid;
418414 grid- template- columns: repeat (auto- fit, minmax (140px , 1fr ));
419415 grid- template- rows: 180px ;
420416 justify- content: center;
421417}
422418
423- .series - card {
419+ .volume - card {
424420 padding: 8px ;
425421 cursor: pointer;
426422}
0 commit comments