public void Load(DicomFile file, DicomPlanObject plan) { string modality = file.Dataset.GetSingleValue <string>(DicomTag.Modality); if (!modality.Contains("PLAN")) { throw (new Exception("DICOM file was not RTPLAN")); } plan.Clear(); plan.ClassUID = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.SOPClassUID, ""); plan.InstanceUID = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.SOPInstanceUID, ""); plan.ReferencedClassUID = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.ReferencedSOPClassUID, ""); plan.ReferencedInstanceUID = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.ReferencedSOPInstanceUID, ""); plan.Name = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.RTPlanName, ""); plan.Label = file.Dataset.GetSingleValueOrDefault <string>(DicomTag.RTPlanLabel, ""); if (string.IsNullOrEmpty(plan.Name)) { plan.Name = plan.Label; } if (file.Dataset.Contains(DicomTag.DoseReferenceSequence)) { var refDoseSQ = file.Dataset.GetSequence(DicomTag.DoseReferenceSequence); foreach (var rd in refDoseSQ) { plan.RxDose += rd.GetSingleValueOrDefault(DicomTag.TargetPrescriptionDose, 0.0); } } plan.IsBrachy = file.Dataset.Contains(DicomTag.SourceSequence); if (plan.IsBrachy) { LoadBrachyPlan(file, plan); } else { LoadEBRTPlan(file, plan); } }