Vuresoft.Dicom.Wado
0.2.8
dotnet add package Vuresoft.Dicom.Wado --version 0.2.8
NuGet\Install-Package Vuresoft.Dicom.Wado -Version 0.2.8
<PackageReference Include="Vuresoft.Dicom.Wado" Version="0.2.8" />
<PackageVersion Include="Vuresoft.Dicom.Wado" Version="0.2.8" />
<PackageReference Include="Vuresoft.Dicom.Wado" />
paket add Vuresoft.Dicom.Wado --version 0.2.8
#r "nuget: Vuresoft.Dicom.Wado, 0.2.8"
#:package Vuresoft.Dicom.Wado@0.2.8
#addin nuget:?package=Vuresoft.Dicom.Wado&version=0.2.8
#tool nuget:?package=Vuresoft.Dicom.Wado&version=0.2.8
Vuresoft.Dicom.Wado
A standalone DICOMweb/WADO library implementing WADO-RS and WADO-URI endpoints for ASP.NET Core applications.
** BETA VERSION **
Features
WADO-RS (Web Access to DICOM Objects - RESTful Services)
- Study, Series, and Instance retrieval
- Metadata endpoints
- QIDO-RS search capabilities
WADO-URI (Web Access to DICOM Objects - URI)
- Legacy URI-based DICOM retrieval
Usage
1. Implement Required Interfaces
The library requires you to implement two interfaces to connect to your storage system:
IStudyResolver
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();
}
}
IDicomFileProviderFactory
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);
}
}
IDicomFileProvider
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
}
}
2. Register Services
In your Program.cs
or Startup.cs
:
// Register your implementations
builder.Services.AddScoped<IStudyResolver, MyStudyResolver>();
builder.Services.AddScoped<IDicomFileProviderFactory, MyDicomFileProviderFactory>();
3. Map Endpoints
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();
Endpoints
The library provides the following endpoints:
WADO-RS
Studies
GET /dicomweb/rs/studies
- Search studies (QIDO-RS)GET /dicomweb/rs/studies/{studyUID}
- Retrieve studyGET /dicomweb/rs/studies/{studyUID}/metadata
- Study metadata
Series
GET /dicomweb/rs/studies/{studyUID}/series
- Search seriesGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}
- Retrieve seriesGET /dicomweb/rs/studies/{studyUID}/series/{seriesUID}/metadata
- Series metadata
Instances
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 data
WADO-URI
GET /dicomweb/wado?requestType=WADO&studyUID={}&seriesUID={}&objectUID={}
- Legacy WADO-URI
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- fo-dicom (>= 5.2.2)
- fo-dicom.Codecs (>= 5.16.4)
- fo-dicom.json (>= 5.2.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.