From 1366e1f461f0e8ddfa942452b27b03414cf7a720 Mon Sep 17 00:00:00 2001 From: zaid al-safadi Date: Sun, 19 Feb 2017 23:24:30 -0500 Subject: [PATCH] Support Delete Study to DICOMcloud server. Issue #8 --- DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts | 46 + DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts | 23 +- .../Proxies/ServerConfiguration.ts | 5 + DICOMwebJS.Proxies/Proxies/StowRsProxy.ts | 20 +- DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts | 22 +- DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts | 13 +- .../DICOMwebJS/DICOMwebJS.Proxies.d.ts | 22 +- Demo/App.ts | 12 +- Demo/Controllers/DemoController.cs | 12 + Demo/LESS/bootswatch-flatly.less | 334 ------- Demo/LESS/flatly-variables.less | 869 ------------------ Demo/Query/QueryController.ts | 18 +- Demo/Query/QueryView.ts | 25 +- Demo/Scripts/DICOMwebJS.Proxies.js | 133 ++- .../DICOMwebJS/DICOMwebJS.Proxies.d.ts | 22 +- Demo/Views/Demo/_StudyItem.cshtml | 6 +- dist/DICOMwebJS.Proxies.d.ts | 22 +- dist/DICOMwebJS.Proxies.js | 133 ++- dist/DICOMwebJS.Proxies.js.map | 2 +- 19 files changed, 439 insertions(+), 1300 deletions(-) create mode 100644 DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts delete mode 100644 Demo/LESS/bootswatch-flatly.less delete mode 100644 Demo/LESS/flatly-variables.less diff --git a/DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts b/DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts new file mode 100644 index 0000000..1b53620 --- /dev/null +++ b/DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts @@ -0,0 +1,46 @@ +class DelowRsProxy +{ + public _baseUrl: string = ""; + + constructor(baseUrl: string = null) { + this._baseUrl = baseUrl; + } + + public get BaseUrl() { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getDelowRsUrl(); + } + else + { + return this._baseUrl; + } + } + + public set BaseUrl(value: string) { + this._baseUrl = value; + } + + public deleteStudy(studyUID: string): JQueryPromise { + var url = this.BaseUrl + "/studies/" + studyUID + "/"; //last part "/" is needed for proper routing + let settings: JQueryAjaxSettings = { + url: url, + type: "DELETE" + } + + if (DICOMwebJS.ServerConfiguration.IncludeAuthorizationHeader) { + settings.headers = { "Authorization": DICOMwebJS.ServerConfiguration.SecurityToken }; + } + + var deffered = $.Deferred(); + + $.ajax(settings).then( + (data) => { + return deffered.resolve(data); + }, + (jqxhr, textStatus, error) => { + return deffered.reject(Error(error)); + }); + + return deffered.promise(); + } +} \ No newline at end of file diff --git a/DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts b/DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts index 04d47b7..816c180 100644 --- a/DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts +++ b/DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts @@ -1,10 +1,23 @@ class QidoRsProxy { - public BaseUrl: string = ""; - constructor(baseUrl: string) - { - this.BaseUrl = baseUrl; - } + public _baseUrl: string = ""; + + constructor(baseUrl: string = null) { + this._baseUrl = baseUrl; + } + + public get BaseUrl() { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getQidoUrl(); + } + else { + return this._baseUrl; + } + } + + public set BaseUrl(value: string) { + this._baseUrl = value; + } //findPatients(query: PatientParams, options: QueryOptions) { // //there is no qido patient diff --git a/DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts b/DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts index ff45002..0e8b278 100644 --- a/DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts +++ b/DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts @@ -5,6 +5,7 @@ export var WadoRsPart : string = "wadors"; export var StowPart: string = "stowrs"; export var QidoPart: string = "qidors"; + export var DelowRsPart: string = "delowrs"; export var IncludeAuthorizationHeader: boolean = false; export var SecurityToken: string = ""; @@ -24,5 +25,9 @@ export function getQidoUrl(): string { return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.QidoPart; } + + export function getDelowRsUrl(): string { + return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.DelowRsPart; + } } } \ No newline at end of file diff --git a/DICOMwebJS.Proxies/Proxies/StowRsProxy.ts b/DICOMwebJS.Proxies/Proxies/StowRsProxy.ts index add2edd..d5bd7ca 100644 --- a/DICOMwebJS.Proxies/Proxies/StowRsProxy.ts +++ b/DICOMwebJS.Proxies/Proxies/StowRsProxy.ts @@ -1,7 +1,21 @@ class StowRsProxy { - public BaseUrl: string = ""; - constructor(baseUrl: string) { - this.BaseUrl = baseUrl; + public _baseUrl: string = ""; + + constructor(baseUrl: string = null) { + this._baseUrl = baseUrl; + } + + public get BaseUrl() { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getStowUrl(); + } + else { + return this._baseUrl; + } + } + + public set BaseUrl(value: string) { + this._baseUrl = value; } private _returnJson: boolean = true; diff --git a/DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts b/DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts index 88dd283..f70275e 100644 --- a/DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts +++ b/DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts @@ -1,18 +1,24 @@  class WadoRsProxy{ - private _baseUrl: string; + public _baseUrl: string = ""; + + constructor(baseUrl: string = null) { + this._baseUrl = baseUrl; + } public get BaseUrl() { - return this._baseUrl; + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getWadoRsUrl(); + } + else { + return this._baseUrl; + } } + public set BaseUrl(value: string) { this._baseUrl = value; } - public constructor(baseUrl: string) { - this._baseUrl = baseUrl; - } - public getStudy ( studyInstanceUid: string, @@ -138,7 +144,7 @@ class WadoRsProxy{ ): JQueryPromise<{}> { var deffered = $.Deferred(); - var url = this._baseUrl + urlRsPart; + var url = this.BaseUrl + urlRsPart; var xhr = new XMLHttpRequest(); var acceptHeader = MimeTypes.getMultiPartAcceptHeader( acceptDataType ) ; @@ -191,7 +197,7 @@ class WadoRsProxy{ ): JQueryPromise<{}> { var deffered = $.Deferred(); - var url = this._baseUrl + urlRsPart; + var url = this.BaseUrl + urlRsPart; var xhr = new XMLHttpRequest(); diff --git a/DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts b/DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts index 597b0ed..3007e6f 100644 --- a/DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts +++ b/DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts @@ -2,16 +2,21 @@ { private _xhr: XMLHttpRequest; private static _QueryParamsFormatted: string = "?RequestType=wado&studyUID={0}&seriesUID={1}&objectUID={2}" - private _baseUrl: string; + public _baseUrl: string = ""; - constructor(baseUrl: string) - { + constructor(baseUrl: string = null) { this._baseUrl = baseUrl; } public get BaseUrl() { - return this._baseUrl; + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getWadoUriUrl(); + } + else { + return this._baseUrl; + } } + public set BaseUrl(value: string) { this._baseUrl = value; diff --git a/DICOMwebJS.Proxies/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts b/DICOMwebJS.Proxies/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts index 8a20687..cb69883 100644 --- a/DICOMwebJS.Proxies/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts +++ b/DICOMwebJS.Proxies/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts @@ -1,3 +1,9 @@ +declare class DelowRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); + BaseUrl: string; + deleteStudy(studyUID: string): JQueryPromise; +} declare module DICOMwebJS { module ServerConfiguration { var BaseServerUrl: string; @@ -5,12 +11,14 @@ declare module DICOMwebJS { var WadoRsPart: string; var StowPart: string; var QidoPart: string; + var DelowRsPart: string; var IncludeAuthorizationHeader: boolean; var SecurityToken: string; function getWadoUriUrl(): string; function getWadoRsUrl(): string; function getStowUrl(): string; function getQidoUrl(): string; + function getDelowRsUrl(): string; } } declare class MimeTypes { @@ -25,8 +33,9 @@ declare class MimeTypes { static getMultiPartAcceptHeader(mimeType: string): string; } declare class QidoRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); findStudies(query: queryParams): void; findSeries(query: queryParams): void; findInstances(query: queryParams): void; @@ -73,8 +82,9 @@ declare class InstanceParams extends SeriesParams { InstanceNumber: string; } declare class StowRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); private _returnJson; returnJson: boolean; StoreInstance(fileBuffer: ArrayBuffer, successCallback: (xhr: XMLHttpRequest) => void, failureCallback: (error: Event) => void): void; @@ -83,8 +93,8 @@ declare class StowRsProxy { declare class WadoUriProxy { private _xhr; private static _QueryParamsFormatted; - private _baseUrl; - constructor(baseUrl: string); + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; getDicomInstance(instanceData: CommonDicomInstanceParams, anonymize: boolean, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void; getJpegImage(instanceData: CommonDicomInstanceParams, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void; @@ -102,9 +112,9 @@ declare class WadoImageParams { transferSyntax: string; } declare class WadoRsProxy { - private _baseUrl; + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); getStudy(studyInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; getSeries(studyInstanceUid: string, seriesInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; getObjectInstance(studyInstanceUid: string, seriesInstanceUid: string, sopInstanceUID: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; diff --git a/Demo/App.ts b/Demo/App.ts index f66e026..9b9c86e 100644 --- a/Demo/App.ts +++ b/Demo/App.ts @@ -21,12 +21,13 @@ class app { } var model = new QueryModel(); - var rsProxy = new WadoRsProxy(DICOMwebJS.ServerConfiguration.getWadoRsUrl()); - var uriProxy = new WadoUriProxy(DICOMwebJS.ServerConfiguration.getWadoUriUrl()); - var qidoProxy = new QidoRsProxy(DICOMwebJS.ServerConfiguration.getQidoUrl()); + var rsProxy = new WadoRsProxy(); + var uriProxy = new WadoUriProxy(); + var qidoProxy = new QidoRsProxy(); var rsService = new RetrieveService(rsProxy); + var delowProxy = new DelowRsProxy(); var queryView = new QueryView(document.getElementById("#content"), model, rsService ); - var queryController = new QueryController(queryView, model, qidoProxy, rsService, uriProxy); + var queryController = new QueryController(queryView, model, qidoProxy, rsService, uriProxy, delowProxy); var element = $('#dicomImage').get(0); var viewer = new WadoViewer(element, uriProxy); @@ -60,9 +61,6 @@ class app { $("#serverList").change(function () { DICOMwebJS.ServerConfiguration.BaseServerUrl = $("#serverList").val(); - rsProxy.BaseUrl = DICOMwebJS.ServerConfiguration.getWadoRsUrl(); - uriProxy.BaseUrl = DICOMwebJS.ServerConfiguration.getWadoUriUrl(); - qidoProxy.BaseUrl = DICOMwebJS.ServerConfiguration.getQidoUrl(); }); } diff --git a/Demo/Controllers/DemoController.cs b/Demo/Controllers/DemoController.cs index 09ba37e..cc11aad 100644 --- a/Demo/Controllers/DemoController.cs +++ b/Demo/Controllers/DemoController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Configuration; using System.Linq; +using System.Security.Claims; using System.Web; using System.Web.Mvc; using Demo.Models ; @@ -14,6 +15,12 @@ public class DemoController : Controller // GET: Demo public ActionResult Index() { + + if( Authorize() && !HttpContext.User.Identity.IsAuthenticated) + { + return new HttpUnauthorizedResult ( ) ; + } + var serverUrl = ConfigurationManager.AppSettings["app:serverUrl"]; @@ -37,6 +44,11 @@ public ActionResult Index() } ).ToArray ( ) ) ) ; } + private bool Authorize ( ) + { + return string.Compare (HttpContext.Request.QueryString["auth"], bool.TrueString, true) == 0 ; + } + [Route("_StudyItem")] [Route("dicomwebjs/_StudyItem")] public ActionResult _StudyItem() diff --git a/Demo/LESS/bootswatch-flatly.less b/Demo/LESS/bootswatch-flatly.less deleted file mode 100644 index 71ca7fc..0000000 --- a/Demo/LESS/bootswatch-flatly.less +++ /dev/null @@ -1,334 +0,0 @@ -// Flatly 3.3.5 -// Bootswatch -// ----------------------------------------------------- - -@web-font-path: "https://fonts.googleapis.com/css?family=Lato:400,700,400italic"; - -.web-font(@path) { - @import url("@{path}"); -} -.web-font(@web-font-path); - -// Navbar ===================================================================== - -.navbar { - border-width: 0; - - &-default { - - .badge { - background-color: #fff; - color: @navbar-default-bg; - } - } - - &-inverse { - - .badge { - background-color: #fff; - color: @navbar-inverse-bg; - } - } - - &-brand { - line-height: 1; - } -} - -// Buttons ==================================================================== - -.btn { - border-width: 2px; -} - -.btn:active { - .box-shadow(none); -} - -.btn-group.open .dropdown-toggle { - .box-shadow(none); -} - -// Typography ================================================================= - -.text-primary, -.text-primary:hover { - color: @brand-primary; -} - -.text-success, -.text-success:hover { - color: @brand-success; -} - -.text-danger, -.text-danger:hover { - color: @brand-danger; -} - -.text-warning, -.text-warning:hover { - color: @brand-warning; -} - -.text-info, -.text-info:hover { - color: @brand-info; -} - -// Tables ===================================================================== - -table, -.table { - - a:not(.btn) { - text-decoration: underline; - } - - .dropdown-menu a { - text-decoration: none; - } - - .success, - .warning, - .danger, - .info { - color: #fff; - - > th > a, - > td > a, - > a { - color: #fff; - } - } - - > thead > tr > th, - > tbody > tr > th, - > tfoot > tr > th, - > thead > tr > td, - > tbody > tr > td, - > tfoot > tr > td { - border: none; - } - - &-bordered > thead > tr > th, - &-bordered > tbody > tr > th, - &-bordered > tfoot > tr > th, - &-bordered > thead > tr > td, - &-bordered > tbody > tr > td, - &-bordered > tfoot > tr > td { - border: 1px solid @table-border-color; - } -} - -// Forms ====================================================================== - -.form-control, -input { - border-width: 2px; - .box-shadow(none); - - &:focus { - .box-shadow(none); - } -} - -.has-warning { - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label, - .form-control-feedback { - color: @brand-warning; - } - - .form-control, - .form-control:focus { - border: 2px solid @brand-warning; - } - - .input-group-addon { - border-color: @brand-warning; - } -} - -.has-error { - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label, - .form-control-feedback { - color: @brand-danger; - } - - .form-control, - .form-control:focus { - border: 2px solid @brand-danger; - } - - .input-group-addon { - border-color: @brand-danger; - } -} - -.has-success { - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label, - .form-control-feedback { - color: @brand-success; - } - - .form-control, - .form-control:focus { - border: 2px solid @brand-success; - } - - .input-group-addon { - border-color: @brand-success; - } -} - -// Navs ======================================================================= - -.nav { - .open > a, - .open > a:hover, - .open > a:focus { - border-color: transparent; - } -} - -.pager { - a, - a:hover { - color: #fff; - } - - .disabled { - &>a, - &>a:hover, - &>a:focus, - &>span { - background-color: @pagination-disabled-bg; - } - } -} - -// Indicators ================================================================= - -.close { - color: #fff; - text-decoration: none; - opacity: 0.4; - - &:hover, - &:focus { - color: #fff; - opacity: 1; - } -} - -.alert { - - .alert-link { - color: #fff; - text-decoration: underline; - } -} - -// Progress bars ============================================================== - -.progress { - height: 10px; - .box-shadow(none); - .progress-bar { - font-size: 10px; - line-height: 10px; - } -} - -// Containers ================================================================= - -.well { - .box-shadow(none); -} - -a.list-group-item { - - &.active, - &.active:hover, - &.active:focus { - border-color: @list-group-border; - } - - &-success { - &.active { - background-color: @state-success-bg; - } - - &.active:hover, - &.active:focus { - background-color: darken(@state-success-bg, 5%); - } - } - - &-warning { - &.active { - background-color: @state-warning-bg; - } - - &.active:hover, - &.active:focus { - background-color: darken(@state-warning-bg, 5%); - } - } - - &-danger { - &.active { - background-color: @state-danger-bg; - } - - &.active:hover, - &.active:focus { - background-color: darken(@state-danger-bg, 5%); - } - } -} - -.panel { - &-default { - .close { - color: @text-color; - } - } -} - -.modal { - .close { - color: @text-color; - } -} - -.popover { - color: @text-color; -} \ No newline at end of file diff --git a/Demo/LESS/flatly-variables.less b/Demo/LESS/flatly-variables.less deleted file mode 100644 index 797f827..0000000 --- a/Demo/LESS/flatly-variables.less +++ /dev/null @@ -1,869 +0,0 @@ -// Flatly 3.3.6 -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #000; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: #7b8a8b; // #333 -@gray: #95a5a6; // #555 -@gray-light: #b4bcc2; // #999 -@gray-lighter: #ecf0f1; // #eee - -@brand-primary: #2C3E50; -@brand-success: #18BC9C; -@brand-info: #3498DB; -@brand-warning: #F39C12; -@brand-danger: #E74C3C; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: @brand-primary; - -//** Global textual link color. -@link-color: @brand-success; -//** Link hover color set via `darken()` function. -@link-hover-color: @link-color; -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          15px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    @font-family-base;
-@headings-font-weight:    400;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     10px;
-@padding-base-horizontal:   15px;
-
-@padding-large-vertical:    18px;
-@padding-large-horizontal:  27px;
-
-@padding-small-vertical:    6px;
-@padding-small-horizontal:  9px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                @gray-lighter;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            @gray-lighter;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #fff;
-@btn-default-bg:                 @gray;
-@btn-default-border:             @btn-default-bg;
-
-@btn-primary-color:              @btn-default-color;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             @btn-primary-bg;
-
-@btn-success-color:              @btn-default-color;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             @btn-success-bg;
-
-@btn-info-color:                 @btn-default-color;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                @btn-info-bg;
-
-@btn-warning-color:              @btn-default-color;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             @btn-warning-bg;
-
-@btn-danger-color:               @btn-default-color;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              @btn-danger-bg;
-
-@btn-link-disabled-color:        @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base:         @border-radius-base;
-@btn-border-radius-large:        @border-radius-large;
-@btn-border-radius-small:        @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @text-color;
-//** `` border color
-@input-border:                   #dce4ec;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-// This has no effect on ``s in CSS.
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             @brand-primary;
-
-//** Placeholder text color
-@input-color-placeholder:        #acb6c0;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 4);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 4);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 4);
-
-//** `.form-group` margin
-@form-group-margin-bottom:       15px;
-
-@legend-color:                   @text-color;
-@legend-border-color:            transparent;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      #fff;
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         @component-active-bg;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     #fff;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal-background:  1040;
-@zindex-modal:             1050;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    60px;
-@navbar-margin-bottom:             @line-height-computed;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             #fff;
-@navbar-default-bg:                @brand-primary;
-@navbar-default-border:            transparent;
-
-// Navbar links
-@navbar-default-link-color:                #fff;
-@navbar-default-link-hover-color:          @brand-success;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         #fff;
-@navbar-default-link-active-bg:            darken(@navbar-default-bg, 10%);
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         @navbar-default-link-hover-color;
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           darken(@navbar-default-bg, 10%);
-@navbar-default-toggle-icon-bar-bg:        #fff;
-@navbar-default-toggle-border-color:       darken(@navbar-default-bg, 10%);
-
-
-//=== Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      #fff;
-@navbar-inverse-bg:                         @brand-success;
-@navbar-inverse-border:                     transparent;
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 #fff;
-@navbar-inverse-link-hover-color:           @brand-primary;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          #fff;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 5%);
-@navbar-inverse-link-disabled-color:        #ccc;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        darken(@navbar-inverse-bg, 10%);
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     @gray-lighter;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @brand-primary;
-@nav-tabs-active-link-hover-border-color:   @gray-lighter;
-
-@nav-tabs-justified-link-border-color:            @gray-lighter;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     #fff;
-@pagination-bg:                        @brand-success;
-@pagination-border:                    transparent;
-
-@pagination-hover-color:               #fff;
-@pagination-hover-bg:                  darken(@brand-success, 15%);
-@pagination-hover-border:              transparent;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 darken(@brand-success, 15%);
-@pagination-active-border:             transparent;
-
-@pagination-disabled-color:            @gray-lighter;
-@pagination-disabled-bg:               lighten(@brand-success, 15%);
-@pagination-disabled-border:           transparent;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 #fff;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #fff;
-@state-success-bg:               @brand-success;
-@state-success-border:           @brand-success;
-
-@state-info-text:                #fff;
-@state-info-bg:                  @brand-info;
-@state-info-border:              @brand-info;
-
-@state-warning-text:             #fff;
-@state-warning-bg:               @brand-warning;
-@state-warning-border:           @brand-warning;
-
-@state-danger-text:              #fff;
-@state-danger-bg:                @brand-danger;
-@state-danger-border:            @brand-danger;
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @btn-default-bg;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         20px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 @gray-lighter;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             @gray-lighter;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           @gray-lighter;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          @gray-lighter;
-@panel-footer-bg:             @gray-lighter;
-
-@panel-default-text:          @text-color;
-@panel-default-border:        @gray-lighter;
-@panel-default-heading-bg:    @gray-lighter;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            @gray-lighter;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     @gray-lighter;
-@well-border:                 transparent;
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @brand-primary;
-
-//** Badge text color in active nav link
-@badge-active-color:          @brand-primary;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 @gray-lighter;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           none;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      @gray-lighter;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    transparent;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint:    @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border:                   @gray-lighter;
\ No newline at end of file
diff --git a/Demo/Query/QueryController.ts b/Demo/Query/QueryController.ts
index e14572d..cd20237 100644
--- a/Demo/Query/QueryController.ts
+++ b/Demo/Query/QueryController.ts
@@ -3,7 +3,8 @@
    _queryModel: QueryModel;
    _queryView: QueryView;
    _retrieveService: RetrieveService;
-   _wadoUriService : WadoUriProxy;
+   _wadoUriService: WadoUriProxy;
+   _delowRsProxy: DelowRsProxy;
 
    constructor
    (
@@ -11,13 +12,16 @@
       queryModel: QueryModel,
       queryService: QidoRsProxy,
       retrieveService: RetrieveService,
-      wadoUriService: WadoUriProxy
+      wadoUriService: WadoUriProxy,
+      delowRsProxy: DelowRsProxy
    ) {
       this._queryView = queryView;
       this._queryModel = queryModel;
       this._queryService = queryService;
       this._retrieveService = retrieveService;
       this._wadoUriService = wadoUriService;
+      this._delowRsProxy = delowRsProxy;
+
       this.registerEvents();
    }
 
@@ -95,6 +99,16 @@
          );
       });
    
+      this._queryView.deleteStudyRequest.on((args) => {
+         this._delowRsProxy.deleteStudy(args.StudyParams.StudyInstanceUid)
+            .done ( (response) => {
+            this._queryView.showInfo("Success");
+         })
+            .fail( (error) => {
+            this._queryView.showError(error);
+         });
+      });
+
       this._queryModel.StudyQueryChangedEvent = () => {
          this.queryStudies();
       };
diff --git a/Demo/Query/QueryView.ts b/Demo/Query/QueryView.ts
index 6c3b2c2..61bcf52 100644
--- a/Demo/Query/QueryView.ts
+++ b/Demo/Query/QueryView.ts
@@ -27,6 +27,7 @@ class QueryView
    private _onInstance = new LiteEvent();
    private _onFrames = new LiteEvent();
    private _onWadoUri = new LiteEvent();
+   private _onDeleteStudy = new LiteEvent();
 
    private _onViewInstance = new LiteEvent();
 
@@ -57,11 +58,18 @@ class QueryView
    public get framesRequest() { return this._onFrames; }
    public get wadoUriRequest() { return this._onWadoUri; }
 
+   public get deleteStudyRequest() { return this._onDeleteStudy; }
+
    public get instanceViewRequest() { return this._onViewInstance; }
    
-   public showError()
+   public showError(message?:string)
    {
-      alert("error");
+      
+      alert("Error\n\n" + message );
+   }
+
+   public showInfo(message:string) {
+      alert(message);
    }
 
    public clearInstanceMetadata()
@@ -98,7 +106,7 @@ class QueryView
             var a = document.createElement("a");
             // safari doesn't support this yet
             if (typeof a.download === 'undefined') {
-               window.location = downloadUrl;
+               window.location.assign(downloadUrl);
             } else {
                a.href = downloadUrl;
                a.download = filename;
@@ -108,7 +116,7 @@ class QueryView
                //document.body.removeChild(a);
             }
          } else {
-            window.location = downloadUrl;
+            window.location.assign(downloadUrl);
          }
       }
    }
@@ -458,6 +466,15 @@ class QueryView
          return false;
       });
 
+      $item.find('*[data-pacs-deletestudy="true"]').on("click", (ev: JQueryEventObject) => {
+         var args = new StudyEventArgs(study);
+
+         this._onDeleteStudy.trigger(args);
+
+         ev.preventDefault();
+         return false;
+      });
+
    }
 
    private registerSeriesEvents(series: SeriesParams, $item: JQuery, index:number) {
diff --git a/Demo/Scripts/DICOMwebJS.Proxies.js b/Demo/Scripts/DICOMwebJS.Proxies.js
index fead3a5..93b1e0d 100644
--- a/Demo/Scripts/DICOMwebJS.Proxies.js
+++ b/Demo/Scripts/DICOMwebJS.Proxies.js
@@ -3,6 +3,46 @@ var __extends = (this && this.__extends) || function (d, b) {
     function __() { this.constructor = d; }
     d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
 };
+var DelowRsProxy = (function () {
+    function DelowRsProxy(baseUrl) {
+        if (baseUrl === void 0) { baseUrl = null; }
+        this._baseUrl = "";
+        this._baseUrl = baseUrl;
+    }
+    Object.defineProperty(DelowRsProxy.prototype, "BaseUrl", {
+        get: function () {
+            if (this._baseUrl === null) {
+                return DICOMwebJS.ServerConfiguration.getDelowRsUrl();
+            }
+            else {
+                return this._baseUrl;
+            }
+        },
+        set: function (value) {
+            this._baseUrl = value;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    DelowRsProxy.prototype.deleteStudy = function (studyUID) {
+        var url = this.BaseUrl + "/studies/" + studyUID + "/";
+        var settings = {
+            url: url,
+            type: "DELETE"
+        };
+        if (DICOMwebJS.ServerConfiguration.IncludeAuthorizationHeader) {
+            settings.headers = { "Authorization": DICOMwebJS.ServerConfiguration.SecurityToken };
+        }
+        var deffered = $.Deferred();
+        $.ajax(settings).then(function (data) {
+            return deffered.resolve(data);
+        }, function (jqxhr, textStatus, error) {
+            return deffered.reject(Error(error));
+        });
+        return deffered.promise();
+    };
+    return DelowRsProxy;
+}());
 var DICOMwebJS;
 (function (DICOMwebJS) {
     var ServerConfiguration;
@@ -11,6 +51,7 @@ var DICOMwebJS;
         ServerConfiguration.WadoRsPart = "wadors";
         ServerConfiguration.StowPart = "stowrs";
         ServerConfiguration.QidoPart = "qidors";
+        ServerConfiguration.DelowRsPart = "delowrs";
         ServerConfiguration.IncludeAuthorizationHeader = false;
         ServerConfiguration.SecurityToken = "";
         function getWadoUriUrl() {
@@ -29,6 +70,10 @@ var DICOMwebJS;
             return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.QidoPart;
         }
         ServerConfiguration.getQidoUrl = getQidoUrl;
+        function getDelowRsUrl() {
+            return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.DelowRsPart;
+        }
+        ServerConfiguration.getDelowRsUrl = getDelowRsUrl;
     })(ServerConfiguration = DICOMwebJS.ServerConfiguration || (DICOMwebJS.ServerConfiguration = {}));
 })(DICOMwebJS || (DICOMwebJS = {}));
 var MimeTypes = (function () {
@@ -37,21 +82,37 @@ var MimeTypes = (function () {
     MimeTypes.getMultiPartAcceptHeader = function (mimeType) {
         return "multipart/related; type=\"" + mimeType + "\"";
     };
-    MimeTypes.DICOM = "application/dicom";
-    MimeTypes.xmlDicom = "application/dicom+xml";
-    MimeTypes.Jpeg = "image/jpeg";
-    MimeTypes.WebP = "image/webp";
-    MimeTypes.Json = "application/dicom+json";
-    MimeTypes.UncompressedData = "application/octet-stream";
-    MimeTypes.PlainText = "text/plain";
-    MimeTypes.MultipartRelated = "multipart/related";
     return MimeTypes;
 }());
+MimeTypes.DICOM = "application/dicom";
+MimeTypes.xmlDicom = "application/dicom+xml";
+MimeTypes.Jpeg = "image/jpeg";
+MimeTypes.WebP = "image/webp";
+MimeTypes.Json = "application/dicom+json";
+MimeTypes.UncompressedData = "application/octet-stream";
+MimeTypes.PlainText = "text/plain";
+MimeTypes.MultipartRelated = "multipart/related";
 var QidoRsProxy = (function () {
     function QidoRsProxy(baseUrl) {
-        this.BaseUrl = "";
-        this.BaseUrl = baseUrl;
+        if (baseUrl === void 0) { baseUrl = null; }
+        this._baseUrl = "";
+        this._baseUrl = baseUrl;
     }
+    Object.defineProperty(QidoRsProxy.prototype, "BaseUrl", {
+        get: function () {
+            if (this._baseUrl === null) {
+                return DICOMwebJS.ServerConfiguration.getQidoUrl();
+            }
+            else {
+                return this._baseUrl;
+            }
+        },
+        set: function (value) {
+            this._baseUrl = value;
+        },
+        enumerable: true,
+        configurable: true
+    });
     QidoRsProxy.prototype.findStudies = function (query) {
         this.DoQuery(query, "/studies");
     };
@@ -164,7 +225,7 @@ var queryParams = (function () {
 var PatientParams = (function (_super) {
     __extends(PatientParams, _super);
     function PatientParams(elementsProvider) {
-        _super.call(this, elementsProvider);
+        return _super.call(this, elementsProvider) || this;
     }
     Object.defineProperty(PatientParams.prototype, "PatientId", {
         get: function () {
@@ -191,7 +252,7 @@ var PatientParams = (function (_super) {
 var StudyParams = (function (_super) {
     __extends(StudyParams, _super);
     function StudyParams(elementsProvider) {
-        _super.call(this, elementsProvider);
+        return _super.call(this, elementsProvider) || this;
     }
     Object.defineProperty(StudyParams.prototype, "StudyInstanceUid", {
         get: function () {
@@ -248,7 +309,7 @@ var StudyParams = (function (_super) {
 var SeriesParams = (function (_super) {
     __extends(SeriesParams, _super);
     function SeriesParams() {
-        _super.apply(this, arguments);
+        return _super !== null && _super.apply(this, arguments) || this;
     }
     Object.defineProperty(SeriesParams.prototype, "Modality", {
         get: function () {
@@ -305,7 +366,7 @@ var SeriesParams = (function (_super) {
 var InstanceParams = (function (_super) {
     __extends(InstanceParams, _super);
     function InstanceParams() {
-        _super.apply(this, arguments);
+        return _super !== null && _super.apply(this, arguments) || this;
     }
     Object.defineProperty(InstanceParams.prototype, "SopInstanceUid", {
         get: function () {
@@ -331,10 +392,26 @@ var InstanceParams = (function (_super) {
 }(SeriesParams));
 var StowRsProxy = (function () {
     function StowRsProxy(baseUrl) {
-        this.BaseUrl = "";
+        if (baseUrl === void 0) { baseUrl = null; }
+        this._baseUrl = "";
         this._returnJson = true;
-        this.BaseUrl = baseUrl;
+        this._baseUrl = baseUrl;
     }
+    Object.defineProperty(StowRsProxy.prototype, "BaseUrl", {
+        get: function () {
+            if (this._baseUrl === null) {
+                return DICOMwebJS.ServerConfiguration.getStowUrl();
+            }
+            else {
+                return this._baseUrl;
+            }
+        },
+        set: function (value) {
+            this._baseUrl = value;
+        },
+        enumerable: true,
+        configurable: true
+    });
     Object.defineProperty(StowRsProxy.prototype, "returnJson", {
         get: function () { return this._returnJson; },
         set: function (value) { this._returnJson = value; },
@@ -388,11 +465,18 @@ var StowRsProxy = (function () {
 }());
 var WadoUriProxy = (function () {
     function WadoUriProxy(baseUrl) {
+        if (baseUrl === void 0) { baseUrl = null; }
+        this._baseUrl = "";
         this._baseUrl = baseUrl;
     }
     Object.defineProperty(WadoUriProxy.prototype, "BaseUrl", {
         get: function () {
-            return this._baseUrl;
+            if (this._baseUrl === null) {
+                return DICOMwebJS.ServerConfiguration.getWadoUriUrl();
+            }
+            else {
+                return this._baseUrl;
+            }
         },
         set: function (value) {
             this._baseUrl = value;
@@ -445,9 +529,9 @@ var WadoUriProxy = (function () {
         }
         return url;
     };
-    WadoUriProxy._QueryParamsFormatted = "?RequestType=wado&studyUID={0}&seriesUID={1}&objectUID={2}";
     return WadoUriProxy;
 }());
+WadoUriProxy._QueryParamsFormatted = "?RequestType=wado&studyUID={0}&seriesUID={1}&objectUID={2}";
 var CommonDicomInstanceParams = (function () {
     function CommonDicomInstanceParams() {
     }
@@ -460,11 +544,18 @@ var WadoImageParams = (function () {
 }());
 var WadoRsProxy = (function () {
     function WadoRsProxy(baseUrl) {
+        if (baseUrl === void 0) { baseUrl = null; }
+        this._baseUrl = "";
         this._baseUrl = baseUrl;
     }
     Object.defineProperty(WadoRsProxy.prototype, "BaseUrl", {
         get: function () {
-            return this._baseUrl;
+            if (this._baseUrl === null) {
+                return DICOMwebJS.ServerConfiguration.getWadoRsUrl();
+            }
+            else {
+                return this._baseUrl;
+            }
         },
         set: function (value) {
             this._baseUrl = value;
@@ -525,7 +616,7 @@ var WadoRsProxy = (function () {
     WadoRsProxy.prototype.getBinaryDICOMMultipart = function (urlRsPart, acceptDataType, transferSyntax) {
         if (transferSyntax === void 0) { transferSyntax = null; }
         var deffered = $.Deferred();
-        var url = this._baseUrl + urlRsPart;
+        var url = this.BaseUrl + urlRsPart;
         var xhr = new XMLHttpRequest();
         var acceptHeader = MimeTypes.getMultiPartAcceptHeader(acceptDataType);
         if (transferSyntax) {
@@ -557,7 +648,7 @@ var WadoRsProxy = (function () {
     WadoRsProxy.prototype.get = function (urlRsPart, acceptHeader, transferSyntax) {
         if (transferSyntax === void 0) { transferSyntax = null; }
         var deffered = $.Deferred();
-        var url = this._baseUrl + urlRsPart;
+        var url = this.BaseUrl + urlRsPart;
         var xhr = new XMLHttpRequest();
         if (transferSyntax) {
             acceptHeader += ";transfer-syntax=" + transferSyntax;
diff --git a/Demo/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts b/Demo/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts
index 8a20687..cb69883 100644
--- a/Demo/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts
+++ b/Demo/Scripts/typings/DICOMwebJS/DICOMwebJS.Proxies.d.ts
@@ -1,3 +1,9 @@
+declare class DelowRsProxy {
+    _baseUrl: string;
+    constructor(baseUrl?: string);
+    BaseUrl: string;
+    deleteStudy(studyUID: string): JQueryPromise;
+}
 declare module DICOMwebJS {
     module ServerConfiguration {
         var BaseServerUrl: string;
@@ -5,12 +11,14 @@ declare module DICOMwebJS {
         var WadoRsPart: string;
         var StowPart: string;
         var QidoPart: string;
+        var DelowRsPart: string;
         var IncludeAuthorizationHeader: boolean;
         var SecurityToken: string;
         function getWadoUriUrl(): string;
         function getWadoRsUrl(): string;
         function getStowUrl(): string;
         function getQidoUrl(): string;
+        function getDelowRsUrl(): string;
     }
 }
 declare class MimeTypes {
@@ -25,8 +33,9 @@ declare class MimeTypes {
     static getMultiPartAcceptHeader(mimeType: string): string;
 }
 declare class QidoRsProxy {
+    _baseUrl: string;
+    constructor(baseUrl?: string);
     BaseUrl: string;
-    constructor(baseUrl: string);
     findStudies(query: queryParams): void;
     findSeries(query: queryParams): void;
     findInstances(query: queryParams): void;
@@ -73,8 +82,9 @@ declare class InstanceParams extends SeriesParams {
     InstanceNumber: string;
 }
 declare class StowRsProxy {
+    _baseUrl: string;
+    constructor(baseUrl?: string);
     BaseUrl: string;
-    constructor(baseUrl: string);
     private _returnJson;
     returnJson: boolean;
     StoreInstance(fileBuffer: ArrayBuffer, successCallback: (xhr: XMLHttpRequest) => void, failureCallback: (error: Event) => void): void;
@@ -83,8 +93,8 @@ declare class StowRsProxy {
 declare class WadoUriProxy {
     private _xhr;
     private static _QueryParamsFormatted;
-    private _baseUrl;
-    constructor(baseUrl: string);
+    _baseUrl: string;
+    constructor(baseUrl?: string);
     BaseUrl: string;
     getDicomInstance(instanceData: CommonDicomInstanceParams, anonymize: boolean, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void;
     getJpegImage(instanceData: CommonDicomInstanceParams, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void;
@@ -102,9 +112,9 @@ declare class WadoImageParams {
     transferSyntax: string;
 }
 declare class WadoRsProxy {
-    private _baseUrl;
+    _baseUrl: string;
+    constructor(baseUrl?: string);
     BaseUrl: string;
-    constructor(baseUrl: string);
     getStudy(studyInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>;
     getSeries(studyInstanceUid: string, seriesInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>;
     getObjectInstance(studyInstanceUid: string, seriesInstanceUid: string, sopInstanceUID: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>;
diff --git a/Demo/Views/Demo/_StudyItem.cshtml b/Demo/Views/Demo/_StudyItem.cshtml
index a7228a1..661cb44 100644
--- a/Demo/Views/Demo/_StudyItem.cshtml
+++ b/Demo/Views/Demo/_StudyItem.cshtml
@@ -43,15 +43,15 @@
                     
  • DIOCM XML
  • - @*
    + *@ +
    \ No newline at end of file diff --git a/dist/DICOMwebJS.Proxies.d.ts b/dist/DICOMwebJS.Proxies.d.ts index 8a20687..cb69883 100644 --- a/dist/DICOMwebJS.Proxies.d.ts +++ b/dist/DICOMwebJS.Proxies.d.ts @@ -1,3 +1,9 @@ +declare class DelowRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); + BaseUrl: string; + deleteStudy(studyUID: string): JQueryPromise; +} declare module DICOMwebJS { module ServerConfiguration { var BaseServerUrl: string; @@ -5,12 +11,14 @@ declare module DICOMwebJS { var WadoRsPart: string; var StowPart: string; var QidoPart: string; + var DelowRsPart: string; var IncludeAuthorizationHeader: boolean; var SecurityToken: string; function getWadoUriUrl(): string; function getWadoRsUrl(): string; function getStowUrl(): string; function getQidoUrl(): string; + function getDelowRsUrl(): string; } } declare class MimeTypes { @@ -25,8 +33,9 @@ declare class MimeTypes { static getMultiPartAcceptHeader(mimeType: string): string; } declare class QidoRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); findStudies(query: queryParams): void; findSeries(query: queryParams): void; findInstances(query: queryParams): void; @@ -73,8 +82,9 @@ declare class InstanceParams extends SeriesParams { InstanceNumber: string; } declare class StowRsProxy { + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); private _returnJson; returnJson: boolean; StoreInstance(fileBuffer: ArrayBuffer, successCallback: (xhr: XMLHttpRequest) => void, failureCallback: (error: Event) => void): void; @@ -83,8 +93,8 @@ declare class StowRsProxy { declare class WadoUriProxy { private _xhr; private static _QueryParamsFormatted; - private _baseUrl; - constructor(baseUrl: string); + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; getDicomInstance(instanceData: CommonDicomInstanceParams, anonymize: boolean, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void; getJpegImage(instanceData: CommonDicomInstanceParams, imageParams: WadoImageParams, successCallback: (buffer: any) => void, failureCallback: (error: ErrorEvent) => void): void; @@ -102,9 +112,9 @@ declare class WadoImageParams { transferSyntax: string; } declare class WadoRsProxy { - private _baseUrl; + _baseUrl: string; + constructor(baseUrl?: string); BaseUrl: string; - constructor(baseUrl: string); getStudy(studyInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; getSeries(studyInstanceUid: string, seriesInstanceUid: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; getObjectInstance(studyInstanceUid: string, seriesInstanceUid: string, sopInstanceUID: string, mediaType: string, transferSyntax?: string): JQueryPromise<{}>; diff --git a/dist/DICOMwebJS.Proxies.js b/dist/DICOMwebJS.Proxies.js index fead3a5..93b1e0d 100644 --- a/dist/DICOMwebJS.Proxies.js +++ b/dist/DICOMwebJS.Proxies.js @@ -3,6 +3,46 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var DelowRsProxy = (function () { + function DelowRsProxy(baseUrl) { + if (baseUrl === void 0) { baseUrl = null; } + this._baseUrl = ""; + this._baseUrl = baseUrl; + } + Object.defineProperty(DelowRsProxy.prototype, "BaseUrl", { + get: function () { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getDelowRsUrl(); + } + else { + return this._baseUrl; + } + }, + set: function (value) { + this._baseUrl = value; + }, + enumerable: true, + configurable: true + }); + DelowRsProxy.prototype.deleteStudy = function (studyUID) { + var url = this.BaseUrl + "/studies/" + studyUID + "/"; + var settings = { + url: url, + type: "DELETE" + }; + if (DICOMwebJS.ServerConfiguration.IncludeAuthorizationHeader) { + settings.headers = { "Authorization": DICOMwebJS.ServerConfiguration.SecurityToken }; + } + var deffered = $.Deferred(); + $.ajax(settings).then(function (data) { + return deffered.resolve(data); + }, function (jqxhr, textStatus, error) { + return deffered.reject(Error(error)); + }); + return deffered.promise(); + }; + return DelowRsProxy; +}()); var DICOMwebJS; (function (DICOMwebJS) { var ServerConfiguration; @@ -11,6 +51,7 @@ var DICOMwebJS; ServerConfiguration.WadoRsPart = "wadors"; ServerConfiguration.StowPart = "stowrs"; ServerConfiguration.QidoPart = "qidors"; + ServerConfiguration.DelowRsPart = "delowrs"; ServerConfiguration.IncludeAuthorizationHeader = false; ServerConfiguration.SecurityToken = ""; function getWadoUriUrl() { @@ -29,6 +70,10 @@ var DICOMwebJS; return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.QidoPart; } ServerConfiguration.getQidoUrl = getQidoUrl; + function getDelowRsUrl() { + return DICOMwebJS.ServerConfiguration.BaseServerUrl + DICOMwebJS.ServerConfiguration.DelowRsPart; + } + ServerConfiguration.getDelowRsUrl = getDelowRsUrl; })(ServerConfiguration = DICOMwebJS.ServerConfiguration || (DICOMwebJS.ServerConfiguration = {})); })(DICOMwebJS || (DICOMwebJS = {})); var MimeTypes = (function () { @@ -37,21 +82,37 @@ var MimeTypes = (function () { MimeTypes.getMultiPartAcceptHeader = function (mimeType) { return "multipart/related; type=\"" + mimeType + "\""; }; - MimeTypes.DICOM = "application/dicom"; - MimeTypes.xmlDicom = "application/dicom+xml"; - MimeTypes.Jpeg = "image/jpeg"; - MimeTypes.WebP = "image/webp"; - MimeTypes.Json = "application/dicom+json"; - MimeTypes.UncompressedData = "application/octet-stream"; - MimeTypes.PlainText = "text/plain"; - MimeTypes.MultipartRelated = "multipart/related"; return MimeTypes; }()); +MimeTypes.DICOM = "application/dicom"; +MimeTypes.xmlDicom = "application/dicom+xml"; +MimeTypes.Jpeg = "image/jpeg"; +MimeTypes.WebP = "image/webp"; +MimeTypes.Json = "application/dicom+json"; +MimeTypes.UncompressedData = "application/octet-stream"; +MimeTypes.PlainText = "text/plain"; +MimeTypes.MultipartRelated = "multipart/related"; var QidoRsProxy = (function () { function QidoRsProxy(baseUrl) { - this.BaseUrl = ""; - this.BaseUrl = baseUrl; + if (baseUrl === void 0) { baseUrl = null; } + this._baseUrl = ""; + this._baseUrl = baseUrl; } + Object.defineProperty(QidoRsProxy.prototype, "BaseUrl", { + get: function () { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getQidoUrl(); + } + else { + return this._baseUrl; + } + }, + set: function (value) { + this._baseUrl = value; + }, + enumerable: true, + configurable: true + }); QidoRsProxy.prototype.findStudies = function (query) { this.DoQuery(query, "/studies"); }; @@ -164,7 +225,7 @@ var queryParams = (function () { var PatientParams = (function (_super) { __extends(PatientParams, _super); function PatientParams(elementsProvider) { - _super.call(this, elementsProvider); + return _super.call(this, elementsProvider) || this; } Object.defineProperty(PatientParams.prototype, "PatientId", { get: function () { @@ -191,7 +252,7 @@ var PatientParams = (function (_super) { var StudyParams = (function (_super) { __extends(StudyParams, _super); function StudyParams(elementsProvider) { - _super.call(this, elementsProvider); + return _super.call(this, elementsProvider) || this; } Object.defineProperty(StudyParams.prototype, "StudyInstanceUid", { get: function () { @@ -248,7 +309,7 @@ var StudyParams = (function (_super) { var SeriesParams = (function (_super) { __extends(SeriesParams, _super); function SeriesParams() { - _super.apply(this, arguments); + return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(SeriesParams.prototype, "Modality", { get: function () { @@ -305,7 +366,7 @@ var SeriesParams = (function (_super) { var InstanceParams = (function (_super) { __extends(InstanceParams, _super); function InstanceParams() { - _super.apply(this, arguments); + return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(InstanceParams.prototype, "SopInstanceUid", { get: function () { @@ -331,10 +392,26 @@ var InstanceParams = (function (_super) { }(SeriesParams)); var StowRsProxy = (function () { function StowRsProxy(baseUrl) { - this.BaseUrl = ""; + if (baseUrl === void 0) { baseUrl = null; } + this._baseUrl = ""; this._returnJson = true; - this.BaseUrl = baseUrl; + this._baseUrl = baseUrl; } + Object.defineProperty(StowRsProxy.prototype, "BaseUrl", { + get: function () { + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getStowUrl(); + } + else { + return this._baseUrl; + } + }, + set: function (value) { + this._baseUrl = value; + }, + enumerable: true, + configurable: true + }); Object.defineProperty(StowRsProxy.prototype, "returnJson", { get: function () { return this._returnJson; }, set: function (value) { this._returnJson = value; }, @@ -388,11 +465,18 @@ var StowRsProxy = (function () { }()); var WadoUriProxy = (function () { function WadoUriProxy(baseUrl) { + if (baseUrl === void 0) { baseUrl = null; } + this._baseUrl = ""; this._baseUrl = baseUrl; } Object.defineProperty(WadoUriProxy.prototype, "BaseUrl", { get: function () { - return this._baseUrl; + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getWadoUriUrl(); + } + else { + return this._baseUrl; + } }, set: function (value) { this._baseUrl = value; @@ -445,9 +529,9 @@ var WadoUriProxy = (function () { } return url; }; - WadoUriProxy._QueryParamsFormatted = "?RequestType=wado&studyUID={0}&seriesUID={1}&objectUID={2}"; return WadoUriProxy; }()); +WadoUriProxy._QueryParamsFormatted = "?RequestType=wado&studyUID={0}&seriesUID={1}&objectUID={2}"; var CommonDicomInstanceParams = (function () { function CommonDicomInstanceParams() { } @@ -460,11 +544,18 @@ var WadoImageParams = (function () { }()); var WadoRsProxy = (function () { function WadoRsProxy(baseUrl) { + if (baseUrl === void 0) { baseUrl = null; } + this._baseUrl = ""; this._baseUrl = baseUrl; } Object.defineProperty(WadoRsProxy.prototype, "BaseUrl", { get: function () { - return this._baseUrl; + if (this._baseUrl === null) { + return DICOMwebJS.ServerConfiguration.getWadoRsUrl(); + } + else { + return this._baseUrl; + } }, set: function (value) { this._baseUrl = value; @@ -525,7 +616,7 @@ var WadoRsProxy = (function () { WadoRsProxy.prototype.getBinaryDICOMMultipart = function (urlRsPart, acceptDataType, transferSyntax) { if (transferSyntax === void 0) { transferSyntax = null; } var deffered = $.Deferred(); - var url = this._baseUrl + urlRsPart; + var url = this.BaseUrl + urlRsPart; var xhr = new XMLHttpRequest(); var acceptHeader = MimeTypes.getMultiPartAcceptHeader(acceptDataType); if (transferSyntax) { @@ -557,7 +648,7 @@ var WadoRsProxy = (function () { WadoRsProxy.prototype.get = function (urlRsPart, acceptHeader, transferSyntax) { if (transferSyntax === void 0) { transferSyntax = null; } var deffered = $.Deferred(); - var url = this._baseUrl + urlRsPart; + var url = this.BaseUrl + urlRsPart; var xhr = new XMLHttpRequest(); if (transferSyntax) { acceptHeader += ";transfer-syntax=" + transferSyntax; diff --git a/dist/DICOMwebJS.Proxies.js.map b/dist/DICOMwebJS.Proxies.js.map index b1c16f7..118be3b 100644 --- a/dist/DICOMwebJS.Proxies.js.map +++ b/dist/DICOMwebJS.Proxies.js.map @@ -1 +1 @@ -{"version":3,"file":"DICOMwebJS.Proxies.js","sourceRoot":"","sources":["../DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts","../DICOMwebJS.Proxies/Proxies/MimeTypes.ts","../DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts","../DICOMwebJS.Proxies/Proxies/StowRsProxy.ts","../DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts","../DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts","../DICOMwebJS.Proxies/Utils/StringExtensions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DICOMwebJS.Proxies.js","sourceRoot":"","sources":["../DICOMwebJS.Proxies/Proxies/DelowRsProxy.ts","../DICOMwebJS.Proxies/Proxies/ServerConfiguration.ts","../DICOMwebJS.Proxies/Proxies/MimeTypes.ts","../DICOMwebJS.Proxies/Proxies/QidoRsProxy.ts","../DICOMwebJS.Proxies/Proxies/StowRsProxy.ts","../DICOMwebJS.Proxies/Proxies/WadoUriProxy.ts","../DICOMwebJS.Proxies/Proxies/WadoRsProxy.ts","../DICOMwebJS.Proxies/Utils/StringExtensions.ts"],"names":[],"mappings":"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"} \ No newline at end of file