public AnonymizeStudyOutput AnonymizeStudy(AnonymizeStudyInput input) { // load study to anonymize IDataStoreReader reader = DataAccessLayer.GetIDataStoreReader(); IStudy study = reader.GetStudy(input.StudyInstanceUID); List <ISopInstance> sops = new List <ISopInstance>(study.GetSopInstances()); // ensure there is a valid output location if (string.IsNullOrEmpty(input.OutputDirectory)) { // create temp dir } string fullPath = Path.GetFullPath(input.OutputDirectory); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } // set up anonymization data StudyData studyData = new StudyData(); studyData.PatientId = input.PatientId; studyData.PatientsNameRaw = input.PatientsName; studyData.PatientsBirthDate = input.PatientsBirthDate; studyData.PatientsSex = input.PatientsSex; studyData.AccessionNumber = input.AccessionNumber; studyData.StudyDescription = input.StudyDescription; studyData.StudyDate = input.StudyDate; DicomAnonymizer anonymizer = new DicomAnonymizer(); anonymizer.StudyDataPrototype = studyData; //The default anonymizer removes the series data, so we just clone the original. anonymizer.AnonymizeSeriesDataDelegate = delegate(SeriesData original) { return(original.Clone()); }; // anonymize each image in the study for (int i = 0; i < sops.Count; ++i) { ISopInstance sop = sops[i]; DicomFile file = new DicomFile(sop.GetLocationUri().LocalDiskPath); anonymizer.Anonymize(file); file.Save(string.Format("{0}\\{1}.dcm", fullPath, i)); } return(new AnonymizeStudyOutput(sops.Count)); }