diff --git a/LesionTracker/.gagarin/.gitignore b/LesionTracker/.gagarin/.gitignore
deleted file mode 100644
index 408303742..000000000
--- a/LesionTracker/.gagarin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-local
diff --git a/LesionTracker/.meteor/packages b/LesionTracker/.meteor/packages
index e62f8de5a..4786bac69 100644
--- a/LesionTracker/.meteor/packages
+++ b/LesionTracker/.meteor/packages
@@ -41,7 +41,6 @@ ohif:cornerstone-settings
ohif:viewerbase
ohif:studies
ohif:study-list
-ohif:dicom-services
ohif:hanging-protocols
ohif:metadata
diff --git a/LesionTracker/.meteor/versions b/LesionTracker/.meteor/versions
index e1488d5dd..9539121c6 100644
--- a/LesionTracker/.meteor/versions
+++ b/LesionTracker/.meteor/versions
@@ -92,8 +92,6 @@ ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:cornerstone-settings@0.0.1
ohif:design@0.0.1
-ohif:dicom-services@0.0.1
-ohif:dicomweb-client@0.0.1
ohif:hanging-protocols@0.0.1
ohif:header@0.0.1
ohif:hotkeys@0.0.1
@@ -143,7 +141,6 @@ tracker@1.2.0
ui@1.0.13
underscore@1.0.10
url@1.2.0
-validatejs@0.0.1
webapp@1.6.2
webapp-hashing@1.0.9
zuuk:stale-session@1.0.8
diff --git a/LesionTracker/client/components/app/app.html b/LesionTracker/client/components/app/app.html
index ad36371ca..8b020bafc 100644
--- a/LesionTracker/client/components/app/app.html
+++ b/LesionTracker/client/components/app/app.html
@@ -14,6 +14,9 @@
{{/if}}
{{/section}}
{{#section 'headerMenu'}}
+
+ INVESTIGATIONAL USE ONLY
+
{{userName}}
-
-
-
+ {{#if paginationButtonsEnabled}}
+
-
+ {{/if}}
{{/form}}
diff --git a/Packages/ohif-core/client/components/paginationArea/paginationArea.js b/Packages/ohif-core/client/components/paginationArea/paginationArea.js
index 908499aee..c3d482f29 100644
--- a/Packages/ohif-core/client/components/paginationArea/paginationArea.js
+++ b/Packages/ohif-core/client/components/paginationArea/paginationArea.js
@@ -1,8 +1,6 @@
import { Template } from 'meteor/templating';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
-import 'twbs-pagination';
-
-const visiblePages = 10;
+import { $ } from 'meteor/jquery';
Template.paginationArea.onCreated(function() {
const instance = Template.instance();
@@ -19,60 +17,66 @@ Template.paginationArea.onCreated(function() {
Template.paginationArea.onRendered(() => {
const instance = Template.instance();
- instance.$paginationControl = instance.$('.pagination-control');
// Track changes on recordCount and rowsPerPage
instance.autorun(() => {
const recordCount = instance.data.recordCount.get();
const rowsPerPage = instance.data.rowsPerPage.get();
+ const currentPage = instance.data.currentPage.get();
- // Destroy plugin if exists
- if (instance.$paginationControl.data().twbsPagination) {
- instance.$paginationControl.twbsPagination('destroy');
- }
+ Meteor.defer(() => {
+ const prevButton = instance.$('.prev')[0];
+ const nextButton = instance.$('.next')[0];
+ if (!prevButton || !nextButton) {
+ return;
+ }
- if (recordCount && rowsPerPage) {
- const totalPages = Math.ceil(recordCount / rowsPerPage);
+ // Enable if there are potentially more records, otherwise disable it
+ if (recordCount >= rowsPerPage) {
+ nextButton.classList.remove('disabled');
+ } else {
+ nextButton.classList.add('disabled');
+ }
- // Initialize plugin
- instance.$paginationControl.twbsPagination({
- totalPages,
- visiblePages,
- onPageClick: (event, page) => {
- // Update currentPage
- // Decrease page by 1 to set currentPage
- // Since reactive table current page index starts by 0
- instance.data.currentPage.set(page - 1);
- }
- });
- }
+ // Enable the previous button if it is not the first page, otherwise disable it
+ if (currentPage > 0) {
+ prevButton.classList.remove('disabled');
+ } else {
+ prevButton.classList.add('disabled');
+ }
+ });
});
});
-Template.paginationArea.onDestroyed(() => {
- const instance = Template.instance();
- if (instance.$paginationControl.data().twbsPagination) {
- instance.$paginationControl.twbsPagination('destroy');
- }
-});
-
Template.paginationArea.helpers({
- recordCount() {
+ paginationButtonsEnabled() {
const instance = Template.instance();
- return instance.data.recordCount.get();
- },
- isRowsPerPageSelected(rowsPerPage) {
- const instance = Template.instance();
- return rowsPerPage === instance.data.rowsPerPage.get();
+ const recordCount = instance.data.recordCount.get();
+ const rowsPerPage = instance.data.rowsPerPage.get();
+ const currentPage = instance.data.currentPage.get();
+
+ // Show pagination if it is not first page or there are potentially more records
+ return currentPage > 0 || recordCount >= rowsPerPage;
}
});
Template.paginationArea.events({
+ 'click .prev > a'(event, instance) {
+ const currentPage = instance.data.currentPage.get();
+ instance.data.currentPage.set(currentPage - 1);
+ },
+
+ 'click .next > a'(event, instance) {
+ const currentPage = instance.data.currentPage.get();
+ instance.data.currentPage.set(currentPage + 1);
+ },
+
'change [data-key=rowsPerPage]'(event, instance) {
const rowsPerPage = $(event.currentTarget).data('component').value();
// Update rowsPerPage
instance.data.rowsPerPage.set(parseInt(rowsPerPage, 10));
+ instance.data.currentPage.set(0);
}
});
diff --git a/Packages/ohif-core/client/components/paginationArea/paginationArea.styl b/Packages/ohif-core/client/components/paginationArea/paginationArea.styl
index 3614f8442..ba174e885 100644
--- a/Packages/ohif-core/client/components/paginationArea/paginationArea.styl
+++ b/Packages/ohif-core/client/components/paginationArea/paginationArea.styl
@@ -18,7 +18,7 @@
select
width: 42px
- .page-number
+ .page-buttons
margin: 0
text-align: right
@@ -29,28 +29,34 @@
margin: 0
li
+ display: table-cell
+ padding: 5px 2px
+
a
padding: 4px 8px
theme('background-color', '$primaryBackgroundColor')
theme('border-color', '$uiGray')
theme('background-color', '$uiGrayDarkest')
color: white
- padding: 4px 8px
+ text-decoration: none
&:hover
theme('color', '$activeColor')
- .active
- a
- theme('background-color', '$uiGray')
- border-color: #ddd
- color: white
+ .active
+ a
+ theme('background-color', '$uiGray')
+ border-color: #ddd
+ color: white
.disabled
+ cursor: not-allowed
+
a, a:hover, a:focus, a:active
theme('background-color', '$uiGrayDarkest')
theme('border-color', '$uiGray')
theme('color', '$uiGrayLight')
+ pointer-events: none
&:not(.disabled):hover a
theme('background-color', '$uiGrayDark')
diff --git a/Packages/ohif-core/client/ui/handleError.js b/Packages/ohif-core/client/ui/handleError.js
index b419d7e58..7d09d2a91 100644
--- a/Packages/ohif-core/client/ui/handleError.js
+++ b/Packages/ohif-core/client/ui/handleError.js
@@ -29,6 +29,7 @@ OHIF.ui.handleError = error => {
cancelClass: 'btn-secondary'
}, error || {});
+ OHIF.log.error(error);
// TODO: Find a better way to handle errors instead of displaying a dialog for all of them.
// OHIF.ui.showDialog('dialogForm', data);
};
diff --git a/Packages/ohif-core/client/ui/popover/display.js b/Packages/ohif-core/client/ui/popover/display.js
index d53473678..2bd5bd9c4 100644
--- a/Packages/ohif-core/client/ui/popover/display.js
+++ b/Packages/ohif-core/client/ui/popover/display.js
@@ -52,25 +52,33 @@ OHIF.ui.showPopover = (templateName, popoverData, options={}) => {
const popoverOptions = Object.assign({} , defaults, options);
popoverOptions.content = Blaze.toHTMLWithData(template, popoverData);
+ if (popoverOptions.hideOnClick) {
+ $element.click(function() {
+ $(this).popover('hide');
+ });
+ }
+
$element.popover(popoverOptions);
- $element.one('shown.bs.popover', function(event) {
- const popoverId = $element.attr('aria-describedby');
- const popover = document.getElementById(popoverId);
- const $popover = $(popover);
- const $popoverContent = $popover.find('.popover-content');
- const dismissPopover = () => $element.popover('hide');
+ if (popoverOptions.trigger !== 'hover') {
+ $element.one('shown.bs.popover', function(event) {
+ const popoverId = $element.attr('aria-describedby');
+ const popover = document.getElementById(popoverId);
+ const $popover = $(popover);
+ const $popoverContent = $popover.find('.popover-content');
+ const dismissPopover = () => $element.popover('hide');
- $popoverContent.html('');
+ $popoverContent.html('');
- const view = Blaze.renderWithData(template, templateData, $popoverContent[0]);
- $element.one('hidden.bs.popover', () => {
- Blaze.remove(view);
- $element.popover('destroy');
+ const view = Blaze.renderWithData(template, templateData, $popoverContent[0]);
+ $element.one('hidden.bs.popover', () => {
+ Blaze.remove(view);
+ $element.popover('destroy');
+ });
+
+ promise.then(dismissPopover).catch(dismissPopover);
});
-
- promise.then(dismissPopover).catch(dismissPopover);
- });
+ }
if (popoverOptions.trigger === 'manual') {
$element.popover('show');
diff --git a/Packages/ohif-core/main.js b/Packages/ohif-core/main.js
index 90a0d542a..f79be869c 100644
--- a/Packages/ohif-core/main.js
+++ b/Packages/ohif-core/main.js
@@ -11,6 +11,7 @@ const OHIF = {
viewer: {},
cornerstone: {},
user: {},
+ DICOMWeb: {}, // Temporarily added
};
// Expose the OHIF object to the client if it is on development mode
diff --git a/Packages/ohif-core/package.js b/Packages/ohif-core/package.js
index 1970ca2b1..7bbe87316 100644
--- a/Packages/ohif-core/package.js
+++ b/Packages/ohif-core/package.js
@@ -1,5 +1,5 @@
Npm.depends({
- 'twbs-pagination': '1.4.1'
+ 'isomorphic-base64': '1.0.2',
});
Package.describe({
@@ -9,7 +9,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
@@ -44,5 +44,4 @@ Package.onUse(function(api) {
// Client and server imports
api.addFiles('both/index.js', ['client', 'server']);
-
});
diff --git a/Packages/ohif-cornerstone-settings/imports/client/lib/classes/MetadataProvider.js b/Packages/ohif-cornerstone-settings/imports/client/lib/classes/MetadataProvider.js
index 159f6ce69..1ad16af11 100644
--- a/Packages/ohif-cornerstone-settings/imports/client/lib/classes/MetadataProvider.js
+++ b/Packages/ohif-cornerstone-settings/imports/client/lib/classes/MetadataProvider.js
@@ -42,9 +42,10 @@ export class MetadataProvider {
const seriesMetadata = data.series;
const studyMetadata = data.study;
const numImages = data.numImages;
-
const metadata = {};
+ metadata.frameNumber = data.frameNumber;
+
metadata.study = {
accessionNumber: studyMetadata.accessionNumber,
patientId: studyMetadata.patientId,
diff --git a/Packages/ohif-cornerstone-settings/package.js b/Packages/ohif-cornerstone-settings/package.js
index a83f9bf88..df937dbb1 100644
--- a/Packages/ohif-cornerstone-settings/package.js
+++ b/Packages/ohif-cornerstone-settings/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.5');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('ohif:cornerstone');
diff --git a/Packages/ohif-cornerstone/package.js b/Packages/ohif-cornerstone/package.js
index 06e62f875..12761ca03 100644
--- a/Packages/ohif-cornerstone/package.js
+++ b/Packages/ohif-cornerstone/package.js
@@ -11,11 +11,11 @@ Npm.depends({
'cornerstone-math': '0.1.6',
'dicom-parser': '1.8.0',
'cornerstone-wado-image-loader': '2.1.4',
- 'dcmjs': '0.1.5'
+ 'dcmjs': '0.2.1'
});
Package.onUse(function(api) {
- api.versionsFrom('1.5');
+ api.versionsFrom('1.7');
api.use('ecmascript');
diff --git a/Packages/ohif-design/package.js b/Packages/ohif-design/package.js
index e4908627a..88fd0e93a 100644
--- a/Packages/ohif-design/package.js
+++ b/Packages/ohif-design/package.js
@@ -16,7 +16,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4.2.3');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
diff --git a/Packages/ohif-dicom-services/package.js b/Packages/ohif-dicom-services/package.js
deleted file mode 100755
index 7fae860dd..000000000
--- a/Packages/ohif-dicom-services/package.js
+++ /dev/null
@@ -1,27 +0,0 @@
-Package.describe({
- name: 'ohif:dicom-services',
- summary: 'DICOM Services: DIMSE C-Service functions',
- version: '0.0.1'
-});
-
-Package.onUse(function(api) {
- api.versionsFrom('1.4');
-
- api.use('http');
- api.use('ecmascript');
-
- // DIMSE functions
- api.addFiles('server/DIMSE/require.js', 'server');
- api.addFiles('server/DIMSE/constants.js', 'server');
- api.addFiles('server/DIMSE/elements_data.js', 'server');
- api.addFiles('server/DIMSE/Field.js', 'server');
- api.addFiles('server/DIMSE/RWStream.js', 'server');
- api.addFiles('server/DIMSE/Data.js', 'server');
- api.addFiles('server/DIMSE/Message.js', 'server');
- api.addFiles('server/DIMSE/PDU.js', 'server');
- api.addFiles('server/DIMSE/CSocket.js', 'server');
- api.addFiles('server/DIMSE/Connection.js', 'server');
- api.addFiles('server/DIMSE/DIMSE.js', 'server');
-
- api.export('DIMSE', 'server');
-});
diff --git a/Packages/ohif-dicom-services/server/DIMSE/CSocket.js b/Packages/ohif-dicom-services/server/DIMSE/CSocket.js
deleted file mode 100755
index a5434e0f7..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/CSocket.js
+++ /dev/null
@@ -1,657 +0,0 @@
-import { OHIF } from 'meteor/ohif:core';
-
-var EventEmitter = Npm.require('events').EventEmitter;
-
-function time() {
- return Math.floor(Date.now() / 1000);
-}
-
-function getRandomInt(min, max) {
- return Math.floor(Math.random() * (max - min)) + min;
-}
-
-var Envelope = function(command, dataset) {
- EventEmitter.call(this);
- this.command = command;
- this.dataset = dataset;
-};
-
-util.inherits(Envelope, EventEmitter);
-
-CSocket = function(socket, options) {
- EventEmitter.call(this);
- this.socket = socket;
- this.negotiatedContexts = {};
- this.receiving = null;
- this.receiveLength = null;
- this.minRecv = null;
- this.lastReceived = null;
- this.presentationContexts = [];
- this.associated = false;
- this.pendingPDVs = null;
- this.connected = false;
- this.started = null;
- this.intervalId = null;
- this.lastCommand = null;
- this.lastSent = null;
- this.messages = {};
- this.messageIdCounter = 0;
- this.callingAe = null;
- this.calledAe = null;
- this.id = getRandomInt(1000, 9999);
- this.options = options;
-
- var o = this;
- this.socket.on('connect', function() {
- OHIF.log.info('Connect');
- o.ready();
- });
-
- this.socket.on('data', function(data) {
- o.received(data);
- });
-
- this.socket.on('error', function(socketError) {
- OHIF.log.error('There was an error with DIMSE connection socket.');
- OHIF.log.error(socketError.stack);
- OHIF.log.trace();
-
- o.emit('error', new Meteor.Error('server-internal-error', socketError.message));
- });
-
- this.socket.on('timeout', function(socketError) {
- OHIF.log.error('The connection timed out. The server is not responding.');
- OHIF.log.error(socketError.stack);
- OHIF.log.trace();
-
- o.emit('error', new Meteor.Error('server-connection-error', socketError.message));
- });
-
- this.socket.on('close', function() {
- if (o.intervalId) {
- clearInterval(o.intervalId);
- }
-
- o.connected = false;
- OHIF.log.info('Connection closed');
- o.emit('close');
- });
-
- this.on('released', function() {
- this.released();
- });
-
- this.on('aborted', function(pdu) {
- OHIF.log.warn('Association aborted with reason ' + pdu.reason);
- this.released();
- });
-
- this.on('message', function(pdvs) {
- this.receivedMessage(pdvs);
- });
-};
-
-util.inherits(CSocket, EventEmitter);
-
-CSocket.prototype.setCallingAE = function(ae) {
- this.callingAe = ae;
-};
-
-CSocket.prototype.setCalledAe = function(ae) {
- this.calledAe = ae;
-};
-
-CSocket.prototype.associate = function() {
- var associateRQ = new AssociateRQ();
- associateRQ.setCalledAETitle(this.calledAe);
- associateRQ.setCallingAETitle(this.callingAe);
- associateRQ.setApplicationContextItem(new ApplicationContextItem());
-
- var contextItems = [];
- this.presentationContexts.forEach(function(context) {
- var contextItem = new PresentationContextItem(),
- syntaxes = [];
-
- context.transferSyntaxes.forEach(function(transferSyntax) {
- var transfer = new TransferSyntaxItem();
- transfer.setTransferSyntaxName(transferSyntax);
- syntaxes.push(transfer);
- });
- contextItem.setTransferSyntaxesItems(syntaxes);
- contextItem.setPresentationContextID(context.id);
-
- var abstractItem = new AbstractSyntaxItem();
- abstractItem.setAbstractSyntaxName(context.abstractSyntax);
- contextItem.setAbstractSyntaxItem(abstractItem);
- contextItems.push(contextItem);
- });
- associateRQ.setPresentationContextItems(contextItems);
-
- var maxLengthItem = new MaximumLengthItem(),
- classUIDItem = new ImplementationClassUIDItem(),
- versionItem = new ImplementationVersionNameItem();
-
- classUIDItem.setImplementationClassUID(C.IMPLEM_UID);
- versionItem.setImplementationVersionName(C.IMPLEM_VERSION);
- var packageSize = this.options.maxPackageSize ? this.options.maxPackageSize : C.DEFAULT_MAX_PACKAGE_SIZE;
- maxLengthItem.setMaximumLengthReceived(packageSize);
-
- var userInfo = new UserInformationItem();
- userInfo.setUserDataItems([maxLengthItem, classUIDItem, versionItem]);
-
- associateRQ.setUserInformationItem(userInfo);
-
- this.send(associateRQ);
-};
-
-CSocket.prototype.getContext = function(id) {
- for (var k in this.presentationContexts) {
- var ctx = this.presentationContexts[k];
- if (id === ctx.id) {
- return ctx;
- }
- }
-
- return null;
-};
-
-CSocket.prototype.getSyntax = function(contextId) {
- if (!this.negotiatedContexts[contextId]) return null;
-
- return this.negotiatedContexts[contextId].transferSyntax;
-};
-
-CSocket.prototype.getContextByUID = function(uid) {
- for (var k in this.negotiatedContexts) {
- var ctx = this.negotiatedContexts[k];
- if (ctx.abstractSyntax === uid) {
- return ctx;
- }
- }
-
- return null;
-};
-
-CSocket.prototype.getContextId = function(contextId) {
- if (!this.negotiatedContexts[contextId]) {
- return null;
- }
-
- return this.negotiatedContexts[contextId].id;
-};
-
-CSocket.prototype.setPresentationContexts = function(uids) {
- var contexts = [],
- id = 0;
- uids.forEach(function(uid) {
- id++;
- if (typeof uid === 'string') {
- contexts.push({
- id: id,
- abstractSyntax: uid,
- transferSyntaxes: [C.IMPLICIT_LITTLE_ENDIAN, C.EXPLICIT_LITTLE_ENDIAN, C.EXPLICIT_BIG_ENDIAN]
- });
- } else {
- contexts.push({
- id: id,
- abstractSyntax: uid.context,
- transferSyntaxes: uid.syntaxes
- });
- }
- });
- this.presentationContexts = contexts;
-};
-
-CSocket.prototype.newMessageId = function() {
- return (++this.messageIdCounter) % 65536;
-};
-
-CSocket.prototype.resetReceive = function() {
- this.receiving = this.receiveLength = null;
-};
-
-CSocket.prototype.send = function(pdu, afterCbk) {
- //console.log('SEND PDU-TYPE: ', pdu.type);
- var toSend = pdu.buffer();
- //console.log('send buffer', toSend.toString('hex'));
- return this.socket.write(toSend, afterCbk ? afterCbk : null);
-};
-
-CSocket.prototype.release = function() {
- var releaseRQ = new ReleaseRQ();
- this.send(releaseRQ);
-};
-
-CSocket.prototype.released = function() {
- this.socket.end();
-};
-
-CSocket.prototype.ready = function() {
- OHIF.log.info('Connection established');
- this.connected = true;
- this.started = time();
-
- var o = this;
- if (this.options.idle) {
- this.intervalId = setInterval(function() {
- o.checkIdle();
- }, 3000);
- }
-};
-
-CSocket.prototype.checkIdle = function() {
- var current = time(),
- idl = this.options.idle;
-
- if (!this.lastReceived && (current - this.started >= idl)) {
- this.idleClose();
- } else if (this.lastReceived && (current - this.lastReceived >= idl)) {
- this.idleClose();
- }
-};
-
-CSocket.prototype.idleClose = function() {
- OHIF.log.info('Exceed idle time, closing connection');
- this.release();
-};
-
-CSocket.prototype.received = function(data) {
- do {
- data = this.process(data);
- } while (data !== null);
- this.lastReceived = time();
-};
-
-CSocket.prototype.process = function(data) {
- if (this.receiving === null) {
- if (this.minRecv) {
- data = Buffer.concat([this.minRecv, data], this.minRecv.length + data.length);
- this.minRecv = null;
- }
-
- if (data.length < 6) {
- this.minRecv = data;
- return null;
- }
-
- var stream = new ReadStream(data);
- var type = stream.read(C.TYPE_UINT8);
- stream.increment(1);
- var len = stream.read(C.TYPE_UINT32),
- cmp = data.length - 6;
- if (len > cmp) {
- this.receiving = data;
- this.receiveLength = len;
- } else {
- var process = data,
- remaining = null;
- if (len < cmp) {
- process = data.slice(0, len + 6);
- remaining = data.slice(len + 6, cmp + 6);
- }
-
- this.resetReceive();
- this.interpret(new ReadStream(process), this);
- if (remaining) {
- return remaining;
- }
- }
- } else {
- OHIF.log.info('Data received');
- var newData = Buffer.concat([this.receiving, data], this.receiving.length + data.length),
- pduLength = newData.length - 6;
-
- if (pduLength < this.receiveLength) {
- this.receiving = newData;
- } else {
- var remaining = null;
- if (pduLength > this.receiveLength) {
- remaining = newData.slice(this.receiveLength + 6, pduLength + 6);
- newData = newData.slice(0, this.receiveLength + 6);
- }
-
- this.resetReceive();
- this.interpret(new ReadStream(newData));
- if (remaining) {
- return remaining;
- }
- }
- }
-
- return null;
-};
-
-CSocket.prototype.interpret = function(stream) {
- var pdatas = [],
- size = stream.size(),
- o = this;
- while (stream.offset < size) {
- var pdu = PDU.createByStream(stream);
- //console.log("Received PDU-TYPE " + PDU.typeToString(pdu.type));
- if (pdu.is(C.ITEM_TYPE_PDU_ASSOCIATE_AC)) {
- pdu.presentationContextItems.forEach(function(ctx) {
- var requested = o.getContext(ctx.presentationContextID);
- if (!requested) {
- throw 'Accepted presentation context not found';
- }
-
- o.negotiatedContexts[ctx.presentationContextID] = {
- id: ctx.presentationContextID,
- transferSyntax: ctx.transferSyntaxesItems[0].transferSyntaxName,
- abstractSyntax: requested.abstractSyntax
- };
- });
-
- //console.log('Accepted');
- this.associated = true;
- this.emit('associated', pdu);
- } else if (pdu.is(C.ITEM_TYPE_PDU_ASSOCIATE_RQ)) {
- var accepd = new AssociateAC();
-
- pdu.presentationContextItems.forEach(function(ctx) {
-
- });
- } else if (pdu.is(C.ITEM_TYPE_PDU_RELEASE_RP)) {
- //console.log('Released');
- this.associated = false;
- this.emit('released');
- } else if (pdu.is(C.ITEM_TYPE_PDU_AABORT)) {
- //console.log('Aborted');
- this.emit('aborted', pdu);
- } else if (pdu.is(C.ITEM_TYPE_PDU_PDATA)) {
- pdatas.push(pdu);
- }
- }
-
- if (pdatas) {
- var pdvs = this.pendingPDVs ? this.pendingPDVs : [];
- pdatas.forEach(function(pdata) {
- pdvs = pdvs.concat(pdata.presentationDataValueItems);
- });
- this.pendingPDVs = null;
- var i = 0,
- count = pdvs.length;
- while (i < count) {
- if (!pdvs[i].isLast) {
- var j = i + 1;
- while (j < count) {
- pdvs[i].messageStream.concat(pdvs[j].messageStream);
- if (pdvs[j++].isLast) {
- pdvs[i].isLast = true;
- break;
- }
- }
-
- if (pdvs[i].isLast) {
- this.emit('message', pdvs[i]);
- } else {
- this.pendingPDVs = [pdvs[i]];
- }
-
- i = j;
- } else {
- this.emit('message', pdvs[i++]);
- }
- }
- }
-};
-
-CSocket.prototype.receivedMessage = function(pdv) {
- var syntax = this.getSyntax(pdv.contextId),
- msg = DicomMessage.read(pdv.messageStream, pdv.type, syntax, this.options.vr);
-
- if (msg.isCommand()) {
- this.lastCommand = msg;
-
- if (msg.isResponse()) {
- var replyId = msg.respondedTo(),
- listener = this.messages[replyId].listener;
-
- if (msg.is(C.COMMAND_C_GET_RSP) || msg.is(C.COMMAND_C_MOVE_RSP)) {
- //console.log('remaining', msg.getNumOfRemainingSubOperations(), msg.getNumOfCompletedSubOperations());
- }
-
- if (msg.failure()) {
- OHIF.log.info('message failed with status ', msg.getStatus().toString(16));
- }
-
- listener.emit('response', msg);
- if (msg.isFinal()) {
- if (listener) {
- listener.emit('end', msg);
-
- if (!msg.haveData())
- delete this.messages[replyId];
- }
-
- if (msg.is(C.COMMAND_C_GET_RSP)) {
- if (!msg.getNumOfRemainingSubOperations()) {
- if (this.lastGets && this.lastGets.length > 0) this.lastGets.shift();
- }
- }
- }
- } else {
- /*if (msg.is(0x01)) {
- console.log('ae title ', msg.getValue(0x00001031))
- }*/
- }
-
- } else {
- if (!this.lastCommand) {
- throw 'Only dataset?';
- } else if (!this.lastCommand.haveData()) {
- throw "Last command didn't indicate presence of data";
- }
-
- if (this.lastCommand.isResponse()) {
- var replyId = this.lastCommand.respondedTo();
- if (this.messages[replyId].listener) {
- var flag = this.lastCommand.failure() ? true : false;
-
- this.messages[replyId].listener.emit('result', msg, flag);
-
- if (this.lastCommand.failure()) {
- delete this.messages[replyId];
- }
- }
- } else {
- if (this.lastCommand.is(C.COMMAND_C_STORE_RQ)) {
- var moveMessageId = this.lastCommand.getMoveMessageId(),
- useId = moveMessageId;
- if (!moveMessageId) {
- //!! Going to deprecate now
- //kinda hacky but we know this c-store is came from a c-get
- if (this.lastGets.length > 0) {
- useId = this.lastGets[0];
- } else {
- throw 'Where does this c-store came from?';
- }
- } else{
- OHIF.log.info('move ', moveMessageId);
- }
-
- //this.storeResponse(useId, msg);
- }
- }
- }
-};
-
-CSocket.prototype.wrapToPData = function(message, context) {
- var useContext = message.contextUID ? message.contextUID : context;
- var ctx = this.getContextByUID(useContext);
-
- var pdata = new PDataTF(),
- pdv = new PresentationDataValueItem(ctx.id);
- pdv.setMessage(message);
- pdata.setPresentationDataValueItems([pdv]);
- return pdata;
-};
-
-CSocket.prototype.sendMessage = function(context, command, dataset) {
- var nContext = this.getContextByUID(context),
- syntax = nContext.transferSyntax,
- cid = nContext.id,
- messageId = this.newMessageId(),
- msgData = {};
-
- msgData.listener = new Envelope(command);
-
- var o = this;
- msgData.listener.on('cancel', function() {
- var cancelMessage = null;
- if (this.command.is(C.COMMAND_C_FIND_RQ) || this.command.is(C.COMMAND_C_MOVE_RQ)) {
- cancelMessage = new CCancelRQ();
-
- cancelMessage.setReplyMessageId(this.command.messageId);
- cancelMessage.setSyntax(C.IMPLICIT_LITTLE_ENDIAN);
-
- o.send(o.wrapToPData(cancelMessage, this.command.contextUID));
- }
- });
-
- command.setSyntax(C.IMPLICIT_LITTLE_ENDIAN);
- command.setContextId(context);
- command.setMessageId(messageId);
- if (dataset) {
- command.setDataSetPresent(C.DATA_SET_PRESENT);
- }
-
- this.lastSent = command;
- if (command.is(C.COMMAND_C_GET_RQ)) {
- this.lastGets.push(messageId);
- }
-
- var pdata = this.wrapToPData(command);
-
- msgData.command = command;
- this.messages[messageId] = msgData;
- OHIF.log.info('Sending command ' + command.typeString());
- this.send(pdata);
- if (dataset && typeof dataset === 'object') {
- dataset.setSyntax(syntax);
- var dsData = new PDataTF(),
- dPdv = new PresentationDataValueItem(cid);
-
- dPdv.setMessage(dataset);
- dsData.setPresentationDataValueItems([dPdv]);
- this.send(dsData);
- }
-
- return msgData.listener;
-};
-
-CSocket.prototype.sendPData = function(pdv, after) {
- var pdata = new PDataTF();
- pdata.setPresentationDataValueItems([pdv]);
- //console.log('Sending pdata');
- //console.log(pdata.totalLength());
- this.send(pdata, after);
-};
-
-CSocket.prototype.verify = function() {
- this.setPresentationContexts([C.SOP_VERIFICATION]);
- this.startAssociationRequest(function() {
- //associated, we can release now
- this.release();
- });
-};
-
-CSocket.prototype.wrapMessage = function(data) {
- if (data) {
- var datasetMessage = new DataSetMessage();
- datasetMessage.setElements(data);
- return datasetMessage;
- } else {
- return data;
- }
-};
-
-CSocket.prototype.find = function(params, options) {
- return this.sendMessage(options.context, new CFindRQ(), this.wrapMessage(params));
-};
-
-CSocket.prototype.move = function(destination, params, options) {
- var moveMessage = new CMoveRQ();
- moveMessage.setDestination(destination);
-
- return this.sendMessage(options.context, moveMessage, this.wrapMessage(params));
-};
-
-CSocket.prototype.storeInstance = function(sopClassUID, sopInstanceUID, options) {
- var storeMessage = new CStoreRQ();
- storeMessage.setAffectedSOPInstanceUID(sopInstanceUID);
- storeMessage.setAffectedSOPClassUID(sopClassUID);
-
- return this.sendMessage(sopClassUID, storeMessage, true);
-};
-
-CSocket.prototype.moveInstances = function(destination, params, options) {
- var sendParams = Object.assign({
- 0x00080052: C.QUERY_RETRIEVE_LEVEL_IMAGE,
- }, params);
- options = Object.assign({
- context: C.SOP_STUDY_ROOT_MOVE
- }, options);
-
- return this.move(destination, sendParams, options);
-};
-
-CSocket.prototype.findPatients = function(params, options) {
- var sendParams = Object.assign({
- 0x00080052: C.QUERY_RETRIEVE_LEVEL_PATIENT,
- 0x00100010: '',
- 0x00100020: '',
- 0x00100030: '',
- 0x00100040: '',
- }, params);
- options = Object.assign({
- context: C.SOP_PATIENT_ROOT_FIND
- }, options);
-
- return this.find(sendParams, options);
-};
-
-CSocket.prototype.findStudies = function(params, options) {
- var sendParams = Object.assign({
- 0x00080052: C.QUERY_RETRIEVE_LEVEL_STUDY,
- 0x00080020: '',
- 0x00100010: '',
- 0x00080061: '',
- 0x0020000D: ''
- }, params);
- options = Object.assign({
- context: C.SOP_STUDY_ROOT_FIND
- }, options);
-
- return this.find(sendParams, options);
-};
-
-CSocket.prototype.findSeries = function(params, options) {
- var sendParams = Object.assign({
- 0x00080052: C.QUERY_RETRIEVE_LEVEL_SERIES,
- 0x00080020: '',
- 0x0020000E: '',
- 0x0008103E: '',
- 0x0020000D: ''
- }, params);
- options = Object.assign({
- context: C.SOP_STUDY_ROOT_FIND
- }, options);
-
- return this.find(sendParams, options);
-};
-
-CSocket.prototype.findInstances = function(params, options) {
- var sendParams = Object.assign({
- 0x00080052: C.QUERY_RETRIEVE_LEVEL_IMAGE,
- 0x00080020: '',
- 0x0020000E: '',
- 0x0008103E: '',
- 0x0020000D: ''
- }, params);
- options = Object.assign({
- context: C.SOP_STUDY_ROOT_FIND
- }, options);
-
- return this.find(sendParams, options);
-};
diff --git a/Packages/ohif-dicom-services/server/DIMSE/Connection.js b/Packages/ohif-dicom-services/server/DIMSE/Connection.js
deleted file mode 100755
index 865c6eb4e..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/Connection.js
+++ /dev/null
@@ -1,291 +0,0 @@
-import { _ } from 'meteor/underscore';
-import { OHIF } from 'meteor/ohif:core';
-
-// Uses NodeJS 'net'
-// https://nodejs.org/api/net.html
-var net = Npm.require('net');
-var Socket = net.Socket;
-
-Connection = function(options) {
- EventEmitter.call(this);
- this.options = Object.assign({
- maxPackageSize: C.DEFAULT_MAX_PACKAGE_SIZE,
- idle: false,
- reconnect: true,
- vr: {
- split: true
- }
- }, options);
-
- this.reset();
-};
-
-util.inherits(Connection, EventEmitter);
-
-var StoreHandle = function() {
- EventEmitter.call(this);
-};
-
-util.inherits(StoreHandle, EventEmitter);
-
-Connection.prototype.reset = function() {
- this.defaultPeer = null;
- this.defaultServer = null;
-
- _.each(this.peers, peerInfo => {
- _.each(peerInfo.sockets, socket => socket.emit('close'));
- });
-
- this.peers = {};
-};
-
-Connection.prototype.addPeer = function(options) {
- if (!options.aeTitle || !options.host || !options.port) {
- return false;
- }
-
- var peer = {
- host: options.host,
- port: options.port,
- sockets: {}
- };
-
- this.peers[options.aeTitle] = peer;
- if (options.default) {
- if (options.server) {
- this.defaultServer = options.aeTitle;
- } else {
- this.defaultPeer = options.aeTitle;
- }
- }
-
- if (options.server) {
- //start listening
- peer.server = net.createServer();
- peer.server.listen(options.port, options.host, function() {
- OHIF.log.info('listening on', this.address());
- });
- peer.server.on('error', function(err) {
- OHIF.log.info('server error', err);
- });
- peer.server.on('connection', nativeSocket => {
- //incoming connections
- var socket = new CSocket(nativeSocket, this.options);
- this.addSocket(options.aeTitle, socket);
-
- //close server on close socket
- socket.on('close', function() {
- peer.server.close();
- });
- });
- }
-};
-
-Connection.prototype.selectPeer = function(aeTitle) {
- if (!aeTitle || !this.peers[aeTitle]) {
- throw 'No such peer';
- }
-
- return this.peers[aeTitle];
-};
-
-Connection.prototype._sendFile = function(socket, sHandle, file, maxSend, metaLength, list) {
- var fileNameText = typeof file.file === 'string' ? file.file : 'buffer';
- OHIF.log.info(`Sending file ${fileNameText}`);
- var useContext = socket.getContextByUID(file.context);
- var self = this;
-
- PDU.generatePDatas(useContext.id, file.file, maxSend, null, metaLength, function(err, handle) {
- if (err) {
- OHIF.log.info('Error while sending file');
- return;
- }
-
- var processNext = function() {
- var next = list.shift();
- if (next) {
- self._sendFile(socket, sHandle, next, maxSend, metaLength, list);
- } else {
- socket.release();
- }
- };
-
- var store = socket.storeInstance(useContext.abstractSyntax, file.uid);
- handle.on('pdv', function(pdv) {
- socket.sendPData(pdv);
- });
- handle.on('error', function(err) {
- sHandle.emit('file', err, fileNameText);
- processNext();
- });
- store.on('response', function(msg) {
- var statusText = msg.getStatus().toString(16);
- OHIF.log.info('STORE reponse with status', statusText);
- var error = null;
- if (msg.failure()) {
- error = new Error(statusText);
- }
-
- sHandle.emit('file', error, fileNameText);
- processNext();
- });
- });
-};
-
-Connection.prototype.storeInstances = function(fileList) {
- var contexts = {};
- var read = 0;
- var length = fileList.length;
- var toSend = [];
- var self = this;
- var handle = new StoreHandle();
- var lastProcessedMetaLength;
-
- fileList.forEach(function(bufferOrFile) {
- var fileNameText = typeof bufferOrFile === 'string' ? bufferOrFile : 'buffer';
- DicomMessage.readMetaHeader(bufferOrFile, function(err, metaMessage, metaLength) {
- read++;
- if (err) {
- handle.emit('file', err, fileNameText);
- if (read === length && toSend.length > 0 && lastProcessedMetaLength) {
- sendProcessedFiles(self, contexts, toSend, handle, lastProcessedMetaLength);
- }
-
- return;
- }
-
- OHIF.log.info(`Dicom file ${(typeof bufferOrFile === 'string' ? bufferOrFile : 'buffer')} found`);
- lastProcessedMetaLength = metaLength;
- var syntax = metaMessage.getValue(0x00020010);
- var sopClassUID = metaMessage.getValue(0x00020002);
- var instanceUID = metaMessage.getValue(0x00020003);
-
- if (!contexts[sopClassUID]) {
- contexts[sopClassUID] = [];
- }
-
- if (syntax && contexts[sopClassUID].indexOf(syntax) === -1) {
- contexts[sopClassUID].push(syntax);
- }
-
- toSend.push({
- file: bufferOrFile,
- context: sopClassUID,
- uid: instanceUID
- });
-
- if (read === length) {
- sendProcessedFiles(self, contexts, toSend, handle, metaLength);
- }
- });
- });
- return handle;
-};
-
-// Starts to send dcm files
-sendProcessedFiles = function(self, contexts, toSend, handle, metaLength) {
- var useContexts = [];
- _.each(contexts, (useSyntaxes, context) => {
- if (useSyntaxes.length > 0) {
- useContexts.push({
- context: context,
- syntaxes: useSyntaxes
- });
- } else {
- throw 'No syntax specified for context ' + context;
- }
- });
-
- self.associate({
- contexts: useContexts
- }, function(ac) {
- var maxSend = ac.getMaxSize();
- var next = toSend.shift();
- self._sendFile(this, handle, next, maxSend, metaLength, toSend);
-
- });
-};
-
-Connection.prototype.storeResponse = function(messageId, msg) {
- var rq = this.messages[messageId];
-
- if (rq.listener[2]) {
- var status = rq.listener[2].call(this, msg);
- if (status !== undefined && status !== null && rq.command.store) {
- //store ok, ready to send c-store-rsp
- var storeSr = rq.command.store;
- var replyMessage = storeSr.replyWith(status);
- replyMessage.setAffectedSOPInstanceUID(this.lastCommand.getSOPInstanceUID());
- replyMessage.setReplyMessageId(this.lastCommand.messageId);
- this.sendMessage(replyMessage, null, null, storeSr);
- } else {
- throw 'Missing store status';
- }
- }
-};
-
-Connection.prototype.allClosed = function() {
- var allClosed = true;
- for (var i in this.peers) {
- if (Object.keys(peers[i].sockets).length > 0) {
- allClosed = false;
- break;
- }
- }
-
- return allClosed;
-};
-
-Connection.prototype.addSocket = function(hostAE, socket) {
- var peerInfo = this.selectPeer(hostAE);
-
- peerInfo.sockets[socket.id] = socket;
-
- socket.on('close', function() {
- if (peerInfo.sockets[this.id]) {
- delete peerInfo.sockets[this.id];
- }
- });
-};
-
-Connection.prototype.associate = function(options, callback) {
- const self = this;
- var hostAE = options.hostAE ? options.hostAE : this.defaultPeer;
- var sourceAE = options.sourceAE ? options.sourceAE : this.defaultServer;
-
- if (!hostAE || !sourceAE) {
- throw 'Peers not provided or no defaults in settings';
- }
-
- var peerInfo = this.selectPeer(hostAE);
- var nativeSocket = new Socket();
-
- var socket = new CSocket(nativeSocket, this.options);
-
- if (callback) {
- socket.once('associated', callback);
- }
-
- OHIF.log.info('Starting Connection...');
-
- socket.setCalledAe(hostAE);
- socket.setCallingAE(sourceAE);
-
- nativeSocket.connect({
- host: peerInfo.host,
- port: peerInfo.port
- }, () => {
- //connected
- this.addSocket(hostAE, socket);
-
- if (options.contexts) {
- socket.setPresentationContexts(options.contexts);
- } else {
- throw new Meteor.Error('Contexts must be specified');
- }
-
- socket.associate();
- });
-
- return socket;
-};
diff --git a/Packages/ohif-dicom-services/server/DIMSE/DIMSE.js b/Packages/ohif-dicom-services/server/DIMSE/DIMSE.js
deleted file mode 100755
index e299f8f0f..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/DIMSE.js
+++ /dev/null
@@ -1,368 +0,0 @@
-import { OHIF } from 'meteor/ohif:core';
-
-var Future = Npm.require('fibers/future');
-
-DIMSE = {
- connection: new Connection({
- vr: {
- split: false
- }
- })
-};
-
-var conn = DIMSE.connection;
-
-var getInstanceRetrievalParams = function(studyInstanceUID, seriesInstanceUID) {
- return {
- 0x0020000D: studyInstanceUID ? studyInstanceUID : '',
- 0x0020000E: (studyInstanceUID && seriesInstanceUID) ? seriesInstanceUID : '',
- 0x00080005: '', // specificCharacterSet
- 0x00080020: '', // studyDate
- 0x00080030: '', // studyDescription
- 0x00080090: '', // referringPhysicianName
- 0x00100010: '', // patientName
- 0x00100020: '', // patientId
- 0x00100030: '', // patientBirthDate
- 0x00100040: '', // patientSex
- 0x00200010: '', // studyId
- 0x0008103E: '', // seriesDescription
- 0x00200011: '', // seriesNumber
- 0x00080080: '', // institutionName
- 0x00080016: '', // sopClassUid
- 0x00080018: '', // sopInstanceUid
- 0x00080060: '', // modality
- 0x00200013: '', // instanceNumber
- 0x00280010: '', // rows
- 0x00280011: '', // columns
- 0x00280100: '', // bitsAllocated
- 0x00280101: '', // bitsStored
- 0x00280102: '', // highBit
- 0x00280103: '', // pixelRepresentation
- 0x00280004: '', // photometricInterpretation
- 0x0008002A: '', // acquisitionDatetime
- 0x00280008: '', // numFrames
- //0x00280009: '', // frameIncrementPointer // This appears to be breaking Orthanc DIMSE connections
- 0x00181063: '', // frameTime
- 0x00181065: '', // frameTimeVector
- 0x00281052: '', // rescaleIntercept
- 0x00281053: '', // rescaleSlope
- 0x00280002: '', // samplesPerPixel
- 0x00180050: '', // sliceThickness
- 0x00201041: '', // sliceLocation
- //0x00189327: '', // tablePosition // This appears to be breaking Orthanc DIMSE connections
- 0x00281050: '', // windowCenter
- 0x00281051: '', // windowWidth
- 0x00280030: '', // pixelSpacing
- 0x00200062: '', // laterality
- 0x00185101: '', // viewPosition
- 0x00080008: '', // imageType
- 0x00200032: '', // imagePositionPatient
- 0x00200037: '', // imageOrientationPatient
- 0x00200052: '', // frameOfReferenceUID
- 0x00282110: '', // lossyImageCompression
- 0x00282112: '', // lossyImageCompressionRatio
- 0x00282114: '', // lossyImageCompressionMethod,
- 0x00180088: '' // spacingBetweenSlices
-
- // Orthanc has a bug here so we can't retrieve sequences at the moment
- // https://groups.google.com/forum/#!topic/orthanc-users/ghKJfvtnK8Y
- //0x00282111: '', // derivationDescription
- //0x00082112: '' // sourceImageSequence
- };
-};
-
-DIMSE.associate = function(contexts, callback, options) {
- var defaults = {
- contexts: contexts
- };
- options = Object.assign(defaults, options);
-
- OHIF.log.info('Associating...');
-
- const socket = conn.associate(options, function(pdu) {
- // associated
- OHIF.log.info('==Associated');
- callback.call(this, null, pdu);
- });
-
- socket.on('error', function (error) {
- callback(error, null);
- });
-
- socket.on('timeout', function (error) {
- callback(error, null);
- });
-};
-
-DIMSE.retrievePatients = function(params, options) {
- //var start = new Date();
- var future = new Future;
- DIMSE.associate([C.SOP_PATIENT_ROOT_FIND], function(error, pdu) {
- if (error) {
- OHIF.log.error('Could not retrieve patients');
- OHIF.log.trace();
-
- return future.return([]);
- }
-
- var defaultParams = {
- 0x00100010: '',
- 0x00100020: '',
- 0x00100030: '',
- 0x00100040: '',
- 0x00101010: '',
- 0x00101040: ''
- };
-
- var result = this.findPatients(Object.assign(defaultParams, params)),
- o = this;
-
- var patients = [];
- result.on('result', function(msg) {
- patients.push(msg);
- });
-
- result.on('end', function() {
- o.release();
- });
-
- this.on('close', function() {
- //var time = new Date() - start;console.log(time + 'ms taken');
- future.return(patients);
- });
- }, options);
- return future.wait();
-};
-
-DIMSE.retrieveStudies = function(params, options) {
- //var start = new Date();
- var future = new Future;
- DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(error, pdu) {
- if (error) {
- OHIF.log.error('Could not retrieve studies');
- OHIF.log.trace();
-
- return future.throw(error);
- }
-
- var defaultParams = {
- 0x0020000D: '',
- 0x00080060: '',
- 0x00080005: '',
- 0x00080020: '',
- 0x00080030: '',
- 0x00080090: '',
- 0x00100010: '',
- 0x00100020: '',
- 0x00200010: '',
- 0x00100030: ''
- };
-
- var result = this.findStudies(Object.assign(defaultParams, params)),
- o = this;
-
- var studies = [];
- result.on('result', function(msg) {
- studies.push(msg);
- });
-
- result.on('end', function() {
- o.release();
- });
-
- this.on('close', function() {
- //var time = new Date() - start;console.log(time + 'ms taken');
- future.return(studies);
- });
- }, options);
- return future.wait();
-};
-
-DIMSE._retrieveInstancesBySeries = function(conn, series, studyInstanceUID, callback, params) {
- var aSeries = series.shift(),
- seriesInstanceUID = aSeries.getValue(0x0020000E),
- defaultParams = getInstanceRetrievalParams(studyInstanceUID, seriesInstanceUID);
-
- var result = conn.findInstances(Object.assign(defaultParams, params)),
- instances = [];
-
- result.on('result', function(msg) {
- instances.push(msg);
- });
- result.on('end', function() {
- if (series.length > 0) {
- callback(instances, false);
- DIMSE._retrieveInstancesBySeries(conn, series, studyInstanceUID, callback, params);
- } else {
- callback(instances, true);
- }
- });
-};
-
-DIMSE.retrieveInstancesByStudyOnlyMulti = function(studyInstanceUID, params, options) {
- if (!studyInstanceUID) {
- return [];
- }
-
- var series = DIMSE.retrieveSeries(studyInstanceUID, params, options),
- instances = [];
- series.forEach(function(seriesData) {
- var seriesInstanceUID = seriesData.getValue(0x0020000E);
-
- var relatedInstances = DIMSE.retrieveInstances(studyInstanceUID, seriesInstanceUID, params, options);
- instances = instances.concat(relatedInstances);
- });
- return instances;
-};
-
-DIMSE.retrieveInstancesByStudyOnly = function(studyInstanceUID, params, options) {
- if (!studyInstanceUID) {
- return [];
- }
-
- var future = new Future;
- DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(error, pdu) {
- if (error) {
- OHIF.log.error('Could not retrieve Instances By Study');
- OHIF.log.trace();
-
- return future.throw(error);
- }
-
- var defaultParams = {
- 0x0020000D: studyInstanceUID,
- 0x00080005: '',
- 0x00080020: '',
- 0x00080030: '',
- 0x00080090: '',
- 0x00100010: '',
- 0x00100020: '',
- 0x00200010: '',
- 0x0008103E: '',
- 0x0020000E: '',
- 0x00200011: ''
- };
- var result = this.findSeries(Object.assign(defaultParams, params));
- var series = [];
- var conn = this;
- var allInstances = [];
-
- result.on('result', function(msg) {
- series.push(msg);
- });
- result.on('end', function() {
- if (series.length > 0) {
- DIMSE._retrieveInstancesBySeries(conn, series, studyInstanceUID, function(relatedInstances, isEnd) {
- allInstances = allInstances.concat(relatedInstances);
- if (isEnd) {
- conn.release();
- }
- });
- } else {
- conn.release();
- }
- });
- conn.on('close', function() {
- future.return(allInstances);
- });
- });
- return future.wait();
-};
-
-DIMSE.retrieveSeries = function(studyInstanceUID, params, options) {
- var future = new Future;
- DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(error, pdu) {
- if (error) {
- OHIF.log.error('Could not retrieve series');
- OHIF.log.trace();
-
- return future.return([]);
- }
-
- var defaultParams = {
- 0x0020000D: studyInstanceUID ? studyInstanceUID : '',
- 0x00080005: '',
- 0x00080020: '',
- 0x00080030: '',
- 0x00080090: '',
- 0x00100010: '',
- 0x00100020: '',
- 0x00200010: '',
- 0x0008103E: '',
- 0x0020000E: '',
- 0x00200011: ''
- };
-
- var result = this.findSeries(Object.assign(defaultParams, params)),
- o = this;
-
- var series = [];
- result.on('result', function(msg) {
- series.push(msg);
- });
-
- result.on('end', function() {
- o.release();
- });
-
- this.on('close', function() {
- future.return(series);
- });
- }, options);
- return future.wait();
-};
-
-DIMSE.retrieveInstances = function(studyInstanceUID, seriesInstanceUID, params, options) {
- var future = new Future;
- DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(error, pdu) {
- if (error) {
- OHIF.log.error('Could not retrieve instances');
- OHIF.log.trace();
-
- return future.throw(error);
- }
-
- var defaultParams = getInstanceRetrievalParams(studyInstanceUID, seriesInstanceUID);
- var result = this.findInstances(Object.assign(defaultParams, params)),
- o = this;
-
- var instances = [];
- result.on('result', function(msg) {
- instances.push(msg);
- });
-
- result.on('end', function() {
- o.release();
- });
-
- this.on('close', function() {
- future.return(instances);
- });
- }, options);
- return future.wait();
-};
-
-DIMSE.storeInstances = function(fileList, callback) {
- var handle = conn.storeInstances(fileList);
- handle.on('file', function(err, file) {
- callback(err, file);
- });
-};
-
-DIMSE.moveInstances = function(studyInstanceUID, seriesInstanceUID, sopInstanceUID, sopClassUID, params) {
- DIMSE.associate([C.SOP_STUDY_ROOT_MOVE, sopClassUID], function(error) {
- if (error) {
- OHIF.log.error('Could not move instances');
- OHIF.log.trace();
-
- return;
- }
-
- var defaultParams = {
- 0x0020000D: studyInstanceUID ? studyInstanceUID : '',
- 0x0020000E: seriesInstanceUID ? seriesInstanceUID : '',
- 0x00080018: sopInstanceUID ? sopInstanceUID : ''
- };
- this.moveInstances('OHIFDCM', Object.assign(defaultParams, params));
- });
-};
diff --git a/Packages/ohif-dicom-services/server/DIMSE/Data.js b/Packages/ohif-dicom-services/server/DIMSE/Data.js
deleted file mode 100755
index 68fc3bec5..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/Data.js
+++ /dev/null
@@ -1,1050 +0,0 @@
-function paddingLeft(paddingValue, string) {
- return String(paddingValue + string).slice(-paddingValue.length);
-}
-
-function rtrim(str) {
- return str.replace(/\s*$/g, '');
-}
-
-function ltrim(str) {
- return str.replace(/^\s*/g, '');
-}
-
-function fieldsLength(fields) {
- var length = 0;
- fields.forEach(function(field) {
- length += field.length();
- });
- return length;
-}
-
-Tag = function(value) {
- this.value = value;
-};
-
-Tag.prototype.toString = function() {
- return '(' + paddingLeft('0000', this.group().toString(16)) + ',' +
- paddingLeft('0000', this.element().toString(16)) + ')';
-};
-
-Tag.prototype.is = function(t) {
- return this.value === t;
-};
-
-Tag.prototype.group = function() {
- return this.value >>> 16;
-};
-
-Tag.prototype.element = function() {
- return this.value & 0xffff;
-};
-
-Tag.prototype.isPixelDataTag = function() {
- return this.is(0x7fe00010);
-}
-
-tagFromNumbers = function(group, element) {
- return new Tag(((group << 16) | element) >>> 0);
-};
-
-function readTag(stream) {
- var group = stream.read(C.TYPE_UINT16),
- element = stream.read(C.TYPE_UINT16);
-
- return tagFromNumbers(group, element);
-}
-
-parseElements = function(stream, syntax) {
- var pairs = {};
- stream.reset();
- while (!stream.end()) {
- var elem = new DataElement();
- elem.setSyntax(syntax);
- elem.readBytes(stream);
- pairs[elem.tag.value] = elem;
- }
-
- return pairs;
-};
-
-ValueRepresentation = function(type) {
- this.type = type;
- this.multi = false;
-};
-
-ValueRepresentation.prototype.read = function(stream, length, syntax) {
- if (this.fixed && this.maxLength) {
- if (!length) {
- return this.defaultValue;
- }
-
- if (this.maxLength !== length) {
- console.log('Invalid length for fixed length tag, vr ' + this.type + ', length ' + this.maxLength + ' !== ' + length);
- }
- }
-
- return this.readBytes(stream, length, syntax);
-};
-
-ValueRepresentation.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_ASCII, length);
-};
-
-ValueRepresentation.prototype.readNullPaddedString = function(stream, length) {
- if (!length) {
- return '';
- }
-
- var str = stream.read(C.TYPE_ASCII, length - 1);
- if (stream.read(C.TYPE_UINT8) !== 0) {
- stream.increment(-1);
- str += stream.read(C.TYPE_ASCII, 1);
- }
-
- return str;
-};
-
-ValueRepresentation.prototype.getFields = function(fields) {
- var valid = true;
- if (this.checkLength) {
- valid = this.checkLength(fields);
- } else if (this.maxCharLength) {
- var check = this.maxCharLength,
- length = 0;
- fields.forEach(function(field) {
- if (typeof field.value === 'string')
- length += field.value.length;
- });
- valid = length <= check;
- } else if (this.maxLength) {
- var check = this.maxLength,
- length = fieldsLength(fields);
- valid = length <= check;
- }
-
- if (!valid) {
- throw 'Value exceeds max length';
- }
-
- //check for odd
- var length = fieldsLength(fields);
- if (length & 1) {
- fields.push(new HexField(this.padByte));
- }
-
- for (var i = 0;i < fields.length;i++) {
- if (fields[i].isNumeric() && (fields[i].value === '' || fields[i].value === null)) {
- fields[i] = new StringField('');
- }
- }
-
- return fields;
-};
-
-ApplicationEntity = function() {
- ValueRepresentation.call(this, 'AE');
- this.maxLength = 16;
- this.padByte = '20';
-};
-
-util.inherits(ApplicationEntity, ValueRepresentation);
-
-ApplicationEntity.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_ASCII, length).trim();
-};
-
-ApplicationEntity.prototype.getFields = function(value) {
- return ApplicationEntity.super_.prototype.getFields.call(this, [new FilledField(value, 16)]);
-};
-
-CodeString = function() {
- ValueRepresentation.call(this, 'CS');
- this.maxLength = 16;
- this.padByte = '20';
-};
-
-util.inherits(CodeString, ValueRepresentation);
-
-CodeString.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return str.trim();
-};
-
-CodeString.prototype.getFields = function(value) {
- return CodeString.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-AgeString = function() {
- ValueRepresentation.call(this, 'AS');
- this.maxLength = 4;
- this.padByte = '20';
- this.fixed = true;
- this.defaultValue = '';
-};
-
-util.inherits(AgeString, ValueRepresentation);
-
-AgeString.prototype.getFields = function(value) {
- var str = '';
- if (value) {
- if (value.days) {
- str = paddingLeft('000' + value.days) + 'D';
- } else if (value.weeks) {
- str = paddingLeft('000' + value.weeks) + 'W';
- } else if (value.months) {
- str = paddingLeft('000' + value.months) + 'M';
- } else if (value.years) {
- str = paddingLeft('000' + value.years) + 'Y';
- } else {
- throw 'Invalid age string';
- }
- }
-
- return AgeString.super_.prototype.getFields.call(this, [new StringField(str)]);
-};
-
-AttributeTag = function() {
- ValueRepresentation.call(this, 'AT');
- this.maxLength = 4;
- this.padByte = '00';
- this.fixed = true;
-};
-
-util.inherits(AttributeTag, ValueRepresentation);
-
-AttributeTag.prototype.readBytes = function(stream, length) {
- var group = stream.read(C.TYPE_UINT16),
- element = stream.read(C.TYPE_UINT16);
- return tagFromNumbers(group, element);
-};
-
-AttributeTag.prototype.getFields = function(value) {
- if (!value)
- return AttributeTag.super_.prototype.getFields.call(this, [new StringField("")]);
-
- return AttributeTag.super_.prototype.getFields.call(this, [new UInt16Field(value.group()), new UInt16Field(value.element())]);
-};
-
-DateValue = function() {
- ValueRepresentation.call(this, 'DA');
- this.maxLength = 8;
- this.padByte = '20';
- this.fixed = true;
- this.defaultValue = '';
-};
-
-util.inherits(DateValue, ValueRepresentation);
-
-DateValue.prototype.readBytes = function(stream, length) {
- var datestr = stream.read(C.TYPE_ASCII, length);
-
- var year = parseInt(datestr.substring(0, 4)),
- month = parseInt(datestr.substring(4, 6)),
- day = parseInt(datestr.substring(6, 8));
-
- return datestr;//new Date(year, month, day);
-};
-
-DateValue.prototype.getFields = function(date) {
- var str = null;
- if (typeof date === 'object') {
- var year = date.getFullYear(),
- month = paddingLeft('00', date.getMonth()),
- day = paddingLeft('00', date.getDate());
- str = year + month + day;
- } else if (date && date.length > 0) {
- this.maxLength = 18;
- this.fixed = false;
- str = date;
- } else {
- str = '';
- }
-
- return DateValue.super_.prototype.getFields.call(this, [new StringField(str)]);
-};
-
-DecimalString = function() {
- ValueRepresentation.call(this, 'DS');
- this.maxLength = 16;
- this.padByte = '20';
-};
-
-util.inherits(DecimalString, ValueRepresentation);
-
-DecimalString.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return str.trim();
-};
-
-DecimalString.prototype.getFields = function(value) {
- var f = parseFloat(value);
- return DecimalString.super_.prototype.getFields.call(this, [new StringField(isNaN(f) ? '' : f.toExponential())]);
-};
-
-DateTime = function() {
- ValueRepresentation.call(this, 'DT');
- this.maxLength = 26;
- this.padByte = '20';
-};
-
-util.inherits(DateTime, ValueRepresentation);
-
-DateTime.prototype.getFields = function(value) {
- if (!value)
- return DateTime.super_.prototype.getFields.call(this, [new StringField("")]);
-
- var year = value.getUTCFullYear(),
- month = paddingLeft('00', value.getUTCMonth()),
- day = paddingLeft('00', value.getUTCDate()),
- hour = paddingLeft('00', value.getUTCHours()),
- minute = paddingLeft('00', value.getUTCMinutes()),
- second = paddingLeft('00', value.getUTCSeconds()),
- millisecond = paddingLeft('000', value.getUTCMilliseconds());
-
- return DateTime.super_.prototype.getFields.call(this, [new StringField(year + month + day + hour + minute + second + '.' + millisecond + '+0000')]);
-};
-
-FloatingPointSingle = function() {
- ValueRepresentation.call(this, 'FL');
- this.maxLength = 4;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0.0;
-};
-
-util.inherits(FloatingPointSingle, ValueRepresentation);
-
-FloatingPointSingle.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_FLOAT);
-};
-
-FloatingPointSingle.prototype.getFields = function(value) {
- return FloatingPointSingle.super_.prototype.getFields.call(this, [new FloatField(value)]);
-};
-
-FloatingPointDouble = function() {
- ValueRepresentation.call(this, 'FD');
- this.maxLength = 8;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0.0;
-};
-
-util.inherits(FloatingPointDouble, ValueRepresentation);
-
-FloatingPointDouble.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_DOUBLE);
-};
-
-FloatingPointDouble.prototype.getFields = function(value) {
- return FloatingPointDouble.super_.prototype.getFields.call(this, [new DoubleField(value)]);
-};
-
-IntegerString = function() {
- ValueRepresentation.call(this, 'IS');
- this.maxLength = 12;
- this.padByte = '20';
-};
-
-util.inherits(IntegerString, ValueRepresentation);
-
-IntegerString.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return str.trim();
-};
-
-IntegerString.prototype.getFields = function(value) {
- return IntegerString.super_.prototype.getFields.call(this, [new StringField(value.toString())]);
-};
-
-LongString = function() {
- ValueRepresentation.call(this, 'LO');
- this.maxCharLength = 64;
- this.padByte = '20';
-};
-
-util.inherits(LongString, ValueRepresentation);
-
-LongString.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return str.trim();
-};
-
-LongString.prototype.getFields = function(value) {
- return LongString.super_.prototype.getFields.call(this, [new StringField(value ? value : '')]);
-};
-
-LongText = function() {
- ValueRepresentation.call(this, 'LT');
- this.maxCharLength = 10240;
- this.padByte = '20';
-};
-
-util.inherits(LongText, ValueRepresentation);
-
-LongText.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return rtrim(str);
-};
-
-LongText.prototype.getFields = function(value) {
- return LongText.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-PersonName = function() {
- ValueRepresentation.call(this, 'PN');
- this.maxLength = null;
- this.padByte = '20';
-};
-
-util.inherits(PersonName, ValueRepresentation);
-
-PersonName.prototype.checkLength = function(field) {
- var cmps = field[0].value.split(/\^/);
- for (var i in cmps) {
- var cmp = cmps[i];
- if (cmp.length > 64) return false;
- }
-
- return true;
-};
-
-PersonName.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return rtrim(str);
-};
-
-PersonName.prototype.getFields = function(value) {
- var str = null;
- if (typeof value === 'string') {
- str = value;
- } else if (value) {
- var fName = value.family || '',
- gName = value.given || '',
- middle = value.middle || '',
- prefix = value.prefix || '',
- suffix = value.suffix || '';
-
- str = [fName, gName, middle, prefix, suffix].join('^');
- } else str = '';
-
- return PersonName.super_.prototype.getFields.call(this, [new StringField(str)]);
-};
-
-ShortString = function() {
- ValueRepresentation.call(this, 'SH');
- this.maxCharLength = 16;
- this.padByte = '20';
-};
-
-util.inherits(ShortString, ValueRepresentation);
-
-ShortString.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return str.trim();
-};
-
-ShortString.prototype.getFields = function(value) {
- return ShortString.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-SignedLong = function() {
- ValueRepresentation.call(this, 'SL');
- this.maxLength = 4;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0;
-};
-
-util.inherits(SignedLong, ValueRepresentation);
-
-SignedLong.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_INT32);
-};
-
-SignedLong.prototype.getFields = function(value) {
- return SignedLong.super_.prototype.getFields.call(this, [new Int32Field(value)]);
-};
-
-SequenceOfItems = function() {
- ValueRepresentation.call(this, 'SQ');
- this.maxLength = null;
- this.padByte = '00';
-};
-
-util.inherits(SequenceOfItems, ValueRepresentation);
-
-SequenceOfItems.prototype.readBytes = function(stream, sqlength, syntax) {
- if (sqlength === 0x0) {
- return []; //contains no dataset
- } else {
- var undefLength = sqlength === 0xffffffff,
- elements = [],
- read = 0;
-
- while (true) {
- var tag = readTag(stream),
- length = null;
- read += 4;
-
- if (tag.is(0xfffee0dd)) {
- stream.read(C.TYPE_UINT32);
- break;
- } else if (!undefLength && (read === sqlength)) {
- break;
- } else if (tag.is(0xfffee000)) {
- length = stream.read(C.TYPE_UINT32);
- read += 4;
- var itemStream = null,
- toRead = 0,
- undef = length === 0xffffffff;
-
- if (undef) {
- var stack = 0;
- while (1) {
- var g = stream.read(C.TYPE_UINT16);
- if (g === 0xfffe) {
- var ge = stream.read(C.TYPE_UINT16);
- if (ge === 0xe00d) {
- stack--;
- if (stack < 0) {
- stream.increment(4);
- read += 8;
- break;
- } else {
- toRead += 4;
- }
- } else if (ge === 0xe000) {
- stack++;
- toRead += 4;
- } else {
- toRead += 2;
- stream.increment(-2);
- }
- } else {
- toRead += 2;
- }
- }
- } else {
- toRead = length;
- }
-
- if (toRead) {
- stream.increment(undef ? (-toRead - 8) : 0);
- itemStream = stream.more(toRead);//parseElements
- read += toRead;
- if (undef)
- stream.increment(8);
-
- elements.push(parseElements(itemStream, syntax));
- }
-
- if (!undefLength && (read === sqlength)) {
- break;
- }
- }
- }
-
- return elements;
- }
-};
-
-SequenceOfItems.prototype.getFields = function(value, syntax) {
- var fields = [];
- if (value) {
- value.forEach(function(message) {
- fields.push(new UInt16Field(0xfffe));
- fields.push(new UInt16Field(0xe000));
- fields.push(new UInt32Field(0xffffffff));
-
- message.forEach(function(element) {
- element.setSyntax(syntax);
- fields = fields.concat(element.getFields());
- });
-
- fields.push(new UInt16Field(0xfffe));
- fields.push(new UInt16Field(0xe00d));
- fields.push(new UInt32Field(0x00000000));
- });
- }
-
- fields.push(new UInt16Field(0xfffe));
- fields.push(new UInt16Field(0xe0dd));
- fields.push(new UInt32Field(0x00000000));
-
- return SequenceOfItems.super_.prototype.getFields.call(this, fields);
-};
-
-SignedShort = function() {
- ValueRepresentation.call(this, 'SS');
- this.maxLength = 2;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0;
-};
-
-util.inherits(SignedShort, ValueRepresentation);
-
-SignedShort.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_INT16);
-};
-
-SignedShort.prototype.getFields = function(value) {
- return SignedShort.super_.prototype.getFields.call(this, [new Int16Field(value)]);
-};
-
-ShortText = function() {
- ValueRepresentation.call(this, 'ST');
- this.maxCharLength = 1024;
- this.padByte = '20';
-};
-
-util.inherits(ShortText, ValueRepresentation);
-
-ShortText.prototype.readBytes = function(stream, length) {
- var str = this.readNullPaddedString(stream, length);
- return rtrim(str);
-};
-
-ShortText.prototype.getFields = function(value) {
- return ShortText.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-TimeValue = function() {
- ValueRepresentation.call(this, 'TM');
- this.maxLength = 14;
- this.padByte = '20';
-};
-
-util.inherits(TimeValue, ValueRepresentation);
-
-TimeValue.prototype.readBytes = function(stream, length) {
- return rtrim(stream.read(C.TYPE_ASCII, length));
-};
-
-TimeValue.prototype.getFields = function(date) {
- var dateStr = '';
- if (date) {
- var hour = paddingLeft('00', date.getHours()),
- minute = paddingLeft('00', date.getMinutes()),
- second = paddingLeft('00', date.getSeconds()),
- millisecond = paddingLeft('000', date.getMilliseconds());
- dateStr = hour + minute + second + '.' + millisecond;
- }
-
- return TimeValue.super_.prototype.getFields.call(this, [new StringField(dateStr)]);
-};
-
-UnlimitedCharacters = function() {
- ValueRepresentation.call(this, 'UC');
- this.maxLength = null;
- this.multi = true;
- this.padByte = '20';
-};
-
-util.inherits(UnlimitedCharacters, ValueRepresentation);
-
-UnlimitedCharacters.prototype.readBytes = function(stream, length) {
- return rtrim(stream.read(C.TYPE_ASCII, length));
-};
-
-UnlimitedCharacters.prototype.getFields = function(value) {
- return UnlimitedCharacters.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-UnlimitedText = function() {
- ValueRepresentation.call(this, 'UT');
- this.maxLength = null;
- this.padByte = '20';
-};
-
-util.inherits(UnlimitedText, ValueRepresentation);
-
-UnlimitedText.prototype.readBytes = function(stream, length) {
- return this.readNullPaddedString(stream, length);
-};
-
-UnlimitedText.prototype.getFields = function(value) {
- return UnlimitedText.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-UnsignedShort = function() {
- ValueRepresentation.call(this, 'US');
- this.maxLength = 2;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0;
-};
-
-util.inherits(UnsignedShort, ValueRepresentation);
-
-UnsignedShort.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_UINT16);
-};
-
-UnsignedShort.prototype.getFields = function(value) {
- return UnsignedShort.super_.prototype.getFields.call(this, [new UInt16Field(value)]);
-};
-
-UnsignedLong = function() {
- ValueRepresentation.call(this, 'UL');
- this.maxLength = 4;
- this.padByte = '00';
- this.fixed = true;
- this.defaultValue = 0;
-};
-
-util.inherits(UnsignedLong, ValueRepresentation);
-
-UnsignedLong.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_UINT32);
-};
-
-UnsignedLong.prototype.getFields = function(value) {
- return UnsignedLong.super_.prototype.getFields.call(this, [new UInt32Field(value)]);
-};
-
-UniqueIdentifier = function() {
- ValueRepresentation.call(this, 'UI');
- this.maxLength = 64;
- this.padByte = '00';
-};
-
-util.inherits(UniqueIdentifier, ValueRepresentation);
-
-UniqueIdentifier.prototype.readBytes = function(stream, length) {
- return this.readNullPaddedString(stream, length);
-};
-
-UniqueIdentifier.prototype.getFields = function(value) {
- return UniqueIdentifier.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-UniversalResource = function() {
- ValueRepresentation.call(this, 'UR');
- this.maxLength = null;
- this.padByte = '20';
-};
-
-util.inherits(UniversalResource, ValueRepresentation);
-
-UniversalResource.prototype.readBytes = function(stream, length) {
- return rtrim(stream.read(C.TYPE_ASCII, length));
-};
-
-UniversalResource.prototype.getFields = function(value) {
- return UniversalResource.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-UnknownValue = function() {
- ValueRepresentation.call(this, 'UN');
- this.maxLength = null;
- this.padByte = '00';
-};
-
-util.inherits(UnknownValue, ValueRepresentation);
-
-UnknownValue.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_ASCII, length);
-};
-
-UnknownValue.prototype.getFields = function(value) {
- return UnknownValue.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-OtherWordString = function() {
- ValueRepresentation.call(this, 'OW');
- this.maxLength = null;
- this.padByte = '00';
-};
-
-util.inherits(OtherWordString, ValueRepresentation);
-
-OtherWordString.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_ASCII, length);
-};
-
-OtherWordString.prototype.getFields = function(value) {
- return OtherWordString.super_.prototype.getFields.call(this, [new StringField(value)]);
-};
-
-OtherByteString = function() {
- ValueRepresentation.call(this, 'OB');
- this.maxLength = null;
- this.padByte = '00';
-};
-
-util.inherits(OtherByteString, ValueRepresentation);
-
-OtherByteString.prototype.readBytes = function(stream, length) {
- return stream.read(C.TYPE_HEX, length);
-};
-
-OtherByteString.prototype.getFields = function(value) {
- return OtherByteString.super_.prototype.getFields.call(this, [new HexField(value)]);
-};
-
-elementByType = function(type, value, syntax) {
- var elem = null,
- nk = DicomElements.dicomNDict[type];
- if (nk) {
- if (nk.vr === 'SQ') {
- var sq = [];
- if (value)
- value.forEach(function(el) {
- var values = [];
- for (var tag in el) {
- values.push(elementByType(tag, el[tag], syntax));
- }
-
- sq.push(values);
- });
- elem = new DataElement(type, nk.vr, nk.vm, sq, false, syntax);
- } else {
- elem = new DataElement(type, nk.vr, nk.vm, value, false, syntax);
- }
- } else {
- throw 'Unrecognized element type';
- }
-
- return elem;
-};
-
-elementDataByTag = function(tag) {
- var nk = DicomElements.dicomNDict[tag];
- if (nk) {
- return nk;
- }
-
- throw ('Unrecognized tag ' + (tag >>> 0).toString(16));
-};
-
-elementKeywordByTag = function(tag) {
- try {
- var nk = elementDataByTag(tag);
- return nk.keyword;
- } catch (ex) {
- return 'UnknownTag';
- }
-};
-
-vrByType = function(type) {
- var vr = null;
- if (type === 'AE') vr = new ApplicationEntity();
- else if (type === 'AS') vr = new AgeString();
- else if (type === 'AT') vr = new AttributeTag();
- else if (type === 'CS') vr = new CodeString();
- else if (type === 'DA') vr = new DateValue();
- else if (type === 'DS') vr = new DecimalString();
- else if (type === 'DT') vr = new DateTime();
- else if (type === 'FL') vr = new FloatingPointSingle();
- else if (type === 'FD') vr = new FloatingPointDouble();
- else if (type === 'IS') vr = new IntegerString();
- else if (type === 'LO') vr = new LongString();
- else if (type === 'LT') vr = new LongText();
- else if (type === 'OB') vr = new OtherByteString();
- else if (type === 'OD') vr = new OtherDoubleString();
- else if (type === 'OF') vr = new OtherFloatString();
- else if (type === 'OW') vr = new OtherWordString();
- else if (type === 'PN') vr = new PersonName();
- else if (type === 'SH') vr = new ShortString();
- else if (type === 'SL') vr = new SignedLong();
- else if (type === 'SQ') vr = new SequenceOfItems();
- else if (type === 'SS') vr = new SignedShort();
- else if (type === 'ST') vr = new ShortText();
- else if (type === 'TM') vr = new TimeValue();
- else if (type === 'UC') vr = new UnlimitedCharacters();
- else if (type === 'UI') vr = new UniqueIdentifier();
- else if (type === 'UL') vr = new UnsignedLong();
- else if (type === 'UN') vr = new UnknownValue();
- else if (type === 'UR') vr = new UniversalResource();
- else if (type === 'US') vr = new UnsignedShort();
- else if (type === 'UT') vr = new UnlimitedText();
- else throw 'Invalid vr type ' + type;
-
- return vr;
-};
-
-readElements = function(stream, syntax) {
- if (stream.end()) return false;
-
- var oldEndian = stream.endian;
- stream.setEndian(this.endian);
-
- var group = stream.read(C.TYPE_UINT16),
- element = stream.read(C.TYPE_UINT16),
- tag = new Tag((group << 16) | element),
- length = stream.read(C.TYPE_UINT32);
-
- stream.setEndian(oldEndian);
-};
-
-readAElement = function(stream, syntax) {
- var elem = newElementWithSyntax(syntax);
- elem.readBytes(stream);
- return elem;
-};
-
-newElementWithSyntax = function(syntax) {
- var elem = new DataElement();
- elem.setSyntax(syntax);
- return elem;
-};
-
-var explicitVRList = ['OB', 'OW', 'OF', 'SQ', 'UC', 'UR', 'UT', 'UN'],
- binaryVRs = ['FL', 'FD', 'SL', 'SS', 'UL', 'US'];
-
-DataElement = function(tag, vr, vm, value, vvr, syntax, options) {
- this.vr = vr ? vrByType(vr) : null;
- this.tag = !vvr ? new Tag(tag) : tag;
- this.value = value;
- this.vm = vm;
- this.vvr = vvr ? true : false;
- this.setOptions(options);
- this.setSyntax(syntax ? syntax : C.IMPLICIT_LITTLE_ENDIAN);
-};
-
-DataElement.prototype.setOptions = function(options) {
- this.options = Object.assign({
- split: true
- }, options);
-};
-
-DataElement.prototype.setSyntax = function(syn) {
- this.syntax = syn;
- this.implicit = this.syntax === C.IMPLICIT_LITTLE_ENDIAN ? true : false;
- this.endian = (this.syntax === C.IMPLICIT_LITTLE_ENDIAN || this.syntax === C.EXPLICIT_LITTLE_ENDIAN) ? C.LITTLE_ENDIAN : C.BIG_ENDIAN;
-};
-
-DataElement.prototype.getValue = function() {
- if (!this.singleValue() && !this.isBinaryNumber()) {
- return this.options.split ? this.value.split(String.fromCharCode(0x5c)) : this.value;
- } else {
- return this.value;
- }
-};
-
-DataElement.prototype.singleValue = function() {
- return this.vm === C.VM_SINGLE ? true : false;
-};
-
-DataElement.prototype.getVMNum = function() {
- var num = 1;
- switch (this.vm) {
- case C.VM_SINGLE : num = 1; break;
- case C.VM_TWO : num = 2; break;
- case C.VM_THREE : num = 3; break;
- case C.VM_FOUR : num = 4; break;
- case C.VM_16 : num = 16; break;
- default : break;
-}
- return num;
-};
-
-DataElement.prototype.isBinaryNumber = function() {
- return binaryVRs.indexOf(this.vr.type) !== -1;
-};
-
-DataElement.prototype.length = function(fields) {
- //let fields = this.vr.getFields(this.value);
- return fieldsLength(fields);
-};
-
-DataElement.prototype.readBytes = function(stream) {
- var oldEndian = stream.endian;
- stream.setEndian(this.endian);
-
- var group = stream.read(C.TYPE_UINT16),
- element = stream.read(C.TYPE_UINT16),
- tag = tagFromNumbers(group, element);
-
- var length = null, vr = null, edata, vm;
-
- try {
- edata = elementDataByTag(tag.value);
- vm = edata.vm;
- } catch (ex) {
- edata = null;
- vm = null;
- }
-
- if (this.implicit) {
- length = stream.read(C.TYPE_UINT32);
- if (!edata) {
- if (length == 0xffffffff) {
- vr = 'SQ';
- } else if (tag.isPixelDataTag()) {
- vr = 'OW';
- } else {
- vr = 'UN';
- }
- } else {
- vr = edata.vr;
- }
- } else {
- vr = stream.read(C.TYPE_ASCII, 2);
- if (explicitVRList.indexOf(vr) !== -1) {
- stream.increment(2);
- length = stream.read(C.TYPE_UINT32);
- } else {
- length = stream.read(C.TYPE_UINT16);
- }
- }
-
- this.vr = vrByType(vr);
- this.tag = tag;
- this.vm = vm;
- //try {
- if (this.isBinaryNumber() && length > this.vr.maxLength) {
- var times = length / this.vr.maxLength,
- i = 0;
- this.value = [];//console.log(times, length, this.vr.maxLength);return;
- //try {
- while (i++ < times) {
- this.value.push(this.vr.read(stream, this.vr.maxLength));
- }
- //} catch (e) { }
- } else {
- this.value = this.vr.read(stream, length, this.syntax);
- }
- //} catch (e) { console.log('error', vr, length); }
-
- stream.setEndian(oldEndian);
-};
-
-DataElement.prototype.write = function(stream) {
- var oldEndian = stream.endian;
- stream.setEndian(this.endian);
-
- var fields = this.getFields();
- fields.forEach(function(field) {
- field.write(stream);
- });
-
- stream.setEndian(oldEndian);
-};
-
-DataElement.prototype.getFields = function() {
- var fields = [new UInt16Field(this.tag.group()), new UInt16Field(this.tag.element())],
- valueFields = this.vr.getFields(this.value, this.syntax),
- valueLength = fieldsLength(valueFields),
- vrType = this.vr.type;
-
- if (vrType === 'SQ') {
- valueLength = 0xffffffff;
- }
-
- if (this.implicit) {
- fields.push(new UInt32Field(valueLength));
- } else {
- if (explicitVRList.indexOf(vrType) !== -1) {
- fields.push(new StringField(vrType), new ReservedField(2), new UInt32Field(valueLength));
- } else {
- fields.push(new StringField(vrType), new UInt16Field(valueLength));
- }
- }
-
- fields = fields.concat(valueFields);
- return fields;
-};
-
diff --git a/Packages/ohif-dicom-services/server/DIMSE/Field.js b/Packages/ohif-dicom-services/server/DIMSE/Field.js
deleted file mode 100755
index afa3a2a8f..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/Field.js
+++ /dev/null
@@ -1,156 +0,0 @@
-Field = function(type, value) {
- this.type = type;
- this.value = value;
-};
-
-Field.prototype.length = function() {
- return calcLength(this.type, this.value);
-};
-
-Field.prototype.write = function(stream) {
- stream.write(this.type, this.value);
-};
-
-Field.prototype.isNumeric = function() {
- return false;
-};
-
-BufferField = function(buffer, start, length) {
- Field.call(this, C.TYPE_BUFFER, buffer);
- this.bufferLength = length;
- this.bufferStart = start;
-};
-
-util.inherits(BufferField, Field);
-
-BufferField.prototype.length = function() {
- return this.bufferLength;
-};
-
-BufferField.prototype.write = function(stream) {
- stream.writeRawBuffer(this.value, this.bufferStart, this.bufferLength);
-};
-
-StringField = function(str) {
- Field.call(this, C.TYPE_ASCII, typeof str == 'string' ? str : '');
-};
-
-util.inherits(StringField, Field);
-
-FilledField = function(value, length) {
- Field.call(this, C.TYPE_COMPOSITE, value);
- this.fillLength = length;
-};
-
-util.inherits(FilledField, Field);
-
-FilledField.prototype.length = function() {
- return this.fillLength;
-};
-
-FilledField.prototype.write = function(stream) {
- var len = this.value.length;
- if (len < this.fillLength && len >= 0) {
- if (len > 0)
- stream.write(C.TYPE_ASCII, this.value);
- var zeroLength = this.fillLength - len;
- stream.write(C.TYPE_HEX, '20'.repeat(zeroLength));
- } else if (len == this.fillLength) {
- stream.write(C.TYPE_ASCII, this.value);
- } else {
- throw 'Length mismatch';
- }
-};
-
-HexField = function(hex) {
- Field.call(this, C.TYPE_HEX, hex);
-};
-
-util.inherits(HexField, Field);
-
-ReservedField = function(length) {
- length = length || 1;
- Field.call(this, C.TYPE_HEX, '00'.repeat(length));
-};
-
-util.inherits(ReservedField, Field);
-
-UInt8Field = function(value) {
- Field.call(this, C.TYPE_UINT8, value);
-};
-
-util.inherits(UInt8Field, Field);
-
-UInt8Field.prototype.isNumeric = function() {
- return true;
-};
-
-UInt16Field = function(value) {
- Field.call(this, C.TYPE_UINT16, value);
-};
-
-util.inherits(UInt16Field, Field);
-
-UInt16Field.prototype.isNumeric = function() {
- return true;
-};
-
-UInt32Field = function(value) {
- Field.call(this, C.TYPE_UINT32, value);
-};
-
-util.inherits(UInt32Field, Field);
-
-UInt32Field.prototype.isNumeric = function() {
- return true;
-};
-
-Int8Field = function(value) {
- Field.call(this, C.TYPE_INT8, value);
-};
-
-util.inherits(Int8Field, Field);
-
-Int8Field.prototype.isNumeric = function() {
- return true;
-};
-
-Int16Field = function(value) {
- Field.call(this, C.TYPE_INT16, value);
-};
-
-util.inherits(Int16Field, Field);
-
-Int16Field.prototype.isNumeric = function() {
- return true;
-};
-
-Int32Field = function(value) {
- Field.call(this, C.TYPE_INT32, value);
-};
-
-util.inherits(Int32Field, Field);
-
-Int32Field.prototype.isNumeric = function() {
- return true;
-};
-
-FloatField = function(value) {
- Field.call(this, C.TYPE_FLOAT, value);
-};
-
-util.inherits(FloatField, Field);
-
-FloatField.prototype.isNumeric = function() {
- return true;
-};
-
-DoubleField = function(value) {
- Field.call(this, C.TYPE_DOUBLE, value);
-};
-
-util.inherits(DoubleField, Field);
-
-DoubleField.prototype.isNumeric = function() {
- return true;
-};
diff --git a/Packages/ohif-dicom-services/server/DIMSE/Message.js b/Packages/ohif-dicom-services/server/DIMSE/Message.js
deleted file mode 100755
index 7919a7e1a..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/Message.js
+++ /dev/null
@@ -1,590 +0,0 @@
-DicomMessage = function(syntax) {
- this.syntax = syntax ? syntax : null;
- this.type = C.DATA_TYPE_COMMAND;
- this.messageId = C.DEFAULT_MESSAGE_ID;
- this.elementPairs = {};
-};
-
-DicomMessage.prototype.isCommand = function() {
- return this.type == C.DATA_TYPE_COMMAND;
-};
-
-DicomMessage.prototype.setSyntax = function(syntax) {
- this.syntax = syntax;
-
- for (var tag in this.elementPairs) {
- this.elementPairs[tag].setSyntax(this.syntax);
- }
-};
-
-DicomMessage.prototype.setMessageId = function(id) {
- this.messageId = id;
-};
-
-DicomMessage.prototype.setReplyMessageId = function(id) {
- this.replyMessageId = id;
-};
-
-DicomMessage.prototype.command = function(cmds) {
- cmds.unshift(this.newElement(0x00000800, this.dataSetPresent ? C.DATA_SET_PRESENT : C.DATE_SET_ABSENCE));
- cmds.unshift(this.newElement(0x00000700, this.priority));
- cmds.unshift(this.newElement(0x00000110, this.messageId));
- cmds.unshift(this.newElement(0x00000100, this.commandType));
- cmds.unshift(this.newElement(0x00000002, this.contextUID));
-
- var length = 0;
- cmds.forEach(function(cmd) {
- length += cmd.length(cmd.getFields());
- });
-
- cmds.unshift(this.newElement(0x00000000, length));
- return cmds;
-};
-
-DicomMessage.prototype.response = function(cmds) {
- cmds.unshift(this.newElement(0x00000800, this.dataSetPresent ? C.DATA_SET_PRESENT : C.DATE_SET_ABSENCE));
- cmds.unshift(this.newElement(0x00000120, this.replyMessageId));
- cmds.unshift(this.newElement(0x00000100, this.commandType));
- if (this.contextUID)
- cmds.unshift(this.newElement(0x00000002, this.contextUID));
-
- var length = 0;
- cmds.forEach(function(cmd) {
- length += cmd.length(cmd.getFields());
- });
-
- cmds.unshift(this.newElement(0x00000000, length));
- return cmds;
-};
-
-DicomMessage.prototype.setElements = function(pairs) {
- var p = {};
- for (var tag in pairs) {
- p[tag] = this.newElement(tag, pairs[tag]);
- }
-
- this.elementPairs = p;
-};
-
-DicomMessage.prototype.newElement = function(tag, value) {
- return elementByType(tag, value, this.syntax);
-};
-
-DicomMessage.prototype.setElement = function(key, value) {
- this.elementPairs[key] = elementByType(key, value);
-};
-
-DicomMessage.prototype.setElementPairs = function(pairs) {
- this.elementPairs = pairs;
-};
-
-DicomMessage.prototype.setContextId = function(context) {
- this.contextUID = context;
-};
-
-DicomMessage.prototype.setPriority = function(pri) {
- this.priority = pri;
-};
-
-DicomMessage.prototype.setType = function(type) {
- this.type = type;
-};
-
-DicomMessage.prototype.setDataSetPresent = function(present) {
- this.dataSetPresent = present == 0x0101 ? false : true;
-};
-
-DicomMessage.prototype.haveData = function() {
- return this.dataSetPresent;
-};
-
-DicomMessage.prototype.tags = function() {
- return Object.keys(this.elementPairs);
-};
-
-DicomMessage.prototype.key = function(tag) {
- return elementKeywordByTag(tag);
-};
-
-DicomMessage.prototype.getValue = function(tag) {
- return this.elementPairs[tag] ? this.elementPairs[tag].getValue() : null;
-};
-
-DicomMessage.prototype.affectedSOPClassUID = function() {
- return this.getValue(0x00000002);
-};
-
-DicomMessage.prototype.getMessageId = function() {
- return this.getValue(0x00000110);
-};
-
-DicomMessage.prototype.getFields = function() {
- var eles = [];
- for (var tag in this.elementPairs) {
- eles.push(this.elementPairs[tag]);
- }
-
- return eles;
-};
-
-DicomMessage.prototype.length = function(elems) {
- var len = 0;
- elems.forEach(function(elem) {
- len += elem.length(elem.getFields());
- });
- return len;
-};
-
-DicomMessage.prototype.isResponse = function() {
- return false;
-};
-
-DicomMessage.prototype.is = function(type) {
- return this.commandType == type;
-};
-
-DicomMessage.prototype.write = function(stream) {
- var fields = this.getFields(),
- o = this;
- fields.forEach(function(field) {
- field.setSyntax(o.syntax);
- field.write(stream);
- });
-};
-
-DicomMessage.prototype.printElements = function(pairs, indent) {
- var typeName = '';
- for (var tag in pairs) {
- var value = pairs[tag].getValue();
- typeName += (' '.repeat(indent)) + this.key(tag) + ' : ';
- if (value instanceof Array) {
- var o = this;
- value.forEach(function(p) {
- if (typeof p == 'object') {
- typeName += '[\n' + o.printElements(p, indent + 2) + (' '.repeat(indent)) + ']';
- } else {
- typeName += '[' + p + ']';
- }
- });
- if (typeName[typeName.length - 1] != '\n') {
- typeName += '\n';
- }
- } else {
- typeName += value + '\n';
- }
- }
-
- return typeName;
-};
-
-DicomMessage.prototype.typeString = function() {
- var typeName = '';
- if (!this.isCommand()) {
- typeName = 'DateSet Message';
- } else {
- switch (this.commandType) {
- case C.COMMAND_C_GET_RSP : typeName = 'C-GET-RSP'; break;
- case C.COMMAND_C_MOVE_RSP : typeName = 'C-MOVE-RSP'; break;
- case C.COMMAND_C_GET_RQ : typeName = 'C-GET-RQ'; break;
- case C.COMMAND_C_STORE_RQ : typeName = 'C-STORE-RQ'; break;
- case C.COMMAND_C_FIND_RSP : typeName = 'C-FIND-RSP'; break;
- case C.COMMAND_C_MOVE_RQ : typeName = 'C-MOVE-RQ'; break;
- case C.COMMAND_C_FIND_RQ : typeName = 'C-FIND-RQ'; break;
- case C.COMMAND_C_STORE_RSP : typeName = 'C-STORE-RSP'; break;
- }
- }
-
- return typeName;
-};
-
-DicomMessage.prototype.toString = function() {
- var typeName = this.typeString();
- typeName += ' [\n';
- typeName += this.printElements(this.elementPairs, 0);
- typeName += ']';
- return typeName;
-};
-
-DicomMessage.prototype.walkObject = function(pairs) {
- var obj = {},
- o = this;
- for (var tag in pairs) {
- var v = pairs[tag].getValue(),
- u = v;
- if (v instanceof Array) {
- u = [];
- v.forEach(function(a) {
- if (typeof a == 'object') {
- u.push(o.walkObject(a));
- } else u.push(a);
- });
- }
-
- obj[tag] = u;
- }
-
- return obj;
-};
-
-DicomMessage.prototype.toObject = function() {
- return this.walkObject(this.elementPairs);
-};
-
-DicomMessage.readToPairs = function(stream, syntax, options) {
- var pairs = {};
- while (!stream.end()) {
- var elem = new DataElement();
- if (options) {
- elem.setOptions(options);
- }
-
- elem.setSyntax(syntax);
- elem.readBytes(stream);
- pairs[elem.tag.value] = elem;
- }
-
- return pairs;
-};
-
-var fileValid = function(stream) {
- return stream.readString(4, C.TYPE_ASCII) == 'DICM';
-};
-
-var readMetaStream = function(stream, useSyntax, length, callback) {
- var message = new FileMetaMessage();
- message.setElementPairs(DicomMessage.readToPairs(stream, useSyntax));
- if (callback) {
- callback(null, message, length);
- }
-
- return message;
-};
-
-DicomMessage.readMetaHeader = function(bufferOrFile, callback) {
- var useSyntax = C.EXPLICIT_LITTLE_ENDIAN;
- if (bufferOrFile instanceof Buffer) {
- var stream = new ReadStream(bufferOrFile);
- stream.reset();
- stream.increment(128);
- if (!fileValid(stream)) {
- return quitWithError('Invalid a dicom file ', callback);
- }
-
- var el = readAElement(stream, useSyntax),
- metaLength = el.value,
- metaStream = stream.more(metaLength);
-
- return readMetaStream(metaStream, useSyntax, metaLength, callback);
- } else if (typeof bufferOrFile == 'string') {
- fs.open(bufferOrFile, 'r', function(err, fd) {
- if (err) {
- //fs.closeSync(fd);
- return quitWithError('Cannot open file', callback);
- }
-
- var buffer = Buffer.alloc(16);
- fs.read(fd, buffer, 0, 16, 128, function(err, bytesRead) {
- if (err || bytesRead != 16) {
- fs.closeSync(fd);
- return quitWithError('Cannot read file', callback);
- }
-
- var stream = new ReadStream(buffer);
- if (!fileValid(stream)) {
- fs.closeSync(fd);
- return quitWithError('Not a dicom file ' + bufferOrFile, callback);
- }
-
- var el = readAElement(stream, useSyntax),
- metaLength = el.value,
- metaBuffer = Buffer.alloc(metaLength);
-
- fs.read(fd, metaBuffer, 0, metaLength, 144, function(err, bytesRead) {
- fs.closeSync(fd);
- if (err || bytesRead != metaLength) {
- return quitWithError('Invalid a dicom file ' + bufferOrFile, callback);
- }
-
- var metaStream = new ReadStream(metaBuffer);
- return readMetaStream(metaStream, useSyntax, metaLength, callback);
- });
- });
- });
- }
-
- return null;
-};
-
-DicomMessage.read = function(stream, type, syntax, options) {
- var elements = [],
- pairs = {},
- useSyntax = type == C.DATA_TYPE_COMMAND ? C.IMPLICIT_LITTLE_ENDIAN : syntax;
- stream.reset();
- while (!stream.end()) {
- var elem = new DataElement();
- if (options) {
- elem.setOptions(options);
- }
-
- elem.setSyntax(useSyntax);
- elem.readBytes(stream);//return;
- pairs[elem.tag.value] = elem;
- }
-
- var message = null;
- if (type == C.DATA_TYPE_COMMAND) {
- var cmdType = pairs[0x00000100].value;
-
- switch (cmdType) {
- case 0x8020 : message = new CFindRSP(useSyntax); break;
- case 0x8021 : message = new CMoveRSP(useSyntax); break;
- case 0x8010 : message = new CGetRSP(useSyntax); break;
- case 0x0001 : message = new CStoreRQ(useSyntax); break;
- case 0x0020 : message = new CFindRQ(useSyntax); break;
- case 0x8001 : message = new CStoreRSP(useSyntax); break;
- default : throw 'Unrecognized command type ' + cmdType.toString(16); break;
- }
-
- message.setElementPairs(pairs);
- message.setDataSetPresent(message.getValue(0x00000800));
- message.setContextId(message.getValue(0x00000002));
- if (!message.isResponse()) {
- message.setMessageId(message.getValue(0x00000110));
- } else {
- message.setReplyMessageId(message.getValue(0x00000120));
- }
- } else if (type == C.DATA_TYPE_DATA) {
- message = new DataSetMessage(useSyntax);
- message.setElementPairs(pairs);
- } else {
- throw 'Unrecognized message type';
- }
-
- return message;
-};
-
-DataSetMessage = function(syntax) {
- DicomMessage.call(this, syntax);
- this.type = C.DATA_TYPE_DATA;
-};
-
-util.inherits(DataSetMessage, DicomMessage);
-
-DataSetMessage.prototype.is = function(type) {
- return false;
-};
-
-FileMetaMessage = function(syntax) {
- DicomMessage.call(this, syntax);
- this.type = null;
-};
-
-util.inherits(FileMetaMessage, DicomMessage);
-
-CommandMessage = function(syntax) {
- DicomMessage.call(this, syntax);
- this.type = C.DATA_TYPE_COMMAND;
- this.priority = C.PRIORITY_MEDIUM;
- this.dataSetPresent = true;
-};
-
-util.inherits(CommandMessage, DicomMessage);
-
-CommandMessage.prototype.getFields = function() {
- return this.command(CommandMessage.super_.prototype.getFields.call(this));
-};
-
-CommandResponse = function(syntax) {
- DicomMessage.call(this, syntax);
- this.type = C.DATA_TYPE_COMMAND;
- this.dataSetPresent = true;
-};
-
-util.inherits(CommandResponse, DicomMessage);
-
-CommandResponse.prototype.isResponse = function() {
- return true;
-};
-
-CommandResponse.prototype.respondedTo = function() {
- return this.getValue(0x00000120);
-};
-
-CommandResponse.prototype.isFinal = function() {
- return this.success() || this.failure() || this.cancel();
-};
-
-CommandResponse.prototype.warning = function() {
- var status = this.getStatus();
- return (status == 0x0001) || (status >> 12 == 0xb);
-};
-
-CommandResponse.prototype.success = function() {
- return this.getStatus() == 0x0000;
-};
-
-CommandResponse.prototype.failure = function() {
- var status = this.getStatus();
- return (status >> 12 == 0xa) || (status >> 12 == 0xc) || (status >> 8 == 0x1);
-};
-
-CommandResponse.prototype.cancel = function() {
- return this.getStatus() == C.STATUS_CANCEL;
-};
-
-CommandResponse.prototype.pending = function() {
- var status = this.getStatus();
- return (status == 0xff00) || (status == 0xff01);
-};
-
-CommandResponse.prototype.getStatus = function() {
- return this.getValue(0x00000900);
-};
-
-CommandResponse.prototype.setStatus = function(status) {
- this.setElement(0x00000900, status);
-};
-
-// following four methods only available to C-GET-RSP and C-MOVE-RSP
-CommandResponse.prototype.getNumOfRemainingSubOperations = function() {
- return this.getValue(0x00001020);
-};
-
-CommandResponse.prototype.getNumOfCompletedSubOperations = function() {
- return this.getValue(0x00001021);
-};
-
-CommandResponse.prototype.getNumOfFailedSubOperations = function() {
- return this.getValue(0x00001022);
-};
-
-CommandResponse.prototype.getNumOfWarningSubOperations = function() {
- return this.getValue(0x00001023);
-};
-//end
-
-CommandResponse.prototype.getFields = function() {
- return this.response(CommandResponse.super_.prototype.getFields.call(this));
-};
-
-CFindRSP = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x8020;
-};
-
-util.inherits(CFindRSP, CommandResponse);
-
-CGetRSP = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x8010;
-};
-
-util.inherits(CGetRSP, CommandResponse);
-
-CMoveRSP = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x8021;
-};
-
-util.inherits(CMoveRSP, CommandResponse);
-
-CFindRQ = function(syntax) {
- CommandMessage.call(this, syntax);
- this.commandType = 0x20;
- this.contextUID = C.SOP_STUDY_ROOT_FIND;
-};
-
-util.inherits(CFindRQ, CommandMessage);
-
-CCancelRQ = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x0fff;
- this.contextUID = null;
- this.dataSetPresent = false;
-};
-
-util.inherits(CCancelRQ, CommandResponse);
-
-CCancelMoveRQ = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x0fff;
- this.contextUID = null;
- this.dataSetPresent = false;
-};
-
-util.inherits(CCancelMoveRQ, CommandResponse);
-
-CMoveRQ = function(syntax, destination) {
- CommandMessage.call(this, syntax);
- this.commandType = 0x21;
- this.contextUID = C.SOP_STUDY_ROOT_MOVE;
- this.setDestination(destination || '');
-};
-
-util.inherits(CMoveRQ, CommandMessage);
-
-CMoveRQ.prototype.setStore = function(cstr) {
- this.store = cstr;
-};
-
-CMoveRQ.prototype.setDestination = function(dest) {
- this.setElement(0x00000600, dest);
-};
-
-CGetRQ = function(syntax) {
- CommandMessage.call(this, syntax);
- this.commandType = 0x10;
- this.contextUID = C.SOP_STUDY_ROOT_GET;
- this.store = null;
-};
-
-util.inherits(CGetRQ, CommandMessage);
-
-CGetRQ.prototype.setStore = function(cstr) {
- this.store = cstr;
-};
-
-CStoreRQ = function(syntax) {
- CommandMessage.call(this, syntax);
- this.commandType = 0x01;
- this.contextUID = C.SOP_STUDY_ROOT_GET;
-};
-
-util.inherits(CStoreRQ, CommandMessage);
-
-CStoreRQ.prototype.getOriginAETitle = function() {
- return this.getValue(0x00001030);
-};
-
-CStoreRQ.prototype.getMoveMessageId = function() {
- return this.getValue(0x00001031);
-};
-
-CStoreRQ.prototype.getAffectedSOPInstanceUID = function() {
- return this.getValue(0x00001000);
-};
-
-CStoreRQ.prototype.setAffectedSOPInstanceUID = function(uid) {
- this.setElement(0x00001000, uid);
-};
-
-CStoreRQ.prototype.setAffectedSOPClassUID = function(uid) {
- this.setElement(0x00000002, uid);
-};
-
-CStoreRSP = function(syntax) {
- CommandResponse.call(this, syntax);
- this.commandType = 0x8001;
- this.contextUID = C.SOP_STUDY_ROOT_GET;
- this.dataSetPresent = false;
-};
-
-util.inherits(CStoreRSP, CommandResponse);
-
-CStoreRSP.prototype.setAffectedSOPInstanceUID = function(uid) {
- this.setElement(0x00001000, uid);
-};
-
-CStoreRSP.prototype.getAffectedSOPInstanceUID = function(uid) {
- return this.getValue(0x00001000);
-};
diff --git a/Packages/ohif-dicom-services/server/DIMSE/PDU.js b/Packages/ohif-dicom-services/server/DIMSE/PDU.js
deleted file mode 100755
index 027cdf06c..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/PDU.js
+++ /dev/null
@@ -1,814 +0,0 @@
-PDVHandle = function() {
-
-}
-util.inherits(PDVHandle, EventEmitter);
-
-PDU = function() {
- this.fields = [];
- this.lengthBytes = 4;
-}
-
-PDU.prototype.length = function(fields) {
- var len = 0;
- fields.forEach(function(f) {
- len += !f.getFields ? f.length() : f.length(f.getFields());
- });
- return len;
-}
-
-PDU.prototype.is = function(type) {
- return this.type == type;
-}
-
-PDU.prototype.getFields = function(fields) {
- var len = this.lengthField(fields);
- fields.unshift(len);
- if (this.type !== null) {
- fields.unshift(new ReservedField());
- fields.unshift(new HexField(this.type));
- }
-
- return fields;
-}
-
-PDU.prototype.lengthField = function(fields) {
- if (this.lengthBytes == 4) {
- return new UInt32Field(this.length(fields));
- } else if (this.lengthBytes == 2) {
- return new UInt16Field(this.length(fields));
- } else {
- throw "Invalid length bytes";
- }
-}
-
-PDU.prototype.read = function(stream) {
- stream.read(C.TYPE_HEX, 1);
- var length = stream.read(C.TYPE_UINT32);
- this.readBytes(stream, length);
-}
-
-PDU.prototype.load = function(stream) {
- return PDU.createByStream(stream);
-}
-
-PDU.prototype.loadPDV = function(stream, length) {
- if (stream.end()) return false;
- var bytesRead = 0, pdvs = [];
- while (bytesRead < length) {
- var plength = stream.read(C.TYPE_UINT32),
- pdv = new PresentationDataValueItem();
- pdv.readBytes(stream, plength);
- bytesRead += plength + 4;
-
- pdvs.push(pdv);
- }
-
- return pdvs;
-}
-
-PDU.prototype.loadDicomMessage = function(stream, isCommand, isLast) {
- var message = DicomMessage.read(stream, isCommand, isLast);
- return message;
-}
-
-PDU.prototype.stream = function() {
- var stream = new WriteStream(),
- fields = this.getFields();
-
- // writing to buffer
- fields.forEach(function(field){
- field.write(stream);
- });
-
- return stream;
-}
-
-PDU.prototype.buffer = function() {
- return this.stream().buffer();
-}
-
-var interpretCommand = function(stream, isLast) {
- parseDicomMessage(stream);
-}
-
-mergePDVs = function(pdvs) {
- var merges = [], count = pdvs.length, i = 0;
- while (i < count) {console.log(pdvs[i].isLast, pdvs[i].type);
- if (!pdvs[i].isLast) {
- var j = i;
- while (!pdvs[j++].isLast && j < count) {
- pdvs[i].messageStream.concat(pdvs[j].messageStream);
- }
- merges.push(pdvs[i]);
- i = j;
- } else {
- merges.push(pdvs[i++]);
- }
- }
- return merges;
-}
-
-PDU.splitPData = function(pdata, maxSize) {
- var totalLength = pdata.totalLength();
- if (totalLength > maxSize) {
- //split into chunks of pdatas
- var chunks = Math.floor(totalLength / maxSize), left = totalLength % maxSize;
-
- for (var i = 0;i < chunks;i++) {
- if (i == chunks - 1) {
- if (left < 6) {
- //need to move some of the last chunk
- }
- }
- }
- } else {
- return [pdata];
- }
-}
-
-var readChunk = function(fd, bufferSize, slice, callback) {
- var buffer = Buffer.alloc(bufferSize), length = slice.length, start = slice.start;
- fs.read(fd, buffer, 0, length, start, function(err, bytesRead) {
- callback(err, bytesRead, buffer, slice);
- });
-}
-
-PDU.generatePDatas = function(context, bufferOrFile, maxSize, length, metaLength, callback) {
- var total, isFile = false;
- if (typeof bufferOrFile == 'string') {
- var stats = fs.statSync(bufferOrFile);
- total = stats['size'];
- isFile = true;
- } else if (bufferOrFile instanceof Buffer) {
- total = length ? length : bufferOrFile.length;
- }
- var handler = new PDVHandle();
-
- var slices = [], start = metaLength + 144, index = 0;
- maxSize -= 6;
- while (start < total) {
- var sliceLength = maxSize, isLast = false;
- if (total - start < maxSize) {
- sliceLength = total - start;
- isLast = true;
- }
- slices.push({start : start, length : sliceLength, isLast : isLast, index : index});
- start += sliceLength;
- index++;
- }
-
- if (isFile) {
- fs.open(bufferOrFile, 'r', function(err, fd) {
- if (err) {
- //fs.closeSync(fd);
- return quitWithError(err, callback);
- } else callback(null, handler);
-
- var after = function(err, bytesRead, buffer, slice) {
- if (err) {
- fs.closeSync(fd);
- handler.emit('error', err);
- return;
- }
- var pdv = new RawDataPDV(context, buffer, 0, slice.length, slice.isLast);
- handler.emit('pdv', pdv);
-
- if (slices.length < 1) {
- handler.emit('end');
- fs.closeSync(fd);
- } else {
- var next = slices.shift();
- readChunk(fd, maxSize, next, after);
- }
- };
-
- var sl = slices.shift();
- readChunk(fd, maxSize, sl, after);
- });
- } else {
- for (var i = 0;i < slices.length;i++) {
- var toSlice = slices[i];
-
- var buffer = bufferOrFile.slice(toSlice.start, toSlice.length);
- var pdv = new RawDataPDV(context, buffer, 0, toSlice.length, toSlice.isLast);
- handler.emit('pdv', pdv);
-
- if (i == slices.length - 1) {
- handler.emit('end');
- }
- }
- }
-
- return;
-}
-
-PDU.typeToString = function(type) {
- var pdu = null, typeNum = parseInt(type, 16);
- //console.log("RECEIVED PDU-TYPE ", typeNum);
- switch (typeNum) {
- case 0x01 : pdu = 'ASSOCIATE-RQ'; break;
- case 0x02 : pdu = 'ASSOCIATE-AC'; break;
- case 0x04 : pdu = 'P-DATA-TF'; break;
- case 0x06 : pdu = 'RELEASE-RP'; break;
- case 0x07 : pdu = 'ASSOCIATE-ABORT'; break;
- case 0x10 : pdu = 'APPLICATION-CONTEXT-ITEM'; break;
- case 0x20 : pdu = 'PRESENTATION-CONTEXT-ITEM'; break;
- case 0x21 : pdu = 'PRESENTATION-CONTEXT-ITEM-AC'; break;
- case 0x30 : pdu = 'ABSTRACT-SYNTAX-ITEM'; break;
- case 0x40 : pdu = 'TRANSFER-SYNTAX-ITEM'; break;
- case 0x50 : pdu = 'USER-INFORMATION-ITEM'; break;
- case 0x51 : pdu = 'MAXIMUM-LENGTH-ITEM'; break;
- case 0x52 : pdu = 'IMPLEMENTATION-CLASS-UID-ITEM'; break;
- case 0x55 : pdu = 'IMPLEMENTATION-VERSION-NAME-ITEM'; break;
- default : break;
- }
-
- return pdu;
-}
-
-PDU.createByStream = function(stream) {
- if (stream.end()) return null;
-
- var pduType = stream.read(C.TYPE_HEX, 1), typeNum = parseInt(pduType, 16), pdu = null;
- //console.log("RECEIVED PDU-TYPE ", pduType);
- switch (typeNum) {
- case 0x01 : pdu = new AssociateRQ(); break;
- case 0x02 : pdu = new AssociateAC(); break;
- case 0x04 : pdu = new PDataTF(); break;
- case 0x06 : pdu = new ReleaseRP(); break;
- case 0x07 : pdu = new AssociateAbort(); break;
- case 0x10 : pdu = new ApplicationContextItem(); break;
- case 0x20 : pdu = new PresentationContextItem(); break;
- case 0x21 : pdu = new PresentationContextItemAC(); break;
- case 0x30 : pdu = new AbstractSyntaxItem(); break;
- case 0x40 : pdu = new TransferSyntaxItem(); break;
- case 0x50 : pdu = new UserInformationItem(); break;
- case 0x51 : pdu = new MaximumLengthItem(); break;
- case 0x52 : pdu = new ImplementationClassUIDItem(); break;
- case 0x55 : pdu = new ImplementationVersionNameItem(); break;
- default : throw "Unrecoginized pdu type " + pduType; break;
- }
- if (pdu)
- pdu.read(stream);
-
- return pdu;
-}
-
-var nextItemIs = function(stream, pduType) {
- if (stream.end()) return false;
-
- var nextType = stream.read(C.TYPE_HEX, 1);
- stream.increment(-1);
- return pduType == nextType;
-}
-
-AssociateRQ = function() {
- PDU.call(this);
- this.type = C.ITEM_TYPE_PDU_ASSOCIATE_RQ;
- this.protocolVersion = 1;
-}
-
-util.inherits(AssociateRQ, PDU);
-
-AssociateRQ.prototype.setProtocolVersion = function(version) {
- this.protocolVersion = version;
-}
-
-AssociateRQ.prototype.setCalledAETitle = function(title) {
- this.calledAETitle = title;
-}
-
-AssociateRQ.prototype.setCallingAETitle = function(title) {
- this.callingAETitle = title;
-}
-
-AssociateRQ.prototype.setApplicationContextItem = function(item) {
- this.applicationContextItem = item;
-}
-
-AssociateRQ.prototype.setPresentationContextItems = function(items) {
- this.presentationContextItems = items;
-}
-
-AssociateRQ.prototype.setUserInformationItem = function(item) {
- this.userInformationItem = item;
-}
-
-AssociateRQ.prototype.allAccepted = function() {
- for (var i in this.presentationContextItems) {
- var item = this.presentationContextItems[i];
- if (!item.accepted()) return false;
- }
- return true;
-}
-
-AssociateRQ.prototype.getFields = function() {
- var f = [
- new UInt16Field(this.protocolVersion), new ReservedField(2),
- new FilledField(this.calledAETitle, 16), new FilledField(this.callingAETitle, 16),
- new ReservedField(32), this.applicationContextItem
- ];
- this.presentationContextItems.forEach(function(context){
- f.push(context);
- });
- f.push(this.userInformationItem);
- return AssociateRQ.super_.prototype.getFields.call(this, f);
-}
-
-AssociateRQ.prototype.readBytes = function(stream, length) {
- this.type = C.ITEM_TYPE_PDU_ASSOCIATE_RQ;
- var version = stream.read(C.TYPE_UINT16);
- this.setProtocolVersion(version);
- stream.increment(2);
- var calledAE = stream.read(C.TYPE_ASCII, 16);
- this.setCalledAETitle(calledAE);
- var callingAE = stream.read(C.TYPE_ASCII, 16);
- this.setCallingAETitle(callingAE);
- stream.increment(32);
-
- var appContext = this.load(stream);
- this.setApplicationContextItem(appContext);
-
- var presContexts = [];
- do {
- presContexts.push(this.load(stream));
- } while (nextItemIs(stream, C.ITEM_TYPE_PRESENTATION_CONTEXT));
- this.setPresentationContextItems(presContexts);
-
- var userItem = this.load(stream);
- this.setUserInformationItem(userItem);
-}
-
-AssociateRQ.prototype.buffer = function() {
- return AssociateRQ.super_.prototype.buffer.call(this);
-}
-
-AssociateAC = function() {
- AssociateRQ.call(this);
-};
-
-util.inherits(AssociateAC, AssociateRQ);
-
-AssociateAC.prototype.readBytes = function(stream, length) {
- this.type = C.ITEM_TYPE_PDU_ASSOCIATE_AC;
- var version = stream.read(C.TYPE_UINT16);
- this.setProtocolVersion(version);
- stream.increment(66);
-
- var appContext = this.load(stream);
- this.setApplicationContextItem(appContext);
-
- var presContexts = [];
- do {
- presContexts.push(this.load(stream));
- } while (nextItemIs(stream, C.ITEM_TYPE_PRESENTATION_CONTEXT_AC));
- this.setPresentationContextItems(presContexts);
-
- var userItem = this.load(stream);
- this.setUserInformationItem(userItem);
-}
-
-AssociateAC.prototype.getMaxSize = function() {
- var items = this.userInformationItem.userDataItems, length = items.length, size = null;
-
- for (var i = 0;i < length;i++) {
- if (items[i].is(C.ITEM_TYPE_MAXIMUM_LENGTH)) {
- size = items[i].maximumLengthReceived;
- break;
- }
- }
- return size;
-}
-
-AssociateAbort = function() {
- this.type = C.ITEM_TYPE_PDU_AABORT;
- this.source = 1;
- this.reason = 0;
- PDU.call(this);
-}
-
-util.inherits(AssociateAbort, PDU);
-
-AssociateAbort.prototype.setSource = function(src) {
- this.source = src;
-}
-
-AssociateAbort.prototype.setReason = function(reason) {
- this.reason = reason;
-}
-
-AssociateAbort.prototype.readBytes = function(stream, length) {
- stream.increment(2);
-
- var source = stream.read(C.TYPE_UINT8);
- this.setSource(source);
-
- var reason = stream.read(C.TYPE_UINT8);
- this.setReason(reason);
-}
-
-AssociateAbort.prototype.getFields = function() {
- return AssociateAbort.super_.prototype.getFields.call(this, [
- new ReservedField(), new ReservedField(),
- new UInt8Field(this.source), new UInt8Field(this.reason)
- ]);
-}
-
-ReleaseRQ = function() {
- this.type = C.ITEM_TYPE_PDU_RELEASE_RQ;
- PDU.call(this);
-};
-
-util.inherits(ReleaseRQ, PDU);
-
-ReleaseRQ.prototype.getFields = function() {
- return ReleaseRQ.super_.prototype.getFields.call(this, [new ReservedField(4)]);
-};
-
-ReleaseRP = function() {
- this.type = C.ITEM_TYPE_PDU_RELEASE_RP;
- PDU.call(this);
-}
-
-util.inherits(ReleaseRP, PDU);
-
-ReleaseRP.prototype.readBytes = function(stream, length) {
- stream.increment(4);
-};
-
-ReleaseRP.prototype.getFields = function() {
- return ReleaseRP.super_.prototype.getFields.call(this, [new ReservedField(4)]);
-}
-
-PDataTF = function() {
- this.type = C.ITEM_TYPE_PDU_PDATA;
- this.presentationDataValueItems = [];
- PDU.call(this);
-}
-util.inherits(PDataTF, PDU);
-
-PDataTF.prototype.setPresentationDataValueItems = function(items) {
- this.presentationDataValueItems = items ? items : [];
-}
-
-PDataTF.prototype.getFields = function() {
- var fields = this.presentationDataValueItems;
-
- return PDataTF.super_.prototype.getFields.call(this, fields);
-}
-
-PDataTF.prototype.totalLength = function() {
- var fields = this.presentationDataValueItems;
-
- return this.length(fields);
-}
-
-PDataTF.prototype.readBytes = function(stream, length) {
- var pdvs = this.loadPDV(stream, length);
- //let merges = mergePDVs(pdvs);
-
- this.setPresentationDataValueItems(pdvs);
-}
-
-Item = function() {
- PDU.call(this);
- this.lengthBytes = 2;
-};
-util.inherits(Item, PDU);
-
-Item.prototype.read = function(stream) {
- stream.read(C.TYPE_HEX, 1);
- var length = stream.read(C.TYPE_UINT16);
- this.readBytes(stream, length);
-}
-
-Item.prototype.write = function(stream) {
- stream.concat(this.stream());
-}
-
-Item.prototype.getFields = function(fields) {
- return Item.super_.prototype.getFields.call(this, fields);
-}
-
-PresentationDataValueItem = function(context) {
- this.type = null;
- this.isLast = true;
- this.dataFragment = null;
- this.contextId = context;
- this.messageStream = null;
- Item.call(this);
-
- this.lengthBytes = 4;
-};
-util.inherits(PresentationDataValueItem, Item);
-
-PresentationDataValueItem.prototype.setContextId = function(id) {
- this.contextId = id;
-}
-
-PresentationDataValueItem.prototype.setFlag = function(flag) {
- this.flag = flag;
-}
-
-PresentationDataValueItem.prototype.setPresentationDataValue = function(pdv) {
- this.pdv = pdv;
-}
-
-PresentationDataValueItem.prototype.setMessage = function(msg) {
- this.dataFragment = msg;
-}
-
-PresentationDataValueItem.prototype.getMessage = function() {
- return this.dataFragment;
-}
-
-PresentationDataValueItem.prototype.readBytes = function(stream, length) {
- this.contextId = stream.read(C.TYPE_UINT8);
- var messageHeader = stream.read(C.TYPE_UINT8);
- this.isLast = messageHeader >> 1;
- this.type = messageHeader & 1 ? C.DATA_TYPE_COMMAND : C.DATA_TYPE_DATA;
-
- //load dicom messages
- this.messageStream = stream.more(length - 2);
-}
-
-PresentationDataValueItem.prototype.getFields = function() {
- var fields = [new UInt8Field(this.contextId)];
- //define header
- var messageHeader = (1 & this.dataFragment.type) | ((this.isLast ? 1 : 0) << 1);
- fields.push(new UInt8Field(messageHeader));
-
- fields.push(this.dataFragment);
-
- return PresentationDataValueItem.super_.prototype.getFields.call(this, fields);
-}
-
-RawDataPDV = function(context, buffer, start, length, isLast) {
- this.type = null;
- this.isLast = isLast;
- this.dataFragmentBuffer = buffer;
- this.bufferStart = start;
- this.bufferLength = length;
- this.contextId = context;
- Item.call(this);
-
- this.lengthBytes = 4;
-};
-util.inherits(RawDataPDV, Item);
-
-RawDataPDV.prototype.getFields = function() {
- var fields = [new UInt8Field(this.contextId)];
- var messageHeader = (this.isLast ? 1 : 0) << 1;
- fields.push(new UInt8Field(messageHeader));
- fields.push(new BufferField(this.dataFragmentBuffer, this.bufferStart, this.bufferLength));
-
- return RawDataPDV.super_.prototype.getFields.call(this, fields);
-}
-
-ApplicationContextItem = function() {
- this.type = C.ITEM_TYPE_APPLICATION_CONTEXT;
- this.applicationContextName = C.APPLICATION_CONTEXT_NAME;
- Item.call(this);
-}
-util.inherits(ApplicationContextItem, Item);
-
-ApplicationContextItem.prototype.setApplicationContextName = function(name) {
- this.applicationContextName = name;
-}
-
-ApplicationContextItem.prototype.getFields = function() {
- return ApplicationContextItem.super_.prototype.getFields.call(this, [new StringField(this.applicationContextName)]);
-}
-
-ApplicationContextItem.prototype.readBytes = function(stream, length) {
- var appContext = stream.read(C.TYPE_ASCII, length);
- this.setApplicationContextName(appContext);
-}
-
-ApplicationContextItem.prototype.buffer = function() {
- return ApplicationContextItem.super_.prototype.buffer.call(this);
-}
-
-PresentationContextItem = function() {
- this.type = C.ITEM_TYPE_PRESENTATION_CONTEXT;
- Item.call(this);
-};
-util.inherits(PresentationContextItem, Item);
-
-PresentationContextItem.prototype.setPresentationContextID = function(id) {
- this.presentationContextID = id;
-}
-
-PresentationContextItem.prototype.setAbstractSyntaxItem = function(item) {
- this.abstractSyntaxItem = item;
-}
-
-PresentationContextItem.prototype.setTransferSyntaxesItems = function(items) {
- this.transferSyntaxesItems = items;
-}
-
-PresentationContextItem.prototype.setResultReason = function(reason) {
- this.resultReason = reason;
-}
-
-PresentationContextItem.prototype.accepted = function() {
- return this.resultReason == 0;
-}
-
-PresentationContextItem.prototype.readBytes = function(stream, length) {
- var contextId = stream.read(C.TYPE_UINT8);
- this.setPresentationContextID(contextId);
- stream.increment(1);
- stream.increment(1);
- stream.increment(1);
-
- var abstractItem = this.load(stream);
- this.setAbstractSyntaxItem(abstractItem);
-
- var transContexts = [];
- do {
- transContexts.push(this.load(stream));
- } while (nextItemIs(stream, C.ITEM_TYPE_TRANSFER_CONTEXT));
- this.setTransferSyntaxesItems(transContexts);
-}
-
-PresentationContextItem.prototype.getFields = function() {
- var f = [
- new UInt8Field(this.presentationContextID),
- new ReservedField(), new ReservedField(), new ReservedField(), this.abstractSyntaxItem
- ];
- this.transferSyntaxesItems.forEach(function(syntaxItem){
- f.push(syntaxItem);
- });
- return PresentationContextItem.super_.prototype.getFields.call(this, f);
-}
-
-PresentationContextItem.prototype.buffer = function() {
- return PresentationContextItem.super_.prototype.buffer.call(this);
-}
-
-PresentationContextItemAC = function() {
- this.type = C.ITEM_TYPE_PRESENTATION_CONTEXT_AC;
- Item.call(this);
-};
-util.inherits(PresentationContextItemAC, PresentationContextItem);
-
-PresentationContextItemAC.prototype.readBytes = function(stream, length) {
- var contextId = stream.read(C.TYPE_UINT8);
- this.setPresentationContextID(contextId);
- stream.increment(1);
- var resultReason = stream.read(C.TYPE_UINT8);
- this.setResultReason(resultReason);
- stream.increment(1);
-
- var transItem = this.load(stream);
- this.setTransferSyntaxesItems([transItem]);
-}
-
-AbstractSyntaxItem = function() {
- this.type = C.ITEM_TYPE_ABSTRACT_CONTEXT;
- Item.call(this);
-}
-util.inherits(AbstractSyntaxItem, Item);
-
-AbstractSyntaxItem.prototype.setAbstractSyntaxName = function(name) {
- this.abstractSyntaxName = name;
-}
-
-AbstractSyntaxItem.prototype.getFields = function() {
- return AbstractSyntaxItem.super_.prototype.getFields.call(this, [new StringField(this.abstractSyntaxName)]);
-}
-
-AbstractSyntaxItem.prototype.buffer = function() {
- return AbstractSyntaxItem.super_.prototype.buffer.call(this);
-}
-
-AbstractSyntaxItem.prototype.readBytes = function(stream, length) {
- var name = stream.read(C.TYPE_ASCII, length);
- this.setAbstractSyntaxName(name);
-}
-
-TransferSyntaxItem = function() {
- this.type = C.ITEM_TYPE_TRANSFER_CONTEXT;
- Item.call(this);
-};
-util.inherits(TransferSyntaxItem, Item);
-
-TransferSyntaxItem.prototype.setTransferSyntaxName = function(name) {
- this.transferSyntaxName = name;
-}
-
-TransferSyntaxItem.prototype.readBytes = function(stream, length) {
- var transfer = stream.read(C.TYPE_ASCII, length);
- this.setTransferSyntaxName(transfer);
-}
-
-TransferSyntaxItem.prototype.getFields = function() {
- return TransferSyntaxItem.super_.prototype.getFields.call(this, [new StringField(this.transferSyntaxName)]);
-}
-
-TransferSyntaxItem.prototype.buffer = function() {
- return TransferSyntaxItem.super_.prototype.buffer.call(this);
-}
-
-UserInformationItem = function() {
- this.type = C.ITEM_TYPE_USER_INFORMATION;
- Item.call(this);
-};
-util.inherits(UserInformationItem, Item);
-
-UserInformationItem.prototype.setUserDataItems = function(items) {
- this.userDataItems = items;
-}
-
-UserInformationItem.prototype.readBytes = function(stream, length) {
- var items = [], pdu = this.load(stream);
-
- do {
- items.push(pdu);
- } while (pdu = this.load(stream));
- this.setUserDataItems(items);
-}
-
-UserInformationItem.prototype.getFields = function() {
- var f = [];
- this.userDataItems.forEach(function(userData){
- f.push(userData);
- });
- return UserInformationItem.super_.prototype.getFields.call(this, f);
-}
-
-UserInformationItem.prototype.buffer = function() {
- return UserInformationItem.super_.prototype.buffer.call(this);
-}
-
-ImplementationClassUIDItem = function() {
- this.type = C.ITEM_TYPE_IMPLEMENTATION_UID;
- Item.call(this);
-}
-util.inherits(ImplementationClassUIDItem, Item);
-
-ImplementationClassUIDItem.prototype.setImplementationClassUID = function(id) {
- this.implementationClassUID = id;
-}
-
-ImplementationClassUIDItem.prototype.readBytes = function(stream, length) {
- var uid = stream.read(C.TYPE_ASCII, length);
- this.setImplementationClassUID(uid);
-}
-
-ImplementationClassUIDItem.prototype.getFields = function() {
- return ImplementationClassUIDItem.super_.prototype.getFields.call(this, [new StringField(this.implementationClassUID)]);
-}
-
-ImplementationClassUIDItem.prototype.buffer = function() {
- return ImplementationClassUIDItem.super_.prototype.buffer.call(this);
-}
-
-ImplementationVersionNameItem = function() {
- this.type = C.ITEM_TYPE_IMPLEMENTATION_VERSION;
- Item.call(this);
-}
-util.inherits(ImplementationVersionNameItem, Item);
-
-ImplementationVersionNameItem.prototype.setImplementationVersionName = function(name) {
- this.implementationVersionName = name;
-}
-
-ImplementationVersionNameItem.prototype.readBytes = function(stream, length) {
- var name = stream.read(C.TYPE_ASCII, length);
- this.setImplementationVersionName(name);
-}
-
-ImplementationVersionNameItem.prototype.getFields = function() {
- return ImplementationVersionNameItem.super_.prototype.getFields.call(this, [new StringField(this.implementationVersionName)]);
-}
-
-ImplementationVersionNameItem.prototype.buffer = function() {
- return ImplementationVersionNameItem.super_.prototype.buffer.call(this);
-}
-
-MaximumLengthItem = function() {
- this.type = C.ITEM_TYPE_MAXIMUM_LENGTH;
- this.maximumLengthReceived = 32768;
- Item.call(this);
-}
-util.inherits(MaximumLengthItem, Item);
-
-MaximumLengthItem.prototype.setMaximumLengthReceived = function(length) {
- this.maximumLengthReceived = length;
-}
-
-MaximumLengthItem.prototype.readBytes = function(stream, length) {
- var l = stream.read(C.TYPE_UINT32);
- this.setMaximumLengthReceived(l);
-}
-
-MaximumLengthItem.prototype.getFields = function() {
- return MaximumLengthItem.super_.prototype.getFields.call(this, [new UInt32Field(this.maximumLengthReceived)]);
-}
-
-MaximumLengthItem.prototype.buffer = function() {
- return MaximumLengthItem.super_.prototype.buffer.call(this);
-}
-
diff --git a/Packages/ohif-dicom-services/server/DIMSE/RWStream.js b/Packages/ohif-dicom-services/server/DIMSE/RWStream.js
deleted file mode 100755
index 618c7599f..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/RWStream.js
+++ /dev/null
@@ -1,239 +0,0 @@
-var isString = function(type) {
- if (type === C.TYPE_ASCII || type === C.TYPE_HEX) {
- return true;
- } else {
- return false;
- }
-};
-
-calcLength = function(type, value) {
- var size = NaN;
- switch (type) {
- case C.TYPE_HEX : size = Buffer.byteLength(value, 'hex'); break;
- case C.TYPE_ASCII : size = Buffer.byteLength(value, 'ascii'); break;
- case C.TYPE_UINT8 : size = 1; break;
- case C.TYPE_UINT16 : size = 2; break;
- case C.TYPE_UINT32 : size = 4; break;
- case C.TYPE_FLOAT : size = 4; break;
- case C.TYPE_DOUBLE : size = 8; break;
- case C.TYPE_INT8 : size = 1; break;
- case C.TYPE_INT16 : size = 2; break;
- case C.TYPE_INT32 : size = 4; break;
- default :break;
-}
- return size;
-};
-
-var RWStream = function() {
- this.endian = C.BIG_ENDIAN;
-};
-
-RWStream.prototype.setEndian = function(endian) {
- this.endian = endian;
-};
-
-RWStream.prototype.getEncoding = function(type) {
- return RWStream.encodings[type];
-};
-
-RWStream.prototype.getWriteType = function(type) {
- return RWStream.writes[this.endian][type];
-};
-
-RWStream.prototype.getReadType = function(type) {
- return RWStream.reads[this.endian][type];
-};
-
-WriteStream = function() {
- RWStream.call(this);
- this.defaultBufferSize = 512; //512 bytes
- this.rawBuffer = Buffer.alloc(this.defaultBufferSize);
- this.offset = 0;
- this.contentSize = 0;
-};
-
-util.inherits(WriteStream, RWStream);
-
-WriteStream.prototype.increment = function(add) {
- this.offset += add;
- if (this.offset > this.contentSize) {
- this.contentSize = this.offset;
- }
-};
-
-WriteStream.prototype.size = function() {
- return this.contentSize;
-};
-
-WriteStream.prototype.skip = function(amount) {
- this.increment(amount);
-};
-
-WriteStream.prototype.checkSize = function(length) {
- if (this.offset + length > this.rawBuffer.length) {
- // we need more size, copying old one to new buffer
- var oldLength = this.rawBuffer.length,
- newBuffer = Buffer.alloc(oldLength + length + (oldLength / 2));
- this.rawBuffer.copy(newBuffer, 0, 0, this.contentSize);
- this.rawBuffer = newBuffer;
- }
-};
-
-WriteStream.prototype.writeToBuffer = function(type, value, length) {
- if (value === '' || value === null) return;
-
- this.checkSize(length);
- this.rawBuffer[this.getWriteType(type)](value, this.offset);
- this.increment(length);
-};
-
-WriteStream.prototype.writeRawBuffer = function(source, start, length) {
- if (!source) return;
- this.checkSize(length);
- source.copy(this.rawBuffer, this.offset, start, length);
- this.increment(length);
-};
-
-WriteStream.prototype.write = function(type, value) {
- if (isString(type)) {
- this.writeString(value, type);
- } else {
- this.writeToBuffer(type, value, calcLength(type));
- }
-};
-
-WriteStream.prototype.writeString = function(string, type) {
- var encoding = this.getEncoding(type),
- length = Buffer.byteLength(string, encoding);
- this.rawBuffer.write(string, this.offset, length, encoding);
- this.increment(length);
-};
-
-WriteStream.prototype.buffer = function() {
- return this.rawBuffer.slice(0, this.contentSize);
-};
-
-WriteStream.prototype.toReadBuffer = function() {
- return new ReadStream(this.buffer());
-};
-
-WriteStream.prototype.concat = function(newStream) {
- var newSize = this.size() + newStream.size();
- this.rawBuffer = Buffer.concat([this.buffer(), newStream.buffer()], newSize);
- this.contentSize = newSize;
- this.offset = newSize;
-};
-
-ReadStream = function(buffer) {
- RWStream.call(this);
- this.rawBuffer = buffer;
- this.offset = 0;
-};
-
-util.inherits(ReadStream, RWStream);
-
-ReadStream.prototype.size = function() {
- return this.rawBuffer.length;
-};
-
-ReadStream.prototype.increment = function(add) {
- this.offset += add;
-};
-
-ReadStream.prototype.more = function(length) {
- var newBuf = this.rawBuffer.slice(this.offset, this.offset + length);
- this.increment(length);
- return new ReadStream(newBuf);
-};
-
-ReadStream.prototype.reset = function() {
- this.offset = 0;
- return this;
-};
-
-ReadStream.prototype.end = function() {
- return this.offset >= this.size();
-};
-
-ReadStream.prototype.readFromBuffer = function(type, length) {
- //this.checkSize(length);
- //if (this.offset + length > this.rawBuffer.length) throw ("out of bound " + this.offset + "," + length + "," + this.rawBuffer.length);
- var value = this.rawBuffer[this.getReadType(type)](this.offset);
- this.increment(length);
- return value;
-};
-
-ReadStream.prototype.read = function(type, length) {
- var value = null;
- if (isString(type)) {
- value = this.readString(length, type);
- } else {
- value = this.readFromBuffer(type, calcLength(type));
- }
-
- return value;
-};
-
-ReadStream.prototype.readString = function(length, type) {
- var encoding = this.getEncoding(type),
- str = this.rawBuffer.toString(encoding, this.offset, this.offset + length);
- this.increment(length);
- return str;
-};
-
-ReadStream.prototype.buffer = function() {
- return this.rawBuffer;
-};
-
-ReadStream.prototype.concat = function(newStream) {
- var newSize = this.size() + newStream.size();
- this.rawBuffer = Buffer.concat([this.buffer(), newStream.buffer()], newSize);
- this.contentSize = newSize;
- this.offset = newSize;
-};
-
-RWStream.writes = {};
-RWStream.writes[C.BIG_ENDIAN] = {};
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_UINT8] = 'writeUInt8';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_UINT16] = 'writeUInt16BE';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_UINT32] = 'writeUInt32BE';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_INT8] = 'writeInt8';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_INT16] = 'writeInt16BE';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_INT32] = 'writeInt32BE';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_FLOAT] = 'writeFloatBE';
-RWStream.writes[C.BIG_ENDIAN][C.TYPE_DOUBLE] = 'writeDoubleBE';
-
-RWStream.writes[C.LITTLE_ENDIAN] = {};
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_UINT8] = 'writeUInt8';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_UINT16] = 'writeUInt16LE';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_UINT32] = 'writeUInt32LE';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_INT8] = 'writeInt8';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_INT16] = 'writeInt16LE';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_INT32] = 'writeInt32LE';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_FLOAT] = 'writeFloatLE';
-RWStream.writes[C.LITTLE_ENDIAN][C.TYPE_DOUBLE] = 'writeDoubleLE';
-
-RWStream.reads = {};
-RWStream.reads[C.BIG_ENDIAN] = {};
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_UINT8] = 'readUInt8';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_UINT16] = 'readUInt16BE';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_UINT32] = 'readUInt32BE';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_INT8] = 'readInt8';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_INT16] = 'readInt16BE';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_INT32] = 'readInt32BE';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_FLOAT] = 'readFloatBE';
-RWStream.reads[C.BIG_ENDIAN][C.TYPE_DOUBLE] = 'readDoubleBE';
-
-RWStream.reads[C.LITTLE_ENDIAN] = {};
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_UINT8] = 'readUInt8';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_UINT16] = 'readUInt16LE';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_UINT32] = 'readUInt32LE';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_INT8] = 'readInt8';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_INT16] = 'readInt16LE';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_INT32] = 'readInt32LE';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_FLOAT] = 'readFloatLE';
-RWStream.reads[C.LITTLE_ENDIAN][C.TYPE_DOUBLE] = 'readDoubleLE';
-
-RWStream.encodings = {};
-RWStream.encodings[C.TYPE_HEX] = 'hex';
-RWStream.encodings[C.TYPE_ASCII] = 'ascii';
diff --git a/Packages/ohif-dicom-services/server/DIMSE/constants.js b/Packages/ohif-dicom-services/server/DIMSE/constants.js
deleted file mode 100755
index 26a8c01ae..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/constants.js
+++ /dev/null
@@ -1,100 +0,0 @@
-C = {
- IMPLEM_UID : "1.2.840.0.1.3680045.8.641",
- IMPLEM_VERSION : "OHIF-DCM-0.1",
- DEFAULT_MAX_PACKAGE_SIZE : 32768,
- APPLICATION_CONTEXT_NAME : "1.2.840.10008.3.1.1.1",
- PROTOCOL_VERSION : "0001",
- ITEM_TYPE_RESERVED : "00",
- ITEM_TYPE_APPLICATION_CONTEXT : "10",
- ITEM_TYPE_PDU_ASSOCIATE_RQ : "01",
- ITEM_TYPE_PDU_ASSOCIATE_AC : "02",
- ITEM_TYPE_PDU_PDATA : "04",
- ITEM_TYPE_PDU_RELEASE_RQ : "05",
- ITEM_TYPE_PDU_RELEASE_RP : "06",
- ITEM_TYPE_PDU_AABORT : "07",
- ITEM_TYPE_PRESENTATION_CONTEXT : "20",
- ITEM_TYPE_PRESENTATION_CONTEXT_AC : "21",
- ITEM_TYPE_ABSTRACT_CONTEXT : "30",
- ITEM_TYPE_TRANSFER_CONTEXT : "40",
- ITEM_TYPE_USER_INFORMATION : "50",
- ITEM_TYPE_MAXIMUM_LENGTH : "51",
- ITEM_TYPE_IMPLEMENTATION_UID : "52",
- ITEM_TYPE_IMPLEMENTATION_VERSION : "55",
- IMPLICIT_LITTLE_ENDIAN : "1.2.840.10008.1.2",
- EXPLICIT_LITTLE_ENDIAN : "1.2.840.10008.1.2.1",
- EXPLICIT_BIG_ENDIAN : "1.2.840.10008.1.2.2",
- SOP_PATIENT_ROOT_FIND : "1.2.840.10008.5.1.4.1.2.1.1",
- SOP_PATIENT_ROOT_MOVE : "1.2.840.10008.5.1.4.1.2.1.2",
- SOP_PATIENT_ROOT_GET : "1.2.840.10008.5.1.4.1.2.1.3",
- SOP_STUDY_ROOT_FIND : "1.2.840.10008.5.1.4.1.2.2.1",
- SOP_STUDY_ROOT_MOVE : "1.2.840.10008.5.1.4.1.2.2.2",
- SOP_STUDY_ROOT_GET : "1.2.840.10008.5.1.4.1.2.2.3",
- SOP_VERIFICATION : "1.2.840.10008.1.1",
- SOP_HANGING_PROTOCOL_FIND : "1.2.840.10008.5.1.4.38.2",
- SOP_MR_IMAGE_STORAGE : "1.2.840.10008.5.1.4.1.1.4",
- TYPE_ASCII : 1,
- TYPE_HEX : 2,
- TYPE_UINT8 : 3,
- TYPE_UINT16 : 4,
- TYPE_UINT32 : 5,
- TYPE_COMPOSITE : 6,
- TYPE_FLOAT : 7,
- TYPE_DOUBLE : 8,
- TYPE_INT8 : 9,
- TYPE_INT16 : 10,
- TYPE_INT32 : 11,
- TYPE_BUFFER : 12,
- RESULT_REASON_ACCEPTANCE : 0,
- RESULT_REASON_USER_REJECTION : 1,
- RESULT_REASON_NO_REASON :2,
- RESULT_REASON_ABSTRACT_NOT_SUPPORTED : 3,
- RESULT_REASON_TRANSFER_NOT_SUPPORTED : 4,
- DEFAULT_MESSAGE_ID : 1,
- LITTLE_ENDIAN : 1,
- BIG_ENDIAN : 2,
- VM_SINGLE :1,
- VM_TWO : 3,
- VM_THREE : 4,
- VM_FOUR : 5,
- VM_1N : 6,
- VM_2N :7,
- VM_3N :8,
- VM_6N :9,
- VM_3_3N : 10,
- VM_2_2N : 11,
- VM_16 : 12,
- VM_1_2 : 13,
- VM_1_3 : 18,
- VM_SIX : 14,
- VM_NINE : 15,
- VM_1_32 : 16,
- VM_1_99 : 17,
- PRIORITY_LOW : 0x2,
- PRIORITY_MEDIUM : 0x0,
- PRIORITY_HIGH : 0x1,
- DATA_SET_PRESENT : 1,
- DATE_SET_ABSENCE : 0x0101,
- DATA_TYPE_COMMAND : 1,
- DATA_TYPE_DATA : 0,
- DATA_IS_LAST : 1,
- DATA_NOT_LAST : 0,
- SOURCE_SERVICE_USER : 0,
- SOURCE_SERVICE_PROVIDER : 2,
- QUERY_RETRIEVE_LEVEL_PATIENT : "PATIENT",
- QUERY_RETRIEVE_LEVEL_STUDY : "STUDY",
- QUERY_RETRIEVE_LEVEL_SERIES : "SERIES",
- QUERY_RETRIEVE_LEVEL_IMAGE : "IMAGE",
- VALUE_LENGTH_UNDEFINED : 0xffffffff,
- STATUS_SUCCESS : 0x0000,
- STATUS_CANCEL : 0xfe00,
- STATUS_CFIND_CONT_OK : 0xff00,
- STATUS_CFIND_CONT_WARN : 0xff01,
- COMMAND_C_GET_RSP : 0x8010,
- COMMAND_C_MOVE_RSP : 0x8021,
- COMMAND_C_GET_RQ : 0x10,
- COMMAND_C_STORE_RQ : 0x01,
- COMMAND_C_FIND_RSP : 0x8020,
- COMMAND_C_MOVE_RQ : 0x21,
- COMMAND_C_FIND_RQ : 0x20,
- COMMAND_C_STORE_RSP : 0x8001
-};
\ No newline at end of file
diff --git a/Packages/ohif-dicom-services/server/DIMSE/elements_data.js b/Packages/ohif-dicom-services/server/DIMSE/elements_data.js
deleted file mode 100755
index ce4f1f3d5..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/elements_data.js
+++ /dev/null
@@ -1,3611 +0,0 @@
-var dicomNDict = {
- 0x00020000 : { vr : 'UL', vm : C.VM_SINGLE, keyword : "FileMetaInformationGroupLength" },
- 0x00020001 : { vr : 'OB', vm : C.VM_SINGLE, keyword : "FileMetaInformationVersion" },
- 0x00020002 : { vr : 'UI', vm : C.VM_SINGLE, keyword : "MediaStorageSOPClassUID" },
- 0x00020003 : { vr : 'UI', vm : C.VM_SINGLE, keyword : "MediaStorageSOPInstanceUID" },
- 0x00020010 : { vr : 'UI', vm : C.VM_SINGLE, keyword : "TransferSyntaxUID" },
- 0x00020012 : { vr : 'UI', vm : C.VM_SINGLE, keyword : "ImplementationClassUID" },
- 0x00020013 : { vr : 'SH', vm : C.VM_SINGLE, keyword : "ImplementationVersionName" },
- 0x00020016 : { vr : 'AE', vm : C.VM_SINGLE, keyword : "SourceApplicationEntityTitle" },
- 0x00020100 : { vr : 'UI', vm : C.VM_SINGLE, keyword : "PrivateInformationCreatorUID" },
- 0x00020102 : { vr : 'OB', vm : C.VM_SINGLE, keyword : "PrivateInformation" },
- 0x00080001 : { vr : "UL", vm : C.VM_SINGLE, keyword : "LengthToEnd"},
- 0x00080005 : { vr : "CS", vm : C.VM_1N, keyword : "SpecificCharacterSet"},
- 0x00080006 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LanguageCodeSequence"},
- 0x00080008 : { vr : "CS", vm : C.VM_2N, keyword : "ImageType"},
- 0x00080010 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RecognitionCode"},
- 0x00080012 : { vr : "DA", vm : C.VM_SINGLE, keyword : "InstanceCreationDate"},
- 0x00080013 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InstanceCreationTime"},
- 0x00080014 : { vr : "UI", vm : C.VM_SINGLE, keyword : "InstanceCreatorUID"},
- 0x00080016 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SOPClassUID"},
- 0x00080018 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SOPInstanceUID"},
- 0x0008001A : { vr : "UI", vm : C.VM_1N, keyword : "RelatedGeneralSOPClassUID"},
- 0x0008001B : { vr : "UI", vm : C.VM_SINGLE, keyword : "OriginalSpecializedSOPClassUID"},
- 0x00080020 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StudyDate"},
- 0x00080021 : { vr : "DA", vm : C.VM_SINGLE, keyword : "SeriesDate"},
- 0x00080022 : { vr : "DA", vm : C.VM_SINGLE, keyword : "AcquisitionDate"},
- 0x00080023 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ContentDate"},
- 0x00080024 : { vr : "DA", vm : C.VM_SINGLE, keyword : "OverlayDate"},
- 0x00080025 : { vr : "DA", vm : C.VM_SINGLE, keyword : "CurveDate"},
- 0x0008002A : { vr : "DT", vm : C.VM_SINGLE, keyword : "AcquisitionDateTime"},
- 0x00080030 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StudyTime"},
- 0x00080031 : { vr : "TM", vm : C.VM_SINGLE, keyword : "SeriesTime"},
- 0x00080032 : { vr : "TM", vm : C.VM_SINGLE, keyword : "AcquisitionTime"},
- 0x00080033 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ContentTime"},
- 0x00080034 : { vr : "TM", vm : C.VM_SINGLE, keyword : "OverlayTime"},
- 0x00080035 : { vr : "TM", vm : C.VM_SINGLE, keyword : "CurveTime"},
- 0x00080040 : { vr : "US", vm : C.VM_SINGLE, keyword : "DataSetType"},
- 0x00080041 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DataSetSubtype"},
- 0x00080042 : { vr : "CS", vm : C.VM_SINGLE, keyword : "NuclearMedicineSeriesType"},
- 0x00080050 : { vr : "SH", vm : C.VM_SINGLE, keyword : "AccessionNumber"},
- 0x00080051 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfAccessionNumberSequence"},
- 0x00080052 : { vr : "CS", vm : C.VM_SINGLE, keyword : "QueryRetrieveLevel"},
- 0x00080054 : { vr : "AE", vm : C.VM_1N, keyword : "RetrieveAETitle"},
- 0x00080056 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InstanceAvailability"},
- 0x00080058 : { vr : "UI", vm : C.VM_1N, keyword : "FailedSOPInstanceUIDList"},
- 0x00080060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Modality"},
- 0x00080061 : { vr : "CS", vm : C.VM_1N, keyword : "ModalitiesInStudy"},
- 0x00080062 : { vr : "UI", vm : C.VM_1N, keyword : "SOPClassesInStudy"},
- 0x00080064 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ConversionType"},
- 0x00080068 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PresentationIntentType"},
- 0x00080070 : { vr : "LO", vm : C.VM_SINGLE, keyword : "Manufacturer"},
- 0x00080080 : { vr : "LO", vm : C.VM_SINGLE, keyword : "InstitutionName"},
- 0x00080081 : { vr : "ST", vm : C.VM_SINGLE, keyword : "InstitutionAddress"},
- 0x00080082 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InstitutionCodeSequence"},
- 0x00080090 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ReferringPhysicianName"},
- 0x00080092 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ReferringPhysicianAddress"},
- 0x00080094 : { vr : "SH", vm : C.VM_1N, keyword : "ReferringPhysicianTelephoneNumbers"},
- 0x00080096 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferringPhysicianIdentificationSequence"},
- 0x00080100 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CodeValue"},
- 0x00080102 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CodingSchemeDesignator"},
- 0x00080103 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CodingSchemeVersion"},
- 0x00080104 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CodeMeaning"},
- 0x00080105 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MappingResource"},
- 0x00080106 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ContextGroupVersion"},
- 0x00080107 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ContextGroupLocalVersion"},
- 0x0008010B : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContextGroupExtensionFlag"},
- 0x0008010C : { vr : "UI", vm : C.VM_SINGLE, keyword : "CodingSchemeUID"},
- 0x0008010D : { vr : "UI", vm : C.VM_SINGLE, keyword : "ContextGroupExtensionCreatorUID"},
- 0x0008010F : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContextIdentifier"},
- 0x00080110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CodingSchemeIdentificationSequence"},
- 0x00080112 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CodingSchemeRegistry"},
- 0x00080114 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CodingSchemeExternalID"},
- 0x00080115 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CodingSchemeName"},
- 0x00080116 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CodingSchemeResponsibleOrganization"},
- 0x00080117 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ContextUID"},
- 0x00080201 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TimezoneOffsetFromUTC"},
- 0x00081000 : { vr : "AE", vm : C.VM_SINGLE, keyword : "NetworkID"},
- 0x00081010 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StationName"},
- 0x00081030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "StudyDescription"},
- 0x00081032 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureCodeSequence"},
- 0x0008103E : { vr : "LO", vm : C.VM_SINGLE, keyword : "SeriesDescription"},
- 0x0008103F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SeriesDescriptionCodeSequence"},
- 0x00081040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "InstitutionalDepartmentName"},
- 0x00081048 : { vr : "PN", vm : C.VM_1N, keyword : "PhysiciansOfRecord"},
- 0x00081049 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PhysiciansOfRecordIdentificationSequence"},
- 0x00081050 : { vr : "PN", vm : C.VM_1N, keyword : "PerformingPhysicianName"},
- 0x00081052 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformingPhysicianIdentificationSequence"},
- 0x00081060 : { vr : "PN", vm : C.VM_1N, keyword : "NameOfPhysiciansReadingStudy"},
- 0x00081062 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PhysiciansReadingStudyIdentificationSequence"},
- 0x00081070 : { vr : "PN", vm : C.VM_1N, keyword : "OperatorsName"},
- 0x00081072 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OperatorIdentificationSequence"},
- 0x00081080 : { vr : "LO", vm : C.VM_1N, keyword : "AdmittingDiagnosesDescription"},
- 0x00081084 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AdmittingDiagnosesCodeSequence"},
- 0x00081090 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ManufacturerModelName"},
- 0x00081100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedResultsSequence"},
- 0x00081110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedStudySequence"},
- 0x00081111 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPerformedProcedureStepSequence"},
- 0x00081115 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSeriesSequence"},
- 0x00081120 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPatientSequence"},
- 0x00081125 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedVisitSequence"},
- 0x00081130 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedOverlaySequence"},
- 0x00081134 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedStereometricInstanceSequence"},
- 0x0008113A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedWaveformSequence"},
- 0x00081140 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageSequence"},
- 0x00081145 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedCurveSequence"},
- 0x0008114A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedInstanceSequence"},
- 0x0008114B : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedRealWorldValueMappingInstanceSequence"},
- 0x00081150 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedSOPClassUID"},
- 0x00081155 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedSOPInstanceUID"},
- 0x0008115A : { vr : "UI", vm : C.VM_1N, keyword : "SOPClassesSupported"},
- 0x00081160 : { vr : "IS", vm : C.VM_1N, keyword : "ReferencedFrameNumber"},
- 0x00081161 : { vr : "UL", vm : C.VM_1N, keyword : "SimpleFrameList"},
- 0x00081162 : { vr : "UL", vm : C.VM_3_3N, keyword : "CalculatedFrameList"},
- 0x00081163 : { vr : "FD", vm : C.VM_TWO, keyword : "TimeRange"},
- 0x00081164 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameExtractionSequence"},
- 0x00081167 : { vr : "UI", vm : C.VM_SINGLE, keyword : "MultiFrameSourceSOPInstanceUID"},
- 0x00081195 : { vr : "UI", vm : C.VM_SINGLE, keyword : "TransactionUID"},
- 0x00081197 : { vr : "US", vm : C.VM_SINGLE, keyword : "FailureReason"},
- 0x00081198 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FailedSOPSequence"},
- 0x00081199 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSOPSequence"},
- 0x00081200 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StudiesContainingOtherReferencedInstancesSequence"},
- 0x00081250 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelatedSeriesSequence"},
- 0x00082110 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LossyImageCompressionRetired"},
- 0x00082111 : { vr : "ST", vm : C.VM_SINGLE, keyword : "DerivationDescription"},
- 0x00082112 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceImageSequence"},
- 0x00082120 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StageName"},
- 0x00082122 : { vr : "IS", vm : C.VM_SINGLE, keyword : "StageNumber"},
- 0x00082124 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfStages"},
- 0x00082127 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ViewName"},
- 0x00082128 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ViewNumber"},
- 0x00082129 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfEventTimers"},
- 0x0008212A : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfViewsInStage"},
- 0x00082130 : { vr : "DS", vm : C.VM_1N, keyword : "EventElapsedTimes"},
- 0x00082132 : { vr : "LO", vm : C.VM_1N, keyword : "EventTimerNames"},
- 0x00082133 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EventTimerSequence"},
- 0x00082134 : { vr : "FD", vm : C.VM_SINGLE, keyword : "EventTimeOffset"},
- 0x00082135 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EventCodeSequence"},
- 0x00082142 : { vr : "IS", vm : C.VM_SINGLE, keyword : "StartTrim"},
- 0x00082143 : { vr : "IS", vm : C.VM_SINGLE, keyword : "StopTrim"},
- 0x00082144 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RecommendedDisplayFrameRate"},
- 0x00082200 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransducerPosition"},
- 0x00082204 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransducerOrientation"},
- 0x00082208 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnatomicStructure"},
- 0x00082218 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicRegionSequence"},
- 0x00082220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicRegionModifierSequence"},
- 0x00082228 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrimaryAnatomicStructureSequence"},
- 0x00082229 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicStructureSpaceOrRegionSequence"},
- 0x00082230 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrimaryAnatomicStructureModifierSequence"},
- 0x00082240 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerPositionSequence"},
- 0x00082242 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerPositionModifierSequence"},
- 0x00082244 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerOrientationSequence"},
- 0x00082246 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerOrientationModifierSequence"},
- 0x00082251 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicStructureSpaceOrRegionCodeSequenceTrial"},
- 0x00082253 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicPortalOfEntranceCodeSequenceTrial"},
- 0x00082255 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicApproachDirectionCodeSequenceTrial"},
- 0x00082256 : { vr : "ST", vm : C.VM_SINGLE, keyword : "AnatomicPerspectiveDescriptionTrial"},
- 0x00082257 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicPerspectiveCodeSequenceTrial"},
- 0x00082258 : { vr : "ST", vm : C.VM_SINGLE, keyword : "AnatomicLocationOfExaminingInstrumentDescriptionTrial"},
- 0x00082259 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicLocationOfExaminingInstrumentCodeSequenceTrial"},
- 0x0008225A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnatomicStructureSpaceOrRegionModifierCodeSequenceTrial"},
- 0x0008225C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OnAxisBackgroundAnatomicStructureCodeSequenceTrial"},
- 0x00083001 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlternateRepresentationSequence"},
- 0x00083010 : { vr : "UI", vm : C.VM_SINGLE, keyword : "IrradiationEventUID"},
- 0x00084000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "IdentifyingComments"},
- 0x00089007 : { vr : "CS", vm : C.VM_FOUR, keyword : "FrameType"},
- 0x00089092 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageEvidenceSequence"},
- 0x00089121 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedRawDataSequence"},
- 0x00089123 : { vr : "UI", vm : C.VM_SINGLE, keyword : "CreatorVersionUID"},
- 0x00089124 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DerivationImageSequence"},
- 0x00089154 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceImageEvidenceSequence"},
- 0x00089205 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PixelPresentation"},
- 0x00089206 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VolumetricProperties"},
- 0x00089207 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VolumeBasedCalculationTechnique"},
- 0x00089208 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ComplexImageComponent"},
- 0x00089209 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionContrast"},
- 0x00089215 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DerivationCodeSequence"},
- 0x00089237 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPresentationStateSequence"},
- 0x00089410 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedOtherPlaneSequence"},
- 0x00089458 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameDisplaySequence"},
- 0x00089459 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RecommendedDisplayFrameRateInFloat"},
- 0x00089460 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SkipFrameRangeFlag"},
- 0x00100010 : { vr : "PN", vm : C.VM_SINGLE, keyword : "PatientName"},
- 0x00100020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientID"},
- 0x00100021 : { vr : "LO", vm : C.VM_SINGLE, keyword : "IssuerOfPatientID"},
- 0x00100022 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TypeOfPatientID"},
- 0x00100024 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfPatientIDQualifiersSequence"},
- 0x00100030 : { vr : "DA", vm : C.VM_SINGLE, keyword : "PatientBirthDate"},
- 0x00100032 : { vr : "TM", vm : C.VM_SINGLE, keyword : "PatientBirthTime"},
- 0x00100040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientSex"},
- 0x00100050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientInsurancePlanCodeSequence"},
- 0x00100101 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientPrimaryLanguageCodeSequence"},
- 0x00100102 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientPrimaryLanguageModifierCodeSequence"},
- 0x00101000 : { vr : "LO", vm : C.VM_1N, keyword : "OtherPatientIDs"},
- 0x00101001 : { vr : "PN", vm : C.VM_1N, keyword : "OtherPatientNames"},
- 0x00101002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OtherPatientIDsSequence"},
- 0x00101005 : { vr : "PN", vm : C.VM_SINGLE, keyword : "PatientBirthName"},
- 0x00101010 : { vr : "AS", vm : C.VM_SINGLE, keyword : "PatientAge"},
- 0x00101020 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PatientSize"},
- 0x00101021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientSizeCodeSequence"},
- 0x00101030 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PatientWeight"},
- 0x00101040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientAddress"},
- 0x00101050 : { vr : "LO", vm : C.VM_1N, keyword : "InsurancePlanIdentification"},
- 0x00101060 : { vr : "PN", vm : C.VM_SINGLE, keyword : "PatientMotherBirthName"},
- 0x00101080 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MilitaryRank"},
- 0x00101081 : { vr : "LO", vm : C.VM_SINGLE, keyword : "BranchOfService"},
- 0x00101090 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MedicalRecordLocator"},
- 0x00102000 : { vr : "LO", vm : C.VM_1N, keyword : "MedicalAlerts"},
- 0x00102110 : { vr : "LO", vm : C.VM_1N, keyword : "Allergies"},
- 0x00102150 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CountryOfResidence"},
- 0x00102152 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RegionOfResidence"},
- 0x00102154 : { vr : "SH", vm : C.VM_1N, keyword : "PatientTelephoneNumbers"},
- 0x00102160 : { vr : "SH", vm : C.VM_SINGLE, keyword : "EthnicGroup"},
- 0x00102180 : { vr : "SH", vm : C.VM_SINGLE, keyword : "Occupation"},
- 0x001021A0 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SmokingStatus"},
- 0x001021B0 : { vr : "LT", vm : C.VM_SINGLE, keyword : "AdditionalPatientHistory"},
- 0x001021C0 : { vr : "US", vm : C.VM_SINGLE, keyword : "PregnancyStatus"},
- 0x001021D0 : { vr : "DA", vm : C.VM_SINGLE, keyword : "LastMenstrualDate"},
- 0x001021F0 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientReligiousPreference"},
- 0x00102201 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientSpeciesDescription"},
- 0x00102202 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientSpeciesCodeSequence"},
- 0x00102203 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientSexNeutered"},
- 0x00102210 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnatomicalOrientationType"},
- 0x00102292 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientBreedDescription"},
- 0x00102293 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientBreedCodeSequence"},
- 0x00102294 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BreedRegistrationSequence"},
- 0x00102295 : { vr : "LO", vm : C.VM_SINGLE, keyword : "BreedRegistrationNumber"},
- 0x00102296 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BreedRegistryCodeSequence"},
- 0x00102297 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ResponsiblePerson"},
- 0x00102298 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ResponsiblePersonRole"},
- 0x00102299 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ResponsibleOrganization"},
- 0x00104000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "PatientComments"},
- 0x00109431 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ExaminedBodyThickness"},
- 0x00120010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSponsorName"},
- 0x00120020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialProtocolID"},
- 0x00120021 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialProtocolName"},
- 0x00120030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSiteID"},
- 0x00120031 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSiteName"},
- 0x00120040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSubjectID"},
- 0x00120042 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSubjectReadingID"},
- 0x00120050 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialTimePointID"},
- 0x00120051 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ClinicalTrialTimePointDescription"},
- 0x00120060 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialCoordinatingCenterName"},
- 0x00120062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientIdentityRemoved"},
- 0x00120063 : { vr : "LO", vm : C.VM_1N, keyword : "DeidentificationMethod"},
- 0x00120064 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DeidentificationMethodCodeSequence"},
- 0x00120071 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSeriesID"},
- 0x00120072 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialSeriesDescription"},
- 0x00120081 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialProtocolEthicsCommitteeName"},
- 0x00120082 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ClinicalTrialProtocolEthicsCommitteeApprovalNumber"},
- 0x00120083 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ConsentForClinicalTrialUseSequence"},
- 0x00120084 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DistributionType"},
- 0x00120085 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ConsentForDistributionFlag"},
- 0x00140023 : { vr : "ST", vm : C.VM_1N, keyword : "CADFileFormat"},
- 0x00140024 : { vr : "ST", vm : C.VM_1N, keyword : "ComponentReferenceSystem"},
- 0x00140025 : { vr : "ST", vm : C.VM_1N, keyword : "ComponentManufacturingProcedure"},
- 0x00140028 : { vr : "ST", vm : C.VM_1N, keyword : "ComponentManufacturer"},
- 0x00140030 : { vr : "DS", vm : C.VM_1N, keyword : "MaterialThickness"},
- 0x00140032 : { vr : "DS", vm : C.VM_1N, keyword : "MaterialPipeDiameter"},
- 0x00140034 : { vr : "DS", vm : C.VM_1N, keyword : "MaterialIsolationDiameter"},
- 0x00140042 : { vr : "ST", vm : C.VM_1N, keyword : "MaterialGrade"},
- 0x00140044 : { vr : "ST", vm : C.VM_1N, keyword : "MaterialPropertiesFileID"},
- 0x00140045 : { vr : "ST", vm : C.VM_1N, keyword : "MaterialPropertiesFileFormat"},
- 0x00140046 : { vr : "LT", vm : C.VM_SINGLE, keyword : "MaterialNotes"},
- 0x00140050 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ComponentShape"},
- 0x00140052 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CurvatureType"},
- 0x00140054 : { vr : "DS", vm : C.VM_SINGLE, keyword : "OuterDiameter"},
- 0x00140056 : { vr : "DS", vm : C.VM_SINGLE, keyword : "InnerDiameter"},
- 0x00141010 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ActualEnvironmentalConditions"},
- 0x00141020 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ExpiryDate"},
- 0x00141040 : { vr : "ST", vm : C.VM_SINGLE, keyword : "EnvironmentalConditions"},
- 0x00142002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EvaluatorSequence"},
- 0x00142004 : { vr : "IS", vm : C.VM_SINGLE, keyword : "EvaluatorNumber"},
- 0x00142006 : { vr : "PN", vm : C.VM_SINGLE, keyword : "EvaluatorName"},
- 0x00142008 : { vr : "IS", vm : C.VM_SINGLE, keyword : "EvaluationAttempt"},
- 0x00142012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IndicationSequence"},
- 0x00142014 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IndicationNumber"},
- 0x00142016 : { vr : "SH", vm : C.VM_SINGLE, keyword : "IndicationLabel"},
- 0x00142018 : { vr : "ST", vm : C.VM_SINGLE, keyword : "IndicationDescription"},
- 0x0014201A : { vr : "CS", vm : C.VM_1N, keyword : "IndicationType"},
- 0x0014201C : { vr : "CS", vm : C.VM_SINGLE, keyword : "IndicationDisposition"},
- 0x0014201E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IndicationROISequence"},
- 0x00142030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IndicationPhysicalPropertySequence"},
- 0x00142032 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PropertyLabel"},
- 0x00142202 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CoordinateSystemNumberOfAxes"},
- 0x00142204 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxesSequence"},
- 0x00142206 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisDescription"},
- 0x00142208 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CoordinateSystemDataSetMapping"},
- 0x0014220A : { vr : "IS", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisNumber"},
- 0x0014220C : { vr : "CS", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisType"},
- 0x0014220E : { vr : "CS", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisUnits"},
- 0x00142210 : { vr : "OB", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisValues"},
- 0x00142220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CoordinateSystemTransformSequence"},
- 0x00142222 : { vr : "ST", vm : C.VM_SINGLE, keyword : "TransformDescription"},
- 0x00142224 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TransformNumberOfAxes"},
- 0x00142226 : { vr : "IS", vm : C.VM_1N, keyword : "TransformOrderOfAxes"},
- 0x00142228 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransformedAxisUnits"},
- 0x0014222A : { vr : "DS", vm : C.VM_1N, keyword : "CoordinateSystemTransformRotationAndScaleMatrix"},
- 0x0014222C : { vr : "DS", vm : C.VM_1N, keyword : "CoordinateSystemTransformTranslationMatrix"},
- 0x00143011 : { vr : "DS", vm : C.VM_SINGLE, keyword : "InternalDetectorFrameTime"},
- 0x00143012 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NumberOfFramesIntegrated"},
- 0x00143020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DetectorTemperatureSequence"},
- 0x00143022 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SensorName"},
- 0x00143024 : { vr : "DS", vm : C.VM_SINGLE, keyword : "HorizontalOffsetOfSensor"},
- 0x00143026 : { vr : "DS", vm : C.VM_SINGLE, keyword : "VerticalOffsetOfSensor"},
- 0x00143028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SensorTemperature"},
- 0x00143040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DarkCurrentSequence"},
- 0x00143050 : { vr : "OB", vm : C.VM_SINGLE, keyword : "DarkCurrentCounts"},
- 0x00143060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GainCorrectionReferenceSequence"},
- 0x00143070 : { vr : "OB", vm : C.VM_SINGLE, keyword : "AirCounts"},
- 0x00143071 : { vr : "DS", vm : C.VM_SINGLE, keyword : "KVUsedInGainCalibration"},
- 0x00143072 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MAUsedInGainCalibration"},
- 0x00143073 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NumberOfFramesUsedForIntegration"},
- 0x00143074 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FilterMaterialUsedInGainCalibration"},
- 0x00143075 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FilterThicknessUsedInGainCalibration"},
- 0x00143076 : { vr : "DA", vm : C.VM_SINGLE, keyword : "DateOfGainCalibration"},
- 0x00143077 : { vr : "TM", vm : C.VM_SINGLE, keyword : "TimeOfGainCalibration"},
- 0x00143080 : { vr : "OB", vm : C.VM_SINGLE, keyword : "BadPixelImage"},
- 0x00143099 : { vr : "LT", vm : C.VM_SINGLE, keyword : "CalibrationNotes"},
- 0x00144002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PulserEquipmentSequence"},
- 0x00144004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PulserType"},
- 0x00144006 : { vr : "LT", vm : C.VM_SINGLE, keyword : "PulserNotes"},
- 0x00144008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReceiverEquipmentSequence"},
- 0x0014400A : { vr : "CS", vm : C.VM_SINGLE, keyword : "AmplifierType"},
- 0x0014400C : { vr : "LT", vm : C.VM_SINGLE, keyword : "ReceiverNotes"},
- 0x0014400E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PreAmplifierEquipmentSequence"},
- 0x0014400F : { vr : "LT", vm : C.VM_SINGLE, keyword : "PreAmplifierNotes"},
- 0x00144010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransmitTransducerSequence"},
- 0x00144011 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReceiveTransducerSequence"},
- 0x00144012 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfElements"},
- 0x00144013 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ElementShape"},
- 0x00144014 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ElementDimensionA"},
- 0x00144015 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ElementDimensionB"},
- 0x00144016 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ElementPitch"},
- 0x00144017 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MeasuredBeamDimensionA"},
- 0x00144018 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MeasuredBeamDimensionB"},
- 0x00144019 : { vr : "DS", vm : C.VM_SINGLE, keyword : "LocationOfMeasuredBeamDiameter"},
- 0x0014401A : { vr : "DS", vm : C.VM_SINGLE, keyword : "NominalFrequency"},
- 0x0014401B : { vr : "DS", vm : C.VM_SINGLE, keyword : "MeasuredCenterFrequency"},
- 0x0014401C : { vr : "DS", vm : C.VM_SINGLE, keyword : "MeasuredBandwidth"},
- 0x00144020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PulserSettingsSequence"},
- 0x00144022 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PulseWidth"},
- 0x00144024 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ExcitationFrequency"},
- 0x00144026 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ModulationType"},
- 0x00144028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "Damping"},
- 0x00144030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReceiverSettingsSequence"},
- 0x00144031 : { vr : "DS", vm : C.VM_SINGLE, keyword : "AcquiredSoundpathLength"},
- 0x00144032 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionCompressionType"},
- 0x00144033 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionSampleSize"},
- 0x00144034 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RectifierSmoothing"},
- 0x00144035 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DACSequence"},
- 0x00144036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DACType"},
- 0x00144038 : { vr : "DS", vm : C.VM_1N, keyword : "DACGainPoints"},
- 0x0014403A : { vr : "DS", vm : C.VM_1N, keyword : "DACTimePoints"},
- 0x0014403C : { vr : "DS", vm : C.VM_1N, keyword : "DACAmplitude"},
- 0x00144040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PreAmplifierSettingsSequence"},
- 0x00144050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransmitTransducerSettingsSequence"},
- 0x00144051 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReceiveTransducerSettingsSequence"},
- 0x00144052 : { vr : "DS", vm : C.VM_SINGLE, keyword : "IncidentAngle"},
- 0x00144054 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CouplingTechnique"},
- 0x00144056 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CouplingMedium"},
- 0x00144057 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CouplingVelocity"},
- 0x00144058 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CrystalCenterLocationX"},
- 0x00144059 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CrystalCenterLocationZ"},
- 0x0014405A : { vr : "DS", vm : C.VM_SINGLE, keyword : "SoundPathLength"},
- 0x0014405C : { vr : "ST", vm : C.VM_SINGLE, keyword : "DelayLawIdentifier"},
- 0x00144060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GateSettingsSequence"},
- 0x00144062 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GateThreshold"},
- 0x00144064 : { vr : "DS", vm : C.VM_SINGLE, keyword : "VelocityOfSound"},
- 0x00144070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CalibrationSettingsSequence"},
- 0x00144072 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CalibrationProcedure"},
- 0x00144074 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ProcedureVersion"},
- 0x00144076 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ProcedureCreationDate"},
- 0x00144078 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ProcedureExpirationDate"},
- 0x0014407A : { vr : "DA", vm : C.VM_SINGLE, keyword : "ProcedureLastModifiedDate"},
- 0x0014407C : { vr : "TM", vm : C.VM_1N, keyword : "CalibrationTime"},
- 0x0014407E : { vr : "DA", vm : C.VM_1N, keyword : "CalibrationDate"},
- 0x00145002 : { vr : "IS", vm : C.VM_SINGLE, keyword : "LINACEnergy"},
- 0x00145004 : { vr : "IS", vm : C.VM_SINGLE, keyword : "LINACOutput"},
- 0x00180010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContrastBolusAgent"},
- 0x00180012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContrastBolusAgentSequence"},
- 0x00180014 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContrastBolusAdministrationRouteSequence"},
- 0x00180015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BodyPartExamined"},
- 0x00180020 : { vr : "CS", vm : C.VM_1N, keyword : "ScanningSequence"},
- 0x00180021 : { vr : "CS", vm : C.VM_1N, keyword : "SequenceVariant"},
- 0x00180022 : { vr : "CS", vm : C.VM_1N, keyword : "ScanOptions"},
- 0x00180023 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MRAcquisitionType"},
- 0x00180024 : { vr : "SH", vm : C.VM_SINGLE, keyword : "SequenceName"},
- 0x00180025 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AngioFlag"},
- 0x00180026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InterventionDrugInformationSequence"},
- 0x00180027 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InterventionDrugStopTime"},
- 0x00180028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "InterventionDrugDose"},
- 0x00180029 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InterventionDrugCodeSequence"},
- 0x0018002A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AdditionalDrugSequence"},
- 0x00180030 : { vr : "LO", vm : C.VM_1N, keyword : "Radionuclide"},
- 0x00180031 : { vr : "LO", vm : C.VM_SINGLE, keyword : "Radiopharmaceutical"},
- 0x00180032 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EnergyWindowCenterline"},
- 0x00180033 : { vr : "DS", vm : C.VM_1N, keyword : "EnergyWindowTotalWidth"},
- 0x00180034 : { vr : "LO", vm : C.VM_SINGLE, keyword : "InterventionDrugName"},
- 0x00180035 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InterventionDrugStartTime"},
- 0x00180036 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InterventionSequence"},
- 0x00180037 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TherapyType"},
- 0x00180038 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InterventionStatus"},
- 0x00180039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TherapyDescription"},
- 0x0018003A : { vr : "ST", vm : C.VM_SINGLE, keyword : "InterventionDescription"},
- 0x00180040 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CineRate"},
- 0x00180042 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InitialCineRunState"},
- 0x00180050 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SliceThickness"},
- 0x00180060 : { vr : "DS", vm : C.VM_SINGLE, keyword : "KVP"},
- 0x00180070 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CountsAccumulated"},
- 0x00180071 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionTerminationCondition"},
- 0x00180072 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EffectiveDuration"},
- 0x00180073 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionStartCondition"},
- 0x00180074 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionStartConditionData"},
- 0x00180075 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionTerminationConditionData"},
- 0x00180080 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RepetitionTime"},
- 0x00180081 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EchoTime"},
- 0x00180082 : { vr : "DS", vm : C.VM_SINGLE, keyword : "InversionTime"},
- 0x00180083 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NumberOfAverages"},
- 0x00180084 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ImagingFrequency"},
- 0x00180085 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ImagedNucleus"},
- 0x00180086 : { vr : "IS", vm : C.VM_1N, keyword : "EchoNumbers"},
- 0x00180087 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MagneticFieldStrength"},
- 0x00180088 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpacingBetweenSlices"},
- 0x00180089 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPhaseEncodingSteps"},
- 0x00180090 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DataCollectionDiameter"},
- 0x00180091 : { vr : "IS", vm : C.VM_SINGLE, keyword : "EchoTrainLength"},
- 0x00180093 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PercentSampling"},
- 0x00180094 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PercentPhaseFieldOfView"},
- 0x00180095 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PixelBandwidth"},
- 0x00181000 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DeviceSerialNumber"},
- 0x00181002 : { vr : "UI", vm : C.VM_SINGLE, keyword : "DeviceUID"},
- 0x00181003 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DeviceID"},
- 0x00181004 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PlateID"},
- 0x00181005 : { vr : "LO", vm : C.VM_SINGLE, keyword : "GeneratorID"},
- 0x00181006 : { vr : "LO", vm : C.VM_SINGLE, keyword : "GridID"},
- 0x00181007 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CassetteID"},
- 0x00181008 : { vr : "LO", vm : C.VM_SINGLE, keyword : "GantryID"},
- 0x00181010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SecondaryCaptureDeviceID"},
- 0x00181011 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HardcopyCreationDeviceID"},
- 0x00181012 : { vr : "DA", vm : C.VM_SINGLE, keyword : "DateOfSecondaryCapture"},
- 0x00181014 : { vr : "TM", vm : C.VM_SINGLE, keyword : "TimeOfSecondaryCapture"},
- 0x00181016 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SecondaryCaptureDeviceManufacturer"},
- 0x00181017 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HardcopyDeviceManufacturer"},
- 0x00181018 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SecondaryCaptureDeviceManufacturerModelName"},
- 0x00181019 : { vr : "LO", vm : C.VM_1N, keyword : "SecondaryCaptureDeviceSoftwareVersions"},
- 0x0018101A : { vr : "LO", vm : C.VM_1N, keyword : "HardcopyDeviceSoftwareVersion"},
- 0x0018101B : { vr : "LO", vm : C.VM_SINGLE, keyword : "HardcopyDeviceManufacturerModelName"},
- 0x00181020 : { vr : "LO", vm : C.VM_1N, keyword : "SoftwareVersions"},
- 0x00181022 : { vr : "SH", vm : C.VM_SINGLE, keyword : "VideoImageFormatAcquired"},
- 0x00181023 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DigitalImageFormatAcquired"},
- 0x00181030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ProtocolName"},
- 0x00181040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContrastBolusRoute"},
- 0x00181041 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ContrastBolusVolume"},
- 0x00181042 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ContrastBolusStartTime"},
- 0x00181043 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ContrastBolusStopTime"},
- 0x00181044 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ContrastBolusTotalDose"},
- 0x00181045 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SyringeCounts"},
- 0x00181046 : { vr : "DS", vm : C.VM_1N, keyword : "ContrastFlowRate"},
- 0x00181047 : { vr : "DS", vm : C.VM_1N, keyword : "ContrastFlowDuration"},
- 0x00181048 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContrastBolusIngredient"},
- 0x00181049 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ContrastBolusIngredientConcentration"},
- 0x00181050 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpatialResolution"},
- 0x00181060 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TriggerTime"},
- 0x00181061 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TriggerSourceOrType"},
- 0x00181062 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NominalInterval"},
- 0x00181063 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FrameTime"},
- 0x00181064 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CardiacFramingType"},
- 0x00181065 : { vr : "DS", vm : C.VM_1N, keyword : "FrameTimeVector"},
- 0x00181066 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FrameDelay"},
- 0x00181067 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ImageTriggerDelay"},
- 0x00181068 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MultiplexGroupTimeOffset"},
- 0x00181069 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TriggerTimeOffset"},
- 0x0018106A : { vr : "CS", vm : C.VM_SINGLE, keyword : "SynchronizationTrigger"},
- 0x0018106C : { vr : "US", vm : C.VM_TWO, keyword : "SynchronizationChannel"},
- 0x0018106E : { vr : "UL", vm : C.VM_SINGLE, keyword : "TriggerSamplePosition"},
- 0x00181070 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalRoute"},
- 0x00181071 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalVolume"},
- 0x00181072 : { vr : "TM", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalStartTime"},
- 0x00181073 : { vr : "TM", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalStopTime"},
- 0x00181074 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadionuclideTotalDose"},
- 0x00181075 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadionuclideHalfLife"},
- 0x00181076 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadionuclidePositronFraction"},
- 0x00181077 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalSpecificActivity"},
- 0x00181078 : { vr : "DT", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalStartDateTime"},
- 0x00181079 : { vr : "DT", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalStopDateTime"},
- 0x00181080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BeatRejectionFlag"},
- 0x00181081 : { vr : "IS", vm : C.VM_SINGLE, keyword : "LowRRValue"},
- 0x00181082 : { vr : "IS", vm : C.VM_SINGLE, keyword : "HighRRValue"},
- 0x00181083 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IntervalsAcquired"},
- 0x00181084 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IntervalsRejected"},
- 0x00181085 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PVCRejection"},
- 0x00181086 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SkipBeats"},
- 0x00181088 : { vr : "IS", vm : C.VM_SINGLE, keyword : "HeartRate"},
- 0x00181090 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CardiacNumberOfImages"},
- 0x00181094 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TriggerWindow"},
- 0x00181100 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ReconstructionDiameter"},
- 0x00181110 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DistanceSourceToDetector"},
- 0x00181111 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DistanceSourceToPatient"},
- 0x00181114 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EstimatedRadiographicMagnificationFactor"},
- 0x00181120 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GantryDetectorTilt"},
- 0x00181121 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GantryDetectorSlew"},
- 0x00181130 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableHeight"},
- 0x00181131 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTraverse"},
- 0x00181134 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TableMotion"},
- 0x00181135 : { vr : "DS", vm : C.VM_1N, keyword : "TableVerticalIncrement"},
- 0x00181136 : { vr : "DS", vm : C.VM_1N, keyword : "TableLateralIncrement"},
- 0x00181137 : { vr : "DS", vm : C.VM_1N, keyword : "TableLongitudinalIncrement"},
- 0x00181138 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableAngle"},
- 0x0018113A : { vr : "CS", vm : C.VM_SINGLE, keyword : "TableType"},
- 0x00181140 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RotationDirection"},
- 0x00181141 : { vr : "DS", vm : C.VM_SINGLE, keyword : "AngularPosition"},
- 0x00181142 : { vr : "DS", vm : C.VM_1N, keyword : "RadialPosition"},
- 0x00181143 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ScanArc"},
- 0x00181144 : { vr : "DS", vm : C.VM_SINGLE, keyword : "AngularStep"},
- 0x00181145 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CenterOfRotationOffset"},
- 0x00181146 : { vr : "DS", vm : C.VM_1N, keyword : "RotationOffset"},
- 0x00181147 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FieldOfViewShape"},
- 0x00181149 : { vr : "IS", vm : C.VM_1_2, keyword : "FieldOfViewDimensions"},
- 0x00181150 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ExposureTime"},
- 0x00181151 : { vr : "IS", vm : C.VM_SINGLE, keyword : "XRayTubeCurrent"},
- 0x00181152 : { vr : "IS", vm : C.VM_SINGLE, keyword : "Exposure"},
- 0x00181153 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ExposureInuAs"},
- 0x00181154 : { vr : "DS", vm : C.VM_SINGLE, keyword : "AveragePulseWidth"},
- 0x00181155 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RadiationSetting"},
- 0x00181156 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RectificationType"},
- 0x0018115A : { vr : "CS", vm : C.VM_SINGLE, keyword : "RadiationMode"},
- 0x0018115E : { vr : "DS", vm : C.VM_SINGLE, keyword : "ImageAndFluoroscopyAreaDoseProduct"},
- 0x00181160 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FilterType"},
- 0x00181161 : { vr : "LO", vm : C.VM_1N, keyword : "TypeOfFilters"},
- 0x00181162 : { vr : "DS", vm : C.VM_SINGLE, keyword : "IntensifierSize"},
- 0x00181164 : { vr : "DS", vm : C.VM_TWO, keyword : "ImagerPixelSpacing"},
- 0x00181166 : { vr : "CS", vm : C.VM_1N, keyword : "Grid"},
- 0x00181170 : { vr : "IS", vm : C.VM_SINGLE, keyword : "GeneratorPower"},
- 0x00181180 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CollimatorGridName"},
- 0x00181181 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CollimatorType"},
- 0x00181182 : { vr : "IS", vm : C.VM_1_2, keyword : "FocalDistance"},
- 0x00181183 : { vr : "DS", vm : C.VM_1_2, keyword : "XFocusCenter"},
- 0x00181184 : { vr : "DS", vm : C.VM_1_2, keyword : "YFocusCenter"},
- 0x00181190 : { vr : "DS", vm : C.VM_1N, keyword : "FocalSpots"},
- 0x00181191 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnodeTargetMaterial"},
- 0x001811A0 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BodyPartThickness"},
- 0x001811A2 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CompressionForce"},
- 0x00181200 : { vr : "DA", vm : C.VM_1N, keyword : "DateOfLastCalibration"},
- 0x00181201 : { vr : "TM", vm : C.VM_1N, keyword : "TimeOfLastCalibration"},
- 0x00181210 : { vr : "SH", vm : C.VM_1N, keyword : "ConvolutionKernel"},
- 0x00181240 : { vr : "IS", vm : C.VM_1N, keyword : "UpperLowerPixelValues"},
- 0x00181242 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ActualFrameDuration"},
- 0x00181243 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CountRate"},
- 0x00181244 : { vr : "US", vm : C.VM_SINGLE, keyword : "PreferredPlaybackSequencing"},
- 0x00181250 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ReceiveCoilName"},
- 0x00181251 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TransmitCoilName"},
- 0x00181260 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PlateType"},
- 0x00181261 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PhosphorType"},
- 0x00181300 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ScanVelocity"},
- 0x00181301 : { vr : "CS", vm : C.VM_1N, keyword : "WholeBodyTechnique"},
- 0x00181302 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ScanLength"},
- 0x00181310 : { vr : "US", vm : C.VM_FOUR, keyword : "AcquisitionMatrix"},
- 0x00181312 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InPlanePhaseEncodingDirection"},
- 0x00181314 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FlipAngle"},
- 0x00181315 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VariableFlipAngleFlag"},
- 0x00181316 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SAR"},
- 0x00181318 : { vr : "DS", vm : C.VM_SINGLE, keyword : "dBdt"},
- 0x00181400 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AcquisitionDeviceProcessingDescription"},
- 0x00181401 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AcquisitionDeviceProcessingCode"},
- 0x00181402 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CassetteOrientation"},
- 0x00181403 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CassetteSize"},
- 0x00181404 : { vr : "US", vm : C.VM_SINGLE, keyword : "ExposuresOnPlate"},
- 0x00181405 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RelativeXRayExposure"},
- 0x00181411 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ExposureIndex"},
- 0x00181412 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TargetExposureIndex"},
- 0x00181413 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeviationIndex"},
- 0x00181450 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ColumnAngulation"},
- 0x00181460 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TomoLayerHeight"},
- 0x00181470 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TomoAngle"},
- 0x00181480 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TomoTime"},
- 0x00181490 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TomoType"},
- 0x00181491 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TomoClass"},
- 0x00181495 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfTomosynthesisSourceImages"},
- 0x00181500 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PositionerMotion"},
- 0x00181508 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PositionerType"},
- 0x00181510 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PositionerPrimaryAngle"},
- 0x00181511 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PositionerSecondaryAngle"},
- 0x00181520 : { vr : "DS", vm : C.VM_1N, keyword : "PositionerPrimaryAngleIncrement"},
- 0x00181521 : { vr : "DS", vm : C.VM_1N, keyword : "PositionerSecondaryAngleIncrement"},
- 0x00181530 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorPrimaryAngle"},
- 0x00181531 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorSecondaryAngle"},
- 0x00181600 : { vr : "CS", vm : C.VM_1_3, keyword : "ShutterShape"},
- 0x00181602 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ShutterLeftVerticalEdge"},
- 0x00181604 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ShutterRightVerticalEdge"},
- 0x00181606 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ShutterUpperHorizontalEdge"},
- 0x00181608 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ShutterLowerHorizontalEdge"},
- 0x00181610 : { vr : "IS", vm : C.VM_TWO, keyword : "CenterOfCircularShutter"},
- 0x00181612 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RadiusOfCircularShutter"},
- 0x00181620 : { vr : "IS", vm : C.VM_2_2N, keyword : "VerticesOfThePolygonalShutter"},
- 0x00181622 : { vr : "US", vm : C.VM_SINGLE, keyword : "ShutterPresentationValue"},
- 0x00181623 : { vr : "US", vm : C.VM_SINGLE, keyword : "ShutterOverlayGroup"},
- 0x00181624 : { vr : "US", vm : C.VM_THREE, keyword : "ShutterPresentationColorCIELabValue"},
- 0x00181700 : { vr : "CS", vm : C.VM_1_3, keyword : "CollimatorShape"},
- 0x00181702 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CollimatorLeftVerticalEdge"},
- 0x00181704 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CollimatorRightVerticalEdge"},
- 0x00181706 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CollimatorUpperHorizontalEdge"},
- 0x00181708 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CollimatorLowerHorizontalEdge"},
- 0x00181710 : { vr : "IS", vm : C.VM_TWO, keyword : "CenterOfCircularCollimator"},
- 0x00181712 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RadiusOfCircularCollimator"},
- 0x00181720 : { vr : "IS", vm : C.VM_2_2N, keyword : "VerticesOfThePolygonalCollimator"},
- 0x00181800 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionTimeSynchronized"},
- 0x00181801 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TimeSource"},
- 0x00181802 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TimeDistributionProtocol"},
- 0x00181803 : { vr : "LO", vm : C.VM_SINGLE, keyword : "NTPSourceAddress"},
- 0x00182001 : { vr : "IS", vm : C.VM_1N, keyword : "PageNumberVector"},
- 0x00182002 : { vr : "SH", vm : C.VM_1N, keyword : "FrameLabelVector"},
- 0x00182003 : { vr : "DS", vm : C.VM_1N, keyword : "FramePrimaryAngleVector"},
- 0x00182004 : { vr : "DS", vm : C.VM_1N, keyword : "FrameSecondaryAngleVector"},
- 0x00182005 : { vr : "DS", vm : C.VM_1N, keyword : "SliceLocationVector"},
- 0x00182006 : { vr : "SH", vm : C.VM_1N, keyword : "DisplayWindowLabelVector"},
- 0x00182010 : { vr : "DS", vm : C.VM_TWO, keyword : "NominalScannedPixelSpacing"},
- 0x00182020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DigitizingDeviceTransportDirection"},
- 0x00182030 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RotationOfScannedFilm"},
- 0x00183100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IVUSAcquisition"},
- 0x00183101 : { vr : "DS", vm : C.VM_SINGLE, keyword : "IVUSPullbackRate"},
- 0x00183102 : { vr : "DS", vm : C.VM_SINGLE, keyword : "IVUSGatedRate"},
- 0x00183103 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IVUSPullbackStartFrameNumber"},
- 0x00183104 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IVUSPullbackStopFrameNumber"},
- 0x00183105 : { vr : "IS", vm : C.VM_1N, keyword : "LesionNumber"},
- 0x00184000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "AcquisitionComments"},
- 0x00185000 : { vr : "SH", vm : C.VM_1N, keyword : "OutputPower"},
- 0x00185010 : { vr : "LO", vm : C.VM_1N, keyword : "TransducerData"},
- 0x00185012 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FocusDepth"},
- 0x00185020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ProcessingFunction"},
- 0x00185021 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PostprocessingFunction"},
- 0x00185022 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MechanicalIndex"},
- 0x00185024 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BoneThermalIndex"},
- 0x00185026 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CranialThermalIndex"},
- 0x00185027 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SoftTissueThermalIndex"},
- 0x00185028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SoftTissueFocusThermalIndex"},
- 0x00185029 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SoftTissueSurfaceThermalIndex"},
- 0x00185030 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DynamicRange"},
- 0x00185040 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TotalGain"},
- 0x00185050 : { vr : "IS", vm : C.VM_SINGLE, keyword : "DepthOfScanField"},
- 0x00185100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientPosition"},
- 0x00185101 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ViewPosition"},
- 0x00185104 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProjectionEponymousNameCodeSequence"},
- 0x00185210 : { vr : "DS", vm : C.VM_SIX, keyword : "ImageTransformationMatrix"},
- 0x00185212 : { vr : "DS", vm : C.VM_THREE, keyword : "ImageTranslationVector"},
- 0x00186000 : { vr : "DS", vm : C.VM_SINGLE, keyword : "Sensitivity"},
- 0x00186011 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SequenceOfUltrasoundRegions"},
- 0x00186012 : { vr : "US", vm : C.VM_SINGLE, keyword : "RegionSpatialFormat"},
- 0x00186014 : { vr : "US", vm : C.VM_SINGLE, keyword : "RegionDataType"},
- 0x00186016 : { vr : "UL", vm : C.VM_SINGLE, keyword : "RegionFlags"},
- 0x00186018 : { vr : "UL", vm : C.VM_SINGLE, keyword : "RegionLocationMinX0"},
- 0x0018601A : { vr : "UL", vm : C.VM_SINGLE, keyword : "RegionLocationMinY0"},
- 0x0018601C : { vr : "UL", vm : C.VM_SINGLE, keyword : "RegionLocationMaxX1"},
- 0x0018601E : { vr : "UL", vm : C.VM_SINGLE, keyword : "RegionLocationMaxY1"},
- 0x00186020 : { vr : "SL", vm : C.VM_SINGLE, keyword : "ReferencePixelX0"},
- 0x00186022 : { vr : "SL", vm : C.VM_SINGLE, keyword : "ReferencePixelY0"},
- 0x00186024 : { vr : "US", vm : C.VM_SINGLE, keyword : "PhysicalUnitsXDirection"},
- 0x00186026 : { vr : "US", vm : C.VM_SINGLE, keyword : "PhysicalUnitsYDirection"},
- 0x00186028 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ReferencePixelPhysicalValueX"},
- 0x0018602A : { vr : "FD", vm : C.VM_SINGLE, keyword : "ReferencePixelPhysicalValueY"},
- 0x0018602C : { vr : "FD", vm : C.VM_SINGLE, keyword : "PhysicalDeltaX"},
- 0x0018602E : { vr : "FD", vm : C.VM_SINGLE, keyword : "PhysicalDeltaY"},
- 0x00186030 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TransducerFrequency"},
- 0x00186031 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransducerType"},
- 0x00186032 : { vr : "UL", vm : C.VM_SINGLE, keyword : "PulseRepetitionFrequency"},
- 0x00186034 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DopplerCorrectionAngle"},
- 0x00186036 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SteeringAngle"},
- 0x00186038 : { vr : "UL", vm : C.VM_SINGLE, keyword : "DopplerSampleVolumeXPositionRetired"},
- 0x00186039 : { vr : "SL", vm : C.VM_SINGLE, keyword : "DopplerSampleVolumeXPosition"},
- 0x0018603A : { vr : "UL", vm : C.VM_SINGLE, keyword : "DopplerSampleVolumeYPositionRetired"},
- 0x0018603B : { vr : "SL", vm : C.VM_SINGLE, keyword : "DopplerSampleVolumeYPosition"},
- 0x0018603C : { vr : "UL", vm : C.VM_SINGLE, keyword : "TMLinePositionX0Retired"},
- 0x0018603D : { vr : "SL", vm : C.VM_SINGLE, keyword : "TMLinePositionX0"},
- 0x0018603E : { vr : "UL", vm : C.VM_SINGLE, keyword : "TMLinePositionY0Retired"},
- 0x0018603F : { vr : "SL", vm : C.VM_SINGLE, keyword : "TMLinePositionY0"},
- 0x00186040 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TMLinePositionX1Retired"},
- 0x00186041 : { vr : "SL", vm : C.VM_SINGLE, keyword : "TMLinePositionX1"},
- 0x00186042 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TMLinePositionY1Retired"},
- 0x00186043 : { vr : "SL", vm : C.VM_SINGLE, keyword : "TMLinePositionY1"},
- 0x00186044 : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelComponentOrganization"},
- 0x00186046 : { vr : "UL", vm : C.VM_SINGLE, keyword : "PixelComponentMask"},
- 0x00186048 : { vr : "UL", vm : C.VM_SINGLE, keyword : "PixelComponentRangeStart"},
- 0x0018604A : { vr : "UL", vm : C.VM_SINGLE, keyword : "PixelComponentRangeStop"},
- 0x0018604C : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelComponentPhysicalUnits"},
- 0x0018604E : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelComponentDataType"},
- 0x00186050 : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfTableBreakPoints"},
- 0x00186052 : { vr : "UL", vm : C.VM_1N, keyword : "TableOfXBreakPoints"},
- 0x00186054 : { vr : "FD", vm : C.VM_1N, keyword : "TableOfYBreakPoints"},
- 0x00186056 : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfTableEntries"},
- 0x00186058 : { vr : "UL", vm : C.VM_1N, keyword : "TableOfPixelValues"},
- 0x0018605A : { vr : "FL", vm : C.VM_1N, keyword : "TableOfParameterValues"},
- 0x00186060 : { vr : "FL", vm : C.VM_1N, keyword : "RWaveTimeVector"},
- 0x00187000 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorConditionsNominalFlag"},
- 0x00187001 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorTemperature"},
- 0x00187004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorType"},
- 0x00187005 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorConfiguration"},
- 0x00187006 : { vr : "LT", vm : C.VM_SINGLE, keyword : "DetectorDescription"},
- 0x00187008 : { vr : "LT", vm : C.VM_SINGLE, keyword : "DetectorMode"},
- 0x0018700A : { vr : "SH", vm : C.VM_SINGLE, keyword : "DetectorID"},
- 0x0018700C : { vr : "DA", vm : C.VM_SINGLE, keyword : "DateOfLastDetectorCalibration"},
- 0x0018700E : { vr : "TM", vm : C.VM_SINGLE, keyword : "TimeOfLastDetectorCalibration"},
- 0x00187010 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ExposuresOnDetectorSinceLastCalibration"},
- 0x00187011 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ExposuresOnDetectorSinceManufactured"},
- 0x00187012 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorTimeSinceLastExposure"},
- 0x00187014 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorActiveTime"},
- 0x00187016 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DetectorActivationOffsetFromExposure"},
- 0x0018701A : { vr : "DS", vm : C.VM_TWO, keyword : "DetectorBinning"},
- 0x00187020 : { vr : "DS", vm : C.VM_TWO, keyword : "DetectorElementPhysicalSize"},
- 0x00187022 : { vr : "DS", vm : C.VM_TWO, keyword : "DetectorElementSpacing"},
- 0x00187024 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorActiveShape"},
- 0x00187026 : { vr : "DS", vm : C.VM_1_2, keyword : "DetectorActiveDimensions"},
- 0x00187028 : { vr : "DS", vm : C.VM_TWO, keyword : "DetectorActiveOrigin"},
- 0x0018702A : { vr : "LO", vm : C.VM_SINGLE, keyword : "DetectorManufacturerName"},
- 0x0018702B : { vr : "LO", vm : C.VM_SINGLE, keyword : "DetectorManufacturerModelName"},
- 0x00187030 : { vr : "DS", vm : C.VM_TWO, keyword : "FieldOfViewOrigin"},
- 0x00187032 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FieldOfViewRotation"},
- 0x00187034 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FieldOfViewHorizontalFlip"},
- 0x00187036 : { vr : "FL", vm : C.VM_TWO, keyword : "PixelDataAreaOriginRelativeToFOV"},
- 0x00187038 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PixelDataAreaRotationAngleRelativeToFOV"},
- 0x00187040 : { vr : "LT", vm : C.VM_SINGLE, keyword : "GridAbsorbingMaterial"},
- 0x00187041 : { vr : "LT", vm : C.VM_SINGLE, keyword : "GridSpacingMaterial"},
- 0x00187042 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GridThickness"},
- 0x00187044 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GridPitch"},
- 0x00187046 : { vr : "IS", vm : C.VM_TWO, keyword : "GridAspectRatio"},
- 0x00187048 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GridPeriod"},
- 0x0018704C : { vr : "DS", vm : C.VM_SINGLE, keyword : "GridFocalDistance"},
- 0x00187050 : { vr : "CS", vm : C.VM_1N, keyword : "FilterMaterial"},
- 0x00187052 : { vr : "DS", vm : C.VM_1N, keyword : "FilterThicknessMinimum"},
- 0x00187054 : { vr : "DS", vm : C.VM_1N, keyword : "FilterThicknessMaximum"},
- 0x00187056 : { vr : "FL", vm : C.VM_1N, keyword : "FilterBeamPathLengthMinimum"},
- 0x00187058 : { vr : "FL", vm : C.VM_1N, keyword : "FilterBeamPathLengthMaximum"},
- 0x00187060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExposureControlMode"},
- 0x00187062 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ExposureControlModeDescription"},
- 0x00187064 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExposureStatus"},
- 0x00187065 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PhototimerSetting"},
- 0x00188150 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ExposureTimeInuS"},
- 0x00188151 : { vr : "DS", vm : C.VM_SINGLE, keyword : "XRayTubeCurrentInuA"},
- 0x00189004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContentQualification"},
- 0x00189005 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PulseSequenceName"},
- 0x00189006 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRImagingModifierSequence"},
- 0x00189008 : { vr : "CS", vm : C.VM_SINGLE, keyword : "EchoPulseSequence"},
- 0x00189009 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InversionRecovery"},
- 0x00189010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FlowCompensation"},
- 0x00189011 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MultipleSpinEcho"},
- 0x00189012 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MultiPlanarExcitation"},
- 0x00189014 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PhaseContrast"},
- 0x00189015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TimeOfFlightContrast"},
- 0x00189016 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Spoiling"},
- 0x00189017 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SteadyStatePulseSequence"},
- 0x00189018 : { vr : "CS", vm : C.VM_SINGLE, keyword : "EchoPlanarPulseSequence"},
- 0x00189019 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TagAngleFirstAxis"},
- 0x00189020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MagnetizationTransfer"},
- 0x00189021 : { vr : "CS", vm : C.VM_SINGLE, keyword : "T2Preparation"},
- 0x00189022 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BloodSignalNulling"},
- 0x00189024 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SaturationRecovery"},
- 0x00189025 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpectrallySelectedSuppression"},
- 0x00189026 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpectrallySelectedExcitation"},
- 0x00189027 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpatialPresaturation"},
- 0x00189028 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Tagging"},
- 0x00189029 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OversamplingPhase"},
- 0x00189030 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TagSpacingFirstDimension"},
- 0x00189032 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeometryOfKSpaceTraversal"},
- 0x00189033 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SegmentedKSpaceTraversal"},
- 0x00189034 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RectilinearPhaseEncodeReordering"},
- 0x00189035 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TagThickness"},
- 0x00189036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PartialFourierDirection"},
- 0x00189037 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CardiacSynchronizationTechnique"},
- 0x00189041 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReceiveCoilManufacturerName"},
- 0x00189042 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRReceiveCoilSequence"},
- 0x00189043 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReceiveCoilType"},
- 0x00189044 : { vr : "CS", vm : C.VM_SINGLE, keyword : "QuadratureReceiveCoil"},
- 0x00189045 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MultiCoilDefinitionSequence"},
- 0x00189046 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MultiCoilConfiguration"},
- 0x00189047 : { vr : "SH", vm : C.VM_SINGLE, keyword : "MultiCoilElementName"},
- 0x00189048 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MultiCoilElementUsed"},
- 0x00189049 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRTransmitCoilSequence"},
- 0x00189050 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TransmitCoilManufacturerName"},
- 0x00189051 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransmitCoilType"},
- 0x00189052 : { vr : "FD", vm : C.VM_1_2, keyword : "SpectralWidth"},
- 0x00189053 : { vr : "FD", vm : C.VM_1_2, keyword : "ChemicalShiftReference"},
- 0x00189054 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VolumeLocalizationTechnique"},
- 0x00189058 : { vr : "US", vm : C.VM_SINGLE, keyword : "MRAcquisitionFrequencyEncodingSteps"},
- 0x00189059 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Decoupling"},
- 0x00189060 : { vr : "CS", vm : C.VM_1_2, keyword : "DecoupledNucleus"},
- 0x00189061 : { vr : "FD", vm : C.VM_1_2, keyword : "DecouplingFrequency"},
- 0x00189062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DecouplingMethod"},
- 0x00189063 : { vr : "FD", vm : C.VM_1_2, keyword : "DecouplingChemicalShiftReference"},
- 0x00189064 : { vr : "CS", vm : C.VM_SINGLE, keyword : "KSpaceFiltering"},
- 0x00189065 : { vr : "CS", vm : C.VM_1_2, keyword : "TimeDomainFiltering"},
- 0x00189066 : { vr : "US", vm : C.VM_1_2, keyword : "NumberOfZeroFills"},
- 0x00189067 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BaselineCorrection"},
- 0x00189069 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ParallelReductionFactorInPlane"},
- 0x00189070 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CardiacRRIntervalSpecified"},
- 0x00189073 : { vr : "FD", vm : C.VM_SINGLE, keyword : "AcquisitionDuration"},
- 0x00189074 : { vr : "DT", vm : C.VM_SINGLE, keyword : "FrameAcquisitionDateTime"},
- 0x00189075 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DiffusionDirectionality"},
- 0x00189076 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DiffusionGradientDirectionSequence"},
- 0x00189077 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ParallelAcquisition"},
- 0x00189078 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ParallelAcquisitionTechnique"},
- 0x00189079 : { vr : "FD", vm : C.VM_1N, keyword : "InversionTimes"},
- 0x00189080 : { vr : "ST", vm : C.VM_SINGLE, keyword : "MetaboliteMapDescription"},
- 0x00189081 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PartialFourier"},
- 0x00189082 : { vr : "FD", vm : C.VM_SINGLE, keyword : "EffectiveEchoTime"},
- 0x00189083 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MetaboliteMapCodeSequence"},
- 0x00189084 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChemicalShiftSequence"},
- 0x00189085 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CardiacSignalSource"},
- 0x00189087 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValue"},
- 0x00189089 : { vr : "FD", vm : C.VM_THREE, keyword : "DiffusionGradientOrientation"},
- 0x00189090 : { vr : "FD", vm : C.VM_THREE, keyword : "VelocityEncodingDirection"},
- 0x00189091 : { vr : "FD", vm : C.VM_SINGLE, keyword : "VelocityEncodingMinimumValue"},
- 0x00189092 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VelocityEncodingAcquisitionSequence"},
- 0x00189093 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfKSpaceTrajectories"},
- 0x00189094 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CoverageOfKSpace"},
- 0x00189095 : { vr : "UL", vm : C.VM_SINGLE, keyword : "SpectroscopyAcquisitionPhaseRows"},
- 0x00189096 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ParallelReductionFactorInPlaneRetired"},
- 0x00189098 : { vr : "FD", vm : C.VM_1_2, keyword : "TransmitterFrequency"},
- 0x00189100 : { vr : "CS", vm : C.VM_1_2, keyword : "ResonantNucleus"},
- 0x00189101 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FrequencyCorrection"},
- 0x00189103 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRSpectroscopyFOVGeometrySequence"},
- 0x00189104 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SlabThickness"},
- 0x00189105 : { vr : "FD", vm : C.VM_THREE, keyword : "SlabOrientation"},
- 0x00189106 : { vr : "FD", vm : C.VM_THREE, keyword : "MidSlabPosition"},
- 0x00189107 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRSpatialSaturationSequence"},
- 0x00189112 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRTimingAndRelatedParametersSequence"},
- 0x00189114 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MREchoSequence"},
- 0x00189115 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRModifierSequence"},
- 0x00189117 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRDiffusionSequence"},
- 0x00189118 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CardiacSynchronizationSequence"},
- 0x00189119 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRAveragesSequence"},
- 0x00189125 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRFOVGeometrySequence"},
- 0x00189126 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VolumeLocalizationSequence"},
- 0x00189127 : { vr : "UL", vm : C.VM_SINGLE, keyword : "SpectroscopyAcquisitionDataColumns"},
- 0x00189147 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DiffusionAnisotropyType"},
- 0x00189151 : { vr : "DT", vm : C.VM_SINGLE, keyword : "FrameReferenceDateTime"},
- 0x00189152 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRMetaboliteMapSequence"},
- 0x00189155 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ParallelReductionFactorOutOfPlane"},
- 0x00189159 : { vr : "UL", vm : C.VM_SINGLE, keyword : "SpectroscopyAcquisitionOutOfPlanePhaseSteps"},
- 0x00189166 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BulkMotionStatus"},
- 0x00189168 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ParallelReductionFactorSecondInPlane"},
- 0x00189169 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CardiacBeatRejectionTechnique"},
- 0x00189170 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RespiratoryMotionCompensationTechnique"},
- 0x00189171 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RespiratorySignalSource"},
- 0x00189172 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BulkMotionCompensationTechnique"},
- 0x00189173 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BulkMotionSignalSource"},
- 0x00189174 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApplicableSafetyStandardAgency"},
- 0x00189175 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicableSafetyStandardDescription"},
- 0x00189176 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OperatingModeSequence"},
- 0x00189177 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OperatingModeType"},
- 0x00189178 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OperatingMode"},
- 0x00189179 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpecificAbsorptionRateDefinition"},
- 0x00189180 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GradientOutputType"},
- 0x00189181 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SpecificAbsorptionRateValue"},
- 0x00189182 : { vr : "FD", vm : C.VM_SINGLE, keyword : "GradientOutput"},
- 0x00189183 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FlowCompensationDirection"},
- 0x00189184 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TaggingDelay"},
- 0x00189185 : { vr : "ST", vm : C.VM_SINGLE, keyword : "RespiratoryMotionCompensationTechniqueDescription"},
- 0x00189186 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RespiratorySignalSourceID"},
- 0x00189195 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ChemicalShiftMinimumIntegrationLimitInHz"},
- 0x00189196 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ChemicalShiftMaximumIntegrationLimitInHz"},
- 0x00189197 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRVelocityEncodingSequence"},
- 0x00189198 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FirstOrderPhaseCorrection"},
- 0x00189199 : { vr : "CS", vm : C.VM_SINGLE, keyword : "WaterReferencedPhaseCorrection"},
- 0x00189200 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MRSpectroscopyAcquisitionType"},
- 0x00189214 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RespiratoryCyclePosition"},
- 0x00189217 : { vr : "FD", vm : C.VM_SINGLE, keyword : "VelocityEncodingMaximumValue"},
- 0x00189218 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TagSpacingSecondDimension"},
- 0x00189219 : { vr : "SS", vm : C.VM_SINGLE, keyword : "TagAngleSecondAxis"},
- 0x00189220 : { vr : "FD", vm : C.VM_SINGLE, keyword : "FrameAcquisitionDuration"},
- 0x00189226 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRImageFrameTypeSequence"},
- 0x00189227 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRSpectroscopyFrameTypeSequence"},
- 0x00189231 : { vr : "US", vm : C.VM_SINGLE, keyword : "MRAcquisitionPhaseEncodingStepsInPlane"},
- 0x00189232 : { vr : "US", vm : C.VM_SINGLE, keyword : "MRAcquisitionPhaseEncodingStepsOutOfPlane"},
- 0x00189234 : { vr : "UL", vm : C.VM_SINGLE, keyword : "SpectroscopyAcquisitionPhaseColumns"},
- 0x00189236 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CardiacCyclePosition"},
- 0x00189239 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecificAbsorptionRateSequence"},
- 0x00189240 : { vr : "US", vm : C.VM_SINGLE, keyword : "RFEchoTrainLength"},
- 0x00189241 : { vr : "US", vm : C.VM_SINGLE, keyword : "GradientEchoTrainLength"},
- 0x00189250 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ArterialSpinLabelingContrast"},
- 0x00189251 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MRArterialSpinLabelingSequence"},
- 0x00189252 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ASLTechniqueDescription"},
- 0x00189253 : { vr : "US", vm : C.VM_SINGLE, keyword : "ASLSlabNumber"},
- 0x00189254 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ASLSlabThickness"},
- 0x00189255 : { vr : "FD", vm : C.VM_THREE, keyword : "ASLSlabOrientation"},
- 0x00189256 : { vr : "FD", vm : C.VM_THREE, keyword : "ASLMidSlabPosition"},
- 0x00189257 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ASLContext"},
- 0x00189258 : { vr : "UL", vm : C.VM_SINGLE, keyword : "ASLPulseTrainDuration"},
- 0x00189259 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ASLCrusherFlag"},
- 0x0018925A : { vr : "FD", vm : C.VM_SINGLE, keyword : "ASLCrusherFlow"},
- 0x0018925B : { vr : "LO", vm : C.VM_SINGLE, keyword : "ASLCrusherDescription"},
- 0x0018925C : { vr : "CS", vm : C.VM_SINGLE, keyword : "ASLBolusCutoffFlag"},
- 0x0018925D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ASLBolusCutoffTimingSequence"},
- 0x0018925E : { vr : "LO", vm : C.VM_SINGLE, keyword : "ASLBolusCutoffTechnique"},
- 0x0018925F : { vr : "UL", vm : C.VM_SINGLE, keyword : "ASLBolusCutoffDelayTime"},
- 0x00189260 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ASLSlabSequence"},
- 0x00189295 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ChemicalShiftMinimumIntegrationLimitInppm"},
- 0x00189296 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ChemicalShiftMaximumIntegrationLimitInppm"},
- 0x00189301 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTAcquisitionTypeSequence"},
- 0x00189302 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionType"},
- 0x00189303 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TubeAngle"},
- 0x00189304 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTAcquisitionDetailsSequence"},
- 0x00189305 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RevolutionTime"},
- 0x00189306 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SingleCollimationWidth"},
- 0x00189307 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TotalCollimationWidth"},
- 0x00189308 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTTableDynamicsSequence"},
- 0x00189309 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableSpeed"},
- 0x00189310 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableFeedPerRotation"},
- 0x00189311 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SpiralPitchFactor"},
- 0x00189312 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTGeometrySequence"},
- 0x00189313 : { vr : "FD", vm : C.VM_THREE, keyword : "DataCollectionCenterPatient"},
- 0x00189314 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTReconstructionSequence"},
- 0x00189315 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReconstructionAlgorithm"},
- 0x00189316 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ConvolutionKernelGroup"},
- 0x00189317 : { vr : "FD", vm : C.VM_TWO, keyword : "ReconstructionFieldOfView"},
- 0x00189318 : { vr : "FD", vm : C.VM_THREE, keyword : "ReconstructionTargetCenterPatient"},
- 0x00189319 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ReconstructionAngle"},
- 0x00189320 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ImageFilter"},
- 0x00189321 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTExposureSequence"},
- 0x00189322 : { vr : "FD", vm : C.VM_TWO, keyword : "ReconstructionPixelSpacing"},
- 0x00189323 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExposureModulationType"},
- 0x00189324 : { vr : "FD", vm : C.VM_SINGLE, keyword : "EstimatedDoseSaving"},
- 0x00189325 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTXRayDetailsSequence"},
- 0x00189326 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTPositionSequence"},
- 0x00189327 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TablePosition"},
- 0x00189328 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ExposureTimeInms"},
- 0x00189329 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTImageFrameTypeSequence"},
- 0x00189330 : { vr : "FD", vm : C.VM_SINGLE, keyword : "XRayTubeCurrentInmA"},
- 0x00189332 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ExposureInmAs"},
- 0x00189333 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ConstantVolumeFlag"},
- 0x00189334 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FluoroscopyFlag"},
- 0x00189335 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DistanceSourceToDataCollectionCenter"},
- 0x00189337 : { vr : "US", vm : C.VM_SINGLE, keyword : "ContrastBolusAgentNumber"},
- 0x00189338 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContrastBolusIngredientCodeSequence"},
- 0x00189340 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContrastAdministrationProfileSequence"},
- 0x00189341 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContrastBolusUsageSequence"},
- 0x00189342 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContrastBolusAgentAdministered"},
- 0x00189343 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContrastBolusAgentDetected"},
- 0x00189344 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContrastBolusAgentPhase"},
- 0x00189345 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CTDIvol"},
- 0x00189346 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTDIPhantomTypeCodeSequence"},
- 0x00189351 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CalciumScoringMassFactorPatient"},
- 0x00189352 : { vr : "FL", vm : C.VM_THREE, keyword : "CalciumScoringMassFactorDevice"},
- 0x00189353 : { vr : "FL", vm : C.VM_SINGLE, keyword : "EnergyWeightingFactor"},
- 0x00189360 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CTAdditionalXRaySourceSequence"},
- 0x00189401 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProjectionPixelCalibrationSequence"},
- 0x00189402 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DistanceSourceToIsocenter"},
- 0x00189403 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DistanceObjectToTableTop"},
- 0x00189404 : { vr : "FL", vm : C.VM_TWO, keyword : "ObjectPixelSpacingInCenterOfBeam"},
- 0x00189405 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PositionerPositionSequence"},
- 0x00189406 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TablePositionSequence"},
- 0x00189407 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CollimatorShapeSequence"},
- 0x00189410 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PlanesInAcquisition"},
- 0x00189412 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XAXRFFrameCharacteristicsSequence"},
- 0x00189417 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameAcquisitionSequence"},
- 0x00189420 : { vr : "CS", vm : C.VM_SINGLE, keyword : "XRayReceptorType"},
- 0x00189423 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AcquisitionProtocolName"},
- 0x00189424 : { vr : "LT", vm : C.VM_SINGLE, keyword : "AcquisitionProtocolDescription"},
- 0x00189425 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContrastBolusIngredientOpaque"},
- 0x00189426 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DistanceReceptorPlaneToDetectorHousing"},
- 0x00189427 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IntensifierActiveShape"},
- 0x00189428 : { vr : "FL", vm : C.VM_1_2, keyword : "IntensifierActiveDimensions"},
- 0x00189429 : { vr : "FL", vm : C.VM_TWO, keyword : "PhysicalDetectorSize"},
- 0x00189430 : { vr : "FL", vm : C.VM_TWO, keyword : "PositionOfIsocenterProjection"},
- 0x00189432 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FieldOfViewSequence"},
- 0x00189433 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FieldOfViewDescription"},
- 0x00189434 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionsSequence"},
- 0x00189435 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionShape"},
- 0x00189436 : { vr : "SS", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionLeftVerticalEdge"},
- 0x00189437 : { vr : "SS", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionRightVerticalEdge"},
- 0x00189438 : { vr : "SS", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionUpperHorizontalEdge"},
- 0x00189439 : { vr : "SS", vm : C.VM_SINGLE, keyword : "ExposureControlSensingRegionLowerHorizontalEdge"},
- 0x00189440 : { vr : "SS", vm : C.VM_TWO, keyword : "CenterOfCircularExposureControlSensingRegion"},
- 0x00189441 : { vr : "US", vm : C.VM_SINGLE, keyword : "RadiusOfCircularExposureControlSensingRegion"},
- 0x00189442 : { vr : "SS", vm : C.VM_2N, keyword : "VerticesOfThePolygonalExposureControlSensingRegion"},
- 0x00189447 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ColumnAngulationPatient"},
- 0x00189449 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BeamAngle"},
- 0x00189451 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameDetectorParametersSequence"},
- 0x00189452 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CalculatedAnatomyThickness"},
- 0x00189455 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CalibrationSequence"},
- 0x00189456 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ObjectThicknessSequence"},
- 0x00189457 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PlaneIdentification"},
- 0x00189461 : { vr : "FL", vm : C.VM_1_2, keyword : "FieldOfViewDimensionsInFloat"},
- 0x00189462 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IsocenterReferenceSystemSequence"},
- 0x00189463 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PositionerIsocenterPrimaryAngle"},
- 0x00189464 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PositionerIsocenterSecondaryAngle"},
- 0x00189465 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PositionerIsocenterDetectorRotationAngle"},
- 0x00189466 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableXPositionToIsocenter"},
- 0x00189467 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableYPositionToIsocenter"},
- 0x00189468 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableZPositionToIsocenter"},
- 0x00189469 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableHorizontalRotationAngle"},
- 0x00189470 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableHeadTiltAngle"},
- 0x00189471 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableCradleTiltAngle"},
- 0x00189472 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameDisplayShutterSequence"},
- 0x00189473 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AcquiredImageAreaDoseProduct"},
- 0x00189474 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CArmPositionerTabletopRelationship"},
- 0x00189476 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XRayGeometrySequence"},
- 0x00189477 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IrradiationEventIdentificationSequence"},
- 0x00189504 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XRay3DFrameTypeSequence"},
- 0x00189506 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContributingSourcesSequence"},
- 0x00189507 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XRay3DAcquisitionSequence"},
- 0x00189508 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PrimaryPositionerScanArc"},
- 0x00189509 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SecondaryPositionerScanArc"},
- 0x00189510 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PrimaryPositionerScanStartAngle"},
- 0x00189511 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SecondaryPositionerScanStartAngle"},
- 0x00189514 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PrimaryPositionerIncrement"},
- 0x00189515 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SecondaryPositionerIncrement"},
- 0x00189516 : { vr : "DT", vm : C.VM_SINGLE, keyword : "StartAcquisitionDateTime"},
- 0x00189517 : { vr : "DT", vm : C.VM_SINGLE, keyword : "EndAcquisitionDateTime"},
- 0x00189524 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicationName"},
- 0x00189525 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicationVersion"},
- 0x00189526 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicationManufacturer"},
- 0x00189527 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AlgorithmType"},
- 0x00189528 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AlgorithmDescription"},
- 0x00189530 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XRay3DReconstructionSequence"},
- 0x00189531 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReconstructionDescription"},
- 0x00189538 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerProjectionAcquisitionSequence"},
- 0x00189601 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DiffusionBMatrixSequence"},
- 0x00189602 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueXX"},
- 0x00189603 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueXY"},
- 0x00189604 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueXZ"},
- 0x00189605 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueYY"},
- 0x00189606 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueYZ"},
- 0x00189607 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DiffusionBValueZZ"},
- 0x00189701 : { vr : "DT", vm : C.VM_SINGLE, keyword : "DecayCorrectionDateTime"},
- 0x00189715 : { vr : "FD", vm : C.VM_SINGLE, keyword : "StartDensityThreshold"},
- 0x00189716 : { vr : "FD", vm : C.VM_SINGLE, keyword : "StartRelativeDensityDifferenceThreshold"},
- 0x00189717 : { vr : "FD", vm : C.VM_SINGLE, keyword : "StartCardiacTriggerCountThreshold"},
- 0x00189718 : { vr : "FD", vm : C.VM_SINGLE, keyword : "StartRespiratoryTriggerCountThreshold"},
- 0x00189719 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationCountsThreshold"},
- 0x00189720 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationDensityThreshold"},
- 0x00189721 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationRelativeDensityThreshold"},
- 0x00189722 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationTimeThreshold"},
- 0x00189723 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationCardiacTriggerCountThreshold"},
- 0x00189724 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TerminationRespiratoryTriggerCountThreshold"},
- 0x00189725 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorGeometry"},
- 0x00189726 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TransverseDetectorSeparation"},
- 0x00189727 : { vr : "FD", vm : C.VM_SINGLE, keyword : "AxialDetectorDimension"},
- 0x00189729 : { vr : "US", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalAgentNumber"},
- 0x00189732 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETFrameAcquisitionSequence"},
- 0x00189733 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETDetectorMotionDetailsSequence"},
- 0x00189734 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETTableDynamicsSequence"},
- 0x00189735 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETPositionSequence"},
- 0x00189736 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETFrameCorrectionFactorsSequence"},
- 0x00189737 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalUsageSequence"},
- 0x00189738 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AttenuationCorrectionSource"},
- 0x00189739 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfIterations"},
- 0x00189740 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfSubsets"},
- 0x00189749 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETReconstructionSequence"},
- 0x00189751 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PETFrameTypeSequence"},
- 0x00189755 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TimeOfFlightInformationUsed"},
- 0x00189756 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReconstructionType"},
- 0x00189758 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DecayCorrected"},
- 0x00189759 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AttenuationCorrected"},
- 0x00189760 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScatterCorrected"},
- 0x00189761 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DeadTimeCorrected"},
- 0x00189762 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GantryMotionCorrected"},
- 0x00189763 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientMotionCorrected"},
- 0x00189764 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CountLossNormalizationCorrected"},
- 0x00189765 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RandomsCorrected"},
- 0x00189766 : { vr : "CS", vm : C.VM_SINGLE, keyword : "NonUniformRadialSamplingCorrected"},
- 0x00189767 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SensitivityCalibrated"},
- 0x00189768 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DetectorNormalizationCorrection"},
- 0x00189769 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IterativeReconstructionMethod"},
- 0x00189770 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AttenuationCorrectionTemporalRelationship"},
- 0x00189771 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientPhysiologicalStateSequence"},
- 0x00189772 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientPhysiologicalStateCodeSequence"},
- 0x00189801 : { vr : "FD", vm : C.VM_1N, keyword : "DepthsOfFocus"},
- 0x00189803 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ExcludedIntervalsSequence"},
- 0x00189804 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ExclusionStartDatetime"},
- 0x00189805 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ExclusionDuration"},
- 0x00189806 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "USImageDescriptionSequence"},
- 0x00189807 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageDataTypeSequence"},
- 0x00189808 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DataType"},
- 0x00189809 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerScanPatternCodeSequence"},
- 0x0018980B : { vr : "CS", vm : C.VM_SINGLE, keyword : "AliasedDataType"},
- 0x0018980C : { vr : "CS", vm : C.VM_SINGLE, keyword : "PositionMeasuringDeviceUsed"},
- 0x0018980D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerGeometryCodeSequence"},
- 0x0018980E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerBeamSteeringCodeSequence"},
- 0x0018980F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TransducerApplicationCodeSequence"},
- 0x0018A001 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContributingEquipmentSequence"},
- 0x0018A002 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ContributionDateTime"},
- 0x0018A003 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ContributionDescription"},
- 0x0020000D : { vr : "UI", vm : C.VM_SINGLE, keyword : "StudyInstanceUID"},
- 0x0020000E : { vr : "UI", vm : C.VM_SINGLE, keyword : "SeriesInstanceUID"},
- 0x00200010 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StudyID"},
- 0x00200011 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SeriesNumber"},
- 0x00200012 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionNumber"},
- 0x00200013 : { vr : "IS", vm : C.VM_SINGLE, keyword : "InstanceNumber"},
- 0x00200014 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IsotopeNumber"},
- 0x00200015 : { vr : "IS", vm : C.VM_SINGLE, keyword : "PhaseNumber"},
- 0x00200016 : { vr : "IS", vm : C.VM_SINGLE, keyword : "IntervalNumber"},
- 0x00200017 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TimeSlotNumber"},
- 0x00200018 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AngleNumber"},
- 0x00200019 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ItemNumber"},
- 0x00200020 : { vr : "CS", vm : C.VM_TWO, keyword : "PatientOrientation"},
- 0x00200022 : { vr : "IS", vm : C.VM_SINGLE, keyword : "OverlayNumber"},
- 0x00200024 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CurveNumber"},
- 0x00200026 : { vr : "IS", vm : C.VM_SINGLE, keyword : "LUTNumber"},
- 0x00200030 : { vr : "DS", vm : C.VM_THREE, keyword : "ImagePosition"},
- 0x00200032 : { vr : "DS", vm : C.VM_THREE, keyword : "ImagePositionPatient"},
- 0x00200035 : { vr : "DS", vm : C.VM_SIX, keyword : "ImageOrientation"},
- 0x00200037 : { vr : "DS", vm : C.VM_SIX, keyword : "ImageOrientationPatient"},
- 0x00200050 : { vr : "DS", vm : C.VM_SINGLE, keyword : "Location"},
- 0x00200052 : { vr : "UI", vm : C.VM_SINGLE, keyword : "FrameOfReferenceUID"},
- 0x00200060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Laterality"},
- 0x00200062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageLaterality"},
- 0x00200070 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImageGeometryType"},
- 0x00200080 : { vr : "CS", vm : C.VM_1N, keyword : "MaskingImage"},
- 0x002000AA : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReportNumber"},
- 0x00200100 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TemporalPositionIdentifier"},
- 0x00200105 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfTemporalPositions"},
- 0x00200110 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TemporalResolution"},
- 0x00200200 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SynchronizationFrameOfReferenceUID"},
- 0x00200242 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SOPInstanceUIDOfConcatenationSource"},
- 0x00201000 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SeriesInStudy"},
- 0x00201001 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionsInSeries"},
- 0x00201002 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ImagesInAcquisition"},
- 0x00201003 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ImagesInSeries"},
- 0x00201004 : { vr : "IS", vm : C.VM_SINGLE, keyword : "AcquisitionsInStudy"},
- 0x00201005 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ImagesInStudy"},
- 0x00201020 : { vr : "LO", vm : C.VM_1N, keyword : "Reference"},
- 0x00201040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PositionReferenceIndicator"},
- 0x00201041 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SliceLocation"},
- 0x00201070 : { vr : "IS", vm : C.VM_1N, keyword : "OtherStudyNumbers"},
- 0x00201200 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPatientRelatedStudies"},
- 0x00201202 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPatientRelatedSeries"},
- 0x00201204 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPatientRelatedInstances"},
- 0x00201206 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfStudyRelatedSeries"},
- 0x00201208 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfStudyRelatedInstances"},
- 0x00201209 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfSeriesRelatedInstances"},
- 0x00203401 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ModifyingDeviceID"},
- 0x00203402 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ModifiedImageID"},
- 0x00203403 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ModifiedImageDate"},
- 0x00203404 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ModifyingDeviceManufacturer"},
- 0x00203405 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ModifiedImageTime"},
- 0x00203406 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ModifiedImageDescription"},
- 0x00204000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ImageComments"},
- 0x00205000 : { vr : "AT", vm : C.VM_1N, keyword : "OriginalImageIdentification"},
- 0x00205002 : { vr : "LO", vm : C.VM_1N, keyword : "OriginalImageIdentificationNomenclature"},
- 0x00209056 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StackID"},
- 0x00209057 : { vr : "UL", vm : C.VM_SINGLE, keyword : "InStackPositionNumber"},
- 0x00209071 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameAnatomySequence"},
- 0x00209072 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FrameLaterality"},
- 0x00209111 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameContentSequence"},
- 0x00209113 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanePositionSequence"},
- 0x00209116 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlaneOrientationSequence"},
- 0x00209128 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TemporalPositionIndex"},
- 0x00209153 : { vr : "FD", vm : C.VM_SINGLE, keyword : "NominalCardiacTriggerDelayTime"},
- 0x00209154 : { vr : "FL", vm : C.VM_SINGLE, keyword : "NominalCardiacTriggerTimePriorToRPeak"},
- 0x00209155 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ActualCardiacTriggerTimePriorToRPeak"},
- 0x00209156 : { vr : "US", vm : C.VM_SINGLE, keyword : "FrameAcquisitionNumber"},
- 0x00209157 : { vr : "UL", vm : C.VM_1N, keyword : "DimensionIndexValues"},
- 0x00209158 : { vr : "LT", vm : C.VM_SINGLE, keyword : "FrameComments"},
- 0x00209161 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ConcatenationUID"},
- 0x00209162 : { vr : "US", vm : C.VM_SINGLE, keyword : "InConcatenationNumber"},
- 0x00209163 : { vr : "US", vm : C.VM_SINGLE, keyword : "InConcatenationTotalNumber"},
- 0x00209164 : { vr : "UI", vm : C.VM_SINGLE, keyword : "DimensionOrganizationUID"},
- 0x00209165 : { vr : "AT", vm : C.VM_SINGLE, keyword : "DimensionIndexPointer"},
- 0x00209167 : { vr : "AT", vm : C.VM_SINGLE, keyword : "FunctionalGroupPointer"},
- 0x00209213 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DimensionIndexPrivateCreator"},
- 0x00209221 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DimensionOrganizationSequence"},
- 0x00209222 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DimensionIndexSequence"},
- 0x00209228 : { vr : "UL", vm : C.VM_SINGLE, keyword : "ConcatenationFrameOffsetNumber"},
- 0x00209238 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FunctionalGroupPrivateCreator"},
- 0x00209241 : { vr : "FL", vm : C.VM_SINGLE, keyword : "NominalPercentageOfCardiacPhase"},
- 0x00209245 : { vr : "FL", vm : C.VM_SINGLE, keyword : "NominalPercentageOfRespiratoryPhase"},
- 0x00209246 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StartingRespiratoryAmplitude"},
- 0x00209247 : { vr : "CS", vm : C.VM_SINGLE, keyword : "StartingRespiratoryPhase"},
- 0x00209248 : { vr : "FL", vm : C.VM_SINGLE, keyword : "EndingRespiratoryAmplitude"},
- 0x00209249 : { vr : "CS", vm : C.VM_SINGLE, keyword : "EndingRespiratoryPhase"},
- 0x00209250 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RespiratoryTriggerType"},
- 0x00209251 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RRIntervalTimeNominal"},
- 0x00209252 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ActualCardiacTriggerDelayTime"},
- 0x00209253 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RespiratorySynchronizationSequence"},
- 0x00209254 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RespiratoryIntervalTime"},
- 0x00209255 : { vr : "FD", vm : C.VM_SINGLE, keyword : "NominalRespiratoryTriggerDelayTime"},
- 0x00209256 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RespiratoryTriggerDelayThreshold"},
- 0x00209257 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ActualRespiratoryTriggerDelayTime"},
- 0x00209301 : { vr : "FD", vm : C.VM_THREE, keyword : "ImagePositionVolume"},
- 0x00209302 : { vr : "FD", vm : C.VM_SIX, keyword : "ImageOrientationVolume"},
- 0x00209307 : { vr : "CS", vm : C.VM_SINGLE, keyword : "UltrasoundAcquisitionGeometry"},
- 0x00209308 : { vr : "FD", vm : C.VM_THREE, keyword : "ApexPosition"},
- 0x00209309 : { vr : "FD", vm : C.VM_16, keyword : "VolumeToTransducerMappingMatrix"},
- 0x0020930A : { vr : "FD", vm : C.VM_16, keyword : "VolumeToTableMappingMatrix"},
- 0x0020930C : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientFrameOfReferenceSource"},
- 0x0020930D : { vr : "FD", vm : C.VM_SINGLE, keyword : "TemporalPositionTimeOffset"},
- 0x0020930E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanePositionVolumeSequence"},
- 0x0020930F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlaneOrientationVolumeSequence"},
- 0x00209310 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TemporalPositionSequence"},
- 0x00209311 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DimensionOrganizationType"},
- 0x00209312 : { vr : "UI", vm : C.VM_SINGLE, keyword : "VolumeFrameOfReferenceUID"},
- 0x00209313 : { vr : "UI", vm : C.VM_SINGLE, keyword : "TableFrameOfReferenceUID"},
- 0x00209421 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DimensionDescriptionLabel"},
- 0x00209450 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientOrientationInFrameSequence"},
- 0x00209453 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FrameLabel"},
- 0x00209518 : { vr : "US", vm : C.VM_1N, keyword : "AcquisitionIndex"},
- 0x00209529 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContributingSOPInstancesReferenceSequence"},
- 0x00209536 : { vr : "US", vm : C.VM_SINGLE, keyword : "ReconstructionIndex"},
- 0x00220001 : { vr : "US", vm : C.VM_SINGLE, keyword : "LightPathFilterPassThroughWavelength"},
- 0x00220002 : { vr : "US", vm : C.VM_TWO, keyword : "LightPathFilterPassBand"},
- 0x00220003 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImagePathFilterPassThroughWavelength"},
- 0x00220004 : { vr : "US", vm : C.VM_TWO, keyword : "ImagePathFilterPassBand"},
- 0x00220005 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientEyeMovementCommanded"},
- 0x00220006 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientEyeMovementCommandCodeSequence"},
- 0x00220007 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SphericalLensPower"},
- 0x00220008 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CylinderLensPower"},
- 0x00220009 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CylinderAxis"},
- 0x0022000A : { vr : "FL", vm : C.VM_SINGLE, keyword : "EmmetropicMagnification"},
- 0x0022000B : { vr : "FL", vm : C.VM_SINGLE, keyword : "IntraOcularPressure"},
- 0x0022000C : { vr : "FL", vm : C.VM_SINGLE, keyword : "HorizontalFieldOfView"},
- 0x0022000D : { vr : "CS", vm : C.VM_SINGLE, keyword : "PupilDilated"},
- 0x0022000E : { vr : "FL", vm : C.VM_SINGLE, keyword : "DegreeOfDilation"},
- 0x00220010 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StereoBaselineAngle"},
- 0x00220011 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StereoBaselineDisplacement"},
- 0x00220012 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StereoHorizontalPixelOffset"},
- 0x00220013 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StereoVerticalPixelOffset"},
- 0x00220014 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StereoRotation"},
- 0x00220015 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AcquisitionDeviceTypeCodeSequence"},
- 0x00220016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IlluminationTypeCodeSequence"},
- 0x00220017 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LightPathFilterTypeStackCodeSequence"},
- 0x00220018 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImagePathFilterTypeStackCodeSequence"},
- 0x00220019 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LensesCodeSequence"},
- 0x0022001A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelDescriptionCodeSequence"},
- 0x0022001B : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RefractiveStateSequence"},
- 0x0022001C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MydriaticAgentCodeSequence"},
- 0x0022001D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelativeImagePositionCodeSequence"},
- 0x0022001E : { vr : "FL", vm : C.VM_SINGLE, keyword : "CameraAngleOfView"},
- 0x00220020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StereoPairsSequence"},
- 0x00220021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LeftImageSequence"},
- 0x00220022 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RightImageSequence"},
- 0x00220030 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AxialLengthOfTheEye"},
- 0x00220031 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicFrameLocationSequence"},
- 0x00220032 : { vr : "FL", vm : C.VM_2_2N, keyword : "ReferenceCoordinates"},
- 0x00220035 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DepthSpatialResolution"},
- 0x00220036 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaximumDepthDistortion"},
- 0x00220037 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AlongScanSpatialResolution"},
- 0x00220038 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaximumAlongScanDistortion"},
- 0x00220039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OphthalmicImageOrientation"},
- 0x00220041 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DepthOfTransverseImage"},
- 0x00220042 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MydriaticAgentConcentrationUnitsSequence"},
- 0x00220048 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AcrossScanSpatialResolution"},
- 0x00220049 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaximumAcrossScanDistortion"},
- 0x0022004E : { vr : "DS", vm : C.VM_SINGLE, keyword : "MydriaticAgentConcentration"},
- 0x00220055 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IlluminationWaveLength"},
- 0x00220056 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IlluminationPower"},
- 0x00220057 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IlluminationBandwidth"},
- 0x00220058 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MydriaticAgentSequence"},
- 0x00221007 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialMeasurementsRightEyeSequence"},
- 0x00221008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialMeasurementsLeftEyeSequence"},
- 0x00221010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsType"},
- 0x00221019 : { vr : "FL", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLength"},
- 0x00221024 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LensStatusCodeSequence"},
- 0x00221025 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VitreousStatusCodeSequence"},
- 0x00221028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IOLFormulaCodeSequence"},
- 0x00221029 : { vr : "LO", vm : C.VM_SINGLE, keyword : "IOLFormulaDetail"},
- 0x00221033 : { vr : "FL", vm : C.VM_SINGLE, keyword : "KeratometerIndex"},
- 0x00221035 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceOfOphthalmicAxialLengthCodeSequence"},
- 0x00221037 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TargetRefraction"},
- 0x00221039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RefractiveProcedureOccurred"},
- 0x00221040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RefractiveSurgeryTypeCodeSequence"},
- 0x00221044 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicUltrasoundAxialMeasurementsTypeCodeSequence"},
- 0x00221050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsSequence"},
- 0x00221053 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IOLPower"},
- 0x00221054 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PredictedRefractiveError"},
- 0x00221059 : { vr : "FL", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthVelocity"},
- 0x00221065 : { vr : "LO", vm : C.VM_SINGLE, keyword : "LensStatusDescription"},
- 0x00221066 : { vr : "LO", vm : C.VM_SINGLE, keyword : "VitreousStatusDescription"},
- 0x00221090 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IOLPowerSequence"},
- 0x00221092 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LensConstantSequence"},
- 0x00221093 : { vr : "LO", vm : C.VM_SINGLE, keyword : "IOLManufacturer"},
- 0x00221094 : { vr : "LO", vm : C.VM_SINGLE, keyword : "LensConstantDescription"},
- 0x00221096 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "KeratometryMeasurementTypeCodeSequence"},
- 0x00221100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedOphthalmicAxialMeasurementsSequence"},
- 0x00221101 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsSegmentNameCodeSequence"},
- 0x00221103 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RefractiveErrorBeforeRefractiveSurgeryCodeSequence"},
- 0x00221121 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IOLPowerForExactEmmetropia"},
- 0x00221122 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IOLPowerForExactTargetRefraction"},
- 0x00221125 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnteriorChamberDepthDefinitionCodeSequence"},
- 0x00221130 : { vr : "FL", vm : C.VM_SINGLE, keyword : "LensThickness"},
- 0x00221131 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AnteriorChamberDepth"},
- 0x00221132 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceOfLensThicknessDataCodeSequence"},
- 0x00221133 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceOfAnteriorChamberDepthDataCodeSequence"},
- 0x00221135 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceOfRefractiveErrorDataCodeSequence"},
- 0x00221140 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementModified"},
- 0x00221150 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthDataSourceCodeSequence"},
- 0x00221153 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthAcquisitionMethodCodeSequence"},
- 0x00221155 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SignalToNoiseRatio"},
- 0x00221159 : { vr : "LO", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthDataSourceDescription"},
- 0x00221210 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsTotalLengthSequence"},
- 0x00221211 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsSegmentalLengthSequence"},
- 0x00221212 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthMeasurementsLengthSummationSequence"},
- 0x00221220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "UltrasoundOphthalmicAxialLengthMeasurementsSequence"},
- 0x00221225 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OpticalOphthalmicAxialLengthMeasurementsSequence"},
- 0x00221230 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "UltrasoundSelectedOphthalmicAxialLengthSequence"},
- 0x00221250 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthSelectionMethodCodeSequence"},
- 0x00221255 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OpticalSelectedOphthalmicAxialLengthSequence"},
- 0x00221257 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SelectedSegmentalOphthalmicAxialLengthSequence"},
- 0x00221260 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SelectedTotalOphthalmicAxialLengthSequence"},
- 0x00221262 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthQualityMetricSequence"},
- 0x00221273 : { vr : "LO", vm : C.VM_SINGLE, keyword : "OphthalmicAxialLengthQualityMetricTypeDescription"},
- 0x00221300 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntraocularLensCalculationsRightEyeSequence"},
- 0x00221310 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntraocularLensCalculationsLeftEyeSequence"},
- 0x00221330 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedOphthalmicAxialLengthMeasurementQCImageSequence"},
- 0x00240010 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldHorizontalExtent"},
- 0x00240011 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldVerticalExtent"},
- 0x00240012 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VisualFieldShape"},
- 0x00240016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScreeningTestModeCodeSequence"},
- 0x00240018 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaximumStimulusLuminance"},
- 0x00240020 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BackgroundLuminance"},
- 0x00240021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StimulusColorCodeSequence"},
- 0x00240024 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BackgroundIlluminationColorCodeSequence"},
- 0x00240025 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StimulusArea"},
- 0x00240028 : { vr : "FL", vm : C.VM_SINGLE, keyword : "StimulusPresentationTime"},
- 0x00240032 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FixationSequence"},
- 0x00240033 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FixationMonitoringCodeSequence"},
- 0x00240034 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualFieldCatchTrialSequence"},
- 0x00240035 : { vr : "US", vm : C.VM_SINGLE, keyword : "FixationCheckedQuantity"},
- 0x00240036 : { vr : "US", vm : C.VM_SINGLE, keyword : "PatientNotProperlyFixatedQuantity"},
- 0x00240037 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PresentedVisualStimuliDataFlag"},
- 0x00240038 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfVisualStimuli"},
- 0x00240039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFixationLossesDataFlag"},
- 0x00240040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFixationLosses"},
- 0x00240042 : { vr : "US", vm : C.VM_SINGLE, keyword : "StimuliRetestingQuantity"},
- 0x00240044 : { vr : "LT", vm : C.VM_SINGLE, keyword : "CommentsOnPatientPerformanceOfVisualField"},
- 0x00240045 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FalseNegativesEstimateFlag"},
- 0x00240046 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FalseNegativesEstimate"},
- 0x00240048 : { vr : "US", vm : C.VM_SINGLE, keyword : "NegativeCatchTrialsQuantity"},
- 0x00240050 : { vr : "US", vm : C.VM_SINGLE, keyword : "FalseNegativesQuantity"},
- 0x00240051 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFalseNegativesDataFlag"},
- 0x00240052 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFalseNegatives"},
- 0x00240053 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FalsePositivesEstimateFlag"},
- 0x00240054 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FalsePositivesEstimate"},
- 0x00240055 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CatchTrialsDataFlag"},
- 0x00240056 : { vr : "US", vm : C.VM_SINGLE, keyword : "PositiveCatchTrialsQuantity"},
- 0x00240057 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TestPointNormalsDataFlag"},
- 0x00240058 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TestPointNormalsSequence"},
- 0x00240059 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GlobalDeviationProbabilityNormalsFlag"},
- 0x00240060 : { vr : "US", vm : C.VM_SINGLE, keyword : "FalsePositivesQuantity"},
- 0x00240061 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFalsePositivesDataFlag"},
- 0x00240062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExcessiveFalsePositives"},
- 0x00240063 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VisualFieldTestNormalsFlag"},
- 0x00240064 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ResultsNormalsSequence"},
- 0x00240065 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AgeCorrectedSensitivityDeviationAlgorithmSequence"},
- 0x00240066 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GlobalDeviationFromNormal"},
- 0x00240067 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GeneralizedDefectSensitivityDeviationAlgorithmSequence"},
- 0x00240068 : { vr : "FL", vm : C.VM_SINGLE, keyword : "LocalizedDeviationfromNormal"},
- 0x00240069 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientReliabilityIndicator"},
- 0x00240070 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldMeanSensitivity"},
- 0x00240071 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GlobalDeviationProbability"},
- 0x00240072 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LocalDeviationProbabilityNormalsFlag"},
- 0x00240073 : { vr : "FL", vm : C.VM_SINGLE, keyword : "LocalizedDeviationProbability"},
- 0x00240074 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShortTermFluctuationCalculated"},
- 0x00240075 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ShortTermFluctuation"},
- 0x00240076 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShortTermFluctuationProbabilityCalculated"},
- 0x00240077 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ShortTermFluctuationProbability"},
- 0x00240078 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CorrectedLocalizedDeviationFromNormalCalculated"},
- 0x00240079 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CorrectedLocalizedDeviationFromNormal"},
- 0x00240080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CorrectedLocalizedDeviationFromNormalProbabilityCalculated"},
- 0x00240081 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CorrectedLocalizedDeviationFromNormalProbability"},
- 0x00240083 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GlobalDeviationProbabilitySequence"},
- 0x00240085 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LocalizedDeviationProbabilitySequence"},
- 0x00240086 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FovealSensitivityMeasured"},
- 0x00240087 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FovealSensitivity"},
- 0x00240088 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldTestDuration"},
- 0x00240089 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualFieldTestPointSequence"},
- 0x00240090 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldTestPointXCoordinate"},
- 0x00240091 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VisualFieldTestPointYCoordinate"},
- 0x00240092 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AgeCorrectedSensitivityDeviationValue"},
- 0x00240093 : { vr : "CS", vm : C.VM_SINGLE, keyword : "StimulusResults"},
- 0x00240094 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SensitivityValue"},
- 0x00240095 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RetestStimulusSeen"},
- 0x00240096 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RetestSensitivityValue"},
- 0x00240097 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualFieldTestPointNormalsSequence"},
- 0x00240098 : { vr : "FL", vm : C.VM_SINGLE, keyword : "QuantifiedDefect"},
- 0x00240100 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AgeCorrectedSensitivityDeviationProbabilityValue"},
- 0x00240102 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeneralizedDefectCorrectedSensitivityDeviationFlag"},
- 0x00240103 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GeneralizedDefectCorrectedSensitivityDeviationValue"},
- 0x00240104 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GeneralizedDefectCorrectedSensitivityDeviationProbabilityValue"},
- 0x00240105 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MinimumSensitivityValue"},
- 0x00240106 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlindSpotLocalized"},
- 0x00240107 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BlindSpotXCoordinate"},
- 0x00240108 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BlindSpotYCoordinate"},
- 0x00240110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualAcuityMeasurementSequence"},
- 0x00240112 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RefractiveParametersUsedOnPatientSequence"},
- 0x00240113 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MeasurementLaterality"},
- 0x00240114 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicPatientClinicalInformationLeftEyeSequence"},
- 0x00240115 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OphthalmicPatientClinicalInformationRightEyeSequence"},
- 0x00240117 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FovealPointNormativeDataFlag"},
- 0x00240118 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FovealPointProbabilityValue"},
- 0x00240120 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScreeningBaselineMeasured"},
- 0x00240122 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScreeningBaselineMeasuredSequence"},
- 0x00240124 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScreeningBaselineType"},
- 0x00240126 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ScreeningBaselineValue"},
- 0x00240202 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AlgorithmSource"},
- 0x00240306 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DataSetName"},
- 0x00240307 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DataSetVersion"},
- 0x00240308 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DataSetSource"},
- 0x00240309 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DataSetDescription"},
- 0x00240317 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualFieldTestReliabilityGlobalIndexSequence"},
- 0x00240320 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualFieldGlobalResultsIndexSequence"},
- 0x00240325 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DataObservationSequence"},
- 0x00240338 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IndexNormalsFlag"},
- 0x00240341 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IndexProbability"},
- 0x00240344 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IndexProbabilitySequence"},
- 0x00280002 : { vr : "US", vm : C.VM_SINGLE, keyword : "SamplesPerPixel"},
- 0x00280003 : { vr : "US", vm : C.VM_SINGLE, keyword : "SamplesPerPixelUsed"},
- 0x00280004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PhotometricInterpretation"},
- 0x00280005 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageDimensions"},
- 0x00280006 : { vr : "US", vm : C.VM_SINGLE, keyword : "PlanarConfiguration"},
- 0x00280008 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFrames"},
- 0x00280009 : { vr : "AT", vm : C.VM_1N, keyword : "FrameIncrementPointer"},
- 0x0028000A : { vr : "AT", vm : C.VM_1N, keyword : "FrameDimensionPointer"},
- 0x00280010 : { vr : "US", vm : C.VM_SINGLE, keyword : "Rows"},
- 0x00280011 : { vr : "US", vm : C.VM_SINGLE, keyword : "Columns"},
- 0x00280012 : { vr : "US", vm : C.VM_SINGLE, keyword : "Planes"},
- 0x00280014 : { vr : "US", vm : C.VM_SINGLE, keyword : "UltrasoundColorDataPresent"},
- 0x00280030 : { vr : "DS", vm : C.VM_TWO, keyword : "PixelSpacing"},
- 0x00280031 : { vr : "DS", vm : C.VM_TWO, keyword : "ZoomFactor"},
- 0x00280032 : { vr : "DS", vm : C.VM_TWO, keyword : "ZoomCenter"},
- 0x00280034 : { vr : "IS", vm : C.VM_TWO, keyword : "PixelAspectRatio"},
- 0x00280040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageFormat"},
- 0x00280050 : { vr : "LO", vm : C.VM_1N, keyword : "ManipulatedImage"},
- 0x00280051 : { vr : "CS", vm : C.VM_1N, keyword : "CorrectedImage"},
- 0x0028005F : { vr : "LO", vm : C.VM_SINGLE, keyword : "CompressionRecognitionCode"},
- 0x00280060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompressionCode"},
- 0x00280061 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CompressionOriginator"},
- 0x00280062 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CompressionLabel"},
- 0x00280063 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CompressionDescription"},
- 0x00280065 : { vr : "CS", vm : C.VM_1N, keyword : "CompressionSequence"},
- 0x00280066 : { vr : "AT", vm : C.VM_1N, keyword : "CompressionStepPointers"},
- 0x00280068 : { vr : "US", vm : C.VM_SINGLE, keyword : "RepeatInterval"},
- 0x00280069 : { vr : "US", vm : C.VM_SINGLE, keyword : "BitsGrouped"},
- 0x00280070 : { vr : "US", vm : C.VM_1N, keyword : "PerimeterTable"},
- 0x00280071 : { vr : "US", vm : C.VM_SINGLE, keyword : "PerimeterValue"},
- 0x00280080 : { vr : "US", vm : C.VM_SINGLE, keyword : "PredictorRows"},
- 0x00280081 : { vr : "US", vm : C.VM_SINGLE, keyword : "PredictorColumns"},
- 0x00280082 : { vr : "US", vm : C.VM_1N, keyword : "PredictorConstants"},
- 0x00280090 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlockedPixels"},
- 0x00280091 : { vr : "US", vm : C.VM_SINGLE, keyword : "BlockRows"},
- 0x00280092 : { vr : "US", vm : C.VM_SINGLE, keyword : "BlockColumns"},
- 0x00280093 : { vr : "US", vm : C.VM_SINGLE, keyword : "RowOverlap"},
- 0x00280094 : { vr : "US", vm : C.VM_SINGLE, keyword : "ColumnOverlap"},
- 0x00280100 : { vr : "US", vm : C.VM_SINGLE, keyword : "BitsAllocated"},
- 0x00280101 : { vr : "US", vm : C.VM_SINGLE, keyword : "BitsStored"},
- 0x00280102 : { vr : "US", vm : C.VM_SINGLE, keyword : "HighBit"},
- 0x00280103 : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelRepresentation"},
- 0x00280104 : { vr : "US", vm : C.VM_SINGLE, keyword : "SmallestValidPixelValue"},
- 0x00280105 : { vr : "US", vm : C.VM_SINGLE, keyword : "LargestValidPixelValue"},
- 0x00280106 : { vr : "US", vm : C.VM_SINGLE, keyword : "SmallestImagePixelValue"},
- 0x00280107 : { vr : "US", vm : C.VM_SINGLE, keyword : "LargestImagePixelValue"},
- 0x00280108 : { vr : "US", vm : C.VM_SINGLE, keyword : "SmallestPixelValueInSeries"},
- 0x00280109 : { vr : "US", vm : C.VM_SINGLE, keyword : "LargestPixelValueInSeries"},
- 0x00280110 : { vr : "US", vm : C.VM_SINGLE, keyword : "SmallestImagePixelValueInPlane"},
- 0x00280111 : { vr : "US", vm : C.VM_SINGLE, keyword : "LargestImagePixelValueInPlane"},
- 0x00280120 : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelPaddingValue"},
- 0x00280121 : { vr : "US", vm : C.VM_SINGLE, keyword : "PixelPaddingRangeLimit"},
- 0x00280200 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageLocation"},
- 0x00280300 : { vr : "CS", vm : C.VM_SINGLE, keyword : "QualityControlImage"},
- 0x00280301 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BurnedInAnnotation"},
- 0x00280302 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RecognizableVisualFeatures"},
- 0x00280303 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LongitudinalTemporalInformationModified"},
- 0x00280400 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TransformLabel"},
- 0x00280401 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TransformVersionNumber"},
- 0x00280402 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTransformSteps"},
- 0x00280403 : { vr : "LO", vm : C.VM_1N, keyword : "SequenceOfCompressedData"},
- 0x00280404 : { vr : "AT", vm : C.VM_1N, keyword : "DetailsOfCoefficients"},
- 0x00280700 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DCTLabel"},
- 0x00280701 : { vr : "CS", vm : C.VM_1N, keyword : "DataBlockDescription"},
- 0x00280702 : { vr : "AT", vm : C.VM_1N, keyword : "DataBlock"},
- 0x00280710 : { vr : "US", vm : C.VM_SINGLE, keyword : "NormalizationFactorFormat"},
- 0x00280720 : { vr : "US", vm : C.VM_SINGLE, keyword : "ZonalMapNumberFormat"},
- 0x00280721 : { vr : "AT", vm : C.VM_1N, keyword : "ZonalMapLocation"},
- 0x00280722 : { vr : "US", vm : C.VM_SINGLE, keyword : "ZonalMapFormat"},
- 0x00280730 : { vr : "US", vm : C.VM_SINGLE, keyword : "AdaptiveMapFormat"},
- 0x00280740 : { vr : "US", vm : C.VM_SINGLE, keyword : "CodeNumberFormat"},
- 0x00280A02 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PixelSpacingCalibrationType"},
- 0x00280A04 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PixelSpacingCalibrationDescription"},
- 0x00281040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PixelIntensityRelationship"},
- 0x00281041 : { vr : "SS", vm : C.VM_SINGLE, keyword : "PixelIntensityRelationshipSign"},
- 0x00281050 : { vr : "DS", vm : C.VM_1N, keyword : "WindowCenter"},
- 0x00281051 : { vr : "DS", vm : C.VM_1N, keyword : "WindowWidth"},
- 0x00281052 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RescaleIntercept"},
- 0x00281053 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RescaleSlope"},
- 0x00281054 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RescaleType"},
- 0x00281055 : { vr : "LO", vm : C.VM_1N, keyword : "WindowCenterWidthExplanation"},
- 0x00281056 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VOILUTFunction"},
- 0x00281080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GrayScale"},
- 0x00281090 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RecommendedViewingMode"},
- 0x00281100 : { vr : "US", vm : C.VM_THREE, keyword : "GrayLookupTableDescriptor"},
- 0x00281101 : { vr : "US", vm : C.VM_THREE, keyword : "RedPaletteColorLookupTableDescriptor"},
- 0x00281102 : { vr : "US", vm : C.VM_THREE, keyword : "GreenPaletteColorLookupTableDescriptor"},
- 0x00281103 : { vr : "US", vm : C.VM_THREE, keyword : "BluePaletteColorLookupTableDescriptor"},
- 0x00281104 : { vr : "US", vm : C.VM_THREE, keyword : "AlphaPaletteColorLookupTableDescriptor"},
- 0x00281111 : { vr : "US", vm : C.VM_FOUR, keyword : "LargeRedPaletteColorLookupTableDescriptor"},
- 0x00281112 : { vr : "US", vm : C.VM_FOUR, keyword : "LargeGreenPaletteColorLookupTableDescriptor"},
- 0x00281113 : { vr : "US", vm : C.VM_FOUR, keyword : "LargeBluePaletteColorLookupTableDescriptor"},
- 0x00281199 : { vr : "UI", vm : C.VM_SINGLE, keyword : "PaletteColorLookupTableUID"},
- 0x00281200 : { vr : "US", vm : C.VM_1N, keyword : "GrayLookupTableData"},
- 0x00281201 : { vr : "OW", vm : C.VM_SINGLE, keyword : "RedPaletteColorLookupTableData"},
- 0x00281202 : { vr : "OW", vm : C.VM_SINGLE, keyword : "GreenPaletteColorLookupTableData"},
- 0x00281203 : { vr : "OW", vm : C.VM_SINGLE, keyword : "BluePaletteColorLookupTableData"},
- 0x00281204 : { vr : "OW", vm : C.VM_SINGLE, keyword : "AlphaPaletteColorLookupTableData"},
- 0x00281211 : { vr : "OW", vm : C.VM_SINGLE, keyword : "LargeRedPaletteColorLookupTableData"},
- 0x00281212 : { vr : "OW", vm : C.VM_SINGLE, keyword : "LargeGreenPaletteColorLookupTableData"},
- 0x00281213 : { vr : "OW", vm : C.VM_SINGLE, keyword : "LargeBluePaletteColorLookupTableData"},
- 0x00281214 : { vr : "UI", vm : C.VM_SINGLE, keyword : "LargePaletteColorLookupTableUID"},
- 0x00281221 : { vr : "OW", vm : C.VM_SINGLE, keyword : "SegmentedRedPaletteColorLookupTableData"},
- 0x00281222 : { vr : "OW", vm : C.VM_SINGLE, keyword : "SegmentedGreenPaletteColorLookupTableData"},
- 0x00281223 : { vr : "OW", vm : C.VM_SINGLE, keyword : "SegmentedBluePaletteColorLookupTableData"},
- 0x00281300 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BreastImplantPresent"},
- 0x00281350 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PartialView"},
- 0x00281351 : { vr : "ST", vm : C.VM_SINGLE, keyword : "PartialViewDescription"},
- 0x00281352 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PartialViewCodeSequence"},
- 0x0028135A : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpatialLocationsPreserved"},
- 0x00281401 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DataFrameAssignmentSequence"},
- 0x00281402 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DataPathAssignment"},
- 0x00281403 : { vr : "US", vm : C.VM_SINGLE, keyword : "BitsMappedToColorLookupTable"},
- 0x00281404 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BlendingLUT1Sequence"},
- 0x00281405 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlendingLUT1TransferFunction"},
- 0x00281406 : { vr : "FD", vm : C.VM_SINGLE, keyword : "BlendingWeightConstant"},
- 0x00281407 : { vr : "US", vm : C.VM_THREE, keyword : "BlendingLookupTableDescriptor"},
- 0x00281408 : { vr : "OW", vm : C.VM_SINGLE, keyword : "BlendingLookupTableData"},
- 0x0028140B : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EnhancedPaletteColorLookupTableSequence"},
- 0x0028140C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BlendingLUT2Sequence"},
- 0x0028140D : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlendingLUT2TransferFunction"},
- 0x0028140E : { vr : "CS", vm : C.VM_SINGLE, keyword : "DataPathID"},
- 0x0028140F : { vr : "CS", vm : C.VM_SINGLE, keyword : "RGBLUTTransferFunction"},
- 0x00281410 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AlphaLUTTransferFunction"},
- 0x00282000 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ICCProfile"},
- 0x00282110 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LossyImageCompression"},
- 0x00282112 : { vr : "DS", vm : C.VM_1N, keyword : "LossyImageCompressionRatio"},
- 0x00282114 : { vr : "CS", vm : C.VM_1N, keyword : "LossyImageCompressionMethod"},
- 0x00283000 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ModalityLUTSequence"},
- 0x00283002 : { vr : "US", vm : C.VM_THREE, keyword : "LUTDescriptor"},
- 0x00283003 : { vr : "LO", vm : C.VM_SINGLE, keyword : "LUTExplanation"},
- 0x00283004 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ModalityLUTType"},
- 0x00283006 : { vr : "US", vm : C.VM_1N, keyword : "LUTData"},
- 0x00283010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VOILUTSequence"},
- 0x00283110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SoftcopyVOILUTSequence"},
- 0x00284000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ImagePresentationComments"},
- 0x00285000 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BiPlaneAcquisitionSequence"},
- 0x00286010 : { vr : "US", vm : C.VM_SINGLE, keyword : "RepresentativeFrameNumber"},
- 0x00286020 : { vr : "US", vm : C.VM_1N, keyword : "FrameNumbersOfInterest"},
- 0x00286022 : { vr : "LO", vm : C.VM_1N, keyword : "FrameOfInterestDescription"},
- 0x00286023 : { vr : "CS", vm : C.VM_1N, keyword : "FrameOfInterestType"},
- 0x00286030 : { vr : "US", vm : C.VM_1N, keyword : "MaskPointers"},
- 0x00286040 : { vr : "US", vm : C.VM_1N, keyword : "RWavePointer"},
- 0x00286100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MaskSubtractionSequence"},
- 0x00286101 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MaskOperation"},
- 0x00286102 : { vr : "US", vm : C.VM_2_2N, keyword : "ApplicableFrameRange"},
- 0x00286110 : { vr : "US", vm : C.VM_1N, keyword : "MaskFrameNumbers"},
- 0x00286112 : { vr : "US", vm : C.VM_SINGLE, keyword : "ContrastFrameAveraging"},
- 0x00286114 : { vr : "FL", vm : C.VM_TWO, keyword : "MaskSubPixelShift"},
- 0x00286120 : { vr : "SS", vm : C.VM_SINGLE, keyword : "TIDOffset"},
- 0x00286190 : { vr : "ST", vm : C.VM_SINGLE, keyword : "MaskOperationExplanation"},
- 0x00287FE0 : { vr : "UT", vm : C.VM_SINGLE, keyword : "PixelDataProviderURL"},
- 0x00289001 : { vr : "UL", vm : C.VM_SINGLE, keyword : "DataPointRows"},
- 0x00289002 : { vr : "UL", vm : C.VM_SINGLE, keyword : "DataPointColumns"},
- 0x00289003 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SignalDomainColumns"},
- 0x00289099 : { vr : "US", vm : C.VM_SINGLE, keyword : "LargestMonochromePixelValue"},
- 0x00289108 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DataRepresentation"},
- 0x00289110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelMeasuresSequence"},
- 0x00289132 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameVOILUTSequence"},
- 0x00289145 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelValueTransformationSequence"},
- 0x00289235 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SignalDomainRows"},
- 0x00289411 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DisplayFilterPercentage"},
- 0x00289415 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FramePixelShiftSequence"},
- 0x00289416 : { vr : "US", vm : C.VM_SINGLE, keyword : "SubtractionItemID"},
- 0x00289422 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelIntensityRelationshipLUTSequence"},
- 0x00289443 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FramePixelDataPropertiesSequence"},
- 0x00289444 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeometricalProperties"},
- 0x00289445 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GeometricMaximumDistortion"},
- 0x00289446 : { vr : "CS", vm : C.VM_1N, keyword : "ImageProcessingApplied"},
- 0x00289454 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MaskSelectionMode"},
- 0x00289474 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LUTFunction"},
- 0x00289478 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaskVisibilityPercentage"},
- 0x00289501 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelShiftSequence"},
- 0x00289502 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RegionPixelShiftSequence"},
- 0x00289503 : { vr : "SS", vm : C.VM_2_2N, keyword : "VerticesOfTheRegion"},
- 0x00289505 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MultiFramePresentationSequence"},
- 0x00289506 : { vr : "US", vm : C.VM_2_2N, keyword : "PixelShiftFrameRange"},
- 0x00289507 : { vr : "US", vm : C.VM_2_2N, keyword : "LUTFrameRange"},
- 0x00289520 : { vr : "DS", vm : C.VM_16, keyword : "ImageToEquipmentMappingMatrix"},
- 0x00289537 : { vr : "CS", vm : C.VM_SINGLE, keyword : "EquipmentCoordinateSystemIdentification"},
- 0x0032000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "StudyStatusID"},
- 0x0032000C : { vr : "CS", vm : C.VM_SINGLE, keyword : "StudyPriorityID"},
- 0x00320012 : { vr : "LO", vm : C.VM_SINGLE, keyword : "StudyIDIssuer"},
- 0x00320032 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StudyVerifiedDate"},
- 0x00320033 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StudyVerifiedTime"},
- 0x00320034 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StudyReadDate"},
- 0x00320035 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StudyReadTime"},
- 0x00321000 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledStudyStartDate"},
- 0x00321001 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledStudyStartTime"},
- 0x00321010 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledStudyStopDate"},
- 0x00321011 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledStudyStopTime"},
- 0x00321020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ScheduledStudyLocation"},
- 0x00321021 : { vr : "AE", vm : C.VM_1N, keyword : "ScheduledStudyLocationAETitle"},
- 0x00321030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReasonForStudy"},
- 0x00321031 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RequestingPhysicianIdentificationSequence"},
- 0x00321032 : { vr : "PN", vm : C.VM_SINGLE, keyword : "RequestingPhysician"},
- 0x00321033 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestingService"},
- 0x00321034 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RequestingServiceCodeSequence"},
- 0x00321040 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StudyArrivalDate"},
- 0x00321041 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StudyArrivalTime"},
- 0x00321050 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StudyCompletionDate"},
- 0x00321051 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StudyCompletionTime"},
- 0x00321055 : { vr : "CS", vm : C.VM_SINGLE, keyword : "StudyComponentStatusID"},
- 0x00321060 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestedProcedureDescription"},
- 0x00321064 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RequestedProcedureCodeSequence"},
- 0x00321070 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestedContrastAgent"},
- 0x00324000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "StudyComments"},
- 0x00380004 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPatientAliasSequence"},
- 0x00380008 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VisitStatusID"},
- 0x00380010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AdmissionID"},
- 0x00380011 : { vr : "LO", vm : C.VM_SINGLE, keyword : "IssuerOfAdmissionID"},
- 0x00380014 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfAdmissionIDSequence"},
- 0x00380016 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RouteOfAdmissions"},
- 0x0038001A : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledAdmissionDate"},
- 0x0038001B : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledAdmissionTime"},
- 0x0038001C : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledDischargeDate"},
- 0x0038001D : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledDischargeTime"},
- 0x0038001E : { vr : "LO", vm : C.VM_SINGLE, keyword : "ScheduledPatientInstitutionResidence"},
- 0x00380020 : { vr : "DA", vm : C.VM_SINGLE, keyword : "AdmittingDate"},
- 0x00380021 : { vr : "TM", vm : C.VM_SINGLE, keyword : "AdmittingTime"},
- 0x00380030 : { vr : "DA", vm : C.VM_SINGLE, keyword : "DischargeDate"},
- 0x00380032 : { vr : "TM", vm : C.VM_SINGLE, keyword : "DischargeTime"},
- 0x00380040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DischargeDiagnosisDescription"},
- 0x00380044 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DischargeDiagnosisCodeSequence"},
- 0x00380050 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SpecialNeeds"},
- 0x00380060 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ServiceEpisodeID"},
- 0x00380061 : { vr : "LO", vm : C.VM_SINGLE, keyword : "IssuerOfServiceEpisodeID"},
- 0x00380062 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ServiceEpisodeDescription"},
- 0x00380064 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfServiceEpisodeIDSequence"},
- 0x00380100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PertinentDocumentsSequence"},
- 0x00380300 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CurrentPatientLocation"},
- 0x00380400 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientInstitutionResidence"},
- 0x00380500 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientState"},
- 0x00380502 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientClinicalTrialParticipationSequence"},
- 0x00384000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "VisitComments"},
- 0x003A0004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "WaveformOriginality"},
- 0x003A0005 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfWaveformChannels"},
- 0x003A0010 : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfWaveformSamples"},
- 0x003A001A : { vr : "DS", vm : C.VM_SINGLE, keyword : "SamplingFrequency"},
- 0x003A0020 : { vr : "SH", vm : C.VM_SINGLE, keyword : "MultiplexGroupLabel"},
- 0x003A0200 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelDefinitionSequence"},
- 0x003A0202 : { vr : "IS", vm : C.VM_SINGLE, keyword : "WaveformChannelNumber"},
- 0x003A0203 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ChannelLabel"},
- 0x003A0205 : { vr : "CS", vm : C.VM_1N, keyword : "ChannelStatus"},
- 0x003A0208 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelSourceSequence"},
- 0x003A0209 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelSourceModifiersSequence"},
- 0x003A020A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceWaveformSequence"},
- 0x003A020C : { vr : "LO", vm : C.VM_SINGLE, keyword : "ChannelDerivationDescription"},
- 0x003A0210 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelSensitivity"},
- 0x003A0211 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelSensitivityUnitsSequence"},
- 0x003A0212 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelSensitivityCorrectionFactor"},
- 0x003A0213 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelBaseline"},
- 0x003A0214 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelTimeSkew"},
- 0x003A0215 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelSampleSkew"},
- 0x003A0218 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelOffset"},
- 0x003A021A : { vr : "US", vm : C.VM_SINGLE, keyword : "WaveformBitsStored"},
- 0x003A0220 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FilterLowFrequency"},
- 0x003A0221 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FilterHighFrequency"},
- 0x003A0222 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NotchFilterFrequency"},
- 0x003A0223 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NotchFilterBandwidth"},
- 0x003A0230 : { vr : "FL", vm : C.VM_SINGLE, keyword : "WaveformDataDisplayScale"},
- 0x003A0231 : { vr : "US", vm : C.VM_THREE, keyword : "WaveformDisplayBackgroundCIELabValue"},
- 0x003A0240 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WaveformPresentationGroupSequence"},
- 0x003A0241 : { vr : "US", vm : C.VM_SINGLE, keyword : "PresentationGroupNumber"},
- 0x003A0242 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelDisplaySequence"},
- 0x003A0244 : { vr : "US", vm : C.VM_THREE, keyword : "ChannelRecommendedDisplayCIELabValue"},
- 0x003A0245 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ChannelPosition"},
- 0x003A0246 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DisplayShadingFlag"},
- 0x003A0247 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FractionalChannelDisplayScale"},
- 0x003A0248 : { vr : "FL", vm : C.VM_SINGLE, keyword : "AbsoluteChannelDisplayScale"},
- 0x003A0300 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MultiplexedAudioChannelsDescriptionCodeSequence"},
- 0x003A0301 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ChannelIdentificationCode"},
- 0x003A0302 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ChannelMode"},
- 0x00400001 : { vr : "AE", vm : C.VM_1N, keyword : "ScheduledStationAETitle"},
- 0x00400002 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepStartDate"},
- 0x00400003 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepStartTime"},
- 0x00400004 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepEndDate"},
- 0x00400005 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepEndTime"},
- 0x00400006 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ScheduledPerformingPhysicianName"},
- 0x00400007 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepDescription"},
- 0x00400008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledProtocolCodeSequence"},
- 0x00400009 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepID"},
- 0x0040000A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StageCodeSequence"},
- 0x0040000B : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledPerformingPhysicianIdentificationSequence"},
- 0x00400010 : { vr : "SH", vm : C.VM_1N, keyword : "ScheduledStationName"},
- 0x00400011 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepLocation"},
- 0x00400012 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PreMedication"},
- 0x00400020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepStatus"},
- 0x00400026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OrderPlacerIdentifierSequence"},
- 0x00400027 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OrderFillerIdentifierSequence"},
- 0x00400031 : { vr : "UT", vm : C.VM_SINGLE, keyword : "LocalNamespaceEntityID"},
- 0x00400032 : { vr : "UT", vm : C.VM_SINGLE, keyword : "UniversalEntityID"},
- 0x00400033 : { vr : "CS", vm : C.VM_SINGLE, keyword : "UniversalEntityIDType"},
- 0x00400035 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IdentifierTypeCode"},
- 0x00400036 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AssigningFacilitySequence"},
- 0x00400039 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AssigningJurisdictionCodeSequence"},
- 0x0040003A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AssigningAgencyOrDepartmentCodeSequence"},
- 0x00400100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepSequence"},
- 0x00400220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedNonImageCompositeSOPInstanceSequence"},
- 0x00400241 : { vr : "AE", vm : C.VM_SINGLE, keyword : "PerformedStationAETitle"},
- 0x00400242 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PerformedStationName"},
- 0x00400243 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PerformedLocation"},
- 0x00400244 : { vr : "DA", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepStartDate"},
- 0x00400245 : { vr : "TM", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepStartTime"},
- 0x00400250 : { vr : "DA", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepEndDate"},
- 0x00400251 : { vr : "TM", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepEndTime"},
- 0x00400252 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepStatus"},
- 0x00400253 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepID"},
- 0x00400254 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepDescription"},
- 0x00400255 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PerformedProcedureTypeDescription"},
- 0x00400260 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedProtocolCodeSequence"},
- 0x00400261 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PerformedProtocolType"},
- 0x00400270 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledStepAttributesSequence"},
- 0x00400275 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RequestAttributesSequence"},
- 0x00400280 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CommentsOnThePerformedProcedureStep"},
- 0x00400281 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepDiscontinuationReasonCodeSequence"},
- 0x00400293 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "QuantitySequence"},
- 0x00400294 : { vr : "DS", vm : C.VM_SINGLE, keyword : "Quantity"},
- 0x00400295 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MeasuringUnitsSequence"},
- 0x00400296 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BillingItemSequence"},
- 0x00400300 : { vr : "US", vm : C.VM_SINGLE, keyword : "TotalTimeOfFluoroscopy"},
- 0x00400301 : { vr : "US", vm : C.VM_SINGLE, keyword : "TotalNumberOfExposures"},
- 0x00400302 : { vr : "US", vm : C.VM_SINGLE, keyword : "EntranceDose"},
- 0x00400303 : { vr : "US", vm : C.VM_1_2, keyword : "ExposedArea"},
- 0x00400306 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DistanceSourceToEntrance"},
- 0x00400307 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DistanceSourceToSupport"},
- 0x0040030E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ExposureDoseSequence"},
- 0x00400310 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CommentsOnRadiationDose"},
- 0x00400312 : { vr : "DS", vm : C.VM_SINGLE, keyword : "XRayOutput"},
- 0x00400314 : { vr : "DS", vm : C.VM_SINGLE, keyword : "HalfValueLayer"},
- 0x00400316 : { vr : "DS", vm : C.VM_SINGLE, keyword : "OrganDose"},
- 0x00400318 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OrganExposed"},
- 0x00400320 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BillingProcedureStepSequence"},
- 0x00400321 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FilmConsumptionSequence"},
- 0x00400324 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BillingSuppliesAndDevicesSequence"},
- 0x00400330 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedProcedureStepSequence"},
- 0x00400340 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedSeriesSequence"},
- 0x00400400 : { vr : "LT", vm : C.VM_SINGLE, keyword : "CommentsOnTheScheduledProcedureStep"},
- 0x00400440 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProtocolContextSequence"},
- 0x00400441 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContentItemModifierSequence"},
- 0x00400500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledSpecimenSequence"},
- 0x0040050A : { vr : "LO", vm : C.VM_SINGLE, keyword : "SpecimenAccessionNumber"},
- 0x00400512 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContainerIdentifier"},
- 0x00400513 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfTheContainerIdentifierSequence"},
- 0x00400515 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlternateContainerIdentifierSequence"},
- 0x00400518 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContainerTypeCodeSequence"},
- 0x0040051A : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContainerDescription"},
- 0x00400520 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContainerComponentSequence"},
- 0x00400550 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenSequence"},
- 0x00400551 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SpecimenIdentifier"},
- 0x00400552 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenDescriptionSequenceTrial"},
- 0x00400553 : { vr : "ST", vm : C.VM_SINGLE, keyword : "SpecimenDescriptionTrial"},
- 0x00400554 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SpecimenUID"},
- 0x00400555 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AcquisitionContextSequence"},
- 0x00400556 : { vr : "ST", vm : C.VM_SINGLE, keyword : "AcquisitionContextDescription"},
- 0x0040059A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenTypeCodeSequence"},
- 0x00400560 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenDescriptionSequence"},
- 0x00400562 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IssuerOfTheSpecimenIdentifierSequence"},
- 0x00400600 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SpecimenShortDescription"},
- 0x00400602 : { vr : "UT", vm : C.VM_SINGLE, keyword : "SpecimenDetailedDescription"},
- 0x00400610 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenPreparationSequence"},
- 0x00400612 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenPreparationStepContentItemSequence"},
- 0x00400620 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenLocalizationContentItemSequence"},
- 0x004006FA : { vr : "LO", vm : C.VM_SINGLE, keyword : "SlideIdentifier"},
- 0x0040071A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageCenterPointCoordinatesSequence"},
- 0x0040072A : { vr : "DS", vm : C.VM_SINGLE, keyword : "XOffsetInSlideCoordinateSystem"},
- 0x0040073A : { vr : "DS", vm : C.VM_SINGLE, keyword : "YOffsetInSlideCoordinateSystem"},
- 0x0040074A : { vr : "DS", vm : C.VM_SINGLE, keyword : "ZOffsetInSlideCoordinateSystem"},
- 0x004008D8 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelSpacingSequence"},
- 0x004008DA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CoordinateSystemAxisCodeSequence"},
- 0x004008EA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MeasurementUnitsCodeSequence"},
- 0x004009F8 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VitalStainCodeSequenceTrial"},
- 0x00401001 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RequestedProcedureID"},
- 0x00401002 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReasonForTheRequestedProcedure"},
- 0x00401003 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RequestedProcedurePriority"},
- 0x00401004 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientTransportArrangements"},
- 0x00401005 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestedProcedureLocation"},
- 0x00401006 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PlacerOrderNumberProcedure"},
- 0x00401007 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FillerOrderNumberProcedure"},
- 0x00401008 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ConfidentialityCode"},
- 0x00401009 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ReportingPriority"},
- 0x0040100A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReasonForRequestedProcedureCodeSequence"},
- 0x00401010 : { vr : "PN", vm : C.VM_1N, keyword : "NamesOfIntendedRecipientsOfResults"},
- 0x00401011 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntendedRecipientsOfResultsIdentificationSequence"},
- 0x00401012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReasonForPerformedProcedureCodeSequence"},
- 0x00401060 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestedProcedureDescriptionTrial"},
- 0x00401101 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PersonIdentificationCodeSequence"},
- 0x00401102 : { vr : "ST", vm : C.VM_SINGLE, keyword : "PersonAddress"},
- 0x00401103 : { vr : "LO", vm : C.VM_1N, keyword : "PersonTelephoneNumbers"},
- 0x00401400 : { vr : "LT", vm : C.VM_SINGLE, keyword : "RequestedProcedureComments"},
- 0x00402001 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReasonForTheImagingServiceRequest"},
- 0x00402004 : { vr : "DA", vm : C.VM_SINGLE, keyword : "IssueDateOfImagingServiceRequest"},
- 0x00402005 : { vr : "TM", vm : C.VM_SINGLE, keyword : "IssueTimeOfImagingServiceRequest"},
- 0x00402006 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PlacerOrderNumberImagingServiceRequestRetired"},
- 0x00402007 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FillerOrderNumberImagingServiceRequestRetired"},
- 0x00402008 : { vr : "PN", vm : C.VM_SINGLE, keyword : "OrderEnteredBy"},
- 0x00402009 : { vr : "SH", vm : C.VM_SINGLE, keyword : "OrderEntererLocation"},
- 0x00402010 : { vr : "SH", vm : C.VM_SINGLE, keyword : "OrderCallbackPhoneNumber"},
- 0x00402016 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PlacerOrderNumberImagingServiceRequest"},
- 0x00402017 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FillerOrderNumberImagingServiceRequest"},
- 0x00402400 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ImagingServiceRequestComments"},
- 0x00403001 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ConfidentialityConstraintOnPatientDataDescription"},
- 0x00404001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeneralPurposeScheduledProcedureStepStatus"},
- 0x00404002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeneralPurposePerformedProcedureStepStatus"},
- 0x00404003 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeneralPurposeScheduledProcedureStepPriority"},
- 0x00404004 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledProcessingApplicationsCodeSequence"},
- 0x00404005 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepStartDateTime"},
- 0x00404006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MultipleCopiesFlag"},
- 0x00404007 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedProcessingApplicationsCodeSequence"},
- 0x00404009 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HumanPerformerCodeSequence"},
- 0x00404010 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepModificationDateTime"},
- 0x00404011 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ExpectedCompletionDateTime"},
- 0x00404015 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ResultingGeneralPurposePerformedProcedureStepsSequence"},
- 0x00404016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedGeneralPurposeScheduledProcedureStepSequence"},
- 0x00404018 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledWorkitemCodeSequence"},
- 0x00404019 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedWorkitemCodeSequence"},
- 0x00404020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InputAvailabilityFlag"},
- 0x00404021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InputInformationSequence"},
- 0x00404022 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelevantInformationSequence"},
- 0x00404023 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedGeneralPurposeScheduledProcedureStepTransactionUID"},
- 0x00404025 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledStationNameCodeSequence"},
- 0x00404026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledStationClassCodeSequence"},
- 0x00404027 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledStationGeographicLocationCodeSequence"},
- 0x00404028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedStationNameCodeSequence"},
- 0x00404029 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedStationClassCodeSequence"},
- 0x00404030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedStationGeographicLocationCodeSequence"},
- 0x00404031 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RequestedSubsequentWorkitemCodeSequence"},
- 0x00404032 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "NonDICOMOutputCodeSequence"},
- 0x00404033 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OutputInformationSequence"},
- 0x00404034 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledHumanPerformersSequence"},
- 0x00404035 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ActualHumanPerformersSequence"},
- 0x00404036 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HumanPerformerOrganization"},
- 0x00404037 : { vr : "PN", vm : C.VM_SINGLE, keyword : "HumanPerformerName"},
- 0x00404040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RawDataHandling"},
- 0x00404041 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InputReadinessState"},
- 0x00404050 : { vr : "DT", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepStartDateTime"},
- 0x00404051 : { vr : "DT", vm : C.VM_SINGLE, keyword : "PerformedProcedureStepEndDateTime"},
- 0x00404052 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ProcedureStepCancellationDateTime"},
- 0x00408302 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EntranceDoseInmGy"},
- 0x00409094 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageRealWorldValueMappingSequence"},
- 0x00409096 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RealWorldValueMappingSequence"},
- 0x00409098 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PixelValueMappingCodeSequence"},
- 0x00409210 : { vr : "SH", vm : C.VM_SINGLE, keyword : "LUTLabel"},
- 0x00409211 : { vr : "US", vm : C.VM_SINGLE, keyword : "RealWorldValueLastValueMapped"},
- 0x00409212 : { vr : "FD", vm : C.VM_1N, keyword : "RealWorldValueLUTData"},
- 0x00409216 : { vr : "US", vm : C.VM_SINGLE, keyword : "RealWorldValueFirstValueMapped"},
- 0x00409224 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RealWorldValueIntercept"},
- 0x00409225 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RealWorldValueSlope"},
- 0x0040A007 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FindingsFlagTrial"},
- 0x0040A010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RelationshipType"},
- 0x0040A020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FindingsSequenceTrial"},
- 0x0040A021 : { vr : "UI", vm : C.VM_SINGLE, keyword : "FindingsGroupUIDTrial"},
- 0x0040A022 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedFindingsGroupUIDTrial"},
- 0x0040A023 : { vr : "DA", vm : C.VM_SINGLE, keyword : "FindingsGroupRecordingDateTrial"},
- 0x0040A024 : { vr : "TM", vm : C.VM_SINGLE, keyword : "FindingsGroupRecordingTimeTrial"},
- 0x0040A026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FindingsSourceCategoryCodeSequenceTrial"},
- 0x0040A027 : { vr : "LO", vm : C.VM_SINGLE, keyword : "VerifyingOrganization"},
- 0x0040A028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DocumentingOrganizationIdentifierCodeSequenceTrial"},
- 0x0040A030 : { vr : "DT", vm : C.VM_SINGLE, keyword : "VerificationDateTime"},
- 0x0040A032 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ObservationDateTime"},
- 0x0040A040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ValueType"},
- 0x0040A043 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ConceptNameCodeSequence"},
- 0x0040A047 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MeasurementPrecisionDescriptionTrial"},
- 0x0040A050 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContinuityOfContent"},
- 0x0040A057 : { vr : "CS", vm : C.VM_1N, keyword : "UrgencyOrPriorityAlertsTrial"},
- 0x0040A060 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SequencingIndicatorTrial"},
- 0x0040A066 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DocumentIdentifierCodeSequenceTrial"},
- 0x0040A067 : { vr : "PN", vm : C.VM_SINGLE, keyword : "DocumentAuthorTrial"},
- 0x0040A068 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DocumentAuthorIdentifierCodeSequenceTrial"},
- 0x0040A070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IdentifierCodeSequenceTrial"},
- 0x0040A073 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VerifyingObserverSequence"},
- 0x0040A074 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ObjectBinaryIdentifierTrial"},
- 0x0040A075 : { vr : "PN", vm : C.VM_SINGLE, keyword : "VerifyingObserverName"},
- 0x0040A076 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DocumentingObserverIdentifierCodeSequenceTrial"},
- 0x0040A078 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AuthorObserverSequence"},
- 0x0040A07A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ParticipantSequence"},
- 0x0040A07C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CustodialOrganizationSequence"},
- 0x0040A080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ParticipationType"},
- 0x0040A082 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ParticipationDateTime"},
- 0x0040A084 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ObserverType"},
- 0x0040A085 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureIdentifierCodeSequenceTrial"},
- 0x0040A088 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VerifyingObserverIdentificationCodeSequence"},
- 0x0040A089 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ObjectDirectoryBinaryIdentifierTrial"},
- 0x0040A090 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EquivalentCDADocumentSequence"},
- 0x0040A0B0 : { vr : "US", vm : C.VM_2_2N, keyword : "ReferencedWaveformChannels"},
- 0x0040A110 : { vr : "DA", vm : C.VM_SINGLE, keyword : "DateOfDocumentOrVerbalTransactionTrial"},
- 0x0040A112 : { vr : "TM", vm : C.VM_SINGLE, keyword : "TimeOfDocumentCreationOrVerbalTransactionTrial"},
- 0x0040A120 : { vr : "DT", vm : C.VM_SINGLE, keyword : "DateTime"},
- 0x0040A121 : { vr : "DA", vm : C.VM_SINGLE, keyword : "Date"},
- 0x0040A122 : { vr : "TM", vm : C.VM_SINGLE, keyword : "Time"},
- 0x0040A123 : { vr : "PN", vm : C.VM_SINGLE, keyword : "PersonName"},
- 0x0040A124 : { vr : "UI", vm : C.VM_SINGLE, keyword : "UID"},
- 0x0040A125 : { vr : "CS", vm : C.VM_TWO, keyword : "ReportStatusIDTrial"},
- 0x0040A130 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TemporalRangeType"},
- 0x0040A132 : { vr : "UL", vm : C.VM_1N, keyword : "ReferencedSamplePositions"},
- 0x0040A136 : { vr : "US", vm : C.VM_1N, keyword : "ReferencedFrameNumbers"},
- 0x0040A138 : { vr : "DS", vm : C.VM_1N, keyword : "ReferencedTimeOffsets"},
- 0x0040A13A : { vr : "DT", vm : C.VM_1N, keyword : "ReferencedDateTime"},
- 0x0040A160 : { vr : "UT", vm : C.VM_SINGLE, keyword : "TextValue"},
- 0x0040A167 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ObservationCategoryCodeSequenceTrial"},
- 0x0040A168 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ConceptCodeSequence"},
- 0x0040A16A : { vr : "ST", vm : C.VM_SINGLE, keyword : "BibliographicCitationTrial"},
- 0x0040A170 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PurposeOfReferenceCodeSequence"},
- 0x0040A171 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ObservationUIDTrial"},
- 0x0040A172 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedObservationUIDTrial"},
- 0x0040A173 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReferencedObservationClassTrial"},
- 0x0040A174 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReferencedObjectObservationClassTrial"},
- 0x0040A180 : { vr : "US", vm : C.VM_SINGLE, keyword : "AnnotationGroupNumber"},
- 0x0040A192 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ObservationDateTrial"},
- 0x0040A193 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ObservationTimeTrial"},
- 0x0040A194 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MeasurementAutomationTrial"},
- 0x0040A195 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ModifierCodeSequence"},
- 0x0040A224 : { vr : "ST", vm : C.VM_SINGLE, keyword : "IdentificationDescriptionTrial"},
- 0x0040A290 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CoordinatesSetGeometricTypeTrial"},
- 0x0040A296 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlgorithmCodeSequenceTrial"},
- 0x0040A297 : { vr : "ST", vm : C.VM_SINGLE, keyword : "AlgorithmDescriptionTrial"},
- 0x0040A29A : { vr : "SL", vm : C.VM_2_2N, keyword : "PixelCoordinatesSetTrial"},
- 0x0040A300 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MeasuredValueSequence"},
- 0x0040A301 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "NumericValueQualifierCodeSequence"},
- 0x0040A307 : { vr : "PN", vm : C.VM_SINGLE, keyword : "CurrentObserverTrial"},
- 0x0040A30A : { vr : "DS", vm : C.VM_1N, keyword : "NumericValue"},
- 0x0040A313 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedAccessionSequenceTrial"},
- 0x0040A33A : { vr : "ST", vm : C.VM_SINGLE, keyword : "ReportStatusCommentTrial"},
- 0x0040A340 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureContextSequenceTrial"},
- 0x0040A352 : { vr : "PN", vm : C.VM_SINGLE, keyword : "VerbalSourceTrial"},
- 0x0040A353 : { vr : "ST", vm : C.VM_SINGLE, keyword : "AddressTrial"},
- 0x0040A354 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TelephoneNumberTrial"},
- 0x0040A358 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VerbalSourceIdentifierCodeSequenceTrial"},
- 0x0040A360 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PredecessorDocumentsSequence"},
- 0x0040A370 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedRequestSequence"},
- 0x0040A372 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedProcedureCodeSequence"},
- 0x0040A375 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CurrentRequestedProcedureEvidenceSequence"},
- 0x0040A380 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReportDetailSequenceTrial"},
- 0x0040A385 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PertinentOtherEvidenceSequence"},
- 0x0040A390 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HL7StructuredDocumentReferenceSequence"},
- 0x0040A402 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ObservationSubjectUIDTrial"},
- 0x0040A403 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ObservationSubjectClassTrial"},
- 0x0040A404 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ObservationSubjectTypeCodeSequenceTrial"},
- 0x0040A491 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompletionFlag"},
- 0x0040A492 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CompletionFlagDescription"},
- 0x0040A493 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VerificationFlag"},
- 0x0040A494 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ArchiveRequested"},
- 0x0040A496 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PreliminaryFlag"},
- 0x0040A504 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContentTemplateSequence"},
- 0x0040A525 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IdenticalDocumentsSequence"},
- 0x0040A600 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ObservationSubjectContextFlagTrial"},
- 0x0040A601 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ObserverContextFlagTrial"},
- 0x0040A603 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ProcedureContextFlagTrial"},
- 0x0040A730 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContentSequence"},
- 0x0040A731 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelationshipSequenceTrial"},
- 0x0040A732 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelationshipTypeCodeSequenceTrial"},
- 0x0040A744 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LanguageCodeSequenceTrial"},
- 0x0040A992 : { vr : "ST", vm : C.VM_SINGLE, keyword : "UniformResourceLocatorTrial"},
- 0x0040B020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WaveformAnnotationSequence"},
- 0x0040DB00 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TemplateIdentifier"},
- 0x0040DB06 : { vr : "DT", vm : C.VM_SINGLE, keyword : "TemplateVersion"},
- 0x0040DB07 : { vr : "DT", vm : C.VM_SINGLE, keyword : "TemplateLocalVersion"},
- 0x0040DB0B : { vr : "CS", vm : C.VM_SINGLE, keyword : "TemplateExtensionFlag"},
- 0x0040DB0C : { vr : "UI", vm : C.VM_SINGLE, keyword : "TemplateExtensionOrganizationUID"},
- 0x0040DB0D : { vr : "UI", vm : C.VM_SINGLE, keyword : "TemplateExtensionCreatorUID"},
- 0x0040DB73 : { vr : "UL", vm : C.VM_1N, keyword : "ReferencedContentItemIdentifier"},
- 0x0040E001 : { vr : "ST", vm : C.VM_SINGLE, keyword : "HL7InstanceIdentifier"},
- 0x0040E004 : { vr : "DT", vm : C.VM_SINGLE, keyword : "HL7DocumentEffectiveTime"},
- 0x0040E006 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HL7DocumentTypeCodeSequence"},
- 0x0040E008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DocumentClassCodeSequence"},
- 0x0040E010 : { vr : "UT", vm : C.VM_SINGLE, keyword : "RetrieveURI"},
- 0x0040E011 : { vr : "UI", vm : C.VM_SINGLE, keyword : "RetrieveLocationUID"},
- 0x0040E020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TypeOfInstances"},
- 0x0040E021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DICOMRetrievalSequence"},
- 0x0040E022 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DICOMMediaRetrievalSequence"},
- 0x0040E023 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WADORetrievalSequence"},
- 0x0040E024 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "XDSRetrievalSequence"},
- 0x0040E030 : { vr : "UI", vm : C.VM_SINGLE, keyword : "RepositoryUniqueID"},
- 0x0040E031 : { vr : "UI", vm : C.VM_SINGLE, keyword : "HomeCommunityID"},
- 0x00420010 : { vr : "ST", vm : C.VM_SINGLE, keyword : "DocumentTitle"},
- 0x00420011 : { vr : "OB", vm : C.VM_SINGLE, keyword : "EncapsulatedDocument"},
- 0x00420012 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MIMETypeOfEncapsulatedDocument"},
- 0x00420013 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceInstanceSequence"},
- 0x00420014 : { vr : "LO", vm : C.VM_1N, keyword : "ListOfMIMETypes"},
- 0x00440001 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ProductPackageIdentifier"},
- 0x00440002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SubstanceAdministrationApproval"},
- 0x00440003 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ApprovalStatusFurtherDescription"},
- 0x00440004 : { vr : "DT", vm : C.VM_SINGLE, keyword : "ApprovalStatusDateTime"},
- 0x00440007 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProductTypeCodeSequence"},
- 0x00440008 : { vr : "LO", vm : C.VM_1N, keyword : "ProductName"},
- 0x00440009 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ProductDescription"},
- 0x0044000A : { vr : "LO", vm : C.VM_SINGLE, keyword : "ProductLotIdentifier"},
- 0x0044000B : { vr : "DT", vm : C.VM_SINGLE, keyword : "ProductExpirationDateTime"},
- 0x00440010 : { vr : "DT", vm : C.VM_SINGLE, keyword : "SubstanceAdministrationDateTime"},
- 0x00440011 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SubstanceAdministrationNotes"},
- 0x00440012 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SubstanceAdministrationDeviceID"},
- 0x00440013 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProductParameterSequence"},
- 0x00440019 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SubstanceAdministrationParameterSequence"},
- 0x00460012 : { vr : "LO", vm : C.VM_SINGLE, keyword : "LensDescription"},
- 0x00460014 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RightLensSequence"},
- 0x00460015 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LeftLensSequence"},
- 0x00460016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "UnspecifiedLateralityLensSequence"},
- 0x00460018 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CylinderSequence"},
- 0x00460028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrismSequence"},
- 0x00460030 : { vr : "FD", vm : C.VM_SINGLE, keyword : "HorizontalPrismPower"},
- 0x00460032 : { vr : "CS", vm : C.VM_SINGLE, keyword : "HorizontalPrismBase"},
- 0x00460034 : { vr : "FD", vm : C.VM_SINGLE, keyword : "VerticalPrismPower"},
- 0x00460036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VerticalPrismBase"},
- 0x00460038 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LensSegmentType"},
- 0x00460040 : { vr : "FD", vm : C.VM_SINGLE, keyword : "OpticalTransmittance"},
- 0x00460042 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ChannelWidth"},
- 0x00460044 : { vr : "FD", vm : C.VM_SINGLE, keyword : "PupilSize"},
- 0x00460046 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CornealSize"},
- 0x00460050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AutorefractionRightEyeSequence"},
- 0x00460052 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AutorefractionLeftEyeSequence"},
- 0x00460060 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DistancePupillaryDistance"},
- 0x00460062 : { vr : "FD", vm : C.VM_SINGLE, keyword : "NearPupillaryDistance"},
- 0x00460063 : { vr : "FD", vm : C.VM_SINGLE, keyword : "IntermediatePupillaryDistance"},
- 0x00460064 : { vr : "FD", vm : C.VM_SINGLE, keyword : "OtherPupillaryDistance"},
- 0x00460070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "KeratometryRightEyeSequence"},
- 0x00460071 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "KeratometryLeftEyeSequence"},
- 0x00460074 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SteepKeratometricAxisSequence"},
- 0x00460075 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RadiusOfCurvature"},
- 0x00460076 : { vr : "FD", vm : C.VM_SINGLE, keyword : "KeratometricPower"},
- 0x00460077 : { vr : "FD", vm : C.VM_SINGLE, keyword : "KeratometricAxis"},
- 0x00460080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FlatKeratometricAxisSequence"},
- 0x00460092 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BackgroundColor"},
- 0x00460094 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Optotype"},
- 0x00460095 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OptotypePresentation"},
- 0x00460097 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SubjectiveRefractionRightEyeSequence"},
- 0x00460098 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SubjectiveRefractionLeftEyeSequence"},
- 0x00460100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AddNearSequence"},
- 0x00460101 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AddIntermediateSequence"},
- 0x00460102 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AddOtherSequence"},
- 0x00460104 : { vr : "FD", vm : C.VM_SINGLE, keyword : "AddPower"},
- 0x00460106 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ViewingDistance"},
- 0x00460121 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualAcuityTypeCodeSequence"},
- 0x00460122 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualAcuityRightEyeSequence"},
- 0x00460123 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualAcuityLeftEyeSequence"},
- 0x00460124 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "VisualAcuityBothEyesOpenSequence"},
- 0x00460125 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ViewingDistanceType"},
- 0x00460135 : { vr : "SS", vm : C.VM_TWO, keyword : "VisualAcuityModifiers"},
- 0x00460137 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DecimalVisualAcuity"},
- 0x00460139 : { vr : "LO", vm : C.VM_SINGLE, keyword : "OptotypeDetailedDefinition"},
- 0x00460145 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedRefractiveMeasurementsSequence"},
- 0x00460146 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SpherePower"},
- 0x00460147 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CylinderPower"},
- 0x00480001 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ImagedVolumeWidth"},
- 0x00480002 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ImagedVolumeHeight"},
- 0x00480003 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ImagedVolumeDepth"},
- 0x00480006 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TotalPixelMatrixColumns"},
- 0x00480007 : { vr : "UL", vm : C.VM_SINGLE, keyword : "TotalPixelMatrixRows"},
- 0x00480008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TotalPixelMatrixOriginSequence"},
- 0x00480010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SpecimenLabelInImage"},
- 0x00480011 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FocusMethod"},
- 0x00480012 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExtendedDepthOfField"},
- 0x00480013 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfFocalPlanes"},
- 0x00480014 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DistanceBetweenFocalPlanes"},
- 0x00480015 : { vr : "US", vm : C.VM_THREE, keyword : "RecommendedAbsentPixelCIELabValue"},
- 0x00480100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IlluminatorTypeCodeSequence"},
- 0x00480102 : { vr : "DS", vm : C.VM_SIX, keyword : "ImageOrientationSlide"},
- 0x00480105 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OpticalPathSequence"},
- 0x00480106 : { vr : "SH", vm : C.VM_SINGLE, keyword : "OpticalPathIdentifier"},
- 0x00480107 : { vr : "ST", vm : C.VM_SINGLE, keyword : "OpticalPathDescription"},
- 0x00480108 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IlluminationColorCodeSequence"},
- 0x00480110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SpecimenReferenceSequence"},
- 0x00480111 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CondenserLensPower"},
- 0x00480112 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ObjectiveLensPower"},
- 0x00480113 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ObjectiveLensNumericalAperture"},
- 0x00480120 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PaletteColorLookupTableSequence"},
- 0x00480200 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageNavigationSequence"},
- 0x00480201 : { vr : "US", vm : C.VM_TWO, keyword : "TopLeftHandCornerOfLocalizerArea"},
- 0x00480202 : { vr : "US", vm : C.VM_TWO, keyword : "BottomRightHandCornerOfLocalizerArea"},
- 0x00480207 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OpticalPathIdentificationSequence"},
- 0x0048021A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanePositionSlideSequence"},
- 0x0048021E : { vr : "SL", vm : C.VM_SINGLE, keyword : "RowPositionInTotalImagePixelMatrix"},
- 0x0048021F : { vr : "SL", vm : C.VM_SINGLE, keyword : "ColumnPositionInTotalImagePixelMatrix"},
- 0x00480301 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PixelOriginInterpretation"},
- 0x00500004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CalibrationImage"},
- 0x00500010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DeviceSequence"},
- 0x00500012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContainerComponentTypeCodeSequence"},
- 0x00500013 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContainerComponentThickness"},
- 0x00500014 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeviceLength"},
- 0x00500015 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContainerComponentWidth"},
- 0x00500016 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeviceDiameter"},
- 0x00500017 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DeviceDiameterUnits"},
- 0x00500018 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeviceVolume"},
- 0x00500019 : { vr : "DS", vm : C.VM_SINGLE, keyword : "InterMarkerDistance"},
- 0x0050001A : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContainerComponentMaterial"},
- 0x0050001B : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContainerComponentID"},
- 0x0050001C : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContainerComponentLength"},
- 0x0050001D : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContainerComponentDiameter"},
- 0x0050001E : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContainerComponentDescription"},
- 0x00500020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DeviceDescription"},
- 0x00520001 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ContrastBolusIngredientPercentByVolume"},
- 0x00520002 : { vr : "FD", vm : C.VM_SINGLE, keyword : "OCTFocalDistance"},
- 0x00520003 : { vr : "FD", vm : C.VM_SINGLE, keyword : "BeamSpotSize"},
- 0x00520004 : { vr : "FD", vm : C.VM_SINGLE, keyword : "EffectiveRefractiveIndex"},
- 0x00520006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OCTAcquisitionDomain"},
- 0x00520007 : { vr : "FD", vm : C.VM_SINGLE, keyword : "OCTOpticalCenterWavelength"},
- 0x00520008 : { vr : "FD", vm : C.VM_SINGLE, keyword : "AxialResolution"},
- 0x00520009 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RangingDepth"},
- 0x00520011 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ALineRate"},
- 0x00520012 : { vr : "US", vm : C.VM_SINGLE, keyword : "ALinesPerFrame"},
- 0x00520013 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CatheterRotationalRate"},
- 0x00520014 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ALinePixelSpacing"},
- 0x00520016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ModeOfPercutaneousAccessSequence"},
- 0x00520025 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntravascularOCTFrameTypeSequence"},
- 0x00520026 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OCTZOffsetApplied"},
- 0x00520027 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntravascularFrameContentSequence"},
- 0x00520028 : { vr : "FD", vm : C.VM_SINGLE, keyword : "IntravascularLongitudinalDistance"},
- 0x00520029 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IntravascularOCTFrameContentSequence"},
- 0x00520030 : { vr : "SS", vm : C.VM_SINGLE, keyword : "OCTZOffsetCorrection"},
- 0x00520031 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CatheterDirectionOfRotation"},
- 0x00520033 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SeamLineLocation"},
- 0x00520034 : { vr : "FD", vm : C.VM_SINGLE, keyword : "FirstALineLocation"},
- 0x00520036 : { vr : "US", vm : C.VM_SINGLE, keyword : "SeamLineIndex"},
- 0x00520038 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfPaddedAlines"},
- 0x00520039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InterpolationType"},
- 0x0052003A : { vr : "CS", vm : C.VM_SINGLE, keyword : "RefractiveIndexApplied"},
- 0x00540010 : { vr : "US", vm : C.VM_1N, keyword : "EnergyWindowVector"},
- 0x00540011 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfEnergyWindows"},
- 0x00540012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EnergyWindowInformationSequence"},
- 0x00540013 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EnergyWindowRangeSequence"},
- 0x00540014 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EnergyWindowLowerLimit"},
- 0x00540015 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EnergyWindowUpperLimit"},
- 0x00540016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalInformationSequence"},
- 0x00540017 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ResidualSyringeCounts"},
- 0x00540018 : { vr : "SH", vm : C.VM_SINGLE, keyword : "EnergyWindowName"},
- 0x00540020 : { vr : "US", vm : C.VM_1N, keyword : "DetectorVector"},
- 0x00540021 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfDetectors"},
- 0x00540022 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DetectorInformationSequence"},
- 0x00540030 : { vr : "US", vm : C.VM_1N, keyword : "PhaseVector"},
- 0x00540031 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfPhases"},
- 0x00540032 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PhaseInformationSequence"},
- 0x00540033 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfFramesInPhase"},
- 0x00540036 : { vr : "IS", vm : C.VM_SINGLE, keyword : "PhaseDelay"},
- 0x00540038 : { vr : "IS", vm : C.VM_SINGLE, keyword : "PauseBetweenFrames"},
- 0x00540039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PhaseDescription"},
- 0x00540050 : { vr : "US", vm : C.VM_1N, keyword : "RotationVector"},
- 0x00540051 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfRotations"},
- 0x00540052 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RotationInformationSequence"},
- 0x00540053 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfFramesInRotation"},
- 0x00540060 : { vr : "US", vm : C.VM_1N, keyword : "RRIntervalVector"},
- 0x00540061 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfRRIntervals"},
- 0x00540062 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GatedInformationSequence"},
- 0x00540063 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DataInformationSequence"},
- 0x00540070 : { vr : "US", vm : C.VM_1N, keyword : "TimeSlotVector"},
- 0x00540071 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTimeSlots"},
- 0x00540072 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TimeSlotInformationSequence"},
- 0x00540073 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TimeSlotTime"},
- 0x00540080 : { vr : "US", vm : C.VM_1N, keyword : "SliceVector"},
- 0x00540081 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfSlices"},
- 0x00540090 : { vr : "US", vm : C.VM_1N, keyword : "AngularViewVector"},
- 0x00540100 : { vr : "US", vm : C.VM_1N, keyword : "TimeSliceVector"},
- 0x00540101 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTimeSlices"},
- 0x00540200 : { vr : "DS", vm : C.VM_SINGLE, keyword : "StartAngle"},
- 0x00540202 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TypeOfDetectorMotion"},
- 0x00540210 : { vr : "IS", vm : C.VM_1N, keyword : "TriggerVector"},
- 0x00540211 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTriggersInPhase"},
- 0x00540220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ViewCodeSequence"},
- 0x00540222 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ViewModifierCodeSequence"},
- 0x00540300 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RadionuclideCodeSequence"},
- 0x00540302 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AdministrationRouteCodeSequence"},
- 0x00540304 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RadiopharmaceuticalCodeSequence"},
- 0x00540306 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CalibrationDataSequence"},
- 0x00540308 : { vr : "US", vm : C.VM_SINGLE, keyword : "EnergyWindowNumber"},
- 0x00540400 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ImageID"},
- 0x00540410 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientOrientationCodeSequence"},
- 0x00540412 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientOrientationModifierCodeSequence"},
- 0x00540414 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientGantryRelationshipCodeSequence"},
- 0x00540500 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SliceProgressionDirection"},
- 0x00541000 : { vr : "CS", vm : C.VM_TWO, keyword : "SeriesType"},
- 0x00541001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Units"},
- 0x00541002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CountsSource"},
- 0x00541004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReprojectionMethod"},
- 0x00541006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SUVType"},
- 0x00541100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RandomsCorrectionMethod"},
- 0x00541101 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AttenuationCorrectionMethod"},
- 0x00541102 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DecayCorrection"},
- 0x00541103 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReconstructionMethod"},
- 0x00541104 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DetectorLinesOfResponseUsed"},
- 0x00541105 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ScatterCorrectionMethod"},
- 0x00541200 : { vr : "DS", vm : C.VM_SINGLE, keyword : "AxialAcceptance"},
- 0x00541201 : { vr : "IS", vm : C.VM_TWO, keyword : "AxialMash"},
- 0x00541202 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TransverseMash"},
- 0x00541203 : { vr : "DS", vm : C.VM_TWO, keyword : "DetectorElementSize"},
- 0x00541210 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CoincidenceWindowWidth"},
- 0x00541220 : { vr : "CS", vm : C.VM_1N, keyword : "SecondaryCountsType"},
- 0x00541300 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FrameReferenceTime"},
- 0x00541310 : { vr : "IS", vm : C.VM_SINGLE, keyword : "PrimaryPromptsCountsAccumulated"},
- 0x00541311 : { vr : "IS", vm : C.VM_1N, keyword : "SecondaryCountsAccumulated"},
- 0x00541320 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SliceSensitivityFactor"},
- 0x00541321 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DecayFactor"},
- 0x00541322 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoseCalibrationFactor"},
- 0x00541323 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ScatterFractionFactor"},
- 0x00541324 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeadTimeFactor"},
- 0x00541330 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageIndex"},
- 0x00541400 : { vr : "CS", vm : C.VM_1N, keyword : "CountsIncluded"},
- 0x00541401 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DeadTimeCorrectionFlag"},
- 0x00603000 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HistogramSequence"},
- 0x00603002 : { vr : "US", vm : C.VM_SINGLE, keyword : "HistogramNumberOfBins"},
- 0x00603004 : { vr : "US", vm : C.VM_SINGLE, keyword : "HistogramFirstBinValue"},
- 0x00603006 : { vr : "US", vm : C.VM_SINGLE, keyword : "HistogramLastBinValue"},
- 0x00603008 : { vr : "US", vm : C.VM_SINGLE, keyword : "HistogramBinWidth"},
- 0x00603010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HistogramExplanation"},
- 0x00603020 : { vr : "UL", vm : C.VM_1N, keyword : "HistogramData"},
- 0x00620001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SegmentationType"},
- 0x00620002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentSequence"},
- 0x00620003 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentedPropertyCategoryCodeSequence"},
- 0x00620004 : { vr : "US", vm : C.VM_SINGLE, keyword : "SegmentNumber"},
- 0x00620005 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SegmentLabel"},
- 0x00620006 : { vr : "ST", vm : C.VM_SINGLE, keyword : "SegmentDescription"},
- 0x00620008 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SegmentAlgorithmType"},
- 0x00620009 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SegmentAlgorithmName"},
- 0x0062000A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentIdentificationSequence"},
- 0x0062000B : { vr : "US", vm : C.VM_1N, keyword : "ReferencedSegmentNumber"},
- 0x0062000C : { vr : "US", vm : C.VM_SINGLE, keyword : "RecommendedDisplayGrayscaleValue"},
- 0x0062000D : { vr : "US", vm : C.VM_THREE, keyword : "RecommendedDisplayCIELabValue"},
- 0x0062000E : { vr : "US", vm : C.VM_SINGLE, keyword : "MaximumFractionalValue"},
- 0x0062000F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentedPropertyTypeCodeSequence"},
- 0x00620010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SegmentationFractionalType"},
- 0x00640002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DeformableRegistrationSequence"},
- 0x00640003 : { vr : "UI", vm : C.VM_SINGLE, keyword : "SourceFrameOfReferenceUID"},
- 0x00640005 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DeformableRegistrationGridSequence"},
- 0x00640007 : { vr : "UL", vm : C.VM_THREE, keyword : "GridDimensions"},
- 0x00640008 : { vr : "FD", vm : C.VM_THREE, keyword : "GridResolution"},
- 0x00640009 : { vr : "OF", vm : C.VM_SINGLE, keyword : "VectorGridData"},
- 0x0064000F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PreDeformationMatrixRegistrationSequence"},
- 0x00640010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PostDeformationMatrixRegistrationSequence"},
- 0x00660001 : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfSurfaces"},
- 0x00660002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfaceSequence"},
- 0x00660003 : { vr : "UL", vm : C.VM_SINGLE, keyword : "SurfaceNumber"},
- 0x00660004 : { vr : "LT", vm : C.VM_SINGLE, keyword : "SurfaceComments"},
- 0x00660009 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SurfaceProcessing"},
- 0x0066000A : { vr : "FL", vm : C.VM_SINGLE, keyword : "SurfaceProcessingRatio"},
- 0x0066000B : { vr : "LO", vm : C.VM_SINGLE, keyword : "SurfaceProcessingDescription"},
- 0x0066000C : { vr : "FL", vm : C.VM_SINGLE, keyword : "RecommendedPresentationOpacity"},
- 0x0066000D : { vr : "CS", vm : C.VM_SINGLE, keyword : "RecommendedPresentationType"},
- 0x0066000E : { vr : "CS", vm : C.VM_SINGLE, keyword : "FiniteVolume"},
- 0x00660010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Manifold"},
- 0x00660011 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfacePointsSequence"},
- 0x00660012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfacePointsNormalsSequence"},
- 0x00660013 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfaceMeshPrimitivesSequence"},
- 0x00660015 : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfSurfacePoints"},
- 0x00660016 : { vr : "OF", vm : C.VM_SINGLE, keyword : "PointCoordinatesData"},
- 0x00660017 : { vr : "FL", vm : C.VM_THREE, keyword : "PointPositionAccuracy"},
- 0x00660018 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MeanPointDistance"},
- 0x00660019 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MaximumPointDistance"},
- 0x0066001A : { vr : "FL", vm : C.VM_SIX, keyword : "PointsBoundingBoxCoordinates"},
- 0x0066001B : { vr : "FL", vm : C.VM_THREE, keyword : "AxisOfRotation"},
- 0x0066001C : { vr : "FL", vm : C.VM_THREE, keyword : "CenterOfRotation"},
- 0x0066001E : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfVectors"},
- 0x0066001F : { vr : "US", vm : C.VM_SINGLE, keyword : "VectorDimensionality"},
- 0x00660020 : { vr : "FL", vm : C.VM_1N, keyword : "VectorAccuracy"},
- 0x00660021 : { vr : "OF", vm : C.VM_SINGLE, keyword : "VectorCoordinateData"},
- 0x00660023 : { vr : "OW", vm : C.VM_SINGLE, keyword : "TrianglePointIndexList"},
- 0x00660024 : { vr : "OW", vm : C.VM_SINGLE, keyword : "EdgePointIndexList"},
- 0x00660025 : { vr : "OW", vm : C.VM_SINGLE, keyword : "VertexPointIndexList"},
- 0x00660026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TriangleStripSequence"},
- 0x00660027 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TriangleFanSequence"},
- 0x00660028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LineSequence"},
- 0x00660029 : { vr : "OW", vm : C.VM_SINGLE, keyword : "PrimitivePointIndexList"},
- 0x0066002A : { vr : "UL", vm : C.VM_SINGLE, keyword : "SurfaceCount"},
- 0x0066002B : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSurfaceSequence"},
- 0x0066002C : { vr : "UL", vm : C.VM_SINGLE, keyword : "ReferencedSurfaceNumber"},
- 0x0066002D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentSurfaceGenerationAlgorithmIdentificationSequence"},
- 0x0066002E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SegmentSurfaceSourceInstanceSequence"},
- 0x0066002F : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlgorithmFamilyCodeSequence"},
- 0x00660030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlgorithmNameCodeSequence"},
- 0x00660031 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AlgorithmVersion"},
- 0x00660032 : { vr : "LT", vm : C.VM_SINGLE, keyword : "AlgorithmParameters"},
- 0x00660034 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FacetSequence"},
- 0x00660035 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfaceProcessingAlgorithmIdentificationSequence"},
- 0x00660036 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AlgorithmName"},
- 0x00686210 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantSize"},
- 0x00686221 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantTemplateVersion"},
- 0x00686222 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReplacedImplantTemplateSequence"},
- 0x00686223 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImplantType"},
- 0x00686224 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DerivationImplantTemplateSequence"},
- 0x00686225 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OriginalImplantTemplateSequence"},
- 0x00686226 : { vr : "DT", vm : C.VM_SINGLE, keyword : "EffectiveDateTime"},
- 0x00686230 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTargetAnatomySequence"},
- 0x00686260 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InformationFromManufacturerSequence"},
- 0x00686265 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "NotificationFromManufacturerSequence"},
- 0x00686270 : { vr : "DT", vm : C.VM_SINGLE, keyword : "InformationIssueDateTime"},
- 0x00686280 : { vr : "ST", vm : C.VM_SINGLE, keyword : "InformationSummary"},
- 0x006862A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantRegulatoryDisapprovalCodeSequence"},
- 0x006862A5 : { vr : "FD", vm : C.VM_SINGLE, keyword : "OverallTemplateSpatialTolerance"},
- 0x006862C0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HPGLDocumentSequence"},
- 0x006862D0 : { vr : "US", vm : C.VM_SINGLE, keyword : "HPGLDocumentID"},
- 0x006862D5 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HPGLDocumentLabel"},
- 0x006862E0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ViewOrientationCodeSequence"},
- 0x006862F0 : { vr : "FD", vm : C.VM_NINE, keyword : "ViewOrientationModifier"},
- 0x006862F2 : { vr : "FD", vm : C.VM_SINGLE, keyword : "HPGLDocumentScaling"},
- 0x00686300 : { vr : "OB", vm : C.VM_SINGLE, keyword : "HPGLDocument"},
- 0x00686310 : { vr : "US", vm : C.VM_SINGLE, keyword : "HPGLContourPenNumber"},
- 0x00686320 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HPGLPenSequence"},
- 0x00686330 : { vr : "US", vm : C.VM_SINGLE, keyword : "HPGLPenNumber"},
- 0x00686340 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HPGLPenLabel"},
- 0x00686345 : { vr : "ST", vm : C.VM_SINGLE, keyword : "HPGLPenDescription"},
- 0x00686346 : { vr : "FD", vm : C.VM_TWO, keyword : "RecommendedRotationPoint"},
- 0x00686347 : { vr : "FD", vm : C.VM_FOUR, keyword : "BoundingRectangle"},
- 0x00686350 : { vr : "US", vm : C.VM_1N, keyword : "ImplantTemplate3DModelSurfaceNumber"},
- 0x00686360 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SurfaceModelDescriptionSequence"},
- 0x00686380 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SurfaceModelLabel"},
- 0x00686390 : { vr : "FD", vm : C.VM_SINGLE, keyword : "SurfaceModelScalingFactor"},
- 0x006863A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MaterialsCodeSequence"},
- 0x006863A4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CoatingMaterialsCodeSequence"},
- 0x006863A8 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTypeCodeSequence"},
- 0x006863AC : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FixationMethodCodeSequence"},
- 0x006863B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MatingFeatureSetsSequence"},
- 0x006863C0 : { vr : "US", vm : C.VM_SINGLE, keyword : "MatingFeatureSetID"},
- 0x006863D0 : { vr : "LO", vm : C.VM_SINGLE, keyword : "MatingFeatureSetLabel"},
- 0x006863E0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MatingFeatureSequence"},
- 0x006863F0 : { vr : "US", vm : C.VM_SINGLE, keyword : "MatingFeatureID"},
- 0x00686400 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MatingFeatureDegreeOfFreedomSequence"},
- 0x00686410 : { vr : "US", vm : C.VM_SINGLE, keyword : "DegreeOfFreedomID"},
- 0x00686420 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DegreeOfFreedomType"},
- 0x00686430 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TwoDMatingFeatureCoordinatesSequence"},
- 0x00686440 : { vr : "US", vm : C.VM_SINGLE, keyword : "ReferencedHPGLDocumentID"},
- 0x00686450 : { vr : "FD", vm : C.VM_TWO, keyword : "TwoDMatingPoint"},
- 0x00686460 : { vr : "FD", vm : C.VM_FOUR, keyword : "TwoDMatingAxes"},
- 0x00686470 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TwoDDegreeOfFreedomSequence"},
- 0x00686490 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDDegreeOfFreedomAxis"},
- 0x006864A0 : { vr : "FD", vm : C.VM_TWO, keyword : "RangeOfFreedom"},
- 0x006864C0 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDMatingPoint"},
- 0x006864D0 : { vr : "FD", vm : C.VM_NINE, keyword : "ThreeDMatingAxes"},
- 0x006864F0 : { vr : "FD", vm : C.VM_THREE, keyword : "TwoDDegreeOfFreedomAxis"},
- 0x00686500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanningLandmarkPointSequence"},
- 0x00686510 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanningLandmarkLineSequence"},
- 0x00686520 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanningLandmarkPlaneSequence"},
- 0x00686530 : { vr : "US", vm : C.VM_SINGLE, keyword : "PlanningLandmarkID"},
- 0x00686540 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PlanningLandmarkDescription"},
- 0x00686545 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlanningLandmarkIdentificationCodeSequence"},
- 0x00686550 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TwoDPointCoordinatesSequence"},
- 0x00686560 : { vr : "FD", vm : C.VM_TWO, keyword : "TwoDPointCoordinates"},
- 0x00686590 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDPointCoordinates"},
- 0x006865A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TwoDLineCoordinatesSequence"},
- 0x006865B0 : { vr : "FD", vm : C.VM_FOUR, keyword : "TwoDLineCoordinates"},
- 0x006865D0 : { vr : "FD", vm : C.VM_SIX, keyword : "ThreeDLineCoordinates"},
- 0x006865E0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TwoDPlaneCoordinatesSequence"},
- 0x006865F0 : { vr : "FD", vm : C.VM_FOUR, keyword : "TwoDPlaneIntersection"},
- 0x00686610 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDPlaneOrigin"},
- 0x00686620 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDPlaneNormal"},
- 0x00700001 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GraphicAnnotationSequence"},
- 0x00700002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GraphicLayer"},
- 0x00700003 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BoundingBoxAnnotationUnits"},
- 0x00700004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnchorPointAnnotationUnits"},
- 0x00700005 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GraphicAnnotationUnits"},
- 0x00700006 : { vr : "ST", vm : C.VM_SINGLE, keyword : "UnformattedTextValue"},
- 0x00700008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TextObjectSequence"},
- 0x00700009 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GraphicObjectSequence"},
- 0x00700010 : { vr : "FL", vm : C.VM_TWO, keyword : "BoundingBoxTopLeftHandCorner"},
- 0x00700011 : { vr : "FL", vm : C.VM_TWO, keyword : "BoundingBoxBottomRightHandCorner"},
- 0x00700012 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BoundingBoxTextHorizontalJustification"},
- 0x00700014 : { vr : "FL", vm : C.VM_TWO, keyword : "AnchorPoint"},
- 0x00700015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnchorPointVisibility"},
- 0x00700020 : { vr : "US", vm : C.VM_SINGLE, keyword : "GraphicDimensions"},
- 0x00700021 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfGraphicPoints"},
- 0x00700022 : { vr : "FL", vm : C.VM_2N, keyword : "GraphicData"},
- 0x00700023 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GraphicType"},
- 0x00700024 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GraphicFilled"},
- 0x00700040 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ImageRotationRetired"},
- 0x00700041 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageHorizontalFlip"},
- 0x00700042 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageRotation"},
- 0x00700050 : { vr : "US", vm : C.VM_TWO, keyword : "DisplayedAreaTopLeftHandCornerTrial"},
- 0x00700051 : { vr : "US", vm : C.VM_TWO, keyword : "DisplayedAreaBottomRightHandCornerTrial"},
- 0x00700052 : { vr : "SL", vm : C.VM_TWO, keyword : "DisplayedAreaTopLeftHandCorner"},
- 0x00700053 : { vr : "SL", vm : C.VM_TWO, keyword : "DisplayedAreaBottomRightHandCorner"},
- 0x0070005A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DisplayedAreaSelectionSequence"},
- 0x00700060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GraphicLayerSequence"},
- 0x00700062 : { vr : "IS", vm : C.VM_SINGLE, keyword : "GraphicLayerOrder"},
- 0x00700066 : { vr : "US", vm : C.VM_SINGLE, keyword : "GraphicLayerRecommendedDisplayGrayscaleValue"},
- 0x00700067 : { vr : "US", vm : C.VM_THREE, keyword : "GraphicLayerRecommendedDisplayRGBValue"},
- 0x00700068 : { vr : "LO", vm : C.VM_SINGLE, keyword : "GraphicLayerDescription"},
- 0x00700080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContentLabel"},
- 0x00700081 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContentDescription"},
- 0x00700082 : { vr : "DA", vm : C.VM_SINGLE, keyword : "PresentationCreationDate"},
- 0x00700083 : { vr : "TM", vm : C.VM_SINGLE, keyword : "PresentationCreationTime"},
- 0x00700084 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ContentCreatorName"},
- 0x00700086 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContentCreatorIdentificationCodeSequence"},
- 0x00700087 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlternateContentDescriptionSequence"},
- 0x00700100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PresentationSizeMode"},
- 0x00700101 : { vr : "DS", vm : C.VM_TWO, keyword : "PresentationPixelSpacing"},
- 0x00700102 : { vr : "IS", vm : C.VM_TWO, keyword : "PresentationPixelAspectRatio"},
- 0x00700103 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PresentationPixelMagnificationRatio"},
- 0x00700207 : { vr : "LO", vm : C.VM_SINGLE, keyword : "GraphicGroupLabel"},
- 0x00700208 : { vr : "ST", vm : C.VM_SINGLE, keyword : "GraphicGroupDescription"},
- 0x00700209 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CompoundGraphicSequence"},
- 0x00700226 : { vr : "UL", vm : C.VM_SINGLE, keyword : "CompoundGraphicInstanceID"},
- 0x00700227 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FontName"},
- 0x00700228 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FontNameType"},
- 0x00700229 : { vr : "LO", vm : C.VM_SINGLE, keyword : "CSSFontName"},
- 0x00700230 : { vr : "FD", vm : C.VM_SINGLE, keyword : "RotationAngle"},
- 0x00700231 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TextStyleSequence"},
- 0x00700232 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LineStyleSequence"},
- 0x00700233 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FillStyleSequence"},
- 0x00700234 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GraphicGroupSequence"},
- 0x00700241 : { vr : "US", vm : C.VM_THREE, keyword : "TextColorCIELabValue"},
- 0x00700242 : { vr : "CS", vm : C.VM_SINGLE, keyword : "HorizontalAlignment"},
- 0x00700243 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VerticalAlignment"},
- 0x00700244 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShadowStyle"},
- 0x00700245 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ShadowOffsetX"},
- 0x00700246 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ShadowOffsetY"},
- 0x00700247 : { vr : "US", vm : C.VM_THREE, keyword : "ShadowColorCIELabValue"},
- 0x00700248 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Underlined"},
- 0x00700249 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Bold"},
- 0x00700250 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Italic"},
- 0x00700251 : { vr : "US", vm : C.VM_THREE, keyword : "PatternOnColorCIELabValue"},
- 0x00700252 : { vr : "US", vm : C.VM_THREE, keyword : "PatternOffColorCIELabValue"},
- 0x00700253 : { vr : "FL", vm : C.VM_SINGLE, keyword : "LineThickness"},
- 0x00700254 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LineDashingStyle"},
- 0x00700255 : { vr : "UL", vm : C.VM_SINGLE, keyword : "LinePattern"},
- 0x00700256 : { vr : "OB", vm : C.VM_SINGLE, keyword : "FillPattern"},
- 0x00700257 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FillMode"},
- 0x00700258 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ShadowOpacity"},
- 0x00700261 : { vr : "FL", vm : C.VM_SINGLE, keyword : "GapLength"},
- 0x00700262 : { vr : "FL", vm : C.VM_SINGLE, keyword : "DiameterOfVisibility"},
- 0x00700273 : { vr : "FL", vm : C.VM_TWO, keyword : "RotationPoint"},
- 0x00700274 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TickAlignment"},
- 0x00700278 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowTickLabel"},
- 0x00700279 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TickLabelAlignment"},
- 0x00700282 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompoundGraphicUnits"},
- 0x00700284 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PatternOnOpacity"},
- 0x00700285 : { vr : "FL", vm : C.VM_SINGLE, keyword : "PatternOffOpacity"},
- 0x00700287 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MajorTicksSequence"},
- 0x00700288 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TickPosition"},
- 0x00700289 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TickLabel"},
- 0x00700294 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompoundGraphicType"},
- 0x00700295 : { vr : "UL", vm : C.VM_SINGLE, keyword : "GraphicGroupID"},
- 0x00700306 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShapeType"},
- 0x00700308 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RegistrationSequence"},
- 0x00700309 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MatrixRegistrationSequence"},
- 0x0070030A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MatrixSequence"},
- 0x0070030C : { vr : "CS", vm : C.VM_SINGLE, keyword : "FrameOfReferenceTransformationMatrixType"},
- 0x0070030D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RegistrationTypeCodeSequence"},
- 0x0070030F : { vr : "ST", vm : C.VM_SINGLE, keyword : "FiducialDescription"},
- 0x00700310 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FiducialIdentifier"},
- 0x00700311 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FiducialIdentifierCodeSequence"},
- 0x00700312 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContourUncertaintyRadius"},
- 0x00700314 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "UsedFiducialsSequence"},
- 0x00700318 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GraphicCoordinatesDataSequence"},
- 0x0070031A : { vr : "UI", vm : C.VM_SINGLE, keyword : "FiducialUID"},
- 0x0070031C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FiducialSetSequence"},
- 0x0070031E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FiducialSequence"},
- 0x00700401 : { vr : "US", vm : C.VM_THREE, keyword : "GraphicLayerRecommendedDisplayCIELabValue"},
- 0x00700402 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BlendingSequence"},
- 0x00700403 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RelativeOpacity"},
- 0x00700404 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSpatialRegistrationSequence"},
- 0x00700405 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlendingPosition"},
- 0x00720002 : { vr : "SH", vm : C.VM_SINGLE, keyword : "HangingProtocolName"},
- 0x00720004 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HangingProtocolDescription"},
- 0x00720006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "HangingProtocolLevel"},
- 0x00720008 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HangingProtocolCreator"},
- 0x0072000A : { vr : "DT", vm : C.VM_SINGLE, keyword : "HangingProtocolCreationDateTime"},
- 0x0072000C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HangingProtocolDefinitionSequence"},
- 0x0072000E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "HangingProtocolUserIdentificationCodeSequence"},
- 0x00720010 : { vr : "LO", vm : C.VM_SINGLE, keyword : "HangingProtocolUserGroupName"},
- 0x00720012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceHangingProtocolSequence"},
- 0x00720014 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfPriorsReferenced"},
- 0x00720020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageSetsSequence"},
- 0x00720022 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageSetSelectorSequence"},
- 0x00720024 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageSetSelectorUsageFlag"},
- 0x00720026 : { vr : "AT", vm : C.VM_SINGLE, keyword : "SelectorAttribute"},
- 0x00720028 : { vr : "US", vm : C.VM_SINGLE, keyword : "SelectorValueNumber"},
- 0x00720030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TimeBasedImageSetsSequence"},
- 0x00720032 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageSetNumber"},
- 0x00720034 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageSetSelectorCategory"},
- 0x00720038 : { vr : "US", vm : C.VM_TWO, keyword : "RelativeTime"},
- 0x0072003A : { vr : "CS", vm : C.VM_SINGLE, keyword : "RelativeTimeUnits"},
- 0x0072003C : { vr : "SS", vm : C.VM_TWO, keyword : "AbstractPriorValue"},
- 0x0072003E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AbstractPriorCodeSequence"},
- 0x00720040 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImageSetLabel"},
- 0x00720050 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SelectorAttributeVR"},
- 0x00720052 : { vr : "AT", vm : C.VM_1N, keyword : "SelectorSequencePointer"},
- 0x00720054 : { vr : "LO", vm : C.VM_1N, keyword : "SelectorSequencePointerPrivateCreator"},
- 0x00720056 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SelectorAttributePrivateCreator"},
- 0x00720060 : { vr : "AT", vm : C.VM_1N, keyword : "SelectorATValue"},
- 0x00720062 : { vr : "CS", vm : C.VM_1N, keyword : "SelectorCSValue"},
- 0x00720064 : { vr : "IS", vm : C.VM_1N, keyword : "SelectorISValue"},
- 0x00720066 : { vr : "LO", vm : C.VM_1N, keyword : "SelectorLOValue"},
- 0x00720068 : { vr : "LT", vm : C.VM_SINGLE, keyword : "SelectorLTValue"},
- 0x0072006A : { vr : "PN", vm : C.VM_1N, keyword : "SelectorPNValue"},
- 0x0072006C : { vr : "SH", vm : C.VM_1N, keyword : "SelectorSHValue"},
- 0x0072006E : { vr : "ST", vm : C.VM_SINGLE, keyword : "SelectorSTValue"},
- 0x00720070 : { vr : "UT", vm : C.VM_SINGLE, keyword : "SelectorUTValue"},
- 0x00720072 : { vr : "DS", vm : C.VM_1N, keyword : "SelectorDSValue"},
- 0x00720074 : { vr : "FD", vm : C.VM_1N, keyword : "SelectorFDValue"},
- 0x00720076 : { vr : "FL", vm : C.VM_1N, keyword : "SelectorFLValue"},
- 0x00720078 : { vr : "UL", vm : C.VM_1N, keyword : "SelectorULValue"},
- 0x0072007A : { vr : "US", vm : C.VM_1N, keyword : "SelectorUSValue"},
- 0x0072007C : { vr : "SL", vm : C.VM_1N, keyword : "SelectorSLValue"},
- 0x0072007E : { vr : "SS", vm : C.VM_1N, keyword : "SelectorSSValue"},
- 0x00720080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SelectorCodeSequenceValue"},
- 0x00720100 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfScreens"},
- 0x00720102 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "NominalScreenDefinitionSequence"},
- 0x00720104 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfVerticalPixels"},
- 0x00720106 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfHorizontalPixels"},
- 0x00720108 : { vr : "FD", vm : C.VM_FOUR, keyword : "DisplayEnvironmentSpatialPosition"},
- 0x0072010A : { vr : "US", vm : C.VM_SINGLE, keyword : "ScreenMinimumGrayscaleBitDepth"},
- 0x0072010C : { vr : "US", vm : C.VM_SINGLE, keyword : "ScreenMinimumColorBitDepth"},
- 0x0072010E : { vr : "US", vm : C.VM_SINGLE, keyword : "ApplicationMaximumRepaintTime"},
- 0x00720200 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DisplaySetsSequence"},
- 0x00720202 : { vr : "US", vm : C.VM_SINGLE, keyword : "DisplaySetNumber"},
- 0x00720203 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DisplaySetLabel"},
- 0x00720204 : { vr : "US", vm : C.VM_SINGLE, keyword : "DisplaySetPresentationGroup"},
- 0x00720206 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DisplaySetPresentationGroupDescription"},
- 0x00720208 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PartialDataDisplayHandling"},
- 0x00720210 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SynchronizedScrollingSequence"},
- 0x00720212 : { vr : "US", vm : C.VM_2N, keyword : "DisplaySetScrollingGroup"},
- 0x00720214 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "NavigationIndicatorSequence"},
- 0x00720216 : { vr : "US", vm : C.VM_SINGLE, keyword : "NavigationDisplaySet"},
- 0x00720218 : { vr : "US", vm : C.VM_1N, keyword : "ReferenceDisplaySets"},
- 0x00720300 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageBoxesSequence"},
- 0x00720302 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxNumber"},
- 0x00720304 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageBoxLayoutType"},
- 0x00720306 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxTileHorizontalDimension"},
- 0x00720308 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxTileVerticalDimension"},
- 0x00720310 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageBoxScrollDirection"},
- 0x00720312 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageBoxSmallScrollType"},
- 0x00720314 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxSmallScrollAmount"},
- 0x00720316 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageBoxLargeScrollType"},
- 0x00720318 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxLargeScrollAmount"},
- 0x00720320 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxOverlapPriority"},
- 0x00720330 : { vr : "FD", vm : C.VM_SINGLE, keyword : "CineRelativeToRealTime"},
- 0x00720400 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FilterOperationsSequence"},
- 0x00720402 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilterByCategory"},
- 0x00720404 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilterByAttributePresence"},
- 0x00720406 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilterByOperator"},
- 0x00720420 : { vr : "US", vm : C.VM_THREE, keyword : "StructuredDisplayBackgroundCIELabValue"},
- 0x00720421 : { vr : "US", vm : C.VM_THREE, keyword : "EmptyImageBoxCIELabValue"},
- 0x00720422 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StructuredDisplayImageBoxSequence"},
- 0x00720424 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StructuredDisplayTextBoxSequence"},
- 0x00720427 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedFirstFrameSequence"},
- 0x00720430 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageBoxSynchronizationSequence"},
- 0x00720432 : { vr : "US", vm : C.VM_2N, keyword : "SynchronizedImageBoxList"},
- 0x00720434 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TypeOfSynchronization"},
- 0x00720500 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlendingOperationType"},
- 0x00720510 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReformattingOperationType"},
- 0x00720512 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ReformattingThickness"},
- 0x00720514 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ReformattingInterval"},
- 0x00720516 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReformattingOperationInitialViewDirection"},
- 0x00720520 : { vr : "CS", vm : C.VM_1N, keyword : "ThreeDRenderingType"},
- 0x00720600 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SortingOperationsSequence"},
- 0x00720602 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SortByCategory"},
- 0x00720604 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SortingDirection"},
- 0x00720700 : { vr : "CS", vm : C.VM_TWO, keyword : "DisplaySetPatientOrientation"},
- 0x00720702 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VOIType"},
- 0x00720704 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PseudoColorType"},
- 0x00720705 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PseudoColorPaletteInstanceReferenceSequence"},
- 0x00720706 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowGrayscaleInverted"},
- 0x00720710 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowImageTrueSizeFlag"},
- 0x00720712 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowGraphicAnnotationFlag"},
- 0x00720714 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowPatientDemographicsFlag"},
- 0x00720716 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShowAcquisitionTechniquesFlag"},
- 0x00720717 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DisplaySetHorizontalJustification"},
- 0x00720718 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DisplaySetVerticalJustification"},
- 0x00740120 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContinuationStartMeterset"},
- 0x00740121 : { vr : "FD", vm : C.VM_SINGLE, keyword : "ContinuationEndMeterset"},
- 0x00741000 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ProcedureStepState"},
- 0x00741002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureStepProgressInformationSequence"},
- 0x00741004 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ProcedureStepProgress"},
- 0x00741006 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ProcedureStepProgressDescription"},
- 0x00741008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureStepCommunicationsURISequence"},
- 0x0074100a : { vr : "ST", vm : C.VM_SINGLE, keyword : "ContactURI"},
- 0x0074100c : { vr : "LO", vm : C.VM_SINGLE, keyword : "ContactDisplayName"},
- 0x0074100e : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureStepDiscontinuationReasonCodeSequence"},
- 0x00741020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamTaskSequence"},
- 0x00741022 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BeamTaskType"},
- 0x00741024 : { vr : "IS", vm : C.VM_SINGLE, keyword : "BeamOrderIndexTrial"},
- 0x00741026 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopVerticalAdjustedPosition"},
- 0x00741027 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopLongitudinalAdjustedPosition"},
- 0x00741028 : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopLateralAdjustedPosition"},
- 0x0074102A : { vr : "FD", vm : C.VM_SINGLE, keyword : "PatientSupportAdjustedAngle"},
- 0x0074102B : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopEccentricAdjustedAngle"},
- 0x0074102C : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopPitchAdjustedAngle"},
- 0x0074102D : { vr : "FD", vm : C.VM_SINGLE, keyword : "TableTopRollAdjustedAngle"},
- 0x00741030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DeliveryVerificationImageSequence"},
- 0x00741032 : { vr : "CS", vm : C.VM_SINGLE, keyword : "VerificationImageTiming"},
- 0x00741034 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoubleExposureFlag"},
- 0x00741036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoubleExposureOrdering"},
- 0x00741038 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoubleExposureMetersetTrial"},
- 0x0074103A : { vr : "DS", vm : C.VM_FOUR, keyword : "DoubleExposureFieldDeltaTrial"},
- 0x00741040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelatedReferenceRTImageSequence"},
- 0x00741042 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GeneralMachineVerificationSequence"},
- 0x00741044 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ConventionalMachineVerificationSequence"},
- 0x00741046 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonMachineVerificationSequence"},
- 0x00741048 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FailedAttributesSequence"},
- 0x0074104A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OverriddenAttributesSequence"},
- 0x0074104C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ConventionalControlPointVerificationSequence"},
- 0x0074104E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonControlPointVerificationSequence"},
- 0x00741050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AttributeOccurrenceSequence"},
- 0x00741052 : { vr : "AT", vm : C.VM_SINGLE, keyword : "AttributeOccurrencePointer"},
- 0x00741054 : { vr : "UL", vm : C.VM_SINGLE, keyword : "AttributeItemSelector"},
- 0x00741056 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AttributeOccurrencePrivateCreator"},
- 0x00741057 : { vr : "IS", vm : C.VM_1N, keyword : "SelectorSequencePointerItems"},
- 0x00741200 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScheduledProcedureStepPriority"},
- 0x00741202 : { vr : "LO", vm : C.VM_SINGLE, keyword : "WorklistLabel"},
- 0x00741204 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ProcedureStepLabel"},
- 0x00741210 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ScheduledProcessingParametersSequence"},
- 0x00741212 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerformedProcessingParametersSequence"},
- 0x00741216 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "UnifiedProcedureStepPerformedProcedureSequence"},
- 0x00741220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelatedProcedureStepSequence"},
- 0x00741222 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ProcedureStepRelationshipType"},
- 0x00741224 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReplacedProcedureStepSequence"},
- 0x00741230 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DeletionLock"},
- 0x00741234 : { vr : "AE", vm : C.VM_SINGLE, keyword : "ReceivingAE"},
- 0x00741236 : { vr : "AE", vm : C.VM_SINGLE, keyword : "RequestingAE"},
- 0x00741238 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ReasonForCancellation"},
- 0x00741242 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SCPStatus"},
- 0x00741244 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SubscriptionListStatus"},
- 0x00741246 : { vr : "CS", vm : C.VM_SINGLE, keyword : "UnifiedProcedureStepListStatus"},
- 0x00741324 : { vr : "UL", vm : C.VM_SINGLE, keyword : "BeamOrderIndex"},
- 0x00741338 : { vr : "FD", vm : C.VM_SINGLE, keyword : "DoubleExposureMeterset"},
- 0x0074133A : { vr : "FD", vm : C.VM_FOUR, keyword : "DoubleExposureFieldDelta"},
- 0x00760001 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantAssemblyTemplateName"},
- 0x00760003 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantAssemblyTemplateIssuer"},
- 0x00760006 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantAssemblyTemplateVersion"},
- 0x00760008 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReplacedImplantAssemblyTemplateSequence"},
- 0x0076000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImplantAssemblyTemplateType"},
- 0x0076000C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OriginalImplantAssemblyTemplateSequence"},
- 0x0076000E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DerivationImplantAssemblyTemplateSequence"},
- 0x00760010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantAssemblyTemplateTargetAnatomySequence"},
- 0x00760020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProcedureTypeCodeSequence"},
- 0x00760030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SurgicalTechnique"},
- 0x00760032 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ComponentTypesSequence"},
- 0x00760034 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ComponentTypeCodeSequence"},
- 0x00760036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExclusiveComponentType"},
- 0x00760038 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MandatoryComponentType"},
- 0x00760040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ComponentSequence"},
- 0x00760055 : { vr : "US", vm : C.VM_SINGLE, keyword : "ComponentID"},
- 0x00760060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ComponentAssemblySequence"},
- 0x00760070 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component1ReferencedID"},
- 0x00760080 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component1ReferencedMatingFeatureSetID"},
- 0x00760090 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component1ReferencedMatingFeatureID"},
- 0x007600A0 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component2ReferencedID"},
- 0x007600B0 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component2ReferencedMatingFeatureSetID"},
- 0x007600C0 : { vr : "US", vm : C.VM_SINGLE, keyword : "Component2ReferencedMatingFeatureID"},
- 0x00780001 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupName"},
- 0x00780010 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupDescription"},
- 0x00780020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupIssuer"},
- 0x00780024 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupVersion"},
- 0x00780026 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReplacedImplantTemplateGroupSequence"},
- 0x00780028 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupTargetAnatomySequence"},
- 0x0078002A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupMembersSequence"},
- 0x0078002E : { vr : "US", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupMemberID"},
- 0x00780050 : { vr : "FD", vm : C.VM_THREE, keyword : "ThreeDImplantTemplateGroupMemberMatchingPoint"},
- 0x00780060 : { vr : "FD", vm : C.VM_NINE, keyword : "ThreeDImplantTemplateGroupMemberMatchingAxes"},
- 0x00780070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupMemberMatching2DCoordinatesSequence"},
- 0x00780090 : { vr : "FD", vm : C.VM_TWO, keyword : "TwoDImplantTemplateGroupMemberMatchingPoint"},
- 0x007800A0 : { vr : "FD", vm : C.VM_FOUR, keyword : "TwoDImplantTemplateGroupMemberMatchingAxes"},
- 0x007800B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupVariationDimensionSequence"},
- 0x007800B2 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupVariationDimensionName"},
- 0x007800B4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupVariationDimensionRankSequence"},
- 0x007800B6 : { vr : "US", vm : C.VM_SINGLE, keyword : "ReferencedImplantTemplateGroupMemberID"},
- 0x007800B8 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImplantTemplateGroupVariationDimensionRank"},
- 0x00880130 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StorageMediaFileSetID"},
- 0x00880140 : { vr : "UI", vm : C.VM_SINGLE, keyword : "StorageMediaFileSetUID"},
- 0x00880200 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IconImageSequence"},
- 0x00880904 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TopicTitle"},
- 0x00880906 : { vr : "ST", vm : C.VM_SINGLE, keyword : "TopicSubject"},
- 0x00880910 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TopicAuthor"},
- 0x00880912 : { vr : "LO", vm : C.VM_1_32, keyword : "TopicKeywords"},
- 0x01000410 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SOPInstanceStatus"},
- 0x01000420 : { vr : "DT", vm : C.VM_SINGLE, keyword : "SOPAuthorizationDateTime"},
- 0x01000424 : { vr : "LT", vm : C.VM_SINGLE, keyword : "SOPAuthorizationComment"},
- 0x01000426 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AuthorizationEquipmentCertificationNumber"},
- 0x04000005 : { vr : "US", vm : C.VM_SINGLE, keyword : "MACIDNumber"},
- 0x04000010 : { vr : "UI", vm : C.VM_SINGLE, keyword : "MACCalculationTransferSyntaxUID"},
- 0x04000015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MACAlgorithm"},
- 0x04000020 : { vr : "AT", vm : C.VM_1N, keyword : "DataElementsSigned"},
- 0x04000100 : { vr : "UI", vm : C.VM_SINGLE, keyword : "DigitalSignatureUID"},
- 0x04000105 : { vr : "DT", vm : C.VM_SINGLE, keyword : "DigitalSignatureDateTime"},
- 0x04000110 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CertificateType"},
- 0x04000115 : { vr : "OB", vm : C.VM_SINGLE, keyword : "CertificateOfSigner"},
- 0x04000120 : { vr : "OB", vm : C.VM_SINGLE, keyword : "Signature"},
- 0x04000305 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CertifiedTimestampType"},
- 0x04000310 : { vr : "OB", vm : C.VM_SINGLE, keyword : "CertifiedTimestamp"},
- 0x04000401 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DigitalSignaturePurposeCodeSequence"},
- 0x04000402 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedDigitalSignatureSequence"},
- 0x04000403 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSOPInstanceMACSequence"},
- 0x04000404 : { vr : "OB", vm : C.VM_SINGLE, keyword : "MAC"},
- 0x04000500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "EncryptedAttributesSequence"},
- 0x04000510 : { vr : "UI", vm : C.VM_SINGLE, keyword : "EncryptedContentTransferSyntaxUID"},
- 0x04000520 : { vr : "OB", vm : C.VM_SINGLE, keyword : "EncryptedContent"},
- 0x04000550 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ModifiedAttributesSequence"},
- 0x04000561 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OriginalAttributesSequence"},
- 0x04000562 : { vr : "DT", vm : C.VM_SINGLE, keyword : "AttributeModificationDateTime"},
- 0x04000563 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ModifyingSystem"},
- 0x04000564 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceOfPreviousValues"},
- 0x04000565 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReasonForTheAttributeModification"},
- 0x20000010 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfCopies"},
- 0x2000001E : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrinterConfigurationSequence"},
- 0x20000020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PrintPriority"},
- 0x20000030 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MediumType"},
- 0x20000040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilmDestination"},
- 0x20000050 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FilmSessionLabel"},
- 0x20000060 : { vr : "IS", vm : C.VM_SINGLE, keyword : "MemoryAllocation"},
- 0x20000061 : { vr : "IS", vm : C.VM_SINGLE, keyword : "MaximumMemoryAllocation"},
- 0x20000062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ColorImagePrintingFlag"},
- 0x20000063 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CollationFlag"},
- 0x20000065 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnnotationFlag"},
- 0x20000067 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageOverlayFlag"},
- 0x20000069 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PresentationLUTFlag"},
- 0x2000006A : { vr : "CS", vm : C.VM_SINGLE, keyword : "ImageBoxPresentationLUTFlag"},
- 0x200000A0 : { vr : "US", vm : C.VM_SINGLE, keyword : "MemoryBitDepth"},
- 0x200000A1 : { vr : "US", vm : C.VM_SINGLE, keyword : "PrintingBitDepth"},
- 0x200000A2 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MediaInstalledSequence"},
- 0x200000A4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OtherMediaAvailableSequence"},
- 0x200000A8 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SupportedImageDisplayFormatsSequence"},
- 0x20000500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedFilmBoxSequence"},
- 0x20000510 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedStoredPrintSequence"},
- 0x20100010 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ImageDisplayFormat"},
- 0x20100030 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AnnotationDisplayFormatID"},
- 0x20100040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilmOrientation"},
- 0x20100050 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FilmSizeID"},
- 0x20100052 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PrinterResolutionID"},
- 0x20100054 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DefaultPrinterResolutionID"},
- 0x20100060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MagnificationType"},
- 0x20100080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SmoothingType"},
- 0x201000A6 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DefaultMagnificationType"},
- 0x201000A7 : { vr : "CS", vm : C.VM_1N, keyword : "OtherMagnificationTypesAvailable"},
- 0x201000A8 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DefaultSmoothingType"},
- 0x201000A9 : { vr : "CS", vm : C.VM_1N, keyword : "OtherSmoothingTypesAvailable"},
- 0x20100100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BorderDensity"},
- 0x20100110 : { vr : "CS", vm : C.VM_SINGLE, keyword : "EmptyImageDensity"},
- 0x20100120 : { vr : "US", vm : C.VM_SINGLE, keyword : "MinDensity"},
- 0x20100130 : { vr : "US", vm : C.VM_SINGLE, keyword : "MaxDensity"},
- 0x20100140 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Trim"},
- 0x20100150 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ConfigurationInformation"},
- 0x20100152 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ConfigurationInformationDescription"},
- 0x20100154 : { vr : "IS", vm : C.VM_SINGLE, keyword : "MaximumCollatedFilms"},
- 0x2010015E : { vr : "US", vm : C.VM_SINGLE, keyword : "Illumination"},
- 0x20100160 : { vr : "US", vm : C.VM_SINGLE, keyword : "ReflectedAmbientLight"},
- 0x20100376 : { vr : "DS", vm : C.VM_TWO, keyword : "PrinterPixelSpacing"},
- 0x20100500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedFilmSessionSequence"},
- 0x20100510 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageBoxSequence"},
- 0x20100520 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedBasicAnnotationBoxSequence"},
- 0x20200010 : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageBoxPosition"},
- 0x20200020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "Polarity"},
- 0x20200030 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RequestedImageSize"},
- 0x20200040 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RequestedDecimateCropBehavior"},
- 0x20200050 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RequestedResolutionID"},
- 0x202000A0 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RequestedImageSizeFlag"},
- 0x202000A2 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DecimateCropResult"},
- 0x20200110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BasicGrayscaleImageSequence"},
- 0x20200111 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BasicColorImageSequence"},
- 0x20200130 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageOverlayBoxSequence"},
- 0x20200140 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedVOILUTBoxSequence"},
- 0x20300010 : { vr : "US", vm : C.VM_SINGLE, keyword : "AnnotationPosition"},
- 0x20300020 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TextString"},
- 0x20400010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedOverlayPlaneSequence"},
- 0x20400011 : { vr : "US", vm : C.VM_1_99, keyword : "ReferencedOverlayPlaneGroups"},
- 0x20400020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OverlayPixelDataSequence"},
- 0x20400060 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayMagnificationType"},
- 0x20400070 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlaySmoothingType"},
- 0x20400072 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayOrImageMagnification"},
- 0x20400074 : { vr : "US", vm : C.VM_SINGLE, keyword : "MagnifyToNumberOfColumns"},
- 0x20400080 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayForegroundDensity"},
- 0x20400082 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayBackgroundDensity"},
- 0x20400090 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayMode"},
- 0x20400100 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ThresholdDensity"},
- 0x20400500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedImageBoxSequenceRetired"},
- 0x20500010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PresentationLUTSequence"},
- 0x20500020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PresentationLUTShape"},
- 0x20500500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPresentationLUTSequence"},
- 0x21000010 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PrintJobID"},
- 0x21000020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExecutionStatus"},
- 0x21000030 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ExecutionStatusInfo"},
- 0x21000040 : { vr : "DA", vm : C.VM_SINGLE, keyword : "CreationDate"},
- 0x21000050 : { vr : "TM", vm : C.VM_SINGLE, keyword : "CreationTime"},
- 0x21000070 : { vr : "AE", vm : C.VM_SINGLE, keyword : "Originator"},
- 0x21000140 : { vr : "AE", vm : C.VM_SINGLE, keyword : "DestinationAE"},
- 0x21000160 : { vr : "SH", vm : C.VM_SINGLE, keyword : "OwnerID"},
- 0x21000170 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFilms"},
- 0x21000500 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPrintJobSequencePullStoredPrint"},
- 0x21100010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PrinterStatus"},
- 0x21100020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PrinterStatusInfo"},
- 0x21100030 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PrinterName"},
- 0x21100099 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PrintQueueID"},
- 0x21200010 : { vr : "CS", vm : C.VM_SINGLE, keyword : "QueueStatus"},
- 0x21200050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrintJobDescriptionSequence"},
- 0x21200070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedPrintJobSequence"},
- 0x21300010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrintManagementCapabilitiesSequence"},
- 0x21300015 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrinterCharacteristicsSequence"},
- 0x21300030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FilmBoxContentSequence"},
- 0x21300040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageBoxContentSequence"},
- 0x21300050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AnnotationContentSequence"},
- 0x21300060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ImageOverlayBoxContentSequence"},
- 0x21300080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PresentationLUTContentSequence"},
- 0x213000A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ProposedStudySequence"},
- 0x213000C0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OriginalImageSequence"},
- 0x22000001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LabelUsingInformationExtractedFromInstances"},
- 0x22000002 : { vr : "UT", vm : C.VM_SINGLE, keyword : "LabelText"},
- 0x22000003 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LabelStyleSelection"},
- 0x22000004 : { vr : "LT", vm : C.VM_SINGLE, keyword : "MediaDisposition"},
- 0x22000005 : { vr : "LT", vm : C.VM_SINGLE, keyword : "BarcodeValue"},
- 0x22000006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BarcodeSymbology"},
- 0x22000007 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AllowMediaSplitting"},
- 0x22000008 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IncludeNonDICOMObjects"},
- 0x22000009 : { vr : "CS", vm : C.VM_SINGLE, keyword : "IncludeDisplayApplication"},
- 0x2200000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "PreserveCompositeInstancesAfterMediaCreation"},
- 0x2200000B : { vr : "US", vm : C.VM_SINGLE, keyword : "TotalNumberOfPiecesOfMediaCreated"},
- 0x2200000C : { vr : "LO", vm : C.VM_SINGLE, keyword : "RequestedMediaApplicationProfile"},
- 0x2200000D : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedStorageMediaSequence"},
- 0x2200000E : { vr : "AT", vm : C.VM_1N, keyword : "FailureAttributes"},
- 0x2200000F : { vr : "CS", vm : C.VM_SINGLE, keyword : "AllowLossyCompression"},
- 0x22000020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RequestPriority"},
- 0x30020002 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RTImageLabel"},
- 0x30020003 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RTImageName"},
- 0x30020004 : { vr : "ST", vm : C.VM_SINGLE, keyword : "RTImageDescription"},
- 0x3002000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReportedValuesOrigin"},
- 0x3002000C : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTImagePlane"},
- 0x3002000D : { vr : "DS", vm : C.VM_THREE, keyword : "XRayImageReceptorTranslation"},
- 0x3002000E : { vr : "DS", vm : C.VM_SINGLE, keyword : "XRayImageReceptorAngle"},
- 0x30020010 : { vr : "DS", vm : C.VM_SIX, keyword : "RTImageOrientation"},
- 0x30020011 : { vr : "DS", vm : C.VM_TWO, keyword : "ImagePlanePixelSpacing"},
- 0x30020012 : { vr : "DS", vm : C.VM_TWO, keyword : "RTImagePosition"},
- 0x30020020 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RadiationMachineName"},
- 0x30020022 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadiationMachineSAD"},
- 0x30020024 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RadiationMachineSSD"},
- 0x30020026 : { vr : "DS", vm : C.VM_SINGLE, keyword : "RTImageSID"},
- 0x30020028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToReferenceObjectDistance"},
- 0x30020029 : { vr : "IS", vm : C.VM_SINGLE, keyword : "FractionNumber"},
- 0x30020030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ExposureSequence"},
- 0x30020032 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MetersetExposure"},
- 0x30020034 : { vr : "DS", vm : C.VM_FOUR, keyword : "DiaphragmPosition"},
- 0x30020040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FluenceMapSequence"},
- 0x30020041 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FluenceDataSource"},
- 0x30020042 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FluenceDataScale"},
- 0x30020050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PrimaryFluenceModeSequence"},
- 0x30020051 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FluenceMode"},
- 0x30020052 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FluenceModeID"},
- 0x30040001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DVHType"},
- 0x30040002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoseUnits"},
- 0x30040004 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoseType"},
- 0x30040006 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DoseComment"},
- 0x30040008 : { vr : "DS", vm : C.VM_THREE, keyword : "NormalizationPoint"},
- 0x3004000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoseSummationType"},
- 0x3004000C : { vr : "DS", vm : C.VM_2N, keyword : "GridFrameOffsetVector"},
- 0x3004000E : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoseGridScaling"},
- 0x30040010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTDoseROISequence"},
- 0x30040012 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoseValue"},
- 0x30040014 : { vr : "CS", vm : C.VM_1_3, keyword : "TissueHeterogeneityCorrection"},
- 0x30040040 : { vr : "DS", vm : C.VM_THREE, keyword : "DVHNormalizationPoint"},
- 0x30040042 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DVHNormalizationDoseValue"},
- 0x30040050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DVHSequence"},
- 0x30040052 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DVHDoseScaling"},
- 0x30040054 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DVHVolumeUnits"},
- 0x30040056 : { vr : "IS", vm : C.VM_SINGLE, keyword : "DVHNumberOfBins"},
- 0x30040058 : { vr : "DS", vm : C.VM_2_2N, keyword : "DVHData"},
- 0x30040060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DVHReferencedROISequence"},
- 0x30040062 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DVHROIContributionType"},
- 0x30040070 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DVHMinimumDose"},
- 0x30040072 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DVHMaximumDose"},
- 0x30040074 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DVHMeanDose"},
- 0x30060002 : { vr : "SH", vm : C.VM_SINGLE, keyword : "StructureSetLabel"},
- 0x30060004 : { vr : "LO", vm : C.VM_SINGLE, keyword : "StructureSetName"},
- 0x30060006 : { vr : "ST", vm : C.VM_SINGLE, keyword : "StructureSetDescription"},
- 0x30060008 : { vr : "DA", vm : C.VM_SINGLE, keyword : "StructureSetDate"},
- 0x30060009 : { vr : "TM", vm : C.VM_SINGLE, keyword : "StructureSetTime"},
- 0x30060010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedFrameOfReferenceSequence"},
- 0x30060012 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTReferencedStudySequence"},
- 0x30060014 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTReferencedSeriesSequence"},
- 0x30060016 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContourImageSequence"},
- 0x30060020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "StructureSetROISequence"},
- 0x30060022 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ROINumber"},
- 0x30060024 : { vr : "UI", vm : C.VM_SINGLE, keyword : "ReferencedFrameOfReferenceUID"},
- 0x30060026 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ROIName"},
- 0x30060028 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ROIDescription"},
- 0x3006002A : { vr : "IS", vm : C.VM_THREE, keyword : "ROIDisplayColor"},
- 0x3006002C : { vr : "DS", vm : C.VM_SINGLE, keyword : "ROIVolume"},
- 0x30060030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTRelatedROISequence"},
- 0x30060033 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTROIRelationship"},
- 0x30060036 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ROIGenerationAlgorithm"},
- 0x30060038 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ROIGenerationDescription"},
- 0x30060039 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ROIContourSequence"},
- 0x30060040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ContourSequence"},
- 0x30060042 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ContourGeometricType"},
- 0x30060044 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ContourSlabThickness"},
- 0x30060045 : { vr : "DS", vm : C.VM_THREE, keyword : "ContourOffsetVector"},
- 0x30060046 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfContourPoints"},
- 0x30060048 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ContourNumber"},
- 0x30060049 : { vr : "IS", vm : C.VM_1N, keyword : "AttachedContours"},
- 0x30060050 : { vr : "DS", vm : C.VM_3_3N, keyword : "ContourData"},
- 0x30060080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTROIObservationsSequence"},
- 0x30060082 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ObservationNumber"},
- 0x30060084 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedROINumber"},
- 0x30060085 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ROIObservationLabel"},
- 0x30060086 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RTROIIdentificationCodeSequence"},
- 0x30060088 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ROIObservationDescription"},
- 0x300600A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RelatedRTROIObservationsSequence"},
- 0x300600A4 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTROIInterpretedType"},
- 0x300600A6 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ROIInterpreter"},
- 0x300600B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ROIPhysicalPropertiesSequence"},
- 0x300600B2 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ROIPhysicalProperty"},
- 0x300600B4 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ROIPhysicalPropertyValue"},
- 0x300600B6 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ROIElementalCompositionSequence"},
- 0x300600B7 : { vr : "US", vm : C.VM_SINGLE, keyword : "ROIElementalCompositionAtomicNumber"},
- 0x300600B8 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ROIElementalCompositionAtomicMassFraction"},
- 0x300600C0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FrameOfReferenceRelationshipSequence"},
- 0x300600C2 : { vr : "UI", vm : C.VM_SINGLE, keyword : "RelatedFrameOfReferenceUID"},
- 0x300600C4 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FrameOfReferenceTransformationType"},
- 0x300600C6 : { vr : "DS", vm : C.VM_16, keyword : "FrameOfReferenceTransformationMatrix"},
- 0x300600C8 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FrameOfReferenceTransformationComment"},
- 0x30080010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MeasuredDoseReferenceSequence"},
- 0x30080012 : { vr : "ST", vm : C.VM_SINGLE, keyword : "MeasuredDoseDescription"},
- 0x30080014 : { vr : "CS", vm : C.VM_SINGLE, keyword : "MeasuredDoseType"},
- 0x30080016 : { vr : "DS", vm : C.VM_SINGLE, keyword : "MeasuredDoseValue"},
- 0x30080020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentSessionBeamSequence"},
- 0x30080021 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentSessionIonBeamSequence"},
- 0x30080022 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CurrentFractionNumber"},
- 0x30080024 : { vr : "DA", vm : C.VM_SINGLE, keyword : "TreatmentControlPointDate"},
- 0x30080025 : { vr : "TM", vm : C.VM_SINGLE, keyword : "TreatmentControlPointTime"},
- 0x3008002A : { vr : "CS", vm : C.VM_SINGLE, keyword : "TreatmentTerminationStatus"},
- 0x3008002B : { vr : "SH", vm : C.VM_SINGLE, keyword : "TreatmentTerminationCode"},
- 0x3008002C : { vr : "CS", vm : C.VM_SINGLE, keyword : "TreatmentVerificationStatus"},
- 0x30080030 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedTreatmentRecordSequence"},
- 0x30080032 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedPrimaryMeterset"},
- 0x30080033 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedSecondaryMeterset"},
- 0x30080036 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredPrimaryMeterset"},
- 0x30080037 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredSecondaryMeterset"},
- 0x3008003A : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedTreatmentTime"},
- 0x3008003B : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredTreatmentTime"},
- 0x30080040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ControlPointDeliverySequence"},
- 0x30080041 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonControlPointDeliverySequence"},
- 0x30080042 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedMeterset"},
- 0x30080044 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredMeterset"},
- 0x30080045 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MetersetRateSet"},
- 0x30080046 : { vr : "FL", vm : C.VM_SINGLE, keyword : "MetersetRateDelivered"},
- 0x30080047 : { vr : "FL", vm : C.VM_1N, keyword : "ScanSpotMetersetsDelivered"},
- 0x30080048 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoseRateDelivered"},
- 0x30080050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentSummaryCalculatedDoseReferenceSequence"},
- 0x30080052 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CumulativeDoseToDoseReference"},
- 0x30080054 : { vr : "DA", vm : C.VM_SINGLE, keyword : "FirstTreatmentDate"},
- 0x30080056 : { vr : "DA", vm : C.VM_SINGLE, keyword : "MostRecentTreatmentDate"},
- 0x3008005A : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFractionsDelivered"},
- 0x30080060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OverrideSequence"},
- 0x30080061 : { vr : "AT", vm : C.VM_SINGLE, keyword : "ParameterSequencePointer"},
- 0x30080062 : { vr : "AT", vm : C.VM_SINGLE, keyword : "OverrideParameterPointer"},
- 0x30080063 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ParameterItemIndex"},
- 0x30080064 : { vr : "IS", vm : C.VM_SINGLE, keyword : "MeasuredDoseReferenceNumber"},
- 0x30080065 : { vr : "AT", vm : C.VM_SINGLE, keyword : "ParameterPointer"},
- 0x30080066 : { vr : "ST", vm : C.VM_SINGLE, keyword : "OverrideReason"},
- 0x30080068 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CorrectedParameterSequence"},
- 0x3008006A : { vr : "FL", vm : C.VM_SINGLE, keyword : "CorrectionValue"},
- 0x30080070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CalculatedDoseReferenceSequence"},
- 0x30080072 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CalculatedDoseReferenceNumber"},
- 0x30080074 : { vr : "ST", vm : C.VM_SINGLE, keyword : "CalculatedDoseReferenceDescription"},
- 0x30080076 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CalculatedDoseReferenceDoseValue"},
- 0x30080078 : { vr : "DS", vm : C.VM_SINGLE, keyword : "StartMeterset"},
- 0x3008007A : { vr : "DS", vm : C.VM_SINGLE, keyword : "EndMeterset"},
- 0x30080080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedMeasuredDoseReferenceSequence"},
- 0x30080082 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedMeasuredDoseReferenceNumber"},
- 0x30080090 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedCalculatedDoseReferenceSequence"},
- 0x30080092 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedCalculatedDoseReferenceNumber"},
- 0x300800A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceLeafPairsSequence"},
- 0x300800B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedWedgeSequence"},
- 0x300800C0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedCompensatorSequence"},
- 0x300800D0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedBlockSequence"},
- 0x300800E0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentSummaryMeasuredDoseReferenceSequence"},
- 0x300800F0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedSnoutSequence"},
- 0x300800F2 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedRangeShifterSequence"},
- 0x300800F4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedLateralSpreadingDeviceSequence"},
- 0x300800F6 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedRangeModulatorSequence"},
- 0x30080100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedSourceSequence"},
- 0x30080105 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceSerialNumber"},
- 0x30080110 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentSessionApplicationSetupSequence"},
- 0x30080116 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApplicationSetupCheck"},
- 0x30080120 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedBrachyAccessoryDeviceSequence"},
- 0x30080122 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedBrachyAccessoryDeviceNumber"},
- 0x30080130 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedChannelSequence"},
- 0x30080132 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedChannelTotalTime"},
- 0x30080134 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredChannelTotalTime"},
- 0x30080136 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SpecifiedNumberOfPulses"},
- 0x30080138 : { vr : "IS", vm : C.VM_SINGLE, keyword : "DeliveredNumberOfPulses"},
- 0x3008013A : { vr : "DS", vm : C.VM_SINGLE, keyword : "SpecifiedPulseRepetitionInterval"},
- 0x3008013C : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveredPulseRepetitionInterval"},
- 0x30080140 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedSourceApplicatorSequence"},
- 0x30080142 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedSourceApplicatorNumber"},
- 0x30080150 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RecordedChannelShieldSequence"},
- 0x30080152 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedChannelShieldNumber"},
- 0x30080160 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BrachyControlPointDeliveredSequence"},
- 0x30080162 : { vr : "DA", vm : C.VM_SINGLE, keyword : "SafePositionExitDate"},
- 0x30080164 : { vr : "TM", vm : C.VM_SINGLE, keyword : "SafePositionExitTime"},
- 0x30080166 : { vr : "DA", vm : C.VM_SINGLE, keyword : "SafePositionReturnDate"},
- 0x30080168 : { vr : "TM", vm : C.VM_SINGLE, keyword : "SafePositionReturnTime"},
- 0x30080200 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CurrentTreatmentStatus"},
- 0x30080202 : { vr : "ST", vm : C.VM_SINGLE, keyword : "TreatmentStatusComment"},
- 0x30080220 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FractionGroupSummarySequence"},
- 0x30080223 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedFractionNumber"},
- 0x30080224 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FractionGroupType"},
- 0x30080230 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BeamStopperPosition"},
- 0x30080240 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FractionStatusSummarySequence"},
- 0x30080250 : { vr : "DA", vm : C.VM_SINGLE, keyword : "TreatmentDate"},
- 0x30080251 : { vr : "TM", vm : C.VM_SINGLE, keyword : "TreatmentTime"},
- 0x300A0002 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RTPlanLabel"},
- 0x300A0003 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RTPlanName"},
- 0x300A0004 : { vr : "ST", vm : C.VM_SINGLE, keyword : "RTPlanDescription"},
- 0x300A0006 : { vr : "DA", vm : C.VM_SINGLE, keyword : "RTPlanDate"},
- 0x300A0007 : { vr : "TM", vm : C.VM_SINGLE, keyword : "RTPlanTime"},
- 0x300A0009 : { vr : "LO", vm : C.VM_1N, keyword : "TreatmentProtocols"},
- 0x300A000A : { vr : "CS", vm : C.VM_SINGLE, keyword : "PlanIntent"},
- 0x300A000B : { vr : "LO", vm : C.VM_1N, keyword : "TreatmentSites"},
- 0x300A000C : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTPlanGeometry"},
- 0x300A000E : { vr : "ST", vm : C.VM_SINGLE, keyword : "PrescriptionDescription"},
- 0x300A0010 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DoseReferenceSequence"},
- 0x300A0012 : { vr : "IS", vm : C.VM_SINGLE, keyword : "DoseReferenceNumber"},
- 0x300A0013 : { vr : "UI", vm : C.VM_SINGLE, keyword : "DoseReferenceUID"},
- 0x300A0014 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoseReferenceStructureType"},
- 0x300A0015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "NominalBeamEnergyUnit"},
- 0x300A0016 : { vr : "LO", vm : C.VM_SINGLE, keyword : "DoseReferenceDescription"},
- 0x300A0018 : { vr : "DS", vm : C.VM_THREE, keyword : "DoseReferencePointCoordinates"},
- 0x300A001A : { vr : "DS", vm : C.VM_SINGLE, keyword : "NominalPriorDose"},
- 0x300A0020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "DoseReferenceType"},
- 0x300A0021 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ConstraintWeight"},
- 0x300A0022 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveryWarningDose"},
- 0x300A0023 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DeliveryMaximumDose"},
- 0x300A0025 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TargetMinimumDose"},
- 0x300A0026 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TargetPrescriptionDose"},
- 0x300A0027 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TargetMaximumDose"},
- 0x300A0028 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TargetUnderdoseVolumeFraction"},
- 0x300A002A : { vr : "DS", vm : C.VM_SINGLE, keyword : "OrganAtRiskFullVolumeDose"},
- 0x300A002B : { vr : "DS", vm : C.VM_SINGLE, keyword : "OrganAtRiskLimitDose"},
- 0x300A002C : { vr : "DS", vm : C.VM_SINGLE, keyword : "OrganAtRiskMaximumDose"},
- 0x300A002D : { vr : "DS", vm : C.VM_SINGLE, keyword : "OrganAtRiskOverdoseVolumeFraction"},
- 0x300A0040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ToleranceTableSequence"},
- 0x300A0042 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ToleranceTableNumber"},
- 0x300A0043 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ToleranceTableLabel"},
- 0x300A0044 : { vr : "DS", vm : C.VM_SINGLE, keyword : "GantryAngleTolerance"},
- 0x300A0046 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceAngleTolerance"},
- 0x300A0048 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceToleranceSequence"},
- 0x300A004A : { vr : "DS", vm : C.VM_SINGLE, keyword : "BeamLimitingDevicePositionTolerance"},
- 0x300A004B : { vr : "FL", vm : C.VM_SINGLE, keyword : "SnoutPositionTolerance"},
- 0x300A004C : { vr : "DS", vm : C.VM_SINGLE, keyword : "PatientSupportAngleTolerance"},
- 0x300A004E : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopEccentricAngleTolerance"},
- 0x300A004F : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableTopPitchAngleTolerance"},
- 0x300A0050 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableTopRollAngleTolerance"},
- 0x300A0051 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopVerticalPositionTolerance"},
- 0x300A0052 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLongitudinalPositionTolerance"},
- 0x300A0053 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLateralPositionTolerance"},
- 0x300A0055 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTPlanRelationship"},
- 0x300A0070 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FractionGroupSequence"},
- 0x300A0071 : { vr : "IS", vm : C.VM_SINGLE, keyword : "FractionGroupNumber"},
- 0x300A0072 : { vr : "LO", vm : C.VM_SINGLE, keyword : "FractionGroupDescription"},
- 0x300A0078 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFractionsPlanned"},
- 0x300A0079 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFractionPatternDigitsPerDay"},
- 0x300A007A : { vr : "IS", vm : C.VM_SINGLE, keyword : "RepeatFractionCycleLength"},
- 0x300A007B : { vr : "LT", vm : C.VM_SINGLE, keyword : "FractionPattern"},
- 0x300A0080 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfBeams"},
- 0x300A0082 : { vr : "DS", vm : C.VM_THREE, keyword : "BeamDoseSpecificationPoint"},
- 0x300A0084 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BeamDose"},
- 0x300A0086 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BeamMeterset"},
- 0x300A0088 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BeamDosePointDepth"},
- 0x300A0089 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BeamDosePointEquivalentDepth"},
- 0x300A008A : { vr : "FL", vm : C.VM_SINGLE, keyword : "BeamDosePointSSD"},
- 0x300A00A0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfBrachyApplicationSetups"},
- 0x300A00A2 : { vr : "DS", vm : C.VM_THREE, keyword : "BrachyApplicationSetupDoseSpecificationPoint"},
- 0x300A00A4 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BrachyApplicationSetupDose"},
- 0x300A00B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamSequence"},
- 0x300A00B2 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TreatmentMachineName"},
- 0x300A00B3 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PrimaryDosimeterUnit"},
- 0x300A00B4 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceAxisDistance"},
- 0x300A00B6 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceSequence"},
- 0x300A00B8 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RTBeamLimitingDeviceType"},
- 0x300A00BA : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToBeamLimitingDeviceDistance"},
- 0x300A00BB : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToBeamLimitingDeviceDistance"},
- 0x300A00BC : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfLeafJawPairs"},
- 0x300A00BE : { vr : "DS", vm : C.VM_3N, keyword : "LeafPositionBoundaries"},
- 0x300A00C0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "BeamNumber"},
- 0x300A00C2 : { vr : "LO", vm : C.VM_SINGLE, keyword : "BeamName"},
- 0x300A00C3 : { vr : "ST", vm : C.VM_SINGLE, keyword : "BeamDescription"},
- 0x300A00C4 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BeamType"},
- 0x300A00C6 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RadiationType"},
- 0x300A00C7 : { vr : "CS", vm : C.VM_SINGLE, keyword : "HighDoseTechniqueType"},
- 0x300A00C8 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferenceImageNumber"},
- 0x300A00CA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PlannedVerificationImageSequence"},
- 0x300A00CC : { vr : "LO", vm : C.VM_1N, keyword : "ImagingDeviceSpecificAcquisitionParameters"},
- 0x300A00CE : { vr : "CS", vm : C.VM_SINGLE, keyword : "TreatmentDeliveryType"},
- 0x300A00D0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfWedges"},
- 0x300A00D1 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WedgeSequence"},
- 0x300A00D2 : { vr : "IS", vm : C.VM_SINGLE, keyword : "WedgeNumber"},
- 0x300A00D3 : { vr : "CS", vm : C.VM_SINGLE, keyword : "WedgeType"},
- 0x300A00D4 : { vr : "SH", vm : C.VM_SINGLE, keyword : "WedgeID"},
- 0x300A00D5 : { vr : "IS", vm : C.VM_SINGLE, keyword : "WedgeAngle"},
- 0x300A00D6 : { vr : "DS", vm : C.VM_SINGLE, keyword : "WedgeFactor"},
- 0x300A00D7 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TotalWedgeTrayWaterEquivalentThickness"},
- 0x300A00D8 : { vr : "DS", vm : C.VM_SINGLE, keyword : "WedgeOrientation"},
- 0x300A00D9 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToWedgeTrayDistance"},
- 0x300A00DA : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToWedgeTrayDistance"},
- 0x300A00DB : { vr : "FL", vm : C.VM_SINGLE, keyword : "WedgeThinEdgePosition"},
- 0x300A00DC : { vr : "SH", vm : C.VM_SINGLE, keyword : "BolusID"},
- 0x300A00DD : { vr : "ST", vm : C.VM_SINGLE, keyword : "BolusDescription"},
- 0x300A00E0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfCompensators"},
- 0x300A00E1 : { vr : "SH", vm : C.VM_SINGLE, keyword : "MaterialID"},
- 0x300A00E2 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TotalCompensatorTrayFactor"},
- 0x300A00E3 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CompensatorSequence"},
- 0x300A00E4 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CompensatorNumber"},
- 0x300A00E5 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CompensatorID"},
- 0x300A00E6 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToCompensatorTrayDistance"},
- 0x300A00E7 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CompensatorRows"},
- 0x300A00E8 : { vr : "IS", vm : C.VM_SINGLE, keyword : "CompensatorColumns"},
- 0x300A00E9 : { vr : "DS", vm : C.VM_TWO, keyword : "CompensatorPixelSpacing"},
- 0x300A00EA : { vr : "DS", vm : C.VM_TWO, keyword : "CompensatorPosition"},
- 0x300A00EB : { vr : "DS", vm : C.VM_1N, keyword : "CompensatorTransmissionData"},
- 0x300A00EC : { vr : "DS", vm : C.VM_1N, keyword : "CompensatorThicknessData"},
- 0x300A00ED : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfBoli"},
- 0x300A00EE : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompensatorType"},
- 0x300A00F0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfBlocks"},
- 0x300A00F2 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TotalBlockTrayFactor"},
- 0x300A00F3 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TotalBlockTrayWaterEquivalentThickness"},
- 0x300A00F4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BlockSequence"},
- 0x300A00F5 : { vr : "SH", vm : C.VM_SINGLE, keyword : "BlockTrayID"},
- 0x300A00F6 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToBlockTrayDistance"},
- 0x300A00F7 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToBlockTrayDistance"},
- 0x300A00F8 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlockType"},
- 0x300A00F9 : { vr : "LO", vm : C.VM_SINGLE, keyword : "AccessoryCode"},
- 0x300A00FA : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlockDivergence"},
- 0x300A00FB : { vr : "CS", vm : C.VM_SINGLE, keyword : "BlockMountingPosition"},
- 0x300A00FC : { vr : "IS", vm : C.VM_SINGLE, keyword : "BlockNumber"},
- 0x300A00FE : { vr : "LO", vm : C.VM_SINGLE, keyword : "BlockName"},
- 0x300A0100 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BlockThickness"},
- 0x300A0102 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BlockTransmission"},
- 0x300A0104 : { vr : "IS", vm : C.VM_SINGLE, keyword : "BlockNumberOfPoints"},
- 0x300A0106 : { vr : "DS", vm : C.VM_2_2N, keyword : "BlockData"},
- 0x300A0107 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ApplicatorSequence"},
- 0x300A0108 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ApplicatorID"},
- 0x300A0109 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApplicatorType"},
- 0x300A010A : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicatorDescription"},
- 0x300A010C : { vr : "DS", vm : C.VM_SINGLE, keyword : "CumulativeDoseReferenceCoefficient"},
- 0x300A010E : { vr : "DS", vm : C.VM_SINGLE, keyword : "FinalCumulativeMetersetWeight"},
- 0x300A0110 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfControlPoints"},
- 0x300A0111 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ControlPointSequence"},
- 0x300A0112 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ControlPointIndex"},
- 0x300A0114 : { vr : "DS", vm : C.VM_SINGLE, keyword : "NominalBeamEnergy"},
- 0x300A0115 : { vr : "DS", vm : C.VM_SINGLE, keyword : "DoseRateSet"},
- 0x300A0116 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WedgePositionSequence"},
- 0x300A0118 : { vr : "CS", vm : C.VM_SINGLE, keyword : "WedgePosition"},
- 0x300A011A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BeamLimitingDevicePositionSequence"},
- 0x300A011C : { vr : "DS", vm : C.VM_2_2N, keyword : "LeafJawPositions"},
- 0x300A011E : { vr : "DS", vm : C.VM_SINGLE, keyword : "GantryAngle"},
- 0x300A011F : { vr : "CS", vm : C.VM_SINGLE, keyword : "GantryRotationDirection"},
- 0x300A0120 : { vr : "DS", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceAngle"},
- 0x300A0121 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BeamLimitingDeviceRotationDirection"},
- 0x300A0122 : { vr : "DS", vm : C.VM_SINGLE, keyword : "PatientSupportAngle"},
- 0x300A0123 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientSupportRotationDirection"},
- 0x300A0124 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopEccentricAxisDistance"},
- 0x300A0125 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopEccentricAngle"},
- 0x300A0126 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TableTopEccentricRotationDirection"},
- 0x300A0128 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopVerticalPosition"},
- 0x300A0129 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLongitudinalPosition"},
- 0x300A012A : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLateralPosition"},
- 0x300A012C : { vr : "DS", vm : C.VM_THREE, keyword : "IsocenterPosition"},
- 0x300A012E : { vr : "DS", vm : C.VM_THREE, keyword : "SurfaceEntryPoint"},
- 0x300A0130 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceToSurfaceDistance"},
- 0x300A0134 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CumulativeMetersetWeight"},
- 0x300A0140 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableTopPitchAngle"},
- 0x300A0142 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TableTopPitchRotationDirection"},
- 0x300A0144 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TableTopRollAngle"},
- 0x300A0146 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TableTopRollRotationDirection"},
- 0x300A0148 : { vr : "FL", vm : C.VM_SINGLE, keyword : "HeadFixationAngle"},
- 0x300A014A : { vr : "FL", vm : C.VM_SINGLE, keyword : "GantryPitchAngle"},
- 0x300A014C : { vr : "CS", vm : C.VM_SINGLE, keyword : "GantryPitchRotationDirection"},
- 0x300A014E : { vr : "FL", vm : C.VM_SINGLE, keyword : "GantryPitchAngleTolerance"},
- 0x300A0180 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PatientSetupSequence"},
- 0x300A0182 : { vr : "IS", vm : C.VM_SINGLE, keyword : "PatientSetupNumber"},
- 0x300A0183 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientSetupLabel"},
- 0x300A0184 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientAdditionalPosition"},
- 0x300A0190 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "FixationDeviceSequence"},
- 0x300A0192 : { vr : "CS", vm : C.VM_SINGLE, keyword : "FixationDeviceType"},
- 0x300A0194 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FixationDeviceLabel"},
- 0x300A0196 : { vr : "ST", vm : C.VM_SINGLE, keyword : "FixationDeviceDescription"},
- 0x300A0198 : { vr : "SH", vm : C.VM_SINGLE, keyword : "FixationDevicePosition"},
- 0x300A0199 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FixationDevicePitchAngle"},
- 0x300A019A : { vr : "FL", vm : C.VM_SINGLE, keyword : "FixationDeviceRollAngle"},
- 0x300A01A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ShieldingDeviceSequence"},
- 0x300A01A2 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ShieldingDeviceType"},
- 0x300A01A4 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ShieldingDeviceLabel"},
- 0x300A01A6 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ShieldingDeviceDescription"},
- 0x300A01A8 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ShieldingDevicePosition"},
- 0x300A01B0 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SetupTechnique"},
- 0x300A01B2 : { vr : "ST", vm : C.VM_SINGLE, keyword : "SetupTechniqueDescription"},
- 0x300A01B4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SetupDeviceSequence"},
- 0x300A01B6 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SetupDeviceType"},
- 0x300A01B8 : { vr : "SH", vm : C.VM_SINGLE, keyword : "SetupDeviceLabel"},
- 0x300A01BA : { vr : "ST", vm : C.VM_SINGLE, keyword : "SetupDeviceDescription"},
- 0x300A01BC : { vr : "DS", vm : C.VM_SINGLE, keyword : "SetupDeviceParameter"},
- 0x300A01D0 : { vr : "ST", vm : C.VM_SINGLE, keyword : "SetupReferenceDescription"},
- 0x300A01D2 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopVerticalSetupDisplacement"},
- 0x300A01D4 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLongitudinalSetupDisplacement"},
- 0x300A01D6 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TableTopLateralSetupDisplacement"},
- 0x300A0200 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BrachyTreatmentTechnique"},
- 0x300A0202 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BrachyTreatmentType"},
- 0x300A0206 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "TreatmentMachineSequence"},
- 0x300A0210 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SourceSequence"},
- 0x300A0212 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SourceNumber"},
- 0x300A0214 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SourceType"},
- 0x300A0216 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceManufacturer"},
- 0x300A0218 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ActiveSourceDiameter"},
- 0x300A021A : { vr : "DS", vm : C.VM_SINGLE, keyword : "ActiveSourceLength"},
- 0x300A0222 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceEncapsulationNominalThickness"},
- 0x300A0224 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceEncapsulationNominalTransmission"},
- 0x300A0226 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceIsotopeName"},
- 0x300A0228 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceIsotopeHalfLife"},
- 0x300A0229 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SourceStrengthUnits"},
- 0x300A022A : { vr : "DS", vm : C.VM_SINGLE, keyword : "ReferenceAirKermaRate"},
- 0x300A022B : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceStrength"},
- 0x300A022C : { vr : "DA", vm : C.VM_SINGLE, keyword : "SourceStrengthReferenceDate"},
- 0x300A022E : { vr : "TM", vm : C.VM_SINGLE, keyword : "SourceStrengthReferenceTime"},
- 0x300A0230 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ApplicationSetupSequence"},
- 0x300A0232 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApplicationSetupType"},
- 0x300A0234 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ApplicationSetupNumber"},
- 0x300A0236 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicationSetupName"},
- 0x300A0238 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ApplicationSetupManufacturer"},
- 0x300A0240 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TemplateNumber"},
- 0x300A0242 : { vr : "SH", vm : C.VM_SINGLE, keyword : "TemplateType"},
- 0x300A0244 : { vr : "LO", vm : C.VM_SINGLE, keyword : "TemplateName"},
- 0x300A0250 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TotalReferenceAirKerma"},
- 0x300A0260 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceSequence"},
- 0x300A0262 : { vr : "IS", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceNumber"},
- 0x300A0263 : { vr : "SH", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceID"},
- 0x300A0264 : { vr : "CS", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceType"},
- 0x300A0266 : { vr : "LO", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceName"},
- 0x300A026A : { vr : "DS", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceNominalThickness"},
- 0x300A026C : { vr : "DS", vm : C.VM_SINGLE, keyword : "BrachyAccessoryDeviceNominalTransmission"},
- 0x300A0280 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelSequence"},
- 0x300A0282 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ChannelNumber"},
- 0x300A0284 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelLength"},
- 0x300A0286 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelTotalTime"},
- 0x300A0288 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SourceMovementType"},
- 0x300A028A : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPulses"},
- 0x300A028C : { vr : "DS", vm : C.VM_SINGLE, keyword : "PulseRepetitionInterval"},
- 0x300A0290 : { vr : "IS", vm : C.VM_SINGLE, keyword : "SourceApplicatorNumber"},
- 0x300A0291 : { vr : "SH", vm : C.VM_SINGLE, keyword : "SourceApplicatorID"},
- 0x300A0292 : { vr : "CS", vm : C.VM_SINGLE, keyword : "SourceApplicatorType"},
- 0x300A0294 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceApplicatorName"},
- 0x300A0296 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceApplicatorLength"},
- 0x300A0298 : { vr : "LO", vm : C.VM_SINGLE, keyword : "SourceApplicatorManufacturer"},
- 0x300A029C : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceApplicatorWallNominalThickness"},
- 0x300A029E : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceApplicatorWallNominalTransmission"},
- 0x300A02A0 : { vr : "DS", vm : C.VM_SINGLE, keyword : "SourceApplicatorStepSize"},
- 0x300A02A2 : { vr : "IS", vm : C.VM_SINGLE, keyword : "TransferTubeNumber"},
- 0x300A02A4 : { vr : "DS", vm : C.VM_SINGLE, keyword : "TransferTubeLength"},
- 0x300A02B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ChannelShieldSequence"},
- 0x300A02B2 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ChannelShieldNumber"},
- 0x300A02B3 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ChannelShieldID"},
- 0x300A02B4 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ChannelShieldName"},
- 0x300A02B8 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelShieldNominalThickness"},
- 0x300A02BA : { vr : "DS", vm : C.VM_SINGLE, keyword : "ChannelShieldNominalTransmission"},
- 0x300A02C8 : { vr : "DS", vm : C.VM_SINGLE, keyword : "FinalCumulativeTimeWeight"},
- 0x300A02D0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BrachyControlPointSequence"},
- 0x300A02D2 : { vr : "DS", vm : C.VM_SINGLE, keyword : "ControlPointRelativePosition"},
- 0x300A02D4 : { vr : "DS", vm : C.VM_THREE, keyword : "ControlPoint3DPosition"},
- 0x300A02D6 : { vr : "DS", vm : C.VM_SINGLE, keyword : "CumulativeTimeWeight"},
- 0x300A02E0 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompensatorDivergence"},
- 0x300A02E1 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CompensatorMountingPosition"},
- 0x300A02E2 : { vr : "DS", vm : C.VM_1N, keyword : "SourceToCompensatorDistance"},
- 0x300A02E3 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TotalCompensatorTrayWaterEquivalentThickness"},
- 0x300A02E4 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToCompensatorTrayDistance"},
- 0x300A02E5 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CompensatorColumnOffset"},
- 0x300A02E6 : { vr : "FL", vm : C.VM_1N, keyword : "IsocenterToCompensatorDistances"},
- 0x300A02E7 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CompensatorRelativeStoppingPowerRatio"},
- 0x300A02E8 : { vr : "FL", vm : C.VM_SINGLE, keyword : "CompensatorMillingToolDiameter"},
- 0x300A02EA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonRangeCompensatorSequence"},
- 0x300A02EB : { vr : "LT", vm : C.VM_SINGLE, keyword : "CompensatorDescription"},
- 0x300A0302 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RadiationMassNumber"},
- 0x300A0304 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RadiationAtomicNumber"},
- 0x300A0306 : { vr : "SS", vm : C.VM_SINGLE, keyword : "RadiationChargeState"},
- 0x300A0308 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScanMode"},
- 0x300A030A : { vr : "FL", vm : C.VM_TWO, keyword : "VirtualSourceAxisDistances"},
- 0x300A030C : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SnoutSequence"},
- 0x300A030D : { vr : "FL", vm : C.VM_SINGLE, keyword : "SnoutPosition"},
- 0x300A030F : { vr : "SH", vm : C.VM_SINGLE, keyword : "SnoutID"},
- 0x300A0312 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfRangeShifters"},
- 0x300A0314 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RangeShifterSequence"},
- 0x300A0316 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RangeShifterNumber"},
- 0x300A0318 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RangeShifterID"},
- 0x300A0320 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RangeShifterType"},
- 0x300A0322 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RangeShifterDescription"},
- 0x300A0330 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfLateralSpreadingDevices"},
- 0x300A0332 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceSequence"},
- 0x300A0334 : { vr : "IS", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceNumber"},
- 0x300A0336 : { vr : "SH", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceID"},
- 0x300A0338 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceType"},
- 0x300A033A : { vr : "LO", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceDescription"},
- 0x300A033C : { vr : "FL", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceWaterEquivalentThickness"},
- 0x300A0340 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfRangeModulators"},
- 0x300A0342 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RangeModulatorSequence"},
- 0x300A0344 : { vr : "IS", vm : C.VM_SINGLE, keyword : "RangeModulatorNumber"},
- 0x300A0346 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RangeModulatorID"},
- 0x300A0348 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RangeModulatorType"},
- 0x300A034A : { vr : "LO", vm : C.VM_SINGLE, keyword : "RangeModulatorDescription"},
- 0x300A034C : { vr : "SH", vm : C.VM_SINGLE, keyword : "BeamCurrentModulationID"},
- 0x300A0350 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PatientSupportType"},
- 0x300A0352 : { vr : "SH", vm : C.VM_SINGLE, keyword : "PatientSupportID"},
- 0x300A0354 : { vr : "LO", vm : C.VM_SINGLE, keyword : "PatientSupportAccessoryCode"},
- 0x300A0356 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FixationLightAzimuthalAngle"},
- 0x300A0358 : { vr : "FL", vm : C.VM_SINGLE, keyword : "FixationLightPolarAngle"},
- 0x300A035A : { vr : "FL", vm : C.VM_SINGLE, keyword : "MetersetRate"},
- 0x300A0360 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RangeShifterSettingsSequence"},
- 0x300A0362 : { vr : "LO", vm : C.VM_SINGLE, keyword : "RangeShifterSetting"},
- 0x300A0364 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToRangeShifterDistance"},
- 0x300A0366 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RangeShifterWaterEquivalentThickness"},
- 0x300A0370 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceSettingsSequence"},
- 0x300A0372 : { vr : "LO", vm : C.VM_SINGLE, keyword : "LateralSpreadingDeviceSetting"},
- 0x300A0374 : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToLateralSpreadingDeviceDistance"},
- 0x300A0380 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RangeModulatorSettingsSequence"},
- 0x300A0382 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RangeModulatorGatingStartValue"},
- 0x300A0384 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RangeModulatorGatingStopValue"},
- 0x300A0386 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RangeModulatorGatingStartWaterEquivalentThickness"},
- 0x300A0388 : { vr : "FL", vm : C.VM_SINGLE, keyword : "RangeModulatorGatingStopWaterEquivalentThickness"},
- 0x300A038A : { vr : "FL", vm : C.VM_SINGLE, keyword : "IsocenterToRangeModulatorDistance"},
- 0x300A0390 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ScanSpotTuneID"},
- 0x300A0392 : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfScanSpotPositions"},
- 0x300A0394 : { vr : "FL", vm : C.VM_1N, keyword : "ScanSpotPositionMap"},
- 0x300A0396 : { vr : "FL", vm : C.VM_1N, keyword : "ScanSpotMetersetWeights"},
- 0x300A0398 : { vr : "FL", vm : C.VM_TWO, keyword : "ScanningSpotSize"},
- 0x300A039A : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfPaintings"},
- 0x300A03A0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonToleranceTableSequence"},
- 0x300A03A2 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonBeamSequence"},
- 0x300A03A4 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonBeamLimitingDeviceSequence"},
- 0x300A03A6 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonBlockSequence"},
- 0x300A03A8 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonControlPointSequence"},
- 0x300A03AA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonWedgeSequence"},
- 0x300A03AC : { vr : "SQ", vm : C.VM_SINGLE, keyword : "IonWedgePositionSequence"},
- 0x300A0401 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedSetupImageSequence"},
- 0x300A0402 : { vr : "ST", vm : C.VM_SINGLE, keyword : "SetupImageComment"},
- 0x300A0410 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MotionSynchronizationSequence"},
- 0x300A0412 : { vr : "FL", vm : C.VM_THREE, keyword : "ControlPointOrientation"},
- 0x300A0420 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "GeneralAccessorySequence"},
- 0x300A0421 : { vr : "SH", vm : C.VM_SINGLE, keyword : "GeneralAccessoryID"},
- 0x300A0422 : { vr : "ST", vm : C.VM_SINGLE, keyword : "GeneralAccessoryDescription"},
- 0x300A0423 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GeneralAccessoryType"},
- 0x300A0424 : { vr : "IS", vm : C.VM_SINGLE, keyword : "GeneralAccessoryNumber"},
- 0x300A0431 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ApplicatorGeometrySequence"},
- 0x300A0432 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApplicatorApertureShape"},
- 0x300A0433 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ApplicatorOpening"},
- 0x300A0434 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ApplicatorOpeningX"},
- 0x300A0435 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ApplicatorOpeningY"},
- 0x300A0436 : { vr : "FL", vm : C.VM_SINGLE, keyword : "SourceToApplicatorMountingPositionDistance"},
- 0x300C0002 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedRTPlanSequence"},
- 0x300C0004 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedBeamSequence"},
- 0x300C0006 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedBeamNumber"},
- 0x300C0007 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedReferenceImageNumber"},
- 0x300C0008 : { vr : "DS", vm : C.VM_SINGLE, keyword : "StartCumulativeMetersetWeight"},
- 0x300C0009 : { vr : "DS", vm : C.VM_SINGLE, keyword : "EndCumulativeMetersetWeight"},
- 0x300C000A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedBrachyApplicationSetupSequence"},
- 0x300C000C : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedBrachyApplicationSetupNumber"},
- 0x300C000E : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedSourceNumber"},
- 0x300C0020 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedFractionGroupSequence"},
- 0x300C0022 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedFractionGroupNumber"},
- 0x300C0040 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedVerificationImageSequence"},
- 0x300C0042 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedReferenceImageSequence"},
- 0x300C0050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedDoseReferenceSequence"},
- 0x300C0051 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedDoseReferenceNumber"},
- 0x300C0055 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BrachyReferencedDoseReferenceSequence"},
- 0x300C0060 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedStructureSetSequence"},
- 0x300C006A : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedPatientSetupNumber"},
- 0x300C0080 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedDoseSequence"},
- 0x300C00A0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedToleranceTableNumber"},
- 0x300C00B0 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedBolusSequence"},
- 0x300C00C0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedWedgeNumber"},
- 0x300C00D0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedCompensatorNumber"},
- 0x300C00E0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedBlockNumber"},
- 0x300C00F0 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedControlPointIndex"},
- 0x300C00F2 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedControlPointSequence"},
- 0x300C00F4 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedStartControlPointIndex"},
- 0x300C00F6 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedStopControlPointIndex"},
- 0x300C0100 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedRangeShifterNumber"},
- 0x300C0102 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedLateralSpreadingDeviceNumber"},
- 0x300C0104 : { vr : "IS", vm : C.VM_SINGLE, keyword : "ReferencedRangeModulatorNumber"},
- 0x300E0002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ApprovalStatus"},
- 0x300E0004 : { vr : "DA", vm : C.VM_SINGLE, keyword : "ReviewDate"},
- 0x300E0005 : { vr : "TM", vm : C.VM_SINGLE, keyword : "ReviewTime"},
- 0x300E0008 : { vr : "PN", vm : C.VM_SINGLE, keyword : "ReviewerName"},
- 0x40000010 : { vr : "LT", vm : C.VM_SINGLE, keyword : "Arbitrary"},
- 0x40004000 : { vr : "LT", vm : C.VM_SINGLE, keyword : "TextComments"},
- 0x40080040 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ResultsID"},
- 0x40080042 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ResultsIDIssuer"},
- 0x40080050 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ReferencedInterpretationSequence"},
- 0x400800FF : { vr : "CS", vm : C.VM_SINGLE, keyword : "ReportProductionStatusTrial"},
- 0x40080100 : { vr : "DA", vm : C.VM_SINGLE, keyword : "InterpretationRecordedDate"},
- 0x40080101 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InterpretationRecordedTime"},
- 0x40080102 : { vr : "PN", vm : C.VM_SINGLE, keyword : "InterpretationRecorder"},
- 0x40080103 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ReferenceToRecordedSound"},
- 0x40080108 : { vr : "DA", vm : C.VM_SINGLE, keyword : "InterpretationTranscriptionDate"},
- 0x40080109 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InterpretationTranscriptionTime"},
- 0x4008010A : { vr : "PN", vm : C.VM_SINGLE, keyword : "InterpretationTranscriber"},
- 0x4008010B : { vr : "ST", vm : C.VM_SINGLE, keyword : "InterpretationText"},
- 0x4008010C : { vr : "PN", vm : C.VM_SINGLE, keyword : "InterpretationAuthor"},
- 0x40080111 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InterpretationApproverSequence"},
- 0x40080112 : { vr : "DA", vm : C.VM_SINGLE, keyword : "InterpretationApprovalDate"},
- 0x40080113 : { vr : "TM", vm : C.VM_SINGLE, keyword : "InterpretationApprovalTime"},
- 0x40080114 : { vr : "PN", vm : C.VM_SINGLE, keyword : "PhysicianApprovingInterpretation"},
- 0x40080115 : { vr : "LT", vm : C.VM_SINGLE, keyword : "InterpretationDiagnosisDescription"},
- 0x40080117 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "InterpretationDiagnosisCodeSequence"},
- 0x40080118 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ResultsDistributionListSequence"},
- 0x40080119 : { vr : "PN", vm : C.VM_SINGLE, keyword : "DistributionName"},
- 0x4008011A : { vr : "LO", vm : C.VM_SINGLE, keyword : "DistributionAddress"},
- 0x40080200 : { vr : "SH", vm : C.VM_SINGLE, keyword : "InterpretationID"},
- 0x40080202 : { vr : "LO", vm : C.VM_SINGLE, keyword : "InterpretationIDIssuer"},
- 0x40080210 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InterpretationTypeID"},
- 0x40080212 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InterpretationStatusID"},
- 0x40080300 : { vr : "ST", vm : C.VM_SINGLE, keyword : "Impressions"},
- 0x40084000 : { vr : "ST", vm : C.VM_SINGLE, keyword : "ResultsComments"},
- 0x40100001 : { vr : "CS", vm : C.VM_SINGLE, keyword : "LowEnergyDetectors"},
- 0x40100002 : { vr : "CS", vm : C.VM_SINGLE, keyword : "HighEnergyDetectors"},
- 0x40100004 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DetectorGeometrySequence"},
- 0x40101001 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ThreatROIVoxelSequence"},
- 0x40101004 : { vr : "FL", vm : C.VM_THREE, keyword : "ThreatROIBase"},
- 0x40101005 : { vr : "FL", vm : C.VM_THREE, keyword : "ThreatROIExtents"},
- 0x40101006 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ThreatROIBitmap"},
- 0x40101007 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RouteSegmentID"},
- 0x40101008 : { vr : "CS", vm : C.VM_SINGLE, keyword : "GantryType"},
- 0x40101009 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OOIOwnerType"},
- 0x4010100A : { vr : "SQ", vm : C.VM_SINGLE, keyword : "RouteSegmentSequence"},
- 0x40101010 : { vr : "US", vm : C.VM_SINGLE, keyword : "PotentialThreatObjectID"},
- 0x40101011 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ThreatSequence"},
- 0x40101012 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ThreatCategory"},
- 0x40101013 : { vr : "LT", vm : C.VM_SINGLE, keyword : "ThreatCategoryDescription"},
- 0x40101014 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ATDAbilityAssessment"},
- 0x40101015 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ATDAssessmentFlag"},
- 0x40101016 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ATDAssessmentProbability"},
- 0x40101017 : { vr : "FL", vm : C.VM_SINGLE, keyword : "Mass"},
- 0x40101018 : { vr : "FL", vm : C.VM_SINGLE, keyword : "Density"},
- 0x40101019 : { vr : "FL", vm : C.VM_SINGLE, keyword : "ZEffective"},
- 0x4010101A : { vr : "SH", vm : C.VM_SINGLE, keyword : "BoardingPassID"},
- 0x4010101B : { vr : "FL", vm : C.VM_THREE, keyword : "CenterOfMass"},
- 0x4010101C : { vr : "FL", vm : C.VM_THREE, keyword : "CenterOfPTO"},
- 0x4010101D : { vr : "FL", vm : C.VM_6N, keyword : "BoundingPolygon"},
- 0x4010101E : { vr : "SH", vm : C.VM_SINGLE, keyword : "RouteSegmentStartLocationID"},
- 0x4010101F : { vr : "SH", vm : C.VM_SINGLE, keyword : "RouteSegmentEndLocationID"},
- 0x40101020 : { vr : "CS", vm : C.VM_SINGLE, keyword : "RouteSegmentLocationIDType"},
- 0x40101021 : { vr : "CS", vm : C.VM_1N, keyword : "AbortReason"},
- 0x40101023 : { vr : "FL", vm : C.VM_SINGLE, keyword : "VolumeOfPTO"},
- 0x40101024 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AbortFlag"},
- 0x40101025 : { vr : "DT", vm : C.VM_SINGLE, keyword : "RouteSegmentStartTime"},
- 0x40101026 : { vr : "DT", vm : C.VM_SINGLE, keyword : "RouteSegmentEndTime"},
- 0x40101027 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TDRType"},
- 0x40101028 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InternationalRouteSegment"},
- 0x40101029 : { vr : "LO", vm : C.VM_1N, keyword : "ThreatDetectionAlgorithmandVersion"},
- 0x4010102A : { vr : "SH", vm : C.VM_SINGLE, keyword : "AssignedLocation"},
- 0x4010102B : { vr : "DT", vm : C.VM_SINGLE, keyword : "AlarmDecisionTime"},
- 0x40101031 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AlarmDecision"},
- 0x40101033 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTotalObjects"},
- 0x40101034 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfAlarmObjects"},
- 0x40101037 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PTORepresentationSequence"},
- 0x40101038 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "ATDAssessmentSequence"},
- 0x40101039 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TIPType"},
- 0x4010103A : { vr : "CS", vm : C.VM_SINGLE, keyword : "DICOSVersion"},
- 0x40101041 : { vr : "DT", vm : C.VM_SINGLE, keyword : "OOIOwnerCreationTime"},
- 0x40101042 : { vr : "CS", vm : C.VM_SINGLE, keyword : "OOIType"},
- 0x40101043 : { vr : "FL", vm : C.VM_THREE, keyword : "OOISize"},
- 0x40101044 : { vr : "CS", vm : C.VM_SINGLE, keyword : "AcquisitionStatus"},
- 0x40101045 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "BasisMaterialsCodeSequence"},
- 0x40101046 : { vr : "CS", vm : C.VM_SINGLE, keyword : "PhantomType"},
- 0x40101047 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "OOIOwnerSequence"},
- 0x40101048 : { vr : "CS", vm : C.VM_SINGLE, keyword : "ScanType"},
- 0x40101051 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ItineraryID"},
- 0x40101052 : { vr : "SH", vm : C.VM_SINGLE, keyword : "ItineraryIDType"},
- 0x40101053 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ItineraryIDAssigningAuthority"},
- 0x40101054 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RouteID"},
- 0x40101055 : { vr : "SH", vm : C.VM_SINGLE, keyword : "RouteIDAssigningAuthority"},
- 0x40101056 : { vr : "CS", vm : C.VM_SINGLE, keyword : "InboundArrivalType"},
- 0x40101058 : { vr : "SH", vm : C.VM_SINGLE, keyword : "CarrierID"},
- 0x40101059 : { vr : "CS", vm : C.VM_SINGLE, keyword : "CarrierIDAssigningAuthority"},
- 0x40101060 : { vr : "FL", vm : C.VM_THREE, keyword : "SourceOrientation"},
- 0x40101061 : { vr : "FL", vm : C.VM_THREE, keyword : "SourcePosition"},
- 0x40101062 : { vr : "FL", vm : C.VM_SINGLE, keyword : "BeltHeight"},
- 0x40101064 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "AlgorithmRoutingCodeSequence"},
- 0x40101067 : { vr : "CS", vm : C.VM_SINGLE, keyword : "TransportClassification"},
- 0x40101068 : { vr : "LT", vm : C.VM_SINGLE, keyword : "OOITypeDescriptor"},
- 0x40101069 : { vr : "FL", vm : C.VM_SINGLE, keyword : "TotalProcessingTime"},
- 0x4010106C : { vr : "OB", vm : C.VM_SINGLE, keyword : "DetectorCalibrationData"},
- 0x4FFE0001 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "MACParametersSequence"},
- 0x52009229 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "SharedFunctionalGroupsSequence"},
- 0x52009230 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "PerFrameFunctionalGroupsSequence"},
- 0x54000100 : { vr : "SQ", vm : C.VM_SINGLE, keyword : "WaveformSequence"},
- 0x54000110 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ChannelMinimumValue"},
- 0x54000112 : { vr : "OB", vm : C.VM_SINGLE, keyword : "ChannelMaximumValue"},
- 0x54001004 : { vr : "US", vm : C.VM_SINGLE, keyword : "WaveformBitsAllocated"},
- 0x54001006 : { vr : "CS", vm : C.VM_SINGLE, keyword : "WaveformSampleInterpretation"},
- 0x5400100A : { vr : "OB", vm : C.VM_SINGLE, keyword : "WaveformPaddingValue"},
- 0x54001010 : { vr : "OB", vm : C.VM_SINGLE, keyword : "WaveformData"},
- 0x56000010 : { vr : "OF", vm : C.VM_SINGLE, keyword : "FirstOrderPhaseCorrectionAngle"},
- 0x56000020 : { vr : "OF", vm : C.VM_SINGLE, keyword : "SpectroscopyData"},
- 0x7FE00010 : { vr : "OW", vm : C.VM_SINGLE, keyword : "PixelData"},
- 0x7FE00020 : { vr : "OW", vm : C.VM_SINGLE, keyword : "CoefficientsSDVN"},
- 0x7FE00030 : { vr : "OW", vm : C.VM_SINGLE, keyword : "CoefficientsSDHN"},
- 0x7FE00040 : { vr : "OW", vm : C.VM_SINGLE, keyword : "CoefficientsSDDN"},
- 0xFFFAFFFA : { vr : "SQ", vm : C.VM_SINGLE, keyword : "DigitalSignaturesSequence"},
- 0xFFFCFFFC : { vr : "OB", vm : C.VM_SINGLE, keyword : "DataSetTrailingPadding"},
- 0xFFFEE000 : { vr : null, vm : C.VM_SINGLE, keyword : "Item"},
- 0xFFFEE00D : { vr : null, vm : C.VM_SINGLE, keyword : "ItemDelimitationItem"},
- 0xFFFEE0DD : { vr : null, vm : C.VM_SINGLE, keyword : "SequenceDelimitationItem"},
- 0x00000000 : { vr : "UL", vm : C.VM_SINGLE, keyword : "CommandGroupLength"},
- 0x00000002 : { vr : "UI", vm : C.VM_SINGLE, keyword : "AffectedSOPClassUID"},
- 0x00000003 : { vr : "UI", vm : C.VM_SINGLE, keyword : "RequestedSOPClassUID"},
- 0x00000100 : { vr : "US", vm : C.VM_SINGLE, keyword : "CommandField"},
- 0x00000110 : { vr : "US", vm : C.VM_SINGLE, keyword : "MessageID"},
- 0x00000120 : { vr : "US", vm : C.VM_SINGLE, keyword : "MessageIDBeingRespondedTo"},
- 0x00000600 : { vr : "AE", vm : C.VM_SINGLE, keyword : "MoveDestination"},
- 0x00000700 : { vr : "US", vm : C.VM_SINGLE, keyword : "Priority"},
- 0x00000800 : { vr : "US", vm : C.VM_SINGLE, keyword : "CommandDataSetType"},
- 0x00000900 : { vr : "US", vm : C.VM_SINGLE, keyword : "Status"},
- 0x00000901 : { vr : "AT", vm : C.VM_1N, keyword : "OffendingElement"},
- 0x00000902 : { vr : "LO", vm : C.VM_SINGLE, keyword : "ErrorComment"},
- 0x00000903 : { vr : "US", vm : C.VM_SINGLE, keyword : "ErrorID"},
- 0x00001000 : { vr : "UI", vm : C.VM_SINGLE, keyword : "AffectedSOPInstanceUID"},
- 0x00001001 : { vr : "UI", vm : C.VM_SINGLE, keyword : "RequestedSOPInstanceUID"},
- 0x00001002 : { vr : "US", vm : C.VM_SINGLE, keyword : "EventTypeID"},
- 0x00001005 : { vr : "AT", vm : C.VM_1N, keyword : "AttributeIdentifierList"},
- 0x00001008 : { vr : "US", vm : C.VM_SINGLE, keyword : "ActionTypeID"},
- 0x00001020 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfRemainingSuboperations"},
- 0x00001021 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfCompletedSuboperations"},
- 0x00001022 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfFailedSuboperations"},
- 0x00001023 : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfWarningSuboperations"},
- 0x00001030 : { vr : "AE", vm : C.VM_SINGLE, keyword : "MoveOriginatorApplicationEntityTitle"},
- 0x00001031 : { vr : "US", vm : C.VM_SINGLE, keyword : "MoveOriginatorMessageID"},
-}
-
-var dicomVDict = {
- "002031xx" : { vr : "CS", vm : C.VM_1N, keyword : "SourceImageIDs"},
- "002804x0" : { vr : "US", vm : C.VM_SINGLE, keyword : "RowsForNthOrderCoefficients"},
- "002804x1" : { vr : "US", vm : C.VM_SINGLE, keyword : "ColumnsForNthOrderCoefficients"},
- "002804x2" : { vr : "LO", vm : C.VM_1N, keyword : "CoefficientCoding"},
- "002804x3" : { vr : "AT", vm : C.VM_1N, keyword : "CoefficientCodingPointers"},
- "002808x0" : { vr : "CS", vm : C.VM_1N, keyword : "CodeLabel"},
- "002808x2" : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfTables"},
- "002808x3" : { vr : "AT", vm : C.VM_1N, keyword : "CodeTableLocation"},
- "002808x4" : { vr : "US", vm : C.VM_SINGLE, keyword : "BitsForCodeWord"},
- "002808x8" : { vr : "AT", vm : C.VM_1N, keyword : "ImageDataLocation"},
- "1000xxx0" : { vr : "US", vm : C.VM_THREE, keyword : "EscapeTriplet"},
- "1000xxx1" : { vr : "US", vm : C.VM_THREE, keyword : "RunLengthTriplet"},
- "1000xxx2" : { vr : "US", vm : C.VM_SINGLE, keyword : "HuffmanTableSize"},
- "1000xxx3" : { vr : "US", vm : C.VM_THREE, keyword : "HuffmanTableTriplet"},
- "1000xxx4" : { vr : "US", vm : C.VM_SINGLE, keyword : "ShiftTableSize"},
- "1000xxx5" : { vr : "US", vm : C.VM_THREE, keyword : "ShiftTableTriplet"},
- "1010xxxx" : { vr : "US", vm : C.VM_1N, keyword : "ZonalMap"},
- "50xx0005" : { vr : "US", vm : C.VM_SINGLE, keyword : "CurveDimensions"},
- "50xx0010" : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfPoints"},
- "50xx0020" : { vr : "CS", vm : C.VM_SINGLE, keyword : "TypeOfData"},
- "50xx0022" : { vr : "LO", vm : C.VM_SINGLE, keyword : "CurveDescription"},
- "50xx0030" : { vr : "SH", vm : C.VM_1N, keyword : "AxisUnits"},
- "50xx0040" : { vr : "SH", vm : C.VM_1N, keyword : "AxisLabels"},
- "50xx0103" : { vr : "US", vm : C.VM_SINGLE, keyword : "DataValueRepresentation"},
- "50xx0104" : { vr : "US", vm : C.VM_1N, keyword : "MinimumCoordinateValue"},
- "50xx0105" : { vr : "US", vm : C.VM_1N, keyword : "MaximumCoordinateValue"},
- "50xx0106" : { vr : "SH", vm : C.VM_1N, keyword : "CurveRange"},
- "50xx0110" : { vr : "US", vm : C.VM_1N, keyword : "CurveDataDescriptor"},
- "50xx0112" : { vr : "US", vm : C.VM_1N, keyword : "CoordinateStartValue"},
- "50xx0114" : { vr : "US", vm : C.VM_1N, keyword : "CoordinateStepValue"},
- "50xx1001" : { vr : "CS", vm : C.VM_SINGLE, keyword : "CurveActivationLayer"},
- "50xx2000" : { vr : "US", vm : C.VM_SINGLE, keyword : "AudioType"},
- "50xx2002" : { vr : "US", vm : C.VM_SINGLE, keyword : "AudioSampleFormat"},
- "50xx2004" : { vr : "US", vm : C.VM_SINGLE, keyword : "NumberOfChannels"},
- "50xx2006" : { vr : "UL", vm : C.VM_SINGLE, keyword : "NumberOfSamples"},
- "50xx2008" : { vr : "UL", vm : C.VM_SINGLE, keyword : "SampleRate"},
- "50xx200A" : { vr : "UL", vm : C.VM_SINGLE, keyword : "TotalTime"},
- "50xx200C" : { vr : "OW", vm : C.VM_SINGLE, keyword : "AudioSampleData"},
- "50xx200E" : { vr : "LT", vm : C.VM_SINGLE, keyword : "AudioComments"},
- "50xx2500" : { vr : "LO", vm : C.VM_SINGLE, keyword : "CurveLabel"},
- "50xx2600" : { vr : "SQ", vm : C.VM_SINGLE, keyword : "CurveReferencedOverlaySequence"},
- "50xx2610" : { vr : "US", vm : C.VM_SINGLE, keyword : "CurveReferencedOverlayGroup"},
- "50xx3000" : { vr : "OW", vm : C.VM_SINGLE, keyword : "CurveData"},
- "60xx0010" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayRows"},
- "60xx0011" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayColumns"},
- "60xx0012" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayPlanes"},
- "60xx0015" : { vr : "IS", vm : C.VM_SINGLE, keyword : "NumberOfFramesInOverlay"},
- "60xx0022" : { vr : "LO", vm : C.VM_SINGLE, keyword : "OverlayDescription"},
- "60xx0040" : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayType"},
- "60xx0045" : { vr : "LO", vm : C.VM_SINGLE, keyword : "OverlaySubtype"},
- "60xx0050" : { vr : "SS", vm : C.VM_TWO, keyword : "OverlayOrigin"},
- "60xx0051" : { vr : "US", vm : C.VM_SINGLE, keyword : "ImageFrameOrigin"},
- "60xx0052" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayPlaneOrigin"},
- "60xx0060" : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayCompressionCode"},
- "60xx0061" : { vr : "SH", vm : C.VM_SINGLE, keyword : "OverlayCompressionOriginator"},
- "60xx0062" : { vr : "SH", vm : C.VM_SINGLE, keyword : "OverlayCompressionLabel"},
- "60xx0063" : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayCompressionDescription"},
- "60xx0066" : { vr : "AT", vm : C.VM_1N, keyword : "OverlayCompressionStepPointers"},
- "60xx0068" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayRepeatInterval"},
- "60xx0069" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayBitsGrouped"},
- "60xx0100" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayBitsAllocated"},
- "60xx0102" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayBitPosition"},
- "60xx0110" : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayFormat"},
- "60xx0200" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayLocation"},
- "60xx0800" : { vr : "CS", vm : C.VM_1N, keyword : "OverlayCodeLabel"},
- "60xx0802" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayNumberOfTables"},
- "60xx0803" : { vr : "AT", vm : C.VM_1N, keyword : "OverlayCodeTableLocation"},
- "60xx0804" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayBitsForCodeWord"},
- "60xx1001" : { vr : "CS", vm : C.VM_SINGLE, keyword : "OverlayActivationLayer"},
- "60xx1100" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayDescriptorGray"},
- "60xx1101" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayDescriptorRed"},
- "60xx1102" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayDescriptorGreen"},
- "60xx1103" : { vr : "US", vm : C.VM_SINGLE, keyword : "OverlayDescriptorBlue"},
- "60xx1200" : { vr : "US", vm : C.VM_1N, keyword : "OverlaysGray"},
- "60xx1201" : { vr : "US", vm : C.VM_1N, keyword : "OverlaysRed"},
- "60xx1202" : { vr : "US", vm : C.VM_1N, keyword : "OverlaysGreen"},
- "60xx1203" : { vr : "US", vm : C.VM_1N, keyword : "OverlaysBlue"},
- "60xx1301" : { vr : "IS", vm : C.VM_SINGLE, keyword : "ROIArea"},
- "60xx1302" : { vr : "DS", vm : C.VM_SINGLE, keyword : "ROIMean"},
- "60xx1303" : { vr : "DS", vm : C.VM_SINGLE, keyword : "ROIStandardDeviation"},
- "60xx1500" : { vr : "LO", vm : C.VM_SINGLE, keyword : "OverlayLabel"},
- "60xx3000" : { vr : "OB", vm : C.VM_SINGLE, keyword : "OverlayData"},
- "60xx4000" : { vr : "LT", vm : C.VM_SINGLE, keyword : "OverlayComments"},
- "7Fxx0010" : { vr : "OW", vm : C.VM_SINGLE, keyword : "VariablePixelData"},
- "7Fxx0011" : { vr : "US", vm : C.VM_SINGLE, keyword : "VariableNextDataGroup"},
- "7Fxx0020" : { vr : "OW", vm : C.VM_SINGLE, keyword : "VariableCoefficientsSDVN"},
- "7Fxx0030" : { vr : "OW", vm : C.VM_SINGLE, keyword : "VariableCoefficientsSDHN"},
- "7Fxx0040" : { vr : "OW", vm : C.VM_SINGLE, keyword : "VariableCoefficientsSDDN"},
-}
-
-DicomElements = {dicomNDict : dicomNDict, dicomVDict : dicomVDict}
diff --git a/Packages/ohif-dicom-services/server/DIMSE/require.js b/Packages/ohif-dicom-services/server/DIMSE/require.js
deleted file mode 100755
index 21540b1e5..000000000
--- a/Packages/ohif-dicom-services/server/DIMSE/require.js
+++ /dev/null
@@ -1,7 +0,0 @@
-util = Npm.require("util");
-fs = Npm.require('fs');
-EventEmitter = Npm.require('events').EventEmitter;
-
-quitWithError = function(message, callback) {
- return callback(new Error(message), null);
-};
\ No newline at end of file
diff --git a/Packages/ohif-dicomweb-client/package.js b/Packages/ohif-dicomweb-client/package.js
deleted file mode 100644
index 60999009f..000000000
--- a/Packages/ohif-dicomweb-client/package.js
+++ /dev/null
@@ -1,22 +0,0 @@
-Package.describe({
- name: 'ohif:dicomweb-client',
- summary: 'DICOM Services: DICOMWeb',
- version: '0.0.1'
-});
-
-Npm.depends({
- 'url-parse': '1.4.1',
- 'isomorphic-fetch': '2.2.1',
- 'isomorphic-base64': '1.0.2'
-});
-
-Package.onUse(function(api) {
- api.versionsFrom('1.6');
-
- api.use('ecmascript');
-
- // DICOMWeb functions
- api.mainModule('src/index.js');
-
- api.export('DICOMWeb');
-});
diff --git a/Packages/ohif-dicomweb-client/src/get.js b/Packages/ohif-dicomweb-client/src/get.js
deleted file mode 100644
index 3bceb0661..000000000
--- a/Packages/ohif-dicomweb-client/src/get.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import makeRequest from "./makeRequest";
-
-/**
- * Make a request to the URL given a set of options.
- * This function will add optional timing, request, and respone logging.
- *
- * @param {String} url
- * @param {Object} options
- * @return {Promise<*>}
- */
-const get = async function get(url, options) {
- if (options.logRequests) {
- console.log(url);
- }
-
- if (options.logTiming) {
- console.time(url);
- }
-
- const result = await makeRequest(url, options);
-
- if (options.logTiming) {
- console.timeEnd(url);
- }
-
- if (options.logResponses) {
- console.info(result);
- }
-
- return result;
-}
-
-export default get;
diff --git a/Packages/ohif-dicomweb-client/src/getAccessToken.js b/Packages/ohif-dicomweb-client/src/getAccessToken.js
deleted file mode 100644
index c8306fc38..000000000
--- a/Packages/ohif-dicomweb-client/src/getAccessToken.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { OHIF } from 'meteor/ohif:core';
-
-export default function getAccessToken() {
- if (!global.window || !window.sessionStorage || !sessionStorage) {
- return;
- }
-
- const userAccessToken = OHIF.user.getAccessToken();
- if (userAccessToken) {
- return userAccessToken;
- }
-
- return sessionStorage.token;
-}
diff --git a/Packages/ohif-dicomweb-client/src/getBulkData.js b/Packages/ohif-dicomweb-client/src/getBulkData.js
deleted file mode 100644
index dc576fc17..000000000
--- a/Packages/ohif-dicomweb-client/src/getBulkData.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import get from './get.js';
-
-const ASCII = 'ascii';
-
-function getMultipartContentInfo(headers) {
- const multipartRegex = /^\s*multipart\/[^;]+/g;
- const contentType = headers.get('content-type');
- let dict = null;
-
- if (typeof contentType === 'string' && multipartRegex.test(contentType)) {
- let match;
- let pairRegex = /;\s*([^=]+)=([^;\r\n]+)/g;
-
- pairRegex.lastIndex = multipartRegex.lastIndex;
- while ((match = pairRegex.exec(contentType)) !== null) {
- let key = match[1]
- let value = match[2];
-
- if (dict === null) {
- dict = {};
- }
- dict[key] = value;
- }
- }
-
- return dict;
-}
-
-function parseContentHeader(data, offset) {
- const endOfHeader = data.indexOf('\r\n\r\n', offset);
-
- if (endOfHeader < 0 || endOfHeader <= offset || endOfHeader > data.length) {
- throw new Error('End of content header cannot be determined...');
- }
-
- const header = {
- start: offset,
- end: endOfHeader + 4,
- fields: {}
- };
- const headerRegex = /([\w\-]+):\s*([^\r\n]+)(?:\r\n)?/g;
- const headerContentRegex = /\t([^\r\n]+)(?:\r\n)?/g;
- const headerString = data.slice(offset, endOfHeader);
-
- let match;
-
- while ((match = headerRegex.exec(headerString)) !== null) {
- const key = match[1].toLowerCase(), value = match[2];
-
- while (headerString.charAt(headerRegex.lastIndex) === '\t') {
- headerContentRegex.lastIndex = headerRegex.lastIndex;
-
- if ((match = headerContentRegex.exec(headerString)) !== null) {
- headerRegex.lastIndex = headerContentRegex.lastIndex;
- value += ' ' + match[1];
- continue;
- }
-
- break;
- }
- header.fields[key] = value;
- }
-
- return header;
-
-}
-
-function toBytes(input) {
- const data = [];
- for (let i = 0; i < input.length; i++){
- data.push(input.charCodeAt(i));
- }
-
- return data;
-}
-
-
-function parseResponse(headers, data) {
- const contentInfo = getMultipartContentInfo(headers);
-
- if (!contentInfo || !contentInfo.boundary) {
- throw new Error('Content boundary not specified...');
- }
-
- const boundary = contentInfo.boundary;
- const delimiter = '--' + boundary + '\r\n';
- let index = data.indexOf(delimiter, 0, ASCII);
-
- if (index < 0) {
- throw new Error('DICOMWeb: The specified boundary could not be found...');
- }
-
- let closingIndex
- let closingDelimiter = '\r\n--' + boundary + '--';
-
- index += delimiter.length;
- if (data[index] !== 0x0D || data[index + 1] !== 0x0A) {
- // multipart content headers are present, so let's parse them...
- let contentHeader = parseContentHeader(data, index);
- if (contentHeader && contentHeader.end > index) {
- if (contentHeader.fields['content-length'] > 0) {
- let endOfData = contentHeader.end + parseInt(contentHeader.fields['content-length'], 10);
- if (endOfData === data.indexOf(closingDelimiter, endOfData)) {
- // content-length is valid...
- return data.slice(contentHeader.end, endOfData);
- }
- }
- index = contentHeader.end;
- }
- } else {
- // no headers, the content comes right after...
- index += 2;
- }
-
- closingIndex = data.indexOf(closingDelimiter, index);
- if (closingIndex < 0 || closingIndex < index) {
- throw new Error('DICOMWeb: The end of the content could not be determined...')
- }
-
- return toBytes(data.slice(index, closingIndex));
-}
-
-const getBulkData = async function(url, options = {}) {
- options.headers = options.headers || {};
- options.headers.Accept = 'multipart/related; type=application/octet-stream';
-
- const response = await get(url, options);
- const data = await response.text();
-
- return parseResponse(response.headers, data);
-}
-
-export default getBulkData;
diff --git a/Packages/ohif-dicomweb-client/src/getJSON.js b/Packages/ohif-dicomweb-client/src/getJSON.js
deleted file mode 100644
index 69480f0ba..000000000
--- a/Packages/ohif-dicomweb-client/src/getJSON.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import get from './get.js';
-import getAttribute from "./getAttribute";
-
-const getJSON = async function (url, options) {
- options.headers = options.headers || {};
- options.headers.Accept = 'application/json';
- return get(url, options).then(response => {
- if (!(response instanceof Response)) {
- return '';
- }
-
- return response.json();
- });
-};
-
-export default getJSON;
diff --git a/Packages/ohif-dicomweb-client/src/makeRequest.js b/Packages/ohif-dicomweb-client/src/makeRequest.js
deleted file mode 100644
index dd367ff1d..000000000
--- a/Packages/ohif-dicomweb-client/src/makeRequest.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import { Meteor } from "meteor/meteor";
-import URL from 'url-parse';
-import 'isomorphic-fetch';
-import { btoa } from 'isomorphic-base64';
-import getAccessToken from './getAccessToken.js';
-
-async function makeRequest(url, options) {
- const parsed = new URL(url);
-
- let requestOpt = {
- method: 'GET',
- headers: {}
- };
-
- const accessToken = getAccessToken();
- if (accessToken) {
- requestOpt.headers = {
- Authorization: `Bearer ${accessToken}`
- };
- } else if (options.auth) {
- requestOpt.headers = {
- Authorization: `Basic ${btoa(options.auth)}`
- };
- }
-
- if (options.headers) {
- Object.keys(options.headers).forEach(key => {
- requestOpt.headers[key] = options.headers[key];
- });
- }
-
- if(options.method) {
- requestOpt.method = options.method;
- }
-
- if (options.method === 'POST' && options.body) {
- requestOpt.body = options.body;
- }
-
- return new Promise((resolve, reject) => {
- // TODO: Kept getting weird build errors from RegExp
- const isAbsolute = parsed.href.indexOf('http://') === 0 || parsed.href.indexOf('https://') === 0;
-
- let url = parsed.href;
-
- if (isAbsolute === false) {
- url = Meteor.absoluteUrl(parsed.href);
- }
-
- fetch(url, requestOpt).then((response) => {
- if (response.status >= 400) {
- reject(new Error(response.status));
- }
-
- if (response.status === 204) {
- resolve([]);
- } else {
- // TODO: Handle 204 no content
- resolve(response);
- }
- }, (error) => {
- console.error('There was an error in the DICOMWeb Server');
-
- reject(new Error(error));
- });
- });
-}
-
-export default makeRequest;
diff --git a/Packages/validatejs/load.js b/Packages/ohif-hanging-protocols/client/lib/validate.js
old mode 100755
new mode 100644
similarity index 62%
rename from Packages/validatejs/load.js
rename to Packages/ohif-hanging-protocols/client/lib/validate.js
index 0f76e71d2..b92607f4b
--- a/Packages/validatejs/load.js
+++ b/Packages/ohif-hanging-protocols/client/lib/validate.js
@@ -1,39 +1,39 @@
-import {validate as v} from './lib/validate.js';
-
-v.validators.equals = function(value, options, key, attributes) {
- if (options && value !== options.value) {
- return key + 'must equal ' + options.value;
- }
-};
-
-v.validators.doesNotEqual = function(value, options, key) {
- if (options && value === options.value) {
- return key + 'cannot equal ' + options.value;
- }
-};
-
-v.validators.contains = function(value, options, key) {
- if (options && value.indexOf && value.indexOf(options.value) === -1) {
- return key + 'must contain ' + options.value;
- }
-};
-
-v.validators.doesNotContain = function(value, options, key) {
- if (options && value.indexOf && value.indexOf(options.value) !== -1) {
- return key + 'cannot contain ' + options.value;
- }
-};
-
-v.validators.startsWith = function(value, options, key) {
- if (options && value.startsWith && !value.startsWith(options.value)) {
- return key + 'must start with ' + options.value;
- }
-};
-
-v.validators.endsWith = function(value, options, key) {
- if (options && value.endsWith && !value.endsWith(options.value)) {
- return key + 'must end with ' + options.value;
- }
-};
-
-validate = v;
\ No newline at end of file
+import { validate } from 'validate.js';
+
+validate.validators.equals = function(value, options, key, attributes) {
+ if (options && value !== options.value) {
+ return key + 'must equal ' + options.value;
+ }
+};
+
+validate.validators.doesNotEqual = function(value, options, key) {
+ if (options && value === options.value) {
+ return key + 'cannot equal ' + options.value;
+ }
+};
+
+validate.validators.contains = function(value, options, key) {
+ if (options && value.indexOf && value.indexOf(options.value) === -1) {
+ return key + 'must contain ' + options.value;
+ }
+};
+
+validate.validators.doesNotContain = function(value, options, key) {
+ if (options && value.indexOf && value.indexOf(options.value) !== -1) {
+ return key + 'cannot contain ' + options.value;
+ }
+};
+
+validate.validators.startsWith = function(value, options, key) {
+ if (options && value.startsWith && !value.startsWith(options.value)) {
+ return key + 'must start with ' + options.value;
+ }
+};
+
+validate.validators.endsWith = function(value, options, key) {
+ if (options && value.endsWith && !value.endsWith(options.value)) {
+ return key + 'must end with ' + options.value;
+ }
+};
+
+export { validate };
diff --git a/Packages/ohif-hanging-protocols/client/matcher/HPMatcher.js b/Packages/ohif-hanging-protocols/client/matcher/HPMatcher.js
index c6ca73698..4ce67bde7 100644
--- a/Packages/ohif-hanging-protocols/client/matcher/HPMatcher.js
+++ b/Packages/ohif-hanging-protocols/client/matcher/HPMatcher.js
@@ -2,6 +2,7 @@
import { Viewerbase } from 'meteor/ohif:viewerbase';
// Local imports
+import { validate } from '../lib/validate.js';
import '../customAttributes';
/**
@@ -102,7 +103,8 @@ const match = (metadataInstance, rules) => {
return {
score,
- details
+ details,
+ requiredFailed
};
};
diff --git a/Packages/ohif-hanging-protocols/client/protocolEngine.js b/Packages/ohif-hanging-protocols/client/protocolEngine.js
index a652c8824..a6f962ede 100644
--- a/Packages/ohif-hanging-protocols/client/protocolEngine.js
+++ b/Packages/ohif-hanging-protocols/client/protocolEngine.js
@@ -274,8 +274,6 @@ HP.ProtocolEngine = class ProtocolEngine {
let highestStudyMatchingScore = 0;
let highestSeriesMatchingScore = 0;
- let highestImageMatchingScore = 0;
- let bestMatch;
// Set custom attribute for study metadata and it's first instance
currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);
@@ -349,8 +347,9 @@ HP.ProtocolEngine = class ProtocolEngine {
this.studies.forEach(study => {
const studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules);
- if ((studyMatchingRules.length && !studyMatchDetails.score) ||
- studyMatchDetails.score < highestStudyMatchingScore) {
+
+ // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed
+ if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {
return;
}
@@ -358,8 +357,9 @@ HP.ProtocolEngine = class ProtocolEngine {
study.forEachSeries(series => {
const seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules);
- if ((seriesMatchingRules.length && !seriesMatchDetails.score) ||
- seriesMatchDetails.score < highestSeriesMatchingScore) {
+
+ // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed
+ if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {
return;
}
@@ -377,6 +377,11 @@ HP.ProtocolEngine = class ProtocolEngine {
const instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules);
+ // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed
+ if (instanceMatchDetails.requiredFailed === true) {
+ return;
+ }
+
const matchDetails = {
passed: [],
failed: []
@@ -417,11 +422,6 @@ HP.ProtocolEngine = class ProtocolEngine {
imageDetails.imageId = instance.getImageId();
}
- if ((totalMatchScore > highestImageMatchingScore) || !bestMatch) {
- highestImageMatchingScore = totalMatchScore;
- bestMatch = imageDetails;
- }
-
matchingScores.push(imageDetails);
});
});
@@ -441,6 +441,8 @@ HP.ProtocolEngine = class ProtocolEngine {
});
matchingScores.sort((a, b) => sortingFunction(a.sortingInfo, b.sortingInfo));
+ const bestMatch = matchingScores[0];
+
OHIF.log.info('ProtocolEngine::matchImages bestMatch', bestMatch);
return {
diff --git a/Packages/ohif-hanging-protocols/package.js b/Packages/ohif-hanging-protocols/package.js
index ec63f33c9..887e01e9b 100755
--- a/Packages/ohif-hanging-protocols/package.js
+++ b/Packages/ohif-hanging-protocols/package.js
@@ -4,8 +4,12 @@ Package.describe({
version: '0.0.1'
});
+Npm.depends({
+ 'validate.js': '0.9.0'
+});
+
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
@@ -16,7 +20,6 @@ Package.onUse(function(api) {
api.use('natestrauser:select2@4.0.1', 'client');
api.use('clinical:router@2.0.19');
api.use('momentjs:moment');
- api.use('validatejs');
// Our custom packages
api.use('ohif:core');
diff --git a/Packages/ohif-header/package.js b/Packages/ohif-header/package.js
index 640b5c340..bc67eae33 100644
--- a/Packages/ohif-header/package.js
+++ b/Packages/ohif-header/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4.2.3');
+ api.versionsFrom('1.7');
// Meteor packages
api.use('ecmascript');
diff --git a/Packages/ohif-hotkeys/client/classes/HotkeysManager.js b/Packages/ohif-hotkeys/client/classes/HotkeysManager.js
index f684aa392..078060bed 100644
--- a/Packages/ohif-hotkeys/client/classes/HotkeysManager.js
+++ b/Packages/ohif-hotkeys/client/classes/HotkeysManager.js
@@ -36,7 +36,7 @@ export class HotkeysManager {
return new Promise((resolve, reject) => {
if (this.storeFunction) {
this.storeFunction.call(this, storageKey, definitions).then(resolve).catch(reject);
- } else if (Meteor.userId()) {
+ } else if (OHIF.user.userLoggedIn()) {
OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);
} else {
Session.setPersistent(storageKey, definitions);
@@ -50,7 +50,7 @@ export class HotkeysManager {
return new Promise((resolve, reject) => {
if (this.retrieveFunction) {
this.retrieveFunction(contextName).then(resolve).catch(reject);
- } else if (OHIF.user) {
+ } else if (OHIF.user.userLoggedIn()) {
try {
resolve(OHIF.user.getData(storageKey));
} catch(error) {
diff --git a/Packages/ohif-hotkeys/client/components/confirmReplacementPopover.html b/Packages/ohif-hotkeys/client/components/confirmReplacementPopover.html
index 90a8e2db9..2f47094bf 100644
--- a/Packages/ohif-hotkeys/client/components/confirmReplacementPopover.html
+++ b/Packages/ohif-hotkeys/client/components/confirmReplacementPopover.html
@@ -1,6 +1,6 @@
{{#popoverForm (extend this confirmLabel='Yes' cancelLabel='No' confirmClass='btn-danger')}}
{{this.conflictedFunctionName}} is already using the {{this.hotkeyCombination}} shortcut.
- Do you want to use the shortcut to the {{this.newFunctionName}} function instead?
+ Do you want to use the shortcut for the {{this.newFunctionName}} function instead?
{{/popoverForm}}
diff --git a/Packages/ohif-hotkeys/client/index.js b/Packages/ohif-hotkeys/client/index.js
index a3b6ff5b9..758f32245 100644
--- a/Packages/ohif-hotkeys/client/index.js
+++ b/Packages/ohif-hotkeys/client/index.js
@@ -1,2 +1 @@
import './components';
-import './lib';
diff --git a/Packages/ohif-hotkeys/client/lib/index.js b/Packages/ohif-hotkeys/client/lib/index.js
deleted file mode 100644
index 86c73e446..000000000
--- a/Packages/ohif-hotkeys/client/lib/index.js
+++ /dev/null
@@ -1 +0,0 @@
-import './routes';
diff --git a/Packages/ohif-hotkeys/client/lib/routes.js b/Packages/ohif-hotkeys/client/lib/routes.js
deleted file mode 100644
index b434438e9..000000000
--- a/Packages/ohif-hotkeys/client/lib/routes.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Router } from 'meteor/clinical:router';
-import { Session } from 'meteor/session';
-import { hotkeys } from 'meteor/ohif:hotkeys';
-
-Router.onBeforeAction(function() {
- const lastRoute = Session.get('lastRoute');
- const currentRoute = this.router.current().route.getName();
- if (currentRoute !== lastRoute) {
- hotkeys.switchToContext(null);
- Session.set('lastRoute', currentRoute);
- }
-
- this.next();
-});
diff --git a/Packages/ohif-hotkeys/package.js b/Packages/ohif-hotkeys/package.js
index 933549260..3d3949651 100644
--- a/Packages/ohif-hotkeys/package.js
+++ b/Packages/ohif-hotkeys/package.js
@@ -9,7 +9,7 @@ Npm.depends({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
// Meteor packages
api.use([
diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/calculateLongestAndShortestDiameters.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/calculateLongestAndShortestDiameters.js
new file mode 100644
index 000000000..db7ca9b6d
--- /dev/null
+++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/calculateLongestAndShortestDiameters.js
@@ -0,0 +1,32 @@
+// Calculate the longest and shortest diameters for the given measurementData
+export default function(eventData, measurementData) {
+ const { rowPixelSpacing, columnPixelSpacing } = eventData.image;
+ const { start, end, perpendicularStart, perpendicularEnd } = measurementData.handles;
+
+ // updatePerpendicularLineHandles(eventData, measurementData);
+
+ // Calculate the long axis length
+ const dx = (start.x - end.x) * (columnPixelSpacing || 1);
+ const dy = (start.y - end.y) * (rowPixelSpacing || 1);
+ let length = Math.sqrt(dx * dx + dy * dy);
+
+ // Calculate the short axis length
+ const wx = (perpendicularStart.x - perpendicularEnd.x) * (columnPixelSpacing || 1);
+ const wy = (perpendicularStart.y - perpendicularEnd.y) * (rowPixelSpacing || 1);
+ let width = Math.sqrt(wx * wx + wy * wy);
+ if (!width) {
+ width = 0;
+ }
+
+ // Length is always longer than width
+ if (width > length) {
+ const tempW = width;
+ const tempL = length;
+ length = tempW;
+ width = tempL;
+ }
+
+ // Set measurement text to show lesion table
+ measurementData.longestDiameter = length.toFixed(1);
+ measurementData.shortestDiameter = width.toFixed(1);
+}
diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/invertHandles.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/invertHandles.js
new file mode 100644
index 000000000..8405a9c09
--- /dev/null
+++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/invertHandles.js
@@ -0,0 +1,42 @@
+const swapAttribute = (a, b, attribute) => {
+ const originalA = a[attribute];
+ const originalB = b[attribute];
+ a[attribute] = originalB;
+ b[attribute] = originalA;
+};
+
+const swapHandles = (a, b) => {
+ swapAttribute(a, b, 'x');
+ swapAttribute(a, b, 'y');
+ swapAttribute(a, b, 'moving');
+ swapAttribute(a, b, 'hover');
+ swapAttribute(a, b, 'active');
+ swapAttribute(a, b, 'selected');
+};
+
+function invertHandles(eventData, measurementData, handle) {
+ const { rowPixelSpacing, columnPixelSpacing } = eventData.image;
+ const { handles } = measurementData;
+ const { start, end, perpendicularStart, perpendicularEnd } = handles;
+
+ // Calculate the long axis length
+ const dx = (start.x - end.x) * (columnPixelSpacing || 1);
+ const dy = (start.y - end.y) * (rowPixelSpacing || 1);
+ const length = Math.sqrt(dx * dx + dy * dy);
+
+ // Calculate the short axis length
+ const wx = (perpendicularStart.x - perpendicularEnd.x) * (columnPixelSpacing || 1);
+ const wy = (perpendicularStart.y - perpendicularEnd.y) * (rowPixelSpacing || 1);
+ const width = Math.sqrt(wx * wx + wy * wy) || 0;
+
+ if (width > length) {
+ swapHandles(start, end);
+ swapHandles(start, perpendicularStart);
+ swapHandles(end, perpendicularEnd);
+ return Object.values(handles).find(h => h.moving === true);
+ }
+
+ return handle;
+}
+
+export default invertHandles;
diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/mouseDownCallback.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/mouseDownCallback.js
index 6bff924d0..f762cb54c 100644
--- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/mouseDownCallback.js
+++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/mouseDownCallback.js
@@ -5,6 +5,7 @@ import { toolType, distanceThreshold } from './definitions';
import mouseMoveCallback from './mouseMoveCallback';
import pointNearTool from './pointNearTool';
import moveHandle from './moveHandle';
+import invertHandles from './invertHandles';
// Clear the selected state for the given handles object
const unselectAllHandles = handles => {
@@ -88,9 +89,14 @@ export default function(event) {
for (let i = 0; i < toolData.data.length; i++) {
data = toolData.data[i];
const handleParams = [element, data.handles, coords, distanceThreshold];
- const handle = cornerstoneTools.getHandleNearImagePoint(...handleParams);
+ let handle = cornerstoneTools.getHandleNearImagePoint(...handleParams);
if (handle) {
+ handle.moving = true;
+
+ // Invert handles if needed
+ handle = invertHandles(eventData, data, handle);
+
// Hide the cursor to improve precision while resizing the line or set to move
// if dragging text box
$element.css('cursor', handle.hasBoundingBox ? 'move' : 'none');
@@ -99,7 +105,6 @@ export default function(event) {
data.active = true;
unselectAllHandles(data.handles);
- handle.moving = true;
moveHandle(eventData, toolType, data, handle, () => handleDoneMove(handle));
event.stopImmediatePropagation();
event.stopPropagation();
diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/moveHandle/moveHandle.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/moveHandle/moveHandle.js
index a1bd5d4e4..f53a1aade 100644
--- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/moveHandle/moveHandle.js
+++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/moveHandle/moveHandle.js
@@ -1,5 +1,6 @@
import { cornerstone } from 'meteor/ohif:cornerstone';
import setHandlesPosition from './setHandlesPosition';
+import calculateLongestAndShortestDiameters from '../calculateLongestAndShortestDiameters';
export default function (mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) {
const element = mouseEventData.element;
@@ -29,14 +30,23 @@ export default function (mouseEventData, toolType, data, handle, doneMovingCallb
cornerstone.updateImage(element);
- const eventType = 'cornerstonetoolsmeasurementmodified';
- const modifiedEventData = {
- toolType,
- element,
- measurementData: data
+ const measurementModifiedHandler = () => {
+ const eventType = 'cornerstonetoolsmeasurementmodified';
+ const modifiedEventData = {
+ toolType,
+ element,
+ measurementData: data
+ };
+
+ calculateLongestAndShortestDiameters(mouseEventData, data);
+
+ cornerstone.triggerEvent(element, eventType, modifiedEventData);
+
+ element.removeEventListener('cornerstoneimagerendered', measurementModifiedHandler);
};
- cornerstone.triggerEvent(element, eventType, modifiedEventData);
+ // Wait on image render before triggering the modified event
+ element.addEventListener('cornerstoneimagerendered', measurementModifiedHandler);
};
element.addEventListener('cornerstonetoolsmousedrag', mouseDragCallback);
diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/onImageRendered/onImageRendered.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/onImageRendered/onImageRendered.js
index 1f8b4b94b..2101eefd2 100644
--- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/onImageRendered/onImageRendered.js
+++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool/onImageRendered/onImageRendered.js
@@ -2,11 +2,12 @@ import { cornerstone, cornerstoneMath, cornerstoneTools } from 'meteor/ohif:corn
import { OHIF } from 'meteor/ohif:core';
import { toolType } from '../definitions';
import drawHandles from './drawHandles';
+import calculateLongestAndShortestDiameters from '../calculateLongestAndShortestDiameters';
import updatePerpendicularLineHandles from '../updatePerpendicularLineHandles';
import drawPerpendicularLine from './drawPerpendicularLine';
import drawSelectedMarker from './drawSelectedMarker';
-export default function(event) {
+export default function onImageRendered(event) {
const eventData = event.detail;
const { element, canvasContext } = eventData;
@@ -41,9 +42,7 @@ export default function(event) {
for (let i = 0; i < toolData.data.length; i++) {
const data = toolData.data[i];
- if (data.visible === false) {
- continue;
- }
+ if (data.visible === false) continue;
const { start, end, perpendicularStart, perpendicularEnd, textBox } = data.handles;
const strokeWidth = lineWidth;
@@ -65,10 +64,16 @@ export default function(event) {
color = cornerstoneTools.toolColors.getToolColor();
}
- // draw the line
- const handleStartCanvas = cornerstone.pixelToCanvas(element, start);
- const handleEndCanvas = cornerstone.pixelToCanvas(element, end);
- const canvasTextLocation = cornerstone.pixelToCanvas(element, textBox);
+ // Update the perpendicular handles to draw it correctly
+ updatePerpendicularLineHandles(eventData, data);
+
+ // Draw the line
+ const { pixelToCanvas } = cornerstone;
+ const handleStartCanvas = pixelToCanvas(element, start);
+ const handleEndCanvas = pixelToCanvas(element, end);
+ const handlePerpendicularStartCanvas = pixelToCanvas(element, perpendicularStart);
+ const handlePerpendicularEndCanvas = pixelToCanvas(element, perpendicularEnd);
+ const canvasTextLocation = pixelToCanvas(element, textBox);
context.beginPath();
context.strokeStyle = color;
@@ -78,7 +83,6 @@ export default function(event) {
context.stroke();
// Draw perpendicular line
- updatePerpendicularLineHandles(eventData, data);
drawPerpendicularLine(context, element, data, color, strokeWidth);
// Draw the handles
@@ -88,26 +92,8 @@ export default function(event) {
// Draw the selected marker
drawSelectedMarker(eventData, data.handles, '#FF9999');
- // Calculate the long axis length
- const dx = (start.x - end.x) * (colPixelSpacing || 1);
- const dy = (start.y - end.y) * (rowPixelSpacing || 1);
- let length = Math.sqrt(dx * dx + dy * dy);
-
- // Calculate the short axis length
- const wx = (perpendicularStart.x - perpendicularEnd.x) * (colPixelSpacing || 1);
- const wy = (perpendicularStart.y - perpendicularEnd.y) * (rowPixelSpacing || 1);
- let width = Math.sqrt(wx * wx + wy * wy);
- if (!width) {
- width = 0;
- }
-
- // Length is always longer than width
- if (width > length) {
- const tempW = width;
- const tempL = length;
- length = tempW;
- width = tempL;
- }
+ // Calculate the longest and shortest diameters, storing it in the respective attributes
+ calculateLongestAndShortestDiameters(eventData, data);
if (data.measurementNumber) {
// Draw the textbox
@@ -116,9 +102,14 @@ export default function(event) {
suffix = ' pixels';
}
- const lengthText = ' L ' + length.toFixed(1) + suffix;
- const widthText = ' W ' + width.toFixed(1) + suffix;
- const textLines = [`Target ${data.measurementNumber}`, lengthText, widthText];
+ const lengthText = ' L ' + data.longestDiameter + suffix;
+ const widthText = ' W ' + data.shortestDiameter + suffix;
+ let textLines = [`Target ${data.measurementNumber}`, lengthText, widthText];
+
+ // Append extra text lines when applies
+ if (data.additionalData && Array.isArray(data.additionalData.extraTextLines)) {
+ textLines = textLines.concat(data.additionalData.extraTextLines);
+ }
const boundingBox = cornerstoneTools.drawTextBox(
context,
@@ -139,12 +130,39 @@ export default function(event) {
end: {}
};
- const midpointCanvas = {
- x: (handleStartCanvas.x + handleEndCanvas.x) / 2,
- y: (handleStartCanvas.y + handleEndCanvas.y) / 2,
+ const longLine = {
+ start: handleStartCanvas,
+ end: handleEndCanvas
};
- const points = [ handleStartCanvas, handleEndCanvas, midpointCanvas ];
+ const perpendicularLine = {
+ start: handlePerpendicularStartCanvas,
+ end: handlePerpendicularEndCanvas
+ };
+
+ // Check if the perpendicular line has some length (start and end are not equal)
+ // Note: this check is needed to prevent NaN value on the intersection result
+ const { distance } = cornerstoneMath.point;
+ const lineHasLength = distance(perpendicularLine.start, perpendicularLine.end) > 0;
+
+ // Define the lines intersection point
+ let linesIntersection;
+ if (lineHasLength) {
+ // As the line has length, define it as the intersection between the lines
+ const { intersectLine } = cornerstoneMath.lineSegment;
+ linesIntersection = intersectLine(longLine, perpendicularLine);
+ } else {
+ // As the line has no length, the tool is in its start position
+ linesIntersection = longLine.start;
+ }
+
+ const points = [
+ handleStartCanvas,
+ handleEndCanvas,
+ handlePerpendicularStartCanvas,
+ handlePerpendicularEndCanvas,
+ linesIntersection
+ ];
link.end.x = canvasTextLocation.x;
link.end.y = canvasTextLocation.y;
@@ -181,10 +199,6 @@ export default function(event) {
context.stroke();
}
- // Set measurement text to show lesion table
- data.longestDiameter = length.toFixed(1);
- data.shortestDiameter = width.toFixed(1);
-
context.restore();
}
-}
+}
\ No newline at end of file
diff --git a/Packages/ohif-lesiontracker/client/components/longitudinal/longitudinalViewportOverlay/longitudinalViewportOverlay.js b/Packages/ohif-lesiontracker/client/components/longitudinal/longitudinalViewportOverlay/longitudinalViewportOverlay.js
index e3a0dab44..fb093038b 100644
--- a/Packages/ohif-lesiontracker/client/components/longitudinal/longitudinalViewportOverlay/longitudinalViewportOverlay.js
+++ b/Packages/ohif-lesiontracker/client/components/longitudinal/longitudinalViewportOverlay/longitudinalViewportOverlay.js
@@ -35,7 +35,13 @@ Template[defaultTemplate].onRendered(() => {
if (computation.firstRun) return;
computation.stop();
const imageIndex = instance.getImageIndex();
- OHIF.studies.loadStudy(studyInstanceUid).then(studyMetadata => {
+
+ if (!studyInstanceUid || !seriesInstanceUid) {
+ return;
+ }
+
+ OHIF.studies.loadStudy(studyInstanceUid).then(study => {
+ const studyMetadata = OHIF.viewerbase.getStudyMetadata(study);
const seriesMetadata = studyMetadata.getSeriesByUID(seriesInstanceUid);
const instanceMetadata = seriesMetadata.getInstanceByIndex(imageIndex);
if (!instanceMetadata) return;
diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/item.js b/Packages/ohif-lesiontracker/client/components/timepointBrowser/item.js
index a004c3eef..4ed7a2c8c 100644
--- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/item.js
+++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/item.js
@@ -62,7 +62,7 @@ Template.timepointBrowserItem.onCreated(() => {
});
Template.timepointBrowserItem.events({
- 'ohif.lesiontracker.timepoint.load .timepoint-item'(event, instance) {
+ 'ohif.measurements.timepoint.load .timepoint-item'(event, instance) {
instance.loadStudies();
},
@@ -71,7 +71,7 @@ Template.timepointBrowserItem.events({
const $element = $(element);
const triggerClick = () => {
- $element.trigger('ohif.lesiontracker.timepoint.click', instance.data.timepoint);
+ $element.trigger('ohif.measurements.timepoint.click', instance.data.timepoint);
};
if (!instance.studiesData.get()) {
diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js
index e562e423d..905845dad 100644
--- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js
+++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js
@@ -72,7 +72,7 @@ Template.timepointBrowserQuickSwitch.onRendered(() => {
});
Template.timepointBrowserQuickSwitch.events({
- 'ohif.lesiontracker.timepoint.click'(event, instance) {
+ 'ohif.measurements.timepoint.click'(event, instance) {
const $element = $(event.currentTarget);
$element.toggleClass('active');
instance.updateActiveStudy();
diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/sidebar.js b/Packages/ohif-lesiontracker/client/components/timepointBrowser/sidebar.js
index a71c11cd9..dac2222bc 100644
--- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/sidebar.js
+++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/sidebar.js
@@ -19,7 +19,7 @@ Template.timepointBrowserSidebar.onRendered(() => {
// Runs this computation every time the timepointViewType is changed
const type = instance.timepointViewType.get();
if (type !== instance.lastType) {
- const eventKey = 'ohif.lesiontracker.timepoint.changeViewType';
+ const eventKey = 'ohif.measurements.timepoint.changeViewType';
instance.$browserList.trigger(eventKey, type);
}
@@ -49,7 +49,7 @@ Template.timepointBrowserSidebar.events({
});
},
- 'ohif.lesiontracker.timepoint.click'(event, instance) {
+ 'ohif.measurements.timepoint.click'(event, instance) {
const $element = $(event.currentTarget);
// Defer the active class toggling to wait for child template rendering
diff --git a/Packages/ohif-lesiontracker/package.js b/Packages/ohif-lesiontracker/package.js
index 2e9a302d1..8e63f1572 100644
--- a/Packages/ohif-lesiontracker/package.js
+++ b/Packages/ohif-lesiontracker/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
@@ -13,8 +13,6 @@ Package.onUse(function(api) {
api.use('stylus');
api.use('random');
- api.use('validatejs');
-
// Template overriding
api.use('aldeed:template-extension@4.0.0');
diff --git a/Packages/ohif-log/package.js b/Packages/ohif-log/package.js
index 8c319c55b..4ba86b763 100644
--- a/Packages/ohif-log/package.js
+++ b/Packages/ohif-log/package.js
@@ -9,7 +9,7 @@ Npm.depends({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
diff --git a/Packages/ohif-measurement-table/client/configuration/dataExchange.js b/Packages/ohif-measurement-table/client/configuration/dataExchange.js
index 2a9ce7a9f..9bcc1b880 100644
--- a/Packages/ohif-measurement-table/client/configuration/dataExchange.js
+++ b/Packages/ohif-measurement-table/client/configuration/dataExchange.js
@@ -9,16 +9,12 @@ export const retrieveMeasurements = (patientId, timepointIds) => {
if(!latestSeries) return Promise.resolve({});
- return retrieveMeasurementFromSR(latestSeries).then((value) => {
- return {
- length: value
- }
- });
+ return retrieveMeasurementFromSR(latestSeries);
};
export const storeMeasurements = (measurementData, timepointIds) => {
OHIF.log.info('storeMeasurements');
-
+
const server = OHIF.servers.getCurrentServer();
if (!server || server.type !== 'dicomWeb') {
return Promise.resolve({});
@@ -28,6 +24,8 @@ export const storeMeasurements = (measurementData, timepointIds) => {
return stowSRFromMeasurements(measurementData).then( () => {
OHIF.studies.deleteStudyMetadataPromise(studyInstanceUid);
+ }, error => {
+ throw new Error(error);
});
};
diff --git a/Packages/ohif-measurement-table/client/utils/getLengthMeasurementData.js b/Packages/ohif-measurement-table/client/utils/getLengthMeasurementData.js
deleted file mode 100644
index a571b577c..000000000
--- a/Packages/ohif-measurement-table/client/utils/getLengthMeasurementData.js
+++ /dev/null
@@ -1,77 +0,0 @@
-import { OHIF } from 'meteor/ohif:core';
-import { cornerstone } from 'meteor/ohif:cornerstone';
-import { getInstanceMetadata } from './srUtils';
-
-export default getLengthMeasurementData = (lengthMeasurementContent, displaySets) => {
- let lengthStates = [];
-
- lengthMeasurementContent.forEach(groupItemContent => {
- const lengthContent = groupItemContent.ContentSequence;
- const reference = lengthContent.ContentSequence.ReferencedSOPSequence;
- const lengthState = {};
-
- lengthState.measuredValue = groupItemContent.MeasuredValueSequence.NumericValue;
- lengthState.handles = {start: {}, end: {}};
- [lengthState.handles.start.x,
- lengthState.handles.start.y,
- lengthState.handles.end.x,
- lengthState.handles.end.y] = lengthContent.GraphicData;
-
- // TODO: Save textbox position in GraphicData?
- lengthState.handles.textBox = {
- hasMoved: false,
- movesIndependently: false,
- drawnIndependently: true,
- allowedOutsideImage: true,
- hasBoundingBox: true
- }
-
- lengthState.ReferencedInstanceUID = reference.ReferencedSOPInstanceUID;
- if (reference.ReferencedFrameNumber && reference.ReferencedFrameNumber !== 'NaN') {
- lengthState.ReferencedFrameNumber = reference.ReferencedFrameNumber;
- } else {
- lengthState.ReferencedFrameNumber = 0;
- }
-
- lengthStates.push(lengthState);
- });
-
- const lengthMeasurementData = [];
-
- let measurementNumber = 0;
- lengthStates.forEach(lengthState => {
- const sopInstanceUid = lengthState.ReferencedInstanceUID;
- const instanceMetadata = getInstanceMetadata(displaySets, sopInstanceUid);
- const imageId = OHIF.viewerbase.getImageId(instanceMetadata);
- if (!imageId) {
- return;
- }
-
- const studyInstanceUid = cornerstone.metaData.get('study', imageId).studyInstanceUid;
- const seriesInstanceUid = cornerstone.metaData.get('series', imageId).seriesInstanceUid;
- const patientId = instanceMetadata._study.patientId;
- const frameIndex = lengthState.ReferencedFrameNumber;
- const imagePath = [studyInstanceUid, seriesInstanceUid, sopInstanceUid, frameIndex].join('_');
- const measurement = {
- handles: lengthState.handles,
- length: lengthState.measuredValue,
- imageId,
- imagePath,
- sopInstanceUid,
- seriesInstanceUid,
- studyInstanceUid,
- patientId,
- frameIndex,
- measurementNumber: ++measurementNumber,
- userId: 'UserID',
- timepointId: OHIF.viewer.data.currentTimepointId,
- toolType: 'length',
- _id: imageId + measurementNumber,
- };
-
- lengthMeasurementData.push(measurement);
- });
-
-
- return lengthMeasurementData;
-};
diff --git a/Packages/ohif-measurement-table/client/utils/getLengthMeasurementGroupContentItem.js b/Packages/ohif-measurement-table/client/utils/getLengthMeasurementGroupContentItem.js
deleted file mode 100644
index ff84a5e98..000000000
--- a/Packages/ohif-measurement-table/client/utils/getLengthMeasurementGroupContentItem.js
+++ /dev/null
@@ -1,79 +0,0 @@
-export default measurementGroupContentItem = (measurement, sopClassUid) => {
- const {
- handles,
- length,
- frameIndex,
- sopInstanceUid
- } = measurement;
- const measurementContentItem = [
- {
- RelationshipType: 'HAS OBS CONTEXT',
- ValueType: 'TEXT',
- ConceptNameCodeSequence: {
- CodeValue: '112039',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Tracking Identifier',
- },
- TextValue: 'web annotation',
- },
- {
- RelationshipType: 'HAS OBS CONTEXT',
- ValueType: 'UIDREF',
- ConceptNameCodeSequence: {
- CodeValue: '112040',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Tracking Unique Identifier',
- },
- UID: dcmjs.data.DicomMetaDictionary.uid(),
- },
- {
- RelationshipType: 'CONTAINS',
- ValueType: 'CODE',
- ConceptNameCodeSequence: {
- CodeValue: '121071',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Finding',
- },
- ConceptCodeSequence: {
- CodeValue: 'SAMPLEFINDING',
- CodingSchemeDesignator: '99dcmjs',
- CodeMeaning: 'Sample Finding',
- },
- },
- {
- RelationshipType: 'CONTAINS',
- ValueType: 'NUM',
- ConceptNameCodeSequence: {
- CodeValue: 'G-D7FE',
- CodingSchemeDesignator: 'SRT',
- CodeMeaning: 'Length',
- },
- MeasuredValueSequence: {
- MeasurementUnitsCodeSequence: {
- CodeValue: 'mm',
- CodingSchemeDesignator: 'UCUM',
- CodingSchemeVersion: '1.4',
- CodeMeaning: 'millimeter',
- },
- NumericValue: length,
- },
- ContentSequence: {
- RelationshipType: 'INFERRED FROM',
- ValueType: 'SCOORD',
- GraphicType: 'POLYLINE',
- GraphicData: [ handles.start.x, handles.start.y, handles.end.x, handles.end.y ],
- ContentSequence: {
- RelationshipType: 'SELECTED FROM',
- ValueType: 'IMAGE',
- ReferencedSOPSequence: {
- ReferencedSOPClassUID: sopClassUid,
- ReferencedSOPInstanceUID: sopInstanceUid,
- ReferencedFrameNumber: frameIndex,
- }
- },
- },
- },
- ];
-
- return measurementContentItem;
-};
\ No newline at end of file
diff --git a/Packages/ohif-measurement-table/client/utils/handleSR.js b/Packages/ohif-measurement-table/client/utils/handleSR.js
index a13165df1..9f9c7e2d9 100644
--- a/Packages/ohif-measurement-table/client/utils/handleSR.js
+++ b/Packages/ohif-measurement-table/client/utils/handleSR.js
@@ -1,60 +1,63 @@
import { dcmjs } from 'meteor/ohif:cornerstone';
import retrieveDataFromSR from './retrieveDataFromSR';
import retrieveDataFromMeasurements from './retrieveDataFromMeasurements';
-import {
- multipartEncode
-} from './srUtils';
+
+import DICOMwebClient from 'dicomweb-client';
const retrieveMeasurementFromSR = async (series) => {
- const instance = series.getFirstInstance();
- const options = {
- method: 'GET',
- responseType: 'arraybuffer',
- };
- const url = instance.getDataProperty('wadouri');
+ const server = OHIF.servers.getCurrentServer();
+ const url = WADOProxy.convertURL(server.wadoRoot, server);
- try {
- const result = await DICOMWeb.makeRequest(url, options);
- const data = await result.arrayBuffer();
- const measurementData = retrieveDataFromSR(data);
- return Promise.resolve(measurementData);
- } catch(error) {
- return Promise.reject(error);
- }
+ const config = {
+ url,
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
+
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+
+ const instance = series.getFirstInstance();
+ const options = {
+ studyInstanceUID: instance.getStudyInstanceUID(),
+ seriesInstanceUID: instance.getSeriesInstanceUID(),
+ sopInstanceUID: instance.getSOPInstanceUID(),
+ };
+
+ return dicomWeb.retrieveInstance(options).then(retrieveDataFromSR);
};
-/**
- * Retrieve the DICOMWeb STOW-RS URL for the current server.
- *
- * See ftp://medical.nema.org/medical/dicom/current/output/html/part18.html#sect_6.6.1.1
- *
- * @return {string|null} The URL, rerouted to the proxy if the WADOProxy is enabled.
- */
-function getStowRsUrl() {
- const server = OHIF.servers.getCurrentServer();
- const url = `${server.wadoRoot}/studies`;
-
- return WADOProxy.convertURL(url, server);
-}
-
const stowSRFromMeasurements = async (measurements) => {
- const serverUrl = getStowRsUrl();
- const reportDataset = retrieveDataFromMeasurements(measurements);
- const boundary = dcmjs.data.DicomMetaDictionary.uid();
- const options = {
- method: 'POST',
- body: multipartEncode(reportDataset, boundary),
- headers: {
- 'Content-Type': `multipart/related; type=application/dicom; boundary=${boundary}`
- }
+ const server = OHIF.servers.getCurrentServer();
+ const url = WADOProxy.convertURL(server.wadoRoot, server);
+ const dataset = retrieveDataFromMeasurements(measurements);
+ const { DicomMetaDictionary, DicomDict } = dcmjs.data;
+
+ const meta = {
+ FileMetaInformationVersion: dataset._meta.FileMetaInformationVersion.Value,
+ MediaStorageSOPClassUID: dataset.SOPClassUID,
+ MediaStorageSOPInstanceUID: dataset.SOPInstanceUID,
+ TransferSyntaxUID: "1.2.840.10008.1.2.1",
+ ImplementationClassUID: DicomMetaDictionary.uid(),
+ ImplementationVersionName: "dcmjs-0.0",
};
- try {
- await DICOMWeb.makeRequest(serverUrl, options);
- return Promise.resolve();
- } catch(error) {
- return Promise.reject(error);
- }
+ const denaturalized = DicomMetaDictionary.denaturalizeDataset(meta);
+ const dicomDict = new DicomDict(denaturalized);
+
+ dicomDict.dict = DicomMetaDictionary.denaturalizeDataset(dataset);
+
+ const part10Buffer = dicomDict.write();
+
+ const config = {
+ url,
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
+
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+ const options = {
+ datasets: [part10Buffer]
+ };
+
+ return dicomWeb.storeInstances(options);
};
export {
diff --git a/Packages/ohif-measurement-table/client/utils/retrieveDataFromMeasurements.js b/Packages/ohif-measurement-table/client/utils/retrieveDataFromMeasurements.js
index 94be65f46..8ec3061ee 100644
--- a/Packages/ohif-measurement-table/client/utils/retrieveDataFromMeasurements.js
+++ b/Packages/ohif-measurement-table/client/utils/retrieveDataFromMeasurements.js
@@ -1,199 +1,27 @@
+import { OHIF } from 'meteor/ohif:core';
import { dcmjs } from 'meteor/ohif:cornerstone';
-import { getInstanceMetadata, getAllDisplaySets } from './srUtils';
-import getLengthMeasurementGroupContentItem from './getLengthMeasurementGroupContentItem';
-
export default retrieveDataFromMeasurements = (measurements) => {
-
- const { studyInstanceUid, seriesInstanceUid, sopInstanceUid } = measurements.allTools[0];
-
- const displaySets = getAllDisplaySets();
- const instanceMetadata = getInstanceMetadata(displaySets, sopInstanceUid);
- const sopClassUid = instanceMetadata._data.sopClassUid;
-
- // TODO: figure out what is needed to make a dcmjs dataset from
- // information available in the viewer. Apparently the raw dicom is not available
- // directly.
- const derivationSourceDataset = {
- StudyInstanceUID: studyInstanceUid,
- SeriesInstanceUID: seriesInstanceUid,
- SOPInstanceUID: sopInstanceUid,
- SOPClassUID: sopClassUid
- };
- report = new dcmjs.derivations.StructuredReport([derivationSourceDataset]);
- dataset = report.dataset;
-
- // TODO: what is the correct metaheader
- // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html
- // TODO: move meta creation to dcmjs
- const fileMetaInformationVersionArray = new Uint16Array(1);
- fileMetaInformationVersionArray[0] = 1;
- dataset._meta = {
- FileMetaInformationVersion: fileMetaInformationVersionArray.buffer,
- MediaStorageSOPClassUID: dataset.SOPClassUID,
- MediaStorageSOPInstanceUID: dataset.SOPInstanceUID,
- TransferSyntaxUID: "1.2.840.10008.1.2.1", // Explicit little endian (always for dcmjs?)
- ImplementationClassUID: dcmjs.data.DicomMetaDictionary.uid(), // TODO: could be git hash or other valid id
- ImplementationVersionName: "OHIFViewer"
- };
-
- // TODO: factor out a lot of this back into dcmjs for use in both
- // the example and in the Viewer
- const measurementGroupContentSequence = [];
- for (measurement of measurements.allTools) {
- if (measurement.toolType === 'length') {
- measurementGroupContentSequence.push.apply(measurementGroupContentSequence, getLengthMeasurementGroupContentItem(measurement, sopClassUid));
- }
- }
-
- // TODO: make a TID1550 derivation as an SR subclass
- dataset = Object.assign(dataset, {
- ConceptNameCodeSequence: {
- CodeValue: '126000',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Imaging Measurement Report'
- },
- ContinuityOfContent: 'SEPARATE',
- PerformedProcedureCodeSequence: [],
- CompletionFlag: 'COMPLETE',
- VerificationFlag: 'UNVERIFIED',
- ReferencedPerformedProcedureStepSequence: [],
- InstanceNumber: 1,
- CurrentRequestedProcedureEvidenceSequence: {
- StudyInstanceUID: dataset.StudyInstanceUID,
- ReferencedSeriesSequence: {
- SeriesInstanceUID: dataset.SeriesInstanceUID,
- ReferencedSOPSequence: {
- ReferencedSOPClassUID: derivationSourceDataset.SOPClassUID,
- ReferencedSOPInstanceUID: derivationSourceDataset.SOPInstanceUID
- },
- },
- },
- CodingSchemeIdentificationSequence: {
- CodingSchemeDesignator: "99dcmjs",
- CodingSchemeName: "Codes used for dcmjs",
- CodingSchemeVersion: "0",
- CodingSchemeResponsibleOrganization: "https://github.com/pieper/dcmjs"
- },
- ContentTemplateSequence: {
- MappingResource: 'DCMR',
- TemplateIdentifier: '1500'
- },
- ContentSequence: [
- {
- RelationshipType: 'HAS CONCEPT MOD',
- ValueType: 'CODE',
- ConceptNameCodeSequence: {
- CodeValue: '121049',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Language of Content Item and Descendants',
- },
- ConceptCodeSequence: {
- CodeValue: 'eng',
- CodingSchemeDesignator: 'RFC3066',
- CodeMeaning: 'English',
- },
- ContentSequence: {
- RelationshipType: 'HAS CONCEPT MOD',
- ValueType: 'CODE',
- ConceptNameCodeSequence: {
- CodeValue: '121046',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Country of Language',
- },
- ConceptCodeSequence: {
- CodeValue: 'US',
- CodingSchemeDesignator: 'ISO3166_1',
- CodeMeaning: 'United States',
- }
- }
- },
- {
- RelationshipType: 'HAS OBS CONTEXT',
- ValueType: 'PNAME',
- ConceptNameCodeSequence: {
- CodeValue: '121008',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Person Observer Name',
- },
- PersonName: 'user^web' // TODO: these can be options argument for constructor
- },
- {
- RelationshipType: 'HAS OBS CONTEXT',
- ValueType: 'TEXT',
- ConceptNameCodeSequence: {
- CodeValue: 'RP-100006',
- CodingSchemeDesignator: '99dcmjs',
- CodeMeaning: "Person Observer's Login Name"
- },
- TextValue: 'user'
- },
- {
- RelationshipType: 'HAS CONCEPT MOD',
- ValueType: 'CODE',
- ConceptNameCodeSequence: {
- CodeValue: '121058',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Procedure reported'
- },
- ConceptCodeSequence: {
- CodeValue: '1',
- CodingSchemeDesignator: '99dcmjs',
- CodeMeaning: 'Unknown procedure'
- },
- },
- {
- RelationshipType: 'CONTAINS',
- ValueType: 'CONTAINER',
- ConceptNameCodeSequence: {
- CodeValue: '111028',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Image Library',
- },
- ContinuityOfContent: 'SEPARATE',
- ContentSequence: {
- RelationshipType: 'CONTAINS',
- ValueType: 'CONTAINER',
- ConceptNameCodeSequence: {
- CodeValue: '126200',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Image Library Group',
- },
- ContinuityOfContent: 'SEPARATE',
- ContentSequence: {
- RelationshipType: 'CONTAINS',
- ValueType: 'IMAGE',
- ReferencedSOPSequence: {
- // TODO: this should refer to the UIDs extracted from the toolState / instance info
- ReferencedSOPClassUID: dataset.SOPClassUID,
- ReferencedSOPInstanceUID: dataset.SOPInstanceUID,
- },
- },
- },
- },
- {
- RelationshipType: 'CONTAINS',
- ValueType: 'CONTAINER',
- ConceptNameCodeSequence: {
- CodeValue: '126010',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Imaging Measurements', // TODO: would be nice to abstract the code sequences (in a dictionary? a service?)
- },
- ContinuityOfContent: 'SEPARATE',
- ContentSequence: {
- RelationshipType: 'CONTAINS',
- ValueType: 'CONTAINER',
- ConceptNameCodeSequence: {
- CodeValue: '125007',
- CodingSchemeDesignator: 'DCM',
- CodeMeaning: 'Measurement Group',
- },
- ContinuityOfContent: 'SEPARATE',
- ContentSequence: measurementGroupContentSequence,
- },
- },
- ]
- });
-
- return dataset;
+ const { MeasurementReport } = dcmjs.adapters.Cornerstone;
+ const { getImageIdForImagePath } = OHIF.viewerbase;
+
+ const toolState = {};
+
+ Object.keys(measurements).forEach(measurementType => {
+ const annotations = measurements[measurementType];
+
+ annotations.forEach(annotation => {
+ const imageId = getImageIdForImagePath(annotation.imagePath);
+ toolState[imageId] = toolState[imageId] || {};
+ toolState[imageId][annotation.toolType] = toolState[imageId][annotation.toolType] || {
+ data: []
+ };
+
+ toolState[imageId][annotation.toolType].data.push(annotation);
+ });
+ })
+
+ const report = MeasurementReport.generateReport(toolState, cornerstone.metaData);
+
+ return report.dataset;
}
diff --git a/Packages/ohif-measurement-table/client/utils/retrieveDataFromSR.js b/Packages/ohif-measurement-table/client/utils/retrieveDataFromSR.js
index 4c643930c..d5f8e18c4 100644
--- a/Packages/ohif-measurement-table/client/utils/retrieveDataFromSR.js
+++ b/Packages/ohif-measurement-table/client/utils/retrieveDataFromSR.js
@@ -1,36 +1,58 @@
import { dcmjs } from 'meteor/ohif:cornerstone';
-import getLengthMeasurementData from './getLengthMeasurementData';
-import { toArray, codeMeaningEquals, getAllDisplaySets } from './srUtils'
+import {getAllDisplaySets, getInstanceMetadata} from './srUtils'
const imagingMeasurementsToMeasurementData = (dataset, displaySets) => {
- // Identify the Imaging Measurements
- const imagingMeasurementContent = toArray(dataset.ContentSequence).find(codeMeaningEquals("Imaging Measurements"));
+ const { MeasurementReport } = dcmjs.adapters.Cornerstone;
+ const storedMeasurementByToolType = MeasurementReport.generateToolState(dataset);
+ const measurementData = {};
+ let measurementNumber = 0;
- // Retrieve the Measurements themselves
- const measurementGroupContent = toArray(imagingMeasurementContent.ContentSequence).find(codeMeaningEquals("Measurement Group"));
+ Object.keys(storedMeasurementByToolType).forEach(toolType => {
+ const measurements = storedMeasurementByToolType[toolType];
+ measurementData[toolType] = [];
- // For now, bail out if the dataset is not a TID1500 SR with length measurements
- // TODO: generalize to the various kinds of report
- // TODO: generalize to the kinds of measurements the Viewer supports
- if (dataset.ContentTemplateSequence.TemplateIdentifier !== "1500") {
- OHIF.log.warn("This package can currently only interpret DICOM SR TID 1500");
+ measurements.forEach(measurement => {
+ const instanceMetadata = getInstanceMetadata(displaySets, measurement.sopInstanceUid);
+ const imageId = OHIF.viewerbase.getImageId(instanceMetadata);
+ if (!imageId) {
+ return;
+ }
- return {};
- }
+ // TODO: Update the OHIF metadata provider, then switch these to use 'generalSeriesModule'
+ const study = cornerstone.metaData.get('study', imageId);
+ const series = cornerstone.metaData.get('series', imageId);
+ const imagePath = [
+ study.studyInstanceUid,
+ series.seriesInstanceUid,
+ measurement.sopInstanceUid,
+ measurement.frameIndex
+ ].join('_');
- // Filter to find Length measurements in the Structured Report
- const lengthMeasurementContent = toArray(measurementGroupContent.ContentSequence).filter(codeMeaningEquals("Length"));
+ const toolData = Object.assign({}, measurement, {
+ imageId,
+ imagePath,
+ seriesInstanceUid: series.seriesInstanceUid,
+ studyInstanceUid: study.studyInstanceUid,
+ patientId: study.patientId,
+ measurementNumber: ++measurementNumber,
+ timepointId: OHIF.viewer.data.currentTimepointId,
+ toolType,
+ _id: imageId + measurementNumber,
+ });
- // Retrieve Length Measurement Data
- return getLengthMeasurementData(lengthMeasurementContent, displaySets);
+ measurementData[toolType].push(toolData);
+ });
+ })
+
+ return measurementData;
};
export default retrieveDataFromSR = (Part10SRArrayBuffer) => {
const allDisplaySets = getAllDisplaySets();
- // get the dicom data as an Object
- let dicomData = dcmjs.data.DicomMessage.readFile(Part10SRArrayBuffer);
- let dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(dicomData.dict);
+ // Get the dicom data as an Object
+ const dicomData = dcmjs.data.DicomMessage.readFile(Part10SRArrayBuffer);
+ const dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(dicomData.dict);
// Convert the SR into the kind of object the Measurements package is expecting
return imagingMeasurementsToMeasurementData(dataset, allDisplaySets);
diff --git a/Packages/ohif-measurement-table/client/utils/srUtils.js b/Packages/ohif-measurement-table/client/utils/srUtils.js
index a82eb2e33..8805993b6 100644
--- a/Packages/ohif-measurement-table/client/utils/srUtils.js
+++ b/Packages/ohif-measurement-table/client/utils/srUtils.js
@@ -2,16 +2,6 @@ import { dcmjs } from 'meteor/ohif:cornerstone';
const supportedSopClassUIDs = ['1.2.840.10008.5.1.4.1.1.88.22'];
-const toArray = function(x) {
- return (x.constructor.name === "Array" ? x : [x]);
-};
-
-const codeMeaningEquals = (codeMeaningName) => {
- return (contentItem) => {
- return contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName;
- };
-};
-
const getAllDisplaySets = () => {
const allStudies = OHIF.viewer.Studies.all();
let allDisplaySets = [];
@@ -55,7 +45,7 @@ const getLatestSRSeries = () => {
if (supportedSopClassUIDs.includes(sopClassUid)) {
if(!latestSeries) {
latestSeries = series;
- } else if (series._data.seriesDate > latestSeries._data.seriesDate ||
+ } else if (series._data.seriesDate > latestSeries._data.seriesDate ||
(series._data.seriesDate === latestSeries._data.seriesDate && series._data.seriesTime > latestSeries._data.seriesTime)) {
latestSeries = series;
}
@@ -66,40 +56,8 @@ const getLatestSRSeries = () => {
return latestSeries;
};
-const stringToArray = (string) => {
- return Uint8Array.from(Array.from(string).map(letter => letter.charCodeAt(0)))
-};
-
-const multipartEncode = (dataset, boundary) => {
-
- const denaturalizedMetaheader = dcmjs.data.DicomMetaDictionary.denaturalizeDataset(dataset._meta);
- const dicomDict = new dcmjs.data.DicomDict(denaturalizedMetaheader);
-
- dicomDict.dict = dcmjs.data.DicomMetaDictionary.denaturalizeDataset(dataset);
-
- const part10Buffer = dicomDict.write();
-
- const header = `\r\n--${boundary}\r\nContent-Type: application/dicom\r\n\r\n`;
- const footer = `\r\n--${boundary}--`;
-
- headerArray = stringToArray(header);
- contentArray = new Uint8Array(part10Buffer);
- footerArray = stringToArray(footer);
-
- const multipartArray = new Uint8Array(headerArray.length + contentArray.length + footerArray.length);
-
- multipartArray.set(headerArray, 0);
- multipartArray.set(contentArray, headerArray.length);
- multipartArray.set(footerArray, headerArray.length + contentArray.length);
-
- return(multipartArray.buffer);
-};
-
export {
- codeMeaningEquals,
getAllDisplaySets,
getInstanceMetadata,
getLatestSRSeries,
- multipartEncode,
- toArray
-}
\ No newline at end of file
+}
diff --git a/Packages/ohif-measurement-table/package.js b/Packages/ohif-measurement-table/package.js
index 6e5c0ccda..a6293d55c 100644
--- a/Packages/ohif-measurement-table/package.js
+++ b/Packages/ohif-measurement-table/package.js
@@ -4,8 +4,13 @@ Package.describe({
version: '0.0.1'
});
+Npm.depends({
+ 'dicomweb-client': '0.3.2',
+ 'xhr2': '0.1.4'
+});
+
Package.onUse(function(api) {
- api.versionsFrom('1.6');
+ api.versionsFrom('1.7');
api.use('ecmascript');
diff --git a/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementAdded.js b/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementAdded.js
index 8a254d4c5..226ba89a7 100644
--- a/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementAdded.js
+++ b/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementAdded.js
@@ -21,7 +21,8 @@ export default function ({ instance, eventData, tool }) {
const imageAttributes = getImageAttributes(eventData.element);
const measurement = _.extend({}, measurementData, imageAttributes, {
measurementNumber: measurementData.measurementNumber,
- userId: OHIF.user.getUserId()
+ userId: OHIF.user.getUserId(),
+ toolType
});
// Get the related timepoint by the measurement number and use its location if defined
diff --git a/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementRemoved.js b/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementRemoved.js
index 1208e44fe..5310fc28e 100644
--- a/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementRemoved.js
+++ b/Packages/ohif-measurements/client/lib/MeasurementHandlers/handleSingleMeasurementRemoved.js
@@ -30,7 +30,7 @@ export default function({ instance, eventData, tool, toolGroupId, toolGroup }) {
measurementApi.sortMeasurements(baseline.timepointId);
// Repaint the images on all viewports without the removed measurements
- _.each($('.imageViewerViewport'), element => cornerstone.updateImage(element));
+ _.each($('.imageViewerViewport:not(.empty)'), element => cornerstone.updateImage(element));
// Notify that viewer suffered changes
if (tool.toolGroup !== 'temp') {
diff --git a/Packages/ohif-measurements/client/lib/index.js b/Packages/ohif-measurements/client/lib/index.js
index 088d3eeef..6768b3b80 100644
--- a/Packages/ohif-measurements/client/lib/index.js
+++ b/Packages/ohif-measurements/client/lib/index.js
@@ -14,6 +14,7 @@ import './getTimepointName';
import './getToolConfiguration';
import './hangingProtocolCustomizations';
import './isNewLesionsMeasurement';
+import './isSaveDisabled';
import './MeasurementHandlers';
import './MeasurementManager';
import './navigateOverLesions';
diff --git a/Packages/ohif-measurements/client/lib/isSaveDisabled.js b/Packages/ohif-measurements/client/lib/isSaveDisabled.js
new file mode 100644
index 000000000..687425074
--- /dev/null
+++ b/Packages/ohif-measurements/client/lib/isSaveDisabled.js
@@ -0,0 +1,24 @@
+import { OHIF } from 'meteor/ohif:core';
+
+OHIF.measurements.isSaveDisabled = timepointId => {
+ const basePath = `viewer.studyViewer.measurements.${timepointId}`;
+
+ // Get the timepoint object
+ const timepoint = OHIF.viewer.timepointApi.timepoints.findOne({ timepointId });
+
+ // Check if the timepoint is locked
+ let isLocked = (timepoint && timepoint.isLocked);
+ if (typeof isLocked === 'undefined') {
+ isLocked = true;
+ }
+
+ // Check if the given timepoint suffered changes
+ const hasChanges = OHIF.ui.unsavedChanges.probe(basePath) !== 0;
+
+ // Check if the given timepoint has nonconformities
+ const nonconformities = OHIF.viewer.conformanceCriteria.nonconformities.get();
+ const hasNonconformities = nonconformities && !!nonconformities.length;
+
+ // Prevent saving if timepoint is locked, has no changes or has nonconformities
+ return isLocked || !hasChanges || hasNonconformities;
+};
diff --git a/Packages/ohif-measurements/client/lib/jumpToRowItem.js b/Packages/ohif-measurements/client/lib/jumpToRowItem.js
index e33d144fc..1782d3624 100644
--- a/Packages/ohif-measurements/client/lib/jumpToRowItem.js
+++ b/Packages/ohif-measurements/client/lib/jumpToRowItem.js
@@ -3,6 +3,9 @@ import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
import { cornerstone } from 'meteor/ohif:cornerstone';
+// Flag that can be changed to disable automatic stack scroll linking when jumping over lesions
+OHIF.measurements.automaticStackScrollLinkingEnabled = true;
+
function renderIntoViewport(measurementData, enabledElement, viewportIndex) {
const { activateMeasurements, findAndRenderDisplaySet } = OHIF.measurements;
const { element } = enabledElement;
@@ -54,6 +57,11 @@ function renderIntoViewport(measurementData, enabledElement, viewportIndex) {
}
function syncViewports(viewportsIndexes) {
+ // Prevent stack scrolling from being linked if it's disabled
+ if (!OHIF.measurements.automaticStackScrollLinkingEnabled) {
+ return;
+ }
+
const synchronizer = OHIF.viewer.stackImagePositionOffsetSynchronizer;
if(!synchronizer) { return; }
diff --git a/Packages/ohif-measurements/client/lib/saveMeasurements.js b/Packages/ohif-measurements/client/lib/saveMeasurements.js
index dae43de6e..996da8a60 100644
--- a/Packages/ohif-measurements/client/lib/saveMeasurements.js
+++ b/Packages/ohif-measurements/client/lib/saveMeasurements.js
@@ -4,12 +4,10 @@ OHIF.measurements.saveMeasurements = (measurementApi, timepointId) => {
const { unsavedChanges, notifications, showDialog } = OHIF.ui;
const basePath = `viewer.studyViewer.measurements.${timepointId}`;
- // Stop here if there are nonconformities in the timepoints
- const nonconformities = OHIF.viewer.conformanceCriteria.nonconformities.get();
- if (nonconformities.length) return;
-
- // Stop here if there were no changes to the timepoint
- if (unsavedChanges.probe(basePath) === 0) return;
+ // Prevent saving if it's disabled
+ if (OHIF.measurements.isSaveDisabled(timepointId)) {
+ return;
+ }
// Clear unsaved changes state and display success message
const successHandler = () => {
diff --git a/Packages/ohif-measurements/package.js b/Packages/ohif-measurements/package.js
index cade7ef26..220b754ed 100644
--- a/Packages/ohif-measurements/package.js
+++ b/Packages/ohif-measurements/package.js
@@ -11,7 +11,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
@@ -21,8 +21,6 @@ Package.onUse(function(api) {
api.use('momentjs:moment');
- api.use('validatejs');
-
// Schema for Data Models
api.use('aldeed:simple-schema');
api.use('aldeed:collection2');
diff --git a/Packages/ohif-metadata/package.js b/Packages/ohif-metadata/package.js
index 1e69589cd..13a0e2ac7 100644
--- a/Packages/ohif-metadata/package.js
+++ b/Packages/ohif-metadata/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
diff --git a/Packages/ohif-polyfill/package.js b/Packages/ohif-polyfill/package.js
index ab843b5e9..c249242b3 100644
--- a/Packages/ohif-polyfill/package.js
+++ b/Packages/ohif-polyfill/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
// Meteor packages
api.use('ecmascript');
diff --git a/Packages/ohif-select-tree/package.js b/Packages/ohif-select-tree/package.js
index 353c20118..e9706b277 100644
--- a/Packages/ohif-select-tree/package.js
+++ b/Packages/ohif-select-tree/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
// Meteor packages
api.use([
diff --git a/Packages/ohif-servers/both/schema/servers.js b/Packages/ohif-servers/both/schema/servers.js
index 71988598d..d12820095 100644
--- a/Packages/ohif-servers/both/schema/servers.js
+++ b/Packages/ohif-servers/both/schema/servers.js
@@ -64,15 +64,15 @@ export const DICOMWebServer = new SimpleSchema({
imageRendering: {
type: String,
label: 'Image rendering',
- allowedValues: ['wadouri', 'wadors', 'orthanc'],
- valuesLabels: ['WADO URI', 'WADO RS', 'ORTHANC'],
+ allowedValues: ['wadouri', 'wadors'],
+ valuesLabels: ['WADO URI', 'WADO RS'],
defaultValue: 'wadouri'
},
thumbnailRendering: {
type: String,
label: 'Thumbnail rendering',
- allowedValues: ['wadouri', 'wadors', 'orthanc'],
- valuesLabels: ['WADO URI', 'WADO RS', 'ORTHANC'],
+ allowedValues: ['wadouri', 'wadors'],
+ valuesLabels: ['WADO URI', 'WADO RS'],
defaultValue: 'wadouri'
},
qidoRoot: {
diff --git a/Packages/ohif-servers/client/startup.js b/Packages/ohif-servers/client/startup.js
index de120dcc1..d8c3d2f47 100644
--- a/Packages/ohif-servers/client/startup.js
+++ b/Packages/ohif-servers/client/startup.js
@@ -14,7 +14,6 @@ if (Meteor.settings &&
const endpoints = servers[serverType];
endpoints.forEach((endpoint) => {
const server = Object.assign({}, endpoint);
- server.origin = 'json';
server.type = serverType;
Servers.insert(server);
@@ -26,7 +25,5 @@ if (Meteor.settings &&
CurrentServer.insert({
serverId: newServer._id
});
-
- console.log('test');
}
diff --git a/Packages/ohif-servers/package.js b/Packages/ohif-servers/package.js
index 574de1674..465d7ef52 100644
--- a/Packages/ohif-servers/package.js
+++ b/Packages/ohif-servers/package.js
@@ -5,14 +5,14 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
- api.use('templating');
- api.use('jquery');
- api.use('stylus');
- api.use('aldeed:simple-schema');
- api.use('aldeed:collection2');
+ api.use('templating', 'client');
+ api.use('jquery', 'client');
+ api.use('stylus', 'client');
+ api.use('aldeed:simple-schema@1.5.4');
+ api.use('aldeed:collection2@2.10.0');
// Our custom packages
api.use('ohif:core');
diff --git a/Packages/ohif-servers/server/startup.js b/Packages/ohif-servers/server/startup.js
index e34a2cca4..efcfec539 100644
--- a/Packages/ohif-servers/server/startup.js
+++ b/Packages/ohif-servers/server/startup.js
@@ -2,7 +2,6 @@ import { Meteor } from 'meteor/meteor';
import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
import { Servers } from 'meteor/ohif:servers/both/collections';
-import { ServerConfiguration } from 'meteor/ohif:servers/both/schema/servers.js';
// Check the servers on meteor startup
if (Meteor.settings &&
diff --git a/Packages/ohif-studies/imports/both/lib/encodeQueryData.js b/Packages/ohif-studies/imports/both/lib/encodeQueryData.js
deleted file mode 100644
index f466b3a20..000000000
--- a/Packages/ohif-studies/imports/both/lib/encodeQueryData.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Converts the properties to URL query parameters. Based on:
- * http://stackoverflow.com/questions/111529/create-query-parameters-in-javascript
- *
- * @param data
- * @returns {string}
- */
-encodeQueryData = function(data) {
- var ret = [];
-
- for (var d in data) {
- if (data[d]) {
- ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
- }
- }
-
- return ret.join('&');
-};
diff --git a/Packages/ohif-studies/imports/both/lib/index.js b/Packages/ohif-studies/imports/both/lib/index.js
index 8271ccc98..f53464cd4 100644
--- a/Packages/ohif-studies/imports/both/lib/index.js
+++ b/Packages/ohif-studies/imports/both/lib/index.js
@@ -1,2 +1 @@
-import './encodeQueryData.js';
import './parseFloatArray.js';
diff --git a/Packages/ohif-studies/imports/both/services/qido/instances.js b/Packages/ohif-studies/imports/both/services/qido/instances.js
index e13ae54ea..aadf5db91 100644
--- a/Packages/ohif-studies/imports/both/services/qido/instances.js
+++ b/Packages/ohif-studies/imports/both/services/qido/instances.js
@@ -1,15 +1,7 @@
import { OHIF } from 'meteor/ohif:core';
-import { DICOMWeb } from 'meteor/ohif:dicomweb-client';
+import DICOMwebClient from 'dicomweb-client';
-/**
- * Creates a QIDO URL given the server settings and a study instance UID
- * @param server
- * @param studyInstanceUid
- * @returns {string} URL to be used for QIDO calls
- */
-function buildUrl(server, studyInstanceUid) {
- return server.qidoRoot + '/studies/' + studyInstanceUid + '/instances';
-}
+const { DICOMWeb } = OHIF;
/**
* Parses data returned from a QIDO search and transforms it into
@@ -76,20 +68,23 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
* @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}
*/
OHIF.studies.services.QIDO.Instances = function(server, studyInstanceUid) {
- var url = buildUrl(server, studyInstanceUid);
+ // TODO: Are we using this function anywhere?? Can we remove it?
- try {
- var result = DICOMWeb.getJSON(url, server.requestOptions);
+ const config = {
+ url: server.qidoRoot,
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+ const queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);
+ const options = {
+ studyInstanceUID: studyInstanceUid
+ };
+ return dicomWeb.searchForInstances(options).then(result => {
return {
wadoUriRoot: server.wadoUriRoot,
studyInstanceUid: studyInstanceUid,
seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)
};
- } catch (error) {
- OHIF.log.trace();
-
- throw error;
- }
-
+ });
};
diff --git a/Packages/ohif-studies/imports/both/services/qido/studies.js b/Packages/ohif-studies/imports/both/services/qido/studies.js
index b7ff4f97b..830bd9302 100644
--- a/Packages/ohif-studies/imports/both/services/qido/studies.js
+++ b/Packages/ohif-studies/imports/both/services/qido/studies.js
@@ -1,5 +1,14 @@
import { OHIF } from 'meteor/ohif:core';
-import { DICOMWeb } from 'meteor/ohif:dicomweb-client';
+import DICOMwebClient from 'dicomweb-client';
+
+const { DICOMWeb } = OHIF;
+
+// TODO: Is there an easier way to do this?
+if (Meteor.isServer) {
+ var XMLHttpRequest = require('xhr2');
+
+ global.XMLHttpRequest = XMLHttpRequest;
+}
/**
* Creates a QIDO date string for a date range query
@@ -23,11 +32,11 @@ function dateToString(date) {
* Produces a QIDO URL given server details and a set of specified search filter
* items
*
- * @param server
* @param filter
+ * @param serverSupportsQIDOIncludeField
* @returns {string} The URL with encoded filter query data
*/
-function filterToQIDOURL(server, filter) {
+function getQIDOQueryParams(filter, serverSupportsQIDOIncludeField) {
const commaSeparatedFields = [
'00081030', // Study Description
'00080060' //Modality
@@ -41,7 +50,8 @@ function filterToQIDOURL(server, filter) {
StudyDescription: filter.studyDescription,
ModalitiesInStudy: filter.modalitiesInStudy,
limit: filter.limit,
- includefield: server.qidoSupportsIncludeField ? 'all' : commaSeparatedFields
+ offset: filter.offset,
+ includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'
};
// build the StudyDate range parameter
@@ -59,7 +69,16 @@ function filterToQIDOURL(server, filter) {
parameters.StudyInstanceUID = studyUids;
}
- return server.qidoRoot + '/studies?' + encodeQueryData(parameters);
+ // Clean query params of undefined values.
+ const params = {};
+ Object.keys(parameters).forEach(key => {
+ if (parameters[key] !== undefined &&
+ parameters[key] !== "") {
+ params[key] = parameters[key];
+ }
+ });
+
+ return params;
}
/**
@@ -98,13 +117,16 @@ function resultDataToStudies(resultData) {
}
OHIF.studies.services.QIDO.Studies = (server, filter) => {
- const url = filterToQIDOURL(server, filter);
+ const config = {
+ url: server.qidoRoot,
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
- return new Promise((resolve, reject) => {
- DICOMWeb.getJSON(url, server.requestOptions).then(result => {
- const studies = resultDataToStudies(result);
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+ const queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);
+ const options = {
+ queryParams
+ };
- resolve(studies);
- }, reject);
- });
+ return dicomWeb.searchForStudies(options).then(resultDataToStudies);
};
diff --git a/Packages/ohif-studies/imports/both/services/wado/retrieveMetadata.js b/Packages/ohif-studies/imports/both/services/wado/retrieveMetadata.js
index 05d75657f..a4c9f8904 100644
--- a/Packages/ohif-studies/imports/both/services/wado/retrieveMetadata.js
+++ b/Packages/ohif-studies/imports/both/services/wado/retrieveMetadata.js
@@ -1,7 +1,10 @@
import { OHIF } from 'meteor/ohif:core';
-import { DICOMWeb } from 'meteor/ohif:dicomweb-client';
+import DICOMwebClient from 'dicomweb-client';
+
import { parseFloatArray } from '../../lib/parseFloatArray';
+const { DICOMWeb } = OHIF;
+
/**
* Simple cache schema for retrieved color palettes.
*/
@@ -39,17 +42,6 @@ const paletteColorCache = {
}
};
-/**
- * Creates a URL for a WADO search
- *
- * @param server
- * @param studyInstanceUid
- * @returns {string}
- */
-function buildUrl(server, studyInstanceUid) {
- return server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata';
-}
-
/** Returns a WADO url for an instance
*
* @param studyInstanceUid
@@ -58,6 +50,7 @@ function buildUrl(server, studyInstanceUid) {
* @returns {string}
*/
function buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {
+ // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though
const params = [];
params.push('requestType=WADO');
@@ -102,23 +95,47 @@ function getSourceImageInstanceUid(instance) {
}
function getPaletteColor(server, instance, tag, lutDescriptor) {
- const lut = [];
const numLutEntries = lutDescriptor[0];
const bits = lutDescriptor[2];
- const uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server)
- const bulkDataPromise = DICOMWeb.getBulkData(uri);
- return bulkDataPromise.then(data => {
- for (var i = 0; i < numLutEntries; i++) {
- if(bits === 16) {
- lut[i] = data[i * 65536] + data[i + 1];
+ let uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server)
+
+ // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning
+ // incorrect bulk data URIs
+ if (server.wadoRoot.indexOf('https') === 0 &&
+ !uri.includes('https')) {
+ uri = uri.replace('http', 'https');
+ }
+
+ const config = {
+ url: server.wadoRoot, //BulkDataURI is absolute, so this isn't used
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+ const options = {
+ BulkDataURI: uri
+ };
+
+ const readUInt16 = (byteArray, position) => {
+ return byteArray[position] + (byteArray[position + 1] * 256);
+ }
+
+ const arrayBufferToPaletteColorLUT = (arraybuffer) =>{
+ const byteArray = new Uint8Array(arraybuffer);
+ const lut = [];
+
+ for (let i = 0; i < numLutEntries; i++) {
+ if (bits === 16) {
+ lut[i] = readUInt16(byteArray, i * 2);
} else {
- lut[i] = data[i];
+ lut[i] = byteArray[i];
}
}
return lut;
- })
+ }
+
+ return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT)
}
/**
@@ -129,13 +146,15 @@ function getPaletteColor(server, instance, tag, lutDescriptor) {
* @returns {String} The ReferenceSOPInstanceUID
*/
async function getPaletteColors(server, instance, lutDescriptor) {
- let entry = null;
let paletteUID = DICOMWeb.getString(instance['00281199']);
return new Promise((resolve, reject) => {
if (paletteColorCache.isValidUID(paletteUID)) {
- entry = paletteColorCache.get(paletteUID);
- return resolve(entry);
+ const entry = paletteColorCache.get(paletteUID);
+
+ if (entry) {
+ return resolve(entry);
+ }
}
// no entry in cache... Fetch remote data.
@@ -146,7 +165,11 @@ async function getPaletteColors(server, instance, lutDescriptor) {
const promises = [r, g, b];
Promise.all(promises).then((args) => {
- entry = { red: r, green: g, blue: b };
+ entry = {
+ red: args[0],
+ green: args[1],
+ blue: args[2]
+ };
// when paletteUID is present, the entry can be cached...
entry.uid = paletteUID;
@@ -202,9 +225,6 @@ function getRadiopharmaceuticalInfo(instance) {
* @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}
*/
async function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
- const seriesMap = {};
- const seriesList = [];
-
if (!resultData.length) {
return;
}
@@ -215,7 +235,9 @@ async function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
}
const studyData = {
- seriesList,
+ seriesList: [],
+ studyInstanceUid,
+ wadoUriRoot: server.wadoUriRoot,
patientName: DICOMWeb.getName(anInstance['00100010']),
patientId: DICOMWeb.getString(anInstance['00100020']),
patientAge: DICOMWeb.getNumber(anInstance['00101010']),
@@ -230,9 +252,12 @@ async function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
institutionName: DICOMWeb.getString(anInstance['00080080'])
};
+ const seriesMap = {};
+
await Promise.all(resultData.map(async function(instance) {
- var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);
- var series = seriesMap[seriesInstanceUid];
+ const seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);
+ let series = seriesMap[seriesInstanceUid];
+
if (!series) {
series = {
seriesDescription: DICOMWeb.getString(instance['0008103E']),
@@ -244,7 +269,7 @@ async function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
instances: []
};
seriesMap[seriesInstanceUid] = series;
- seriesList.push(series);
+ studyData.seriesList.push(series);
}
const sopInstanceUid = DICOMWeb.getString(instance['00080018']);
@@ -331,22 +356,23 @@ async function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
}
/**
- * Retrieved Study MetaData from a DICOM server using a WADO call
+ * Retrieve Study MetaData from a DICOM server using a WADO call
+ *
* @param server
* @param studyInstanceUid
* @returns {Promise}
*/
OHIF.studies.services.WADO.RetrieveMetadata = async function(server, studyInstanceUid) {
- const url = buildUrl(server, studyInstanceUid);
+ const config = {
+ url: server.wadoRoot,
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ };
+ const dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);
+ const options = {
+ studyInstanceUID: studyInstanceUid
+ };
- return new Promise((resolve, reject) => {
- DICOMWeb.getJSON(url, server.requestOptions).then(result => {
- resultDataToStudyMetadata(server, studyInstanceUid, result).then((study) => {
- study.wadoUriRoot = server.wadoUriRoot;
- study.studyInstanceUid = studyInstanceUid;
-
- resolve(study);
- }, reject);
- }, reject);
+ return dicomWeb.retrieveStudyMetadata(options).then(result => {
+ return resultDataToStudyMetadata(server, studyInstanceUid, result);
});
};
diff --git a/Packages/ohif-studies/imports/server/services/dimse/instances.js b/Packages/ohif-studies/imports/server/services/dimse/instances.js
index 6672c069d..ff09559f8 100644
--- a/Packages/ohif-studies/imports/server/services/dimse/instances.js
+++ b/Packages/ohif-studies/imports/server/services/dimse/instances.js
@@ -1,4 +1,5 @@
import { OHIF } from 'meteor/ohif:core';
+import DIMSE from 'dimse';
/**
* Parses data returned from a study search and transforms it into
diff --git a/Packages/ohif-studies/imports/server/services/dimse/retrieveMetadata.js b/Packages/ohif-studies/imports/server/services/dimse/retrieveMetadata.js
index 255b496f6..fb47de74c 100644
--- a/Packages/ohif-studies/imports/server/services/dimse/retrieveMetadata.js
+++ b/Packages/ohif-studies/imports/server/services/dimse/retrieveMetadata.js
@@ -1,5 +1,6 @@
import { OHIF } from 'meteor/ohif:core';
import { parseFloatArray } from 'meteor/ohif:studies/imports/both/lib/parseFloatArray';
+import DIMSE from 'dimse';
/**
* Returns the value of the element (e.g. '00280009')
diff --git a/Packages/ohif-studies/imports/server/services/dimse/setup.js b/Packages/ohif-studies/imports/server/services/dimse/setup.js
index 919251fe2..7e3c71ed7 100644
--- a/Packages/ohif-studies/imports/server/services/dimse/setup.js
+++ b/Packages/ohif-studies/imports/server/services/dimse/setup.js
@@ -1,6 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { OHIF } from 'meteor/ohif:core';
import { CurrentServer } from 'meteor/ohif:servers/both/collections';
+import DIMSE from 'dimse';
const setupDIMSE = () => {
// Terminate existing DIMSE servers and sockets and clean up the connection object
diff --git a/Packages/ohif-studies/imports/server/services/dimse/studies.js b/Packages/ohif-studies/imports/server/services/dimse/studies.js
index c4bb16bb8..e3169432f 100644
--- a/Packages/ohif-studies/imports/server/services/dimse/studies.js
+++ b/Packages/ohif-studies/imports/server/services/dimse/studies.js
@@ -1,5 +1,6 @@
import { moment } from 'meteor/momentjs:moment';
import { OHIF } from 'meteor/ohif:core';
+import DIMSE from 'dimse';
/**
* Parses resulting data from a QIDO call into a set of Study MetaData
diff --git a/Packages/ohif-studies/package.js b/Packages/ohif-studies/package.js
index 30993e323..69bae79c1 100644
--- a/Packages/ohif-studies/package.js
+++ b/Packages/ohif-studies/package.js
@@ -4,8 +4,14 @@ Package.describe({
version: '0.0.1'
});
+Npm.depends({
+ dimse: '0.0.2',
+ 'dicomweb-client': '0.3.2',
+ 'xhr2': '0.1.4'
+});
+
Package.onUse(function(api) {
- api.versionsFrom('1.6');
+ api.versionsFrom('1.7');
api.use([
'ecmascript',
@@ -20,8 +26,6 @@ Package.onUse(function(api) {
'ohif:core',
'ohif:log',
'ohif:servers',
- 'ohif:dicom-services',
- 'ohif:dicomweb-client',
'ohif:viewerbase',
'ohif:wadoproxy'
]);
diff --git a/Packages/ohif-study-list/client/components/studylist/index.js b/Packages/ohif-study-list/client/components/studylist/index.js
index 6cd09ef93..2249e8b6d 100644
--- a/Packages/ohif-study-list/client/components/studylist/index.js
+++ b/Packages/ohif-study-list/client/components/studylist/index.js
@@ -1,4 +1,5 @@
import './studylist.html';
+import './studylist.js';
import './studylist.styl';
import './studylistStudy/studylistStudy.html';
diff --git a/Packages/ohif-study-list/client/components/studylist/studylist.js b/Packages/ohif-study-list/client/components/studylist/studylist.js
new file mode 100644
index 000000000..91c8579ae
--- /dev/null
+++ b/Packages/ohif-study-list/client/components/studylist/studylist.js
@@ -0,0 +1,12 @@
+import { Template } from 'meteor/templating';
+import { OHIF } from 'meteor/ohif:core';
+
+Template.studylist.onCreated(() => {
+ // Set the current context
+ OHIF.context.set('studylist');
+});
+
+Template.studylist.onDestroyed(() => {
+ // Reset the current context
+ OHIF.context.set(null);
+});
diff --git a/Packages/ohif-study-list/client/components/studylist/studylistResult/studylistResult.js b/Packages/ohif-study-list/client/components/studylist/studylistResult/studylistResult.js
index 43b15a52e..d6f545048 100644
--- a/Packages/ohif-study-list/client/components/studylist/studylistResult/studylistResult.js
+++ b/Packages/ohif-study-list/client/components/studylist/studylistResult/studylistResult.js
@@ -15,7 +15,6 @@ Template.studylistResult.helpers({
*/
studies() {
const instance = Template.instance();
- let studies;
let sortOption = {
patientName: 1,
studyDate: 1
@@ -26,13 +25,7 @@ Template.studylistResult.helpers({
sortOption = Session.get('sortOption');
}
- // Pagination parameters
- const rowsPerPage = instance.paginationData.rowsPerPage.get();
- const currentPage = instance.paginationData.currentPage.get();
- const offset = rowsPerPage * currentPage;
- const limit = offset + rowsPerPage;
-
- studies = OHIF.studylist.collections.Studies.find({}, {
+ const studies = OHIF.studylist.collections.Studies.find({}, {
sort: sortOption
}).fetch();
@@ -43,8 +36,7 @@ Template.studylistResult.helpers({
// Update record count
instance.paginationData.recordCount.set(studies.length);
- // Limit studies
- return studies.slice(offset, limit);
+ return studies;
},
numberOfStudies() {
@@ -90,17 +82,6 @@ function getFilter(filter) {
return filter;
}
-/**
- * Search for a value in a string
- */
-function isIndexOf(mainVal, searchVal) {
- if (mainVal === undefined || mainVal === '' || mainVal.indexOf(searchVal) > -1){
- return true;
- }
-
- return false;
-}
-
/**
* Replace object if undefined
*/
@@ -112,22 +93,11 @@ function replaceUndefinedColumnValue(text) {
}
}
-/**
- * Convert string to study date
- */
-function convertStringToStudyDate(dateStr) {
- const y = dateStr.substring(0, 4);
- const m = dateStr.substring(4, 6);
- const d = dateStr.substring(6, 8);
- const newDateStr = m + '/' + d + '/' + y;
- return new Date(newDateStr);
-}
-
/**
* Runs a search for studies matching the studylist query parameters
* Inserts the identified studies into the Studies Collection
*/
-function search() {
+function search(instance) {
OHIF.log.info('search()');
// Show loading message
@@ -136,8 +106,14 @@ function search() {
// Hiding error message
Session.set('serverError', false);
+ // Pagination parameters
+ const rowsPerPage = instance.paginationData.rowsPerPage.get();
+ const currentPage = instance.paginationData.currentPage.get();
+
// Create the filters to be used for the StudyList Search
filter = {
+ offset: rowsPerPage * currentPage,
+ limit: rowsPerPage,
patientName: getFilter($('input#patientName').val()),
patientId: getFilter($('input#patientId').val()),
accessionNumber: getFilter($('input#accessionNumber').val()),
@@ -153,28 +129,37 @@ function search() {
OHIF.studies.searchStudies(filter).then((studies) => {
OHIF.log.info('StudyListSearch');
- // Hide loading text
+ // Hide loading text
Session.set('showLoadingText', false);
+ // Clear all current studies
+ OHIF.studylist.collections.Studies.remove({});
+
if (!studies) {
OHIF.log.warn('No studies found');
return;
}
- // Clear all current studies
- OHIF.studylist.collections.Studies.remove({});
-
// Loop through all identified studies
studies.forEach(study => {
- // Search the rest of the parameters that aren't done via the server call
- if (isIndexOf(study.modalities, modality) &&
- (new Date(studyDateFrom).setHours(0, 0, 0, 0) <= convertStringToStudyDate(study.studyDate) || !studyDateFrom || studyDateFrom === '') &&
- (convertStringToStudyDate(study.studyDate) <= new Date(studyDateTo).setHours(0, 0, 0, 0) || !studyDateTo || studyDateTo === '')) {
+ // TODO: Why is this Modality filter different from QIDO?
+ if (!modality && !study.modalities.includes(modality)) {
+ return;
+ }
+ // Sometimes DICOM studies have incorrect Date entries with
+ // periods such as '1990.10.04'
+ let studyDate = study.studyDate;
+ if (studyDate && studyDate.includes('.')) {
+ studyDate = studyDate.replace('.', '');
+ }
+
+ // Search the rest of the parameters that aren't done via the server call
+ if ((moment(studyDateFrom, "MM/DD/YYYY").isBefore(moment(studyDate, "YYYYMMDD")) || !studyDateFrom ) &&
+ (moment(studyDate, "YYYYMMDD").isBefore(moment(studyDateTo, "MM/DD/YYYY")) || !studyDateTo || studyDateTo === '')) {
// Convert numberOfStudyRelatedInstance string into integer
study.numberOfStudyRelatedInstances = !isNaN(study.numberOfStudyRelatedInstances) ? parseInt(study.numberOfStudyRelatedInstances) : undefined;
-
// Insert any matching studies into the Studies Collection
OHIF.studylist.collections.Studies.insert(study);
}
@@ -273,7 +258,20 @@ Template.studylistResult.onRendered(() => {
}
}).data('daterangepicker');
- search();
+ search(instance);
+
+ // Search when rowsPerPage or currentPage is changed
+ instance.autorun(computation => {
+ instance.paginationData.rowsPerPage.dep.depend();
+ instance.paginationData.currentPage.dep.depend();
+
+ // Stop here if it is the first run
+ if (computation.firstRun) {
+ return;
+ }
+
+ search(instance);
+ });
});
Template.studylistResult.onDestroyed(() => {
@@ -292,17 +290,17 @@ function resetSortingColumns(instance, sortingColumn) {
}
Template.studylistResult.events({
- 'keydown input'(event) {
+ 'keydown input'(event, instance) {
if (event.which === 13) { // Enter
- search();
+ search(instance);
}
},
- 'onsearch input'() {
- search();
+ 'onsearch input'(event, instance) {
+ search(instance);
},
- 'change #studyDate'(event) {
+ 'change #studyDate'(event, instance) {
let dateRange = $(event.currentTarget).val();
// Remove all space chars
@@ -314,7 +312,7 @@ Template.studylistResult.events({
studyDateTo = dates[1];
if (dateRange !== '') {
- search();
+ search(instance);
}
},
diff --git a/Packages/ohif-study-list/package.js b/Packages/ohif-study-list/package.js
index 0c4ae5f67..cfdcbfdd5 100644
--- a/Packages/ohif-study-list/package.js
+++ b/Packages/ohif-study-list/package.js
@@ -10,7 +10,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
@@ -30,7 +30,6 @@ Package.onUse(function(api) {
api.use('ohif:core');
api.use('ohif:log');
api.use('ohif:servers');
- api.use('ohif:dicom-services');
api.use('ohif:viewerbase');
api.use('ohif:wadoproxy');
api.use('ohif:studies');
diff --git a/Packages/ohif-themes-common/package.js b/Packages/ohif-themes-common/package.js
index b8eb59f6e..2fb05c568 100644
--- a/Packages/ohif-themes-common/package.js
+++ b/Packages/ohif-themes-common/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4.2.3');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('templating');
diff --git a/Packages/ohif-themes/package.js b/Packages/ohif-themes/package.js
index 53b9805cc..be52f8bda 100644
--- a/Packages/ohif-themes/package.js
+++ b/Packages/ohif-themes/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4.2.3');
+ api.versionsFrom('1.7');
api.use('stylus');
diff --git a/Packages/ohif-user-management/package.js b/Packages/ohif-user-management/package.js
index bd7a6c296..901e0bc65 100644
--- a/Packages/ohif-user-management/package.js
+++ b/Packages/ohif-user-management/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('standard-app-packages');
diff --git a/Packages/ohif-user-meteor-accounts/imports/client/index.js b/Packages/ohif-user-meteor-accounts/imports/client/index.js
index 267df83f9..0df9e0cfe 100644
--- a/Packages/ohif-user-meteor-accounts/imports/client/index.js
+++ b/Packages/ohif-user-meteor-accounts/imports/client/index.js
@@ -7,4 +7,4 @@ import './logout';
import './schema';
import './userLoggedIn';
-import './userLogin'
+import './userLogin/'
diff --git a/Packages/ohif-user-meteor-accounts/package.js b/Packages/ohif-user-meteor-accounts/package.js
index 982284f52..d077d96cf 100644
--- a/Packages/ohif-user-meteor-accounts/package.js
+++ b/Packages/ohif-user-meteor-accounts/package.js
@@ -5,9 +5,11 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.6');
+ api.versionsFrom('1.7');
api.use('ecmascript');
+ api.use('templating');
+ api.use('stylus');
api.use('accounts-base');
api.use('accounts-password');
diff --git a/Packages/ohif-user-oidc/package.js b/Packages/ohif-user-oidc/package.js
index 099767354..c8d7d04d3 100644
--- a/Packages/ohif-user-oidc/package.js
+++ b/Packages/ohif-user-oidc/package.js
@@ -9,7 +9,7 @@ Npm.depends({
});
Package.onUse(function(api) {
- api.versionsFrom('1.6');
+ api.versionsFrom('1.7');
api.use('ecmascript', 'client');
diff --git a/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.js b/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.js
index 73ef9769f..cf3bcd056 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.js
+++ b/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.js
@@ -11,6 +11,31 @@ OHIF.viewerbase.getImageDownloadDialogAnnotationTools = () => {
return ['length', 'probe', 'simpleAngle', 'arrowAnnotate', 'ellipticalRoi', 'rectangleRoi'];
};
+/**
+ * Converts a base64 data to a blob. This is needed to enabled JPEG images downloading on IE11.
+ * Source: https://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript/16245768
+ */
+const b64toBlob = (b64Data, contentType='', sliceSize=512) => {
+ const byteCharacters = atob(b64Data);
+ const byteArrays = [];
+
+ for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
+ const slice = byteCharacters.slice(offset, offset + sliceSize);
+
+ const byteNumbers = new Array(slice.length);
+ for (let i = 0; i < slice.length; i++) {
+ byteNumbers[i] = slice.charCodeAt(i);
+ }
+
+ const byteArray = new Uint8Array(byteNumbers);
+
+ byteArrays.push(byteArray);
+ }
+
+ const blob = new Blob(byteArrays, { type: contentType });
+ return blob;
+};
+
Template.imageDownloadDialog.onCreated(() => {
const instance = Template.instance();
@@ -42,7 +67,7 @@ Template.imageDownloadDialog.onCreated(() => {
instance.lastImage = {};
instance.getConfirmCallback = () => () => {
- instance.downloadImage();
+ return instance.downloadImage();
};
});
@@ -105,7 +130,14 @@ Template.imageDownloadDialog.onRendered(() => {
const filename = `${formData.name}.${formData.type}`;
const mimetype = `image/${formData.type}`;
- cornerstoneTools.saveAs(instance.viewportElement, filename, mimetype);
+ // Handles JPEG images for IE11
+ if (instance.downloadCanvas.msToBlob && formData.type === 'jpeg') {
+ const image = instance.downloadCanvas.toDataURL(mimetype, 1);
+ const blob = b64toBlob(image.replace('data:image/jpeg;base64,', ''), mimetype);
+ return window.navigator.msSaveBlob(blob, filename);
+ }
+
+ return cornerstoneTools.saveAs(instance.viewportElement, filename, mimetype);
};
instance.autorun(() => {
@@ -147,9 +179,9 @@ Template.imageDownloadDialog.onRendered(() => {
});
Template.imageDownloadDialog.onDestroyed(() => {
- const instance = Template.instance();
+ const instance = Template.instance();
- cornerstone.disable(instance.viewportElement);
+ cornerstone.disable(instance.viewportElement);
});
Template.imageDownloadDialog.events({
diff --git a/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.styl b/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.styl
index d884f04bd..d2d48760f 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.styl
+++ b/Packages/ohif-viewerbase/client/components/viewer/downloadDialog/downloadDialog.styl
@@ -12,3 +12,6 @@
.viewport-preview
max-width: 512px
max-height: 512px
+
+ .wrapperLabel
+ display: block
diff --git a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
index 211555a72..be7fdd162 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
+++ b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
@@ -23,6 +23,9 @@ const allCornerstoneEvents = ['click', 'cornerstonetoolsmousedown', 'cornerstone
const PLUGIN_CORNERSTONE = 'cornerstone';
+// Create a way to add hooks to be executed every time a cornerstone element is enabled
+OHIF.viewer.cornerstoneElementHooks = [];
+
/**
* This function loads a study series into a viewport element.
*
@@ -99,6 +102,13 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
};
cornerstone.enable(element, options);
+ // Call every defined hook
+ OHIF.viewer.cornerstoneElementHooks.forEach(hook => {
+ if (typeof hook === 'function') {
+ hook(element);
+ }
+ });
+
// Get the handler functions that will run when loading has finished or thrown
// an error. These are used to show/hide loading / error text boxes on each viewport.
const endLoadingHandler = cornerstoneTools.loadHandlerManager.getEndLoadHandler();
diff --git a/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionTools/toolbarSectionTools.styl b/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionTools/toolbarSectionTools.styl
index ec6134604..ebbd58f20 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionTools/toolbarSectionTools.styl
+++ b/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionTools/toolbarSectionTools.styl
@@ -29,7 +29,7 @@ $distance = 10px
transition(opacity 0.3s ease\, transform 0.3s ease\, left 0.3s ease)
transform(translateX(-50%) translateY( - ($toolbarDrawerHeight + $distance)) scale(0))
white-space: nowrap
- z-index: 1
+ z-index: 2
.toolbarSectionDrawer
theme('background', '$uiGrayDarkest', 0.95)
diff --git a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js
index 77b526867..fea90093e 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js
+++ b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js
@@ -28,6 +28,9 @@ Template.viewerMain.onCreated(() => {
// Add beforeUnload event handler to check for unsaved changes
window.addEventListener('beforeunload', unloadHandlers.beforeUnload);
+
+ // Set the current context
+ OHIF.context.set('viewer');
});
Template.viewerMain.onRendered(() => {
@@ -82,4 +85,7 @@ Template.viewerMain.onDestroyed(() => {
// @TypeSafeStudies
// Clears OHIF.viewer.StudyMetadataList collection
OHIF.viewer.StudyMetadataList.removeAll();
+
+ // Reset the current context
+ OHIF.context.set(null);
});
diff --git a/Packages/ohif-viewerbase/client/lib/StackManager.js b/Packages/ohif-viewerbase/client/lib/StackManager.js
index c9e7a6fc6..21b0245cb 100644
--- a/Packages/ohif-viewerbase/client/lib/StackManager.js
+++ b/Packages/ohif-viewerbase/client/lib/StackManager.js
@@ -35,12 +35,13 @@ function createAndAddStack(stackMap, study, displaySet) {
if (numberOfFrames > 1) {
OHIF.log.info('Multiframe image detected');
for (let i = 0; i < numberOfFrames; i++) {
- metaData.frame = i;
+ metaData.frameNumber = i;
imageId = getImageId(image, i);
imageIds.push(imageId);
metadataProvider.addMetadata(imageId, metaData);
}
} else {
+ metaData.frameNumber = 1;
imageId = getImageId(image);
imageIds.push(imageId);
metadataProvider.addMetadata(imageId, metaData);
diff --git a/Packages/ohif-viewerbase/client/lib/WLPresets.js b/Packages/ohif-viewerbase/client/lib/WLPresets.js
index a0c51eb93..37ebc452f 100644
--- a/Packages/ohif-viewerbase/client/lib/WLPresets.js
+++ b/Packages/ohif-viewerbase/client/lib/WLPresets.js
@@ -153,7 +153,7 @@ class WindowLevelPresetsManager {
return new Promise((resolve, reject) => {
if (this.retrieveFunction) {
this.retrieveFunction.call(this).then(resolve).catch(reject);
- } else if (OHIF.user) {
+ } else if (OHIF.user.userLoggedIn()) {
try {
resolve(OHIF.user.getData(WL_STORAGE_KEY));
} catch(error) {
diff --git a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js
index a81cac3f2..c31408edc 100644
--- a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js
+++ b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js
@@ -43,6 +43,12 @@ export class OHIFPlugin {
});
}
+ if (plugin.styleURLs && plugin.styleURLs.length) {
+ plugin.styleURLs.forEach(styleURLs => {
+ this.loadScript(styleURLs, "text/css");
+ });
+ }
+
let scriptURL = plugin.url;
if (plugin.allowCaching === false) {
diff --git a/Packages/ohif-viewerbase/client/lib/getWADORSImageId.js b/Packages/ohif-viewerbase/client/lib/getWADORSImageId.js
index a5fe44d6b..0f312631a 100644
--- a/Packages/ohif-viewerbase/client/lib/getWADORSImageId.js
+++ b/Packages/ohif-viewerbase/client/lib/getWADORSImageId.js
@@ -15,8 +15,5 @@ export function getWADORSImageId(instance, frame) {
return;
}
- const imageId = `wadors:${uri}`;
- OHIF.log.info('WADO-RS ImageID: ' + imageId);
-
- return imageId;
+ return `wadors:${uri}`;
};
diff --git a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
index 4aca22bdf..865963191 100644
--- a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
+++ b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
@@ -199,11 +199,11 @@ Meteor.startup(function() {
disabled: () => !canMoveDisplaySets(true)
},
nextPanel: {
- name: 'Next Panel',
+ name: 'Next Image Viewport',
action: () => panelNavigation.loadNextActivePanel()
},
previousPanel: {
- name: 'Previous Panel',
+ name: 'Previous Image Viewport',
action: () => panelNavigation.loadPreviousActivePanel()
}
}, true);
diff --git a/Packages/ohif-viewerbase/package.js b/Packages/ohif-viewerbase/package.js
index 0db14d0ab..82e4dbc5b 100644
--- a/Packages/ohif-viewerbase/package.js
+++ b/Packages/ohif-viewerbase/package.js
@@ -5,7 +5,7 @@ Package.describe({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use(['ecmascript',
'standard-app-packages',
@@ -13,7 +13,6 @@ Package.onUse(function(api) {
'jquery',
'stylus',
'momentjs:moment',
- 'validatejs',
'cultofcoders:persistent-session'
]);
@@ -219,7 +218,7 @@ Package.onUse(function(api) {
});
Package.onTest(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
/*
* Really important dependencies to the project
@@ -230,7 +229,6 @@ Package.onTest(function(api) {
'jquery',
'mongo',
'momentjs:moment',
- 'validatejs',
'cultofcoders:persistent-session'
], 'client');
diff --git a/Packages/ohif-wadoproxy/package.js b/Packages/ohif-wadoproxy/package.js
index 4ec4c1f0b..26e9fa51a 100755
--- a/Packages/ohif-wadoproxy/package.js
+++ b/Packages/ohif-wadoproxy/package.js
@@ -10,7 +10,7 @@ Npm.depends({
});
Package.onUse(function(api) {
- api.versionsFrom('1.4');
+ api.versionsFrom('1.7');
api.use('ecmascript');
api.use('clinical:router@2.0.19');
@@ -22,7 +22,7 @@ Package.onUse(function(api) {
api.addFiles('both/convertURL.js', ['client', 'server']);
api.addFiles('both/initialize.js', ['client', 'server']);
api.addFiles('server/routes.js', 'server');
-
+
// Global exports
api.export('WADOProxy');
});
diff --git a/Packages/validatejs/lib/validate.js b/Packages/validatejs/lib/validate.js
deleted file mode 100755
index ec942ac7a..000000000
--- a/Packages/validatejs/lib/validate.js
+++ /dev/null
@@ -1,1086 +0,0 @@
-/*!
- * validate.js 0.9.0
- *
- * (c) 2013-2015 Nicklas Ansman, 2013 Wrapp
- * Validate.js may be freely distributed under the MIT license.
- * For all details and documentation:
- * http://validatejs.org/
- */
-
-(function(exports, module, define) {
- "use strict";
-
- // The main function that calls the validators specified by the constraints.
- // The options are the following:
- // - format (string) - An option that controls how the returned value is formatted
- // * flat - Returns a flat array of just the error messages
- // * grouped - Returns the messages grouped by attribute (default)
- // * detailed - Returns an array of the raw validation data
- // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.
- //
- // Please note that the options are also passed to each validator.
- var validate = function(attributes, constraints, options) {
- options = v.extend({}, v.options, options);
-
- var results = v.runValidations(attributes, constraints, options)
- , attr
- , validator;
-
- for (attr in results) {
- for (validator in results[attr]) {
- if (v.isPromise(results[attr][validator])) {
- throw new Error("Use validate.async if you want support for promises");
- }
- }
- }
- return validate.processValidationResults(results, options);
- };
-
- var v = validate;
-
- // Copies over attributes from one or more sources to a single destination.
- // Very much similar to underscore's extend.
- // The first argument is the target object and the remaining arguments will be
- // used as sources.
- v.extend = function(obj) {
- [].slice.call(arguments, 1).forEach(function(source) {
- for (var attr in source) {
- obj[attr] = source[attr];
- }
- });
- return obj;
- };
-
- v.extend(validate, {
- // This is the version of the library as a semver.
- // The toString function will allow it to be coerced into a string
- version: {
- major: 0,
- minor: 9,
- patch: 0,
- metadata: "development",
- toString: function() {
- var version = v.format("%{major}.%{minor}.%{patch}", v.version);
- if (!v.isEmpty(v.version.metadata)) {
- version += "+" + v.version.metadata;
- }
- return version;
- }
- },
-
- // Below is the dependencies that are used in validate.js
-
- // The constructor of the Promise implementation.
- // If you are using Q.js, RSVP or any other A+ compatible implementation
- // override this attribute to be the constructor of that promise.
- // Since jQuery promises aren't A+ compatible they won't work.
- Promise: typeof Promise !== "undefined" ? Promise : /* istanbul ignore next */ null,
-
- EMPTY_STRING_REGEXP: /^\s*$/,
-
- // Runs the validators specified by the constraints object.
- // Will return an array of the format:
- // [{attribute: "", error: ""}, ...]
- runValidations: function(attributes, constraints, options) {
- var results = []
- , attr
- , validatorName
- , value
- , validators
- , validator
- , validatorOptions
- , error;
-
- if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {
- attributes = v.collectFormValues(attributes);
- }
-
- // Loops through each constraints, finds the correct validator and run it.
- for (attr in constraints) {
- value = v.getDeepObjectValue(attributes, attr);
- // This allows the constraints for an attribute to be a function.
- // The function will be called with the value, attribute name, the complete dict of
- // attributes as well as the options and constraints passed in.
- // This is useful when you want to have different
- // validations depending on the attribute value.
- validators = v.result(constraints[attr], value, attributes, attr, options, constraints);
-
- for (validatorName in validators) {
- validator = v.validators[validatorName];
-
- if (!validator) {
- error = v.format("Unknown validator %{name}", {name: validatorName});
- throw new Error(error);
- }
-
- validatorOptions = validators[validatorName];
- // This allows the options to be a function. The function will be
- // called with the value, attribute name, the complete dict of
- // attributes as well as the options and constraints passed in.
- // This is useful when you want to have different
- // validations depending on the attribute value.
- validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);
- if (!validatorOptions) {
- continue;
- }
- results.push({
- attribute: attr,
- value: value,
- validator: validatorName,
- globalOptions: options,
- attributes: attributes,
- options: validatorOptions,
- error: validator.call(validator,
- value,
- validatorOptions,
- attr,
- attributes,
- options)
- });
- }
- }
-
- return results;
- },
-
- // Takes the output from runValidations and converts it to the correct
- // output format.
- processValidationResults: function(errors, options) {
- var attr;
-
- errors = v.pruneEmptyErrors(errors, options);
- errors = v.expandMultipleErrors(errors, options);
- errors = v.convertErrorMessages(errors, options);
-
- switch (options.format || "grouped") {
- case "detailed":
- // Do nothing more to the errors
- break;
-
- case "flat":
- errors = v.flattenErrorsToArray(errors);
- break;
-
- case "grouped":
- errors = v.groupErrorsByAttribute(errors);
- for (attr in errors) {
- errors[attr] = v.flattenErrorsToArray(errors[attr]);
- }
- break;
-
- default:
- throw new Error(v.format("Unknown format %{format}", options));
- }
-
- return v.isEmpty(errors) ? undefined : errors;
- },
-
- // Runs the validations with support for promises.
- // This function will return a promise that is settled when all the
- // validation promises have been completed.
- // It can be called even if no validations returned a promise.
- async: function(attributes, constraints, options) {
- options = v.extend({}, v.async.options, options);
-
- var WrapErrors = options.wrapErrors || function(errors) {
- return errors;
- };
-
- // Removes unknown attributes
- if (options.cleanAttributes !== false) {
- attributes = v.cleanAttributes(attributes, constraints);
- }
-
- var results = v.runValidations(attributes, constraints, options);
-
- return new v.Promise(function(resolve, reject) {
- v.waitForResults(results).then(function() {
- var errors = v.processValidationResults(results, options);
- if (errors) {
- reject(new WrapErrors(errors, options, attributes, constraints));
- } else {
- resolve(attributes);
- }
- }, function(err) {
- reject(err);
- });
- });
- },
-
- single: function(value, constraints, options) {
- options = v.extend({}, v.single.options, options, {
- format: "flat",
- fullMessages: false
- });
- return v({single: value}, {single: constraints}, options);
- },
-
- // Returns a promise that is resolved when all promises in the results array
- // are settled. The promise returned from this function is always resolved,
- // never rejected.
- // This function modifies the input argument, it replaces the promises
- // with the value returned from the promise.
- waitForResults: function(results) {
- // Create a sequence of all the results starting with a resolved promise.
- return results.reduce(function(memo, result) {
- // If this result isn't a promise skip it in the sequence.
- if (!v.isPromise(result.error)) {
- return memo;
- }
-
- return memo.then(function() {
- return result.error.then(
- function(error) {
- result.error = error || null;
- },
- function(error) {
- if (error instanceof Error) {
- throw error;
- }
- v.error("Rejecting promises with the result is deprecated. Please use the resolve callback instead.");
- result.error = error;
- }
- );
- });
- }, new v.Promise(function(r) { r(); })); // A resolved promise
- },
-
- // If the given argument is a call: function the and: function return the value
- // otherwise just return the value. Additional arguments will be passed as
- // arguments to the function.
- // Example:
- // ```
- // result('foo') // 'foo'
- // result(Math.max, 1, 2) // 2
- // ```
- result: function(value) {
- var args = [].slice.call(arguments, 1);
- if (typeof value === 'function') {
- value = value.apply(null, args);
- }
- return value;
- },
-
- // Checks if the value is a number. This function does not consider NaN a
- // number like many other `isNumber` functions do.
- isNumber: function(value) {
- return typeof value === 'number' && !isNaN(value);
- },
-
- // Returns false if the object is not a function
- isFunction: function(value) {
- return typeof value === 'function';
- },
-
- // A simple check to verify that the value is an integer. Uses `isNumber`
- // and a simple modulo check.
- isInteger: function(value) {
- return v.isNumber(value) && value % 1 === 0;
- },
-
- // Uses the `Object` function to check if the given argument is an object.
- isObject: function(obj) {
- return obj === Object(obj);
- },
-
- // Simply checks if the object is an instance of a date
- isDate: function(obj) {
- return obj instanceof Date;
- },
-
- // Returns false if the object is `null` of `undefined`
- isDefined: function(obj) {
- return obj !== null && obj !== undefined;
- },
-
- // Checks if the given argument is a promise. Anything with a `then`
- // function is considered a promise.
- isPromise: function(p) {
- return !!p && v.isFunction(p.then);
- },
-
- isJqueryElement: function(o) {
- return o && v.isString(o.jquery);
- },
-
- isDomElement: function(o) {
- if (!o) {
- return false;
- }
-
- if (!v.isFunction(o.querySelectorAll) || !v.isFunction(o.querySelector)) {
- return false;
- }
-
- if (v.isObject(document) && o === document) {
- return true;
- }
-
- // http://stackoverflow.com/a/384380/699304
- /* istanbul ignore else */
- if (typeof HTMLElement === "object") {
- return o instanceof HTMLElement;
- } else {
- return o &&
- typeof o === "object" &&
- o !== null &&
- o.nodeType === 1 &&
- typeof o.nodeName === "string";
- }
- },
-
- isEmpty: function(value) {
- var attr;
-
- // Null and undefined are empty
- if (!v.isDefined(value)) {
- return true;
- }
-
- // functions are non empty
- if (v.isFunction(value)) {
- return false;
- }
-
- // Whitespace only strings are empty
- if (v.isString(value)) {
- return v.EMPTY_STRING_REGEXP.test(value);
- }
-
- // For arrays we use the length property
- if (v.isArray(value)) {
- return value.length === 0;
- }
-
- // Dates have no attributes but aren't empty
- if (v.isDate(value)) {
- return false;
- }
-
- // If we find at least one property we consider it non empty
- if (v.isObject(value)) {
- for (attr in value) {
- return false;
- }
- return true;
- }
-
- return false;
- },
-
- // Formats the specified strings with the given values like so:
- // ```
- // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar"
- // ```
- // If you want to write %{...} without having it replaced simply
- // prefix it with % like this `Foo: %%{foo}` and it will be returned
- // as `"Foo: %{foo}"`
- format: v.extend(function(str, vals) {
- if (!v.isString(str)) {
- return str;
- }
- return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {
- if (m1 === '%') {
- return "%{" + m2 + "}";
- } else {
- return String(vals[m2]);
- }
- });
- }, {
- // Finds %{key} style patterns in the given string
- FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g
- }),
-
- // "Prettifies" the given string.
- // Prettifying means replacing [.\_-] with spaces as well as splitting
- // camel case words.
- prettify: function(str) {
- if (v.isNumber(str)) {
- // If there are more than 2 decimals round it to two
- if ((str * 100) % 1 === 0) {
- return "" + str;
- } else {
- return parseFloat(Math.round(str * 100) / 100).toFixed(2);
- }
- }
-
- if (v.isArray(str)) {
- return str.map(function(s) { return v.prettify(s); }).join(", ");
- }
-
- if (v.isObject(str)) {
- return str.toString();
- }
-
- // Ensure the string is actually a string
- str = "" + str;
-
- return str
- // Splits keys separated by periods
- .replace(/([^\s])\.([^\s])/g, '$1 $2')
- // Removes backslashes
- .replace(/\\+/g, '')
- // Replaces - and - with space
- .replace(/[_-]/g, ' ')
- // Splits camel cased words
- .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {
- return "" + m1 + " " + m2.toLowerCase();
- })
- .toLowerCase();
- },
-
- stringifyValue: function(value) {
- return v.prettify(value);
- },
-
- isString: function(value) {
- return typeof value === 'string';
- },
-
- isArray: function(value) {
- return {}.toString.call(value) === '[object Array]';
- },
-
- contains: function(obj, value) {
- if (!v.isDefined(obj)) {
- return false;
- }
- if (v.isArray(obj)) {
- return obj.indexOf(value) !== -1;
- }
- return value in obj;
- },
-
- forEachKeyInKeypath: function(object, keypath, callback) {
- if (!v.isString(keypath)) {
- return undefined;
- }
-
- var key = ""
- , i
- , escape = false;
-
- for (i = 0; i < keypath.length; ++i) {
- switch (keypath[i]) {
- case '.':
- if (escape) {
- escape = false;
- key += '.';
- } else {
- object = callback(object, key, false);
- key = "";
- }
- break;
-
- case '\\':
- if (escape) {
- escape = false;
- key += '\\';
- } else {
- escape = true;
- }
- break;
-
- default:
- escape = false;
- key += keypath[i];
- break;
- }
- }
-
- return callback(object, key, true);
- },
-
- getDeepObjectValue: function(obj, keypath) {
- if (!v.isObject(obj)) {
- return undefined;
- }
-
- return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {
- if (v.isObject(obj)) {
- return obj[key];
- }
- });
- },
-
- // This returns an object with all the values of the form.
- // It uses the input name as key and the value as value
- // So for example this:
- //
- // would return:
- // {email: "foo@bar.com"}
- collectFormValues: function(form, options) {
- var values = {}
- , i
- , input
- , inputs
- , value;
-
- if (v.isJqueryElement(form)) {
- form = form[0];
- }
-
- if (!form) {
- return values;
- }
-
- options = options || {};
-
- inputs = form.querySelectorAll("input[name], textarea[name]");
- for (i = 0; i < inputs.length; ++i) {
- input = inputs.item(i);
-
- if (v.isDefined(input.getAttribute("data-ignored"))) {
- continue;
- }
-
- value = v.sanitizeFormValue(input.value, options);
- if (input.type === "number") {
- value = value ? +value : null;
- } else if (input.type === "checkbox") {
- if (input.attributes.value) {
- if (!input.checked) {
- value = values[input.name] || null;
- }
- } else {
- value = input.checked;
- }
- } else if (input.type === "radio") {
- if (!input.checked) {
- value = values[input.name] || null;
- }
- }
- values[input.name] = value;
- }
-
- inputs = form.querySelectorAll("select[name]");
- for (i = 0; i < inputs.length; ++i) {
- input = inputs.item(i);
- value = v.sanitizeFormValue(input.options[input.selectedIndex].value, options);
- values[input.name] = value;
- }
-
- return values;
- },
-
- sanitizeFormValue: function(value, options) {
- if (options.trim && v.isString(value)) {
- value = value.trim();
- }
-
- if (options.nullify !== false && value === "") {
- return null;
- }
- return value;
- },
-
- capitalize: function(str) {
- if (!v.isString(str)) {
- return str;
- }
- return str[0].toUpperCase() + str.slice(1);
- },
-
- // Remove all errors who's error attribute is empty (null or undefined)
- pruneEmptyErrors: function(errors) {
- return errors.filter(function(error) {
- return !v.isEmpty(error.error);
- });
- },
-
- // In
- // [{error: ["err1", "err2"], ...}]
- // Out
- // [{error: "err1", ...}, {error: "err2", ...}]
- //
- // All attributes in an error with multiple messages are duplicated
- // when expanding the errors.
- expandMultipleErrors: function(errors) {
- var ret = [];
- errors.forEach(function(error) {
- // Removes errors without a message
- if (v.isArray(error.error)) {
- error.error.forEach(function(msg) {
- ret.push(v.extend({}, error, {error: msg}));
- });
- } else {
- ret.push(error);
- }
- });
- return ret;
- },
-
- // Converts the error mesages by prepending the attribute name unless the
- // message is prefixed by ^
- convertErrorMessages: function(errors, options) {
- options = options || {};
-
- var ret = [];
- errors.forEach(function(errorInfo) {
- var error = v.result(errorInfo.error,
- errorInfo.value,
- errorInfo.attribute,
- errorInfo.options,
- errorInfo.attributes,
- errorInfo.globalOptions);
-
- if (!v.isString(error)) {
- ret.push(errorInfo);
- return;
- }
-
- if (error[0] === '^') {
- error = error.slice(1);
- } else if (options.fullMessages !== false) {
- error = v.capitalize(v.prettify(errorInfo.attribute)) + " " + error;
- }
- error = error.replace(/\\\^/g, "^");
- error = v.format(error, {value: v.stringifyValue(errorInfo.value)});
- ret.push(v.extend({}, errorInfo, {error: error}));
- });
- return ret;
- },
-
- // In:
- // [{attribute: "", ...}]
- // Out:
- // {"": [{attribute: "", ...}]}
- groupErrorsByAttribute: function(errors) {
- var ret = {};
- errors.forEach(function(error) {
- var list = ret[error.attribute];
- if (list) {
- list.push(error);
- } else {
- ret[error.attribute] = [error];
- }
- });
- return ret;
- },
-
- // In:
- // [{error: "", ...}, {error: "", ...}]
- // Out:
- // ["", ""]
- flattenErrorsToArray: function(errors) {
- return errors.map(function(error) { return error.error; });
- },
-
- cleanAttributes: function(attributes, whitelist) {
- function whitelistCreator(obj, key, last) {
- if (v.isObject(obj[key])) {
- return obj[key];
- }
- return (obj[key] = last ? true : {});
- }
-
- function buildObjectWhitelist(whitelist) {
- var ow = {}
- , lastObject
- , attr;
- for (attr in whitelist) {
- if (!whitelist[attr]) {
- continue;
- }
- v.forEachKeyInKeypath(ow, attr, whitelistCreator);
- }
- return ow;
- }
-
- function cleanRecursive(attributes, whitelist) {
- if (!v.isObject(attributes)) {
- return attributes;
- }
-
- var ret = v.extend({}, attributes)
- , w
- , attribute;
-
- for (attribute in attributes) {
- w = whitelist[attribute];
-
- if (v.isObject(w)) {
- ret[attribute] = cleanRecursive(ret[attribute], w);
- } else if (!w) {
- delete ret[attribute];
- }
- }
- return ret;
- }
-
- if (!v.isObject(whitelist) || !v.isObject(attributes)) {
- return {};
- }
-
- whitelist = buildObjectWhitelist(whitelist);
- return cleanRecursive(attributes, whitelist);
- },
-
- exposeModule: function(validate, root, exports, module, define) {
- if (exports) {
- if (module && module.exports) {
- exports = module.exports = validate;
- }
- exports.validate = validate;
- } else {
- root.validate = validate;
- if (validate.isFunction(define) && define.amd) {
- define([], function () { return validate; });
- }
- }
- },
-
- warn: function(msg) {
- if (typeof console !== "undefined" && console.warn) {
- console.warn("[validate.js] " + msg);
- }
- },
-
- error: function(msg) {
- if (typeof console !== "undefined" && console.error) {
- console.error("[validate.js] " + msg);
- }
- }
- });
-
- validate.validators = {
- // Presence validates that the value isn't empty
- presence: function(value, options) {
- options = v.extend({}, this.options, options);
- if (v.isEmpty(value)) {
- return options.message || this.message || "can't be blank";
- }
- },
- length: function(value, options, attribute) {
- // Empty values are allowed
- if (v.isEmpty(value)) {
- return;
- }
-
- options = v.extend({}, this.options, options);
-
- var is = options.is
- , maximum = options.maximum
- , minimum = options.minimum
- , tokenizer = options.tokenizer || function(val) { return val; }
- , err
- , errors = [];
-
- value = tokenizer(value);
- var length = value.length;
- if(!v.isNumber(length)) {
- v.error(v.format("Attribute %{attr} has a non numeric value for `length`", {attr: attribute}));
- return options.message || this.notValid || "has an incorrect length";
- }
-
- // Is checks
- if (v.isNumber(is) && length !== is) {
- err = options.wrongLength ||
- this.wrongLength ||
- "is the wrong length (should be %{count} characters)";
- errors.push(v.format(err, {count: is}));
- }
-
- if (v.isNumber(minimum) && length < minimum) {
- err = options.tooShort ||
- this.tooShort ||
- "is too short (minimum is %{count} characters)";
- errors.push(v.format(err, {count: minimum}));
- }
-
- if (v.isNumber(maximum) && length > maximum) {
- err = options.tooLong ||
- this.tooLong ||
- "is too long (maximum is %{count} characters)";
- errors.push(v.format(err, {count: maximum}));
- }
-
- if (errors.length > 0) {
- return options.message || errors;
- }
- },
- numericality: function(value, options) {
- // Empty values are fine
- if (v.isEmpty(value)) {
- return;
- }
-
- options = v.extend({}, this.options, options);
-
- var errors = []
- , name
- , count
- , checks = {
- greaterThan: function(v, c) { return v > c; },
- greaterThanOrEqualTo: function(v, c) { return v >= c; },
- equalTo: function(v, c) { return v === c; },
- lessThan: function(v, c) { return v < c; },
- lessThanOrEqualTo: function(v, c) { return v <= c; }
- };
-
- // Coerce the value to a number unless we're being strict.
- if (options.noStrings !== true && v.isString(value)) {
- value = +value;
- }
-
- // If it's not a number we shouldn't continue since it will compare it.
- if (!v.isNumber(value)) {
- return options.message || options.notValid || this.notValid || "is not a number";
- }
-
- // Same logic as above, sort of. Don't bother with comparisons if this
- // doesn't pass.
- if (options.onlyInteger && !v.isInteger(value)) {
- return options.message || options.notInteger || this.notInteger || "must be an integer";
- }
-
- for (name in checks) {
- count = options[name];
- if (v.isNumber(count) && !checks[name](value, count)) {
- // This picks the default message if specified
- // For example the greaterThan check uses the message from
- // this.notGreaterThan so we capitalize the name and prepend "not"
- var key = "not" + v.capitalize(name);
- var msg = options[key] || this[key] || "must be %{type} %{count}";
-
- errors.push(v.format(msg, {
- count: count,
- type: v.prettify(name)
- }));
- }
- }
-
- if (options.odd && value % 2 !== 1) {
- errors.push(options.notOdd || this.notOdd || "must be odd");
- }
- if (options.even && value % 2 !== 0) {
- errors.push(options.notEven || this.notEven || "must be even");
- }
-
- if (errors.length) {
- return options.message || errors;
- }
- },
- datetime: v.extend(function(value, options) {
- if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {
- throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator");
- }
-
- // Empty values are fine
- if (v.isEmpty(value)) {
- return;
- }
-
- options = v.extend({}, this.options, options);
-
- var err
- , errors = []
- , earliest = options.earliest ? this.parse(options.earliest, options) : NaN
- , latest = options.latest ? this.parse(options.latest, options) : NaN;
-
- value = this.parse(value, options);
-
- // 86400000 is the number of seconds in a day, this is used to remove
- // the time from the date
- if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {
- return options.message || this.notValid || "must be a valid date";
- }
-
- if (!isNaN(earliest) && value < earliest) {
- err = this.tooEarly || "must be no earlier than %{date}";
- err = v.format(err, {date: this.format(earliest, options)});
- errors.push(err);
- }
-
- if (!isNaN(latest) && value > latest) {
- err = this.tooLate || "must be no later than %{date}";
- err = v.format(err, {date: this.format(latest, options)});
- errors.push(err);
- }
-
- if (errors.length) {
- return options.message || errors;
- }
- }, {
- parse: null,
- format: null
- }),
- date: function(value, options) {
- options = v.extend({}, options, {dateOnly: true});
- return v.validators.datetime.call(v.validators.datetime, value, options);
- },
- format: function(value, options) {
- if (v.isString(options) || (options instanceof RegExp)) {
- options = {pattern: options};
- }
-
- options = v.extend({}, this.options, options);
-
- var message = options.message || this.message || "is invalid"
- , pattern = options.pattern
- , match;
-
- // Empty values are allowed
- if (v.isEmpty(value)) {
- return;
- }
- if (!v.isString(value)) {
- return message;
- }
-
- if (v.isString(pattern)) {
- pattern = new RegExp(options.pattern, options.flags);
- }
- match = pattern.exec(value);
- if (!match || match[0].length != value.length) {
- return message;
- }
- },
- inclusion: function(value, options) {
- // Empty values are fine
- if (v.isEmpty(value)) {
- return;
- }
- if (v.isArray(options)) {
- options = {within: options};
- }
- options = v.extend({}, this.options, options);
- if (v.contains(options.within, value)) {
- return;
- }
- var message = options.message ||
- this.message ||
- "^%{value} is not included in the list";
- return v.format(message, {value: value});
- },
- exclusion: function(value, options) {
- // Empty values are fine
- if (v.isEmpty(value)) {
- return;
- }
- if (v.isArray(options)) {
- options = {within: options};
- }
- options = v.extend({}, this.options, options);
- if (!v.contains(options.within, value)) {
- return;
- }
- var message = options.message || this.message || "^%{value} is restricted";
- return v.format(message, {value: value});
- },
- email: v.extend(function(value, options) {
- options = v.extend({}, this.options, options);
- var message = options.message || this.message || "is not a valid email";
- // Empty values are fine
- if (v.isEmpty(value)) {
- return;
- }
- if (!v.isString(value)) {
- return message;
- }
- if (!this.PATTERN.exec(value)) {
- return message;
- }
- }, {
- PATTERN: /^[a-z0-9\u007F-\uffff!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9\u007F-\uffff!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,}$/i
- }),
- equality: function(value, options, attribute, attributes) {
- if (v.isEmpty(value)) {
- return;
- }
-
- if (v.isString(options)) {
- options = {attribute: options};
- }
- options = v.extend({}, this.options, options);
- var message = options.message ||
- this.message ||
- "is not equal to %{attribute}";
-
- if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {
- throw new Error("The attribute must be a non empty string");
- }
-
- var otherValue = v.getDeepObjectValue(attributes, options.attribute)
- , comparator = options.comparator || function(v1, v2) {
- return v1 === v2;
- };
-
- if (!comparator(value, otherValue, options, attribute, attributes)) {
- return v.format(message, {attribute: v.prettify(options.attribute)});
- }
- },
-
- // A URL validator that is used to validate URLs with the ability to
- // restrict schemes and some domains.
- url: function(value, options) {
- if (v.isEmpty(value)) {
- return;
- }
-
- options = v.extend({}, this.options, options);
-
- var message = options.message || this.message || "is not a valid url"
- , schemes = options.schemes || this.schemes || ['http', 'https']
- , allowLocal = options.allowLocal || this.allowLocal || false;
-
- if (!v.isString(value)) {
- return message;
- }
-
- // https://gist.github.com/dperini/729294
- var regex =
- "^" +
- // schemes
- "(?:(?:" + schemes.join("|") + "):\\/\\/)" +
- // credentials
- "(?:\\S+(?::\\S*)?@)?";
-
- regex += "(?:";
-
- var hostname =
- "(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)" +
- "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*" +
- "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))";
-
- // This ia a special case for the localhost hostname
- if (allowLocal) {
- hostname = "(?:localhost|" + hostname + ")";
- } else {
- // private & local addresses
- regex +=
- "(?!10(?:\\.\\d{1,3}){3})" +
- "(?!127(?:\\.\\d{1,3}){3})" +
- "(?!169\\.254(?:\\.\\d{1,3}){2})" +
- "(?!192\\.168(?:\\.\\d{1,3}){2})" +
- "(?!172" +
- "\\.(?:1[6-9]|2\\d|3[0-1])" +
- "(?:\\.\\d{1,3})" +
- "{2})";
- }
-
- // reserved addresses
- regex +=
- "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" +
- "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" +
- "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" +
- "|" +
- hostname +
- // port number
- "(?::\\d{2,5})?" +
- // path
- "(?:\\/[^\\s]*)?" +
- "$";
-
- var PATTERN = new RegExp(regex, 'i');
- if (!PATTERN.exec(value)) {
- return message;
- }
- }
- };
-
- validate.exposeModule(validate, this, exports, module, define);
-}).call(this,
- typeof exports !== 'undefined' ? /* istanbul ignore next */ exports : null,
- typeof module !== 'undefined' ? /* istanbul ignore next */ module : null,
- typeof define !== 'undefined' ? /* istanbul ignore next */ define : null);
diff --git a/Packages/validatejs/package.js b/Packages/validatejs/package.js
deleted file mode 100755
index 0aad995e5..000000000
--- a/Packages/validatejs/package.js
+++ /dev/null
@@ -1,16 +0,0 @@
-Package.describe({
- name: 'validatejs',
- summary: 'OHIF Validatejs temporary',
- version: '0.0.1'
-});
-
-Package.onUse(function(api) {
- api.versionsFrom('1.3.5.1');
-
- api.use('ecmascript');
-
- api.addFiles('lib/validate.js', 'client');
- api.addFiles('load.js', 'client');
-
- api.export('validate', 'client');
-});
\ No newline at end of file
diff --git a/StandaloneViewer/StandaloneViewer/.meteor/packages b/StandaloneViewer/StandaloneViewer/.meteor/packages
index 7109146e9..8aee66efb 100644
--- a/StandaloneViewer/StandaloneViewer/.meteor/packages
+++ b/StandaloneViewer/StandaloneViewer/.meteor/packages
@@ -27,7 +27,6 @@ ohif:cornerstone-settings
ohif:viewerbase
ohif:metadata
ohif:study-list
-ohif:dicomweb-client
ohif:measurement-table
aldeed:template-extension
diff --git a/StandaloneViewer/StandaloneViewer/.meteor/versions b/StandaloneViewer/StandaloneViewer/.meteor/versions
index cd7abe323..f5b9647da 100644
--- a/StandaloneViewer/StandaloneViewer/.meteor/versions
+++ b/StandaloneViewer/StandaloneViewer/.meteor/versions
@@ -78,8 +78,6 @@ ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:cornerstone-settings@0.0.1
ohif:design@0.0.1
-ohif:dicom-services@0.0.1
-ohif:dicomweb-client@0.0.1
ohif:hanging-protocols@0.0.1
ohif:header@0.0.1
ohif:hotkeys@0.0.1
@@ -123,6 +121,5 @@ tracker@1.2.0
ui@1.0.13
underscore@1.0.10
url@1.2.0
-validatejs@0.0.1
webapp@1.6.2
webapp-hashing@1.0.9
diff --git a/StandaloneViewer/StandaloneViewer/client/components/standaloneViewerMain/standaloneViewerMain.js b/StandaloneViewer/StandaloneViewer/client/components/standaloneViewerMain/standaloneViewerMain.js
index ab8f311a9..4e0970fb5 100644
--- a/StandaloneViewer/StandaloneViewer/client/components/standaloneViewerMain/standaloneViewerMain.js
+++ b/StandaloneViewer/StandaloneViewer/client/components/standaloneViewerMain/standaloneViewerMain.js
@@ -18,6 +18,9 @@ Template.standaloneViewerMain.onCreated(() => {
// Metadata configuration
const metadataProvider = OHIF.viewer.metadataProvider;
cornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));
+
+ // Set the current context
+ OHIF.context.set('viewer');
});
Template.standaloneViewerMain.onRendered(() => {
@@ -58,4 +61,7 @@ Template.standaloneViewerMain.onDestroyed(() => {
// Clear references to all stacks in the StackManager
OHIF.viewerbase.stackManager.clearStacks();
+
+ // Reset the current context
+ OHIF.context.set(null);
});
diff --git a/config/orthancDICOMWeb.json b/config/orthancDICOMWeb.json
index 42ecf2060..5b899835d 100644
--- a/config/orthancDICOMWeb.json
+++ b/config/orthancDICOMWeb.json
@@ -6,7 +6,7 @@
"wadoUriRoot": "http://localhost:8042/wado",
"qidoRoot": "http://localhost:8042/dicom-web",
"wadoRoot": "http://localhost:8042/dicom-web",
- "qidoSupportsIncludeField": false,
+ "qidoSupportsIncludeField": true,
"imageRendering": "wadouri",
"thumbnailRendering": "wadouri",
"requestOptions": {