Skip to content

Commit 07f6d1e

Browse files
committed
fix for metadata extraction
Signed-off-by: Neil South <[email protected]>
1 parent 4765ff6 commit 07f6d1e

File tree

2 files changed

+39
-21
lines changed

2 files changed

+39
-21
lines changed

src/TaskManager/Plug-ins/Email/EmailPlugin.cs

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,10 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
130130
var metadata = new Dictionary<string, string>();
131131
if (Event.Inputs.Any())
132132
{
133-
// only process the first input for now
134-
metadata = await GetRawMetaFromFile($"{Event.Inputs.First().RelativeRootPath}/{Event.Inputs.First().Name}", Event.Inputs.First().Bucket);
133+
foreach (var input in Event.Inputs)
134+
{
135+
metadata = await AddRawMetaFromFile(metadata, $"{input.RelativeRootPath}", input.Bucket);
136+
}
135137
}
136138

137139
var emailRequest = GenerateEmailRequestEventMessage(metadata);
@@ -147,39 +149,52 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
147149
}
148150
}
149151

150-
private async Task<Dictionary<string, string>?> GetRawMetaFromFile(string path, string bucketName)
152+
private async Task<Dictionary<string, string>> AddRawMetaFromFile(Dictionary<string, string> metadata, string path, string bucketName)
151153
{
152154
if (_includeMetadata is null || _includeMetadata.Count() == 0)
153155
{
154156
_logger.NoMetaDataRequested();
155-
return null;
157+
return metadata;
156158
}
157-
// load file from Minio !
158-
Guard.Against.NullOrWhiteSpace(bucketName);
159-
Guard.Against.NullOrWhiteSpace(path);
160159

161-
var fileStream = await _storageService.GetObjectAsync(bucketName, path);
162-
var dcmFile = DicomFile.Open(fileStream);
163-
164-
var output = new Dictionary<string, string>();
165-
foreach (var item in _includeMetadata)
160+
var allFiles = await _storageService.ListObjectsAsync(path, bucketName);
161+
foreach (var file in allFiles)
166162
{
167-
DicomTag tag;
163+
Guard.Against.NullOrWhiteSpace(bucketName);
164+
Guard.Against.NullOrWhiteSpace(path);
165+
166+
// load file from Minio !
167+
var fileStream = await _storageService.GetObjectAsync(bucketName, $"{file.FilePath}/{file.Filename}");
168168
try
169169
{
170-
tag = DicomDictionary.Default[item];
171-
}
172-
catch (Exception)
173-
{
174-
tag = DicomTag.Parse(item);
170+
var dcmFile = DicomFile.Open(fileStream);
171+
172+
foreach (var item in _includeMetadata)
173+
{
174+
if (metadata.ContainsKey(item)) continue;
175+
176+
DicomTag tag;
177+
try
178+
{
179+
tag = DicomDictionary.Default[item];
180+
}
181+
catch (Exception)
182+
{
183+
tag = DicomTag.Parse(item);
184+
}
185+
if (tag is not null)
186+
{
187+
metadata.Add(item, dcmFile.Dataset.GetString(tag));
188+
}
189+
}
175190
}
176-
if (tag is not null)
191+
catch (Exception ex)
177192
{
178-
output.Add(item, dcmFile.Dataset.GetString(tag));
193+
_logger?.ErrorGettingMetaData($"{file.FilePath}/{file.Filename}", ex.Message);
179194
}
180195
}
181196

182-
return output;
197+
return metadata;
183198
}
184199

185200
private JsonMessage<EmailRequestEvent> GenerateEmailRequestEventMessage(Dictionary<string, string>? metadata)

src/TaskManager/Plug-ins/Email/Log.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,8 @@ public static partial class Log
3939

4040
[LoggerMessage(EventId = 6, Level = LogLevel.Debug, Message = "No Metadata requested in event")]
4141
public static partial void NoMetaDataRequested(this ILogger logger);
42+
43+
[LoggerMessage(EventId = 7, Level = LogLevel.Debug, Message = "Error Getting Metadata requested for file: {fileName} message:{message} ")]
44+
public static partial void ErrorGettingMetaData(this ILogger logger, string fileName, string message);
4245
}
4346
}

0 commit comments

Comments
 (0)