filter and update measurements when trackedMeasurements updates

This commit is contained in:
dannyrb 2020-06-08 21:46:52 -04:00
parent 10cbe9e1d4
commit 7700069e7c

View File

@ -18,29 +18,32 @@ function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
trackedMeasurements, trackedMeasurements,
sendTrackedMeasurementsEvent, sendTrackedMeasurementsEvent,
] = useTrackedMeasurements(); ] = useTrackedMeasurements();
const { trackedStudy, trackedSeries } = trackedMeasurements.context;
const [displayStudySummary, setDisplayStudySummary] = useState( const [displayStudySummary, setDisplayStudySummary] = useState(
DISPLAY_STUDY_SUMMARY_INITIAL_VALUE DISPLAY_STUDY_SUMMARY_INITIAL_VALUE
); );
const [displayMeasurements, setDisplayMeasurements] = useState([]); const [displayMeasurements, setDisplayMeasurements] = useState([]);
// TODO: initial measurements + initial tracked?
// TODO: measurements subscribtion // TODO: measurements subscribtion
// TODO: tracked changes
// Initial? // Initial?
useEffect(() => { useEffect(() => {
const measurements = MeasurementService.getMeasurements(); const measurements = MeasurementService.getMeasurements();
const mappedMeasurements = measurements.map((m, index) => const filteredMeasurements = measurements.filter(
m =>
trackedStudy === m.referenceStudyUID &&
trackedSeries.includes(m.referenceSeriesUID)
);
const mappedMeasurements = filteredMeasurements.map((m, index) =>
_mapMeasurementToDisplay(m, index) _mapMeasurementToDisplay(m, index)
); );
setDisplayMeasurements(mappedMeasurements); setDisplayMeasurements(mappedMeasurements);
// eslint-ignore-next-line // eslint-ignore-next-line
}, [MeasurementService, trackedMeasurements]); }, [MeasurementService, trackedStudy, trackedSeries]);
// ~~ DisplayStudySummary // ~~ DisplayStudySummary
useEffect(() => { useEffect(() => {
if (trackedMeasurements.matches('tracking')) { if (trackedMeasurements.matches('tracking')) {
const StudyInstanceUID = trackedMeasurements.context.trackedStudy; const StudyInstanceUID = trackedStudy;
const studyMeta = DicomMetadataStore.getStudy(StudyInstanceUID); const studyMeta = DicomMetadataStore.getStudy(StudyInstanceUID);
const instanceMeta = studyMeta.series[0].instances[0]; const instanceMeta = studyMeta.series[0].instances[0];
const { Modality, StudyDate, StudyDescription } = instanceMeta; const { Modality, StudyDate, StudyDescription } = instanceMeta;
@ -56,9 +59,9 @@ function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
} else if (trackedMeasurements.matches('notTracking')) { } else if (trackedMeasurements.matches('notTracking')) {
setDisplayStudySummary(DISPLAY_STUDY_SUMMARY_INITIAL_VALUE); setDisplayStudySummary(DISPLAY_STUDY_SUMMARY_INITIAL_VALUE);
} }
}, [displayStudySummary.key, trackedMeasurements]); }, [displayStudySummary.key, trackedMeasurements, trackedStudy]);
// TODO: Listen for measurement service "adds" (really shouldn't be added until cornerstone-tools "complete") // TODO: Listen for measurement service "adds" and updates
useEffect(() => { useEffect(() => {
// const { unsubscribe } = MeasurementService.subscribe( // const { unsubscribe } = MeasurementService.subscribe(
// MeasurementService.EVENTS.MEASUREMENT_ADDED, // MeasurementService.EVENTS.MEASUREMENT_ADDED,