* skeleton for dicom-microscopy extension * skeleton for microscopy mode * [feat] ported @radicalimaging/microscopy-dicom to OHIF's default extension * [feat] ported microscopy mode from private repo * added new definitions to the package.json * webpack configuration update for microscopy extension * register new icons for microscopy tools * fixes to the microscopy extension and mode * trivial error fix - typescript type import error * link microscopy extension with default OHIF app plugin config * demo config fix * fix logs * remove unsed imports * [fix] loading of microscopy * [fix] webworker script loading, normalizing denaturalized dataset * found the latest version of dicom-microscopy-viewer that works with current OHIF extension : 0.35.2 * hide thumbnail pane by default, as we have issues with * comments * remove unused code * [feat] microscopy - annotation selection * [feat] microscopy - edit annotation label * wip * [bugfix] dicom-microscopy tool * [bugfix] dicom microscopy annotations * [fix] mixed-content blocking caused by BulkDataURI * [fix] microscopy measurements panel - center button * [fix] microscopy measurements panel - styling * [fix] microscopy - controls * fix local loading of microscopy * fix local loading of dicom microscopy * fix typo - indexof to indexOf * [fix] remove unused icons * remove commented out lines from webpack configuration * platform/viewer/public/config/default.js - revert accidental changes * [refactor] redirecting to microscopy mode on Local mode * attribution to DMV and SLIM viewer * [fix] code review feedbacks * fix thumbnails * [fix] microscopy - fix old publisher.publish() to PubSubService._broadcastEvent() * [fix] interactions, webpack config, roi selection * [feat] microscopy - remove select tool from UI * microscopy author * [fix] saving and loading SR * [bugfix] - missing publish() function in MicroscopyService, replace with _broadcastEvent * remove author section from readme * refactor SR saving feature * fix webpack config after merge * [bugfix] repeated import * fix e2e * webpack configuration * hide "Create report" button for microscopy
64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
function isPrimitive(v: any) {
|
|
return !(typeof v == 'object' || Array.isArray(v));
|
|
}
|
|
|
|
const vrNumerics = [
|
|
'DS',
|
|
'FL',
|
|
'FD',
|
|
'IS',
|
|
'OD',
|
|
'OF',
|
|
'OL',
|
|
'OV',
|
|
'SL',
|
|
'SS',
|
|
'SV',
|
|
'UL',
|
|
'US',
|
|
'UV',
|
|
];
|
|
|
|
/**
|
|
* Specialized for DICOM JSON format dataset cleaning.
|
|
* @param obj
|
|
* @returns
|
|
*/
|
|
export default function cleanDenaturalizedDataset(obj: any): any {
|
|
if (Array.isArray(obj)) {
|
|
const newAry = obj.map(o =>
|
|
isPrimitive(o) ? o : cleanDenaturalizedDataset(o)
|
|
);
|
|
return newAry;
|
|
} else if (isPrimitive(obj)) {
|
|
return obj;
|
|
} else {
|
|
Object.keys(obj).forEach(key => {
|
|
if (obj[key].Value === null && obj[key].vr) {
|
|
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) {
|
|
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:'
|
|
);
|
|
}
|
|
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(cleanDenaturalizedDataset);
|
|
}
|
|
}
|
|
});
|
|
return obj;
|
|
}
|
|
}
|