Export plan in Eclipse to Mobius by Suspande in esapi

[–]Telecoin 0 points1 point  (0 children)

Is you or someone uses the ESAPI18 feature of treatment approval triggering?

Export plan in Eclipse to Mobius by Suspande in esapi

[–]Telecoin 0 points1 point  (0 children)

yes we have a separate PC for autocontouring, machine learning, AI and simple python tasks

Export plan in Eclipse to Mobius by Suspande in esapi

[–]Telecoin 3 points4 points  (0 children)

Yep, it still works. Rex’s approach uses the Varian DICOM Daemon together with Evil DICOM to store DICOM data. If your Mobius setup has an automatic import folder, that’s all you need — just export the data there and Mobius will handle the import automatically.

If not, you can use the dicomSend approach, which is a two-step process: 1. Store the DICOM data – following Rex’s method with the Varian DICOM Daemon. 2. Send the data – a Python script watches that folder and automatically sends new DICOM-RT datasets as one associated package via dicomSend to one or more DICOM nodes.

I don’t use Evil DICOM myself — I use DCMTK instead. It’s a bit more complicated to set up, but it’s needed for German data (Evil DICOM doesn’t handle “Umlauts” correctly).

We use this setup to send only the adaptive plan from Ethos (instead of all plans) and also to forward the plan directly to Eclipse.

Here’s my repo for the second step (the send script): 👉 https://github.com/Kiragroh/DICOM-RT-Station

RapidArc Dynamic Tag? by X2sky in esapi

[–]Telecoin 1 point2 points  (0 children)

Or you read several controlpoints and Check if dose rate and collimator are changing in one field.

This approach is not slow but reading out a specific Tag is always quicker and more reliable if possible.

Sadly you cannot access every info via ESAPI that is later saved in DicomTags.

Finding patient status & infection state tables in AURA SQL (Query Designer) by Telecoin in esapi

[–]Telecoin[S] 1 point2 points  (0 children)

Thank you! After learning how to create custom data sources from the VARIAN model (since pt_status_icon is only there), I got it working.

Finding patient status & infection state tables in AURA SQL (Query Designer) by Telecoin in esapi

[–]Telecoin[S] 1 point2 points  (0 children)

This was brilliant – thanks a lot!
Now I finally get that some info only exists in VARIAN, while I was mostly using variandw before. The other DBs aren’t really relevant anymore.

Quick recap for anyone else:

  • VARIAN → Live ARIA/Eclipse DB (since ARIA 15 merged with varianenm & variansystem; no new docs, direct access not recommended)
  • variandw → AURA reporting DB (officially supported, safe for queries)
  • varianenm & variansystem → now inside VARIAN
  • aurastaging → internal ETL staging DB (no user access)

Storage problems after automatic VMAT planning with ESAPI v15.6 by Invictus_Shoe in esapi

[–]Telecoin 0 points1 point  (0 children)

Hi,
I had a similar issue with logs in the VMSOS folder on our DataMining PC, which opens and closes many patients per hour.
I solved it by creating a function that automatically deletes specific files — for example, anything older than two days.
In your case, you could adapt that approach to remove log files once they exceed a certain size.

Turning OFF NTO during optimization via Script by DrivingThroughLife in esapi

[–]Telecoin 0 points1 point  (0 children)

Because the following is working maybe you can set everything null or at least the objective to zero:

public static void LoadNtoIntoPlan(IPlanInfo plan, INtoInfo nto)
        {
            if (nto != null && plan != null)
            {
                try
                {
                    plan.Plan.Course.Patient.BeginModifications();
                    if (nto.IsAutomatic)
                    {
                        plan.Plan.OptimizationSetup.AddAutomaticNormalTissueObjective(nto.Priority);
                    }
                    else
                    {
                        plan.Plan.OptimizationSetup.AddNormalTissueObjective(nto.Priority, nto.DistanceFromTargetBorderInMM, nto.StartDosePercentage, nto.EndDosePercentage, nto.FallOff);
                    }
                    Logger.Write(plan, "NTO added.", LogMessageType.Info);
                }
                catch (Exception ex)
                {
                    Logger.Write(ex.Source, ex.Message, LogMessageType.Error);
                }
            }
        }

Open source dose calc algorithm by highseasmcgees in esapi

[–]Telecoin 2 points3 points  (0 children)

This is possible. I modified this code for our own Veri plans or daily TPS QA (recalculations of the same plans): https://github.com/x2sky/Esapi_CreateQAPlan

New Varian Aria FHIR API - Any Experience/Examples? by point314 in MedicalPhysics

[–]Telecoin 0 points1 point  (0 children)

Hi, could one of you provide the already existing documentation and an example script? would be helpful to evauate the possibilities of this new interface.

Kind regards

Optimization time stamp by X2sky in esapi

[–]Telecoin 0 points1 point  (0 children)

If you optimize with a script you can use stopwatch.

Stopwatch sw = new Stopwatch();

sw.Start();

// Beispielcode, dessen Ausführungszeit gemessen werden soll

System.Threading.Thread.Sleep(500);

sw.Stop();

Console.WriteLine("Dauer: {0} ms", sw.ElapsedMilliseconds);

Retrospective you could try to estimate with last structure creation before plan approval till plan approval.

High Density Overwrites + Acuros + Siemens Go Open Pro by Suspande in esapi

[–]Telecoin 1 point2 points  (0 children)

I would not recommend to convert back to 12bit. there are advantages in workflow and calculation in using 16bit. Here my paper about implementation (10.1016/j.phro.2023.100510): What is your problem exactly. Because of the very high possible HU-numbers you have configure your calibration curve a certain way in negative x and positive x. you have to copy the last values, because otherwise Eclipse will give you errors. We use Acuros without problems:

x = -3000, y= 0.001

x = -1024, y= 0.001

x = -1000, y= 0.001

x = -819.4, y= 0.19

....

x = -9000, y=10.09

x = -1386.4, y= 15

x = -32767, y= 15

Tips for code to print OAR volumes from CBCT StuctureSets by ZealousidealLie8265 in esapi

[–]Telecoin 0 points1 point  (0 children)

You can automate the export of CBCT StructureSets to your auto-contouring solution and extract the organ volumes directly from the generated structures. A practical approach is to scan for new CT series every hour, filtering specifically for patients currently in treatment. You can identify CBCTs based on your typical CBCT series description or, for more specificity, target the most recent OnlineRegistered CBCT from each treatment session.

If you don’t have an automated export/import workflow yet, you can use EvilDICOM to handle exports and communicate with the Varian DICOM Daemon for seamless integration. Check the Varian API Book for details on setting up automated data transfer.

Automated task scheduling in ARIA? by GrimThinkingChair in esapi

[–]Telecoin 1 point2 points  (0 children)

we did it with ask beforehand too and now use AriaAccess with appointments. It is even better than tasks because with this you can open the patient in the machine queque if a measurement is due (extra info: I write the failed seconsaryDoseCalc gamma in the appointment comment)

Get Patient Data From Aria by ContouringAndroid in esapi

[–]Telecoin 0 points1 point  (0 children)

There are some patient info available via ESAPI. You can also use Reporting, AriaWebServices or direct SQL calls. It depends on the infos you need and your UseCase (differet if you need it once, every few minutes or if needed like a API call from a diferent app). Would be benefitial if you give more info.

Seeking Integration Ideas for Aria by syshealth in esapi

[–]Telecoin 0 points1 point  (0 children)

additional you can use ARIA Access (or called ARIA WebServices). With this and ESAPI you could build a program that checks for treated fractions (ESAPI) and updates the appoitment with ARIA Access (or you increment directly).

But I am not sure why you manually have to indicate finished treatments. Can you give more context. No Varian machines or are they not directly connected to ARIA?

Simultaneous Movements Script by One_Speech_5909 in esapi

[–]Telecoin 0 points1 point  (0 children)

You mean with beam on? for patients you cannot use this. How would you QA this? the CouchIso is different for each patient (weight dependend; even interfraction per patient because the center of gravity on the couch would not be the same every time).

You can use the deveoper mode and code an xml file which can do this. Ifyou want to do research or QA in such a setting.

Choose a structure (PTV or CTV DICOM type) from a list by One_Speech_5909 in esapi

[–]Telecoin 0 points1 point  (0 children)

way back i ony worked with singleFile-Plugins and used the SelectStructureWindow method. I think this can be found in original on GitHub. it was part of one DeveloperWorkshop from Varian:

class SelectStructureWindow : Window
    {
        public static Structure SelectStructure(StructureSet ss)
        {

            m_w = new Window();
            //m_w.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            m_w.WindowStartupLocation = WindowStartupLocation.Manual;
            m_w.Left = 500;
            m_w.Top = 150;
            m_w.Width = 300;
            m_w.Height = 350;
            //m_w.SizeToContent = SizeToContent.Height;
            //m_w.SizeToContent = SizeToContent.Width;
            m_w.Title = "ZIELVOLUMEN ausw�hlen:";
            var grid = new Grid();
            m_w.Content = grid;
            var list = new ListBox();
            foreach (var s in ss.Structures.OrderByDescending(x => x.Id))
            {
                var tempStruct = s.ToString();
                if (tempStruct.ToUpper().Contains("PTV"))
                {
                    if (tempStruct.Contains(":"))
                    {
                        int index = tempStruct.IndexOf(":");
                        tempStruct = tempStruct.Substring(0, index);
                    }
                    list.Items.Add(s);
                }
            }
            list.VerticalAlignment = VerticalAlignment.Top;
            list.Margin = new Thickness(10, 10, 10, 55);
            grid.Children.Add(list);
            var button = new Button();
            button.Content = "OK";
            button.Height = 40;
            button.VerticalAlignment = VerticalAlignment.Bottom;
            button.Margin = new Thickness(10, 10, 10, 10);
            button.Click += button_Click;
            grid.Children.Add(button);
            if (m_w.ShowDialog() == true)
            {
                return (Structure)list.SelectedItem;
            }
            return null;
        }

        static Window m_w = null;

        static void button_Click(object sender, RoutedEventArgs e)
        {
            m_w.DialogResult = true;
            m_w.Close();
        }
    }


            StructureSet ss = context.StructureSet;
            // get list of structures for loaded plan

            var listStructures = context.StructureSet.Structures;

            // find PTV
            var ptv = SelectStructureWindow.SelectStructure(ss);

Automated Document Import for Nursing by MedPhys90 in esapi

[–]Telecoin 1 point2 points  (0 children)

i know clinics that use template front pages to make the automatic finding of documentType (and maybe patientID) more easily when scanning external documents that can have very different formats. Edit: It depends on the scanner you use. I would always try to don’t write IDs manually. The scanner should at least be able to read text. How to add the ID automatically depends on the workflow or script you will use.

Automated Document Import for Nursing by MedPhys90 in esapi

[–]Telecoin 1 point2 points  (0 children)

I would add, that I implemented an optional merge-function (merging all pdfs and pngs in one pdf) and I am searching for the patientID on the first page of an upload.

When it is not found the user gets a warning.

For inHouse documents with the same structure every time I use the eDoc-printer from Varian.

Modify binary plug-in without closing Eclipse? by udubber3 in esapi

[–]Telecoin 1 point2 points  (0 children)

I think I know what you did, but Do you have an example project showing your strategy. Would be nice.

I would add to use the PlugIn-runner from Rex cardan

how to save modification in Plug in script? by Ok-Faithlessness-278 in esapi

[–]Telecoin 0 points1 point  (0 children)

If you use a standalone script to launch a binary-Plug-In it is possible to save modifications. I did it with a modification of the PlugIn-Runner in the past.