ivmartel / dwv

DICOM Web Viewer: open source zero footprint medical image library.
https://ivmartel.github.io/dwv/
GNU General Public License v3.0
1.64k stars 588 forks source link

Integration of DWV into .net application #389

Closed jagjotwadali closed 6 years ago

jagjotwadali commented 7 years ago

Hi ,

I want to integrate this DWV DICOM viewer into our existing telemedicine solution developed in .net framework. The user can upload the DICOM /JPEG files and can view the uploaded images in the DWV DICOM viewer without the use of PACS server. I need a help in this regard Thanks.

Zaid-Safadi commented 7 years ago

@jagjotwadali , you can take a look at the DICOMweb-JS project for an example. This is a .NET MVC application but is developed as a single page App with JS/TypeScript.

The demo project contains the code for integrating the DWV viewer demo.ts method initViewer but it is currently commented out. If you are interested in this I can show you what you need to do to support it but it is pretty straight JavaScript/TypeScript.

jagjotwadali commented 7 years ago

@Zaid-Safadi Thank you for the information.

Our telemedicine application is developed in ASP.NET using 3.5 framework(Visual Studio 2008). Is it possible to integrate only DICOM viewer into the telemedicine application or it is required to add a DICOM server or a PACS server along with DICOM viewer.

I am new to this work and have less knowledge .I will appreciate if you can help in this regard .

Zaid-Safadi commented 7 years ago

@jagjotwadali , technically you can integrate the viewer into any type of web application including ASP.NET as the DWV is a pure JavaScript/client-side solution and doesn't care about your back-end, all it requires is a URL for the DICOM image you want to display.

However, depending on your strategy for retrieving the images to the client side you might want to consider adding a DICOM server unless you are planning to implement your own custom way to feed the viewer (query database, provide controller/endpoint to return the image...)

If you don't have a PACS server in-place with WADO/DICOMweb support, the DICOMcloud project can be used as your back-end server and can run as a web application (.NET WebAPI project). The benefit to that is you don't need a whole PACS solution (DIMSE protocol) as this DICOMcloud is a standalone web application.

jagjotwadali commented 7 years ago

@Zaid-Safadi Once again thanks for the information and help.

Considering the use case scenario of my application, DICOM images or scanned JPEG images(with the use of scanner ,radiographic celluliod films like X-rays are scanned to JPEG format) are uploaded and saved in the folder at server side and only the name of the images is stored in the database(sql server).

In the first iteration ,I am only thinking to display the uploaded DICOM/JPEG images in a DICOM viewer by providing the URL of each image to the viewer.I will try to get the dynamic location(URL) of each image through c# code and pass it on to the javascript code of DWV(if possible )

DICOM server or PACS server must be required if there is proper mechanism for getting the output in DICOM format for X-ray,MRI etc.(series of images) which in our case is not possible right now.Well your project DICOMcloud must be helpful in future (in second iteration) but currently only DICOM viewer is required .

I want to have some more info about DICOMcloud and its integration with our application and DWV.

Once again sincere thanks.

Zaid-Safadi commented 7 years ago

This sounds a workable approach @jagjotwadali and DWV will work for the DICOM images. Not sure about the JPEG ones though. If you have questions about the DICOMcloud, feel free to open the issue on project site or use the gitter chat.

ivmartel commented 7 years ago

DWV can load JPEG (see the last examples of the demo page).

jagjotwadali commented 7 years ago

Thanks @ivmartel and @Zaid-Safadi

First level integration I had done in which DWV is integrated into a .net application(developed using 3.5 framework).Getting the URL through C# code and then passing it to the DWV through script tag.It works fine with DICOM and JPEG images but there is one problem.All the functions works fine with DICOM image but incase of JPEG images only zoom and window/level function works but Draw ,livewire and filter function does not work.

Moreover , I am new to this topic so I have a little confusion regarding DICOM viewer and server @ivmartel .Is it mandatory to have DICOM server or a PACS server along with the DICOM viewer .?

ivmartel commented 6 years ago

Filters, floodfill and livewire on RGB data such as JPG (and also some DICOMs) may not work properly, these functionalities are thought for grey scale data. DWV should hide them for RGB data. On the other side, drawing should work. No, the viewer does not need a PACS, it can load data provided via urls like you do, and this data can be served as a regular file (like in the demos: https://ivmartel.github.io/dwv/).

jagjotwadali commented 6 years ago

Thank You @ivmartel .Now I have better understanding.

I left with only one question .In your example (https://ivmartel.github.io/dwv/) you are displaying the .jpeg and .png images as small size thumbnail images on the web page .when the user click on the particular image ,the DICOM images is loaded into the viewer.

In my case ,I want to display the uploaded DICOM images(.dcm format) in small thumbnail size.I do not have a jpeg copy of that DICOM image .I am trying different possibilities

Possibility 1: To display the uploaded DICOM image in small thumbnail size in html page using code from your example 1 (https://jsfiddle.net/ivmartel/LteeL0gf/) but its not working .App.Loadurl() function works with DWV viewer but in case if I just want to display the image on the web page.

Possibility 2: To convert the uploaded DICOM image to JPEG image using c# code and then display it in thumbnail size .

Kindly help me in this regard .

ivmartel commented 6 years ago

Adding a style="width:50px" in the 'imageLayer' or 'layerContainer' works on the fiddle and should work for your case.

jagjotwadali commented 6 years ago

"display example #1: the simplest DICOM display example!" is not working.Either it directly opens in the DICOM viewer but it does not display on the web page.I do not know how to run this code .

ivmartel commented 6 years ago

The first example, https://jsfiddle.net/ivmartel/LteeL0gf/, works for me: it shows the image. Are we talking about the same link? My comment above was about replacing <div class="layerContainer"> by <div class="layerContainer" style="width:50px"> in the html.

jagjotwadali commented 6 years ago

I am talking about the same link. Written the code in the script tag

<script>
dwv.gui.getElement = dwv.gui.base.getElement;
dwv.gui.displayProgress = function (percent) {};

// create the dwv app
var app = new dwv.App();
// initialise with the id of the container div
app.init({
    "containerDivId": "dwv"
});
// load dicom data
app.loadURLs(["https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323851.dcm"]);
<script>

written this in the body tag.

<div id="dwv">
    <div class="layerContainer">
        <canvas class="imageLayer"></canvas>
    </div>
</div>

but it does'nt work .I dont know what is the mistake

ivmartel commented 6 years ago

You need to initialise the dwv App once the DOM has been loaded. You can do this by either placing your script code at the end of the HTML body or by listening for the 'DOMContentLoaded' event as in this code: viewers/simplistic/applauncher.js#L42

ivmartel commented 6 years ago

We're getting a bit side tracked, your original problem seems to be solved. Could we close this issue? if you need another one about the display and examples, you can create a new one.

jagjotwadali commented 6 years ago

ok fine .Incase of any help I will open the new one.

Thank you very much for your help.