Example #1
0
        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);
            }
        }