Skip to content

Commit 150e36d

Browse files
authored
Merge pull request #1012 from Project-MONAI/nds-addAccessionId
adding accession Id filtering for counts
2 parents 5a6f2e6 + 96a5162 commit 150e36d

18 files changed

+145
-40
lines changed

src/WorkflowManager/Common/Interfaces/IPaginatedApi.cs

100644100755
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
* limitations under the License.
1515
*/
1616

17+
using MongoDB.Driver;
18+
1719
namespace Monai.Deploy.WorkflowManager.Common.Miscellaneous.Interfaces
1820
{
1921
public interface IPaginatedApi<T>
2022
{
21-
Task<long> CountAsync();
23+
Task<long> CountAsync(FilterDefinition<T>? filter = null);
2224

2325
Task<IList<T>> GetAllAsync(int? skip = null, int? limit = null);
2426
}

src/WorkflowManager/Common/Interfaces/IPayloadService.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
using Monai.Deploy.Messaging.Events;
1818
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
19+
using MongoDB.Driver;
1920

2021
namespace Monai.Deploy.WorkflowManager.Common.Miscellaneous.Interfaces
2122
{
@@ -38,8 +39,9 @@ public interface IPayloadService : IPaginatedApi<PayloadDto>
3839
/// </summary>
3940
Task<IList<PayloadDto>> GetAllAsync(int? skip = null,
4041
int? limit = null,
41-
string? patientId = "",
42-
string? patientName = "");
42+
string? patientId = null,
43+
string? patientName = null,
44+
string? accessionId = null);
4345
new Task<IList<PayloadDto>> GetAllAsync(int? skip = null, int? limit = null);
4446

4547
/// <summary>
@@ -63,5 +65,7 @@ Task<IList<PayloadDto>> GetAllAsync(int? skip = null,
6365
/// <param name="payload">updated payload.</param>
6466
/// <returns>true if the update is successful, false otherwise.</returns>
6567
Task<bool> UpdateAsyncWorkflowIds(Payload payload);
68+
69+
Task<long> CountAsync(FilterDefinition<Payload> filter);
6670
}
6771
}

src/WorkflowManager/Common/Services/PayloadService.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
using Monai.Deploy.WorkflowManager.Common.Storage.Services;
2727
using Microsoft.Extensions.Options;
2828
using Monai.Deploy.WorkflowManager.Common.Configuration;
29+
using MongoDB.Driver;
2930

3031
namespace Monai.Deploy.WorkflowManager.Common.Miscellaneous.Services
3132
{
@@ -149,10 +150,11 @@ public async Task<Payload> GetByIdAsync(string payloadId)
149150

150151
public async Task<IList<PayloadDto>> GetAllAsync(int? skip = null,
151152
int? limit = null,
152-
string? patientId = "",
153-
string? patientName = "")
153+
string? patientId = null,
154+
string? patientName = null,
155+
string? accessionId = null)
154156
=> await CreatePayloadsDto(
155-
await _payloadRepository.GetAllAsync(skip, limit, patientId ?? string.Empty, patientName ?? string.Empty)
157+
await _payloadRepository.GetAllAsync(skip, limit, patientId, patientName, accessionId)
156158
);
157159

158160
public async Task<IList<PayloadDto>> GetAllAsync(int? skip = null, int? limit = null)
@@ -193,7 +195,13 @@ private async Task<IList<PayloadDto>> CreatePayloadsDto(IList<Payload> payloads)
193195
return dtos;
194196
}
195197

196-
public async Task<long> CountAsync() => await _payloadRepository.CountAsync();
198+
public async Task<long> CountAsync(FilterDefinition<Payload> filter)
199+
=> await _payloadRepository.CountAsync(filter);
200+
201+
202+
// this has to be here because of the base, but dont use it !
203+
public Task<long> CountAsync(FilterDefinition<PayloadDto>? filter)
204+
=> throw new NotImplementedException();
197205

198206
public async Task<bool> DeletePayloadFromStorageAsync(string payloadId)
199207
{

src/WorkflowManager/Common/Services/WorkflowInstanceService.cs

100644100755
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
* limitations under the License.
1515
*/
1616

17-
using Ardalis.GuardClauses;
1817
using Microsoft.Extensions.Logging;
1918
using Monai.Deploy.Messaging.Events;
2019
using Monai.Deploy.WorkflowManager.Common.Miscellaneous.Exceptions;
2120
using Monai.Deploy.WorkflowManager.Common.Miscellaneous.Interfaces;
2221
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
2322
using Monai.Deploy.WorkflowManager.Common.Database.Interfaces;
2423
using Monai.Deploy.WorkflowManager.Common.Logging;
24+
using MongoDB.Driver;
2525

2626
namespace Monai.Deploy.WorkflowManager.Common.Miscellaneous.Services
2727
{
@@ -87,7 +87,11 @@ public async Task UpdateExportCompleteMetadataAsync(string workflowInstanceId, s
8787
await _workflowInstanceRepository.UpdateExportCompleteMetadataAsync(workflowInstanceId, executionId, resultMetadata);
8888
}
8989

90-
public async Task<long> CountAsync() => await _workflowInstanceRepository.CountAsync();
90+
public async Task<long> CountAsync(FilterDefinition<WorkflowInstance>? filter)
91+
{
92+
filter = filter ?? Builders<WorkflowInstance>.Filter.Empty;
93+
return await _workflowInstanceRepository.CountAsync(filter);
94+
}
9195

9296
public async Task<IList<WorkflowInstance>> GetAllAsync(int? skip = null, int? limit = null, Status? status = null, string? payloadId = null)
9397
=> await _workflowInstanceRepository.GetAllAsync(skip, limit, status, payloadId);

src/WorkflowManager/Common/Services/WorkflowService.cs

100644100755
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
2020
using Monai.Deploy.WorkflowManager.Common.Database.Interfaces;
2121
using Monai.Deploy.WorkflowManager.Common.Logging;
22+
using MongoDB.Driver;
2223

2324
namespace Monai.Deploy.WorkflowManager.Common.Miscellaneous.Services
2425
{
@@ -83,7 +84,8 @@ public Task<DateTime> DeleteWorkflowAsync(WorkflowRevision workflow)
8384
return result;
8485
}
8586

86-
public async Task<long> CountAsync() => await _workflowRepository.CountAsync();
87+
public async Task<long> CountAsync(FilterDefinition<WorkflowRevision>? filter)
88+
=> await _workflowRepository.CountAsync(filter ?? Builders<WorkflowRevision>.Filter.Empty);
8789

8890
public async Task<IList<WorkflowRevision>> GetAllAsync(int? skip = null, int? limit = null)
8991
=> await _workflowRepository.GetAllAsync(skip, limit);

src/WorkflowManager/Database/Interfaces/IPayloadRepository.cs

100644100755
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using System.Collections.Generic;
1919
using System.Threading.Tasks;
2020
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
21+
using MongoDB.Driver;
2122

2223
namespace Monai.Deploy.WorkflowManager.Common.Database.Interfaces
2324
{
@@ -32,7 +33,7 @@ public interface IPayloadRepository
3233
/// <summary>
3334
/// Retrieves a list of payloads in the database.
3435
/// </summary>
35-
Task<IList<Payload>> GetAllAsync(int? skip = null, int? limit = null, string patientId = "", string patientName = "");
36+
Task<IList<Payload>> GetAllAsync(int? skip = null, int? limit = null, string? patientId = null, string? patientName = null, string? accessionId = null);
3637

3738
/// <summary>
3839
/// Retrieves a payload by id in the database.
@@ -44,7 +45,7 @@ public interface IPayloadRepository
4445
/// Gets count of objects
4546
/// </summary>
4647
/// <returns>Count of objects.</returns>
47-
Task<long> CountAsync();
48+
Task<long> CountAsync(FilterDefinition<Payload> filter);
4849

4950
/// <summary>
5051
/// Updates a payload in the database.

src/WorkflowManager/Database/Interfaces/IWorkflowInstanceRepository.cs

100644100755
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using System.Threading.Tasks;
1919
using Monai.Deploy.Messaging.Events;
2020
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
21+
using MongoDB.Driver;
2122

2223
namespace Monai.Deploy.WorkflowManager.Common.Database.Interfaces
2324
{
@@ -44,7 +45,7 @@ public interface IWorkflowInstanceRepository
4445
/// Gets count of Workflow Instances.
4546
/// </summary>
4647
/// <returns></returns>
47-
Task<long> CountAsync();
48+
Task<long> CountAsync(FilterDefinition<WorkflowInstance> filter);
4849

4950
/// <summary>
5051
/// Gets the count of workflow instances with a filter.

src/WorkflowManager/Database/Interfaces/IWorkflowRepository.cs

100644100755
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using System.Collections.Generic;
1919
using System.Threading.Tasks;
2020
using Monai.Deploy.WorkflowManager.Common.Contracts.Models;
21+
using MongoDB.Driver;
2122

2223
namespace Monai.Deploy.WorkflowManager.Common.Database.Interfaces
2324
{
@@ -97,7 +98,7 @@ public interface IWorkflowRepository
9798
/// <returns></returns>
9899
Task<DateTime> SoftDeleteWorkflow(WorkflowRevision workflow);
99100

100-
Task<long> CountAsync();
101+
Task<long> CountAsync(FilterDefinition<WorkflowRevision> filter);
101102

102103
Task<IList<WorkflowRevision>> GetAllAsync(int? skip, int? limit);
103104

src/WorkflowManager/Database/Repositories/PayloadRepository.cs

100644100755
Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ private async Task EnsureIndex()
7171
}
7272
}
7373

74-
public Task<long> CountAsync() => CountAsync(_payloadCollection, null);
74+
public Task<long> CountAsync(FilterDefinition<Payload> filter)
75+
{
76+
return CountAsync(_payloadCollection, filter);
77+
}
7578

7679
public async Task<bool> CreateAsync(Payload payload)
7780
{
@@ -91,18 +94,19 @@ public async Task<bool> CreateAsync(Payload payload)
9194
}
9295
}
9396

94-
public async Task<IList<Payload>> GetAllAsync(int? skip = null, int? limit = null, string? patientId = "", string? patientName = "")
97+
public async Task<IList<Payload>> GetAllAsync(int? skip = null, int? limit = null, string? patientId = null, string? patientName = null, string? accessionId = null)
9598
{
9699
var builder = Builders<Payload>.Filter;
97100
var filter = builder.Empty;
98-
if (!string.IsNullOrEmpty(patientId))
99-
{
100-
filter &= builder.Regex(p => p.PatientDetails.PatientId, new BsonRegularExpression($"/{patientId}/i"));
101-
}
102-
if (!string.IsNullOrEmpty(patientName))
103-
{
104-
filter &= builder.Regex(p => p.PatientDetails.PatientName, new BsonRegularExpression($"/{patientName}/i"));
105-
}
101+
if (!string.IsNullOrEmpty(patientId)) filter
102+
&= builder.Regex(p => p.PatientDetails.PatientId, new BsonRegularExpression($"/{patientId}/i"));
103+
104+
if (!string.IsNullOrEmpty(patientName)) filter
105+
&= builder.Regex(p => p.PatientDetails.PatientName, new BsonRegularExpression($"/{patientName}/i"));
106+
107+
if (!string.IsNullOrWhiteSpace(accessionId)) filter
108+
&= builder.Regex(p => p.AccessionId, new BsonRegularExpression($"/{accessionId}/i"));
109+
106110

107111
return await GetAllAsync(_payloadCollection,
108112
filter,

src/WorkflowManager/Database/Repositories/WorkflowInstanceRepository.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,10 @@ public async Task<WorkflowInstance> GetByWorkflowInstanceIdAsync(string workflow
313313
return workflow;
314314
}
315315

316-
public async Task<long> CountAsync() => await CountAsync(_workflowInstanceCollection, null);
316+
public async Task<long> CountAsync(FilterDefinition<WorkflowInstance> filter)
317+
{
318+
return await CountAsync(_workflowInstanceCollection, filter);
319+
}
317320

318321
public async Task<long> FilteredCountAsync(Status? status = null, string? payloadId = null)
319322
{

0 commit comments

Comments
 (0)