import { MSKTab, MSKTabs } from 'shared/components/MSKTabs/MSKTabs'; import LoadingIndicator from 'shared/components/loadingIndicator/LoadingIndicator'; import TimelineWrapper from 'pages/patientView/timeline/TimelineWrapper'; import WindowStore from 'shared/components/window/WindowStore'; import GenomicOverview from 'pages/patientView/genomicOverview/GenomicOverview'; import { defaultAlleleFrequencyHeaderTooltip } from 'pages/patientView/mutation/PatientViewMutationTable'; import { getServerConfig, ServerConfigHelpers } from 'config/config'; import StructuralVariantTableWrapper from 'pages/patientView/structuralVariant/StructuralVariantTableWrapper'; import CopyNumberTableWrapper from 'pages/patientView/copyNumberAlterations/CopyNumberTableWrapper'; import PatientViewMutationsTab from 'pages/patientView/mutation/PatientViewMutationsTab'; import PatientViewPathwayMapper from 'pages/patientView/pathwayMapper/PatientViewPathwayMapper'; import ClinicalInformationPatientTable from 'pages/patientView/clinicalInformation/ClinicalInformationPatientTable'; import ClinicalInformationSamples from 'pages/patientView/clinicalInformation/ClinicalInformationSamplesTable'; import ClinicalEventsTables from 'pages/patientView/timeline/ClinicalEventsTables'; import ResourcesTab, { RESOURCES_TAB_NAME, } from 'pages/patientView/resources/ResourcesTab'; import PathologyReport from 'pages/patientView/pathologyReport/PathologyReport'; import IFrameLoader from 'shared/components/iframeLoader/IFrameLoader'; import { getDigitalSlideArchiveIFrameUrl } from 'shared/api/urls'; import TrialMatchTable from 'pages/patientView/trialMatch/TrialMatchTable'; import _ from 'lodash'; import MutationalSignaturesContainer from 'pages/patientView/mutationalSignatures/MutationalSignaturesContainer'; import { buildCustomTabs } from 'shared/lib/customTabs/customTabHelpers'; import * as React from 'react'; import SampleManager from 'pages/patientView/SampleManager'; import PatientViewPage from 'pages/patientView/PatientViewPage'; import PatientViewUrlWrapper from 'pages/patientView/PatientViewUrlWrapper'; import { CompactVAFPlot } from 'pages/patientView/genomicOverview/CompactVAFPlot'; import { computeMutationFrequencyBySample, doesFrequencyExist, } from 'pages/patientView/genomicOverview/GenomicOverviewUtils'; import genomicOverviewStyles from 'pages/patientView/genomicOverview/styles.module.scss'; import FeatureInstruction from 'shared/FeatureInstruction/FeatureInstruction'; import { HelpWidget } from 'shared/components/HelpWidget/HelpWidget'; import MutationTableWrapper from './mutation/MutationTableWrapper'; import { PatientViewPageInner } from 'pages/patientView/PatientViewPage'; import { Else, If } from 'react-if'; export enum PatientViewPageTabs { Summary = 'summary', genomicEvolution = 'genomicEvolution', ClinicalData = 'clinicalData', FilesAndLinks = 'filesAndLinks', PathologyReport = 'pathologyReport', TissueImage = 'tissueImage', MSKTissueImage = 'MSKTissueImage', TrialMatchTab = 'trialMatchTab', MutationalSignatures = 'mutationalSignatures', PathwayMapper = 'pathways', } export const PatientViewResourceTabPrefix = 'openResource_'; export function getPatientViewResourceTabId(resourceId: string) { return `${PatientViewResourceTabPrefix}${resourceId}`; } export function extractResourceIdFromTabId(tabId: string) { const match = new RegExp(`${PatientViewResourceTabPrefix}(.*)`).exec(tabId); if (match) { return match[1]; } else { return undefined; } } export function patientViewTabs( pageInstance: PatientViewPageInner, urlWrapper: PatientViewUrlWrapper, sampleManager: SampleManager | null ) { return ( urlWrapper.setActiveTab(id)} className="mainTabs" getPaginationWidth={WindowStore.getWindowWidth} onMount={() => console.log('TABS MOUNT')} contentWindowExtra={ } > {tabs(pageInstance, sampleManager)} ); } export function tabs( pageComponent: PatientViewPageInner, sampleManager: SampleManager | null ) { const tabs: JSX.Element[] = []; tabs.push( {!!sampleManager && pageComponent.patientViewPageStore.clinicalEvents.isComplete && pageComponent.patientViewPageStore.clinicalEvents.result .length > 0 && (

)} {pageComponent.patientViewPageStore.mutationData.isComplete && pageComponent.patientViewPageStore.cnaSegments.isComplete && pageComponent.patientViewPageStore.sequencedSampleIdsInStudy .isComplete && pageComponent.patientViewPageStore.sampleToMutationGenePanelId .isComplete && pageComponent.patientViewPageStore.sampleToDiscreteGenePanelId .isComplete && pageComponent.patientViewPageStore.studies.isComplete && (pageComponent.patientViewPageStore .mergedMutationDataFilteredByGene.length > 0 || pageComponent.patientViewPageStore.cnaSegments.result .length > 0) && sampleManager && (
)}
0 && doesFrequencyExist( computeMutationFrequencyBySample( pageComponent.patientViewPageStore .mergedMutationDataFilteredByGene, sampleManager?.sampleIndex || {} ) ) ? (name: string) => ( { defaultAlleleFrequencyHeaderTooltip }
} thumbnailComponent={ {name} { CompactVAFPlot .defaultProps .thumbnailComponent } } /> ) : undefined } />

{pageComponent.patientViewPageStore.studyIdToStudy.isComplete && pageComponent.patientViewPageStore.genePanelIdToEntrezGeneIds .isComplete && pageComponent.patientViewPageStore.referenceGenes.isComplete && pageComponent.patientViewPageStore.discreteMolecularProfile .isComplete && pageComponent.patientViewPageStore .genePanelDataByMolecularProfileIdAndSampleId .isComplete && (
Study is not profiled for copy number alterations.
)}
); !!sampleManager && pageComponent.patientViewPageStore.sampleIds.length > 1 && pageComponent.patientViewPageStore.existsSomeMutationWithVAFData && tabs.push( ); tabs.push( {pageComponent.patientViewPageStore.geneticTrackData.isComplete && pageComponent.patientViewPageStore .mergedMutationDataIncludingUncalledFilteredByGene ? ( ) : ( )} ); tabs.push(

Patient

{pageComponent.patientViewPageStore.clinicalDataPatient .isComplete && ( )}

Samples

{pageComponent.patientViewPageStore.clinicalDataGroupedBySample .isComplete && ( )}

Timeline Data

{pageComponent.patientViewPageStore.clinicalEvents.isComplete && ( )}
); tabs.push(
); tabs.push(
); tabs.push(
); pageComponent.showWholeSlideViewerTab && pageComponent.wholeSlideViewerUrl.result && tabs.push(
); pageComponent.shouldShowTrialMatch && tabs.push( ); pageComponent.patientViewPageStore.hasMutationalSignatureData.result && tabs.push( ); pageComponent.resourceTabs.component && /* @ts-ignore */ tabs.push(...pageComponent.resourceTabs.component); tabs.push(...buildCustomTabs(pageComponent.customTabs)); // {getServerConfig().custom_tabs && // getServerConfig() // .custom_tabs.filter( // (tab: any) => // tab.location === 'PATIENT_PAGE' // ) // .map((tab: any, i: number) => { // return ( // { // this.customTabMountCallback( // div, // tab // ); // }} // linkText={tab.title} // > // ); // })} return tabs; }