@@ -126,8 +126,10 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
126126 var metadata = new Dictionary < string , string > ( ) ;
127127 if ( Event . Inputs . Any ( ) )
128128 {
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+ }
131133 }
132134
133135 var emailRequest = GenerateEmailRequestEventMessage ( metadata ) ;
@@ -143,39 +145,53 @@ public override async Task<ExecutionStatus> ExecuteTask(CancellationToken cancel
143145 }
144146 }
145147
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 )
147149 {
148150 if ( _includeMetadata is null || _includeMetadata . Count ( ) == 0 )
149151 {
150152 _logger . NoMetaDataRequested ( ) ;
151- return null ;
153+ return metadata ;
152154 }
153- // load file from Minio !
154- Guard . Against . NullOrWhiteSpace ( bucketName ) ;
155- Guard . Against . NullOrWhiteSpace ( path ) ;
156155
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 )
162158 {
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 } ") ;
164165 try
165166 {
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+ }
171187 }
172- if ( tag is not null )
188+ catch ( Exception ex )
173189 {
174- output . Add ( item , dcmFile . Dataset . GetString ( tag ) ) ;
190+ _logger ? . ErrorGettingMetaData ( $ " { file . FilePath } / { file . Filename } " , ex . Message ) ;
175191 }
176192 }
177193
178- return output ;
194+ return metadata ;
179195 }
180196
181197 private JsonMessage < EmailRequestEvent > GenerateEmailRequestEventMessage ( Dictionary < string , string > ? metadata )
0 commit comments