2611 |
29 Aug 14 |
nicklas |
var Report = function() |
2611 |
29 Aug 14 |
nicklas |
2 |
{ |
2611 |
29 Aug 14 |
nicklas |
var report = {}; |
2656 |
11 Sep 14 |
nicklas |
var debug = 0; |
2611 |
29 Aug 14 |
nicklas |
5 |
|
2611 |
29 Aug 14 |
nicklas |
var periodIsValid = true; |
2611 |
29 Aug 14 |
nicklas |
7 |
|
2611 |
29 Aug 14 |
nicklas |
report.initPage = function() |
2611 |
29 Aug 14 |
nicklas |
9 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Step 1 |
2611 |
29 Aug 14 |
nicklas |
11 |
|
2611 |
29 Aug 14 |
nicklas |
// Step 2 |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('step-2', 'wizard-initialize', report.initializeStep2); |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('step-2', 'wizard-validate', report.validateStep2); |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('fromdate', 'blur', report.dateOnChange) |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('todate', 'blur', report.dateOnChange) |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('sampletype', 'change', report.sampleTypeOnChange); |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('tablealternatives', 'change', report.tableAlternativesOnChange); |
2611 |
29 Aug 14 |
nicklas |
19 |
|
2611 |
29 Aug 14 |
nicklas |
// Final registration |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('wizard', 'wizard-submit', report.submit); |
2611 |
29 Aug 14 |
nicklas |
Events.addEventHandler('printButton', 'click', report.printVersion); |
2611 |
29 Aug 14 |
nicklas |
23 |
|
2611 |
29 Aug 14 |
nicklas |
// Navigation |
2611 |
29 Aug 14 |
nicklas |
Buttons.addClickHandler('gocancel', Wizard.restartWizard); |
2611 |
29 Aug 14 |
nicklas |
Buttons.addClickHandler('gorestart', Wizard.restartWizard); |
2611 |
29 Aug 14 |
nicklas |
Buttons.addClickHandler('gonext', Wizard.goNextOnClick); |
2611 |
29 Aug 14 |
nicklas |
Buttons.addClickHandler('gocreate', Wizard.goRegister); |
2611 |
29 Aug 14 |
nicklas |
29 |
|
2611 |
29 Aug 14 |
nicklas |
Doc.show('step-1'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('gonext'); |
2611 |
29 Aug 14 |
nicklas |
32 |
} |
2611 |
29 Aug 14 |
nicklas |
33 |
|
2611 |
29 Aug 14 |
nicklas |
report.initializeStep2 = function() |
2611 |
29 Aug 14 |
nicklas |
35 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
Wizard.setCurrentStep(2); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('gocancel'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('gocreate'); |
2611 |
29 Aug 14 |
nicklas |
var reportType = frm.reporttype.value; |
2611 |
29 Aug 14 |
nicklas |
41 |
|
2611 |
29 Aug 14 |
nicklas |
// Hide all parameter fiels |
2611 |
29 Aug 14 |
nicklas |
Doc.hide('report-period'); |
2611 |
29 Aug 14 |
nicklas |
Doc.hide('view-type'); |
2611 |
29 Aug 14 |
nicklas |
Doc.hide('sample-type'); |
2611 |
29 Aug 14 |
nicklas |
Doc.hide('table-alternatives'); |
2611 |
29 Aug 14 |
nicklas |
Doc.hide('blood-filter'); |
2611 |
29 Aug 14 |
nicklas |
48 |
|
2611 |
29 Aug 14 |
nicklas |
// Re-enable base on report type |
2611 |
29 Aug 14 |
nicklas |
if (reportType == 'samplecount') |
2611 |
29 Aug 14 |
nicklas |
51 |
{ |
2611 |
29 Aug 14 |
nicklas |
Doc.show('report-period'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('view-type'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('sample-type'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('table-alternatives'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('blood-filter'); |
2611 |
29 Aug 14 |
nicklas |
frm.tablealternatives.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
59 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (reportType == 'consentcount') |
2611 |
29 Aug 14 |
nicklas |
61 |
{ |
2611 |
29 Aug 14 |
nicklas |
Doc.show('report-period'); |
2611 |
29 Aug 14 |
nicklas |
63 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (reportType == 'patientcount') |
2611 |
29 Aug 14 |
nicklas |
65 |
{ |
2611 |
29 Aug 14 |
nicklas |
Doc.show('report-period'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('view-type'); |
2611 |
29 Aug 14 |
nicklas |
68 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (reportType == 'overviewreport') |
2611 |
29 Aug 14 |
nicklas |
70 |
{ |
2611 |
29 Aug 14 |
nicklas |
Doc.show('report-period'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('blood-filter'); |
2611 |
29 Aug 14 |
nicklas |
73 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (reportType == 'missingsampledatareport') |
2611 |
29 Aug 14 |
nicklas |
75 |
{ |
2611 |
29 Aug 14 |
nicklas |
Doc.show('sample-type'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('blood-filter'); |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
79 |
} |
2611 |
29 Aug 14 |
nicklas |
80 |
|
2611 |
29 Aug 14 |
nicklas |
frm.fromdate.focus(); |
2611 |
29 Aug 14 |
nicklas |
82 |
} |
2611 |
29 Aug 14 |
nicklas |
83 |
|
2611 |
29 Aug 14 |
nicklas |
report.validateStep2 = function(event) |
2611 |
29 Aug 14 |
nicklas |
85 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!periodIsValid) event.preventDefault(); |
2611 |
29 Aug 14 |
nicklas |
87 |
} |
2611 |
29 Aug 14 |
nicklas |
88 |
|
2611 |
29 Aug 14 |
nicklas |
report.dateOnChange = function() |
2611 |
29 Aug 14 |
nicklas |
90 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
var fromDate = frm.fromdate.value; |
2611 |
29 Aug 14 |
nicklas |
var toDate = frm.todate.value; |
2611 |
29 Aug 14 |
nicklas |
94 |
|
2611 |
29 Aug 14 |
nicklas |
periodIsValid = false; |
2611 |
29 Aug 14 |
nicklas |
Wizard.setInputStatus('period'); |
2611 |
29 Aug 14 |
nicklas |
97 |
|
2611 |
29 Aug 14 |
nicklas |
if (fromDate != '') |
2611 |
29 Aug 14 |
nicklas |
99 |
{ |
2611 |
29 Aug 14 |
nicklas |
fromDate = Reggie.autoFillDate(fromDate, true); |
2611 |
29 Aug 14 |
nicklas |
frm.fromdate.value = fromDate; |
2611 |
29 Aug 14 |
nicklas |
if (!Dates.isDate(fromDate, 'yyyyMMdd')) |
2611 |
29 Aug 14 |
nicklas |
103 |
{ |
2611 |
29 Aug 14 |
nicklas |
Wizard.setInputStatus('period', 'invalid', 'Not a valid from-date'); |
2611 |
29 Aug 14 |
nicklas |
return; |
2611 |
29 Aug 14 |
nicklas |
106 |
} |
2611 |
29 Aug 14 |
nicklas |
107 |
} |
2611 |
29 Aug 14 |
nicklas |
108 |
|
2611 |
29 Aug 14 |
nicklas |
if (toDate != '') |
2611 |
29 Aug 14 |
nicklas |
110 |
{ |
2611 |
29 Aug 14 |
nicklas |
toDate = Reggie.autoFillDate(toDate, true); |
2611 |
29 Aug 14 |
nicklas |
frm.todate.value = toDate; |
2611 |
29 Aug 14 |
nicklas |
if (!Dates.isDate(toDate, 'yyyyMMdd')) |
2611 |
29 Aug 14 |
nicklas |
114 |
{ |
2611 |
29 Aug 14 |
nicklas |
Wizard.setInputStatus('period', 'invalid', 'Not a valid to-date'); |
2611 |
29 Aug 14 |
nicklas |
return; |
2611 |
29 Aug 14 |
nicklas |
117 |
} |
2611 |
29 Aug 14 |
nicklas |
118 |
} |
2611 |
29 Aug 14 |
nicklas |
119 |
|
2611 |
29 Aug 14 |
nicklas |
if (toDate && fromDate) |
2611 |
29 Aug 14 |
nicklas |
121 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (fromDate > toDate) |
2611 |
29 Aug 14 |
nicklas |
123 |
{ |
2611 |
29 Aug 14 |
nicklas |
Wizard.setInputStatus('period', 'invalid', 'Invalid period') |
2611 |
29 Aug 14 |
nicklas |
return; |
2611 |
29 Aug 14 |
nicklas |
126 |
} |
2611 |
29 Aug 14 |
nicklas |
127 |
} |
2611 |
29 Aug 14 |
nicklas |
128 |
|
2611 |
29 Aug 14 |
nicklas |
Wizard.setInputStatus('period', 'valid'); |
2611 |
29 Aug 14 |
nicklas |
periodIsValid = true; |
2611 |
29 Aug 14 |
nicklas |
131 |
} |
2611 |
29 Aug 14 |
nicklas |
132 |
|
2611 |
29 Aug 14 |
nicklas |
report.sampleTypeOnChange = function() |
2611 |
29 Aug 14 |
nicklas |
134 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
var reportType = frm.reporttype.value; |
2611 |
29 Aug 14 |
nicklas |
var sampleType = frm.sampletype.value; |
2611 |
29 Aug 14 |
nicklas |
var tableAlternatives = frm.tablealternatives.value; |
2611 |
29 Aug 14 |
nicklas |
139 |
|
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
141 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (reportType == 'samplecount') |
2611 |
29 Aug 14 |
nicklas |
143 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Enable table alternatives menu |
2611 |
29 Aug 14 |
nicklas |
frm.tablealternatives.disabled = false; |
2611 |
29 Aug 14 |
nicklas |
// In principal this case should not exist when sample type has just been changed to 'blood' |
2611 |
29 Aug 14 |
nicklas |
if (tableAlternatives == 'blood_sample_table_with_filter') |
2611 |
29 Aug 14 |
nicklas |
148 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Enable blood sample type filter menu |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = false; |
2611 |
29 Aug 14 |
nicklas |
151 |
} |
2611 |
29 Aug 14 |
nicklas |
152 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
154 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Enable blood sample type filter menu |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = false; |
2611 |
29 Aug 14 |
nicklas |
157 |
} |
2611 |
29 Aug 14 |
nicklas |
158 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
160 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Disable table alternatives menu and reset option |
2611 |
29 Aug 14 |
nicklas |
frm.tablealternatives.selectedIndex = 0; |
2611 |
29 Aug 14 |
nicklas |
frm.tablealternatives.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
// Disable blood sample type filter menu and reset option |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.selectedIndex = 0; |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
167 |
} |
2611 |
29 Aug 14 |
nicklas |
168 |
} |
2611 |
29 Aug 14 |
nicklas |
169 |
|
2611 |
29 Aug 14 |
nicklas |
report.tableAlternativesOnChange = function() |
2611 |
29 Aug 14 |
nicklas |
171 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
var sampleType = frm.sampletype.value; |
2611 |
29 Aug 14 |
nicklas |
var tableAlternatives = frm.tablealternatives.value; |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'blood' && tableAlternatives == 'blood_sample_table_with_filter') |
2611 |
29 Aug 14 |
nicklas |
176 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Enable blood sample type filter menu |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = false; |
2611 |
29 Aug 14 |
nicklas |
179 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
181 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Disable blood sample type filter menu and reset option |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.selectedIndex = 0; |
2611 |
29 Aug 14 |
nicklas |
frm.bloodsamplefilter.disabled = true; |
2611 |
29 Aug 14 |
nicklas |
185 |
} |
2611 |
29 Aug 14 |
nicklas |
186 |
} |
2611 |
29 Aug 14 |
nicklas |
187 |
|
2611 |
29 Aug 14 |
nicklas |
report.submit = function() |
2611 |
29 Aug 14 |
nicklas |
189 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
191 |
|
2611 |
29 Aug 14 |
nicklas |
var url = '../SampleReport.servlet?ID='+App.getSessionId(); |
2611 |
29 Aug 14 |
nicklas |
url += '&cmd='+frm.reporttype.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&fdate='+frm.fromdate.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&tdate='+frm.todate.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&vtype='+frm.viewtype.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&stype='+frm.sampletype.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&tablealternatives='+frm.tablealternatives.value; |
2611 |
29 Aug 14 |
nicklas |
url += '&bloodsamplefilter='+frm.bloodsamplefilter.value; |
2611 |
29 Aug 14 |
nicklas |
200 |
|
3911 |
02 May 16 |
nicklas |
Wizard.showLoadingAnimation('Generating report...', frm.reporttype.value+'-progress'); |
2611 |
29 Aug 14 |
nicklas |
Wizard.asyncJsonRequest(url, report.onReportGenerated); |
2611 |
29 Aug 14 |
nicklas |
203 |
} |
2611 |
29 Aug 14 |
nicklas |
204 |
|
2611 |
29 Aug 14 |
nicklas |
report.onReportGenerated = function(response) |
2611 |
29 Aug 14 |
nicklas |
206 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportData = response.report; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPatientName = reportData.permissionDeniedForPatientName; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPad = reportData.permissionDeniedForPad; |
2611 |
29 Aug 14 |
nicklas |
210 |
|
2611 |
29 Aug 14 |
nicklas |
var reportTable; |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
var reportType = frm.reporttype.value; |
2611 |
29 Aug 14 |
nicklas |
var sampleType = frm.sampletype.value; |
2611 |
29 Aug 14 |
nicklas |
var tableAlternatives = frm.tablealternatives.value; |
2611 |
29 Aug 14 |
nicklas |
216 |
|
2611 |
29 Aug 14 |
nicklas |
if (reportData != null) |
2611 |
29 Aug 14 |
nicklas |
218 |
{ |
2611 |
29 Aug 14 |
nicklas |
if ('samplecount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
220 |
{ |
2611 |
29 Aug 14 |
nicklas |
reportTable = createItemCountReport(reportData, reportType); |
2611 |
29 Aug 14 |
nicklas |
222 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('consentcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
224 |
{ |
2611 |
29 Aug 14 |
nicklas |
reportTable = createConsentCountReport(reportData); |
2611 |
29 Aug 14 |
nicklas |
226 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('patientcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
228 |
{ |
2611 |
29 Aug 14 |
nicklas |
reportTable = createItemCountReport(reportData, reportType); |
2611 |
29 Aug 14 |
nicklas |
230 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('overviewreport' == reportType) |
2611 |
29 Aug 14 |
nicklas |
232 |
{ |
2611 |
29 Aug 14 |
nicklas |
reportTable = createOverviewReport(reportData); |
2611 |
29 Aug 14 |
nicklas |
234 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('missingsampledatareport' == reportType) |
2611 |
29 Aug 14 |
nicklas |
236 |
{ |
2611 |
29 Aug 14 |
nicklas |
reportTable = createMissingSampleDataReport(reportData); |
2611 |
29 Aug 14 |
nicklas |
238 |
} |
2611 |
29 Aug 14 |
nicklas |
239 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
241 |
{ |
2611 |
29 Aug 14 |
nicklas |
Wizard.setFatalError('No values could be found during given period'); |
2611 |
29 Aug 14 |
nicklas |
return; |
2611 |
29 Aug 14 |
nicklas |
244 |
} |
2611 |
29 Aug 14 |
nicklas |
245 |
|
2611 |
29 Aug 14 |
nicklas |
var reportDiv = Doc.element('reportdiv'); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportTable); |
2611 |
29 Aug 14 |
nicklas |
248 |
|
2611 |
29 Aug 14 |
nicklas |
// Optional extra tables |
2611 |
29 Aug 14 |
nicklas |
if ('samplecount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
251 |
{ |
2611 |
29 Aug 14 |
nicklas |
if ('blood' == sampleType && tableAlternatives == 'full_blood_sample_tables' && reportData != null) |
2611 |
29 Aug 14 |
nicklas |
253 |
{ |
2611 |
29 Aug 14 |
nicklas |
var spacer0 = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer0.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer0); |
2611 |
29 Aug 14 |
nicklas |
var spacer = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
// Follow-up |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp = reportData.reportFollowUp; |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUpTable = createItemCountReport(reportFollowUp, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportFollowUpTable); |
2611 |
29 Aug 14 |
nicklas |
// Not follow-up |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportNotFollowUp = reportData.reportNotFollowUp; |
2611 |
29 Aug 14 |
nicklas |
var reportNotFollowUpTable = createItemCountReport(reportNotFollowUp, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportNotFollowUpTable); |
2611 |
29 Aug 14 |
nicklas |
// Unknown |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportUnknown = reportData.reportUnknown; |
2611 |
29 Aug 14 |
nicklas |
var reportUnknownTable = createItemCountReport(reportUnknown, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportUnknownTable); |
2611 |
29 Aug 14 |
nicklas |
// PreNeo |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportPreNeo = reportData.reportPreNeo; |
2611 |
29 Aug 14 |
nicklas |
var reportPreNeoTable = createItemCountReport(reportPreNeo, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportPreNeoTable); |
2611 |
29 Aug 14 |
nicklas |
// PreOp |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportPreOp = reportData.reportPreOp; |
2611 |
29 Aug 14 |
nicklas |
var reportPreOpTable = createItemCountReport(reportPreOp, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportPreOpTable); |
2611 |
29 Aug 14 |
nicklas |
// FollowUp06 |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp06 = reportData.reportFollowUp06; |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp06Table = createItemCountReport(reportFollowUp06, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportFollowUp06Table); |
2611 |
29 Aug 14 |
nicklas |
// FollowUp12 |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp12 = reportData.reportFollowUp12; |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp12Table = createItemCountReport(reportFollowUp12, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportFollowUp12Table); |
2611 |
29 Aug 14 |
nicklas |
// FollowUp36 |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp36 = reportData.reportFollowUp36; |
2611 |
29 Aug 14 |
nicklas |
var reportFollowUp36Table = createItemCountReport(reportFollowUp36, reportType); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(reportFollowUp36Table); |
2611 |
29 Aug 14 |
nicklas |
307 |
// |
2611 |
29 Aug 14 |
nicklas |
// Reset # of blood samples with unknown site or creation date to that for unfiltered report |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = reportData.statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = reportData.statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
311 |
} |
2611 |
29 Aug 14 |
nicklas |
312 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('consentcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
314 |
{ |
2611 |
29 Aug 14 |
nicklas |
var spacer0 = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer0.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer0); |
2611 |
29 Aug 14 |
nicklas |
var spacer = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
// Table with consents in different categories with date, as well as consents with unknown date |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var hasDateTable = createConsentCountHasDateTable(reportData); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(hasDateTable); |
2611 |
29 Aug 14 |
nicklas |
// Table with consents in different categories with unknown date, as well as missing consents |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var unknownDateTable = createConsentCountUnknownDateTable(reportData); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(unknownDateTable); |
2611 |
29 Aug 14 |
nicklas |
329 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('overviewreport' == reportType) |
2611 |
29 Aug 14 |
nicklas |
331 |
{ |
2611 |
29 Aug 14 |
nicklas |
var spacer0 = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer0.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer0); |
2611 |
29 Aug 14 |
nicklas |
var spacer = document.createElement('text'); |
2611 |
29 Aug 14 |
nicklas |
spacer.innerHTML = "<BR>"; |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
// Table with patients having at least one item of different sample types |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var patientWithSampleTable = createOverviewPatientWithSampleTable(reportData); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(patientWithSampleTable); |
2611 |
29 Aug 14 |
nicklas |
// Table with patients having different combinations of sample types |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(spacer); |
2611 |
29 Aug 14 |
nicklas |
var patientDetailedTable = createOverviewPatientDetailedTable(reportData); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(patientDetailedTable); |
2611 |
29 Aug 14 |
nicklas |
346 |
} |
2611 |
29 Aug 14 |
nicklas |
// Summary list |
2611 |
29 Aug 14 |
nicklas |
var summaryList = document.createElement('ul'); |
2611 |
29 Aug 14 |
nicklas |
if (unknownSite == null) unknownSite = 0; |
2611 |
29 Aug 14 |
nicklas |
if (unknownCreation == null) unknownCreation = 0; |
2611 |
29 Aug 14 |
nicklas |
if ('samplecount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
352 |
{ |
2611 |
29 Aug 14 |
nicklas |
var samples = 'specimens'; |
2611 |
29 Aug 14 |
nicklas |
if ('nospecimen' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
355 |
{ |
2611 |
29 Aug 14 |
nicklas |
samples = '"no specimens"'; |
2611 |
29 Aug 14 |
nicklas |
357 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('blood' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
359 |
{ |
2611 |
29 Aug 14 |
nicklas |
samples = 'blood samples'; |
2611 |
29 Aug 14 |
nicklas |
361 |
} |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownSite + ' ' + samples + ' registered to unknown sites.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownCreation + ' ' + samples + ' without creation date. These are included in the \'Total\' column.')); |
2611 |
29 Aug 14 |
nicklas |
364 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('consentcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
366 |
{ |
2611 |
29 Aug 14 |
nicklas |
var numDuplicates = 0; |
2611 |
29 Aug 14 |
nicklas |
if (report != null) |
2611 |
29 Aug 14 |
nicklas |
369 |
{ |
2611 |
29 Aug 14 |
nicklas |
var statistics = reportData.statistics; |
2611 |
29 Aug 14 |
nicklas |
numDuplicates = statistics.duplicateKey; |
2611 |
29 Aug 14 |
nicklas |
372 |
} |
2611 |
29 Aug 14 |
nicklas |
if (numDuplicates == null) |
2611 |
29 Aug 14 |
nicklas |
374 |
{ |
2611 |
29 Aug 14 |
nicklas |
numDuplicates = 0; |
2611 |
29 Aug 14 |
nicklas |
376 |
} |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownSite + ' consents registered to unknown sites.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownCreation + ' consents without known date. These are included in the \'Total\' column.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(numMissing + ' missing consents for cases and blood samples. These are NOT included in the \'Total\' column.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(numDuplicates + ' duplicates ignored.')); |
2611 |
29 Aug 14 |
nicklas |
381 |
|
2611 |
29 Aug 14 |
nicklas |
var patientsWithMultipleDates = statistics.patientsWithMultipleDatesKey; |
2611 |
29 Aug 14 |
nicklas |
var counter = 0; |
2611 |
29 Aug 14 |
nicklas |
for (var key in patientsWithMultipleDates) |
2611 |
29 Aug 14 |
nicklas |
385 |
{ |
2611 |
29 Aug 14 |
nicklas |
counter++; |
2611 |
29 Aug 14 |
nicklas |
387 |
} |
2611 |
29 Aug 14 |
nicklas |
var patientsWithMultipleDatesText = counter + ' patients with multiple dates.'; |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(patientsWithMultipleDatesText)); |
2611 |
29 Aug 14 |
nicklas |
390 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('patientcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
392 |
{ |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownSite + ' patients registered to unknown sites.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownCreation + ' patients without creation date. These are included in the \'Total\' column.')); |
2611 |
29 Aug 14 |
nicklas |
395 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('overviewreport' == reportType) |
2611 |
29 Aug 14 |
nicklas |
397 |
{ |
2611 |
29 Aug 14 |
nicklas |
var numBloodNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
var numBloodFUNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
var numSpecimenNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
var numNoSpecimenNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
if (report != null) |
2611 |
29 Aug 14 |
nicklas |
403 |
{ |
2611 |
29 Aug 14 |
nicklas |
var statistics = reportData.statistics; |
2611 |
29 Aug 14 |
nicklas |
numBloodNoDate = statistics.bloodSampleNoDate; |
2611 |
29 Aug 14 |
nicklas |
numBloodFUNoDate = statistics.bloodSampleFollowUpNoDate; |
2611 |
29 Aug 14 |
nicklas |
numSpecimenNoDate = statistics.specimenNoDate; |
2611 |
29 Aug 14 |
nicklas |
numNoSpecimenNoDate = statistics.noSpecimenNoDate; |
2611 |
29 Aug 14 |
nicklas |
409 |
} |
2611 |
29 Aug 14 |
nicklas |
if (numBloodNoDate == null) |
2611 |
29 Aug 14 |
nicklas |
411 |
{ |
2611 |
29 Aug 14 |
nicklas |
numBloodNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
413 |
} |
2611 |
29 Aug 14 |
nicklas |
if (numBloodFUNoDate == null) |
2611 |
29 Aug 14 |
nicklas |
415 |
{ |
2611 |
29 Aug 14 |
nicklas |
numBloodFUNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
417 |
} |
2611 |
29 Aug 14 |
nicklas |
if (numSpecimenNoDate == null) |
2611 |
29 Aug 14 |
nicklas |
419 |
{ |
2611 |
29 Aug 14 |
nicklas |
numSpecimenNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
421 |
} |
2611 |
29 Aug 14 |
nicklas |
if (numNoSpecimenNoDate == null) |
2611 |
29 Aug 14 |
nicklas |
423 |
{ |
2611 |
29 Aug 14 |
nicklas |
numNoSpecimenNoDate = 0; |
2611 |
29 Aug 14 |
nicklas |
425 |
} |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(unknownSite + ' patients registered to unknown sites.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement(numPatientsNoSamples + ' patients with no samples.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Note: Consents of type "Yes" include consents without patient id (PAT#) or date.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Note: Data in column "Blood samples follow-up" are not affected by blood sample filter.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Note: Time period filter only affects sample items, patients and consents are derived from these.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Note: If creation date is unknown, registration date is used instead.')); |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Items with unknown creation date: Blood ' + numBloodNoDate + ', Blood follow-up ' + numBloodFUNoDate + ', Specimen ' + numSpecimenNoDate + ', No specimen ' + numNoSpecimenNoDate)); |
2611 |
29 Aug 14 |
nicklas |
433 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('missingsampledatareport' == reportType) |
2611 |
29 Aug 14 |
nicklas |
435 |
{ |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(getListElement('Note: Patient name is considered missing if either "all first names" or "family name" is missing.')); |
2611 |
29 Aug 14 |
nicklas |
if (permissionDeniedForPatientName) |
2611 |
29 Aug 14 |
nicklas |
438 |
{ |
2611 |
29 Aug 14 |
nicklas |
var patientNamePermissionWarning = document.createElement('li'); |
2611 |
29 Aug 14 |
nicklas |
patientNamePermissionWarning.innerHTML = 'Sorry, logged-in user does not have permission to check patient names.'; |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(patientNamePermissionWarning); |
2611 |
29 Aug 14 |
nicklas |
442 |
} |
2611 |
29 Aug 14 |
nicklas |
if (permissionDeniedForPad) |
2611 |
29 Aug 14 |
nicklas |
444 |
{ |
2611 |
29 Aug 14 |
nicklas |
var padPermissionWarning = document.createElement('li'); |
2611 |
29 Aug 14 |
nicklas |
padPermissionWarning.innerHTML = 'Sorry, logged-in user does not have permission to check PAD values.'; |
2611 |
29 Aug 14 |
nicklas |
summaryList.appendChild(padPermissionWarning); |
2611 |
29 Aug 14 |
nicklas |
448 |
} |
2611 |
29 Aug 14 |
nicklas |
449 |
} |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(summaryList); |
2611 |
29 Aug 14 |
nicklas |
if ('consentcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
452 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Add table with patients with consents with multiple dates |
2611 |
29 Aug 14 |
nicklas |
var multipleDatesTable = createConsentTablePatientsWithMultipleDates(reportData); |
2611 |
29 Aug 14 |
nicklas |
reportDiv.appendChild(multipleDatesTable); |
2611 |
29 Aug 14 |
nicklas |
456 |
} |
2611 |
29 Aug 14 |
nicklas |
457 |
|
2611 |
29 Aug 14 |
nicklas |
Doc.show('step-3'); |
2611 |
29 Aug 14 |
nicklas |
Doc.show('gorestart'); |
2611 |
29 Aug 14 |
nicklas |
460 |
} |
2611 |
29 Aug 14 |
nicklas |
461 |
|
2611 |
29 Aug 14 |
nicklas |
462 |
|
2611 |
29 Aug 14 |
nicklas |
report.printVersion = function() |
2611 |
29 Aug 14 |
nicklas |
464 |
{ |
2611 |
29 Aug 14 |
nicklas |
var frm = document.forms['reggie']; |
2611 |
29 Aug 14 |
nicklas |
var reportName = frm.reporttype[frm.reporttype.selectedIndex].text; |
2611 |
29 Aug 14 |
nicklas |
var printNote = '<b>Note!</b> For better printing set page orientation to <i>landscape</i>.'; |
2611 |
29 Aug 14 |
nicklas |
Reggie.openPrintWindow('step-3-content', reportName, 'landscape', printNote, '../', 'report.css'); |
2611 |
29 Aug 14 |
nicklas |
469 |
} |
2611 |
29 Aug 14 |
nicklas |
470 |
|
2611 |
29 Aug 14 |
nicklas |
return report; |
2611 |
29 Aug 14 |
nicklas |
472 |
}(); |
2611 |
29 Aug 14 |
nicklas |
473 |
|
2611 |
29 Aug 14 |
nicklas |
Doc.onLoad(Report.initPage); |
2611 |
29 Aug 14 |
nicklas |
475 |
|
2611 |
29 Aug 14 |
nicklas |
476 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols; |
2611 |
29 Aug 14 |
nicklas |
var unknownSite = 0; |
2611 |
29 Aug 14 |
nicklas |
var unknownCreation = 0; |
2611 |
29 Aug 14 |
nicklas |
var numMissing = 0; |
2611 |
29 Aug 14 |
nicklas |
var numPatientsNoSamples = 0; |
2611 |
29 Aug 14 |
nicklas |
482 |
|
2611 |
29 Aug 14 |
nicklas |
var month=new Array(12); |
2611 |
29 Aug 14 |
nicklas |
month[0]="Jan"; |
2611 |
29 Aug 14 |
nicklas |
month[1]="Feb"; |
2611 |
29 Aug 14 |
nicklas |
month[2]="Mar"; |
2611 |
29 Aug 14 |
nicklas |
month[3]="Apr"; |
2611 |
29 Aug 14 |
nicklas |
month[4]="May"; |
2611 |
29 Aug 14 |
nicklas |
month[5]="Jun"; |
2611 |
29 Aug 14 |
nicklas |
month[6]="Jul"; |
2611 |
29 Aug 14 |
nicklas |
month[7]="Aug"; |
2611 |
29 Aug 14 |
nicklas |
month[8]="Sep"; |
2611 |
29 Aug 14 |
nicklas |
month[9]="Oct"; |
2611 |
29 Aug 14 |
nicklas |
month[10]="Nov"; |
2611 |
29 Aug 14 |
nicklas |
month[11]="Dec"; |
2611 |
29 Aug 14 |
nicklas |
496 |
|
2611 |
29 Aug 14 |
nicklas |
497 |
|
2611 |
29 Aug 14 |
nicklas |
498 |
|
2611 |
29 Aug 14 |
nicklas |
function createMissingConsentDataSampleListPreview(allLines, previewTitle, previewList) |
2611 |
29 Aug 14 |
nicklas |
500 |
{ |
2611 |
29 Aug 14 |
nicklas |
var numCases = allLines.length - 2; // First line is a header line |
2611 |
29 Aug 14 |
nicklas |
502 |
|
2611 |
29 Aug 14 |
nicklas |
var html = '<tr><th>'+allLines[0].replace(/\t/g, '</th><th>')+'</th></tr>'; |
2611 |
29 Aug 14 |
nicklas |
// Check last column for the 'Consent' value |
2611 |
29 Aug 14 |
nicklas |
var numConsentWithoutDate = 0; |
2611 |
29 Aug 14 |
nicklas |
var numMissingConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
var numYesConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
var numNoConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
var numNotAskedConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
for (var i = 1 ; i <= numCases; i++) |
2611 |
29 Aug 14 |
nicklas |
511 |
{ |
2611 |
29 Aug 14 |
nicklas |
var line = allLines[i]; |
2611 |
29 Aug 14 |
nicklas |
var cols = line.split(/\t/); |
2611 |
29 Aug 14 |
nicklas |
var consent = cols[cols.length-1]; |
2611 |
29 Aug 14 |
nicklas |
var rowClass = ''; |
2611 |
29 Aug 14 |
nicklas |
if (consent == null || consent == 'null') |
2611 |
29 Aug 14 |
nicklas |
517 |
{ |
2611 |
29 Aug 14 |
nicklas |
rowClass = 'consent-warning'; |
2611 |
29 Aug 14 |
nicklas |
numMissingConsent++; |
2611 |
29 Aug 14 |
nicklas |
520 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (consent == 'Yes') |
2611 |
29 Aug 14 |
nicklas |
522 |
{ |
2611 |
29 Aug 14 |
nicklas |
numYesConsent++; |
2611 |
29 Aug 14 |
nicklas |
524 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (consent == 'No') |
2611 |
29 Aug 14 |
nicklas |
526 |
{ |
2611 |
29 Aug 14 |
nicklas |
numNoConsent++; |
2611 |
29 Aug 14 |
nicklas |
528 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (consent == 'Not asked') |
2611 |
29 Aug 14 |
nicklas |
530 |
{ |
2611 |
29 Aug 14 |
nicklas |
numNotAskedConsent++; |
2611 |
29 Aug 14 |
nicklas |
532 |
} |
2611 |
29 Aug 14 |
nicklas |
html += '<tr class="'+rowClass+'"><td>'+cols.join('</td><td>')+'</td></tr>'; |
2611 |
29 Aug 14 |
nicklas |
534 |
} |
2611 |
29 Aug 14 |
nicklas |
numConsentWithoutDate = numCases - numMissingConsent; |
2611 |
29 Aug 14 |
nicklas |
536 |
|
2611 |
29 Aug 14 |
nicklas |
previewTitle.innerHTML = numCases + ' Samples = ' + numConsentWithoutDate + ' unknown date (' + numYesConsent + ' Yes, ' + numNoConsent + ' No, ' + numNotAskedConsent + ' Not asked) + ' + numMissingConsent + ' missing consent'; |
2611 |
29 Aug 14 |
nicklas |
previewList.innerHTML = '<table>'+html+'</table>'; |
2842 |
20 Oct 14 |
nicklas |
Doc.show('previewWrapper'); |
2611 |
29 Aug 14 |
nicklas |
540 |
} |
2611 |
29 Aug 14 |
nicklas |
541 |
|
2611 |
29 Aug 14 |
nicklas |
function createMissingDataSampleListPreview(allLines, sampleTypes, previewTitle, previewList) |
2611 |
29 Aug 14 |
nicklas |
543 |
{ |
2611 |
29 Aug 14 |
nicklas |
var numCases = allLines.length - 2; // First line is a header line |
2611 |
29 Aug 14 |
nicklas |
var numSpecimen = 0; |
2611 |
29 Aug 14 |
nicklas |
var numNoSpecimen = 0; |
2611 |
29 Aug 14 |
nicklas |
547 |
|
2611 |
29 Aug 14 |
nicklas |
var html = '<tr><th>'+allLines[0].replace(/\t/g, '</th><th>')+'</th></tr>'; |
2611 |
29 Aug 14 |
nicklas |
// Check second column for the 'Subtype' value |
2611 |
29 Aug 14 |
nicklas |
var numNoConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
var numMissingConsent = 0; |
2611 |
29 Aug 14 |
nicklas |
for (var i = 1 ; i <= numCases; i++) |
2611 |
29 Aug 14 |
nicklas |
553 |
{ |
2611 |
29 Aug 14 |
nicklas |
var line = allLines[i]; |
2611 |
29 Aug 14 |
nicklas |
var cols = line.split(/\t/); |
2611 |
29 Aug 14 |
nicklas |
var sampleSubtype = cols[1]; |
2611 |
29 Aug 14 |
nicklas |
if (sampleSubtype == 'Specimen') |
2611 |
29 Aug 14 |
nicklas |
558 |
{ |
2611 |
29 Aug 14 |
nicklas |
numSpecimen++; |
2611 |
29 Aug 14 |
nicklas |
560 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleSubtype == 'NoSpecimen') |
2611 |
29 Aug 14 |
nicklas |
562 |
{ |
2611 |
29 Aug 14 |
nicklas |
numNoSpecimen++; |
2611 |
29 Aug 14 |
nicklas |
564 |
} |
2611 |
29 Aug 14 |
nicklas |
var rowClass = ''; |
2611 |
29 Aug 14 |
nicklas |
html += '<tr class="'+rowClass+'"><td>'+cols.join('</td><td>')+'</td></tr>'; |
2611 |
29 Aug 14 |
nicklas |
567 |
} |
2611 |
29 Aug 14 |
nicklas |
568 |
|
2611 |
29 Aug 14 |
nicklas |
previewTitle.innerHTML = 'Sample type(s) - ' + sampleTypes + ' (' + numCases + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (sampleTypes == 'Specimen' || sampleTypes == 'No specimen') |
2611 |
29 Aug 14 |
nicklas |
571 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Report the number of each subtype for 'Specimen/No specimen' |
2611 |
29 Aug 14 |
nicklas |
previewTitle.innerHTML = 'Sample type(s) - Specimen (' + numSpecimen + ')/No specimen (' + numNoSpecimen + ') Total (' + numCases + ')'; |
2611 |
29 Aug 14 |
nicklas |
574 |
} |
2611 |
29 Aug 14 |
nicklas |
previewList.innerHTML = '<table>'+html+'</table>'; |
2842 |
20 Oct 14 |
nicklas |
Doc.show('previewWrapper'); |
2611 |
29 Aug 14 |
nicklas |
577 |
} |
2611 |
29 Aug 14 |
nicklas |
578 |
|
2611 |
29 Aug 14 |
nicklas |
function createItemCountReport(report, reportType) |
2611 |
29 Aug 14 |
nicklas |
580 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var psdString = report.periodBeginDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var periodStartDate = dateStrToDate(psdString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
590 |
|
2611 |
29 Aug 14 |
nicklas |
var viewType = report.viewType; |
2611 |
29 Aug 14 |
nicklas |
var sampleType = report.sampleType; |
2611 |
29 Aug 14 |
nicklas |
var tableAlternatives = report.tableAlternatives; |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilter = report.bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
595 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRowYear = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
599 |
|
2611 |
29 Aug 14 |
nicklas |
var headerText = '# Items by '; |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
if ('samplecount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
605 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = '# Specimens by '; |
2611 |
29 Aug 14 |
nicklas |
if ('nospecimen' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
608 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = '# "No specimens" by '; |
2611 |
29 Aug 14 |
nicklas |
610 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('blood' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
612 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = '# Blood samples by '; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter != null && bloodSampleFilter != 'none') |
2611 |
29 Aug 14 |
nicklas |
615 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = getBloodSampleFilterDisplayText(bloodSampleFilter); |
2611 |
29 Aug 14 |
nicklas |
headerText = '# Blood samples of type \'' + bloodSampleFilterDisplayText + '\' by '; |
2611 |
29 Aug 14 |
nicklas |
618 |
} |
2611 |
29 Aug 14 |
nicklas |
619 |
} |
2611 |
29 Aug 14 |
nicklas |
620 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('patientcount' == reportType) |
2611 |
29 Aug 14 |
nicklas |
622 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = '# Patients by '; |
2611 |
29 Aug 14 |
nicklas |
624 |
} |
2611 |
29 Aug 14 |
nicklas |
if (viewType == 'WEEK') |
2611 |
29 Aug 14 |
nicklas |
626 |
{ |
2611 |
29 Aug 14 |
nicklas |
var startWeek = getISOWeekNumber(periodStartDate); |
2611 |
29 Aug 14 |
nicklas |
var endWeek = getISOWeekNumber(endDate); |
2611 |
29 Aug 14 |
nicklas |
var tempDate = new Date(periodStartDate.getFullYear(), periodStartDate.getMonth(), periodStartDate.getDate()-periodStartDate.getDay()+1); |
2611 |
29 Aug 14 |
nicklas |
numCols = 0; |
2611 |
29 Aug 14 |
nicklas |
while (tempDate < endDate) |
2611 |
29 Aug 14 |
nicklas |
632 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols++; |
2611 |
29 Aug 14 |
nicklas |
tempDate.setDate(tempDate.getDate()+7); |
2611 |
29 Aug 14 |
nicklas |
635 |
} |
2611 |
29 Aug 14 |
nicklas |
headerText += 'week'; |
2611 |
29 Aug 14 |
nicklas |
637 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'MONTH') |
2611 |
29 Aug 14 |
nicklas |
639 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols = (endDate.getFullYear()-periodStartDate.getFullYear())*12 + endDate.getMonth()-periodStartDate.getMonth()+1; |
2611 |
29 Aug 14 |
nicklas |
headerText += 'month'; |
2611 |
29 Aug 14 |
nicklas |
642 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'QUARTER') |
2611 |
29 Aug 14 |
nicklas |
644 |
{ |
2611 |
29 Aug 14 |
nicklas |
// First year (from start quarter to end of year) |
2611 |
29 Aug 14 |
nicklas |
numCols = 4 - Math.floor(periodStartDate.getMonth()/3); |
2611 |
29 Aug 14 |
nicklas |
// Last year (from start of year to end quarter) |
2611 |
29 Aug 14 |
nicklas |
numCols += Math.floor(endDate.getMonth()/3)+1; |
2611 |
29 Aug 14 |
nicklas |
// If first and last year is the same, subtract 4 quarters |
2611 |
29 Aug 14 |
nicklas |
if (endDate.getFullYear() - periodStartDate.getFullYear() == 0) |
2611 |
29 Aug 14 |
nicklas |
651 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols -= 4; |
2611 |
29 Aug 14 |
nicklas |
653 |
} |
2611 |
29 Aug 14 |
nicklas |
// Full years between start and end dates |
2611 |
29 Aug 14 |
nicklas |
if((endDate.getFullYear() - periodStartDate.getFullYear()) > 1) |
2611 |
29 Aug 14 |
nicklas |
656 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols += 4 * (endDate.getFullYear() - periodStartDate.getFullYear()-1); |
2611 |
29 Aug 14 |
nicklas |
658 |
} |
2611 |
29 Aug 14 |
nicklas |
headerText += 'quarter'; |
2611 |
29 Aug 14 |
nicklas |
660 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
662 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols = endDate.getFullYear() - periodStartDate.getFullYear() + 1; |
2611 |
29 Aug 14 |
nicklas |
headerText += 'year'; |
2611 |
29 Aug 14 |
nicklas |
665 |
} |
2611 |
29 Aug 14 |
nicklas |
666 |
|
2611 |
29 Aug 14 |
nicklas |
// Set table header |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (between ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
670 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
672 |
} |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+5))); |
2611 |
29 Aug 14 |
nicklas |
674 |
|
2611 |
29 Aug 14 |
nicklas |
// Sub headers |
2611 |
29 Aug 14 |
nicklas |
// Only if each datacol is less then a year |
2611 |
29 Aug 14 |
nicklas |
if (viewType != 'YEAR') |
2611 |
29 Aug 14 |
nicklas |
678 |
{ |
2611 |
29 Aug 14 |
nicklas |
subHeaderRowYear.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
addYearSubHeaders(periodStartDate, endDate, subHeaderRowYear, viewType); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRowYear.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
682 |
} |
2611 |
29 Aug 14 |
nicklas |
683 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
691 |
|
2611 |
29 Aug 14 |
nicklas |
if (viewType == 'MONTH') addMonthColumnHeaders(columnHeaderRow, periodStartDate); |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'WEEK') addWeekColumnHeaders(columnHeaderRow, periodStartDate); |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'QUARTER') addQuarterColumnHeaders(columnHeaderRow, periodStartDate); |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'YEAR') addYearSubHeaders(periodStartDate, endDate, columnHeaderRow, viewType); |
2611 |
29 Aug 14 |
nicklas |
696 |
|
2611 |
29 Aug 14 |
nicklas |
697 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Sum', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Total', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
700 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRowYear); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
705 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
708 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
var sortedKeyArray = createSortedPeriodArray(report, numCols); |
2611 |
29 Aug 14 |
nicklas |
var key; |
2611 |
29 Aug 14 |
nicklas |
for (arrayIndex in sortedKeyArray) |
2611 |
29 Aug 14 |
nicklas |
719 |
{ |
2611 |
29 Aug 14 |
nicklas |
key = sortedKeyArray[arrayIndex]; |
2611 |
29 Aug 14 |
nicklas |
var data = getJSONData(sitesCombined, key, 0); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with sample sum for site for selected time period |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data,'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
724 |
} |
2611 |
29 Aug 14 |
nicklas |
// Get total number of samples for site for the selected time period |
2611 |
29 Aug 14 |
nicklas |
var sum = getJSONData(statistics, 'sumKey', 0); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of samples for site for the selected time period |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(sum, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Get total number of samples for all sites, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
var total = getJSONData(statistics, 'totalKey', 0); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of samples for all sites, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(total, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
734 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
736 |
} |
2611 |
29 Aug 14 |
nicklas |
737 |
|
2611 |
29 Aug 14 |
nicklas |
function createConsentCountReport(report) |
2611 |
29 Aug 14 |
nicklas |
739 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
747 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
751 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 5; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = '# Consent forms of different types for cases and blood samples'; |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
760 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
762 |
} |
4177 |
25 Oct 16 |
nicklas |
headerText += '\nConsents without date are included if the registration date is within the selected time period'; |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+3))); |
2611 |
29 Aug 14 |
nicklas |
765 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
768 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Yes', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('No', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Not asked', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
773 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
781 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Sum', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Total', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
787 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
792 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToConsentTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
795 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumDateIgnoredKey = 'sumDateIgnoredKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
806 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'yes', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'no', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'notAsked', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
813 |
} |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents with chosen restrictions |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, sumDateIgnoredKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents, regardless of restrictions |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
822 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
824 |
} |
2611 |
29 Aug 14 |
nicklas |
825 |
|
2611 |
29 Aug 14 |
nicklas |
function createConsentCountHasDateTable(report) |
2611 |
29 Aug 14 |
nicklas |
827 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
835 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
839 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 5; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = '# Consent forms of different types for cases and blood samples'; |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
848 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
850 |
} |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+5))); |
2611 |
29 Aug 14 |
nicklas |
852 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
855 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Yes', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Yes', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('No', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Not asked', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Unknown date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
862 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
870 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(has PAT#)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(no PAT#)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(has date)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(has date)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Sum', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Total', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
878 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
883 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToConsentTableHasDate(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
886 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
897 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'yesPatientExistsDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'yesPatientUnknownDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'noDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'notAskedDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, noDateKey, sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
908 |
} |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents with chosen restrictions |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, sumKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents, regardless of restrictions |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
917 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
919 |
} |
2611 |
29 Aug 14 |
nicklas |
920 |
|
2611 |
29 Aug 14 |
nicklas |
function createConsentCountUnknownDateTable(report) |
2611 |
29 Aug 14 |
nicklas |
922 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
927 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 4; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = '# Consent forms of different types for cases and blood samples with unknown consent date, as well as items with missing consents'; |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+5))); |
2611 |
29 Aug 14 |
nicklas |
932 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
935 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Yes', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('No', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Not asked', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Missing', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
941 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
949 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(no date)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(no date)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('(no date)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Sum', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Total', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
956 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
961 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToConsentTableUnknownDate(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
964 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites |
2611 |
29 Aug 14 |
nicklas |
var noDateOrMissingKey = 'noDateOrMissing'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
975 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'yesDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'noDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'notAskedDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(sitesCombined, 'missing', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents with chosen restrictions |
2611 |
29 Aug 14 |
nicklas |
var noDateOrMissingKey = 'noDateOrMissing'; |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, noDateOrMissingKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Add entry with total number of consents, regardless of restrictions |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
992 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
994 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
996 |
} |
2611 |
29 Aug 14 |
nicklas |
997 |
|
2611 |
29 Aug 14 |
nicklas |
function createOverviewReport(report) |
2611 |
29 Aug 14 |
nicklas |
999 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilter = report.bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
1008 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeader2Row = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
1013 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 7; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = 'Number of items of different kinds'; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter != null && bloodSampleFilter != 'none') |
2611 |
29 Aug 14 |
nicklas |
1018 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = getBloodSampleFilterDisplayText(bloodSampleFilter); |
2611 |
29 Aug 14 |
nicklas |
headerText += ', blood sample type = \'' + bloodSampleFilterDisplayText + '\''; |
2611 |
29 Aug 14 |
nicklas |
1021 |
} |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
1027 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
1029 |
} |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+3))); |
2611 |
29 Aug 14 |
nicklas |
1031 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
1034 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Blood', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Blood', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Specimens', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('No specimens', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Consents', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Consents', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1042 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader 2 |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
1045 |
|
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('samples', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('samples', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(Yes)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('missing', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1053 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
1061 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('follow-up', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1069 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeader2Row); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
1075 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToOverviewTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
1078 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
// Get values for use in summary section |
2611 |
29 Aug 14 |
nicklas |
numPatientsNoSamples = statistics.patientNoSamples; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
1091 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patient'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'bloodSample'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'bloodSampleFollowUp'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'specimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'noSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'consentYes'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'consentMissing'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1106 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
1108 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
1110 |
} |
2611 |
29 Aug 14 |
nicklas |
1111 |
|
2611 |
29 Aug 14 |
nicklas |
function createOverviewPatientWithSampleTable(report) |
2611 |
29 Aug 14 |
nicklas |
1113 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilter = report.bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
1122 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeader2Row = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
1127 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 7; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = 'Patients having a sample type item'; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter != null && bloodSampleFilter != 'none') |
2611 |
29 Aug 14 |
nicklas |
1132 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = getBloodSampleFilterDisplayText(bloodSampleFilter); |
2611 |
29 Aug 14 |
nicklas |
headerText += ', blood sample type = \'' + bloodSampleFilterDisplayText + '\''; |
2611 |
29 Aug 14 |
nicklas |
1135 |
} |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nColumn entries are non-exclusive, i.e. a patient may be represented in several columns'; |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+3))); |
2611 |
29 Aug 14 |
nicklas |
1142 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
1145 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('with', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('with', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('with', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('with', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1153 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader 2 |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
1156 |
|
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('total', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('blood', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('follow-up', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('specimen(s)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('no specimen(s)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1164 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
1172 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('sample(s)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('blood s.', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1180 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeader2Row); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
1186 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToOverviewPatientWithSampleTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
1189 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
// Get values for use in summary section |
2611 |
29 Aug 14 |
nicklas |
numPatientsNoSamples = statistics.patientNoSamples; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
1202 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patient'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientWithBloodSample'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientWithFollowUpBloodSample'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientWithSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientWithNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1213 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
1215 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
1217 |
} |
2611 |
29 Aug 14 |
nicklas |
1218 |
|
2611 |
29 Aug 14 |
nicklas |
function createOverviewPatientDetailedTable(report) |
2611 |
29 Aug 14 |
nicklas |
1220 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilter = report.bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
1228 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeader2Row = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
1233 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 8; |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = 'Patient records of different kinds'; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter != null && bloodSampleFilter != 'none') |
2611 |
29 Aug 14 |
nicklas |
1238 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = getBloodSampleFilterDisplayText(bloodSampleFilter); |
2611 |
29 Aug 14 |
nicklas |
headerText += ', blood sample type = \'' + bloodSampleFilterDisplayText + '\''; |
2611 |
29 Aug 14 |
nicklas |
1241 |
} |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
1246 |
/* |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
1248 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
1250 |
} |
2611 |
29 Aug 14 |
nicklas |
1251 |
*/ |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+2))); |
2611 |
29 Aug 14 |
nicklas |
1253 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
1256 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
//subHeaderRow.appendChild(getTableCellElement('Patients', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1266 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader 2 |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader', 2)); |
2611 |
29 Aug 14 |
nicklas |
1269 |
|
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(blood', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(spec.', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(no spec.', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(blood and', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(blood and', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(spec. and', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('(blood, spec.,', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
//subHeader2Row.appendChild(getTableCellElement('(no samples)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeader2Row.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1279 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
//var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
//columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
1287 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('only)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('only)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('only)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('specimens)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('no spec.)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('no spec.)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('and no spec.)', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
//columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1296 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Sum', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1298 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeader2Row); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
1304 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToOverviewPatientDetailedTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
1307 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
// Get values for use in summary section |
2611 |
29 Aug 14 |
nicklas |
numPatientsNoSamples = statistics.patientNoSamples; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
1320 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientBloodSampleOnly'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientSpecimenOnly'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientNoSpecimenOnly'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientBloodSampleAndSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientBloodSampleAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientSpecimenAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'patientBloodSampleAndSpecimenAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
//data = getJSONData(sitesCombined, 'patientNoSamples'); |
2611 |
29 Aug 14 |
nicklas |
//sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'sumKey'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1339 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
1341 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
1343 |
} |
2611 |
29 Aug 14 |
nicklas |
1344 |
|
2611 |
29 Aug 14 |
nicklas |
function createMissingSampleDataReport(report) |
2611 |
29 Aug 14 |
nicklas |
1346 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var sdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var edString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.latestDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = dateStrToDate(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDate = dateStrToDate(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDate = dateStrToDate(ldString); |
2611 |
29 Aug 14 |
nicklas |
1354 |
|
2611 |
29 Aug 14 |
nicklas |
var sampleType = report.sampleType; |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilter = report.bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPatientName = report.permissionDeniedForPatientName; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPad = report.permissionDeniedForPad; |
2611 |
29 Aug 14 |
nicklas |
1359 |
|
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var subHeader2Row = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
1364 |
|
2611 |
29 Aug 14 |
nicklas |
var numCols = 5; |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'specimen') |
2611 |
29 Aug 14 |
nicklas |
1367 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols = 5; |
2611 |
29 Aug 14 |
nicklas |
1369 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'nospecimen') |
2611 |
29 Aug 14 |
nicklas |
1371 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols = 4; |
2611 |
29 Aug 14 |
nicklas |
1373 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
1375 |
{ |
2611 |
29 Aug 14 |
nicklas |
numCols = 3; |
2611 |
29 Aug 14 |
nicklas |
1377 |
} |
2611 |
29 Aug 14 |
nicklas |
var numDecimals = 0; |
2611 |
29 Aug 14 |
nicklas |
var headerText = 'Number of missing specimen items of different kinds'; |
2611 |
29 Aug 14 |
nicklas |
if ('nospecimen' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
1381 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = 'Number of missing "no specimen" items of different kinds'; |
2611 |
29 Aug 14 |
nicklas |
1383 |
} |
2611 |
29 Aug 14 |
nicklas |
else if ('blood' == sampleType) |
2611 |
29 Aug 14 |
nicklas |
1385 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText = 'Number of missing blood sample items of different kinds'; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter != null && bloodSampleFilter != 'none') |
2611 |
29 Aug 14 |
nicklas |
1388 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = getBloodSampleFilterDisplayText(bloodSampleFilter); |
2611 |
29 Aug 14 |
nicklas |
headerText += ', blood sample type = \'' + bloodSampleFilterDisplayText + '\''; |
2611 |
29 Aug 14 |
nicklas |
1391 |
} |
2611 |
29 Aug 14 |
nicklas |
1392 |
} |
2611 |
29 Aug 14 |
nicklas |
var startDateStr = addHyphensToDateString(sdString); |
2611 |
29 Aug 14 |
nicklas |
var endDateStr = addHyphensToDateString(edString); |
2611 |
29 Aug 14 |
nicklas |
var latestDateStr = addHyphensToDateString(ldString); |
2611 |
29 Aug 14 |
nicklas |
headerText += ' (betweeen ' + startDateStr + ' and ' + endDateStr + ')'; |
2611 |
29 Aug 14 |
nicklas |
if (latestDate != null) |
2611 |
29 Aug 14 |
nicklas |
1398 |
{ |
2611 |
29 Aug 14 |
nicklas |
headerText += '\nLast registration ' + latestDateStr; |
2611 |
29 Aug 14 |
nicklas |
1400 |
} |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', (numCols+3))); |
2611 |
29 Aug 14 |
nicklas |
1402 |
|
2611 |
29 Aug 14 |
nicklas |
// Subheader |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('', 'reportsubheader', 3)); |
2611 |
29 Aug 14 |
nicklas |
1405 |
|
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Patient', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'specimen') |
2611 |
29 Aug 14 |
nicklas |
1408 |
{ |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('PAD', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Laterality', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Sampling', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('RNALater', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1413 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'nospecimen') |
2611 |
29 Aug 14 |
nicklas |
1415 |
{ |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('PAD', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Laterality', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Sampling', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1419 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
1421 |
{ |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Blood sampling', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
subHeaderRow.appendChild(getTableCellElement('Blood freezer', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1424 |
} |
2611 |
29 Aug 14 |
nicklas |
1425 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
var siteHeader = getTableCellElement('Site', 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var startDateHeader = getTableCellElement('Start date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
var latestDateHeader = getTableCellElement('Latest date','reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(siteHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(startDateHeader); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(latestDateHeader); |
2611 |
29 Aug 14 |
nicklas |
1433 |
|
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('name', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'specimen') |
2611 |
29 Aug 14 |
nicklas |
1436 |
{ |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('reference', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1441 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'nospecimen') |
2611 |
29 Aug 14 |
nicklas |
1443 |
{ |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('reference', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1447 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
1449 |
{ |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('date', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1452 |
} |
2611 |
29 Aug 14 |
nicklas |
1453 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(subHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
1458 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
addDataRowsToMissingSampleDataTable(report, reportTable); |
2611 |
29 Aug 14 |
nicklas |
1461 |
|
2611 |
29 Aug 14 |
nicklas |
// Add a row with the combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var sitesCombinedRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('Sites combined', 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement('', 'colsummary', 2)); |
2611 |
29 Aug 14 |
nicklas |
// Get combined numbers for all sites for each period |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sitesCombined = statistics.sitesCombinedKey; |
2611 |
29 Aug 14 |
nicklas |
if (sitesCombined != null) |
2611 |
29 Aug 14 |
nicklas |
1472 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPatientName) |
2611 |
29 Aug 14 |
nicklas |
1474 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingPatientName'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1477 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1479 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1482 |
} |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'specimen') |
2611 |
29 Aug 14 |
nicklas |
1484 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPad) |
2611 |
29 Aug 14 |
nicklas |
1486 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingPadReference'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1489 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1491 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1494 |
} |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingLaterality'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingRnaLaterDateTime'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1501 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'nospecimen') |
2611 |
29 Aug 14 |
nicklas |
1503 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPad) |
2611 |
29 Aug 14 |
nicklas |
1505 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingPadReference'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1508 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1510 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1513 |
} |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingLaterality'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1518 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
1520 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingBloodSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(sitesCombined, 'missingBloodFreezerDateTime'); |
2611 |
29 Aug 14 |
nicklas |
sitesCombinedRow.appendChild(getTableCellElement(data, 'colsummary')); |
2611 |
29 Aug 14 |
nicklas |
1525 |
} |
2611 |
29 Aug 14 |
nicklas |
1526 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(sitesCombinedRow); |
2611 |
29 Aug 14 |
nicklas |
1528 |
|
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
1530 |
} |
2611 |
29 Aug 14 |
nicklas |
1531 |
|
2611 |
29 Aug 14 |
nicklas |
function createConsentTablePatientsWithMultipleDates(report) |
2611 |
29 Aug 14 |
nicklas |
1533 |
{ |
2611 |
29 Aug 14 |
nicklas |
var multipleDatesTable = getReportTable(); |
2611 |
29 Aug 14 |
nicklas |
var headerRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var columnHeaderRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
1537 |
|
2611 |
29 Aug 14 |
nicklas |
// Table header |
2611 |
29 Aug 14 |
nicklas |
var numCols = 3; |
2611 |
29 Aug 14 |
nicklas |
var headerText = 'Consent forms with multiple dates for same patient'; |
2611 |
29 Aug 14 |
nicklas |
headerRow.appendChild(getTableCellElement(headerText, 'reportheader', numCols)); |
2611 |
29 Aug 14 |
nicklas |
1542 |
|
2611 |
29 Aug 14 |
nicklas |
// Columnsheader |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Patient ID', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Date 1', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement('Date 2', 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
1547 |
|
2611 |
29 Aug 14 |
nicklas |
// Build table |
2611 |
29 Aug 14 |
nicklas |
multipleDatesTable.appendChild(headerRow); |
2611 |
29 Aug 14 |
nicklas |
multipleDatesTable.appendChild(columnHeaderRow); |
2611 |
29 Aug 14 |
nicklas |
1551 |
|
2611 |
29 Aug 14 |
nicklas |
// Data rows |
2611 |
29 Aug 14 |
nicklas |
if (report != null) |
2611 |
29 Aug 14 |
nicklas |
1554 |
{ |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sessionId = statistics.sessionIdKey; |
2611 |
29 Aug 14 |
nicklas |
var patientsWithMultipleDates = statistics.patientsWithMultipleDatesKey; |
2611 |
29 Aug 14 |
nicklas |
var patientnamePatientid = statistics.patientnamePatientidKey; |
2611 |
29 Aug 14 |
nicklas |
for (var patientName in patientsWithMultipleDates) |
2611 |
29 Aug 14 |
nicklas |
1560 |
{ |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
// Add patient name to table |
2611 |
29 Aug 14 |
nicklas |
var patientIdStr = patientnamePatientid[patientName]; |
2615 |
01 Sep 14 |
nicklas |
var patientLink = createLink(patientName, patientIdStr, 'BIOSOURCE', 'View this sample'); |
2615 |
01 Sep 14 |
nicklas |
var tableCol = createTableCellElementChild(patientLink, 'reportdata'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
// Add dates to table in chronological order |
2611 |
29 Aug 14 |
nicklas |
var dateSet = patientsWithMultipleDates[patientName]; |
2611 |
29 Aug 14 |
nicklas |
var dateStr1 = ''; |
2611 |
29 Aug 14 |
nicklas |
var dateStr2 = ''; |
2611 |
29 Aug 14 |
nicklas |
for (var key in dateSet) |
2611 |
29 Aug 14 |
nicklas |
1572 |
{ |
2611 |
29 Aug 14 |
nicklas |
var dateStr = dateSet[key]; |
2611 |
29 Aug 14 |
nicklas |
if (dateStr1 == '') |
2611 |
29 Aug 14 |
nicklas |
1575 |
{ |
2611 |
29 Aug 14 |
nicklas |
dateStr1 = dateStr; |
2611 |
29 Aug 14 |
nicklas |
1577 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (dateStr > dateStr1) |
2611 |
29 Aug 14 |
nicklas |
1579 |
{ |
2611 |
29 Aug 14 |
nicklas |
dateStr2 = dateStr; |
2611 |
29 Aug 14 |
nicklas |
1581 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1583 |
{ |
2611 |
29 Aug 14 |
nicklas |
dateStr2 = dateStr1; |
2611 |
29 Aug 14 |
nicklas |
dateStr1 = dateStr; |
2611 |
29 Aug 14 |
nicklas |
1586 |
} |
2611 |
29 Aug 14 |
nicklas |
1587 |
} |
2611 |
29 Aug 14 |
nicklas |
var dateCol = ''; |
2611 |
29 Aug 14 |
nicklas |
dateCol = getTableCellElement(dateStr1, 'reportdata'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(dateCol); |
2611 |
29 Aug 14 |
nicklas |
dateCol = getTableCellElement(dateStr2, 'reportdata'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(dateCol); |
2611 |
29 Aug 14 |
nicklas |
multipleDatesTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1594 |
} |
2611 |
29 Aug 14 |
nicklas |
1595 |
} |
2611 |
29 Aug 14 |
nicklas |
1596 |
|
2611 |
29 Aug 14 |
nicklas |
return multipleDatesTable; |
2611 |
29 Aug 14 |
nicklas |
1598 |
} |
2611 |
29 Aug 14 |
nicklas |
1599 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToConsentTable(report, reportTable, numDecimals) |
2611 |
29 Aug 14 |
nicklas |
1601 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1607 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1612 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumDateIgnoredKey = 'sumDateIgnoredKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1625 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'yes', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'no', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'notAsked', sumDateIgnoredKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
// Add column with summed values for site |
2611 |
29 Aug 14 |
nicklas |
var siteSum = getJSONData(siteData, sumDateIgnoredKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteSum, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
1635 |
} |
2611 |
29 Aug 14 |
nicklas |
// Add column with total number of samples for site, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
var siteTotal = getJSONData(siteData, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteTotal, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1640 |
} |
2611 |
29 Aug 14 |
nicklas |
1641 |
} |
2611 |
29 Aug 14 |
nicklas |
1642 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToConsentTableHasDate(report, reportTable, numDecimals) |
2611 |
29 Aug 14 |
nicklas |
1644 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1650 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1655 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1668 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'yesPatientExistsDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'yesPatientUnknownDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'noDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'notAskedDateExists', sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, noDateKey, sumKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
// Add column with summed values for site |
2611 |
29 Aug 14 |
nicklas |
var siteSum = getJSONData(siteData, sumKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteSum, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
1682 |
} |
2611 |
29 Aug 14 |
nicklas |
// Add column with total number of samples for site, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
var siteTotal = getJSONData(siteData, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteTotal, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1687 |
} |
2611 |
29 Aug 14 |
nicklas |
1688 |
} |
2611 |
29 Aug 14 |
nicklas |
1689 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToConsentTableUnknownDate(report, reportTable, numDecimals) |
2611 |
29 Aug 14 |
nicklas |
1691 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
numMissing = statistics.missing; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1698 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1703 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var noDateOrMissingKey = 'noDateOrMissing'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1716 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'yesDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'noDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'notAskedDateUnknown', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONDataWithPercent(siteData, 'missing', noDateOrMissingKey, numDecimals); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
// Add column with summed values for site |
2611 |
29 Aug 14 |
nicklas |
var siteSum = getJSONData(siteData, noDateOrMissingKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteSum, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
1728 |
} |
2611 |
29 Aug 14 |
nicklas |
// Add column with total number of samples for site, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
var siteTotal = getJSONData(siteData, totalKey, 0); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteTotal, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1733 |
} |
2611 |
29 Aug 14 |
nicklas |
1734 |
} |
2611 |
29 Aug 14 |
nicklas |
1735 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToOverviewTable(report, reportTable) |
2611 |
29 Aug 14 |
nicklas |
1737 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1743 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1748 |
|
2801 |
13 Oct 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1761 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patient'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'bloodSample'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'bloodSampleFollowUp'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'specimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'noSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'consentYes'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'consentMissing'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1776 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1778 |
} |
2611 |
29 Aug 14 |
nicklas |
1779 |
} |
2611 |
29 Aug 14 |
nicklas |
1780 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToOverviewPatientWithSampleTable(report, reportTable) |
2611 |
29 Aug 14 |
nicklas |
1782 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1788 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1793 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1806 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patient'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientWithBloodSample'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientWithFollowUpBloodSample'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientWithSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientWithNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1817 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1819 |
} |
2611 |
29 Aug 14 |
nicklas |
1820 |
} |
2611 |
29 Aug 14 |
nicklas |
1821 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToOverviewPatientDetailedTable(report, reportTable) |
2611 |
29 Aug 14 |
nicklas |
1823 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1829 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1834 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
1836 |
/* |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
1839 |
*/ |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1844 |
/* |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1846 |
*/ |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1851 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientBloodSampleOnly'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientSpecimenOnly'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientNoSpecimenOnly'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientBloodSampleAndSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientBloodSampleAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientSpecimenAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'patientBloodSampleAndSpecimenAndNoSpecimen'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
//data = getJSONData(siteData, 'patientNoSamples'); |
2611 |
29 Aug 14 |
nicklas |
//tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'sumKey'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
1870 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1872 |
} |
2611 |
29 Aug 14 |
nicklas |
1873 |
} |
2611 |
29 Aug 14 |
nicklas |
1874 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToMissingSampleDataTable(report, reportTable) |
2611 |
29 Aug 14 |
nicklas |
1876 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
var sampleType = report.sampleType; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPatientName = report.permissionDeniedForPatientName; |
2611 |
29 Aug 14 |
nicklas |
var permissionDeniedForPad = report.permissionDeniedForPad; |
2611 |
29 Aug 14 |
nicklas |
var unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
var unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
1885 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = dateStrToDate(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDateStr = addHyphensToDateString(site.startDate); |
2611 |
29 Aug 14 |
nicklas |
1890 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = addHyphensToDateString(siteLatestDate); |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteStartDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
//var currentDate = new Date(periodStartDate.getFullYear(), periodStartDate.getMonth(), periodStartDate.getDate()); |
2611 |
29 Aug 14 |
nicklas |
var noDateKey = 'noDate'; |
2611 |
29 Aug 14 |
nicklas |
var sumKey = 'sumKey'; |
2611 |
29 Aug 14 |
nicklas |
var totalKey = 'totalKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
1904 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPatientName) |
2611 |
29 Aug 14 |
nicklas |
1906 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingPatientName'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1909 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1911 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1914 |
} |
2611 |
29 Aug 14 |
nicklas |
if (sampleType == 'specimen') |
2611 |
29 Aug 14 |
nicklas |
1916 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPad) |
2611 |
29 Aug 14 |
nicklas |
1918 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingPadReference'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1921 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1923 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1926 |
} |
2611 |
29 Aug 14 |
nicklas |
1927 |
|
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingLaterality'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingRnaLaterDateTime'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1934 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'nospecimen') |
2611 |
29 Aug 14 |
nicklas |
1936 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (!permissionDeniedForPad) |
2611 |
29 Aug 14 |
nicklas |
1938 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingPadReference'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1941 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
1943 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = '-'; |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1946 |
} |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingLaterality'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1951 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (sampleType == 'blood') |
2611 |
29 Aug 14 |
nicklas |
1953 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingBloodSamplingDateTime'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
data = getJSONData(siteData, 'missingBloodFreezerDateTime'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
1958 |
} |
2611 |
29 Aug 14 |
nicklas |
1959 |
} |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
1961 |
} |
2611 |
29 Aug 14 |
nicklas |
1962 |
} |
2611 |
29 Aug 14 |
nicklas |
1963 |
|
2615 |
01 Sep 14 |
nicklas |
function createLink(name, id, itemType, title) |
2611 |
29 Aug 14 |
nicklas |
1965 |
{ |
2615 |
01 Sep 14 |
nicklas |
var link = document.createElement('span'); |
2615 |
01 Sep 14 |
nicklas |
link.className = 'link'; |
2615 |
01 Sep 14 |
nicklas |
link.title = title; |
2615 |
01 Sep 14 |
nicklas |
link.innerHTML = name; |
2615 |
01 Sep 14 |
nicklas |
Events.addEventHandler(link, 'click', Items.itemOnClick, {'item-id': id, 'item-type': itemType, 'no-edit': 1}); |
2615 |
01 Sep 14 |
nicklas |
return link; |
2611 |
29 Aug 14 |
nicklas |
1972 |
} |
2611 |
29 Aug 14 |
nicklas |
1973 |
|
2615 |
01 Sep 14 |
nicklas |
function createTableCellElementChild(child, clazz, colspan, rowspan) |
2611 |
29 Aug 14 |
nicklas |
1975 |
{ |
2611 |
29 Aug 14 |
nicklas |
var cellElement = document.createElement('td'); |
2611 |
29 Aug 14 |
nicklas |
cellElement.setAttribute('class', clazz); |
2611 |
29 Aug 14 |
nicklas |
if (colspan != null) cellElement.setAttribute('colspan', colspan); |
2611 |
29 Aug 14 |
nicklas |
if (rowspan != null) cellElement.setAttribute('rowspan', rowspan); |
2615 |
01 Sep 14 |
nicklas |
cellElement.appendChild(child); |
2611 |
29 Aug 14 |
nicklas |
1981 |
|
2611 |
29 Aug 14 |
nicklas |
return cellElement; |
2611 |
29 Aug 14 |
nicklas |
1983 |
} |
2611 |
29 Aug 14 |
nicklas |
1984 |
|
2611 |
29 Aug 14 |
nicklas |
function getJSONDataWithPercent(jsonObject, key, sumKey, numDecimals) |
2611 |
29 Aug 14 |
nicklas |
1986 |
{ |
2611 |
29 Aug 14 |
nicklas |
var dataNum = getJSONData(jsonObject, key); |
2611 |
29 Aug 14 |
nicklas |
var dataSum = getJSONData(jsonObject, sumKey); |
2611 |
29 Aug 14 |
nicklas |
var dataPct = '0'; |
2611 |
29 Aug 14 |
nicklas |
if (dataSum != null && dataSum != 0) |
2611 |
29 Aug 14 |
nicklas |
1991 |
{ |
2611 |
29 Aug 14 |
nicklas |
dataPct = 100*dataNum/dataSum; |
2611 |
29 Aug 14 |
nicklas |
dataPct = dataPct.toFixed(numDecimals); |
2611 |
29 Aug 14 |
nicklas |
1994 |
} |
2611 |
29 Aug 14 |
nicklas |
var data = dataNum + ' (' + dataPct + '%)'; |
2611 |
29 Aug 14 |
nicklas |
return data; |
2611 |
29 Aug 14 |
nicklas |
1997 |
} |
2611 |
29 Aug 14 |
nicklas |
1998 |
|
2611 |
29 Aug 14 |
nicklas |
function getJSONData(jsonObject, key) |
2611 |
29 Aug 14 |
nicklas |
2000 |
{ |
2611 |
29 Aug 14 |
nicklas |
var data = getJSONData(jsonObject, key, ''); |
2611 |
29 Aug 14 |
nicklas |
return data; |
2611 |
29 Aug 14 |
nicklas |
2003 |
} |
2611 |
29 Aug 14 |
nicklas |
2004 |
|
2611 |
29 Aug 14 |
nicklas |
function getJSONData(jsonObject, key, defaultChoice) |
2611 |
29 Aug 14 |
nicklas |
2006 |
{ |
2611 |
29 Aug 14 |
nicklas |
var data = defaultChoice; |
2611 |
29 Aug 14 |
nicklas |
if (jsonObject != null) |
2611 |
29 Aug 14 |
nicklas |
2009 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (jsonObject[key] != null) |
2611 |
29 Aug 14 |
nicklas |
2011 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = jsonObject[key]; |
2611 |
29 Aug 14 |
nicklas |
2013 |
} |
2611 |
29 Aug 14 |
nicklas |
2014 |
} |
2611 |
29 Aug 14 |
nicklas |
2015 |
/* |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2017 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = 'jsonObject==null'; |
2611 |
29 Aug 14 |
nicklas |
2019 |
} |
2611 |
29 Aug 14 |
nicklas |
2020 |
*/ |
2611 |
29 Aug 14 |
nicklas |
return data; |
2611 |
29 Aug 14 |
nicklas |
2022 |
} |
2611 |
29 Aug 14 |
nicklas |
2023 |
|
2611 |
29 Aug 14 |
nicklas |
function addQuarterColumnHeaders(columnHeaderRow, startDate) |
2611 |
29 Aug 14 |
nicklas |
2025 |
{ |
2611 |
29 Aug 14 |
nicklas |
var currentDate = startDate; |
2611 |
29 Aug 14 |
nicklas |
for (var i=0;i<numCols;i++) |
2611 |
29 Aug 14 |
nicklas |
2028 |
{ |
2611 |
29 Aug 14 |
nicklas |
var quarter = Math.floor(currentDate.getMonth()/3)+1; |
2611 |
29 Aug 14 |
nicklas |
var columnText = 'Q'+quarter; |
2611 |
29 Aug 14 |
nicklas |
var quarterHeader = getTableCellElement(columnText, 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(quarterHeader); |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth()+3); |
2611 |
29 Aug 14 |
nicklas |
2034 |
} |
2611 |
29 Aug 14 |
nicklas |
2035 |
} |
2611 |
29 Aug 14 |
nicklas |
2036 |
|
2611 |
29 Aug 14 |
nicklas |
function addWeekColumnHeaders(columnHeaderRow, startDate) |
2611 |
29 Aug 14 |
nicklas |
2038 |
{ |
2611 |
29 Aug 14 |
nicklas |
var currentDate = startDate; |
2611 |
29 Aug 14 |
nicklas |
var day = currentDate.getDay()-1; |
2611 |
29 Aug 14 |
nicklas |
day = day>=0 ? day: day + 7; |
2611 |
29 Aug 14 |
nicklas |
currentDate.setDate(currentDate.getDate()-day); |
2611 |
29 Aug 14 |
nicklas |
for (var i=0;i<numCols;i++) |
2611 |
29 Aug 14 |
nicklas |
2044 |
{ |
2611 |
29 Aug 14 |
nicklas |
var weekNum = getISOWeekNumber(currentDate); |
2611 |
29 Aug 14 |
nicklas |
var columnText = weekNum; |
2611 |
29 Aug 14 |
nicklas |
if (weekNum < 10) columnText = '0'+columnText; |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(getTableCellElement(columnText, 'reportsubheader')); |
2611 |
29 Aug 14 |
nicklas |
currentDate.setDate(currentDate.getDate()+7); |
2611 |
29 Aug 14 |
nicklas |
2050 |
} |
2611 |
29 Aug 14 |
nicklas |
2051 |
} |
2611 |
29 Aug 14 |
nicklas |
2052 |
|
2611 |
29 Aug 14 |
nicklas |
function addMonthColumnHeaders(columnHeaderRow, startDate) |
2611 |
29 Aug 14 |
nicklas |
2054 |
{ |
2611 |
29 Aug 14 |
nicklas |
var currentDate = new Date(startDate.getFullYear(), startDate.getMonth()); |
2611 |
29 Aug 14 |
nicklas |
for (var i=0;i<numCols;i++) |
2611 |
29 Aug 14 |
nicklas |
2057 |
{ |
2611 |
29 Aug 14 |
nicklas |
var monthHeader = getTableCellElement(month[currentDate.getMonth()], 'reportsubheader'); |
2611 |
29 Aug 14 |
nicklas |
columnHeaderRow.appendChild(monthHeader); |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth() +1); |
2611 |
29 Aug 14 |
nicklas |
2061 |
} |
2611 |
29 Aug 14 |
nicklas |
2062 |
} |
2611 |
29 Aug 14 |
nicklas |
2063 |
|
2611 |
29 Aug 14 |
nicklas |
function addYearSubHeaders(startDate, endDate, subHeaderRowYear, vt) |
2611 |
29 Aug 14 |
nicklas |
2065 |
{ |
2611 |
29 Aug 14 |
nicklas |
var currentYear = startDate.getFullYear(); |
2611 |
29 Aug 14 |
nicklas |
2067 |
|
2611 |
29 Aug 14 |
nicklas |
var columnCounter = 0; |
2611 |
29 Aug 14 |
nicklas |
do |
2611 |
29 Aug 14 |
nicklas |
2070 |
{ |
2611 |
29 Aug 14 |
nicklas |
var colspan; |
2611 |
29 Aug 14 |
nicklas |
var headerText = currentYear; |
2611 |
29 Aug 14 |
nicklas |
if (vt == "MONTH") |
2611 |
29 Aug 14 |
nicklas |
2074 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (currentYear == startDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2076 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = 11-startDate.getMonth()+1; |
2611 |
29 Aug 14 |
nicklas |
if (endDate.getFullYear() == currentYear) |
2611 |
29 Aug 14 |
nicklas |
2079 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = colspan - (11-endDate.getMonth()); |
2611 |
29 Aug 14 |
nicklas |
2081 |
} |
2611 |
29 Aug 14 |
nicklas |
2082 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (currentYear == endDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
colspan = endDate.getMonth()+1; |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
colspan = 12; |
2611 |
29 Aug 14 |
nicklas |
2087 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (vt == "WEEK") |
2611 |
29 Aug 14 |
nicklas |
2089 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (startDate.getFullYear() == endDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2091 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = numCols; |
2611 |
29 Aug 14 |
nicklas |
2093 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (currentYear == startDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2095 |
{ |
2611 |
29 Aug 14 |
nicklas |
var startWeek = getISOWeekNumber(startDate); |
2611 |
29 Aug 14 |
nicklas |
var lastDay = new Date(startDate.getFullYear(), 11, 31); |
2611 |
29 Aug 14 |
nicklas |
var endWeek = getISOWeekNumber(lastDay); |
2611 |
29 Aug 14 |
nicklas |
if (endWeek == 1) |
2611 |
29 Aug 14 |
nicklas |
2100 |
{ |
2611 |
29 Aug 14 |
nicklas |
lastDay.setDate(lastDay.getDate()-7); |
2611 |
29 Aug 14 |
nicklas |
endWeek = getISOWeekNumber(lastDay); |
2611 |
29 Aug 14 |
nicklas |
2103 |
} |
2611 |
29 Aug 14 |
nicklas |
colspan = endWeek - startWeek +1; |
2611 |
29 Aug 14 |
nicklas |
2105 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (currentYear == endDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2107 |
{ |
2611 |
29 Aug 14 |
nicklas |
var endWeek = getISOWeekNumber(endDate); |
2611 |
29 Aug 14 |
nicklas |
colspan = endWeek; |
2611 |
29 Aug 14 |
nicklas |
2110 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2112 |
{ |
2611 |
29 Aug 14 |
nicklas |
var dateInLastWeek = new Date(currentYear, 11, 31); |
2611 |
29 Aug 14 |
nicklas |
var endWeek = getISOWeekNumber(dateInLastWeek); |
2611 |
29 Aug 14 |
nicklas |
if (endWeek == 1) |
2611 |
29 Aug 14 |
nicklas |
2116 |
{ |
2611 |
29 Aug 14 |
nicklas |
dateInLastWeek.setDate(dateInLastWeek.getDate()-7); |
2611 |
29 Aug 14 |
nicklas |
endWeek = getISOWeekNumber(dateInLastWeek); |
2611 |
29 Aug 14 |
nicklas |
2119 |
} |
2611 |
29 Aug 14 |
nicklas |
colspan = endWeek; |
2611 |
29 Aug 14 |
nicklas |
2121 |
} |
2611 |
29 Aug 14 |
nicklas |
2122 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (vt == "QUARTER") |
2611 |
29 Aug 14 |
nicklas |
2124 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (currentYear == startDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2126 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (startDate.getFullYear() == endDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2128 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = Math.floor((endDate.getMonth()-startDate.getMonth())/3)+1; |
2611 |
29 Aug 14 |
nicklas |
2130 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2132 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = Math.floor((11-startDate.getMonth())/3) +1; |
2611 |
29 Aug 14 |
nicklas |
2134 |
} |
2611 |
29 Aug 14 |
nicklas |
2135 |
} |
2611 |
29 Aug 14 |
nicklas |
else if(currentYear == endDate.getFullYear()) |
2611 |
29 Aug 14 |
nicklas |
2137 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = Math.floor(endDate.getMonth()/3)+1; |
2611 |
29 Aug 14 |
nicklas |
2139 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2141 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = 4; |
2611 |
29 Aug 14 |
nicklas |
2143 |
} |
2611 |
29 Aug 14 |
nicklas |
2144 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (vt == "YEAR") |
2611 |
29 Aug 14 |
nicklas |
2146 |
{ |
2611 |
29 Aug 14 |
nicklas |
colspan = 1; |
2611 |
29 Aug 14 |
nicklas |
2148 |
} |
2611 |
29 Aug 14 |
nicklas |
columnCounter += colspan; |
2611 |
29 Aug 14 |
nicklas |
subHeaderRowYear.appendChild(getTableCellElement(headerText, 'reportsubheader', colspan)); |
2611 |
29 Aug 14 |
nicklas |
}while(!(++currentYear>endDate.getFullYear())); |
2611 |
29 Aug 14 |
nicklas |
2152 |
} |
2611 |
29 Aug 14 |
nicklas |
2153 |
|
2611 |
29 Aug 14 |
nicklas |
function addDataRowsToTable(report, reportTable) |
2611 |
29 Aug 14 |
nicklas |
2155 |
{ |
2611 |
29 Aug 14 |
nicklas |
var fdString = report.beginDate; |
2611 |
29 Aug 14 |
nicklas |
var ldString = report.endDate; |
2611 |
29 Aug 14 |
nicklas |
var psdString = report.periodBeginDate; |
2611 |
29 Aug 14 |
nicklas |
var startDate = new Date(); |
2611 |
29 Aug 14 |
nicklas |
startDate.setYear(fdString.substr(0,4)); |
2611 |
29 Aug 14 |
nicklas |
startDate.setMonth(fdString.substr(4,2)-1); |
2611 |
29 Aug 14 |
nicklas |
startDate.setDate(fdString.substr(6)); |
2611 |
29 Aug 14 |
nicklas |
var endDate = new Date(); |
2611 |
29 Aug 14 |
nicklas |
endDate.setYear(ldString.substr(0,4)); |
2611 |
29 Aug 14 |
nicklas |
endDate.setMonth(ldString.substr(4,2)-1); |
2611 |
29 Aug 14 |
nicklas |
endDate.setDate(ldString.substr(6)); |
2611 |
29 Aug 14 |
nicklas |
var periodStartDate = new Date(); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setYear(psdString.substr(0,4)); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setMonth(psdString.substr(4,2)-1); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setDate(psdString.substr(6)); |
2611 |
29 Aug 14 |
nicklas |
var viewType = report.viewType; |
2611 |
29 Aug 14 |
nicklas |
var sites = report.sites; |
2611 |
29 Aug 14 |
nicklas |
var statistics = report.statistics; |
2611 |
29 Aug 14 |
nicklas |
unknownCreation = statistics.noDate; |
2611 |
29 Aug 14 |
nicklas |
unknownSite = statistics.unknownSite; |
2611 |
29 Aug 14 |
nicklas |
for (var siteNo = 0; siteNo < sites.length; siteNo++) |
2611 |
29 Aug 14 |
nicklas |
2177 |
{ |
2611 |
29 Aug 14 |
nicklas |
var site = sites[siteNo]; |
2611 |
29 Aug 14 |
nicklas |
var siteName = site.name; |
2611 |
29 Aug 14 |
nicklas |
var year = site.startDate.substr(0,4); |
2611 |
29 Aug 14 |
nicklas |
var month = site.startDate.substr(5,2); |
2611 |
29 Aug 14 |
nicklas |
var date = site.startDate.substr(8,2); |
2611 |
29 Aug 14 |
nicklas |
var siteStartDate = new Date(year, month-1, date); |
2611 |
29 Aug 14 |
nicklas |
2184 |
|
2611 |
29 Aug 14 |
nicklas |
var siteData = statistics[site.prefix]; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDate = siteData['latestDateKey']; |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateStr = '????-??-??'; |
2611 |
29 Aug 14 |
nicklas |
if (siteLatestDate != null) |
2611 |
29 Aug 14 |
nicklas |
2189 |
{ |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateYear = siteLatestDate.substr(0,4); |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateMonth = siteLatestDate.substr(4,2); |
2611 |
29 Aug 14 |
nicklas |
var siteLatestDateDate = siteLatestDate.substr(6,2); |
2611 |
29 Aug 14 |
nicklas |
siteLatestDateStr = siteLatestDateYear + '-' + siteLatestDateMonth + '-' + siteLatestDateDate; |
2611 |
29 Aug 14 |
nicklas |
2194 |
} |
2611 |
29 Aug 14 |
nicklas |
var tableRow = document.createElement('tr'); |
2611 |
29 Aug 14 |
nicklas |
var tableCol = getTableCellElement(siteName, 'rowtitle'); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(tableCol); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(year+'-'+(month)+'-'+date, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteLatestDateStr, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
var currentDate = new Date(periodStartDate.getFullYear(), periodStartDate.getMonth(), periodStartDate.getDate()); |
2611 |
29 Aug 14 |
nicklas |
var columnCounter = 0; |
2611 |
29 Aug 14 |
nicklas |
do |
2611 |
29 Aug 14 |
nicklas |
2203 |
{ |
2611 |
29 Aug 14 |
nicklas |
var data = 0; |
2611 |
29 Aug 14 |
nicklas |
var keyIndex; |
2611 |
29 Aug 14 |
nicklas |
var yearIndex = currentDate.getFullYear(); |
2611 |
29 Aug 14 |
nicklas |
2207 |
|
2611 |
29 Aug 14 |
nicklas |
if (viewType == 'YEAR') |
2611 |
29 Aug 14 |
nicklas |
2209 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2212 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (siteData[keyIndex] != null) data = siteData[keyIndex]; |
2611 |
29 Aug 14 |
nicklas |
2214 |
} |
2611 |
29 Aug 14 |
nicklas |
// Initialize data columns before site start date to empty string |
2611 |
29 Aug 14 |
nicklas |
if ( (currentDate.getFullYear() < siteStartDate.getFullYear())) |
2611 |
29 Aug 14 |
nicklas |
2217 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = ''; |
2611 |
29 Aug 14 |
nicklas |
2219 |
} |
2611 |
29 Aug 14 |
nicklas |
currentDate.setFullYear(currentDate.getFullYear()+1); |
2611 |
29 Aug 14 |
nicklas |
2221 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'QUARTER') |
2611 |
29 Aug 14 |
nicklas |
2223 |
{ |
2611 |
29 Aug 14 |
nicklas |
var qIndex = Math.floor(currentDate.getMonth()/3) + 1; |
2611 |
29 Aug 14 |
nicklas |
var startQuarter = Math.floor(siteStartDate.getMonth()/3)+1; |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '' + qIndex; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2228 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (siteData[keyIndex] != null) data = siteData[keyIndex]; |
2611 |
29 Aug 14 |
nicklas |
2230 |
} |
2611 |
29 Aug 14 |
nicklas |
// Initialize data columns before site start date to empty string |
2611 |
29 Aug 14 |
nicklas |
if ( (currentDate.getFullYear() < siteStartDate.getFullYear()) || |
2611 |
29 Aug 14 |
nicklas |
(currentDate.getFullYear() == siteStartDate.getFullYear() && qIndex < startQuarter)) |
2611 |
29 Aug 14 |
nicklas |
2234 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = ''; |
2611 |
29 Aug 14 |
nicklas |
2236 |
} |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth()+3); |
2611 |
29 Aug 14 |
nicklas |
2238 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'MONTH') |
2611 |
29 Aug 14 |
nicklas |
2240 |
{ |
2611 |
29 Aug 14 |
nicklas |
var monthIndex = currentDate.getMonth()+1; |
2611 |
29 Aug 14 |
nicklas |
var rowFill = monthIndex < 10 ? '0' : ''; |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + rowFill + monthIndex; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2245 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (siteData[keyIndex] != null) data = siteData[keyIndex]; |
2611 |
29 Aug 14 |
nicklas |
2247 |
} |
2611 |
29 Aug 14 |
nicklas |
// Initialize data columns before site start date to empty string |
2611 |
29 Aug 14 |
nicklas |
if ( (currentDate.getFullYear() < siteStartDate.getFullYear()) || |
2611 |
29 Aug 14 |
nicklas |
(currentDate.getFullYear() == siteStartDate.getFullYear() && (monthIndex-1) < siteStartDate.getMonth())) |
2611 |
29 Aug 14 |
nicklas |
2251 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = ''; |
2611 |
29 Aug 14 |
nicklas |
2253 |
} |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth()+1); |
2611 |
29 Aug 14 |
nicklas |
2255 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'WEEK') |
2611 |
29 Aug 14 |
nicklas |
2257 |
{ |
2611 |
29 Aug 14 |
nicklas |
var weekIndex = getISOWeekNumber(currentDate); |
2611 |
29 Aug 14 |
nicklas |
// Week number in year stored as yyyyww with leading 0 if needed |
2611 |
29 Aug 14 |
nicklas |
if (weekIndex < 10) |
2611 |
29 Aug 14 |
nicklas |
2261 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '0' + weekIndex; |
2611 |
29 Aug 14 |
nicklas |
2263 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2265 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '' + weekIndex; |
2611 |
29 Aug 14 |
nicklas |
2267 |
} |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2269 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (siteData[keyIndex] != null) data = siteData[keyIndex]; |
2611 |
29 Aug 14 |
nicklas |
2271 |
} |
2611 |
29 Aug 14 |
nicklas |
// Initialize data columns before site start date to empty string |
2611 |
29 Aug 14 |
nicklas |
2273 |
// |
2611 |
29 Aug 14 |
nicklas |
// Note: ISO week numbers are tricky in their short form (without being coupled to a year), |
2611 |
29 Aug 14 |
nicklas |
// since days in different years may lie in the same week, and days at the start of |
2611 |
29 Aug 14 |
nicklas |
// a year may have week number 52 or 53 of the previous year and days at the end of |
2611 |
29 Aug 14 |
nicklas |
// a year may have week number 01 of the next year. |
2611 |
29 Aug 14 |
nicklas |
// Example: Monday 2012-01-02 has week number 2012-01, Monday 2012-12-31 has week number 2013-01 |
2611 |
29 Aug 14 |
nicklas |
// If current date is before site start date - 6 days, it is in a previous week |
2611 |
29 Aug 14 |
nicklas |
// If current date is within site start date +/- 6 days and not in the same week, check dates |
2611 |
29 Aug 14 |
nicklas |
// (just checking week numbers in the last case leads to e.g. 2012-12-30 (w52) > 2012-12-31 (w01)) |
2611 |
29 Aug 14 |
nicklas |
2282 |
// |
2611 |
29 Aug 14 |
nicklas |
if (currentDate.getTime() < siteStartDate.getTime() - 6*24*3600*1000 || |
2611 |
29 Aug 14 |
nicklas |
currentDate.getTime() < siteStartDate.getTime() + 6*24*3600*1000 && |
2611 |
29 Aug 14 |
nicklas |
getISOWeekNumber(currentDate) != getISOWeekNumber(siteStartDate) && |
2611 |
29 Aug 14 |
nicklas |
currentDate < siteStartDate) |
2611 |
29 Aug 14 |
nicklas |
2287 |
{ |
2611 |
29 Aug 14 |
nicklas |
data = ''; |
2611 |
29 Aug 14 |
nicklas |
2289 |
} |
2611 |
29 Aug 14 |
nicklas |
currentDate.setDate(currentDate.getDate()+7); |
2611 |
29 Aug 14 |
nicklas |
2291 |
} |
2611 |
29 Aug 14 |
nicklas |
2292 |
|
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(data, 'reportdata')); |
2611 |
29 Aug 14 |
nicklas |
columnCounter++; |
2611 |
29 Aug 14 |
nicklas |
} while (columnCounter < numCols) |
2611 |
29 Aug 14 |
nicklas |
// Add column with sample sum for site for the selected time period |
2611 |
29 Aug 14 |
nicklas |
var siteSum = 0; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2299 |
{ |
2611 |
29 Aug 14 |
nicklas |
var sumSiteKey = 'sumSiteKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData[sumSiteKey] != null) |
2611 |
29 Aug 14 |
nicklas |
2302 |
{ |
2611 |
29 Aug 14 |
nicklas |
siteSum = siteData[sumSiteKey]; |
2611 |
29 Aug 14 |
nicklas |
2304 |
} |
2611 |
29 Aug 14 |
nicklas |
2305 |
} |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteSum, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
// Add column with total number of samples for site, regardless of creation date |
2611 |
29 Aug 14 |
nicklas |
var siteTotal = 0; |
2611 |
29 Aug 14 |
nicklas |
if (siteData != null) |
2611 |
29 Aug 14 |
nicklas |
2310 |
{ |
2611 |
29 Aug 14 |
nicklas |
var totalSiteKey = 'totalSiteKey'; |
2611 |
29 Aug 14 |
nicklas |
if (siteData[totalSiteKey] != null) |
2611 |
29 Aug 14 |
nicklas |
2313 |
{ |
2611 |
29 Aug 14 |
nicklas |
siteTotal = siteData[totalSiteKey]; |
2611 |
29 Aug 14 |
nicklas |
2315 |
} |
2611 |
29 Aug 14 |
nicklas |
2316 |
} |
2611 |
29 Aug 14 |
nicklas |
tableRow.appendChild(getTableCellElement(siteTotal, 'rowsummary')); |
2611 |
29 Aug 14 |
nicklas |
reportTable.appendChild(tableRow); |
2611 |
29 Aug 14 |
nicklas |
2319 |
} |
2611 |
29 Aug 14 |
nicklas |
2320 |
} |
2611 |
29 Aug 14 |
nicklas |
2321 |
|
2611 |
29 Aug 14 |
nicklas |
function createSortedPeriodArray(report, numberOfColumns) |
2611 |
29 Aug 14 |
nicklas |
2323 |
{ |
2611 |
29 Aug 14 |
nicklas |
var psdString = report.periodBeginDate; |
2611 |
29 Aug 14 |
nicklas |
var periodStartDate = new Date(); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setYear(psdString.substr(0,4)); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setMonth(psdString.substr(4,2)-1); |
2611 |
29 Aug 14 |
nicklas |
periodStartDate.setDate(psdString.substr(6)); |
2611 |
29 Aug 14 |
nicklas |
var viewType = report.viewType; |
2611 |
29 Aug 14 |
nicklas |
var sortedPeriodArray = Array(numberOfColumns); |
2611 |
29 Aug 14 |
nicklas |
var currentDate = new Date(periodStartDate.getFullYear(), periodStartDate.getMonth(), periodStartDate.getDate()); |
2611 |
29 Aug 14 |
nicklas |
var columnCounter = 0; |
2611 |
29 Aug 14 |
nicklas |
do |
2611 |
29 Aug 14 |
nicklas |
2334 |
{ |
2611 |
29 Aug 14 |
nicklas |
var keyIndex; |
2611 |
29 Aug 14 |
nicklas |
var yearIndex = currentDate.getFullYear(); |
2611 |
29 Aug 14 |
nicklas |
2337 |
|
2611 |
29 Aug 14 |
nicklas |
if (viewType == 'YEAR') |
2611 |
29 Aug 14 |
nicklas |
2339 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex; |
2611 |
29 Aug 14 |
nicklas |
currentDate.setFullYear(currentDate.getFullYear()+1); |
2611 |
29 Aug 14 |
nicklas |
2342 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'QUARTER') |
2611 |
29 Aug 14 |
nicklas |
2344 |
{ |
2611 |
29 Aug 14 |
nicklas |
var qIndex = Math.floor(currentDate.getMonth()/3) + 1; |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '' + qIndex; |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth()+3); |
2611 |
29 Aug 14 |
nicklas |
2348 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'MONTH') |
2611 |
29 Aug 14 |
nicklas |
2350 |
{ |
2611 |
29 Aug 14 |
nicklas |
var monthIndex = currentDate.getMonth()+1; |
2611 |
29 Aug 14 |
nicklas |
var rowFill = monthIndex < 10 ? '0' : ''; |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + rowFill + monthIndex; |
2611 |
29 Aug 14 |
nicklas |
currentDate.setMonth(currentDate.getMonth()+1); |
2611 |
29 Aug 14 |
nicklas |
2355 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (viewType == 'WEEK') |
2611 |
29 Aug 14 |
nicklas |
2357 |
{ |
2611 |
29 Aug 14 |
nicklas |
var weekIndex = getISOWeekNumber(currentDate); |
2611 |
29 Aug 14 |
nicklas |
// Week number in year stored as yyyyww with leading 0 if needed |
2611 |
29 Aug 14 |
nicklas |
if (weekIndex < 10) |
2611 |
29 Aug 14 |
nicklas |
2361 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '0' + weekIndex; |
2611 |
29 Aug 14 |
nicklas |
2363 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2365 |
{ |
2611 |
29 Aug 14 |
nicklas |
keyIndex = yearIndex + '' + weekIndex; |
2611 |
29 Aug 14 |
nicklas |
2367 |
} |
2611 |
29 Aug 14 |
nicklas |
currentDate.setDate(currentDate.getDate()+7); |
2611 |
29 Aug 14 |
nicklas |
2369 |
} |
2611 |
29 Aug 14 |
nicklas |
sortedPeriodArray[columnCounter] = keyIndex; |
2611 |
29 Aug 14 |
nicklas |
columnCounter++; |
2611 |
29 Aug 14 |
nicklas |
} while (columnCounter < numberOfColumns) |
2611 |
29 Aug 14 |
nicklas |
return sortedPeriodArray; |
2611 |
29 Aug 14 |
nicklas |
2374 |
} |
2611 |
29 Aug 14 |
nicklas |
2375 |
|
2611 |
29 Aug 14 |
nicklas |
function getReportTable() |
2611 |
29 Aug 14 |
nicklas |
2377 |
{ |
2611 |
29 Aug 14 |
nicklas |
var reportTable = document.createElement('table'); |
2611 |
29 Aug 14 |
nicklas |
reportTable.setAttribute('class','reporttable'); |
2611 |
29 Aug 14 |
nicklas |
reportTable.setAttribute('border','1'); |
2611 |
29 Aug 14 |
nicklas |
return reportTable; |
2611 |
29 Aug 14 |
nicklas |
2382 |
} |
2611 |
29 Aug 14 |
nicklas |
2383 |
|
2611 |
29 Aug 14 |
nicklas |
function getTableCellElement(text, clazz, colspan, rowspan) |
2611 |
29 Aug 14 |
nicklas |
2385 |
{ |
2611 |
29 Aug 14 |
nicklas |
var cellElement = document.createElement('td'); |
2611 |
29 Aug 14 |
nicklas |
text = new String(text); |
2611 |
29 Aug 14 |
nicklas |
var textArray = text.split("\n"); |
2611 |
29 Aug 14 |
nicklas |
if (textArray.length > 1) |
2611 |
29 Aug 14 |
nicklas |
2390 |
{ |
2611 |
29 Aug 14 |
nicklas |
for (var i=0;i<textArray.length;i++) |
2611 |
29 Aug 14 |
nicklas |
2392 |
{ |
2611 |
29 Aug 14 |
nicklas |
if (i>0)cellElement.appendChild(document.createElement('br')); |
2611 |
29 Aug 14 |
nicklas |
cellElement.appendChild(document.createTextNode(textArray[i])); |
2611 |
29 Aug 14 |
nicklas |
2395 |
} |
2611 |
29 Aug 14 |
nicklas |
2396 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2398 |
{ |
2611 |
29 Aug 14 |
nicklas |
cellElement.appendChild(document.createTextNode(text)); |
2611 |
29 Aug 14 |
nicklas |
2400 |
} |
2611 |
29 Aug 14 |
nicklas |
cellElement.setAttribute('class', clazz); |
2611 |
29 Aug 14 |
nicklas |
if (colspan != null) cellElement.setAttribute('colspan', colspan); |
2611 |
29 Aug 14 |
nicklas |
if (rowspan != null) cellElement.setAttribute('rowspan', rowspan); |
2611 |
29 Aug 14 |
nicklas |
2404 |
|
2611 |
29 Aug 14 |
nicklas |
return cellElement; |
2611 |
29 Aug 14 |
nicklas |
2406 |
} |
2611 |
29 Aug 14 |
nicklas |
2407 |
|
2611 |
29 Aug 14 |
nicklas |
function getListElement(itemText) |
2611 |
29 Aug 14 |
nicklas |
2409 |
{ |
2611 |
29 Aug 14 |
nicklas |
var listElement = document.createElement('li'); |
2611 |
29 Aug 14 |
nicklas |
var textNode = document.createTextNode(itemText); |
2611 |
29 Aug 14 |
nicklas |
listElement.appendChild(textNode); |
2611 |
29 Aug 14 |
nicklas |
return listElement; |
2611 |
29 Aug 14 |
nicklas |
2414 |
} |
2611 |
29 Aug 14 |
nicklas |
2415 |
|
2611 |
29 Aug 14 |
nicklas |
2416 |
/** |
2611 |
29 Aug 14 |
nicklas |
* addHyphensToDateStr() |
2611 |
29 Aug 14 |
nicklas |
2418 |
* |
2611 |
29 Aug 14 |
nicklas |
* Adds hyphens to date string in yyyymmdd format to |
2611 |
29 Aug 14 |
nicklas |
* get yyyy-mm-dd format. If input string already contains |
2611 |
29 Aug 14 |
nicklas |
* hyphen(s), the input string is returned unchanged. |
2611 |
29 Aug 14 |
nicklas |
* If input string is null or empty, '????-??-??' is returned. |
2611 |
29 Aug 14 |
nicklas |
2423 |
* |
2611 |
29 Aug 14 |
nicklas |
* @param dateStr String Input date string in yyyy-mm-dd or yyyymmdd format. |
2611 |
29 Aug 14 |
nicklas |
* @return String Date string in yyyy-mm-dd format. |
2611 |
29 Aug 14 |
nicklas |
2426 |
*/ |
2611 |
29 Aug 14 |
nicklas |
function addHyphensToDateString(dateStr) |
2611 |
29 Aug 14 |
nicklas |
2428 |
{ |
2611 |
29 Aug 14 |
nicklas |
var dateWithHyphensStr = '????-??-??'; |
2611 |
29 Aug 14 |
nicklas |
if (dateStr != null && dateStr != '') |
2611 |
29 Aug 14 |
nicklas |
2431 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Check if input string already contains hyphen |
2611 |
29 Aug 14 |
nicklas |
if (dateStr.indexOf("-") >= 0) |
2611 |
29 Aug 14 |
nicklas |
2434 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Date already has hyphen(s) |
2611 |
29 Aug 14 |
nicklas |
dateWithHyphensStr = dateStr; |
2611 |
29 Aug 14 |
nicklas |
2437 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2439 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Date in yyyymmdd format |
2611 |
29 Aug 14 |
nicklas |
var yearStr = dateStr.substr(0,4); |
2611 |
29 Aug 14 |
nicklas |
var monthStr = dateStr.substr(4,2); |
2611 |
29 Aug 14 |
nicklas |
var dayStr = dateStr.substr(6,2); |
2611 |
29 Aug 14 |
nicklas |
dateWithHyphensStr = yearStr + '-' + monthStr + '-' + dayStr; |
2611 |
29 Aug 14 |
nicklas |
2445 |
} |
2611 |
29 Aug 14 |
nicklas |
2446 |
} |
2611 |
29 Aug 14 |
nicklas |
return dateWithHyphensStr; |
2611 |
29 Aug 14 |
nicklas |
2448 |
} |
2611 |
29 Aug 14 |
nicklas |
2449 |
|
2611 |
29 Aug 14 |
nicklas |
2450 |
/** |
2611 |
29 Aug 14 |
nicklas |
* dateStrToDate() |
2611 |
29 Aug 14 |
nicklas |
2452 |
* |
2611 |
29 Aug 14 |
nicklas |
* Takes an input date string in yyyy-mm-dd or yyyymmdd format |
2611 |
29 Aug 14 |
nicklas |
* and returns a date corresponding to the date string. |
2611 |
29 Aug 14 |
nicklas |
* If input string is null or empty, null is returned. |
2611 |
29 Aug 14 |
nicklas |
2456 |
* |
2611 |
29 Aug 14 |
nicklas |
* @param dateStr String Input date string in yyyy-mm-dd or yyyymmdd format. |
2611 |
29 Aug 14 |
nicklas |
* @return Date Date corresponding to input date string. |
2611 |
29 Aug 14 |
nicklas |
2459 |
*/ |
2611 |
29 Aug 14 |
nicklas |
function dateStrToDate(dateStr) |
2611 |
29 Aug 14 |
nicklas |
2461 |
{ |
2611 |
29 Aug 14 |
nicklas |
var date = null; |
2611 |
29 Aug 14 |
nicklas |
if (dateStr != null && dateStr != '') |
2611 |
29 Aug 14 |
nicklas |
2464 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Check if input string already contains hyphen |
2611 |
29 Aug 14 |
nicklas |
if (dateStr.indexOf("-") >= 0) |
2611 |
29 Aug 14 |
nicklas |
2467 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Date in yyyy-mm-dd format |
2611 |
29 Aug 14 |
nicklas |
var yearStr = dateStr.substr(0,4); |
2611 |
29 Aug 14 |
nicklas |
var monthStr = dateStr.substr(5,2); |
2611 |
29 Aug 14 |
nicklas |
var dayStr = dateStr.substr(8,2); |
2611 |
29 Aug 14 |
nicklas |
var date = new Date(parseInt(yearStr, 10), parseInt(monthStr, 10)-1, parseInt(dayStr, 10)); |
2611 |
29 Aug 14 |
nicklas |
2473 |
} |
2611 |
29 Aug 14 |
nicklas |
else |
2611 |
29 Aug 14 |
nicklas |
2475 |
{ |
2611 |
29 Aug 14 |
nicklas |
// Date in yyyymmdd format |
2611 |
29 Aug 14 |
nicklas |
var yearStr = dateStr.substr(0,4); |
2611 |
29 Aug 14 |
nicklas |
var monthStr = dateStr.substr(4,2); |
2611 |
29 Aug 14 |
nicklas |
var dayStr = dateStr.substr(6,2); |
2611 |
29 Aug 14 |
nicklas |
var date = new Date(parseInt(yearStr, 10), parseInt(monthStr, 10)-1, parseInt(dayStr, 10)); |
2611 |
29 Aug 14 |
nicklas |
2481 |
} |
2611 |
29 Aug 14 |
nicklas |
2482 |
} |
2611 |
29 Aug 14 |
nicklas |
return date; |
2611 |
29 Aug 14 |
nicklas |
2484 |
} |
2611 |
29 Aug 14 |
nicklas |
2485 |
|
2611 |
29 Aug 14 |
nicklas |
2486 |
/* |
2611 |
29 Aug 14 |
nicklas |
* Get the ISO week number for a given date |
2611 |
29 Aug 14 |
nicklas |
2488 |
* |
2611 |
29 Aug 14 |
nicklas |
* Based on code at http://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php |
2611 |
29 Aug 14 |
nicklas |
2490 |
* |
2611 |
29 Aug 14 |
nicklas |
* @param date String Input date to get ISO week number for. |
2611 |
29 Aug 14 |
nicklas |
* @return int ISO week number for input date. |
2611 |
29 Aug 14 |
nicklas |
2493 |
*/ |
2611 |
29 Aug 14 |
nicklas |
function getISOWeekNumber(date) |
2611 |
29 Aug 14 |
nicklas |
2495 |
{ |
2611 |
29 Aug 14 |
nicklas |
tmpDate = new Date(date); |
2611 |
29 Aug 14 |
nicklas |
tmpDate.setHours(0,0,0); |
2611 |
29 Aug 14 |
nicklas |
// Set to nearest Thursday: current date + 4 - current day number |
2611 |
29 Aug 14 |
nicklas |
// Make Sunday day number 7 |
2611 |
29 Aug 14 |
nicklas |
tmpDate.setDate(tmpDate.getDate() + 4 - (tmpDate.getDay() || 7)); |
2611 |
29 Aug 14 |
nicklas |
// Get first day of year |
2611 |
29 Aug 14 |
nicklas |
var yearStart = new Date(tmpDate.getFullYear(), 0, 1); |
2611 |
29 Aug 14 |
nicklas |
// Calculate full weeks to nearast Thursday (86400000 = 24*60*60*1000 number of ms in a day) |
2611 |
29 Aug 14 |
nicklas |
var weekNo = Math.ceil(( ( (tmpDate - yearStart) / 86400000) + 1)/7); |
2611 |
29 Aug 14 |
nicklas |
return weekNo; |
2611 |
29 Aug 14 |
nicklas |
2506 |
} |
2611 |
29 Aug 14 |
nicklas |
2507 |
|
2611 |
29 Aug 14 |
nicklas |
2508 |
|
2611 |
29 Aug 14 |
nicklas |
function getBloodSampleFilterDisplayText(bloodSampleFilter) |
2611 |
29 Aug 14 |
nicklas |
2510 |
{ |
2611 |
29 Aug 14 |
nicklas |
var bloodSampleFilterDisplayText = bloodSampleFilter; |
2611 |
29 Aug 14 |
nicklas |
if (bloodSampleFilter == 'followup') |
2611 |
29 Aug 14 |
nicklas |
2513 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = 'Follow-up'; |
2611 |
29 Aug 14 |
nicklas |
2515 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (bloodSampleFilter == 'notfollowup') |
2611 |
29 Aug 14 |
nicklas |
2517 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = 'Not follow-up'; |
2611 |
29 Aug 14 |
nicklas |
2519 |
} |
2611 |
29 Aug 14 |
nicklas |
else if (bloodSampleFilter == '') |
2611 |
29 Aug 14 |
nicklas |
2521 |
{ |
2611 |
29 Aug 14 |
nicklas |
bloodSampleFilterDisplayText = 'unknown'; |
2611 |
29 Aug 14 |
nicklas |
2523 |
} |
2611 |
29 Aug 14 |
nicklas |
return bloodSampleFilterDisplayText; |
2611 |
29 Aug 14 |
nicklas |
2525 |
} |