David Saylor commited on
Commit
62d7688
·
1 Parent(s): be1521b

added general bulk leach module (and modules in general)

Browse files
CHRISv1.py CHANGED
@@ -62,13 +62,19 @@ for i in range(nCA):
62
  app = Flask(__name__)
63
  app.debug = True
64
 
65
-
66
  @app.route('/', methods=['GET'])
67
  def app_init():
 
 
 
 
68
  return render_template('index.html', polymers=polymers, CAs=CAs, caMW=caMW)
69
 
 
 
 
70
 
71
- @app.route('/', methods=['POST'])
72
  def app_post():
73
  amount = float(request.form["amount"])
74
  mass = float(request.form["mass"])
@@ -145,6 +151,48 @@ def app_post():
145
  isCA=isCA, TI=TI, MOS=MOS,
146
  chemName=chemName, impurity=impurity, iMOS=iMOS)
147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
  def calcexposure(MW, amount, vol, area, time, pIndex):
150
  Ap = np.array((16.9, 11.7, 8.2, 2.6))
 
62
  app = Flask(__name__)
63
  app.debug = True
64
 
 
65
  @app.route('/', methods=['GET'])
66
  def app_init():
67
+ return render_template('main.html')
68
+
69
+ @app.route('/color', methods=['GET'])
70
+ def colors():
71
  return render_template('index.html', polymers=polymers, CAs=CAs, caMW=caMW)
72
 
73
+ @app.route('/exposure', methods=['GET'])
74
+ def exposure():
75
+ return render_template('exposure_index.html', polymers=polymers, CAs=CAs, caMW=caMW)
76
 
77
+ @app.route('/color', methods=['POST'])
78
  def app_post():
79
  amount = float(request.form["amount"])
80
  mass = float(request.form["mass"])
 
151
  isCA=isCA, TI=TI, MOS=MOS,
152
  chemName=chemName, impurity=impurity, iMOS=iMOS)
153
 
154
+ @app.route('/exposure', methods=['POST'])
155
+ def exp_post():
156
+ amount = float(request.form["amount"])
157
+ mass = float(request.form["mass"])
158
+ density = float(request.form["density"])
159
+ vol = mass / density
160
+ polymer = request.form["polymer"]
161
+ pIndex = (np.where(polymers == polymer)[0])[0]
162
+ area = float(request.form["area"])
163
+ exposure = request.form["exposure"]
164
+ MW = float(request.form["MW"])
165
+ chemName = '*' + request.form["chemName"] + '*'
166
+
167
+ if exposure != "limited":
168
+ time = 24.
169
+ else:
170
+ time = float(request.form["exptime"])
171
+ if exposure != "long-term":
172
+ TTC = 0.12
173
+ else:
174
+ TTC = 0.0015
175
+
176
+ assume1 = request.form.get("assume1") is not None
177
+ assume2 = request.form.get("assume2") is not None
178
+ assume3 = request.form.get("assume3") is not None
179
+ assume4 = request.form.get("assume4") is not None
180
+ assume5 = request.form.get("assume5") is not None
181
+
182
+ assume = np.array((assume1, assume2, assume3, assume4, assume5))
183
+
184
+ release, diff = calcexposure(MW, amount, vol, area, time, pIndex)
185
+
186
+ MOS = TTC / release
187
+
188
+ release = sigfigs(release, 2)
189
+ MOS = sigfigs(MOS, 2)
190
+ diff = sigfigs(diff, 2)
191
+
192
+ return render_template('exposure_report.html', polymers=polymers, pIndex=pIndex, release=release,
193
+ assume=assume, area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC,
194
+ MOS=MOS, chemName=chemName)
195
+
196
 
197
  def calcexposure(MW, amount, vol, area, time, pIndex):
198
  Ap = np.array((16.9, 11.7, 8.2, 2.6))
templates/exposure_index.html ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS</title>
6
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
7
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
8
+ <style>
9
+ body {font-family: Arial, Helvetica, sans-serif;}
10
+
11
+ /* The Modal (background) */
12
+ .modal {
13
+ display: none; /* Hidden by default */
14
+ position: fixed; /* Stay in place */
15
+ z-index: 1; /* Sit on top */
16
+ padding-top: 100px; /* Location of the box */
17
+ left: 0;
18
+ top: 0;
19
+ width: 100%; /* Full width */
20
+ height: 100%; /* Full height */
21
+ max-height: calc(100vh - 210px);
22
+ overflow: auto; /* Enable scroll if needed */
23
+ background-color: rgb(0,0,0); /* Fallback color */
24
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
25
+ }
26
+
27
+ /* Modal Content */
28
+ .modal-content {
29
+ background-color: #fefefe;
30
+ margin: auto;
31
+ padding: 20px;
32
+ border: 1px solid #888;
33
+ width: 80%;
34
+ }
35
+
36
+ /* The Close Button */
37
+ .close {
38
+ color: #aaaaaa;
39
+ float: right;
40
+ font-size: 28px;
41
+ font-weight: bold;
42
+ }
43
+
44
+ .close:hover,
45
+ .close:focus {
46
+ color: #000;
47
+ text-decoration: none;
48
+ cursor: pointer;
49
+ }
50
+
51
+ </style>
52
+
53
+ </head>
54
+
55
+ <header>
56
+ <h2>CHemical RISk calculator (CHRIS) - Bulk chemical exposure</h2>
57
+ </header>
58
+
59
+ <p><strong>Disclaimer: This module only addresses risk associated with the bulk chemicals of known initial quantity.
60
+ Therefore, a favorable outcome does not imply acceptable biological risk for the final finished form of a medical device.
61
+ Further, a successful evaluation does not address local biocompatibility endpoints, and therefore additional testing
62
+ may be needed despite a positive outcome. </strong></p>
63
+
64
+ <body>
65
+
66
+ <form method="POST">
67
+
68
+ <!-- Chemical input section -->
69
+
70
+ <h3> Bulk chemical <button type="button" class="Info_btn" data-toggle="modal" data-target="#LeachModal" >&#9432;</button> </h3>
71
+
72
+ Identity: <input name="chemName" id="chemName" type="text" value="ENTER CHEMICAL NAME" required><br>
73
+
74
+ Molecular weight (g/mol): <input name="MW" id="MW" step="any" value="1100" min="100.0" max="1100.0" type="number"><br>
75
+
76
+ Amount (mg): <input name="amount" id="amount" value="1.0" step="any" min="0.000001" type="number"> <br>
77
+
78
+ <!-- Modal -->
79
+ <div id="LeachModal" class="modal fade" role="dialog">
80
+ <div class="modal-dialog">
81
+
82
+ <!-- Modal content-->
83
+ <div class="modal-content">
84
+ <div class="modal-header">
85
+ <h4 class="modal-title">Bulk chemical</h4>
86
+ </div>
87
+ <div class="modal-body">
88
+ <p><em>Identity</em> - Please enter the chemical name, including CAS # if known. Note that CHRIS is limited to substances
89
+ with molecular weight between 100 and 1100 g/mol. For compounds with molecular weight > 1100 g/mol, this value
90
+ can be used for a conservative exposure estimate.
91
+ <p><em>Molecular weight</em> - Enter the molecular weight of the substance in grams per mole.</p>
92
+ <p><em>Amount</em> - Enter the total mass of the substance in the component being evaluated expressed in milligrams.</p>
93
+ </div>
94
+ <div class="modal-footer">
95
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
96
+ </div>
97
+ </div>
98
+
99
+ </div>
100
+ </div>
101
+
102
+ <!-- Polymer matrix input section -->
103
+
104
+ <polymer>
105
+
106
+ <h3> Polymer matrix <button type="button" class="Info_btn" data-toggle="modal" data-target="#PolymerModal">&#9432;</button> </h3>
107
+ Matrix: <select name="polymer">
108
+ <option value="{{polymers[0]}}" selected>{{polymers[0]}}</option>
109
+ {% for polymer in polymers[1:] %}
110
+ <option value="{{polymer}}">{{polymer}}</option>
111
+ {% endfor %}
112
+ </select> <br>
113
+ Mass (g): <input name="mass" id="mass" step="any" value="1.0" min="0.000001" type="number"> <br>
114
+ Density (g/cm<sup>3</sup>): <input name="density" id="density" step="any" value="1.0" min="0.01" type="number">
115
+
116
+ <!-- Modal -->
117
+ <div id="PolymerModal" class="modal fade" role="dialog">
118
+ <div class="modal-dialog">
119
+
120
+ <!-- Modal content-->
121
+ <div class="modal-content">
122
+ <div class="modal-header">
123
+ <h4 class="modal-title">Polymer Matrix</h4>
124
+ </div>
125
+ <div class="modal-body">
126
+ <p><em>Matrix</em> - Please select your polymer matrix from the list. If your polymer is
127
+ not listed below, please select &#34;Other polymer&#34;. For polymer mixtures/blends, co-polymers, or composites (e.g. glass fiber reinforced matrices), the component or phase that is worst-case for exposure, i.e. the softest or least glassy (lowest Tg) component can be selected if listed (which, in turn, assumes the entire system is composed of the worst-case component or phase). In these scenarios, a justification should be provided for the choice of worst-case component of the polymer system. </p>
128
+ <p><em>Mass</em> - Enter the mass of the polymer matrix in grams.</p>
129
+ <p><em>Density</em> - Enter the estimated density of the polymer matrix in grams per cubic centimeter. Note that a rough estimate (e.g. +/- 10%) is acceptable.</p>
130
+ </div>
131
+ <div class="modal-footer">
132
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
133
+ </div>
134
+ </div>
135
+
136
+ </div>
137
+ </div>
138
+ </polymer>
139
+
140
+ <!-- Device characteristics input section -->
141
+
142
+ <device>
143
+ <h3> Device characteristics <button type=button class="Info_btn" data-toggle="modal" data-target="#DeviceModal">&#9432;</button> </h3>
144
+ Exposed surface area (cm<sup>2</sup>):
145
+ <input name="area" id="area" step="any" value="5.0" min="0.001" type="number"><br>
146
+ Exposure type:
147
+ <input type="radio" name="exposure" id="long-term" value="long-term" onclick="javascript:exposureCheck();" checked > long-term
148
+ <input type="radio" name="exposure" id="prolonged" value="prolonged" onclick="javascript:exposureCheck();" > prolonged
149
+ <input type="radio" name="exposure" id="limited" value="limited" onclick="javascript:exposureCheck();" > limited
150
+ <span id="limitedtime" style="visibility:hidden">
151
+ &nbsp; &rArr; Exposure time (h): <input name="exptime" id="time" step="any" min="0.001" max="24" value="24" type="number" ><br>
152
+ </span>
153
+
154
+ <!-- Modal -->
155
+ <div id="DeviceModal" class="modal fade" role="dialog">
156
+ <div class="modal-dialog">
157
+
158
+ <!-- Modal content-->
159
+ <div class="modal-content">
160
+ <div class="modal-header">
161
+ <h4 class="modal-title">Device characteristics</h4>
162
+ </div>
163
+ <div class="modal-body">
164
+ <p><em>Exposed surface area</em> - Enter the patient contacting surface area of the component being evaluated in square centimeters.
165
+ This includes both direct and indirect patient contact.</p>
166
+ <p><em>Exposure type</em> - Select the appropriate exposure category: > 30 days = permanent, > 24 hours - 30 days = prolonged, &#8804; 24 hours = limited.
167
+ For limited exposures (&#8804; 24 hours), please enter the maximum exposure time in hours.</p>
168
+ </div>
169
+ <div class="modal-footer">
170
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
171
+ </div>
172
+ </div>
173
+
174
+ </div>
175
+ </div>
176
+
177
+ </device>
178
+
179
+ <!-- Assumptions input section -->
180
+
181
+ <assume>
182
+
183
+ <h3> Assumptions <button type=button class="Info_btn" data-toggle="modal" data-target="#AssumeModal">&#9432;</button> </h3>
184
+ Check all statements below that are applicable to your the component being evaluated:<br><br>
185
+ <input type="checkbox" id="assume1" name="assume1" > The clinical use environment does not cause the polymer matrix to swell or degrade.<br>
186
+ <input type="checkbox" id="assume2" name="assume2" > Any particles/aggregates of the chemical present in the polymer are much smaller than the smallest component dimension (&le; 50x). <br>
187
+ <input type="checkbox" id="assume3" name="assume3" > The chemical is homogeneously distributed throughout the polymer. <br>
188
+ <input type="checkbox" id="assume4" name="assume4" > The total amount of the chemical is present in dilute concentrations (&le; 2 m/v %). <br>
189
+ <input type="checkbox" id="assume5" name="assume5" > Manufacturing processes do not impact the stability of the polymer. <br>
190
+
191
+ <!-- Modal -->
192
+ <div id="AssumeModal" class="modal fade" role="dialog">
193
+ <div class="modal-dialog">
194
+
195
+ <!-- Modal content-->
196
+ <div class="modal-content">
197
+ <div class="modal-header">
198
+ <h4 class="modal-title">Assumptions</h4>
199
+ </div>
200
+ <div class="modal-body">
201
+ <p>The exposure model relies on assumptions that are typically valid for bulk solutes in polymeric device components. However, if any of the assumptions are violated the exposure calculation may not remain protective. Therefore, if the output of CHRIS is used to support a submission to CDRH, users must confirm conformance to the underlying assumptions or provide supporting justification. Examples of considerations when confirming conformance are provided below:</p>
202
+ <p><em>Biostability of the matrix - </em> While many of the matrices listed within CHRIS will not appreciably swell or degrade in any physiological environment, this can not be generalized. For example, silicones may swell in lipid-rich environments. Chemical compatibility of the polymer matrix with the use environment can be assessed based on historical use and/or evaluation of swelling and/or degradation propensity in physiologically relevant media. </p>
203
+ <p><em>Particle/aggregate size and distribution - </em> CHRIS relies on the color additive having a distribution that is macroscopically homogeneous within the matrix (e.g. CAs used for surface marking would be excluded); thus, any particles or aggregates must be small relative to the component and homogeneously distributed. This can be confirmed/justified through the use of particle coatings and/or dispersants in the concentrate to prevent aggregation and promote homogeneity, macroscopic observations of color uniformity, and/or microscopic observations to evaluate the potential for surface segregation phenomena, such as blooming.</p>
204
+ <p><em>Dilute concentration - </em> The model relies on a concentration independent diffusion coefficient, which assumes any color additives are present only in dilute quantities. Confirming that the total amount of color additives present is &le; 2 m/v % is sufficient to conform with this assumption. It may be possible to justify that the CHRIS calculation for a dilute compound will remain protective if the total concentration is in excess of 2 m/v %, if the presence of additional compound could reasonably be expected to inhibit rather than promote diffusion, e.g. second phase particulates. </p>
205
+ <p><em>Matrix stability - </em> The model parameters/transport properties are established using worst-case values reported in the literature. However, it is unclear if the reported values account for potential degradation (e.g. during sterilization) or other physicochemical changes (e.g. excessive plasticization) that may occur during manufacturing and negatively impact these values. Polymer stability can be confirmed/justified by evidence supporting that manufacturing (including sterilization) does not alter the matrix material of the final device. </p>
206
+ </div>
207
+ <div class="modal-footer">
208
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
209
+ </div>
210
+ </div>
211
+
212
+ </div>
213
+ </div>
214
+
215
+ </assume>
216
+
217
+
218
+ <h3> Exposure assessment </h3>
219
+ Click to screen your device: <button type="submit">Estimate exposure</button>
220
+
221
+ </form>
222
+
223
+ <!-- Javascript to reveal/hide exposure time input box (limited contact) -->
224
+
225
+ <script type="text/javascript">
226
+ function exposureCheck() {
227
+ if (document.getElementById('limited').checked) {
228
+ document.getElementById('limitedtime').style.visibility = 'visible';
229
+ } else {
230
+ document.getElementById('limitedtime').style.visibility = 'hidden';
231
+ document.getElementById('time').value = '24';
232
+ }
233
+ }
234
+ </script>
235
+
236
+
237
+
238
+
239
+ </body>
240
+ </html>
templates/exposure_report.html ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS Report</title>
6
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
7
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
8
+ <style>
9
+ body {font-family: Arial, Helvetica, sans-serif;}
10
+ </style>
11
+
12
+ </head>
13
+
14
+ <header>
15
+ <h2>Color Hazard and RISk calculator (CHRIS) Report </h2>
16
+ </header>
17
+
18
+ <body>
19
+
20
+ <p> The following report was generated using CHRIS v.2.0 on
21
+ <script> document.write(new Date().toLocaleDateString()); </script>.
22
+ </p>
23
+
24
+ <h3>Exposure </h3>
25
+
26
+ <p>
27
+ <u> Diffusion calculation for {{chemName}} leaching from {{polymers[pIndex]}} estimates a worst case single day exposure = {{release}} mg. </u>
28
+ <p>
29
+
30
+ <p>
31
+ This estimate was derived using solutions to the conservative plane sheet model for mass release, \( M \):
32
+
33
+ \[
34
+ M(\tau)= \left\{
35
+ \begin{array}{cr}
36
+ 2 M_0 \sqrt{\tau/\pi} & \tau \leq 0.5 \\
37
+ M_0\left(1-8 \exp\left[-\tau \pi^2/4 \right]/\pi^2\right) & \tau > 0.5
38
+ \end{array} \right.
39
+ \]
40
+
41
+ where \( \tau= D t A^2 / V^2 \) and \( A \) and \( V \) are the surface area and volume of the polymer matrix, respectively, \( M_0 \) is total mass initially contained in the polymer, \( D \) is a conservative estimate of the diffusion coefficient of the leachable within the polymer matrix, and \( t \) is time. Based on the input provided, the calculation was based on the following values:
42
+ </p>
43
+
44
+ <p>
45
+ \( A \) = {{area}} cm<sup>2</sup> <br>
46
+ \( V \) = {{vol}} cm<sup>3</sup> <br>
47
+ \( M_0 \) = {{amount}} mg <br>
48
+ \( D \) = {{diff}} cm<sup>2</sup>/h <br>
49
+ \( t \) = {{time}} h <br>
50
+ <p>
51
+
52
+ <h3> Assumptions </h3>
53
+
54
+ {% if assume[0] and assume[1] and assume[2] and assume[3] and assume[4] %}
55
+
56
+ <p>
57
+ <font color="green"> You have confirmed your system complies with the model assumptions and no further data are needed to support using the exposure estimation provided by CHRIS in a submission to CDRH. </font>
58
+ </p>
59
+
60
+ {% else %}
61
+
62
+ <p>
63
+ <font color="red"> You have not confirmed compliance with one or more of the underlying assumptions upon which the exposure calculation is based. Therefore, it may be necessary to provide a justification and supporting data for why the results obtained for a system that may not comply with unchecked assumptions below are still valid if the assessment is used to support a submission to CDRH: </font> <br>
64
+ </p>
65
+
66
+ {% if not assume[0] %}
67
+ <font color="red"> &bull; The polymer matrix does not swell or degrade in the clinical use environment. <br> </font>
68
+ {% endif %}
69
+
70
+ {% if not assume[1] %}
71
+ <font color="red"> &bull; Any color additive particles/aggregates are much smaller than the smallest component dimension (&le; 50x). <br> </font>
72
+ {% endif %}
73
+
74
+ {% if not assume[2] %}
75
+ <font color="red"> &bull; The color additive is homogeneously distributed throughout the polymer. <br> </font>
76
+ {% endif %}
77
+
78
+ {% if not assume[3] %}
79
+ <font color="red"> &bull; The total amount of color additive is present in dilute concentrations (&le; 2 %). <br> </font>
80
+ {% endif %}
81
+
82
+ {% if not assume[4] %}
83
+ <font color="red"> &bull; Manufacturing processes do not impact the integrity of the polymer. <br> </font>
84
+ {% endif %}
85
+
86
+ {% endif %}
87
+
88
+ <h3> Screening level toxicological risk assessment </h3>
89
+
90
+ <p>
91
+ The threshold for toxicological concern (TTC) for {{exposure}} contact is {{TTC}} mg. Based on the exposure estimation this results in a margin of safety (MOS) of {{MOS}}.
92
+ </p>
93
+
94
+ {% if MOS >= 1 %}
95
+
96
+ <p>
97
+ <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>
98
+ </p>
99
+
100
+ <p>
101
+ <font color="red"> *Note*: This assessment assumes that {{chemName}} is not in the cohort of concern. </font>
102
+ </p>
103
+
104
+ {% else %}
105
+
106
+ <p>
107
+ <font color="red"> The MOS based on the mutagenic TTC is less than one; therefore, further analysis is needed to address systemic biocompatibility endpoints. For example, a compound specific tolerable intake value could be independently derived and compared to the exposure estimate provided above. </font>
108
+ </p>
109
+
110
+ {% endif %}
111
+
112
+ </body>
113
+ </html>
templates/index.html CHANGED
@@ -53,7 +53,7 @@ body {font-family: Arial, Helvetica, sans-serif;}
53
  </head>
54
 
55
  <header>
56
- <h2>Color Hazard and RISk calculator (CHRIS)</h2>
57
  </header>
58
 
59
  <p><strong>Disclaimer: CHRIS only addresses risk associated with the presence of color additives and additives and impurities associated with the color additive. Therefore, a favorable outcome by CHRIS does not imply acceptable biological risk for the final finished form of a medical device. Further, a successful CHRIS evaluation does not address local biocompatibility endpoints, and therefore additional testing may be needed despite a positive outcome from CHRIS. Because there may be additional restrictions based on specific device guidance and code of federal regulation (CFR) listings, users should also review the relevant documents for their device type and color additive. </strong></p>
@@ -254,9 +254,6 @@ Click to screen your device: <button type="submit">Estimate exposure</button>
254
 
255
  </form>
256
 
257
-
258
- <p id="TestingOutput"> </p>
259
-
260
  <!-- Javascript to reveal/hide exposure time input box (limited contact) -->
261
 
262
  <script type="text/javascript">
 
53
  </head>
54
 
55
  <header>
56
+ <h2>CHemical RISk calculator (CHRIS) - Color additives </h2>
57
  </header>
58
 
59
  <p><strong>Disclaimer: CHRIS only addresses risk associated with the presence of color additives and additives and impurities associated with the color additive. Therefore, a favorable outcome by CHRIS does not imply acceptable biological risk for the final finished form of a medical device. Further, a successful CHRIS evaluation does not address local biocompatibility endpoints, and therefore additional testing may be needed despite a positive outcome from CHRIS. Because there may be additional restrictions based on specific device guidance and code of federal regulation (CFR) listings, users should also review the relevant documents for their device type and color additive. </strong></p>
 
254
 
255
  </form>
256
 
 
 
 
257
  <!-- Javascript to reveal/hide exposure time input box (limited contact) -->
258
 
259
  <script type="text/javascript">
templates/main.html ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS</title>
6
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
7
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
8
+ <style>
9
+ body {font-family: Arial, Helvetica, sans-serif;}
10
+ </style>
11
+ </head>
12
+
13
+ <header>
14
+ <h1>Chemical RISk calculator (CHRIS)</h1>
15
+ </header>
16
+
17
+ <body>
18
+
19
+ <p>
20
+ The Chemical RISk calculator (CHRIS) is a collection of modules to facilitate the use of physics based models to estimate exposure
21
+ as part of toxicological risk assessment (TRA) of medical device polymers.
22
+ </p>
23
+
24
+ <h2>Modules</h2>
25
+
26
+ <p> Screening-level TRA for color additives - <a href="/color">here</a> </p>
27
+
28
+ <p> Exposure estimation for bulk chemicals - <a href="/exposure">here</a> </p>
29
+
30
+ <p> Estimation of total pool of a bulk chemical from extraction data - <a href="/extraction">here</a> </p>
31
+
32
+ </body>
templates/report.html CHANGED
@@ -17,7 +17,7 @@ body {font-family: Arial, Helvetica, sans-serif;}
17
 
18
  <body>
19
 
20
- <p> The following report was generated using CHRIS v.1.0 on
21
  <script> document.write(new Date().toLocaleDateString()); </script>.
22
  </p>
23
 
 
17
 
18
  <body>
19
 
20
+ <p> The following report was generated using CHRIS v.2.0 on
21
  <script> document.write(new Date().toLocaleDateString()); </script>.
22
  </p>
23