Giter VIP home page Giter VIP logo

zaid-safadi / dicomcloud Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 12.0 3.3 MB

Azure friendly DICOMweb part 13 .NET server with qido-rs, wado-rs, stow-rs, wado-uri RESTful implementation

Home Page: https://dicomcloud.azurewebsites.net

License: Apache License 2.0

C# 99.84% CSS 0.13% ASP 0.02%
dicom dicomcloud dicomweb wado wado-uri wado-rs qido-rs stow-rs dicom-server dotnet azure azure-resource-manager

dicomcloud's Introduction


Announcement

The DICOMcloud project is moving to its own GitHub Organization account. This repository is provided here for reference.


DICOMcloud

Join the chat at https://gitter.im/Zaid-Safadi/DICOMcloud Build status

DICOMcloud is a highly customizable, open source DICOMweb server that implements RESTful services in DICOM part 18

The DICOM Web server implementation uses Unity as a Dependency Injection (DI) framework to build the server components. You can extend any of these components or completely roll out your own then plug it in using your DI framework of choice. The implementation takes advantage of this architecture by providing two options for media storage: 

  1. Local File System: A module that support storing and retrieving media files to a local file system storage using the Windows File API in .NET 
  2. Azure Blob Storage: A module that uses the Azure Storage library for storing DICOM files and any other media to Azure Blob storage.

You can do the same with the database implementation for example to replace the existing implementation or customize it to integrate with your own database and traditional DICOM server. 

Hosted server endpoints and demo

I'm maintining an online version of the server, check the wiki Home page for endpoint Urls

There is a client Demo that I open sourced and hosting: https://github.com/Zaid-Safadi/dicom-webJS

Deployment To Azure

In order to simplify the deployment of the DICOMcloud server to Azure an Azure Resource Manager (ARM) Template is created on the repository root azuredeploy.json.

This template can be utilized to deploy the DICOMcloud server to your Azure subscription in multiple ways. The ARM template will take care of creating the database, the storage account, the website and configuration.

Precisely the template will create the following resources in Azure:

  1. A SQL Server with Single SQL Database. ~$5/month
  2. Standard Storage Account. ~$0.1/month
  3. Free Tier App Service Plan. Free

Implementation

The server code is written in C# .NET 4.5.2 and Visual Studio 2015. The web services are built as ASP.NET REST WebApi Controllers. Check the code and project's structure wiki page for more details.

Physical DICOM storage is supported on both, either Windows File System or Azure Blob Storage.

Query is currently implemented against a SQL database and compatible with Azure SQL Database

Implementation natively support JSON and XML DICOM format.

DICOM Support

The code is designed to be a complete DICOM web server implementation with storage, query and retrieve capabilities.

For detailed information about the supported services and features, check the DICOM Support wiki page

License

Copyright 2016 Zaid AL-Safadi

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

dicomcloud's People

Contributors

zaid-safadi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dicomcloud's Issues

Hosted server slow on first request

The server is hosted on a free azure website plan that shutdown the web application after some period of inactivity. So first request should wait for the web application to warm up and start running which causes the delay on the client side and might time-out.

Resolution

Move the hosted server into a paid plan

Improve the Developer User Experience of the DICOMcloud library

Since the initial development of the DICOMcloud library and the focus has been to add and support as many features possible defined in the DICOMweb protocol to provide a reference implementation as a standalone DICOMweb Server.

I’ve been trying lately to improve the user experience working with the library, understanding the functionality and API, how to run a development environment and deployment.
In order to track the status of these activities in a single place, I’ll be adding here the related issue’s title with a link and any work that is yet to be done. Any suggestions are welcome!

  • Create Nuget packages for the library to bootstrap development #26
  • Simplify running the WADO Server from Visual Studio #24
  • Implement a versioning mechanism for the library #23
  • Create an ARM template with deploy to Azure button #19
  • Create unit test projects to cover the different examples of using the library #18
  • Add API documentation using Swagger #12
  • Create a SQL Server database project to maintain the DICOM server database and publish to SQL server #8

error on study query

question on the dicom cloud project
i get this error on study query from the demo project to cloud application
An exception of type 'System.TypeInitializationException' occurred in DICOMcloud.Wado.Core.dll but was not handled in user code
Additional information: The type initializer for 'DICOMcloud.Wado.Core.DefaultDicomQueryElements' threw an exception.

Simplify running the WADO Server from Visual Studio

Currently once you clone the DICOMcloud code, you must create a database and update the web.config with the connection string along with the location where the images should be stored.
Also, the code structure which configures the server could be improved for better readability and customization.

This process should be enhanced such that the user can run the server immediately after cloning with no to little configuration

WADO-RS and WADO-URI not returning default TransferSyntax

When requesting a DICOM dataset using WADO-RS or WADO-URI with no transfer syntax parameter the server returns the dataset with the transfer syntax used at storage.

Server should return the default transfer syntax: ExplicitVRLittleEndian

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.