import { $ } from 'meteor/jquery'; import { OHIF } from 'meteor/ohif:core'; Template.structuredReportModal.onRendered(() => { const structuredReport = getStructureReport(); render(structuredReport); }); // FIXME: we use just 1st SR for current study for now function getStructureReport() { let structuredReport; OHIF.viewer.StudyMetadataList.find(studyMetadata => { structuredReport = studyMetadata.findInstance(instance => instance.getData().modality === 'SR'); // If SR is found stop the search return !!structuredReport; }); return structuredReport; } function render(structureReport) { const root = $('#root'); if (structureReport) { renderStructuredReport(root, structureReport.getData()); } else { renderNoData(root); } } function renderStructuredReport(root, data) { root.append(getMainDataHtml(data)); root.append(getContentSequenceHtml(data.contentSequence)); } function renderNoData(root) { root.append('
No structured report found
'); } function getMainDataHtml(data) { const root = $('
'); const { completionFlag, verificationFlag, manufacturer, contentDateTime } = data; if (completionFlag) { root.append(getMainDataItemHtml('Completion flag', completionFlag)); } if (verificationFlag) { root.append(getMainDataItemHtml('Verification flag', verificationFlag)); } if (manufacturer) { root.append(getMainDataItemHtml('Manufacturer', manufacturer)); } if (contentDateTime) { root.append(getMainDataItemHtml('Content Date/Time', contentDateTime)); } return root; } const getContentSequenceHtml = (data, level = 1) => { const root = $('
'); const header = data.header; const items = data.items || []; if (header) { root.append(`${header}`); } items.forEach(item => { root.append( item instanceof Object ? getContentSequenceHtml(item, level + 1) : `
${item}
` ); }); return root; } function getMainDataItemHtml(key, value) { return $(`
${key}: ${value}
`); }