Workers Exposed for a Long Time to Random Radioactive Aerosols

J. Guillermo Sánchez León, Universidad de Salamanca
v 2024-10-15

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

ABSTRACT

Workers in a nuclear fuel manufacturing plant are exposed to inhalation of small amounts of uranium oxide. These workers moving between different areas where the concentration (Bq U/m^3)  varies randomly. These concentrations are measured by Static Air Samplers (SAS) . However, the quantities incorporated by workers based on the measured concentration and residence times in the different areas have large uncertainties. For this reason, workers periodically undergo uranium urine analysis. 

We have developed a method and a software application where joining the urine samples data and measurement from the SAS, the quantities of uranium incorporated by workers and the corresponding doses are estimated.

Sánchez-León Guillermo.; López M.A.; Moraleda M.; Rodríguez-Díaz Juan M.: “Bioassays in workers exposed to long time random intakes” Radiation and Applied Radiation and Isotopes (180) 2022. (https://doi.org/10.1016/j.apradiso.2021.110057 )

Here is the link to web applicacion BIOKMOD  for solving the problems as the described in the presentation.

http://oed.usal.es/webMathematica/Biokmod/index.html

Biokinetic modeling

We will need to know the urine excretion as function of the time after the intake of 1  Bq. It is usually known as the response function r(t)).

It can be done using a compartmental modelling.  A specific package is available:

Needs["Biokmod`SysModel2`"]

Here is illustrated  using the iodine model.

(OverDot[x])(t) =A x + b(t), t≥0
x(0) = (Subscript[x, 0])

x(t)= (({(Subscript[x, 1])(t), (Subscript[x, 2])(t), ...,(Subscript[x, n])(t)})^T) is a column vector and  (Subscript[x, i])(t) denote the amount or content of species in compartment i at time t. 
A is a n×n is usually known as the compartmental matrix or system matrix. 
b(t) = (({(Subscript[b, 1])(t), (Subscript[b, 2])(t),...,(Subscript[b, n])(t)})^T) is a column vector where {(Subscript[b, i])(t)} is the input rate into compartment i from outside system. 
x(0)  =  {(Subscript[x, 1])(0), (Subscript[x, 2])(0),  ..., (Subscript[x, n])(0)}Tare the initial conditions, so (Subscript[x, i])(0), represents the amount or content of species in compartment i at time  t = 0.

iodine =CompartMatrix[3,{{1,2, 0.8316},{1,0,1.9404},{2,3,0.0086625} ,{3,0,0.01155} ,{3,1,0.0462}}, Log[2]/8.025]

One specific case is the single input 1 in compartment 1at t=0. It is equivalent to take as initial conditions:

(Subscript[x, 1])(0) = 1, (Subscript[x, 2])(0)=0, (Subscript[x, 3])(0)=0 => {1, 0, 0}

{ x1[t_],x2[t_],x3[t_]}=Map[Last, AcuteInput[iodine,{1, 0, 0},t,x]]//ExpandAll

LogPlot[{x1[t],x2[t],x3[t]},{t,1,30},PlotStyle->{Orange,Dashed,Thick},AxesLabel->{"days","r"},PlotLegends->Placed[{"x1","x2", "x3"},Right,(Framed[#,RoundingRadius->5]&)],PlotLabel->Style[Framed["Iodine Model: impulsive-injection in 1"],14,Blue,Background->Lighter[Yellow]]]

The uranium biokinetic model.

The ICRP 130/ICRP 134 (https://www.icrp.org/page.asp?id=5) models have been applied and included in a Mathematica package

Needs["Biokmod`OIRModels`"]//Quiet

Response functions

If we assume a single intake of 1 Bq of U (as UO2 aerosols), the response function for urine excretion is:

Uri24hUO2[t_]=qUri[t]/.qUInhalationBioassay[0,t,0.0006,  idfAMAD5, 0.03, 1, 0.0005];

Approximation to daily urinary excretion:

UriInstUO2[t_]=0.0004769 (E^(-1.20 t))+0.001358 (E^(-1.003 t))+0.0006887(E^(-1.0 t))+7.971*^-6 (E^(-0.3436368 t))+3.196*^-6 (E^(-0.2005 t))+8.8235*^-6 (E^(-0.13884 t))+1.545*^-6 (E^(-0.099 t))+0.0000392(E^(-0.097275 t))+3.808*^-6 (E^(-0.03219 t))-9.2*^-8 (E^(-0.0125838 t))+0.00001733 (E^(-0.0035 t))+3.3074*^-6 (E^(-0.0005 t))+5.18736*^-6 (E^(-0.000482 t))+2.2467*^-8 (E^(-0.000379736 t))+9.1229*^-9 (E^(-0.00018974 t))+4.0389*^-8 (E^(-0.0000806647 t))+1.896643*^-9 (E^(-0.00001892 t));

If we assume a constant intake of 1 BqU/d, then the response function is:

UriConstUO2[t_] = 
    Chop[Subscript[x, 21][t] /. 
             qUInhalation[0, t, 0.0006, idfAMAD5, 0.03, 1, 0.0005]];

LogLogPlot[{UriInstUO2[t],UriConstUO2[t]}, {t, 1, 100}]

Multiples intake

In the real world the worker is exposed to multiple intakes

The predicted retention or excretion of the worker after a time t (usually in days) after the first intake will be:

(Subscript[R, M])(t) = (Subscript[b, 1])r(t) + (Subscript[b, 2])r(t-1)+...+(Subscript[b, n])r(1)=(∑_(j=1)^t)(Subscript[b, j])r(t-j+1)

qMultipleSingle[{{b0,0},{b2, 2}, {b3, 4}},r,6]

It can be also considered single intakes and period of constant intakes:  {..., {(Subscript[B, k]), (Subscript[t, start k]),(Subscript[t, final k])}, ...}

inputs ={{100, 0, 10}, {9,  12}, {30,  15, 10}, {2,  27} , {15, 30, 5} , {24,  37 } };

Plot[Evaluate[qMultiple[inputs, {UriInstUO2[t],t}, t1]], {t1, 0, 50}, ExclusionsStyle->{Blue,Blue}]//Timing

A real case

Needs["Biokmod`UO2intakes`"]//Quiet

SetDirectory[FileNameJoin[{NotebookDirectory[],"Data"}]]

A worker is moving in a contaminated area, the air concentration is measured (using SAS) in different point (Subscript[P, i]) . It is roughly known for each day, j,  the time of stay of the worker in  each point, i.  => (Subscript[A, i,j])

data=Import["datamultinput.xlsx", "XLSX"];

data//Short

datos = Normal[GroupBy[{Round[#1], #2} & @@@ Extract[data, 1],  First -> Last, Total]] /. Rule -> List; Shallow[datos]

BIOASSAYS

Multiple single intakes simulation applied to different class of bioassay

Base on real data of workers exposed a long time at random radioactive we have made the follow simulation, considered different types of bioassay. Weekend and holidays are considered.

24h of Urine excretion is the best option

The conclusion is the more practical bioassay is the urine excretion being the best moments to taken the urine samples are after 2 o 3 days without intakes

workdays[y_] := 
    Flatten[Table[
        PadRight[
          Flatten[{Table[{1, 1, 1, 1, 1, 0, 0}, {i, 23}], {0, 0, 0, 0, 0, 
                0, 0}, Table[{1, 1, 1, 1, 1, 0, 0}, {i, 22}]}], 365], y]]; 

 workingdays=workdays[10]; totaldays=Length[ workingdays];
{ Total[workingdays],  totaldays};
avgdailyintake=0.507;sb =  μb = 0.82; zb =2;
sol2 = Quiet[qRandomSingle[Uri24hUO2, workingdays, 0, μb, sb, zb]]; 
{uL1, lL1} = {"Upper Limit", "Lower Limit"} /. sol2; 
Quiet[Show[ListPlot[{Drop[uL1, totaldays - 500], Drop[lL1, totaldays - 500]}, Joined -> True, 
    AxesLabel -> {"days", "Bq d\!\(\*SuperscriptBox[\(\), \(-1\)]\) of U"}, PlotRange -> {0, 0.015}], 
   Plot[avgdailyintake*UriConstUO2[t], {t, totaldays - 500, totaldays}, PlotStyle -> {Red, Thick, Dashed}]]]

Periodically urine samples are taken to the workers: {(Subscript[t, d]), (Subscript[m, d]) (Bq/24h), (Subscript[u, d])}

sampledata={{4010,0.004545,0.00059},{4394,0.009595,0.00096},{4990,0.001665,0.00031},{5326,0.004305,0.00052},{5879,0.002175,0.00054}};

Intake and doses estimation

Date of the worker start the intake

inicioincorporacion ={2003,10,16};

Period to compute intake and doses E(50):

{finio,  final}={{2016,01, 01},{2017,01, 01}};

Uranium isotopic composition (U238, U235, U234)

isowt={95.765,4.20,0.035};

Computing the intake

MultiinputsUO2Full[datos,sampledata,isowt, 180, {inicioincorporacion,finio, final},"U234"] //Quiet//TableForm

GraphicsReport[sampledata]//Quiet

BIOKMOD

Here is the same case solved in an easy way using BIOKMOD

http://oed.usal.es/webMathematica/Biokmod/

Input

Output

More ...

You can find many examples of the real work   in my BOOK (with the help of Rubén García Berasategui):
(Modelling, Astronomy, Finances, Life Sciences, Chemistry, Data analysis. Geographic, Machine Learning, Nuclear Physics and more)

https://community.wolfram.com/groups/-/m/t/2801704

http://www.mathematicabeyondmathematics.com/