import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { StudySummary, MeasurementTable } from '@ohif/ui'; import { DicomMetadataStore } from '@ohif/core'; import ActionButtons from './ActionButtons'; import { useTrackedMeasurements } from '../../getContextModule'; function PanelMeasurementTableTracking({ servicesManager, commandsManager }) { const { MeasurementService } = servicesManager.services; const [ trackedMeasurements, sendTrackedMeasurementsEvent, ] = useTrackedMeasurements(); const [displayStudySummary, setDisplayStudySummary] = useState({ key: '', // date: '', // '07-Sep-2010', modality: '', // 'CT', description: '', // 'CHEST/ABD/PELVIS W CONTRAST', }); const [displayMeasurements, setDisplayMeasurements] = useState([]); // TODO: initial measurements + initial tracked? // TODO: measurements subscribtion // TODO: tracked changes // Initial? useEffect(() => { const measurements = MeasurementService.getMeasurements(); const mappedMeasurements = measurements.map((m, index) => _mapMeasurementToDisplay(m, index) ); setDisplayMeasurements(mappedMeasurements); // eslint-ignore-next-line }, [MeasurementService, trackedMeasurements]); useEffect(() => { if (trackedMeasurements.matches('tracking')) { const StudyInstanceUID = trackedMeasurements.context.trackedStudy; const studyMeta = DicomMetadataStore.getStudy(StudyInstanceUID); const instanceMeta = studyMeta.series[0].instances[0]; const { Modality, StudyDate, StudyDescription } = instanceMeta; // TODO: check key against current before setting setDisplayStudySummary({ key: StudyInstanceUID, date: StudyDate, // TODO: Format: '07-Sep-2010' modality: Modality, description: StudyDescription, }); } }, [trackedMeasurements]); // TODO: Listen for measurement service "adds" (really shouldn't be added until cornerstone-tools "complete") useEffect(() => { // const { unsubscribe } = MeasurementService.subscribe( // MeasurementService.EVENTS.MEASUREMENT_ADDED, // ({ source, measurement }) => { // const { // referenceSeriesUID: SeriesInstanceUID, // referenceStudyUID: StudyInstanceUID, // } = measurement; // sendTrackedMeasurementsEvent('TRACK_SERIES', { // StudyInstanceUID, // SeriesInstanceUID, // }); // console.log('PANEL:', measurement); // // console.log('Mapped:', annotation); // } // ); // return unsubscribe; }, [MeasurementService, sendTrackedMeasurementsEvent]); const activeMeasurementItem = 0; return ( <>