Robert Elder commited on
Commit ·
b0786e9
1
Parent(s): 3455dc7
incorporating Echo feedback
Browse files
color3_module/colors.py
CHANGED
|
@@ -71,6 +71,10 @@ def app_post():
|
|
| 71 |
caIndex = (np.where(CAs == CA)[0])[0]
|
| 72 |
|
| 73 |
TI = caData[caIndex][1]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
impurity = 1.
|
| 75 |
isCA = True
|
| 76 |
chemName = ''
|
|
@@ -130,6 +134,9 @@ def app_post():
|
|
| 130 |
else:
|
| 131 |
TTC = 0.0015
|
| 132 |
|
|
|
|
|
|
|
|
|
|
| 133 |
polytg = ''
|
| 134 |
use_qrf = False
|
| 135 |
if polymer == 'Other polymer':
|
|
@@ -185,7 +192,7 @@ def app_post():
|
|
| 185 |
#print(release_list, file=sys.stderr)
|
| 186 |
frac_list = [str(SigFigs(r/amount*100,2))+'%' for r in release_list]
|
| 187 |
release_list = [SigFigs(r,2) for r in release_list]
|
| 188 |
-
df_rel = pd.DataFrame(np.transpose([tlist,release_list,frac_list]),columns=['Exposure time (days)','Cumulative release (
|
| 189 |
df_rel['Exposure time (days)'] = df_rel['Exposure time (days)'].astype(float)
|
| 190 |
release_table = df_rel.sort_values(by='Exposure time (days)').to_html(index=False)
|
| 191 |
|
|
@@ -200,7 +207,7 @@ def app_post():
|
|
| 200 |
#pngImageB64String = RatePlot(tarray, rates)
|
| 201 |
|
| 202 |
return render_template('color3_report.html', caIndex=caIndex, TI=TI, isCA=isCA, show_properties=show_properties, polymers=polymers, pIndex=pIndex, release=release, release_table=release_table,
|
| 203 |
-
area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC,
|
| 204 |
MOS=MOS, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage,
|
| 205 |
ceramic=is_ceramic, impurity=impurity, iMOS=iMOS, methods=[method,polytg,density])
|
| 206 |
|
|
|
|
| 71 |
caIndex = (np.where(CAs == CA)[0])[0]
|
| 72 |
|
| 73 |
TI = caData[caIndex][1]
|
| 74 |
+
units = request.form['units']
|
| 75 |
+
if units == 'µg':
|
| 76 |
+
TI *= 1000
|
| 77 |
+
|
| 78 |
impurity = 1.
|
| 79 |
isCA = True
|
| 80 |
chemName = ''
|
|
|
|
| 134 |
else:
|
| 135 |
TTC = 0.0015
|
| 136 |
|
| 137 |
+
if units == 'µg':
|
| 138 |
+
TTC *= 1000
|
| 139 |
+
|
| 140 |
polytg = ''
|
| 141 |
use_qrf = False
|
| 142 |
if polymer == 'Other polymer':
|
|
|
|
| 192 |
#print(release_list, file=sys.stderr)
|
| 193 |
frac_list = [str(SigFigs(r/amount*100,2))+'%' for r in release_list]
|
| 194 |
release_list = [SigFigs(r,2) for r in release_list]
|
| 195 |
+
df_rel = pd.DataFrame(np.transpose([tlist,release_list,frac_list]),columns=['Exposure time (days)',f'Cumulative release ({units})','Cumulative release (%)'])
|
| 196 |
df_rel['Exposure time (days)'] = df_rel['Exposure time (days)'].astype(float)
|
| 197 |
release_table = df_rel.sort_values(by='Exposure time (days)').to_html(index=False)
|
| 198 |
|
|
|
|
| 207 |
#pngImageB64String = RatePlot(tarray, rates)
|
| 208 |
|
| 209 |
return render_template('color3_report.html', caIndex=caIndex, TI=TI, isCA=isCA, show_properties=show_properties, polymers=polymers, pIndex=pIndex, release=release, release_table=release_table,
|
| 210 |
+
area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC, units=units,
|
| 211 |
MOS=MOS, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage,
|
| 212 |
ceramic=is_ceramic, impurity=impurity, iMOS=iMOS, methods=[method,polytg,density])
|
| 213 |
|
color3_module/templates/color3_index.html
CHANGED
|
@@ -46,7 +46,11 @@ Identity: <select name="CA" id="CA" onchange="javascript:caCheck();">
|
|
| 46 |
Identifier: <input name="chemName" id="chemName" type="text" value="">
|
| 47 |
</span> <br>
|
| 48 |
|
| 49 |
-
Amount
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
Total impurity concentration (%): <input name="impurity" id="impurity" value="0.1" step="any" min="0.000001" max='100.0' type="number" required> <br>
|
| 52 |
|
|
@@ -91,7 +95,8 @@ $(window).on('pageshow', function() { caCheck(); });
|
|
| 91 |
Alternatively, CHRIS can attempt to identify the chemical using a common name for the chemical.
|
| 92 |
If you are evaluating an additive associated with a color additive please select "Other color additive associated compound" and
|
| 93 |
follow the same procedure for "Other color additive".
|
| 94 |
-
<p><em>Amount</em> - Enter the total mass of the substance in the component being evaluated expressed in milligrams.</p>
|
|
|
|
| 95 |
<p><em>Total impurity concentration</em> - If you have selected a color additive, please enter the combined concentration of all impurities associated with the color additive as a percentage (% mass/mass).</p>
|
| 96 |
</div>
|
| 97 |
<div class="modal-footer">
|
|
@@ -151,7 +156,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 151 |
<input type="radio" name="exposure" id="prolonged" value="prolonged" onclick="javascript:exposureCheck();" > prolonged
|
| 152 |
<input type="radio" name="exposure" id="limited" value="limited" onclick="javascript:exposureCheck();" > limited
|
| 153 |
<span id="limitedtime" style="visibility:hidden">
|
| 154 |
-
⇒ Exposure
|
| 155 |
</span>
|
| 156 |
|
| 157 |
<!-- Modal -->
|
|
@@ -165,7 +170,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 165 |
</div>
|
| 166 |
<div class="modal-body">
|
| 167 |
<p><em>Exposed surface area</em> - Enter the patient contacting surface area of the color additive containing component being evaluated in square centimeters. This includes both direct and indirect patient contact.</p>
|
| 168 |
-
<p><em>Exposure type</em> - Select the appropriate exposure category: > 30 days = long-term, > 24 hours - 30 days = prolonged, ≤ 24 hours = limited. For limited exposures (≤ 24 hours), please enter the maximum exposure
|
| 169 |
</div>
|
| 170 |
<div class="modal-footer">
|
| 171 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
@@ -176,7 +181,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 176 |
</div>
|
| 177 |
|
| 178 |
<h3> Exposure assessment <button type=button class="Info_btn" data-toggle="modal" data-target="#ExposureModal">ⓘ</button> </h3>
|
| 179 |
-
Cumulative exposure
|
| 180 |
<input type="checkbox" id="exposure1d" name="exposure1d" value="exposure1d" checked=True, disabled=True>
|
| 181 |
<label for="exposure1d">1 day</label>
|
| 182 |
<input type="checkbox" id="exposure30d" name="exposure30d" value="exposure30d" checked=True>
|
|
@@ -199,8 +204,9 @@ Click to screen your device: <button type="submit">Estimate exposure</button>
|
|
| 199 |
<h4 class="modal-title">Exposure assessment</h4>
|
| 200 |
</div>
|
| 201 |
<div class="modal-body">
|
| 202 |
-
<p><em>Cumulative exposure
|
| 203 |
-
If the "Other duration" box is checked, enter the desired exposure
|
|
|
|
| 204 |
</div>
|
| 205 |
<div class="modal-footer">
|
| 206 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
@@ -229,7 +235,7 @@ function polymerCheck() {
|
|
| 229 |
$(window).on('pageshow', function() { polymerCheck(); });
|
| 230 |
</script>
|
| 231 |
|
| 232 |
-
<!-- Javascript to reveal/hide exposure
|
| 233 |
|
| 234 |
<script type="text/javascript">
|
| 235 |
function exposureCheck() {
|
|
|
|
| 46 |
Identifier: <input name="chemName" id="chemName" type="text" value="">
|
| 47 |
</span> <br>
|
| 48 |
|
| 49 |
+
Amount: <input name="amount" id="amount" value="1.0" step="any" min="0.000001" type="number" required>
|
| 50 |
+
Amount units: <select name="units">
|
| 51 |
+
<option value="µg" selected>µg</option>
|
| 52 |
+
<option value="mg" >mg</option>
|
| 53 |
+
</select> <br>
|
| 54 |
|
| 55 |
Total impurity concentration (%): <input name="impurity" id="impurity" value="0.1" step="any" min="0.000001" max='100.0' type="number" required> <br>
|
| 56 |
|
|
|
|
| 95 |
Alternatively, CHRIS can attempt to identify the chemical using a common name for the chemical.
|
| 96 |
If you are evaluating an additive associated with a color additive please select "Other color additive associated compound" and
|
| 97 |
follow the same procedure for "Other color additive".
|
| 98 |
+
<p><em>Amount</em> - Enter the total mass of the substance in the component being evaluated expressed in micrograms or milligrams.</p>
|
| 99 |
+
<p><em>Amount units</em> - Select the appropriate units for the amount, micrograms (µg) or milligrams (mg).</p>
|
| 100 |
<p><em>Total impurity concentration</em> - If you have selected a color additive, please enter the combined concentration of all impurities associated with the color additive as a percentage (% mass/mass).</p>
|
| 101 |
</div>
|
| 102 |
<div class="modal-footer">
|
|
|
|
| 156 |
<input type="radio" name="exposure" id="prolonged" value="prolonged" onclick="javascript:exposureCheck();" > prolonged
|
| 157 |
<input type="radio" name="exposure" id="limited" value="limited" onclick="javascript:exposureCheck();" > limited
|
| 158 |
<span id="limitedtime" style="visibility:hidden">
|
| 159 |
+
⇒ Exposure duration (h): <input name="exptime" id="time" step="any" min="0.001" max="24" value="24" type="number" required><br>
|
| 160 |
</span>
|
| 161 |
|
| 162 |
<!-- Modal -->
|
|
|
|
| 170 |
</div>
|
| 171 |
<div class="modal-body">
|
| 172 |
<p><em>Exposed surface area</em> - Enter the patient contacting surface area of the color additive containing component being evaluated in square centimeters. This includes both direct and indirect patient contact.</p>
|
| 173 |
+
<p><em>Exposure type</em> - Select the appropriate exposure category: > 30 days = long-term, > 24 hours - 30 days = prolonged, ≤ 24 hours = limited. For limited exposures (≤ 24 hours), please enter the maximum exposure duration in hours.</p>
|
| 174 |
</div>
|
| 175 |
<div class="modal-footer">
|
| 176 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
| 181 |
</div>
|
| 182 |
|
| 183 |
<h3> Exposure assessment <button type=button class="Info_btn" data-toggle="modal" data-target="#ExposureModal">ⓘ</button> </h3>
|
| 184 |
+
Cumulative exposure duration(s):
|
| 185 |
<input type="checkbox" id="exposure1d" name="exposure1d" value="exposure1d" checked=True, disabled=True>
|
| 186 |
<label for="exposure1d">1 day</label>
|
| 187 |
<input type="checkbox" id="exposure30d" name="exposure30d" value="exposure30d" checked=True>
|
|
|
|
| 204 |
<h4 class="modal-title">Exposure assessment</h4>
|
| 205 |
</div>
|
| 206 |
<div class="modal-body">
|
| 207 |
+
<p><em>Cumulative exposure duration(s)</em> Check the boxes for the exposure duration(s) to use for cumulative release estimates. 1-day exposure is always calculated.
|
| 208 |
+
If the "Other duration" box is checked, enter the desired exposure duration in days (e.g., the maximum use duration of the device).
|
| 209 |
+
Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.</p>
|
| 210 |
</div>
|
| 211 |
<div class="modal-footer">
|
| 212 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
| 235 |
$(window).on('pageshow', function() { polymerCheck(); });
|
| 236 |
</script>
|
| 237 |
|
| 238 |
+
<!-- Javascript to reveal/hide exposure duration input box (limited contact) -->
|
| 239 |
|
| 240 |
<script type="text/javascript">
|
| 241 |
function exposureCheck() {
|
color3_module/templates/color3_report.html
CHANGED
|
@@ -32,6 +32,10 @@
|
|
| 32 |
|
| 33 |
</head>
|
| 34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
<header>
|
| 36 |
<h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) Report - Color additives (v3)</h1>
|
| 37 |
</header>
|
|
@@ -71,16 +75,16 @@
|
|
| 71 |
<p>
|
| 72 |
{% if methods[0]=="category" %}
|
| 73 |
<u> Diffusion calculation for leaching from {{polymers[pIndex]}} estimates a worst case single day
|
| 74 |
-
exposure = {{release}}
|
| 75 |
{% elif methods[0]=="wc" %}
|
| 76 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because no T<sub>g</sub> was specified) estimates a worst case single day
|
| 77 |
-
exposure = {{release}}
|
| 78 |
{% elif methods[0]=="qrf" %}
|
| 79 |
<u> Diffusion calculation for leaching from the polymer (with density = {{methods[2]}} g/cm<sup>3</sup> and T<sub>g</sub> = {{methods[1]}} °C) estimates a worst case single day
|
| 80 |
-
exposure = {{release}}
|
| 81 |
{% elif methods[0]=="qrf/wc" %}
|
| 82 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because this system is outside the model training domain) estimates a worst case single day
|
| 83 |
-
exposure = {{release}}
|
| 84 |
{% endif %}
|
| 85 |
<p>
|
| 86 |
|
|
@@ -104,13 +108,13 @@ where \( \tau= D t A^2 / V^2 \) and \( A \) and \( V \) are the surface area and
|
|
| 104 |
<p>
|
| 105 |
\( A \) = {{area}} cm<sup>2</sup> <br>
|
| 106 |
\( V \) = {{vol}} cm<sup>3</sup> <br>
|
| 107 |
-
\( M_0 \) = {{amount}}
|
| 108 |
\( D \) = {{diff}} cm<sup>2</sup>/s <br>
|
| 109 |
\( t \) = {{time}} h <br>
|
| 110 |
<p>
|
| 111 |
|
| 112 |
<p>
|
| 113 |
-
It can be helpful to examine the cumulative amount released over various exposure times:
|
| 114 |
</p>
|
| 115 |
|
| 116 |
<div>
|
|
@@ -124,7 +128,7 @@ It can be helpful to examine the cumulative amount released over various exposur
|
|
| 124 |
{% if caIndex > 10 %}
|
| 125 |
|
| 126 |
<p>
|
| 127 |
-
The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}}
|
| 128 |
this results in a margin of safety (MOS) of {{MOS}}.
|
| 129 |
</p>
|
| 130 |
|
|
@@ -135,6 +139,10 @@ The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}
|
|
| 135 |
for systemic biocompatibility endpoints. </font>
|
| 136 |
</p>
|
| 137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
<p>
|
| 139 |
<font color="red"> *Note*: This assessment assumes that the chemical is not in the cohort of concern. </font>
|
| 140 |
</p>
|
|
@@ -151,8 +159,8 @@ The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}
|
|
| 151 |
|
| 152 |
{% else %}
|
| 153 |
|
| 154 |
-
The tolerable intake value for your color additive is {{TI}}
|
| 155 |
-
exposure value would be {{50*TI}}
|
| 156 |
of {{MOS}}.
|
| 157 |
|
| 158 |
{% if MOS >= 1 %}
|
|
@@ -162,6 +170,10 @@ of {{MOS}}.
|
|
| 162 |
is needed for systemic biocompatibility endpoints. </font>
|
| 163 |
</p>
|
| 164 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 165 |
<p>
|
| 166 |
<font color="red"> *Note*: This calculation assumes an adult patient population with a worst-case body weight of 50 kg.
|
| 167 |
If the intended patient population of your device is different, please adjust the tolerable exposure calculation
|
|
@@ -194,10 +206,14 @@ of {{MOS}}.
|
|
| 194 |
|
| 195 |
{% if iMOS >= 1 %}
|
| 196 |
|
| 197 |
-
<font color="green"> The total additive impurity level is {{impurity}}
|
| 198 |
an MOS = {{iMOS}}. Therefore, no further analysis is needed for the impact of impurities on systemic
|
| 199 |
biocompatibility endpoints. </font>
|
| 200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 201 |
<p>
|
| 202 |
<font color="red"> *Note*: This assessment assumes that any impurities present are not in the cohort of concern. </font>
|
| 203 |
</p>
|
|
@@ -214,7 +230,7 @@ of {{MOS}}.
|
|
| 214 |
{% else %}
|
| 215 |
|
| 216 |
<p>
|
| 217 |
-
<font color="red"> The total additive impurity level is {{impurity}}
|
| 218 |
an MOS = {{iMOS}}. Therefore, further analysis is needed to address the impact of impurities on systemic
|
| 219 |
biocompatibility endpoints. Guidance on alternative methods to address impurities is provided
|
| 220 |
<a href="color_module/FAQ.html#how-does-chris-deal-with-color-additive-impurities" >here</a>. </font>
|
|
|
|
| 32 |
|
| 33 |
</head>
|
| 34 |
|
| 35 |
+
<img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
|
| 36 |
+
<img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
|
| 37 |
+
<br clear="all" />
|
| 38 |
+
|
| 39 |
<header>
|
| 40 |
<h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) Report - Color additives (v3)</h1>
|
| 41 |
</header>
|
|
|
|
| 75 |
<p>
|
| 76 |
{% if methods[0]=="category" %}
|
| 77 |
<u> Diffusion calculation for leaching from {{polymers[pIndex]}} estimates a worst case single day
|
| 78 |
+
exposure = {{release}} {{units}}. </u>
|
| 79 |
{% elif methods[0]=="wc" %}
|
| 80 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because no T<sub>g</sub> was specified) estimates a worst case single day
|
| 81 |
+
exposure = {{release}} {{units}}. </u>
|
| 82 |
{% elif methods[0]=="qrf" %}
|
| 83 |
<u> Diffusion calculation for leaching from the polymer (with density = {{methods[2]}} g/cm<sup>3</sup> and T<sub>g</sub> = {{methods[1]}} °C) estimates a worst case single day
|
| 84 |
+
exposure = {{release}} {{units}}. </u>
|
| 85 |
{% elif methods[0]=="qrf/wc" %}
|
| 86 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because this system is outside the model training domain) estimates a worst case single day
|
| 87 |
+
exposure = {{release}} {{units}}. </u>
|
| 88 |
{% endif %}
|
| 89 |
<p>
|
| 90 |
|
|
|
|
| 108 |
<p>
|
| 109 |
\( A \) = {{area}} cm<sup>2</sup> <br>
|
| 110 |
\( V \) = {{vol}} cm<sup>3</sup> <br>
|
| 111 |
+
\( M_0 \) = {{amount}} {{units}} <br>
|
| 112 |
\( D \) = {{diff}} cm<sup>2</sup>/s <br>
|
| 113 |
\( t \) = {{time}} h <br>
|
| 114 |
<p>
|
| 115 |
|
| 116 |
<p>
|
| 117 |
+
It can be helpful to examine the cumulative amount released over various exposure times. For example, the 30-day cumulative exposure may be compared to the TSL<sub>≤30 d</sub> as recommended in ISO 10993-17:2023. Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.
|
| 118 |
</p>
|
| 119 |
|
| 120 |
<div>
|
|
|
|
| 128 |
{% if caIndex > 10 %}
|
| 129 |
|
| 130 |
<p>
|
| 131 |
+
The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}} {{units}}/day. Based on the exposure estimation
|
| 132 |
this results in a margin of safety (MOS) of {{MOS}}.
|
| 133 |
</p>
|
| 134 |
|
|
|
|
| 139 |
for systemic biocompatibility endpoints. </font>
|
| 140 |
</p>
|
| 141 |
|
| 142 |
+
<p>
|
| 143 |
+
<font color="red"> *Note*: This assessment assumes that the amount (\( M_0 \)) accounts for the number of devices used concurrently (i.e., multiply the per-device amount by the number of devices used concurrently). </font>
|
| 144 |
+
</p>
|
| 145 |
+
|
| 146 |
<p>
|
| 147 |
<font color="red"> *Note*: This assessment assumes that the chemical is not in the cohort of concern. </font>
|
| 148 |
</p>
|
|
|
|
| 159 |
|
| 160 |
{% else %}
|
| 161 |
|
| 162 |
+
The tolerable intake value for your color additive is {{TI}} {{units}}/kg/day. Assuming a 50 kg patient, the tolerable
|
| 163 |
+
exposure value would be {{50*TI}} {{units}}/day. Based on the exposure estimation this results in a margin of safety (MOS)
|
| 164 |
of {{MOS}}.
|
| 165 |
|
| 166 |
{% if MOS >= 1 %}
|
|
|
|
| 170 |
is needed for systemic biocompatibility endpoints. </font>
|
| 171 |
</p>
|
| 172 |
|
| 173 |
+
<p>
|
| 174 |
+
<font color="red"> *Note*: This assessment assumes that the amount (\( M_0 \)) accounts for the number of devices used concurrently (i.e., multiply the per-device amount by the number of devices used concurrently). </font>
|
| 175 |
+
</p>
|
| 176 |
+
|
| 177 |
<p>
|
| 178 |
<font color="red"> *Note*: This calculation assumes an adult patient population with a worst-case body weight of 50 kg.
|
| 179 |
If the intended patient population of your device is different, please adjust the tolerable exposure calculation
|
|
|
|
| 206 |
|
| 207 |
{% if iMOS >= 1 %}
|
| 208 |
|
| 209 |
+
<font color="green"> The total additive impurity level is {{impurity}} {{units}}. When compared to TTC this results in
|
| 210 |
an MOS = {{iMOS}}. Therefore, no further analysis is needed for the impact of impurities on systemic
|
| 211 |
biocompatibility endpoints. </font>
|
| 212 |
|
| 213 |
+
<p>
|
| 214 |
+
<font color="red"> *Note*: This assessment assumes that the amount (\( M_0 \)) accounts for the number of devices used concurrently (i.e., multiply the per-device amount by the number of devices used concurrently). </font>
|
| 215 |
+
</p>
|
| 216 |
+
|
| 217 |
<p>
|
| 218 |
<font color="red"> *Note*: This assessment assumes that any impurities present are not in the cohort of concern. </font>
|
| 219 |
</p>
|
|
|
|
| 230 |
{% else %}
|
| 231 |
|
| 232 |
<p>
|
| 233 |
+
<font color="red"> The total additive impurity level is {{impurity}} {{units}}. When compared to TTC this results in
|
| 234 |
an MOS = {{iMOS}}. Therefore, further analysis is needed to address the impact of impurities on systemic
|
| 235 |
biocompatibility endpoints. Guidance on alternative methods to address impurities is provided
|
| 236 |
<a href="color_module/FAQ.html#how-does-chris-deal-with-color-additive-impurities" >here</a>. </font>
|
exposure3_module/exposure.py
CHANGED
|
@@ -109,6 +109,10 @@ def exp_post():
|
|
| 109 |
else:
|
| 110 |
TTC = 0.0015
|
| 111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
polytg = ''
|
| 113 |
use_qrf = False
|
| 114 |
if polymer == 'Other polymer':
|
|
@@ -162,7 +166,7 @@ def exp_post():
|
|
| 162 |
#print(release_list, file=sys.stderr)
|
| 163 |
frac_list = [str(SigFigs(r/amount*100,2))+'%' for r in release_list]
|
| 164 |
release_list = [SigFigs(r,2) for r in release_list]
|
| 165 |
-
df_rel = pd.DataFrame(np.transpose([tlist,release_list,frac_list]),columns=['Exposure time (days)','Cumulative release (
|
| 166 |
df_rel['Exposure time (days)'] = df_rel['Exposure time (days)'].astype(float)
|
| 167 |
release_table = df_rel.sort_values(by='Exposure time (days)').to_html(index=False)
|
| 168 |
|
|
@@ -171,7 +175,7 @@ def exp_post():
|
|
| 171 |
diff = SigFigs(diff, 2)
|
| 172 |
|
| 173 |
return render_template('exposure3_report.html', show_properties=show_properties, polymers=polymers, pIndex=pIndex, release=release, release_table=release_table,
|
| 174 |
-
area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC,
|
| 175 |
MOS=MOS, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage,
|
| 176 |
LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin, ceramic=is_ceramic, methods=[method,polytg,density])
|
| 177 |
|
|
|
|
| 109 |
else:
|
| 110 |
TTC = 0.0015
|
| 111 |
|
| 112 |
+
units = request.form['units']
|
| 113 |
+
if units == 'µg':
|
| 114 |
+
TTC *= 1000
|
| 115 |
+
|
| 116 |
polytg = ''
|
| 117 |
use_qrf = False
|
| 118 |
if polymer == 'Other polymer':
|
|
|
|
| 166 |
#print(release_list, file=sys.stderr)
|
| 167 |
frac_list = [str(SigFigs(r/amount*100,2))+'%' for r in release_list]
|
| 168 |
release_list = [SigFigs(r,2) for r in release_list]
|
| 169 |
+
df_rel = pd.DataFrame(np.transpose([tlist,release_list,frac_list]),columns=['Exposure time (days)',f'Cumulative release ({units})','Cumulative release (%)'])
|
| 170 |
df_rel['Exposure time (days)'] = df_rel['Exposure time (days)'].astype(float)
|
| 171 |
release_table = df_rel.sort_values(by='Exposure time (days)').to_html(index=False)
|
| 172 |
|
|
|
|
| 175 |
diff = SigFigs(diff, 2)
|
| 176 |
|
| 177 |
return render_template('exposure3_report.html', show_properties=show_properties, polymers=polymers, pIndex=pIndex, release=release, release_table=release_table,
|
| 178 |
+
area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC, units=units,
|
| 179 |
MOS=MOS, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage,
|
| 180 |
LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin, ceramic=is_ceramic, methods=[method,polytg,density])
|
| 181 |
|
exposure3_module/templates/exposure3_index.html
CHANGED
|
@@ -41,7 +41,11 @@ For a history of updates, please see the <a href="{{url_for('.static', filename=
|
|
| 41 |
|
| 42 |
Identifier: <input name="chemName" id="chemName" type="text" value="" required><br>
|
| 43 |
|
| 44 |
-
Amount
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
<!-- Modal -->
|
| 47 |
<div id="LeachModal" class="modal fade" role="dialog">
|
|
@@ -59,7 +63,8 @@ For a history of updates, please see the <a href="{{url_for('.static', filename=
|
|
| 59 |
be found for many chemicals using <a href="https://pubchem.ncbi.nlm.nih.gov">PubChem</a> or generated based on
|
| 60 |
the molecular structure using tools such as <a href="https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi">OSRA</a>.
|
| 61 |
Alternatively, CHRIS can attempt to identify the chemical using a common name for the chemical.</p>
|
| 62 |
-
<p><em>Amount</em> - Enter the total mass of the substance in the component being evaluated expressed in milligrams.</p>
|
|
|
|
| 63 |
</div>
|
| 64 |
<div class="modal-footer">
|
| 65 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
@@ -118,7 +123,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 118 |
<input type="radio" name="exposure" id="prolonged" value="prolonged" onclick="javascript:exposureCheck();" > prolonged
|
| 119 |
<input type="radio" name="exposure" id="limited" value="limited" onclick="javascript:exposureCheck();" > limited
|
| 120 |
<span id="limitedtime" style="visibility:hidden">
|
| 121 |
-
⇒ Exposure
|
| 122 |
</span>
|
| 123 |
|
| 124 |
<!-- Modal -->
|
|
@@ -134,7 +139,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 134 |
<p><em>Exposed surface area</em> - Enter the patient contacting surface area of the component being evaluated in square centimeters.
|
| 135 |
This includes both direct and indirect patient contact.</p>
|
| 136 |
<p><em>Exposure type</em> - Select the appropriate exposure category: > 30 days = long-term, > 24 hours - 30 days = prolonged, ≤ 24 hours = limited.
|
| 137 |
-
For limited exposures (≤ 24 hours), please enter the maximum exposure
|
| 138 |
</div>
|
| 139 |
<div class="modal-footer">
|
| 140 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
@@ -145,7 +150,7 @@ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value=
|
|
| 145 |
</div>
|
| 146 |
|
| 147 |
<h3> Exposure assessment <button type=button class="Info_btn" data-toggle="modal" data-target="#ExposureModal">ⓘ</button> </h3>
|
| 148 |
-
Cumulative exposure
|
| 149 |
<input type="checkbox" id="exposure1d" name="exposure1d" value="exposure1d" checked=True, disabled=True>
|
| 150 |
<label for="exposure1d">1 day</label>
|
| 151 |
<input type="checkbox" id="exposure30d" name="exposure30d" value="exposure30d" checked=True>
|
|
@@ -168,8 +173,9 @@ Click to screen your device: <button type="submit">Estimate exposure</button>
|
|
| 168 |
<h4 class="modal-title">Exposure assessment</h4>
|
| 169 |
</div>
|
| 170 |
<div class="modal-body">
|
| 171 |
-
<p><em>Cumulative exposure
|
| 172 |
-
If the "Other duration" box is checked, enter the desired exposure
|
|
|
|
| 173 |
</div>
|
| 174 |
<div class="modal-footer">
|
| 175 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
@@ -195,7 +201,7 @@ function polymerCheck() {
|
|
| 195 |
$(window).on('pageshow', function() { polymerCheck(); });
|
| 196 |
</script>
|
| 197 |
|
| 198 |
-
<!-- Javascript to reveal/hide exposure
|
| 199 |
|
| 200 |
<script type="text/javascript">
|
| 201 |
function exposureCheck() {
|
|
|
|
| 41 |
|
| 42 |
Identifier: <input name="chemName" id="chemName" type="text" value="" required><br>
|
| 43 |
|
| 44 |
+
Amount: <input name="amount" id="amount" value="1.0" step="any" min="0.000001" type="number" required>
|
| 45 |
+
Amount units: <select name="units">
|
| 46 |
+
<option value="µg" selected>µg</option>
|
| 47 |
+
<option value="mg" >mg</option>
|
| 48 |
+
</select> <br>
|
| 49 |
|
| 50 |
<!-- Modal -->
|
| 51 |
<div id="LeachModal" class="modal fade" role="dialog">
|
|
|
|
| 63 |
be found for many chemicals using <a href="https://pubchem.ncbi.nlm.nih.gov">PubChem</a> or generated based on
|
| 64 |
the molecular structure using tools such as <a href="https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi">OSRA</a>.
|
| 65 |
Alternatively, CHRIS can attempt to identify the chemical using a common name for the chemical.</p>
|
| 66 |
+
<p><em>Amount</em> - Enter the total mass of the substance in the component being evaluated expressed in micrograms or milligrams.</p>
|
| 67 |
+
<p><em>Amount units</em> - Select the appropriate units for the amount, micrograms (µg) or milligrams (mg).</p>
|
| 68 |
</div>
|
| 69 |
<div class="modal-footer">
|
| 70 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
| 123 |
<input type="radio" name="exposure" id="prolonged" value="prolonged" onclick="javascript:exposureCheck();" > prolonged
|
| 124 |
<input type="radio" name="exposure" id="limited" value="limited" onclick="javascript:exposureCheck();" > limited
|
| 125 |
<span id="limitedtime" style="visibility:hidden">
|
| 126 |
+
⇒ Exposure duration (h): <input name="exptime" id="time" step="any" min="0.001" max="24" value="24" type="number" required><br>
|
| 127 |
</span>
|
| 128 |
|
| 129 |
<!-- Modal -->
|
|
|
|
| 139 |
<p><em>Exposed surface area</em> - Enter the patient contacting surface area of the component being evaluated in square centimeters.
|
| 140 |
This includes both direct and indirect patient contact.</p>
|
| 141 |
<p><em>Exposure type</em> - Select the appropriate exposure category: > 30 days = long-term, > 24 hours - 30 days = prolonged, ≤ 24 hours = limited.
|
| 142 |
+
For limited exposures (≤ 24 hours), please enter the maximum exposure duration in hours.</p>
|
| 143 |
</div>
|
| 144 |
<div class="modal-footer">
|
| 145 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
| 150 |
</div>
|
| 151 |
|
| 152 |
<h3> Exposure assessment <button type=button class="Info_btn" data-toggle="modal" data-target="#ExposureModal">ⓘ</button> </h3>
|
| 153 |
+
Cumulative exposure duration(s):
|
| 154 |
<input type="checkbox" id="exposure1d" name="exposure1d" value="exposure1d" checked=True, disabled=True>
|
| 155 |
<label for="exposure1d">1 day</label>
|
| 156 |
<input type="checkbox" id="exposure30d" name="exposure30d" value="exposure30d" checked=True>
|
|
|
|
| 173 |
<h4 class="modal-title">Exposure assessment</h4>
|
| 174 |
</div>
|
| 175 |
<div class="modal-body">
|
| 176 |
+
<p><em>Cumulative exposure duration(s)</em> Check the boxes for the exposure duration(s) to use for cumulative release estimates. 1-day exposure is always calculated.
|
| 177 |
+
If the "Other duration" box is checked, enter the desired exposure duration in days (e.g., the maximum use duration of the device).
|
| 178 |
+
Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.</p>
|
| 179 |
</div>
|
| 180 |
<div class="modal-footer">
|
| 181 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
| 201 |
$(window).on('pageshow', function() { polymerCheck(); });
|
| 202 |
</script>
|
| 203 |
|
| 204 |
+
<!-- Javascript to reveal/hide exposure duration input box (limited contact) -->
|
| 205 |
|
| 206 |
<script type="text/javascript">
|
| 207 |
function exposureCheck() {
|
exposure3_module/templates/exposure3_report.html
CHANGED
|
@@ -74,16 +74,16 @@
|
|
| 74 |
<p>
|
| 75 |
{% if methods[0]=="category" %}
|
| 76 |
<u> Diffusion calculation for leaching from {{polymers[pIndex]}} estimates a worst case single day
|
| 77 |
-
exposure = {{release}}
|
| 78 |
{% elif methods[0]=="wc" %}
|
| 79 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because no T<sub>g</sub> was specified) estimates a worst case single day
|
| 80 |
-
exposure = {{release}}
|
| 81 |
{% elif methods[0]=="qrf" %}
|
| 82 |
<u> Diffusion calculation for leaching from the polymer (with density = {{methods[2]}} g/cm<sup>3</sup> and T<sub>g</sub> = {{methods[1]}} °C) estimates a worst case single day
|
| 83 |
-
exposure = {{release}}
|
| 84 |
{% elif methods[0]=="qrf/wc" %}
|
| 85 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because this system is outside the model training domain) estimates a worst case single day
|
| 86 |
-
exposure = {{release}}
|
| 87 |
{% endif %}
|
| 88 |
<p>
|
| 89 |
|
|
@@ -104,13 +104,13 @@ where \( \tau= D t A^2 / V^2 \) and \( A \) and \( V \) are the surface area and
|
|
| 104 |
<p>
|
| 105 |
\( A \) = {{area}} cm<sup>2</sup> <br>
|
| 106 |
\( V \) = {{vol}} cm<sup>3</sup> <br>
|
| 107 |
-
\( M_0 \) = {{amount}}
|
| 108 |
\( D \) = {{diff}} cm<sup>2</sup>/s <br>
|
| 109 |
\( t \) = {{time}} h <br>
|
| 110 |
</p>
|
| 111 |
|
| 112 |
<p>
|
| 113 |
-
It can be helpful to examine the cumulative amount released over various exposure times:
|
| 114 |
</p>
|
| 115 |
|
| 116 |
<div>
|
|
@@ -122,7 +122,7 @@ It can be helpful to examine the cumulative amount released over various exposur
|
|
| 122 |
<h2> Screening level toxicological risk assessment </h2>
|
| 123 |
|
| 124 |
<p>
|
| 125 |
-
The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}}
|
| 126 |
</p>
|
| 127 |
|
| 128 |
{% if MOS >= 1 %}
|
|
@@ -131,6 +131,10 @@ The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}
|
|
| 131 |
<font color="green"> The MOS based on the mutagenic TTC is greater than one; therefore, no further analysis is needed for systemic biocompatibility endpoints. </font>
|
| 132 |
</p>
|
| 133 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 134 |
<p>
|
| 135 |
<font color="red"> *Note*: This assessment assumes that the chemical is not in the cohort of concern. </font>
|
| 136 |
</p>
|
|
|
|
| 74 |
<p>
|
| 75 |
{% if methods[0]=="category" %}
|
| 76 |
<u> Diffusion calculation for leaching from {{polymers[pIndex]}} estimates a worst case single day
|
| 77 |
+
exposure = {{release}} {{units}}. </u>
|
| 78 |
{% elif methods[0]=="wc" %}
|
| 79 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because no T<sub>g</sub> was specified) estimates a worst case single day
|
| 80 |
+
exposure = {{release}} {{units}}. </u>
|
| 81 |
{% elif methods[0]=="qrf" %}
|
| 82 |
<u> Diffusion calculation for leaching from the polymer (with density = {{methods[2]}} g/cm<sup>3</sup> and T<sub>g</sub> = {{methods[1]}} °C) estimates a worst case single day
|
| 83 |
+
exposure = {{release}} {{units}}. </u>
|
| 84 |
{% elif methods[0]=="qrf/wc" %}
|
| 85 |
<u> Diffusion calculation for leaching from the polymer (with worst-case diffusion in water assumed because this system is outside the model training domain) estimates a worst case single day
|
| 86 |
+
exposure = {{release}} {{units}}. </u>
|
| 87 |
{% endif %}
|
| 88 |
<p>
|
| 89 |
|
|
|
|
| 104 |
<p>
|
| 105 |
\( A \) = {{area}} cm<sup>2</sup> <br>
|
| 106 |
\( V \) = {{vol}} cm<sup>3</sup> <br>
|
| 107 |
+
\( M_0 \) = {{amount}} {{units}} <br>
|
| 108 |
\( D \) = {{diff}} cm<sup>2</sup>/s <br>
|
| 109 |
\( t \) = {{time}} h <br>
|
| 110 |
</p>
|
| 111 |
|
| 112 |
<p>
|
| 113 |
+
It can be helpful to examine the cumulative amount released over various exposure times. For example, the 30-day cumulative exposure may be compared to the TSL<sub>≤30 d</sub> as recommended in ISO 10993-17:2023. Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.
|
| 114 |
</p>
|
| 115 |
|
| 116 |
<div>
|
|
|
|
| 122 |
<h2> Screening level toxicological risk assessment </h2>
|
| 123 |
|
| 124 |
<p>
|
| 125 |
+
The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}} {{units}}/day. Based on the exposure estimation this results in a margin of safety (MOS) of {{MOS}}.
|
| 126 |
</p>
|
| 127 |
|
| 128 |
{% if MOS >= 1 %}
|
|
|
|
| 131 |
<font color="green"> The MOS based on the mutagenic TTC is greater than one; therefore, no further analysis is needed for systemic biocompatibility endpoints. </font>
|
| 132 |
</p>
|
| 133 |
|
| 134 |
+
<p>
|
| 135 |
+
<font color="red"> *Note*: This assessment assumes that the amount (\( M_0 \)) accounts for the number of devices used concurrently (i.e., multiply the per-device amount by the number of devices used concurrently). </font>
|
| 136 |
+
</p>
|
| 137 |
+
|
| 138 |
<p>
|
| 139 |
<font color="red"> *Note*: This assessment assumes that the chemical is not in the cohort of concern. </font>
|
| 140 |
</p>
|