Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 752x 752x 752x 752x 752x 752x 888x 3244x 888x 888x 2854x 2854x 2854x 888x 888x 650x 888x 752x 650x 650x 752x 888x 888x 888x 888x 752x 476x 476x 476x 752x 238x 238x 752x | import { useSystem } from '../contextProviders/SystemProvider'; /** * * @param {string[]} primaryStudyInstanceUIDs * @param {object[]} studyDisplayList * @param {string} studyDisplayList.studyInstanceUid * @param {string} studyDisplayList.date * @param {string} studyDisplayList.description * @param {string} studyDisplayList.modalities * @param {number} studyDisplayList.numInstances * @param {object[]} displaySets * @param {number} recentTimeframe - The number of milliseconds to consider a study recent * @returns tabs - The prop object expected by the StudyBrowser component */ export function createStudyBrowserTabs( primaryStudyInstanceUIDs, studyDisplayList, displaySets, recentTimeframeMS = 31536000000 ) { const { servicesManager } = useSystem(); const { displaySetService } = servicesManager.services; const shouldSortBySeriesUID = process.env.TEST_ENV === 'true'; const primaryStudies = []; const allStudies = []; studyDisplayList.forEach(study => { const displaySetsForStudy = displaySets.filter( ds => ds.StudyInstanceUID === study.studyInstanceUid ); // sort them by seriesInstanceUID let sortedDisplaySets; if (shouldSortBySeriesUID) { sortedDisplaySets = displaySetsForStudy.sort((a, b) => { const displaySetA = displaySetService.getDisplaySetByUID(a.displaySetInstanceUID); const displaySetB = displaySetService.getDisplaySetByUID(b.displaySetInstanceUID); return displaySetA.SeriesInstanceUID.localeCompare(displaySetB.SeriesInstanceUID); }); } else E{ sortedDisplaySets = displaySetsForStudy; } const tabStudy = Object.assign({}, study, { displaySets: sortedDisplaySets, }); if (primaryStudyInstanceUIDs.includes(study.studyInstanceUid)) { primaryStudies.push(tabStudy); } allStudies.push(tabStudy); }); const primaryStudiesTimestamps = primaryStudies .filter(study => study.date) .map(study => new Date(study.date).getTime()); const recentStudies = primaryStudiesTimestamps.length > 0 ? allStudies.filter(study => { const oldestPrimaryTimeStamp = Math.min(...primaryStudiesTimestamps); Iif (!study.date) { return false; } const studyTimeStamp = new Date(study.date).getTime(); return oldestPrimaryTimeStamp - studyTimeStamp < recentTimeframeMS; }) : []; // Newest first const _byDate = (a, b) => { const dateA = Date.parse(a); const dateB = Date.parse(b); return dateB - dateA; }; const tabs = [ { name: 'primary', label: 'Primary', studies: primaryStudies.sort((studyA, studyB) => _byDate(studyA.date, studyB.date)), }, { name: 'recent', label: 'Recent', studies: recentStudies.sort((studyA, studyB) => _byDate(studyA.date, studyB.date)), }, { name: 'all', label: 'All', studies: allStudies.sort((studyA, studyB) => _byDate(studyA.date, studyB.date)), }, ]; return tabs; } |