diff --git a/ONPRC_EHR_ComplianceDB/resources/views/printableComplianceReports.html b/ONPRC_EHR_ComplianceDB/resources/views/printableComplianceReports.html index 794467b71..535af3e60 100644 --- a/ONPRC_EHR_ComplianceDB/resources/views/printableComplianceReports.html +++ b/ONPRC_EHR_ComplianceDB/resources/views/printableComplianceReports.html @@ -5,6 +5,8 @@ Ext4.onReady(function(){ var webpart = <%=webpartContext%>; + ONPRC.Utils.preloadSession(); + Ext4.define('ONPRC.panel.PrintableComplianceReportsPanel', { itemId: 'sheetPanel', extend: 'Ext.panel.Panel', @@ -28,44 +30,6 @@ html: 'NOTE:' + '
Click the button below to display the Employee\'s Summary Report. The program will display a report of all training requirements for each employee.', style: 'padding-bottom: 20px;' -// },{ -// xtype: 'checkcombo', //Added: 10-18-2017 R.Blasa -// itemId: 'employeeNames', -// displayField: 'FullName', -// valueField: 'employeeid', -// width: 400, -// multiSelect: true, -// fieldLabel: 'Employee Name(s)', -// store: { -// type: 'labkey-store', -// containerPath: container, -// schemaName: 'ehr_compliancedb', -// queryName: 'EmployeeActiveList', -// columns: 'employeeid, FullName', -// sort: 'lastName', -// filterArray: [LABKEY.Filter.create('isActive', true, LABKEY.Filter.Types.EQUAL)], -// autoLoad: true -// } -// -// },{ -// xtype: 'combobox', //Added: 10-18-2017 R.Blasa -// itemId: 'supervisorNames', -// displayField: 'name', -// valueField: 'supervisor', -// width: 400, -// multiSelect: true, -// fieldLabel: 'Supervisor Name(s)', -// store: { -// type: 'labkey-store', -// containerPath: container, -// schemaName: 'ehr_compliancedb', -// queryName: 'SupervisorActiveList', -// columns: 'employeeid, supervisor, name', -// sort: 'supervisor', -// autoLoad: true -// -// } - }]; items.push({ layout: { @@ -90,33 +54,8 @@ border: true, getUrlString: function () { -// var panel = this.up('#sheetPanel'); -// var field = panel.down('#employeeNames'); -// -// var value = field.getValue() || []; -// value = Ext4.isArray(value) ? value: [value]; - - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; -// if (!value) -// return; - - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Compliance/EmployeeComplianceSuperXMLReport'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - - return url; + const params = ONPRC.Utils.getSsrsParams({}, true, true); + return ONPRC.Utils.getSsrsReportUrl('Compliance/EmployeeComplianceSuperXMLReport', params); }, menu: [{ text: 'Print', @@ -128,22 +67,8 @@ window.open(url); } -// },{ -// text: 'Print To PDF', -// handler: function(menu){ -// var btn = menu.up('button'); -// var url = btn.getUrlString(); -// if (!url) -// return; -// -// url += '&rs:Format=PDF'; -// window.open(url); -// } }] - }] - - },{ html: 'Report by Employee(s):' //Added: 10-17-2019 R.Blasa @@ -155,43 +80,9 @@ style: 'margin-left: 150px;', text: 'Print Version', border: true, - getUrlString: function(){ -// var panel = this.up('#sheetPanel'); -// var field = panel.down('#supervisorNames'); -// -// var value = field.getValue() || []; -// value = Ext4.isArray(value) ? value: [value]; - - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; -// if (!value) -// return; -// -// -// if (!Ext4.isEmpty(value)) -// params.supervisor = value; -// -// if (params.EmployeeID){ -// delete params.EmployeeID -// } - - - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Compliance/EmployeeComplianceEmpXMLReport'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - - return url; + getUrlString: function() { + const params = ONPRC.Utils.getSsrsParams({}, true, true); + return ONPRC.Utils.getSsrsReportUrl('Compliance/EmployeeComplianceEmpXMLReport', params); }, menu: [{ text: 'Print', @@ -203,59 +94,11 @@ window.open(url); } -// },{ -// text: 'Print To PDF', -// handler: function(menu){ -// var btn = menu.up('button'); -// var url = btn.getUrlString(); -// if (!url) -// return; -// -// url += '&rs:Format=PDF'; -// window.open(url); -// } }] }); return items; - }, - getParamsgroup: function(supressErrors, skipRoomsIfAllSelected){ - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; - - - - var roomFields = this.down('#animal_groups'); - var rooms = roomFields.getValue() || []; - rooms = Ext4.isArray(rooms) ? rooms: [rooms]; - - params.rooms =rooms; - - if (!rooms.length && !supressErrors){ - Ext4.Msg.alert('Error', 'Must select an Animal Group name'); - return; - } - - return params; - }, - - - getParams: function(supressErrors, skipRoomsIfAllSelected){ - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; - - - - return params; - } - - + } }); diff --git a/onprc_ehr/resources/views/citesReport.html b/onprc_ehr/resources/views/citesReport.html index 1f0ebc676..52f3c1a51 100644 --- a/onprc_ehr/resources/views/citesReport.html +++ b/onprc_ehr/resources/views/citesReport.html @@ -5,9 +5,7 @@ if(!ctx) return; - /* get the participant id from the request URL: this parameter is required. */ - var subjectIds = LABKEY.ActionURL.getParameter('subjectIds'); - subjectIds = subjectIds ? subjectIds.split(';') : []; + ONPRC.Utils.preloadSession(); Ext4.create('Ext.panel.Panel', { width: 400, @@ -20,7 +18,8 @@ width: 400, height: 200, fieldLabel: 'Enter Animal Id(s)', - itemId: 'animalField' + itemId: 'animalField', + name: 'animalField' }], buttons: [{ text: 'Submit', @@ -40,19 +39,9 @@ return; } //Modified: 1-17-2019 R.Blasa - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/CITESReport'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString({ - SessionID: LABKEY.Utils.getSessionID(), - HostName: location.hostname, + window.location = ONPRC.Utils.getSsrsReportUrl('Clinical/CITESReport', ONPRC.Utils.getSsrsParams({ AnimalID: val - }); - - //url += '&rs:Format=PDF' - console.log(url) - window.location = url; + })); } }] }).render(webpart.wrapperDivId); diff --git a/onprc_ehr/resources/views/ehrAdmin.html b/onprc_ehr/resources/views/ehrAdmin.html index c0824f5e8..b26cfb304 100644 --- a/onprc_ehr/resources/views/ehrAdmin.html +++ b/onprc_ehr/resources/views/ehrAdmin.html @@ -30,8 +30,7 @@ header: 'Logs', items: [ {name: 'Labkey.log', url: '<%=contextPath%>' + '/admin-showPrimaryLog.view'}, - {name: 'Labkey-errors.log', url: '<%=contextPath%>' + '/admin-showAllErrors.view'}, - {name: 'ETL Log', url: '<%=contextPath%>' + '/onprc_ehr-showEtlLog.view'} + {name: 'Labkey-errors.log', url: '<%=contextPath%>' + '/admin-showAllErrors.view'} ] },{ header: 'Notifications', diff --git a/onprc_ehr/resources/views/historyExport.html b/onprc_ehr/resources/views/historyExport.html index 2581e86a1..0fe3248be 100644 --- a/onprc_ehr/resources/views/historyExport.html +++ b/onprc_ehr/resources/views/historyExport.html @@ -5,9 +5,7 @@ if(!ctx) return; - /* get the participant id from the request URL: this parameter is required. */ - var subjectIds = LABKEY.ActionURL.getParameter('subjectIds'); - subjectIds = subjectIds ? subjectIds.split(';') : []; + ONPRC.Utils.preloadSession(); Ext4.create('Ext.panel.Panel', { width: 400, @@ -75,22 +73,13 @@ } //Modified: 1-17-2019 R.Blasa if (!hideHistory){ - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/SalesMedicalHistoryReport'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString({ - SessionID: LABKEY.Utils.getSessionID(), - HostName: location.hostname, - 'rs:ClearSession': true, - Redacted: redacted ? 'true' : 'false', - AnimalId: val, - minDate: Ext4.Date.format(mindate1, 'Y-m-d'), //Added: 11-18-2016 R.Blasa - maxDate: Ext4.Date.format(maxdate1, 'Y-m-d') - }); - - //url += '&rs:Format=PDF' - window.location = url; + window.location = ONPRC.Utils.getSsrsReportUrl('Clinical/SalesMedicalHistoryReport', + ONPRC.Utils.getSsrsParams({ + Redacted: redacted ? 'true' : 'false', + AnimalId: val, + minDate: Ext4.Date.format(mindate1, 'Y-m-d'), //Added: 11-18-2016 R.Blasa + maxDate: Ext4.Date.format(maxdate1, 'Y-m-d') + }, true)); } else { window.location = LABKEY.ActionURL.buildURL('ehr', 'clinicalHistoryExport', null, { diff --git a/onprc_ehr/resources/views/printableReports.html b/onprc_ehr/resources/views/printableReports.html index b6fba7a68..22890a565 100644 --- a/onprc_ehr/resources/views/printableReports.html +++ b/onprc_ehr/resources/views/printableReports.html @@ -3,6 +3,8 @@ Ext4.onReady(function(){ var webpart = <%=webpartContext%>; + ONPRC.Utils.preloadSession(); + Ext4.define('ONPRC.panel.PrintableReportsPanel', { itemId: 'sheetPanel', extend: 'Ext.panel.Panel', @@ -56,15 +58,7 @@ xtype: 'ehr-vetfieldcombo', //Modified:11-9-2016 R.Blasa itemId: 'userField', width: 400, - fieldLabel: 'Choose Vet', - listeners: { - change: function (field) - { - var VetField = field.up('panel').down('#userField'); -// VetField.reset(); - } - } - + fieldLabel: 'Choose Vet' },{ xtype: 'checkcombo', //Added: 2-28-2017 R.Blasa itemId: 'animalGroup', @@ -129,30 +123,16 @@ var panel = this.up('#sheetPanel'); var userName = panel.down('#userField').getValue(); - - var params = panel.getParams(true, true); - if (!userName) + if (!userName) { + Ext4.Msg.alert('Error', 'Please choose a vet'); return; + } - if (userName) - params['assignedvet'] = userName; - - - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveClinicalCasesVet'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); + var params = panel.getParams(true, true, ';'); + params['assignedvet'] = userName; - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveClinicalCasesVet', + ONPRC.Utils.getSsrsParams(params)); }, menu: [{ text: 'Print', @@ -203,25 +183,12 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveClinicalCasesNew'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveClinicalCasesNew', + ONPRC.Utils.getSsrsParams(params)); }, menu: [{ text: 'Print', @@ -282,13 +249,10 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - var date = panel.down('#medicationDateField').getValue(); if (!date){ Ext4.Msg.alert('Error', 'Must provide a date'); @@ -306,17 +270,8 @@ params['TimeOfDay'] = timeOfDay; } - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveTreatmentsRevised'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveTreatmentsRevised', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -379,13 +334,10 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - var date = panel.down('#dietDateField').getValue(); if (!date){ Ext4.Msg.alert('Error', 'Must provide a date'); @@ -401,17 +353,8 @@ params['TimeOfDay'] = timeOfDay; } - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveTreatmentsRevised'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveTreatmentsRevised', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -464,25 +407,12 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveClinicalCasesP2Sort'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveClinicalCasesP2Sort', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -542,13 +472,10 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - var date = panel.down('#medicationDateField').getValue(); if (!date){ Ext4.Msg.alert('Error', 'Must provide a date'); @@ -564,17 +491,8 @@ params['TimeOfDay'] = timeOfDay; } - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveTreatmentsCatch'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveTreatmentsCatch', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -630,24 +548,12 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveSurgicalCases'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveSurgicalCases', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -706,13 +612,10 @@ border: true, getUrlString: function(){ var panel = this.up('#sheetPanel'); - var params = panel.getParams(true, true); + var params = panel.getParams(true, true, ';'); if (!params) return; - if (params.Rooms) - params.Rooms = params.Rooms.join(';'); - var date = panel.down('#surgicalMedicationDateField').getValue(); if (!date){ Ext4.Msg.alert('Error', 'Must provide a date'); @@ -728,17 +631,8 @@ params['TimeOfDay'] = timeOfDay; } - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/ActiveTreatmentsRevised'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/ActiveTreatmentsRevised', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -792,17 +686,8 @@ if (!params) return; - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/WeightSheetsNew'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/WeightSheetsNew', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -850,29 +735,16 @@ var value = field.getValue() || []; value = Ext4.isArray(value) ? value: [value]; - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; if (!value) return; + const params = {}; + if (!Ext4.isEmpty(value)) params.Groups = value; - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/WeightSheetsGroup'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/WeightSheetsGroup', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -935,29 +807,15 @@ } value = Ext4.isArray(val) ? val: [val]; - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; if (!val) return; + const params = {}; if (!Ext4.isEmpty(value)) params.AnimalID = val; - - Ext4.apply(params, { - 'rs:ClearSession': true, - 'rs:Command': 'render' - }); - - var url = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); - var ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); - ssrsFolder = '/' + ssrsFolder + '/' + 'Clinical/WeightSheetsID'; - - url += ssrsFolder + '&' + LABKEY.ActionURL.queryString(params); - return url; + return ONPRC.Utils.getSsrsReportUrl('Clinical/WeightSheetsID', + ONPRC.Utils.getSsrsParams(params, true, true)); }, menu: [{ text: 'Print', @@ -1058,62 +916,27 @@ return items; }, - getParams: function(supressErrors, skipRoomsIfAllSelected){ - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; - - var areas = this.down('#areaField').getValue() || []; - areas = Ext4.isArray(areas) ? areas : [areas]; + getParams: function(suppressErrors, skipRoomsIfAllSelected, roomSeparator) { + var params = {}; var roomField = this.down('#roomField'); var rooms = roomField.getValue() || []; rooms = Ext4.isArray(rooms) ? rooms: [rooms]; - if (!rooms.length && !supressErrors){ + if (!rooms.length && !suppressErrors){ Ext4.Msg.alert('Error', 'Must select an area or room'); - return; + return false; } - //NOTE: we now include both area + rooms if supplied. we reply on the combos to be smart about turning - //off area if the user picked a set of rooms that differers from the definition + //NOTE: we now include both area + rooms if supplied. we rely on the combos to be smart about turning + //off area if the user picked a set of rooms that differs from the definition //if all rooms are selected, treat this the same as if no rooms are selected if (rooms.length){ if (!skipRoomsIfAllSelected || rooms.length < roomField.store.getCount()){ - params.Rooms = rooms; + params.Rooms = roomSeparator ? rooms.join(roomSeparator) : rooms; } } - //NOTE: this is always omitted, since the UI should never allow an area w/o a room and it's easier for SSRS to handle a single param - //if (areas.length){ - // params.Areas = areas.join(';'); - //} - - return params; - }, - - getParamsgroup: function(supressErrors, skipRoomsIfAllSelected){ - var params = { - SessionId: LABKEY.Utils.getSessionID(), - HostName: location.hostname - - }; - - - - var roomFields = this.down('#animal_groups'); - var rooms = roomFields.getValue() || []; - rooms = Ext4.isArray(rooms) ? rooms: [rooms]; - - params.rooms =rooms; - - if (!rooms.length && !supressErrors){ - Ext4.Msg.alert('Error', 'Must select an Animal Group name'); - return; - } - return params; }, diff --git a/onprc_ehr/resources/web/onprc_ehr/Utils.js b/onprc_ehr/resources/web/onprc_ehr/Utils.js index 2df53f50f..c708e0d58 100644 --- a/onprc_ehr/resources/web/onprc_ehr/Utils.js +++ b/onprc_ehr/resources/web/onprc_ehr/Utils.js @@ -9,6 +9,8 @@ ONPRC.Utils = new function(){ return { + sessionId: null, + getNavItems: function(config){ return LABKEY.Ajax.request({ url : LABKEY.ActionURL.buildURL('onprc_ehr', 'getNavItems', config.containerPath), @@ -20,6 +22,60 @@ ONPRC.Utils = new function(){ }), success: LABKEY.Utils.getCallbackWrapper(LABKEY.Utils.getOnSuccess(config), config.scope) }); + }, + + preloadSession: function() { + LABKEY.Ajax.request({ + url: LABKEY.ActionURL.buildURL('onprc_ehr', 'getSessionId'), + method: 'POST', + scope: this, + failure: function() { + console.log('Failed to preload session ID'); + }, + success: LABKEY.Utils.getCallbackWrapper(function(args) { + this.sessionId = args.SessionId; + }, this) + }) + }, + + getSsrsReportUrl: function(reportPath, params) { + const baseUrl = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSServerURL'); + const ssrsFolder = LABKEY.getModuleProperty('ONPRC_EHR', 'SSRSReportFolder'); + return baseUrl + '/' + ssrsFolder + '/' + reportPath + '&' + LABKEY.ActionURL.queryString(params); + }, + + /** + * Handles the SessionID and HostName parameters. + * @param extraParams any extra parameters to add + * @param clearSession whether to add 'rs:ClearSession=true' + * @param command whether to add 'rs:Command=render' + */ + getSsrsParams: function(extraParams, clearSession, command) { + if (!this.sessionId) { + const message = 'Failed to preload session ID for SSRS callback'; + Ext4.Msg.alert('Error', message); + // Bail out since we can't redirect to SSRS as desired + throw message; + } + else { + const result = { + SessionId: this.sessionId, + HostName: location.hostname + } + + if (clearSession) { + result['rs:ClearSession'] = true; + } + if (command) { + result['rs:Command'] = 'render'; + } + + if (extraParams) { + Ext4.apply(result, extraParams); + } + + return result; + } } } } \ No newline at end of file diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRController.java b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRController.java index a660c8da8..824bfd110 100644 --- a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRController.java +++ b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRController.java @@ -15,63 +15,40 @@ */ package org.labkey.onprc_ehr; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; import org.json.JSONArray; import org.json.JSONObject; import org.labkey.api.action.ApiResponse; import org.labkey.api.action.ApiSimpleResponse; -import org.labkey.api.action.ConfirmAction; -import org.labkey.api.action.ExportAction; import org.labkey.api.action.MutatingApiAction; import org.labkey.api.action.ReadOnlyApiAction; -import org.labkey.api.action.SimpleViewAction; import org.labkey.api.action.SpringActionController; import org.labkey.api.data.CompareType; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerManager; -import org.labkey.api.data.CoreSchema; +import org.labkey.api.ehr.security.EHRDataEntryPermission; import org.labkey.api.data.SQLFragment; import org.labkey.api.data.SimpleFilter; import org.labkey.api.data.SqlSelector; import org.labkey.api.data.Table; import org.labkey.api.data.Sort; import org.labkey.api.data.SqlExecutor; -import org.labkey.api.data.Table; import org.labkey.api.data.TableInfo; import org.labkey.api.data.TableSelector; import org.labkey.api.ehr.EHRService; -import org.labkey.api.ehr.security.EHRDataEntryPermission; import org.labkey.api.exp.property.Domain; -import org.labkey.api.files.FileContentService; import org.labkey.api.query.FieldKey; import org.labkey.api.query.QueryService; import org.labkey.api.query.UserSchema; -import org.labkey.api.query.QueryService; -import org.labkey.api.security.AdminConsoleAction; -import org.labkey.api.security.LimitedUser; import org.labkey.api.security.RequiresPermission; -import org.labkey.api.security.RequiresSiteAdmin; -import org.labkey.api.security.User; import org.labkey.api.security.permissions.AdminPermission; import org.labkey.api.security.permissions.ReadPermission; -import org.labkey.api.study.Dataset; -import org.labkey.api.study.DatasetTable; -import org.labkey.api.study.StudyService; import org.labkey.api.util.PageFlowUtil; -import org.labkey.api.util.URLHelper; import org.labkey.api.view.ActionURL; -import org.labkey.api.view.HtmlView; -import org.labkey.api.view.NavTree; -import org.springframework.dao.DataIntegrityViolationException; +import org.labkey.api.study.Dataset; +import org.labkey.api.study.StudyService; import org.springframework.validation.BindException; import org.springframework.validation.Errors; -import org.springframework.web.servlet.ModelAndView; -import java.io.File; -import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @@ -81,7 +58,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Objects; /** * User: bbimber @@ -98,7 +74,7 @@ public ONPRC_EHRController() } @RequiresPermission(ReadPermission.class) - public class GetNavItemsAction extends ReadOnlyApiAction + public static class GetNavItemsAction extends ReadOnlyApiAction { @Override public ApiResponse execute(Object form, BindException errors) @@ -188,291 +164,22 @@ private List getSection(String path) } } - public static class EtlAdminForm - { - private Boolean etlStatus; - private String config; - private String timestamps; - private String labkeyUser; - private String labkeyContainer; - private String jdbcUrl; - private String jdbcDriver; - private String runIntervalInMinutes; - - public Boolean getEtlStatus() - { - return etlStatus; - } - - public void setEtlStatus(Boolean etlStatus) - { - this.etlStatus = etlStatus; - } - - public String getConfig() - { - return config; - } - - public void setConfig(String config) - { - this.config = config; - } - - public String getTimestamps() - { - return timestamps; - } - - public void setTimestamps(String timestamps) - { - this.timestamps = timestamps; - } - - public String getLabkeyUser() - { - return labkeyUser; - } - - public void setLabkeyUser(String labkeyUser) - { - this.labkeyUser = labkeyUser; - } - - public String getLabkeyContainer() - { - return labkeyContainer; - } - - public void setLabkeyContainer(String labkeyContainer) - { - this.labkeyContainer = labkeyContainer; - } - - public String getJdbcUrl() - { - return jdbcUrl; - } - - public void setJdbcUrl(String jdbcUrl) - { - this.jdbcUrl = jdbcUrl; - } - - public String getJdbcDriver() - { - return jdbcDriver; - } - - public void setJdbcDriver(String jdbcDriver) - { - this.jdbcDriver = jdbcDriver; - } - - public String getRunIntervalInMinutes() - { - return runIntervalInMinutes; - } - - public void setRunIntervalInMinutes(String runIntervalInMinutes) - { - this.runIntervalInMinutes = runIntervalInMinutes; - } - } - - @AdminConsoleAction - public class ShowEtlLogAction extends ExportAction - { - @Override - public void export(Object o, HttpServletResponse response, BindException errors) throws Exception - { - PageFlowUtil.streamLogFile(response, 0, getLogFile("ehr-etl.log")); - } - } - - private File getLogFile(String name) - { - File tomcatHome = new File(System.getProperty("catalina.home")); - return new File(tomcatHome, "logs/" + name); - } - - @RequiresPermission(AdminPermission.class) - public class RunEHRTestsAction extends SimpleViewAction - { - public void validateCommand(RunEHRTestsForm form, Errors errors) - { - - } - - public URLHelper getSuccessURL(RunEHRTestsForm form) - { - return getContainer().getStartURL(getUser()); - } - - @Override - public ModelAndView getView(RunEHRTestsForm form, BindException errors) throws Exception - { - StringBuilder msg = new StringBuilder(); - - ONPRC_EHRTestHelper helper = new ONPRC_EHRTestHelper(); - Method method = helper.getClass().getMethod("testBloodCalculation", Container.class, User.class); - method.invoke(helper, getContainer(), getUser()); - - - -// List messages = EHRManager.get().verifyDatasetResources(getContainer(), getUser()); -// for (String message : messages) -// { -// msg.append("\t").append(message).append("
"); -// } -// -// if (messages.size() == 0) -// msg.append("There are no missing files"); - - return new HtmlView(msg.toString()); - } - - @Override - public void addNavTrail(NavTree tree) - { - tree.addChild("ONPRC EHR Tests"); - } - } - - public static class RunEHRTestsForm - { - String[] _tests; - - public String[] getTests() - { - return _tests; - } - - public void setTests(String[] tests) - { - _tests = tests; - } - } - - @RequiresSiteAdmin - public class FixWorkbookPathsAction extends ConfirmAction + /** + * Used to get the HTTP Session ID for SSRS integration. See ONPRC.Utils.getSsrsParams(). + * This allows the cookie to be marked as HTTP-only + */ + @RequiresPermission(ReadPermission.class) + public static class GetSessionIdAction extends MutatingApiAction { @Override - public boolean handlePost(Object form, BindException errors) - { - inspectWorkbooks(true); - - return true; - } - - @Override - public ModelAndView getConfirmView(Object form, BindException errors) - { - List msgs = inspectWorkbooks(false); - - return new HtmlView(StringUtils.join(msgs, "

")); - } - - @Override - public void validateCommand(Object form, Errors errors) - { - - } - - @Override - public @NotNull ActionURL getSuccessURL(Object form) - { - return getContainer().getStartURL(getUser()); - } - - private int getChildFileCount(File f) - { - int count = 0; - if (f.isDirectory()) - { - for (File child : f.listFiles()) - { - count += getChildFileCount(child); - } - } - else - { - count++; - } - - return count; - } - - private List inspectWorkbooks(final boolean makeChanges) + public Object execute(Object o, BindException errors) { - final List msgs = new ArrayList<>(); - TableInfo containers = CoreSchema.getInstance().getTableInfoContainers(); - TableSelector ts = new TableSelector(containers, new SimpleFilter(FieldKey.fromString("type"), "workbook"), null); - ts.forEach(rs -> - { - try - { - Container workbook = ContainerManager.getForId(rs.getString("entityid")); - FileContentService svc = FileContentService.get(); - File parentRoot = svc.getFileRoot(workbook.getParent()); - if (parentRoot != null) - { - File oldDirectory = new File(parentRoot, "workbook-" + workbook.getRowId()); - if (oldDirectory.exists()) - { - File target = new File(parentRoot, workbook.getName()); - if (target.exists()) - { - int count = getChildFileCount(target); - if (count == 0) - { - msgs.add("no files in target, deleting: " + target.getPath() + ", and moving from: " + oldDirectory.getPath()); - if (makeChanges) - { - FileUtils.deleteDirectory(target); - FileUtils.moveDirectory(oldDirectory, target); - svc.fireFileMoveEvent(oldDirectory, target, getUser(), workbook); - } - } - else - { - msgs.add("has files, copy/merge from: " + oldDirectory.getPath() + ", to: " + target.getPath()); - if (makeChanges) - { - FileUtils.copyDirectory(oldDirectory, target); - FileUtils.deleteDirectory(oldDirectory); - svc.fireFileMoveEvent(oldDirectory, target, getUser(), workbook); - } - } - } - else - { - msgs.add("no existing folder, moving from: " + oldDirectory.getPath() + ", to: " + target.getPath()); - if (makeChanges) - { - FileUtils.moveDirectory(oldDirectory, target); - svc.fireFileMoveEvent(oldDirectory, target, getUser(), workbook); - } - } - } - else - { - msgs.add("old directory does not exist: " + oldDirectory.getPath()); - } - } - } - catch (Exception e) - { - throw new RuntimeException(e); - } - }); - - return msgs; + return Map.of("SessionId", getViewContext().getRequest().getSession(true).getId()); } } @RequiresPermission(ReadPermission.class) - public class GetAnimalLockAction extends ReadOnlyApiAction + public static class GetAnimalLockAction extends ReadOnlyApiAction { @Override public ApiResponse execute(Object form, BindException errors) @@ -482,7 +189,7 @@ public ApiResponse execute(Object form, BindException errors) } @RequiresPermission(EHRDataEntryPermission.class) - public class SetAnimalLockAction extends MutatingApiAction + public static class SetAnimalLockAction extends MutatingApiAction { @Override public ApiResponse execute(LockAnimalForm form, BindException errors) diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRTestHelper.java b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRTestHelper.java deleted file mode 100644 index 7d3b489bb..000000000 --- a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRTestHelper.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2013-2014 LabKey Corporation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.labkey.onprc_ehr; - -import org.labkey.api.data.CompareType; -import org.labkey.api.data.Container; -import org.labkey.api.data.SimpleFilter; -import org.labkey.api.data.Table; -import org.labkey.api.data.TableInfo; -import org.labkey.api.data.TableSelector; -import org.labkey.api.query.FieldKey; -import org.labkey.api.query.QueryService; -import org.labkey.api.query.UserSchema; -import org.labkey.api.security.User; -import org.labkey.api.study.Study; -import org.labkey.api.study.StudyService; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * User: bimber - * Date: 1/7/13 - * Time: 9:05 AM - */ -public class ONPRC_EHRTestHelper -{ - public ONPRC_EHRTestHelper() - { - - } - - public void testHousingOverlaps(Container c, User u) - { - - } - - public void testBloodCalculation(Container c, User u) - { - Study study = StudyService.get().getStudy(c); - if (study == null) - return; - - TableInfo bloodDraws = getStudySchema(c, u).getTable("Blood Draws"); - if (bloodDraws == null) - return; - - //insert dummy records - Map record = new HashMap<>(); - Table.insert(u, bloodDraws, record); - - //run query - SimpleFilter filter = new SimpleFilter(FieldKey.fromString("qcstate/label"), "Request: Denied", CompareType.NEQ); - filter.addCondition(FieldKey.fromString("date"), new Date(), CompareType.DATE_GTE); - TableSelector ts = new TableSelector(bloodDraws, filter, null); - - //verify results - //TODO - } - - private UserSchema getStudySchema(Container c, User u) - { - return QueryService.get().getUserSchema(u, c, "study"); - } -} diff --git a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/AbstractGenericONPRC_EHRTest.java b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/AbstractGenericONPRC_EHRTest.java index 73b445dbf..ad5fd9b60 100644 --- a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/AbstractGenericONPRC_EHRTest.java +++ b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/AbstractGenericONPRC_EHRTest.java @@ -65,7 +65,6 @@ public abstract class AbstractGenericONPRC_EHRTest extends AbstractGenericEHRTes protected static final String REFERENCE_STUDY_PATH = "/resources/referenceStudy"; protected static final String GENETICS_PIPELINE_LOG_PATH = REFERENCE_STUDY_PATH + "/kinship/EHR Kinship Calculation/kinship.txt.log"; protected static final String ID_PREFIX = "9999"; - private boolean _hasCreatedBirthRecords = false; //NOTE: use 0-23H to be compatible w/ client-side Ext4 fields protected static final SimpleDateFormat _tf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); @@ -77,7 +76,6 @@ public abstract class AbstractGenericONPRC_EHRTest extends AbstractGenericEHRTes protected static String[] SUBJECTS = {"12345", "23456", "34567", "45678", "56789"}; protected static String[] ROOMS = {"Room1", "Room2", "Room3"}; protected static String[] CAGES = {"A1", "B2", "A3"}; - protected static Integer[] PROJECTS = {12345, 123456, 1234567}; @Override public List getAssociatedModules() @@ -110,7 +108,11 @@ protected void setEHRModuleProperties(ModulePropertyValue... extraProps) new ModulePropertyValue("ONPRC_Billing", "/" + getProjectName(), "BillingContainer_Public", "/" + getContainerPath()), new ModulePropertyValue("SLA", "/" + getProjectName(), "SLAContainer", "/" + getContainerPath()), new ModulePropertyValue("ONPRC_EHR", "/" + getProjectName(), "DCM_NHP_Resources_Container", "/" + getContainerPath()), - new ModulePropertyValue("ONPRC_EHR", "/" + getProjectName(), "MHC_Container", "/" + getContainerPath()) + new ModulePropertyValue("ONPRC_EHR", "/" + getProjectName(), "MHC_Container", "/" + getContainerPath()), + // Set values for rudimentary validation of SSRS reporting links + new ModulePropertyValue("ONPRC_EHR", "/" + getProjectName(), "SSRSReportFolder", "DummySSRSFolder"), + // Treat the LabKey instance as the SSRS target. It'll give a 404 but it'll be enough for testing that we generate links + new ModulePropertyValue("ONPRC_EHR", "/" + getProjectName(), "SSRSServerURL", WebTestHelper.getBaseURL()) ); } @@ -178,8 +180,6 @@ protected void createBirthRecords() throws Exception //force caching of demographics on new IDs. cacheIds(createdIds); - - _hasCreatedBirthRecords = true; } @Override protected void doExtraPreStudyImportSetup() throws IOException, CommandException @@ -417,7 +417,8 @@ protected void ensureRoomExists(final String room) throws Exception { log("creating room: " + room); InsertRowsCommand insertRowsCommand = new InsertRowsCommand("ehr_lookups", "rooms"); - insertRowsCommand.addRow(new HashMap(){ + insertRowsCommand.addRow(new HashMap<>() + { { put("room", room); put("housingType", 1); @@ -466,7 +467,8 @@ protected void ensureGroupMember(final int groupId, final String animalId) throw if (resp.getRowCount().intValue() == 0) { InsertRowsCommand insertRowsCommand = new InsertRowsCommand("study", "animal_group_members"); - insertRowsCommand.addRow(new HashMap(){ + insertRowsCommand.addRow(new HashMap<>() + { { put("Id", animalId); put("date", prepareDate(new Date(), -2, 0)); @@ -489,7 +491,8 @@ protected String getOrCreateSpfFlag(final String name) throws Exception if (objectid == null) { InsertRowsCommand insertRowsCommand = new InsertRowsCommand("ehr_lookups", "flag_values"); - insertRowsCommand.addRow(new HashMap(){ + insertRowsCommand.addRow(new HashMap<>() + { { put("category", "SPF"); put("value", name); diff --git a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_EHRTest.java b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_EHRTest.java index 5dcbd3b73..ed3a2597b 100644 --- a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_EHRTest.java +++ b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_EHRTest.java @@ -70,7 +70,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -82,7 +81,6 @@ public class ONPRC_EHRTest extends AbstractGenericONPRC_EHRTest { protected String PROJECT_NAME = "ONPRC_EHR_TestProject"; - private boolean _hasCreatedBirthRecords = false; private final String ANIMAL_HISTORY_URL = "/" + getProjectName() + "/ehr-animalHistory.view"; @Override @@ -101,13 +99,12 @@ protected String getModuleDirectory() @LogMethod public static void doSetup() throws Exception { - ONPRC_EHRTest initTest = (ONPRC_EHRTest)getCurrentTest(); + ONPRC_EHRTest initTest = getCurrentTest(); initTest.initProject(); initTest.createTestSubjects(); initTest.createBirthRecords(); new RReportHelper(initTest).ensureRConfig(); - } @Override @@ -208,7 +205,7 @@ public void testAssignmentApi() throws Exception final Integer projectId = (Integer)resp.getRows().get(0).get("project"); final String invest = (String) resp.getRows().get(0).get("investigatorId/lastName"); - assertEquals("Investigator name not correct in project table", invest, investLastName); + assertEquals("Investigator name not correct in project table", investLastName, invest); // Try with a row that doesn't pass validation Map protocolCountsRow = new HashMap<>(); @@ -236,15 +233,17 @@ public void testAssignmentApi() throws Exception //create assignment InsertRowsCommand assignmentCommand = new InsertRowsCommand("study", "assignment"); - assignmentCommand.addRow(new HashMap(){ + assignmentCommand.addRow(new HashMap<>() { - put("Id", SUBJECTS[1]); - put("date", prepareDate(new Date(), -10, 0)); - put("objectid", generateGUID()); - put("assignCondition", 202); //Protocol Restricted - put("projectedReleaseCondition", 203); //Surgically Restricted - put("project", projectId); - }}); + { + put("Id", SUBJECTS[1]); + put("date", prepareDate(new Date(), -10, 0)); + put("objectid", generateGUID()); + put("assignCondition", 202); //Protocol Restricted + put("projectedReleaseCondition", 203); //Surgically Restricted + put("project", projectId); + } + }); assignmentCommand.execute(getApiHelper().getConnection(), getContainerPath()); //setting of enddatefinalized, datefinalized @@ -257,7 +256,7 @@ public void testAssignmentApi() throws Exception Assert.assertNull(assignmentResponse1.getRows().get(0).get("enddatefinalized")); final String assignInvest = (String)assignmentResponse1.getRows().get(0).get("project/investigatorId/lastName"); - assertEquals("Investigator name link broken from assignment dataset", assignInvest, investLastName); + assertEquals("Investigator name link broken from assignment dataset", investLastName, assignInvest); final String assignmentLsid1 = (String)assignmentResponse1.getRows().get(0).get("lsid"); @@ -272,12 +271,14 @@ public void testAssignmentApi() throws Exception //terminate, expect animal condition to change based on release condition UpdateRowsCommand assignmentUpdateCommand = new UpdateRowsCommand("study", "assignment"); - assignmentUpdateCommand.addRow(new HashMap(){ + assignmentUpdateCommand.addRow(new HashMap<>() + { { put("lsid", assignmentLsid1); put("enddate", prepareDate(new Date(), -5, 0)); put("releaseCondition", 203); //Surgically Restricted - }}); + } + }); assignmentUpdateCommand.execute(getApiHelper().getConnection(), getContainerPath()); SelectRowsCommand conditionSelect2 = new SelectRowsCommand("study", "flags"); @@ -677,7 +678,7 @@ public void testCustomActions() throws Exception waitForElement(Locator.tagContainingText("span", "Active Groups")); DataRegionTable dr = new DataRegionTable("query", this); clickAndWait(dr.link(0, dr.getColumnIndex("Name"))); - DataRegionTable membersTable = DataRegionTable.DataRegion(getDriver()).find(new BodyWebPart(this.getDriver(), "Group Members", 0)); + DataRegionTable membersTable = DataRegionTable.DataRegion(getDriver()).find(new BodyWebPart<>(this.getDriver(), "Group Members", 0)); Assert.assertEquals(2, membersTable.getDataRowCount()); //more reports @@ -689,22 +690,69 @@ public void testCustomActions() throws Exception @Test public void testPrintableReports() { - // NOTE: these primarily run SSRS, so we will just setup the UI and test whether the URL matches expectations + // NOTE: these primarily run SSRS, so we will just set up the UI and test whether the URL matches expectations goToProjectHome(); waitAndClickAndWait(Locator.tagContainingText("a", "Printable Reports")); waitForElement(Ext4Helper.Locators.ext4Button("Print Version")); - //TODO: test JSESSIONID + // First button is for Active Clinical Cases by Vets. It requires a selection from the Vet drop-down + click(Ext4Helper.Locators.ext4Button("Print Version")); + click(Ext4Helper.Locators.menuItem("Print")); + assertExt4MsgBox("Please choose a vet", "OK"); + _ext4Helper.selectComboBoxItem("Choose Vet:", "vet"); + + click(Ext4Helper.Locators.ext4Button("Print Version")); + click(Ext4Helper.Locators.menuItem("Print")); + + // Be sure to be looking at the separate SSRS tab + switchToWindow(1); + + // We'll be on an error page as we're pointing at a server that doesn't exist. Just check the URL contains + // parameters that we expect + validateSsrsUrlParams("ActiveClinicalCasesVet", "assignedvet"); + + // Close the extra window/tab + switchToMainWindow(); + closeExtraWindows(); + + // Now try the CITES Report + goToProjectHome(); + waitAndClickAndWait(Locator.tagContainingText("a", "More Reports")); + waitAndClickAndWait(Locator.tagContainingText("a", "Cites Report")); + waitForElement(Locator.textarea("animalField")); + setFormElement(Locator.textarea("animalField"), "12345"); + click(Ext4Helper.Locators.ext4Button("Submit")); + validateSsrsUrlParams("CITESReport", "AnimalID"); + } + + private void validateSsrsUrlParams(String reportName, String... additionalParams) + { + String url = getURL().toString(); + + // Sanity check that the session looks plausible + int sessionIdIndex = url.indexOf("SessionId=") + "SessionId=".length(); + assertTrue("Missing SessionId: " + url, sessionIdIndex > 0); + for (int i = 0; i < 10; i++) + { + char c = url.charAt(sessionIdIndex + i); + assertTrue("Unexpected character in SessionId: '" + c + "', full URL was: " + url, (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')); + } + + assertTrue("Didn't find report name in: " + url, url.contains(reportName)); + for (String additionalParam : additionalParams) + { + assertTrue("Didn't find " + additionalParam + " parameter in: " + url, url.contains("&" + additionalParam + "=")); + } } @Test - public void testPedigreeReport() throws Exception + public void testPedigreeReport() { goToProjectHome(); beginAtAnimalHistoryTab(); String id = ID_PREFIX + 10; - AnimalHistoryPage animalHistoryPage = new AnimalHistoryPage(getDriver()); + AnimalHistoryPage animalHistoryPage = new AnimalHistoryPage<>(getDriver()); animalHistoryPage.searchSingleAnimal(id); animalHistoryPage.clickCategoryTab("Genetics"); @@ -788,7 +836,7 @@ public void validatePanelEntry(String panelName, String tissue, String title, St submitBtn.waitForEnabled(); click(Ext4Helper.Locators.ext4Button("Submit")); - if (expectedRows.size() == 0) + if (expectedRows.isEmpty()) { grid.waitForRowCount(1); @@ -830,7 +878,7 @@ public void validatePanelEntry(String panelName, String tissue, String title, St //iterate rows, checking keyboard navigation if (testFieldName != null) { - Integer rowCount = grid.getRowCount(); + int rowCount = grid.getRowCount(); //TODO: test keyboard navigation //grid.startEditing(1, grid.getIndexOfColumn(testFieldName)); @@ -987,8 +1035,8 @@ public void testExamEntry() throws Exception Assert.assertEquals("Incorrect row count", 0, weightGrid.getRowCount()); _helper.addRecordToGrid(weightGrid); Assert.assertEquals("Id not copied property", MORE_ANIMAL_IDS[0], weightGrid.getFieldValue(1, "Id")); - Double weight = 5.3; - weightGrid.setGridCell(1, "weight", weight.toString()); + double weight = 5.3; + weightGrid.setGridCell(1, "weight", Double.toString(weight)); //procedures section waitAndClick(Ext4Helper.Locators.ext4Tab("Procedures")); @@ -1002,9 +1050,9 @@ public void testExamEntry() throws Exception Ext4GridRef drugGrid = _helper.getExt4GridForFormSection("Medications/Treatments Given"); Assert.assertEquals("Incorrect row count", 7, drugGrid.getRowCount()); - Assert.assertEquals(drugGrid.getFieldValue(1, "code"), "E-721X0"); - Assert.assertEquals(drugGrid.getFieldValue(1, "route"), "IM"); - Assert.assertEquals(drugGrid.getFieldValue(1, "dosage"), 25L); + Assert.assertEquals("E-721X0", drugGrid.getFieldValue(1, "code")); + Assert.assertEquals("IM", drugGrid.getFieldValue(1, "route")); + Assert.assertEquals(25L, drugGrid.getFieldValue(1, "dosage")); //verify formulary used drugGrid.setGridCellJS(1, "code", "E-YY035"); @@ -1045,13 +1093,13 @@ public void testExamEntry() throws Exception waitAndClick(Ext4Helper.Locators.ext4Button("Submit")); bloodGrid.waitForRowCount(4); - Assert.assertEquals(bloodGrid.getDateFieldValue(1, "date"), date); - Assert.assertEquals(bloodGrid.getDateFieldValue(2, "date"), date); - Assert.assertEquals(bloodGrid.getDateFieldValue(3, "date"), date2); - Assert.assertEquals(bloodGrid.getDateFieldValue(4, "date"), date2); + Assert.assertEquals(date, bloodGrid.getDateFieldValue(1, "date")); + Assert.assertEquals(date, bloodGrid.getDateFieldValue(2, "date")); + Assert.assertEquals(date2, bloodGrid.getDateFieldValue(3, "date")); + Assert.assertEquals(date2, bloodGrid.getDateFieldValue(4, "date")); - Assert.assertEquals(bloodGrid.getFieldValue(3, "remark"), remark); - Assert.assertEquals(bloodGrid.getFieldValue(4, "remark"), remark); + Assert.assertEquals(remark, bloodGrid.getFieldValue(3, "remark")); + Assert.assertEquals(remark, bloodGrid.getFieldValue(4, "remark")); waitAndClickAndWait(_helper.getDataEntryButton("Save & Close")); waitForElement(Locator.tagWithText("a", "Enter New Data")); @@ -1158,9 +1206,9 @@ public void testWeightEntry() for (int i=0;i animalHistoryPage = new AnimalHistoryPage<>(getDriver()); animalHistoryPage.searchSingleAnimal("99995,99996,99997,99998,99999,999910"); animalHistoryPage.refreshReport(); animalHistoryPage.clickCategoryTab("Genetics") @@ -1771,7 +1819,7 @@ public void testBehaviorRounds() throws Exception Date twoWeeks = prepareDate(DateUtils.truncate(new Date(), Calendar.DATE), 14, 0); Date fourWeeks = prepareDate(DateUtils.truncate(new Date(), Calendar.DATE), 28, 0); Assert.assertEquals(twoWeeks, caseField1.getDateValue()); - Assert.assertEquals(null, changeField.getValue()); + Assert.assertNull(changeField.getValue()); changeField.setValue(_df.format(fourWeeks)); click(Locator.id(changeBtn.getId())); Assert.assertEquals(fourWeeks, caseField1.getDateValue()); @@ -1785,7 +1833,7 @@ public void testBehaviorRounds() throws Exception public void testClinicalHistoryPanelOptions(){ beginAtAnimalHistoryTab(); openClinicalHistoryForAnimal("TEST1020148"); - List expectedLabels = new ArrayList( + List expectedLabels = new ArrayList<>( Arrays.asList( "Alert", "Antibiotic Sensitivity",