![]() |
VOOZH | about |
dotnet add package Vuresoft.Dicom.Wado --version 0.3.2
NuGet\Install-Package Vuresoft.Dicom.Wado -Version 0.3.2
<PackageReference Include="Vuresoft.Dicom.Wado" Version="0.3.2" />
<PackageVersion Include="Vuresoft.Dicom.Wado" Version="0.3.2" />Directory.Packages.props
<PackageReference Include="Vuresoft.Dicom.Wado" />Project file
paket add Vuresoft.Dicom.Wado --version 0.3.2
#r "nuget: Vuresoft.Dicom.Wado, 0.3.2"
#:package Vuresoft.Dicom.Wado@0.3.2
#addin nuget:?package=Vuresoft.Dicom.Wado&version=0.3.2Install as a Cake Addin
#tool nuget:?package=Vuresoft.Dicom.Wado&version=0.3.2Install as a Cake Tool
A standalone DICOMweb/WADO library implementing WADO-RS and WADO-URI endpoints for ASP.NET Core applications.
** BETA VERSION **
WADO-RS (Web Access to DICOM Objects - RESTful Services)
WADO-URI (Web Access to DICOM Objects - URI)
The library requires you to implement two interfaces to connect to your storage system:
Maps DICOM Study UIDs to your storage identifiers:
public class MyStudyResolver : IStudyResolver
{
private readonly ApplicationDbContext _dbContext;
public MyStudyResolver(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<Guid?> GetStudyIdAsync(string studyInstanceUid)
{
var study = await _dbContext.Studies
.FirstOrDefaultAsync(s => s.StudyInstanceUid == studyInstanceUid);
return study?.Id;
}
public async Task<IEnumerable<Guid>> GetAllStudyIdsAsync()
{
return await _dbContext.Studies
.Where(s => !string.IsNullOrEmpty(s.StudyInstanceUid))
.Select(s => s.Id)
.ToListAsync();
}
}
Creates providers for accessing DICOM data:
public class MyDicomFileProviderFactory : IDicomFileProviderFactory
{
public IDicomFileProvider CreateProvider(Guid studyId)
{
// Return your implementation that can access DICOM files
// This could be file system, database, cloud storage, etc.
return new MyDicomFileProvider(studyId);
}
}
Implement this to provide access to your DICOM storage:
public class MyDicomFileProvider : IDicomFileProvider
{
private readonly Guid _studyId;
public MyDicomFileProvider(Guid studyId)
{
_studyId = studyId;
}
public async Task<DicomDataset?> GetInstanceAsync(
StudyInstanceUid studyInstanceUid,
SeriesInstanceUid seriesInstanceUid,
SopInstanceUid sopInstanceUid)
{
// Load and return DICOM dataset
}
public async Task<byte[]?> GetInstanceBytesAsync(
StudyInstanceUid studyInstanceUid,
SeriesInstanceUid seriesInstanceUid,
SopInstanceUid sopInstanceUid)
{
// Return raw DICOM file bytes
}
// ... implement other methods
public void Dispose()
{
// Cleanup resources
}
}
In your Program.cs or Startup.cs:
// Register your implementations
builder.Services.AddScoped<IStudyResolver, MyStudyResolver>();
builder.Services.AddScoped<IDicomFileProviderFactory, MyDicomFileProviderFactory>();
In Startup.cs:
// Configure DICOMweb options
var dicomWebOptions = new DicomWebOptions
{
BaseUrl = $"/dicomweb/rs",
WadoUriBaseUrl = "/dicomweb/wado",
BulkDataThreshold = 1024,
IncludeWadoUri = true
};
// Map DICOMweb endpoints
app.MapDicomWebEndpoints(dicomWebOptions);
app.Run();
The library provides the following endpoints:
Studies
GET /dicomweb/rs/studies - Search studies (QIDO-RS)GET /dicomweb/rs/studies/{studyUID} - Retrieve studyGET /dicomweb/rs/studies/{studyUID}/metadata - Study metadataSeries
GET /dicomweb/rs/studies/{studyUID}/series - Search seriesGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID} - Retrieve seriesGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}/metadata - Series metadataInstances
GET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}/instances/{instanceUID} - Retrieve instanceGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}/instances/{instanceUID}/metadata - Instance metadataGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}/instances/{instanceUID}/frames/{frame} - Frame dataGET /dicomweb/wado?requestType=WADO&studyUID={}&seriesUID={}&objectUID={} - Legacy WADO-URIawait using in frame and bulk data endpoints.ToArray() to use Results.Stream() (eliminates unnecessary byte array copy).ToArray() to use Results.Stream()| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.2 | 217 | 12/14/2025 |
| 0.3.1 | 161 | 12/12/2025 |
| 0.3.0 | 469 | 12/11/2025 |
| 0.2.20 | 474 | 12/10/2025 |
| 0.2.19 | 487 | 12/10/2025 |
| 0.2.18 | 479 | 12/9/2025 |
| 0.2.16 | 478 | 12/9/2025 |
| 0.2.15 | 475 | 12/9/2025 |
| 0.2.14 | 486 | 12/9/2025 |
| 0.2.13 | 245 | 11/27/2025 |
| 0.2.12 | 384 | 9/18/2025 |
| 0.2.11 | 294 | 9/15/2025 |
| 0.2.9 | 220 | 9/12/2025 |
| 0.2.8 | 237 | 9/9/2025 |
| 0.2.6 | 216 | 9/8/2025 |
| 0.1.0 | 280 | 8/28/2025 |