Example #1
0
        /// Calculates the RTOG conformity index as isodose volume irradiated at reference dose (Body contour volume irradiated)
        /// divided by the target volume. Does not necessarily mean the volumes are coincident!
        /// </summary>
        /// <param name="s">the target structure</param>
        /// <param name="pi">the planning item containing the dose</param>
        /// <param name="referenceDose">the reference isodose (eg. prescription dose)</param>
        /// <returns>RTOG conformity index</returns>
        public static double GetCI_RTOG(ESAPIX.Facade.API.Structure s, ESAPIX.Facade.API.PlanningItem pi, DoseValue referenceDose)
        {
            var external = pi.GetStructureSet()?.Structures.FirstOrDefault(st => st.DicomType == DICOMType.EXTERNAL);

            if (external == null)
            {
                return(double.NaN);
            }
            var prescription_volIsodose = pi.GetVolumeAtDose(external, referenceDose, VolumePresentation.AbsoluteCm3);
            var target_vol = s.Volume;

            return(prescription_volIsodose / target_vol);
        }
Example #2
0
        public void RemoveStructure(ESAPIX.Facade.API.Structure structure)
        {
            if ((XC.Instance.CurrentContext) != (null))
            {
                XC.Instance.CurrentContext.Thread.Invoke(() =>
                {
                    _client.RemoveStructure(structure._client);
                }

                                                         );
            }
            else
            {
                _client.RemoveStructure(structure);
            }
        }
Example #3
0
        public System.Boolean CanRemoveStructure(ESAPIX.Facade.API.Structure structure)
        {
            if ((XC.Instance.CurrentContext) != (null))
            {
                var vmsResult = (XC.Instance.CurrentContext.GetValue(sc =>
                {
                    var fromClient = (_client.CanRemoveStructure(structure._client));
                    if (fromClient.Equals(default(System.Boolean)))
                    {
                        return(default(System.Boolean));
                    }

                    return((System.Boolean)(fromClient));
                }

                                                                     ));
                return(vmsResult);
            }
            else
            {
                return((System.Boolean)(_client.CanRemoveStructure(structure)));
            }
        }
Example #4
0
        public ESAPIX.Facade.API.DVHData GetDVHCumulativeData(ESAPIX.Facade.API.Structure structure, VMS.TPS.Common.Model.Types.DoseValuePresentation dosePresentation, VMS.TPS.Common.Model.Types.VolumePresentation volumePresentation, System.Double binWidth)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.GetDVHCumulativeData(structure._client, dosePresentation, volumePresentation, binWidth));
                    if ((fromClient) == (null))
                    {
                        return(null);
                    }

                    return(new ESAPIX.Facade.API.DVHData(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((ESAPIX.Facade.API.DVHData)(_client.GetDVHCumulativeData(structure, dosePresentation, volumePresentation, binWidth)));
            }
        }
Example #5
0
        public ESAPIX.Facade.API.OptimizationPointObjective AddPointObjective(ESAPIX.Facade.API.Structure structure, VMS.TPS.Common.Model.Types.OptimizationObjectiveOperator objectiveOperator, VMS.TPS.Common.Model.Types.DoseValue dose, System.Double volume, System.Double priority)
        {
            if ((XC.Instance.CurrentContext) != (null))
            {
                var vmsResult = (XC.Instance.CurrentContext.GetValue(sc =>
                {
                    var fromClient = (_client.AddPointObjective(structure._client, objectiveOperator, dose, volume, priority));
                    if ((fromClient) == (null))
                    {
                        return(null);
                    }

                    return(new ESAPIX.Facade.API.OptimizationPointObjective(fromClient));
                }

                                                                     ));
                return(vmsResult);
            }
            else
            {
                return((ESAPIX.Facade.API.OptimizationPointObjective)(_client.AddPointObjective(structure, objectiveOperator, dose, volume, priority)));
            }
        }
Example #6
0
        public System.Double GetVolumeAtDose(ESAPIX.Facade.API.Structure structure, VMS.TPS.Common.Model.Types.DoseValue dose, VMS.TPS.Common.Model.Types.VolumePresentation requestedVolumePresentation)
        {
            if ((XC.Instance.CurrentContext) != (null))
            {
                var vmsResult = (XC.Instance.CurrentContext.GetValue(sc =>
                {
                    var fromClient = (_client.GetVolumeAtDose(structure._client, dose, requestedVolumePresentation));
                    if (fromClient.Equals(default(System.Double)))
                    {
                        return(default(System.Double));
                    }

                    return((System.Double)(fromClient));
                }

                                                                     ));
                return(vmsResult);
            }
            else
            {
                return((System.Double)(_client.GetVolumeAtDose(structure, dose, requestedVolumePresentation)));
            }
        }
Example #7
0
        public VMS.TPS.Common.Model.Types.DoseValue GetDoseAtVolume(ESAPIX.Facade.API.Structure structure, System.Double volume, VMS.TPS.Common.Model.Types.VolumePresentation volumePresentation, VMS.TPS.Common.Model.Types.DoseValuePresentation requestedDosePresentation)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.GetDoseAtVolume(structure._client, volume, volumePresentation, requestedDosePresentation));
                    if (fromClient.Equals(default(VMS.TPS.Common.Model.Types.DoseValue)))
                    {
                        return(default(VMS.TPS.Common.Model.Types.DoseValue));
                    }

                    return((VMS.TPS.Common.Model.Types.DoseValue)(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((VMS.TPS.Common.Model.Types.DoseValue)(_client.GetDoseAtVolume(structure, volume, volumePresentation, requestedDosePresentation)));
            }
        }
Example #8
0
        public ESAPIX.Facade.API.OptimizationMeanDoseObjective AddMeanDoseObjective(ESAPIX.Facade.API.Structure structure, VMS.TPS.Common.Model.Types.DoseValue dose, System.Double priority)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.AddMeanDoseObjective(structure._client, dose, priority));
                    if ((fromClient) == (null))
                    {
                        return(null);
                    }

                    return(new ESAPIX.Facade.API.OptimizationMeanDoseObjective(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((ESAPIX.Facade.API.OptimizationMeanDoseObjective)(_client.AddMeanDoseObjective(structure, dose, priority)));
            }
        }
        public System.Boolean RemoveTradeoffObjective(ESAPIX.Facade.API.Structure structure)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.RemoveTradeoffObjective(structure._client));
                    if (fromClient.Equals(default(System.Boolean)))
                    {
                        return(default(System.Boolean));
                    }

                    return((System.Boolean)(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((System.Boolean)(_client.RemoveTradeoffObjective(structure)));
            }
        }
        public System.Boolean AddTargetHomogeneityObjective(ESAPIX.Facade.API.Structure targetStructure)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.AddTargetHomogeneityObjective(targetStructure._client));
                    if (fromClient.Equals(default(System.Boolean)))
                    {
                        return(default(System.Boolean));
                    }

                    return((System.Boolean)(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((System.Boolean)(_client.AddTargetHomogeneityObjective(targetStructure)));
            }
        }
        public ESAPIX.Facade.API.DVHData GetStructureDvh(ESAPIX.Facade.API.Structure structure)
        {
            if ((XC.Instance) != (null))
            {
                var vmsResult = (XC.Instance.GetValue(sc =>
                {
                    var fromClient = (_client.GetStructureDvh(structure._client));
                    if ((fromClient) == (null))
                    {
                        return(null);
                    }

                    return(new ESAPIX.Facade.API.DVHData(fromClient));
                }

                                                      ));
                return(vmsResult);
            }
            else
            {
                return((ESAPIX.Facade.API.DVHData)(_client.GetStructureDvh(structure)));
            }
        }
Example #12
0
        public ESAPIX.Facade.API.OptimizationPointCloudParameter AddStructurePointCloudParameter(ESAPIX.Facade.API.Structure structure, System.Double pointResolutionInMM)
        {
            if ((XC.Instance.CurrentContext) != (null))
            {
                var vmsResult = (XC.Instance.CurrentContext.GetValue(sc =>
                {
                    var fromClient = (_client.AddStructurePointCloudParameter(structure._client, pointResolutionInMM));
                    if ((fromClient) == (null))
                    {
                        return(null);
                    }

                    return(new ESAPIX.Facade.API.OptimizationPointCloudParameter(fromClient));
                }

                                                                     ));
                return(vmsResult);
            }
            else
            {
                return((ESAPIX.Facade.API.OptimizationPointCloudParameter)(_client.AddStructurePointCloudParameter(structure, pointResolutionInMM)));
            }
        }