chore(prettier): full repo linting and code reformatting once and for all (#3627)
This commit is contained in:
1 parent
01500a2d4c
commit
9045ddaedc
656 files changed
+21737
-20628
No files matched your search
@@ -13,13 +13,7 @@ const EVENTS = {
|
||||
* Represents a single annotation for the Microscopy Viewer
|
||||
*/
|
||||
class RoiAnnotation extends PubSubService {
|
||||
constructor(
|
||||
roiGraphic,
|
||||
studyInstanceUID,
|
||||
seriesInstanceUID,
|
||||
label = '',
|
||||
viewState = null
|
||||
) {
|
||||
constructor(roiGraphic, studyInstanceUID, seriesInstanceUID, label = '', viewState = null) {
|
||||
super(EVENTS);
|
||||
this.uid = roiGraphic.uid;
|
||||
this.roiGraphic = roiGraphic;
|
||||
@@ -34,9 +28,7 @@ class RoiAnnotation extends PubSubService {
|
||||
const roiGraphic = this.roiGraphic;
|
||||
|
||||
const roiGraphicSymbols = Object.getOwnPropertySymbols(roiGraphic);
|
||||
const _scoord3d = roiGraphicSymbols.find(
|
||||
s => String(s) === 'Symbol(scoord3d)'
|
||||
);
|
||||
const _scoord3d = roiGraphicSymbols.find(s => String(s) === 'Symbol(scoord3d)');
|
||||
|
||||
return roiGraphic[_scoord3d];
|
||||
}
|
||||
@@ -45,9 +37,7 @@ class RoiAnnotation extends PubSubService {
|
||||
const scoord3d = this.getScoord3d();
|
||||
const scoord3dSymbols = Object.getOwnPropertySymbols(scoord3d);
|
||||
|
||||
const _coordinates = scoord3dSymbols.find(
|
||||
s => String(s) === 'Symbol(coordinates)'
|
||||
);
|
||||
const _coordinates = scoord3dSymbols.find(s => String(s) === 'Symbol(coordinates)');
|
||||
|
||||
const coordinates = scoord3d[_coordinates];
|
||||
return coordinates;
|
||||
|
||||
@@ -5,9 +5,7 @@ export default function areaOfPolygon(coordinates) {
|
||||
let j = n - 1;
|
||||
|
||||
for (let i = 0; i < n; i++) {
|
||||
area +=
|
||||
(coordinates[j][0] + coordinates[i][0]) *
|
||||
(coordinates[j][1] - coordinates[i][1]);
|
||||
area += (coordinates[j][0] + coordinates[i][0]) * (coordinates[j][1] - coordinates[i][1]);
|
||||
j = i; // j is previous vertex to i
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ export default function callInputDialog({
|
||||
label="Enter your annotation"
|
||||
labelClassName="text-white text-[14px] leading-[1.2]"
|
||||
autoFocus
|
||||
className="bg-black border-primary-main"
|
||||
className="border-primary-main bg-black"
|
||||
type="text"
|
||||
value={value.defaultValue}
|
||||
onChange={event => {
|
||||
|
||||
@@ -35,9 +35,7 @@ export default function cleanDenaturalizedDataset(
|
||||
}
|
||||
): any {
|
||||
if (Array.isArray(obj)) {
|
||||
const newAry = obj.map(o =>
|
||||
isPrimitive(o) ? o : cleanDenaturalizedDataset(o, options)
|
||||
);
|
||||
const newAry = obj.map(o => (isPrimitive(o) ? o : cleanDenaturalizedDataset(o, options)));
|
||||
return newAry;
|
||||
} else if (isPrimitive(obj)) {
|
||||
return obj;
|
||||
@@ -47,31 +45,19 @@ export default function cleanDenaturalizedDataset(
|
||||
delete obj[key].Value;
|
||||
} else if (Array.isArray(obj[key].Value) && obj[key].vr) {
|
||||
if (obj[key].Value.length === 1 && obj[key].Value[0].BulkDataURI) {
|
||||
dicomWebUtils.fixBulkDataURI(
|
||||
obj[key].Value[0],
|
||||
options,
|
||||
options.dataSourceConfig
|
||||
);
|
||||
dicomWebUtils.fixBulkDataURI(obj[key].Value[0], options, options.dataSourceConfig);
|
||||
|
||||
obj[key].BulkDataURI = obj[key].Value[0].BulkDataURI;
|
||||
|
||||
// prevent mixed-content blockage
|
||||
if (
|
||||
window.location.protocol === 'https:' &&
|
||||
obj[key].BulkDataURI.startsWith('http:')
|
||||
) {
|
||||
obj[key].BulkDataURI = obj[key].BulkDataURI.replace(
|
||||
'http:',
|
||||
'https:'
|
||||
);
|
||||
if (window.location.protocol === 'https:' && obj[key].BulkDataURI.startsWith('http:')) {
|
||||
obj[key].BulkDataURI = obj[key].BulkDataURI.replace('http:', 'https:');
|
||||
}
|
||||
delete obj[key].Value;
|
||||
} else if (vrNumerics.includes(obj[key].vr)) {
|
||||
obj[key].Value = obj[key].Value.map(v => +v);
|
||||
} else {
|
||||
obj[key].Value = obj[key].Value.map(entry =>
|
||||
cleanDenaturalizedDataset(entry, options)
|
||||
);
|
||||
obj[key].Value = obj[key].Value.map(entry => cleanDenaturalizedDataset(entry, options));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -9,11 +9,7 @@ import DEVICE_OBSERVER_UID from './DEVICE_OBSERVER_UID';
|
||||
*
|
||||
* @return Comprehensive3DSR dataset
|
||||
*/
|
||||
export default function constructSR(
|
||||
metadata,
|
||||
{ SeriesDescription, SeriesNumber },
|
||||
annotations
|
||||
) {
|
||||
export default function constructSR(metadata, { SeriesDescription, SeriesNumber }, annotations) {
|
||||
// Handle malformed data
|
||||
if (!metadata.SpecimenDescriptionSequence) {
|
||||
metadata.SpecimenDescriptionSequence = {
|
||||
@@ -31,11 +27,9 @@ export default function constructSR(
|
||||
schemeDesignator: 'DCM',
|
||||
meaning: 'Person',
|
||||
}),
|
||||
observerIdentifyingAttributes: new dcmjs.sr.templates.PersonObserverIdentifyingAttributes(
|
||||
{
|
||||
name: '@ohif/extension-dicom-microscopy',
|
||||
}
|
||||
),
|
||||
observerIdentifyingAttributes: new dcmjs.sr.templates.PersonObserverIdentifyingAttributes({
|
||||
name: '@ohif/extension-dicom-microscopy',
|
||||
}),
|
||||
}),
|
||||
observerDeviceContext: new dcmjs.sr.templates.ObserverContext({
|
||||
observerType: new dcmjs.sr.coding.CodedConcept({
|
||||
@@ -43,11 +37,9 @@ export default function constructSR(
|
||||
schemeDesignator: 'DCM',
|
||||
meaning: 'Device',
|
||||
}),
|
||||
observerIdentifyingAttributes: new dcmjs.sr.templates.DeviceObserverIdentifyingAttributes(
|
||||
{
|
||||
uid: DEVICE_OBSERVER_UID,
|
||||
}
|
||||
),
|
||||
observerIdentifyingAttributes: new dcmjs.sr.templates.DeviceObserverIdentifyingAttributes({
|
||||
uid: DEVICE_OBSERVER_UID,
|
||||
}),
|
||||
}),
|
||||
subjectContext: new dcmjs.sr.templates.SubjectContext({
|
||||
subjectClass: new dcmjs.sr.coding.CodedConcept({
|
||||
@@ -55,28 +47,18 @@ export default function constructSR(
|
||||
schemeDesignator: 'DCM',
|
||||
meaning: 'Specimen',
|
||||
}),
|
||||
subjectClassSpecificContext: new dcmjs.sr.templates.SubjectContextSpecimen(
|
||||
{
|
||||
uid: SpecimenDescriptionSequence.SpecimenUID,
|
||||
identifier:
|
||||
SpecimenDescriptionSequence.SpecimenIdentifier ||
|
||||
metadata.SeriesInstanceUID,
|
||||
containerIdentifier:
|
||||
metadata.ContainerIdentifier || metadata.SeriesInstanceUID,
|
||||
}
|
||||
),
|
||||
subjectClassSpecificContext: new dcmjs.sr.templates.SubjectContextSpecimen({
|
||||
uid: SpecimenDescriptionSequence.SpecimenUID,
|
||||
identifier: SpecimenDescriptionSequence.SpecimenIdentifier || metadata.SeriesInstanceUID,
|
||||
containerIdentifier: metadata.ContainerIdentifier || metadata.SeriesInstanceUID,
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
const imagingMeasurements = [];
|
||||
for (let i = 0; i < annotations.length; i++) {
|
||||
const { roiGraphic: roi, label } = annotations[i];
|
||||
let {
|
||||
measurements,
|
||||
evaluations,
|
||||
marker,
|
||||
presentationState,
|
||||
} = roi.properties;
|
||||
let { measurements, evaluations, marker, presentationState } = roi.properties;
|
||||
|
||||
console.debug('[SR] storing marker...', marker);
|
||||
console.debug('[SR] storing measurements...', measurements);
|
||||
@@ -97,9 +79,7 @@ export default function constructSR(
|
||||
? measurement.MeasuredValueSequence[0]
|
||||
: measurement.MeasuredValueSequence;
|
||||
|
||||
const MeasuredValueUnits = Array.isArray(
|
||||
MeasuredValue.MeasurementUnitsCodeSequence
|
||||
)
|
||||
const MeasuredValueUnits = Array.isArray(MeasuredValue.MeasurementUnitsCodeSequence)
|
||||
? MeasuredValue.MeasurementUnitsCodeSequence[0]
|
||||
: MeasuredValue.MeasurementUnitsCodeSequence;
|
||||
|
||||
@@ -136,29 +116,27 @@ export default function constructSR(
|
||||
});
|
||||
|
||||
const identifier = `ROI #${i + 1}`;
|
||||
const group = new dcmjs.sr.templates.PlanarROIMeasurementsAndQualitativeEvaluations(
|
||||
{
|
||||
trackingIdentifier: new dcmjs.sr.templates.TrackingIdentifier({
|
||||
uid: roi.uid,
|
||||
identifier: presentationState
|
||||
? identifier.concat(`(${JSON.stringify(presentationState)})`)
|
||||
: identifier,
|
||||
}),
|
||||
referencedRegion: new dcmjs.sr.contentItems.ImageRegion3D({
|
||||
graphicType: roi.scoord3d.graphicType,
|
||||
graphicData: roi.scoord3d.graphicData,
|
||||
frameOfReferenceUID: roi.scoord3d.frameOfReferenceUID,
|
||||
}),
|
||||
findingType: new dcmjs.sr.coding.CodedConcept({
|
||||
value: label,
|
||||
schemeDesignator: '@ohif/extension-dicom-microscopy',
|
||||
meaning: 'FREETEXT',
|
||||
}),
|
||||
/** Evaluations will conflict with current tracking identifier */
|
||||
/** qualitativeEvaluations: evaluations, */
|
||||
measurements,
|
||||
}
|
||||
);
|
||||
const group = new dcmjs.sr.templates.PlanarROIMeasurementsAndQualitativeEvaluations({
|
||||
trackingIdentifier: new dcmjs.sr.templates.TrackingIdentifier({
|
||||
uid: roi.uid,
|
||||
identifier: presentationState
|
||||
? identifier.concat(`(${JSON.stringify(presentationState)})`)
|
||||
: identifier,
|
||||
}),
|
||||
referencedRegion: new dcmjs.sr.contentItems.ImageRegion3D({
|
||||
graphicType: roi.scoord3d.graphicType,
|
||||
graphicData: roi.scoord3d.graphicData,
|
||||
frameOfReferenceUID: roi.scoord3d.frameOfReferenceUID,
|
||||
}),
|
||||
findingType: new dcmjs.sr.coding.CodedConcept({
|
||||
value: label,
|
||||
schemeDesignator: '@ohif/extension-dicom-microscopy',
|
||||
meaning: 'FREETEXT',
|
||||
}),
|
||||
/** Evaluations will conflict with current tracking identifier */
|
||||
/** qualitativeEvaluations: evaluations, */
|
||||
measurements,
|
||||
});
|
||||
imagingMeasurements.push(...group);
|
||||
}
|
||||
|
||||
@@ -180,8 +158,7 @@ export default function constructSR(
|
||||
evidence: [metadata],
|
||||
seriesInstanceUID: dcmjs.data.DicomMetaDictionary.uid(),
|
||||
seriesNumber: SeriesNumber,
|
||||
seriesDescription:
|
||||
SeriesDescription || 'Whole slide imaging structured report',
|
||||
seriesDescription: SeriesDescription || 'Whole slide imaging structured report',
|
||||
sopInstanceUID: dcmjs.data.DicomMetaDictionary.uid(),
|
||||
instanceNumber: 1,
|
||||
manufacturer: 'dcmjs-org',
|
||||
|
||||
@@ -3,10 +3,7 @@ import { inv, multiply } from 'mathjs';
|
||||
// TODO -> This is pulled out of some internal logic from Dicom Microscopy Viewer,
|
||||
// We should likely just expose this there.
|
||||
|
||||
export default function coordinateFormatScoord3d2Geometry(
|
||||
coordinates,
|
||||
pyramid
|
||||
) {
|
||||
export default function coordinateFormatScoord3d2Geometry(coordinates, pyramid) {
|
||||
let transform = false;
|
||||
if (!Array.isArray(coordinates[0])) {
|
||||
coordinates = [coordinates];
|
||||
|
||||
@@ -15,10 +15,7 @@ DICOMwebClient._buildMultipartAcceptHeaderFieldValue = () => {
|
||||
* @param param0
|
||||
* @returns
|
||||
*/
|
||||
export default function getDicomWebClient({
|
||||
extensionManager,
|
||||
servicesManager,
|
||||
}) {
|
||||
export default function getDicomWebClient({ extensionManager, servicesManager }) {
|
||||
const dataSourceConfig = window.config.dataSources.find(
|
||||
ds => ds.sourceName === extensionManager.activeDataSource
|
||||
);
|
||||
@@ -55,29 +52,19 @@ export default function getDicomWebClient({
|
||||
//
|
||||
client.retrieveInstanceFrames = async options => {
|
||||
if (!('studyInstanceUID' in options)) {
|
||||
throw new Error(
|
||||
'Study Instance UID is required for retrieval of instance frames'
|
||||
);
|
||||
throw new Error('Study Instance UID is required for retrieval of instance frames');
|
||||
}
|
||||
if (!('seriesInstanceUID' in options)) {
|
||||
throw new Error(
|
||||
'Series Instance UID is required for retrieval of instance frames'
|
||||
);
|
||||
throw new Error('Series Instance UID is required for retrieval of instance frames');
|
||||
}
|
||||
if (!('sopInstanceUID' in options)) {
|
||||
throw new Error(
|
||||
'SOP Instance UID is required for retrieval of instance frames'
|
||||
);
|
||||
throw new Error('SOP Instance UID is required for retrieval of instance frames');
|
||||
}
|
||||
if (!('frameNumbers' in options)) {
|
||||
throw new Error(
|
||||
'frame numbers are required for retrieval of instance frames'
|
||||
);
|
||||
throw new Error('frame numbers are required for retrieval of instance frames');
|
||||
}
|
||||
console.log(
|
||||
`retrieve frames ${options.frameNumbers.toString()} of instance ${
|
||||
options.sopInstanceUID
|
||||
}`
|
||||
`retrieve frames ${options.frameNumbers.toString()} of instance ${options.sopInstanceUID}`
|
||||
);
|
||||
|
||||
const instance = DicomMetadataStore.getInstance(
|
||||
@@ -91,9 +78,7 @@ export default function getDicomWebClient({
|
||||
: options.frameNumbers.split(',');
|
||||
|
||||
return frameNumbers.map(fr =>
|
||||
Array.isArray(instance.PixelData)
|
||||
? instance.PixelData[+fr - 1]
|
||||
: instance.PixelData
|
||||
Array.isArray(instance.PixelData) ? instance.PixelData[+fr - 1] : instance.PixelData
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,24 +5,18 @@
|
||||
* @param {*} microscopySRDisplaySet
|
||||
* @returns
|
||||
*/
|
||||
export default function getSourceDisplaySet(
|
||||
allDisplaySets,
|
||||
microscopySRDisplaySet
|
||||
) {
|
||||
export default function getSourceDisplaySet(allDisplaySets, microscopySRDisplaySet) {
|
||||
const { ReferencedFrameOfReferenceUID } = microscopySRDisplaySet;
|
||||
|
||||
const otherDisplaySets = allDisplaySets.filter(
|
||||
ds =>
|
||||
ds.displaySetInstanceUID !== microscopySRDisplaySet.displaySetInstanceUID
|
||||
ds => ds.displaySetInstanceUID !== microscopySRDisplaySet.displaySetInstanceUID
|
||||
);
|
||||
const referencedDisplaySet = otherDisplaySets.find(
|
||||
displaySet =>
|
||||
displaySet.Modality === 'SM' &&
|
||||
(displaySet.FrameOfReferenceUID === ReferencedFrameOfReferenceUID ||
|
||||
// sometimes each depth instance has the different FrameOfReferenceID
|
||||
displaySet.othersFrameOfReferenceUID.includes(
|
||||
ReferencedFrameOfReferenceUID
|
||||
))
|
||||
displaySet.othersFrameOfReferenceUID.includes(ReferencedFrameOfReferenceUID))
|
||||
);
|
||||
|
||||
if (!referencedDisplaySet && otherDisplaySets.length >= 1) {
|
||||
|
||||
@@ -3,8 +3,7 @@ import dcmjs from 'dcmjs';
|
||||
import DCM_CODE_VALUES from './dcmCodeValues';
|
||||
import toArray from './toArray';
|
||||
|
||||
const MeasurementReport =
|
||||
dcmjs.adapters.DICOMMicroscopyViewer.MeasurementReport;
|
||||
const MeasurementReport = dcmjs.adapters.DICOMMicroscopyViewer.MeasurementReport;
|
||||
|
||||
// Define as async so that it returns a promise, expected by the ViewportGrid
|
||||
export default async function loadSR(
|
||||
@@ -16,9 +15,7 @@ export default async function loadSR(
|
||||
|
||||
const { StudyInstanceUID, FrameOfReferenceUID } = referencedDisplaySet;
|
||||
|
||||
const managedViewers = microscopyService.getManagedViewersForStudy(
|
||||
StudyInstanceUID
|
||||
);
|
||||
const managedViewers = microscopyService.getManagedViewersForStudy(StudyInstanceUID);
|
||||
|
||||
if (!managedViewers || !managedViewers.length) {
|
||||
return;
|
||||
@@ -26,10 +23,7 @@ export default async function loadSR(
|
||||
|
||||
microscopySRDisplaySet.isLoaded = true;
|
||||
|
||||
const { rois, labels } = await _getROIsFromToolState(
|
||||
naturalizedDataset,
|
||||
FrameOfReferenceUID
|
||||
);
|
||||
const { rois, labels } = await _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID);
|
||||
|
||||
const managedViewer = managedViewers[0];
|
||||
|
||||
@@ -58,9 +52,7 @@ async function _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID) {
|
||||
/* webpackChunkName: "dicom-microscopy-viewer" */ 'dicom-microscopy-viewer'
|
||||
);
|
||||
|
||||
const measurementGroupContentItems = _getMeasurementGroups(
|
||||
naturalizedDataset
|
||||
);
|
||||
const measurementGroupContentItems = _getMeasurementGroups(naturalizedDataset);
|
||||
|
||||
const rois = [];
|
||||
const labels = [];
|
||||
@@ -71,17 +63,13 @@ async function _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID) {
|
||||
|
||||
const capsToolType = t.toUpperCase();
|
||||
|
||||
const measurementGroupContentItemsForTool = measurementGroupContentItems.filter(
|
||||
mg => {
|
||||
const imageRegionContentItem = toArray(mg.ContentSequence).find(
|
||||
ci =>
|
||||
ci.ConceptNameCodeSequence.CodeValue ===
|
||||
DCM_CODE_VALUES.IMAGE_REGION
|
||||
);
|
||||
const measurementGroupContentItemsForTool = measurementGroupContentItems.filter(mg => {
|
||||
const imageRegionContentItem = toArray(mg.ContentSequence).find(
|
||||
ci => ci.ConceptNameCodeSequence.CodeValue === DCM_CODE_VALUES.IMAGE_REGION
|
||||
);
|
||||
|
||||
return imageRegionContentItem.GraphicType === capsToolType;
|
||||
}
|
||||
);
|
||||
return imageRegionContentItem.GraphicType === capsToolType;
|
||||
});
|
||||
|
||||
toolSpecificToolState.forEach((coordinates, index) => {
|
||||
const properties = {};
|
||||
@@ -109,9 +97,7 @@ async function _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID) {
|
||||
);
|
||||
|
||||
const trackingGroup = toArray(measurementGroup.ContentSequence).find(
|
||||
ci =>
|
||||
ci.ConceptNameCodeSequence.CodeValue ===
|
||||
DCM_CODE_VALUES.TRACKING_UNIQUE_IDENTIFIER
|
||||
ci => ci.ConceptNameCodeSequence.CodeValue === DCM_CODE_VALUES.TRACKING_UNIQUE_IDENTIFIER
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -138,9 +124,7 @@ async function _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID) {
|
||||
);
|
||||
|
||||
let evaluations = toArray(measurementGroup.ContentSequence).filter(ci =>
|
||||
[DCM_CODE_VALUES.TRACKING_UNIQUE_IDENTIFIER].includes(
|
||||
ci.ConceptNameCodeSequence.CodeValue
|
||||
)
|
||||
[DCM_CODE_VALUES.TRACKING_UNIQUE_IDENTIFIER].includes(ci.ConceptNameCodeSequence.CodeValue)
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -191,17 +175,12 @@ function _getMeasurementGroups(naturalizedDataset) {
|
||||
const { ContentSequence } = naturalizedDataset;
|
||||
|
||||
const imagingMeasurementsContentItem = ContentSequence.find(
|
||||
ci =>
|
||||
ci.ConceptNameCodeSequence.CodeValue ===
|
||||
DCM_CODE_VALUES.IMAGING_MEASUREMENTS
|
||||
ci => ci.ConceptNameCodeSequence.CodeValue === DCM_CODE_VALUES.IMAGING_MEASUREMENTS
|
||||
);
|
||||
|
||||
const measurementGroupContentItems = toArray(
|
||||
imagingMeasurementsContentItem.ContentSequence
|
||||
).filter(
|
||||
ci =>
|
||||
ci.ConceptNameCodeSequence.CodeValue === DCM_CODE_VALUES.MEASUREMENT_GROUP
|
||||
);
|
||||
).filter(ci => ci.ConceptNameCodeSequence.CodeValue === DCM_CODE_VALUES.MEASUREMENT_GROUP);
|
||||
|
||||
return measurementGroupContentItems;
|
||||
}
|
||||
Reference in new issue
Block a user