private void SaveFile(DicomFile file)
{
String seriesInstanceUid = file.DataSet[DicomTags.SeriesInstanceUid].GetString(0, String.Empty);
String sopInstanceUid = file.DataSet[DicomTags.SopInstanceUid].GetString(0, String.Empty);
String destPath = _oldStudyLocation.FilesystemPath;
using (var filesystemUpdateProcessor = new ServerCommandProcessor("Update Study"))
{
filesystemUpdateProcessor.AddCommand(new CreateDirectoryCommand(destPath));
destPath = Path.Combine(destPath, _partition.PartitionFolder);
filesystemUpdateProcessor.AddCommand(new CreateDirectoryCommand(destPath));
destPath = Path.Combine(destPath, _oldStudyFolder);
filesystemUpdateProcessor.AddCommand(new CreateDirectoryCommand(destPath));
destPath = Path.Combine(destPath, _newStudyInstanceUid);
filesystemUpdateProcessor.AddCommand(new CreateDirectoryCommand(destPath));
destPath = Path.Combine(destPath, seriesInstanceUid);
filesystemUpdateProcessor.AddCommand(new CreateDirectoryCommand(destPath));
destPath = Path.Combine(destPath, sopInstanceUid);
destPath += ServerPlatform.DicomFileExtension;
// Overwrite the prior file
var saveCommand = new SaveDicomFileCommand(destPath, file, false);
filesystemUpdateProcessor.AddCommand(saveCommand);
if (_rulesEngine != null)
{
var context = new ServerActionContext(file, _oldStudyLocation.FilesystemKey, _partition, _oldStudyLocation.Key,
filesystemUpdateProcessor);
_rulesEngine.Execute(context);
}
if (!filesystemUpdateProcessor.Execute())
{
throw new ApplicationException(String.Format("Unable to update image {0} : {1}", file.Filename,
filesystemUpdateProcessor.FailureReason));
}
}
}