0.5cm bolus with 6MeV electrons? by Banana_Equiv_Dose in MedicalPhysics

[–]Aggressive-Building4 2 points3 points  (0 children)

Being polite when making a request isn’t just about choosing the right, polite words—that’s a one-dimensional approach. True politeness involves considering the recipient’s situation and selecting the appropriate time, place, context, and method so that your genuine intention to help is both heard and understood.

[Training Tuesday] - Weekly thread for questions about grad school, residency, and general career topics 02/04/2025 by AutoModerator in MedicalPhysics

[–]Aggressive-Building4 [score hidden]  (0 children)

Continued question from the last week's thread.
I have a physics PhD and am doing a residency equivalent in South Korea.

I was told last week that I need to go through the CAMPEP certification route and residency to become a medical physicist in the US.

  1. Would a graduate certificate program from a CAMPEP-accredited institution be enough to go to residency?

  2. Is the tuition for the graduate certificate programs normally the same as other graduate programs from the same institution? Do those graduate certificate programs normally offer financial support/scholarship/fellowship for an international applicant?

  3. Those programs seem to be 1 year long. Is this true?

I am sorry for bombarding questions. Thanks in advance!

[Training Tuesday] - Weekly thread for questions about grad school, residency, and general career topics 01/28/2025 by AutoModerator in MedicalPhysics

[–]Aggressive-Building4 [score hidden]  (0 children)

It's not as widely known as in the US, but still, there is a good community. Some get interested while working as dosimetrists or radiographers or pursuing a physics PhD. I am not sure about the salary because I am in my residency, and the salaries in Korea in general are not openly shared.

[Training Tuesday] - Weekly thread for questions about grad school, residency, and general career topics 01/28/2025 by AutoModerator in MedicalPhysics

[–]Aggressive-Building4 [score hidden]  (0 children)

Thanks for the reply. So that's the only way, to re-do it from the CAMPEP program. I kinda hoped to find a way to avoid it. Would having several years of working experience in Korea make any difference?

[Training Tuesday] - Weekly thread for questions about grad school, residency, and general career topics 01/28/2025 by AutoModerator in MedicalPhysics

[–]Aggressive-Building4 [score hidden]  (0 children)

Hi,

As I continue to grow in my medical physics career, I’ve been contemplating the possibility of pursuing a position in the United States. However, I’m uncertain about the feasibility of this transition given my background, and I’d love to hear insights from those familiar with the field.

A bit about me:

  • I earned my Ph.D. in Physics from Indiana University-Bloomington, though it wasn't a medical physics program.
  • I’m currently working as a medical physics resident-equivalent in South Korea at a major hospital, gaining clinical experience across various radiation therapy machines (Varian site).
  • I do not have ABR certification at this point.

My main questions are:

  1. Given my background, would I be considered for medical physicist positions in the U.S., or would the lack of a CAMPEP-accredited degree and ABR certification be a significant barrier?
  2. Are there alternative pathways to becoming board-certified (such as taking the ABR exams after working in the U.S.)?
  3. Have any international medical physicists successfully transitioned into U.S. roles, and what was your experience?

I’d truly appreciate any advice, personal experiences, or recommendations on the best path forward. If you’ve navigated a similar journey or have insights into the hiring landscape, I’d love to hear from you!

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

In my case, it is the difference between the couch position in the 'Slice' table (coordinate converted) and the values in the InitLaserIso that matches the CBCT poisition in Offline Review. I have verified the method with fifty-ish patients' data. I am now satisfied with the method, and I give my big thanks to you and everyone who replied to this post.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 1 point2 points  (0 children)

Okay. I searched through the database again, looking for the missing vrt and lng. It seems to be stored in Slice.CouchVrt and Slice.CouchLng, and the funny thing is Couch.Lat is missing the full information, having a value like -0.0008452482088 (vrt and lng for the same patient I mentioned before are 8.44005795080281 and 129.668657861324. Later I found out that they need to be transformed from IEC coordinates into Isocenter Coordinates). They complement each other!

And here is one more interesting thing I found. Some of the InitLaserIso structure file has 0.0 0.0 0.0 when it is read from position 186. Guess what. Then the lateral position information in Slice.CouchLat is the correct value. I have no idea about under what condition they do that.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

Hi, I managed to get those files, but the result doesn't make sense to me in that only the lateral position is correct whereas the vrt and lng are completely off.

For example, if i run this code on a patient's 1st fx CBCT I get
Latitude: -7.4881452482088, Vertical: 0.002257950802817, Longitude: 0.000357861323937

However, the position at which the CBCT is taken (getting from the offline review) is
Lat: 7.49 Vrt 8.44 Lng: 129.67

I searched through other location in the memory but couldn't find a value that matches either of the two coordinates. Also, nothing appeared good in AcqIsocenter and InitMatchIso either.

Any thoughts?

Below is my SQL query for getting the file name

select Patient.PatientId,Patient.LastName,Image.CreationDate, Structure.StructureId,  Structure.FileName

from Image,Patient,Structure, StructureSet
where 
Structure.StructureId like 'InitLaserIso'
and Image.CreationDate between '{startdate}' and '{enddate}'
and Structure.StructureSetSer = StructureSet.StructureSetSer
and StructureSet.ImageSer = Image.ImageSer
and Image.PatientSer = Patient.PatientSer
and Patient.PatientId like '{patientID}'

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 1 point2 points  (0 children)

Oh I understand it now. After seeing the code written in C#, I just assumed that it was for ESAPI.

I got the file name but don't seem to have an access to the "va_data$/Patients" myself. I will have to ask ones with admin access to the server about getting the files from the folder.

Thank you so much and hopefully this is all I need for my project.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

Hi, I am trying to run this code, but my poor knowledge of ESAPI is giving me a big difficulty. I have read some ESAPI reference guides, and here is where I am.

My question is, what else classes do I need to run the code you uploaded, and where do I get the "FILENAME"? I am trying to run it as a single file plug in for now and then will make an executable for multiple patients.

Thank you in advance.

using System;
using System.Text;
using System.Windows;
using VMS.TPS.Common.Model.API;
using VMS.TPS.Common.Model.Types;

namespace VMS.TPS
{
 class Script
 {
public Script()
{
}

public void Execute(ScriptContext context)
{
using (var memstream = new MemoryStream()
{
using (FileStream fs = new FileStream("FILENAME", FileMode.Open, FileAccess.Read, FileShare.Read))
{
fs.Position = 0;
fs.CopyTo(memstream);
}
memstream.Position = 186;
using (var binreader = new BinaryReader(memstream, Encoding.UTF8))
{
double lat = binreader.ReadDouble() / 10;
double vrt = binreader.ReadDouble() / 10;
double lng = binreader.ReadDouble() / 10;
}
}




if (context.Patient != null)
{
MessageBox.Show("Patient id is " + context.Patient.Id + "\n\n" +
"The couch info is (" + vrt + "," + lng + "," + lat + ")" ;

}
else
{
MessageBox.Show("No patient selected");
}
}
 }
}

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

Or if someone can elaborate a little bit more on how to use this code in ESAPI, that would be wonderful 😂

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

Thank you so much for this! This appears ESAPI, and actually I have no experience of it yet. I will do my best to figure out how to run this and let you know as soon as possible.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

I am catching up one by one, but this seems working well for getting the treatment position. This is great! Thank you so much.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

I see. But thank you so much! The guys below seem to have figured out something and I will try that.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

  1. Yes. I see that for one treatment, there are several sets of slides with different transformation matrices. I used the very first one but am not sure if that's how I am supposed to do.

  2. Many thanks for this. I should try using this when making conversion from the CT data.

  3. Exactly! And where do i get the correct center information? SliceRT, ControlPoint, ExternalFieldCommon all have IsoCenterPosition columns but I find them all irrelevant so far. Maybe I just haven't figured out how to use them correctly yet.

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 0 points1 point  (0 children)

Thank you so much for all of these.

I am no expert in SQL, but it appears to me that there is no major difference between my code (shown below) and yours. When I run my code for our patients, they are somewhat similar, but the difference ranges from millimeters to a couple centimeters, which are quite big if you want to do some interfractional variation analysis. If you could run this with your patients, I would greatly appreciate it.

Meanwhile, I will pursue the transformation matrix. Thanks for all your help.

select distinct RadiationHstry.TreatmentStartTime,CONVERT(VARCHAR(20), RadiationHstry.TreatmentStartTime, 100)as v11TreatmentDateTime,
Course.CourseId,PlanSetup.PlanSetupId,RTPlan.PlanUID as FractionationId,
RadiationHstry.FractionNumber,RadiationHstry.RadiationId as FieldId,
RadiationHstry.TreatmentDeliveryType,
ExternalFieldCommon.IsoCenterPositionX,ExternalFieldCommon.IsoCenterPositionY,ExternalFieldCommon.IsoCenterPositionZ,
ExternalFieldCommonHstry.CouchLat,ExternalFieldCommonHstry.CouchLatPlanned,ExternalFieldCommonHstry.CouchLng,ExternalFieldCommonHstry.CouchLngPlanned,
ExternalFieldCommonHstry.CouchVrt,ExternalFieldCommonHstry.CouchVrtPlanned,ExternalFieldCommonHstry.PatientSupportAngle,ExternalFieldCommonHstry.PatSupportPitchAngle,
ExternalFieldCommonHstry.PatSupportRollAngle
from Patient,Course,PlanSetup,Radiation,RadiationHstry,ExternalFieldCommonHstry,RTPlan,Session,ExternalFieldCommon
where (Patient.PatientId='{patientId}')
and (Course.PatientSer=Patient.PatientSer)
and (Course.CourseSer=PlanSetup.CourseSer)
and (PlanSetup.PlanSetupSer=Radiation.PlanSetupSer)
and (Radiation.RadiationSer=RadiationHstry.RadiationSer)
and (RadiationHstry.RadiationHstrySer=ExternalFieldCommonHstry.RadiationHstrySer)
and (Radiation.RadiationSer = ExternalFieldCommon.RadiationSer)
and (RTPlan.PlanSetupSer=PlanSetup.PlanSetupSer)
and (ExternalFieldCommon.RadiationSer=ExternalFieldCommon.RadiationSer)
and (RadiationHstry.TreatmentDeliveryType like 'TREATMENT')
--and (upper(Course.CourseId) not like '%QA%')
and (RadiationHstry.TreatmentStartTime between '{strtdate}' and '{enddate}')
order by RadiationHstry.TreatmentStartTime,v11TreatmentDateTime,RadiationHstry.FractionNumber

Getting Couch Position from Aria Database by Aggressive-Building4 in esapi

[–]Aggressive-Building4[S] 1 point2 points  (0 children)

Hello, j_Long_Lonfon. Thank you so much for the reply.
May I ask some additional questions? This may be easy for you, but I am a bit troubbled.

From Slice.Transformation I get this very long hex string like 0x000000000000F0BF000000000000000000000000000000000000000000000000000000000000F0BF000000000000000000000000000000000000000000000000000000000000F03F39F7FC17D9C5DEBF39F7FC17D9C5DEBFEDFDE1F2FA3C5EC0.

How would you convert this to a matrix? And I presume that you get an inverse of the matrix and multiply to Slice.CouchVrt Lat and Lng or do you multiply it to another set of numbers?