Skip to content

Commit

Permalink
Merge pull request #1006 from Project-MONAI/nds-addAccessionId
Browse files Browse the repository at this point in the history
Nds add accession
  • Loading branch information
neildsouth authored Jul 3, 2024
2 parents 1eab5bf + 119f136 commit 12573b1
Show file tree
Hide file tree
Showing 17 changed files with 45 additions and 17 deletions.
Empty file modified src/WorkflowManager/Common/Interfaces/IPayloadService.cs
100644 → 100755
Empty file.
3 changes: 2 additions & 1 deletion src/WorkflowManager/Common/Services/PayloadService.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ public PayloadService(
PatientDetails = patientDetails,
PayloadDeleted = PayloadDeleted.No,
Expires = await GetExpiry(DateTime.UtcNow, eventPayload.WorkflowInstanceId),
SeriesInstanceUid = _dicomService.GetSeriesInstanceUID(dict)
SeriesInstanceUid = _dicomService.GetSeriesInstanceUID(dict),
AccessionId = _dicomService.GetAccessionID(dict) ?? string.Empty
};

if (await _payloadRepository.CreateAsync(payload))
Expand Down
Empty file.
Empty file.
2 changes: 1 addition & 1 deletion src/WorkflowManager/Contracts/Migrations/M002_WorkflowRevision_addVerion.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace Monai.Deploy.WorkflowManager.Common.Contracts.Migrations
{
public class M002_WorkflowRevision_addVerion : DocumentMigration<WorkflowRevision>

Check warning on line 22 in src/WorkflowManager/Contracts/Migrations/M002_WorkflowRevision_addVerion.cs

View workflow job for this annotation

GitHub Actions / sonarscanner

Rename class 'M002_WorkflowRevision_addVerion' to match pascal case naming rules, consider using 'M002WorkflowRevisionaddVerion'. (https://rules.sonarsource.com/csharp/RSPEC-101)
{
public M002_WorkflowRevision_addVerion() : base("1.0.0") { }
public M002_WorkflowRevision_addVerion() : base("1.0.2") { }

public override void Up(BsonDocument document)
{
Expand Down
Empty file.
2 changes: 1 addition & 1 deletion src/WorkflowManager/Contracts/Migrations/M003_WorkflowRevision_addDataRetension.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace Monai.Deploy.WorkflowManager.Common.Contracts.Migrations
{
public class M003_WorkflowRevision_addDataRetension : DocumentMigration<WorkflowRevision>

Check warning on line 23 in src/WorkflowManager/Contracts/Migrations/M003_WorkflowRevision_addDataRetension.cs

View workflow job for this annotation

GitHub Actions / sonarscanner

Rename class 'M003_WorkflowRevision_addDataRetension' to match pascal case naming rules, consider using 'M003WorkflowRevisionaddDataRetension'. (https://rules.sonarsource.com/csharp/RSPEC-101)
{
public M003_WorkflowRevision_addDataRetension() : base("1.0.1") { }
public M003_WorkflowRevision_addDataRetension() : base("1.0.3") { }

public override void Up(BsonDocument document)
{
Expand Down
Empty file.
2 changes: 1 addition & 1 deletion src/WorkflowManager/Contracts/Migrations/M004_WorkflowRevision_addConditions.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace Monai.Deploy.WorkflowManager.Common.Contracts.Migrations
{
public class M004_WorkflowRevision_addConditions : DocumentMigration<WorkflowRevision>
{
public M004_WorkflowRevision_addConditions() : base("1.0.2") { }
public M004_WorkflowRevision_addConditions() : base("1.0.4") { }

public override void Up(BsonDocument document)
{
Expand Down
Empty file.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,20 @@

namespace Monai.Deploy.WorkflowManager.Common.Contracts.Migrations
{
public class M001_WorkflowRevision_addVerion : DocumentMigration<WorkflowRevision>
public class M007_Payload_addAccessionId : DocumentMigration<Payload>
{
public M001_WorkflowRevision_addVerion() : base("1.0.0") { }
public M007_Payload_addAccessionId() : base("1.0.7") { }

public override void Up(BsonDocument document)
{
// empty, but this will make all objects re-saved with a version
document.Add("AccessionId", new BsonString(""), true);
}

public override void Down(BsonDocument document)
{
try
{
document.Remove("Version");
document.Remove("AccessionId");
}
catch
{ // can ignore we dont want failures stopping startup !
Expand Down
7 changes: 5 additions & 2 deletions src/WorkflowManager/Contracts/Models/Payload.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,21 @@

namespace Monai.Deploy.WorkflowManager.Common.Contracts.Models
{
[CollectionLocation("Payloads"), RuntimeVersion("1.0.6")]
[CollectionLocation("Payloads"), RuntimeVersion("1.0.7")]
public class Payload : IDocument
{
[JsonConverter(typeof(DocumentVersionConvert)), BsonSerializer(typeof(DocumentVersionConverBson))]
public DocumentVersion Version { get; set; } = new DocumentVersion(1, 0, 5);
public DocumentVersion Version { get; set; } = new DocumentVersion(1, 0, 7);

[JsonProperty(PropertyName = "id")]
public string Id { get; set; } = string.Empty;

[JsonProperty(PropertyName = "payload_id")]
public string PayloadId { get; set; } = string.Empty;

[JsonProperty(PropertyName = "accession_id")]
public string AccessionId { get; set; } = string.Empty;

[JsonProperty(PropertyName = "workflows")]
public IEnumerable<string> Workflows { get; set; } = [];

Expand Down
2 changes: 1 addition & 1 deletion src/WorkflowManager/Contracts/Models/WorkflowRevision.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

namespace Monai.Deploy.WorkflowManager.Common.Contracts.Models
{
[CollectionLocation("Workflows"), RuntimeVersion("1.0.2")]
[CollectionLocation("Workflows"), RuntimeVersion("1.0.4")]
public class WorkflowRevision : ISoftDeleteable, IDocument
{
[BsonId]
Expand Down
2 changes: 2 additions & 0 deletions src/WorkflowManager/Storage/Constants/DicomTagConstants.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,7 @@ public static class DicomTagConstants
public const string PatientHospitalIdTag = "00100021";

public const string SeriesInstanceUIDTag = "0020000E";

public const string AccessionNumberTag = "00080050";
}
}
24 changes: 19 additions & 5 deletions src/WorkflowManager/Storage/Services/DicomService.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ public DicomService(IStorageService storageService, ILogger<DicomService> logger

public async Task<PatientDetails> GetPayloadPatientDetailsAsync(string payloadId, string bucketName)
{
ArgumentNullException.ThrowIfNullOrWhiteSpace(bucketName, nameof(bucketName));
ArgumentNullException.ThrowIfNullOrWhiteSpace(payloadId, nameof(payloadId));
ArgumentNullException.ThrowIfNullOrWhiteSpace(bucketName);
ArgumentNullException.ThrowIfNullOrWhiteSpace(payloadId);

var dict = await GetMetaData(payloadId, bucketName);

Expand All @@ -91,7 +91,7 @@ public async Task<PatientDetails> GetPayloadPatientDetailsAsync(string payloadId

private string? GetFirstValueAsync(Dictionary<string, DicomValue>? dict, string keyId)
{
ArgumentNullException.ThrowIfNullOrWhiteSpace(keyId, nameof(keyId));
ArgumentNullException.ThrowIfNullOrWhiteSpace(keyId);
if (dict is null)
{
return null;
Expand All @@ -117,8 +117,8 @@ public async Task<PatientDetails> GetPayloadPatientDetailsAsync(string payloadId

public async Task<Dictionary<string, DicomValue>?> GetMetaData(string payloadId, string bucketId)
{
ArgumentNullException.ThrowIfNullOrWhiteSpace(bucketId, nameof(bucketId));
ArgumentNullException.ThrowIfNullOrWhiteSpace(payloadId, nameof(payloadId));
ArgumentNullException.ThrowIfNullOrWhiteSpace(bucketId);
ArgumentNullException.ThrowIfNullOrWhiteSpace(payloadId);
var items = await _storageService.ListObjectsAsync(bucketId, $"{payloadId}/dcm", true);
var dict = new Dictionary<string, DicomValue>(StringComparer.OrdinalIgnoreCase);
try
Expand Down Expand Up @@ -296,6 +296,20 @@ public string GetValue(Dictionary<string, DicomValue> dict, string keyId)
return null;
}

public string? GetAccessionID(Dictionary<string, DicomValue>? dict)
{
if (dict is null)
{
return null;
}

if (dict.TryGetValue(DicomTagConstants.AccessionNumberTag, out var value))
{
return JsonConvert.SerializeObject(value.Value);
}
return null;
}

private string TryGetValueAndLogSupported(string vrFullString, DicomValue value, string jsonString)
{
var result = TryGetValue(value);
Expand Down
9 changes: 8 additions & 1 deletion src/WorkflowManager/Storage/Services/IDicomService.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,14 @@ public interface IDicomService
/// Get the seriers instance UID from the metadata.
/// </summary>
/// <param name="dict"></param>
/// <returns>a string containing the seriers instanceUid</returns>
/// <returns>a string containing the series instanceUid</returns>
string? GetSeriesInstanceUID(Dictionary<string, DicomValue>? dict);

/// <summary>
/// Gets the Accession number from the metadata.
/// </summary>
/// <param name="dict">the metadata from the file</param>
/// <returns>a string containing the accession number</returns>
string? GetAccessionID(Dictionary<string, DicomValue>? dict);
}
}

0 comments on commit 12573b1

Please sign in to comment.