2839 |
20 Oct 14 |
olle |
1 |
<%@ page |
2839 |
20 Oct 14 |
olle |
2 |
pageEncoding="UTF-8" |
2839 |
20 Oct 14 |
olle |
3 |
session="false" |
2839 |
20 Oct 14 |
olle |
4 |
import="net.sf.basedb.core.User" |
2839 |
20 Oct 14 |
olle |
5 |
import="net.sf.basedb.core.DbControl" |
2839 |
20 Oct 14 |
olle |
6 |
import="net.sf.basedb.core.SessionControl" |
2839 |
20 Oct 14 |
olle |
7 |
import="net.sf.basedb.core.Application" |
2839 |
20 Oct 14 |
olle |
8 |
import="net.sf.basedb.core.Extract" |
2839 |
20 Oct 14 |
olle |
9 |
import="net.sf.basedb.core.BioMaterial" |
2839 |
20 Oct 14 |
olle |
10 |
import="net.sf.basedb.core.MeasuredBioMaterial" |
2839 |
20 Oct 14 |
olle |
11 |
import="net.sf.basedb.core.BioMaterialEventSource" |
2839 |
20 Oct 14 |
olle |
12 |
import="net.sf.basedb.core.BioPlate" |
2839 |
20 Oct 14 |
olle |
13 |
import="net.sf.basedb.core.BioWell" |
2839 |
20 Oct 14 |
olle |
14 |
import="net.sf.basedb.core.PermissionDeniedException" |
2839 |
20 Oct 14 |
olle |
15 |
import="net.sf.basedb.core.ItemQuery" |
2839 |
20 Oct 14 |
olle |
16 |
import="net.sf.basedb.core.query.Restrictions" |
2839 |
20 Oct 14 |
olle |
17 |
import="net.sf.basedb.core.query.Hql" |
2839 |
20 Oct 14 |
olle |
18 |
import="net.sf.basedb.util.Values" |
2839 |
20 Oct 14 |
olle |
19 |
import="net.sf.basedb.util.formatter.WellCoordinateFormatter" |
2839 |
20 Oct 14 |
olle |
20 |
import="net.sf.basedb.util.extensions.Extension" |
2839 |
20 Oct 14 |
olle |
21 |
import="net.sf.basedb.clients.web.Base" |
2839 |
20 Oct 14 |
olle |
22 |
import="net.sf.basedb.clients.web.util.HTML" |
2839 |
20 Oct 14 |
olle |
23 |
import="net.sf.basedb.clients.web.extensions.ExtensionsControl" |
2839 |
20 Oct 14 |
olle |
24 |
import="java.util.Arrays" |
2839 |
20 Oct 14 |
olle |
25 |
import="java.util.Enumeration" |
2839 |
20 Oct 14 |
olle |
26 |
import="java.util.Collections" |
2839 |
20 Oct 14 |
olle |
27 |
%> |
2839 |
20 Oct 14 |
olle |
28 |
<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %> |
2839 |
20 Oct 14 |
olle |
29 |
<% |
3976 |
26 May 16 |
nicklas |
30 |
final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true); |
2839 |
20 Oct 14 |
olle |
31 |
final String ID = sc.getId(); |
2839 |
20 Oct 14 |
olle |
32 |
final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie"); |
2839 |
20 Oct 14 |
olle |
33 |
final String root = request.getContextPath(); |
2839 |
20 Oct 14 |
olle |
34 |
DbControl dc = null; |
2839 |
20 Oct 14 |
olle |
35 |
try |
2839 |
20 Oct 14 |
olle |
36 |
{ |
2839 |
20 Oct 14 |
olle |
37 |
dc = sc.newDbControl(); |
2839 |
20 Oct 14 |
olle |
38 |
final Extension reggie = ExtensionsControl.get(dc).getExtension("net.sf.basedb.reggie"); |
2839 |
20 Oct 14 |
olle |
39 |
final User user = User.getById(dc, sc.getLoggedInUserId()); |
2839 |
20 Oct 14 |
olle |
40 |
|
5639 |
03 Oct 19 |
nicklas |
41 |
String caseName = Values.getStringOrNull(request.getParameter("caseName")); |
5639 |
03 Oct 19 |
nicklas |
42 |
int patientId = Values.getInt(request.getParameter("patientId")); |
2839 |
20 Oct 14 |
olle |
43 |
%> |
3026 |
11 Dec 14 |
nicklas |
44 |
<base:page id="protocol" type="iframe" favicon="<%=home+"/images/report.png"%>" noskin="true"> |
2839 |
20 Oct 14 |
olle |
45 |
<base:head |
2839 |
20 Oct 14 |
olle |
46 |
scripts="~../reggie-2.js,~retraction_protocol.js" |
2839 |
20 Oct 14 |
olle |
47 |
styles="~../css/reggie-2.css,~../css/printable.css" |
2839 |
20 Oct 14 |
olle |
48 |
> |
2839 |
20 Oct 14 |
olle |
49 |
|
2839 |
20 Oct 14 |
olle |
50 |
<style> |
2839 |
20 Oct 14 |
olle |
51 |
h1 |
2839 |
20 Oct 14 |
olle |
52 |
{ |
2839 |
20 Oct 14 |
olle |
53 |
margin-top: 1em; |
2839 |
20 Oct 14 |
olle |
54 |
} |
2839 |
20 Oct 14 |
olle |
55 |
|
2839 |
20 Oct 14 |
olle |
56 |
h2 |
2839 |
20 Oct 14 |
olle |
57 |
{ |
2839 |
20 Oct 14 |
olle |
58 |
margin-bottom: 0; |
2839 |
20 Oct 14 |
olle |
59 |
font-size: 1.2em; |
2839 |
20 Oct 14 |
olle |
60 |
} |
2839 |
20 Oct 14 |
olle |
61 |
|
2839 |
20 Oct 14 |
olle |
62 |
table.protocolheader |
2839 |
20 Oct 14 |
olle |
63 |
{ |
2839 |
20 Oct 14 |
olle |
64 |
width: 100%; |
2839 |
20 Oct 14 |
olle |
65 |
border: 1px solid #000000; |
2839 |
20 Oct 14 |
olle |
66 |
margin-bottom: 1em; |
2839 |
20 Oct 14 |
olle |
67 |
border-collapse: collapse; |
2839 |
20 Oct 14 |
olle |
68 |
} |
2839 |
20 Oct 14 |
olle |
69 |
|
5639 |
03 Oct 19 |
nicklas |
70 |
table.protocolheader tr |
2839 |
20 Oct 14 |
olle |
71 |
{ |
2839 |
20 Oct 14 |
olle |
72 |
vertical-align: middle; |
2839 |
20 Oct 14 |
olle |
73 |
height: 2.5em; |
2839 |
20 Oct 14 |
olle |
74 |
max-height: 2.5em; |
2839 |
20 Oct 14 |
olle |
75 |
} |
2839 |
20 Oct 14 |
olle |
76 |
|
5639 |
03 Oct 19 |
nicklas |
77 |
table.protocolheader th |
2839 |
20 Oct 14 |
olle |
78 |
{ |
2839 |
20 Oct 14 |
olle |
79 |
text-align: left; |
2839 |
20 Oct 14 |
olle |
80 |
font-size: 1em; |
2839 |
20 Oct 14 |
olle |
81 |
background-color: #F0F0F0; |
2839 |
20 Oct 14 |
olle |
82 |
padding: 4px; |
5639 |
03 Oct 19 |
nicklas |
83 |
border: 1px solid #000000; |
2839 |
20 Oct 14 |
olle |
84 |
} |
2839 |
20 Oct 14 |
olle |
85 |
|
5639 |
03 Oct 19 |
nicklas |
86 |
table.protocolheader th.subprompt |
2839 |
20 Oct 14 |
olle |
87 |
{ |
2839 |
20 Oct 14 |
olle |
88 |
text-align: right; |
2839 |
20 Oct 14 |
olle |
89 |
font-weight: normal; |
2839 |
20 Oct 14 |
olle |
90 |
} |
2839 |
20 Oct 14 |
olle |
91 |
|
2839 |
20 Oct 14 |
olle |
92 |
|
5639 |
03 Oct 19 |
nicklas |
93 |
table.protocolheader td |
2839 |
20 Oct 14 |
olle |
94 |
{ |
2839 |
20 Oct 14 |
olle |
95 |
text-align: left; |
2839 |
20 Oct 14 |
olle |
96 |
font-size: 1em; |
2839 |
20 Oct 14 |
olle |
97 |
padding: 4px; |
5639 |
03 Oct 19 |
nicklas |
98 |
border: 1px solid #000000; |
2839 |
20 Oct 14 |
olle |
99 |
} |
2839 |
20 Oct 14 |
olle |
100 |
|
6731 |
05 May 22 |
nicklas |
101 |
.label |
6731 |
05 May 22 |
nicklas |
102 |
{ |
6731 |
05 May 22 |
nicklas |
103 |
white-space: nowrap; |
6731 |
05 May 22 |
nicklas |
104 |
} |
6731 |
05 May 22 |
nicklas |
105 |
|
6731 |
05 May 22 |
nicklas |
106 |
.nolabels .label |
6731 |
05 May 22 |
nicklas |
107 |
{ |
6731 |
05 May 22 |
nicklas |
108 |
display: none; |
6731 |
05 May 22 |
nicklas |
109 |
} |
6731 |
05 May 22 |
nicklas |
110 |
|
2839 |
20 Oct 14 |
olle |
111 |
.colorbox |
2839 |
20 Oct 14 |
olle |
112 |
{ |
2839 |
20 Oct 14 |
olle |
113 |
display: inline-block; |
5639 |
03 Oct 19 |
nicklas |
114 |
width: 0.85em; |
5639 |
03 Oct 19 |
nicklas |
115 |
height: 0.85em; |
2839 |
20 Oct 14 |
olle |
116 |
border: 1px solid #000000; |
2839 |
20 Oct 14 |
olle |
117 |
margin-left: 0em; |
2839 |
20 Oct 14 |
olle |
118 |
margin-right: 0.5em; |
2839 |
20 Oct 14 |
olle |
119 |
} |
2839 |
20 Oct 14 |
olle |
120 |
|
5642 |
04 Oct 19 |
nicklas |
121 |
tr.destroyed |
5642 |
04 Oct 19 |
nicklas |
122 |
{ |
5642 |
04 Oct 19 |
nicklas |
123 |
color: #999999; |
5642 |
04 Oct 19 |
nicklas |
124 |
text-decoration: line-through; |
5642 |
04 Oct 19 |
nicklas |
125 |
} |
5642 |
04 Oct 19 |
nicklas |
126 |
|
2839 |
20 Oct 14 |
olle |
127 |
</style> |
2839 |
20 Oct 14 |
olle |
128 |
</base:head> |
2839 |
20 Oct 14 |
olle |
129 |
<base:body> |
2839 |
20 Oct 14 |
olle |
130 |
<div class="paper"> |
2839 |
20 Oct 14 |
olle |
131 |
<form name="reggie" id="wizard"> |
2839 |
20 Oct 14 |
olle |
132 |
|
2839 |
20 Oct 14 |
olle |
133 |
<div id="page-data" class="datacontainer" |
5639 |
03 Oct 19 |
nicklas |
134 |
data-casename="<%=HTML.encodeTags(caseName)%>" |
5639 |
03 Oct 19 |
nicklas |
135 |
data-patient-id="<%=patientId%>" |
2839 |
20 Oct 14 |
olle |
136 |
></div> |
2839 |
20 Oct 14 |
olle |
137 |
|
2839 |
20 Oct 14 |
olle |
138 |
<div id="wizard-status"></div> |
2839 |
20 Oct 14 |
olle |
139 |
|
2839 |
20 Oct 14 |
olle |
140 |
<div id="all-protocol" style="display: none;"> |
2839 |
20 Oct 14 |
olle |
141 |
|
2839 |
20 Oct 14 |
olle |
142 |
<div id="print-instructions" class="noprint fullwidth"> |
2970 |
24 Nov 14 |
nicklas |
143 |
<base:button id="print-button" image="<%=home+"/images/print.png"%>" title="Print…" /> |
2970 |
24 Nov 14 |
nicklas |
144 |
<span id="printNote"> |
2839 |
20 Oct 14 |
olle |
145 |
<b>Note!</b> |
2839 |
20 Oct 14 |
olle |
146 |
For better printing reduce margins to about <i>5mm</i> and set page orientation |
2839 |
20 Oct 14 |
olle |
147 |
to <i>portrait</i>. |
2970 |
24 Nov 14 |
nicklas |
148 |
</span> |
2839 |
20 Oct 14 |
olle |
149 |
<br clear="all"> |
2839 |
20 Oct 14 |
olle |
150 |
</div> |
2839 |
20 Oct 14 |
olle |
151 |
|
2839 |
20 Oct 14 |
olle |
152 |
<h1>Lab protocol for extract destruction at retracted consent <span class="reggie">Reggie <%=reggie.getAbout().getVersion() %></span></h1> |
2839 |
20 Oct 14 |
olle |
153 |
|
2839 |
20 Oct 14 |
olle |
154 |
<h2>1. Source with retracted consent</h2> |
2839 |
20 Oct 14 |
olle |
155 |
|
2839 |
20 Oct 14 |
olle |
156 |
<table class="protocolheader"> |
5639 |
03 Oct 19 |
nicklas |
157 |
<tr> |
2839 |
20 Oct 14 |
olle |
158 |
<th style="width: 15%;">Patient</th> |
5639 |
03 Oct 19 |
nicklas |
159 |
<td id="patient"></td> |
2839 |
20 Oct 14 |
olle |
160 |
</tr> |
5639 |
03 Oct 19 |
nicklas |
161 |
<tr> |
2839 |
20 Oct 14 |
olle |
162 |
<th style="width: 15%;">Case(s)</th> |
5639 |
03 Oct 19 |
nicklas |
163 |
<td id="allcases"></td> |
2839 |
20 Oct 14 |
olle |
164 |
</tr> |
2839 |
20 Oct 14 |
olle |
165 |
</table> |
2839 |
20 Oct 14 |
olle |
166 |
|
2839 |
20 Oct 14 |
olle |
167 |
<h2>2. Samples/extracts to be destroyed</h2> |
2839 |
20 Oct 14 |
olle |
168 |
|
6731 |
05 May 22 |
nicklas |
169 |
<table id="itemTable" class="protocolheader nolabels"> |
5639 |
03 Oct 19 |
nicklas |
170 |
<thead> |
5639 |
03 Oct 19 |
nicklas |
171 |
<tr> |
2839 |
20 Oct 14 |
olle |
172 |
<th style="width: 10%;">Item type</th> |
2839 |
20 Oct 14 |
olle |
173 |
<th style="width: 10%;">Name</th> |
6731 |
05 May 22 |
nicklas |
174 |
<th style="width: 10%;" class="label">Label¹</th> |
5639 |
03 Oct 19 |
nicklas |
175 |
<th style="width: 15%;">Storage Box</th> |
4114 |
19 Sep 16 |
nicklas |
176 |
<th style="width: 50%;">Storage position</th> |
4114 |
19 Sep 16 |
nicklas |
177 |
<th style="width: 15%;">Result/Comment</th> |
2839 |
20 Oct 14 |
olle |
178 |
</tr> |
5639 |
03 Oct 19 |
nicklas |
179 |
</thead> |
5639 |
03 Oct 19 |
nicklas |
180 |
<tbody id="itemList"></tbody> |
2839 |
20 Oct 14 |
olle |
181 |
</table> |
6731 |
05 May 22 |
nicklas |
182 |
<div id="protocol-footer" style="display: none; margin-bottom: 1em;"> |
6731 |
05 May 22 |
nicklas |
183 |
¹ Some SCAN-B tubes have a non-standard label. |
6731 |
05 May 22 |
nicklas |
184 |
</div> |
2839 |
20 Oct 14 |
olle |
185 |
|
2839 |
20 Oct 14 |
olle |
186 |
<h2>3. Lab representative certification</h2> |
2839 |
20 Oct 14 |
olle |
187 |
|
2839 |
20 Oct 14 |
olle |
188 |
<table class="protocolheader"> |
2839 |
20 Oct 14 |
olle |
189 |
<tr> |
2839 |
20 Oct 14 |
olle |
190 |
<th style="width: 15%;">Date</th> |
2839 |
20 Oct 14 |
olle |
191 |
<td style="width: 85%;"></td> |
2839 |
20 Oct 14 |
olle |
192 |
</tr> |
2839 |
20 Oct 14 |
olle |
193 |
<tr> |
2839 |
20 Oct 14 |
olle |
194 |
<th style="width: 15%;">Name</th> |
2839 |
20 Oct 14 |
olle |
195 |
<td style="width: 85%;"></td> |
2839 |
20 Oct 14 |
olle |
196 |
</tr> |
2839 |
20 Oct 14 |
olle |
197 |
|
2839 |
20 Oct 14 |
olle |
198 |
<tr> |
2839 |
20 Oct 14 |
olle |
199 |
<th style="width: 15%;">Signature</th> |
2839 |
20 Oct 14 |
olle |
200 |
<td style="width: 85%;"></td> |
2839 |
20 Oct 14 |
olle |
201 |
</tr> |
2839 |
20 Oct 14 |
olle |
202 |
|
2839 |
20 Oct 14 |
olle |
203 |
<tr style="height: 10em; vertical-align: top;"> |
2839 |
20 Oct 14 |
olle |
204 |
<th style="width: 15%;">Comments</th> |
2839 |
20 Oct 14 |
olle |
205 |
<td style="width: 85%;"></td> |
2839 |
20 Oct 14 |
olle |
206 |
</tr> |
6731 |
05 May 22 |
nicklas |
207 |
</table> |
2839 |
20 Oct 14 |
olle |
208 |
|
2839 |
20 Oct 14 |
olle |
209 |
</div> |
2839 |
20 Oct 14 |
olle |
210 |
</form> |
2839 |
20 Oct 14 |
olle |
211 |
</div> |
2839 |
20 Oct 14 |
olle |
212 |
</base:body> |
2839 |
20 Oct 14 |
olle |
213 |
</base:page> |
2839 |
20 Oct 14 |
olle |
214 |
<% |
2839 |
20 Oct 14 |
olle |
215 |
} |
2839 |
20 Oct 14 |
olle |
216 |
finally |
2839 |
20 Oct 14 |
olle |
217 |
{ |
2839 |
20 Oct 14 |
olle |
218 |
if (dc != null) dc.close(); |
2839 |
20 Oct 14 |
olle |
219 |
} |
2839 |
20 Oct 14 |
olle |
220 |
%> |