@@ -126,8 +126,10 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
126
126
var metadata = new Dictionary < string , string > ( ) ;
127
127
if ( Event . Inputs . Any ( ) )
128
128
{
129
- // only process the first input for now
130
- metadata = await GetRawMetaFromFile ( $ "{ Event . Inputs . First ( ) . RelativeRootPath } /{ Event . Inputs . First ( ) . Name } ", Event . Inputs . First ( ) . Bucket ) ;
129
+ foreach ( var input in Event . Inputs )
130
+ {
131
+ metadata = await AddRawMetaFromFile ( metadata , $ "{ input . RelativeRootPath } ", input . Bucket ) ;
132
+ }
131
133
}
132
134
133
135
var emailRequest = GenerateEmailRequestEventMessage ( metadata ) ;
@@ -143,39 +145,53 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
143
145
}
144
146
}
145
147
146
- private async Task < Dictionary < string , string > ? > GetRawMetaFromFile ( string path , string bucketName )
148
+ private async Task < Dictionary < string , string > > AddRawMetaFromFile ( Dictionary < string , string > metadata , string path , string bucketName )
147
149
{
148
150
if ( _includeMetadata is null || _includeMetadata . Count ( ) == 0 )
149
151
{
150
152
_logger . NoMetaDataRequested ( ) ;
151
- return null ;
153
+ return metadata ;
152
154
}
153
- // load file from Minio !
154
- Guard . Against . NullOrWhiteSpace ( bucketName ) ;
155
- Guard . Against . NullOrWhiteSpace ( path ) ;
156
155
157
- var fileStream = await _storageService . GetObjectAsync ( bucketName , path ) ;
158
- var dcmFile = DicomFile . Open ( fileStream ) ;
159
-
160
- var output = new Dictionary < string , string > ( ) ;
161
- foreach ( var item in _includeMetadata )
156
+ var allFiles = await _storageService . ListObjectsAsync ( bucketName , path , true ) ;
157
+ foreach ( var file in allFiles )
162
158
{
163
- DicomTag tag ;
159
+ if ( file . FilePath . EndsWith ( ".json" , StringComparison . InvariantCultureIgnoreCase ) ) continue ;
160
+ Guard . Against . NullOrWhiteSpace ( bucketName ) ;
161
+ Guard . Against . NullOrWhiteSpace ( path ) ;
162
+
163
+ // load file from Minio !
164
+ var fileStream = await _storageService . GetObjectAsync ( bucketName , $ "{ file . FilePath } ") ;
164
165
try
165
166
{
166
- tag = DicomDictionary . Default [ item ] ;
167
- }
168
- catch ( Exception )
169
- {
170
- tag = DicomTag . Parse ( item ) ;
167
+ var dcmFile = DicomFile . Open ( fileStream ) ;
168
+
169
+ foreach ( var item in _includeMetadata )
170
+ {
171
+ if ( metadata . ContainsKey ( item ) ) continue ;
172
+
173
+ DicomTag tag ;
174
+ try
175
+ {
176
+ tag = DicomDictionary . Default [ item ] ;
177
+ }
178
+ catch ( Exception )
179
+ {
180
+ tag = DicomTag . Parse ( item ) ;
181
+ }
182
+ if ( tag is not null )
183
+ {
184
+ metadata . Add ( item , dcmFile . Dataset . GetString ( tag ) ) ;
185
+ }
186
+ }
171
187
}
172
- if ( tag is not null )
188
+ catch ( Exception ex )
173
189
{
174
- output . Add ( item , dcmFile . Dataset . GetString ( tag ) ) ;
190
+ _logger ? . ErrorGettingMetaData ( $ " { file . FilePath } / { file . Filename } " , ex . Message ) ;
175
191
}
176
192
}
177
193
178
- return output ;
194
+ return metadata ;
179
195
}
180
196
181
197
private JsonMessage < EmailRequestEvent > GenerateEmailRequestEventMessage ( Dictionary < string , string > ? metadata )
0 commit comments