Code and Projects Structure - Zaid-Safadi/DICOMcloud GitHub Wiki

Code and Projects Structure

The code is written in C# and .NET 4.5 using Visual Studio 2015 and is built with a modular architecture supporting Dependency Injection pattern. To build the framework you should open the solution file DICOMcloud.sln at the root level of the repository (in order to get all NuGet packages to the right directory)

The master branch has a dependency on ClearCanvas library, only these two DLLs are needed:

  1. ClearCanvas.dll
  2. ClearCanvas.Common.dll
  3. Other ClearCanvas codecs

Although, ClearCanvas is a very robust and stable implementation, latest open source version has limitation with codecs and some Transfer Syntaxes, and the fact that it is not maintained anymore makes other libraries such as fo-dicom more attractive option.

The fo-dicom-integration branch has a dependency on fo-dicom library replacing ClearCanvas, the following DLLs are needed:

  1. Dicom.Core.dll
  2. Dicom.Platform.dll
  3. Dicom.Native.dll or Dicom.Native64.dll based on your architecture.

You can find these dependencies in the "Resources\Bin" directory.

These projects are part of the framework:

  1. DICOMcloud.Core: This project contains foundational abstract and concrete classes for storage/IO and Messaging that is not related to DICOM.

  2. DICOMcloud.Core.Azure: This project is a concrete implementation for supporting I/O to Azure Blob Storage. The abstraction allows to easily configure the framework to work with either local or Azure storage.

  3. DICOMcloud.Dicom: This project provide customized DICOM services and helper classes that is not available in the referenced DICOM library. It is not intended to be a DICOM library itself (although it might if the need arise).

  4. DICOMclould.Dicom.DataAccess: This project is the data storage and query layer. It contains the data models and backend services for storing and querying the DICOM data. The current implementation has built-in support for MS SQL Server and Azure SQL Database compatible. Other custom implementation can be created and plugged into the framework.

  5. DICOMcloud.Pacs: This project is for building the DICOM server services (Store, Query, Retrieve...).

  6. DICOMcloud.Wado.Models: This project contains the models used for the WADO/DICOM Web requests and responses as defined by the DICOM standard. This might be merged into the Wado.Core project.

  7. DICOMclould.Wado.Core: This project has the implementation of the various DICOM web services, it process the requests and generate the proper responses.

  8. DICOMclould.Wado: This is an ASP.NET project that implements the RESTful Web API methods using the ApiController class.