@@ -130,8 +130,10 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
130
130
var metadata = new Dictionary < string , string > ( ) ;
131
131
if ( Event . Inputs . Any ( ) )
132
132
{
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
+ }
135
137
}
136
138
137
139
var emailRequest = GenerateEmailRequestEventMessage ( metadata ) ;
@@ -147,39 +149,52 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
147
149
}
148
150
}
149
151
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 )
151
153
{
152
154
if ( _includeMetadata is null || _includeMetadata . Count ( ) == 0 )
153
155
{
154
156
_logger . NoMetaDataRequested ( ) ;
155
- return null ;
157
+ return metadata ;
156
158
}
157
- // load file from Minio !
158
- Guard . Against . NullOrWhiteSpace ( bucketName ) ;
159
- Guard . Against . NullOrWhiteSpace ( path ) ;
160
159
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 )
166
162
{
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 } ") ;
168
168
try
169
169
{
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
+ }
175
190
}
176
- if ( tag is not null )
191
+ catch ( Exception ex )
177
192
{
178
- output . Add ( item , dcmFile . Dataset . GetString ( tag ) ) ;
193
+ _logger ? . ErrorGettingMetaData ( $ " { file . FilePath } / { file . Filename } " , ex . Message ) ;
179
194
}
180
195
}
181
196
182
- return output ;
197
+ return metadata ;
183
198
}
184
199
185
200
private JsonMessage < EmailRequestEvent > GenerateEmailRequestEventMessage ( Dictionary < string , string > ? metadata )
0 commit comments