diff --git a/.eslintrc.js b/.eslintrc.js index 57a24fa0..e2ceca7d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,7 +4,6 @@ module.exports = { extends: ['prettier'], ignorePatterns: [ - '**/app/**', '**/public/**', // Enable dotfile linting @@ -44,6 +43,14 @@ module.exports = { 'jest-dom' ], rules: { + // Allow unused variables via spread syntax + '@typescript-eslint/no-unused-vars': [ + 'error', + { + ignoreRestSiblings: true + } + ], + // Always import Node.js packages from `node:*` 'import/enforce-node-protocol-usage': ['error', 'always'], @@ -65,6 +72,14 @@ module.exports = { } ], + // Allow extra nested properties in JSDoc + 'jsdoc/check-param-names': [ + 'warn', + { + disableExtraPropertyReporting: true + } + ], + // JSDoc blocks are optional by default 'jsdoc/require-jsdoc': 'off', @@ -90,6 +105,13 @@ module.exports = { { startLines: 1 } + ], + + 'promise/catch-or-return': [ + 'error', + { + allowFinally: true + } ] }, settings: { diff --git a/app/assets/javascript/custom-elements/is-sticky.js b/app/assets/javascript/custom-elements/is-sticky.js index 22c9f6bb..2915de4b 100644 --- a/app/assets/javascript/custom-elements/is-sticky.js +++ b/app/assets/javascript/custom-elements/is-sticky.js @@ -34,6 +34,7 @@ const IsStickyComponent = class extends HTMLElement { let inThrottle return function () { const args = arguments + // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this if (!inThrottle) { callback.apply(context, args) diff --git a/app/assets/javascript/expanded-state-tracker.js b/app/assets/javascript/expanded-state-tracker.js index 43fcac29..e997bc3e 100644 --- a/app/assets/javascript/expanded-state-tracker.js +++ b/app/assets/javascript/expanded-state-tracker.js @@ -69,7 +69,7 @@ const path = window.location.pathname // Clear if on main event page (not sub-pages) - if (path.match(/^\/clinics\/[^\/]+\/events\/[^\/]+\/?$/)) { + if (path.match(/^\/clinics\/[^/]+\/events\/[^/]+\/?$/)) { clearAllExpandedStates() } } diff --git a/app/assets/javascript/mammogram-viewer.js b/app/assets/javascript/mammogram-viewer.js index ef6fbb5b..45ec83a6 100644 --- a/app/assets/javascript/mammogram-viewer.js +++ b/app/assets/javascript/mammogram-viewer.js @@ -88,7 +88,7 @@ const MammogramViewer = { mammogramWindow = null localStorage.removeItem(VIEWER_STORAGE_KEY) } - } catch (e) { + } catch { mammogramWindow = null localStorage.removeItem(VIEWER_STORAGE_KEY) } @@ -207,7 +207,9 @@ const MammogramViewer = { if (mammogramWindow) { mammogramWindow.close() } - } catch (err) {} + } catch { + // Ignore errors + } localStorage.removeItem(VIEWER_STORAGE_KEY) this.openNew(participantName) @@ -273,7 +275,7 @@ const MammogramViewer = { // Only check our direct reference, don't try to find windows try { return mammogramWindow && !mammogramWindow.closed - } catch (e) { + } catch { // If there's an error accessing the window property, it's likely closed return false } @@ -307,6 +309,8 @@ window.addEventListener('beforeunload', function () { if (window.inReadingContext && mammogramWindow && !mammogramWindow.closed) { try { localStorage.setItem('wasInReadingContext', 'true') - } catch (e) {} + } catch { + // Ignore errors + } } }) diff --git a/app/assets/javascript/modal.js b/app/assets/javascript/modal.js index 089155de..91d7dfac 100644 --- a/app/assets/javascript/modal.js +++ b/app/assets/javascript/modal.js @@ -116,7 +116,7 @@ class AppModal { this.handleAjax(actionElement) break - default: + default: { // Fire custom event for other action types const customEvent = new CustomEvent('modal:action', { detail: { @@ -127,6 +127,7 @@ class AppModal { } }) this.modal.dispatchEvent(customEvent) + } } } @@ -154,6 +155,7 @@ class AppModal { body: method !== 'GET' ? JSON.stringify(modalData) : null }) .then((response) => { + // eslint-disable-next-line promise/always-return if (response.ok) { if (closeOnSuccess) { this.close() diff --git a/app/config.js b/app/config.js index 6eef20ee..973b28ba 100644 --- a/app/config.js +++ b/app/config.js @@ -1,7 +1,7 @@ // app/config.js // Use this file to change prototype configuration. -const path = require('path') +const path = require('node:path') module.exports = { // Service name diff --git a/app/data/session-data-defaults.js b/app/data/session-data-defaults.js index 44807167..604c4288 100644 --- a/app/data/session-data-defaults.js +++ b/app/data/session-data-defaults.js @@ -1,14 +1,16 @@ // app/data/session-data-defaults.js -const users = require('./users') // Used to simulate in prototype -const breastScreeningUnits = require('./breast-screening-units') // All breast screening units -const allBreastScreeningUnits = require('./all-breast-screening-units') -const path = require('path') -const fs = require('fs') -const { needsRegeneration } = require('../lib/utils/regenerate-data') +const fs = require('node:fs') +const path = require('node:path') + const config = require('../config') +const { needsRegeneration } = require('../lib/utils/regenerate-data') + +const allBreastScreeningUnits = require('./all-breast-screening-units') +const breastScreeningUnits = require('./breast-screening-units') +const users = require('./users') // Check if generated data folder exists and create if needed const generatedDataPath = path.join(__dirname, 'generated') @@ -48,8 +50,11 @@ if (needsRegeneration(generationInfo)) { // Load generated data try { + // eslint-disable-next-line n/no-unpublished-require participants = require('./generated/participants.json').participants + // eslint-disable-next-line n/no-unpublished-require clinics = require('./generated/clinics.json').clinics + // eslint-disable-next-line n/no-unpublished-require events = require('./generated/events.json').events } catch (err) { console.warn('Error loading generated data:', err) diff --git a/app/filters.js b/app/filters.js index 9fa76049..52bd60ca 100644 --- a/app/filters.js +++ b/app/filters.js @@ -1,9 +1,9 @@ // app/filters.js -const fs = require('fs') -const path = require('path') +const fs = require('node:fs') +const path = require('node:path') -module.exports = function (env) { +module.exports = function () { /* eslint-disable-line func-names,no-unused-vars */ /** * Instantiate object used to store the methods registered as a diff --git a/app/filters/tags.js b/app/filters/tags.js index 9f00db92..ca978458 100644 --- a/app/filters/tags.js +++ b/app/filters/tags.js @@ -1,8 +1,9 @@ // app/filters/tags.js const { safe: nunjucksSafe } = require('nunjucks/src/filters') -const { formatWords, sentenceCase, snakeCase } = require('../lib/utils/strings') + const { getStatusTagColour, getStatusText } = require('../lib/utils/status') +const { formatWords, sentenceCase, snakeCase } = require('../lib/utils/strings') /** * Convert a status string into an NHS tag @@ -38,7 +39,7 @@ const toTag = (status, options = {}) => { .join(' ') // Generate tag HTML - const idAttr = options.id ? ` id=\"${options.id}\"` : '' + const idAttr = options.id ? ` id="${options.id}"` : '' return nunjucksSafe(`${text}`) } diff --git a/app/lib/generate-seed-data.js b/app/lib/generate-seed-data.js index 386e3768..75e5aeee 100644 --- a/app/lib/generate-seed-data.js +++ b/app/lib/generate-seed-data.js @@ -3,27 +3,26 @@ // to run: node app/lib/generate-seed-data.js // can also be run from ui at localhost:3000/settings +const fs = require('node:fs') +const path = require('node:path') + const dayjs = require('dayjs') -const fs = require('fs') -const path = require('path') -const config = require('../config') const weighted = require('weighted') -const { generateParticipant } = require('./generators/participant-generator') -const { generateClinicsForBSU } = require('./generators/clinic-generator') -const { generateEvent } = require('./generators/event-generator') -const { getCurrentRiskLevel } = require('./utils/participants') -const { generateReadingData } = require('./generators/reading-generator') - -const riskLevels = require('../data/risk-levels') - +const config = require('../config') // Load existing data const breastScreeningUnits = require('../data/breast-screening-units') const ethnicities = require('../data/ethnicities') - +const riskLevels = require('../data/risk-levels') // Hardcoded scenarios for user research const testScenarios = require('../data/test-scenarios') +const { generateClinicsForBSU } = require('./generators/clinic-generator') +const { generateEvent } = require('./generators/event-generator') +const { generateParticipant } = require('./generators/participant-generator') +const { generateReadingData } = require('./generators/reading-generator') +const { getCurrentRiskLevel } = require('./utils/participants') + // Create an index of participants by risk level for efficient lookup // Create an index of participants by risk level for efficient lookup const createParticipantIndices = (participants, clinicDate, events = []) => { @@ -129,9 +128,6 @@ const generateClinicsForDay = ( }) : [] - // Pre-filter eligible participants once - const clinicDate = dayjs(date) - // Generate clinics for this day const newClinics = generateClinicsForBSU({ date: date.toDate(), diff --git a/app/lib/generators/clinic-generator.js b/app/lib/generators/clinic-generator.js index d80efc5f..88bbeed1 100644 --- a/app/lib/generators/clinic-generator.js +++ b/app/lib/generators/clinic-generator.js @@ -1,10 +1,11 @@ // app/lib/generators/clinic-generator.js const { faker } = require('@faker-js/faker') -const generateId = require('../utils/id-generator') const dayjs = require('dayjs') const weighted = require('weighted') + const config = require('../../config') +const generateId = require('../utils/id-generator') const determineClinicType = (location, breastScreeningUnit) => { // First check location-specific service types @@ -246,7 +247,7 @@ const generateClinicsForBSU = ({ date, breastScreeningUnit }) => { return [clinic] } else { // For paired sessions, create two clinics - return selectedPattern.sessions.map((sessionTimes, sessionIndex) => { + return selectedPattern.sessions.map(() => { const clinic = generateClinic( date, location, diff --git a/app/lib/generators/event-generator.js b/app/lib/generators/event-generator.js index fb0ac256..0b5f06f6 100644 --- a/app/lib/generators/event-generator.js +++ b/app/lib/generators/event-generator.js @@ -1,17 +1,19 @@ // app/lib/generators/event-generator.js -const generateId = require('../utils/id-generator') const { faker } = require('@faker-js/faker') -const weighted = require('weighted') const dayjs = require('dayjs') +const weighted = require('weighted') + const config = require('../../config') -const { STATUS_GROUPS, isCompleted, isFinal } = require('../utils/status') +const users = require('../../data/users') +const generateId = require('../utils/id-generator') +const { STATUS_GROUPS, isCompleted } = require('../utils/status') + const { generateMammogramImages } = require('./mammogram-generator') -const { generateSymptoms } = require('./symptoms-generator') const { generateSpecialAppointment } = require('./special-appointment-generator') -const users = require('../../data/users') +const { generateSymptoms } = require('./symptoms-generator') const NOT_SCREENED_REASONS = [ 'Recent mammogram at different facility', @@ -71,7 +73,6 @@ const generateEvent = ({ slot, participant, clinic, - outcomeWeights, forceStatus = null, id = null, specialAppointmentOverride = null, @@ -266,43 +267,6 @@ const generateEvent = ({ return eventBase } -const generateStatusHistory = (finalStatus, dateTime) => { - const history = [] - const baseDate = new Date(dateTime) - - // Always starts with scheduled status - history.push({ - status: 'event_scheduled', - timestamp: new Date(baseDate.getTime() - 24 * 60 * 60 * 1000).toISOString() // Day before - }) - - // Add intermediate statuses based on final status - if (isCompleted(finalStatus)) { - history.push( - { - status: 'checked_in', - timestamp: new Date(baseDate.getTime() - 10 * 60 * 1000).toISOString() // 10 mins before - }, - // { - // status: 'in_progress', - // timestamp: new Date(baseDate).toISOString() - // }, - { - status: finalStatus, - timestamp: new Date(baseDate.getTime() + 15 * 60 * 1000).toISOString() // 15 mins after - } - ) - } else { - // For did_not_attend and attended_not_screened, just add the final status - history.push({ - status: finalStatus, - timestamp: new Date(baseDate.getTime() + 15 * 60 * 1000).toISOString() - }) - } - - return history -} - module.exports = { generateEvent } diff --git a/app/lib/generators/mammogram-generator.js b/app/lib/generators/mammogram-generator.js index e5cd706f..5aad73bb 100644 --- a/app/lib/generators/mammogram-generator.js +++ b/app/lib/generators/mammogram-generator.js @@ -1,9 +1,7 @@ // app/lib/generators/mammogram-generator.js const { faker } = require('@faker-js/faker') -const generateId = require('../utils/id-generator') const dayjs = require('dayjs') -const weighted = require('weighted') const STANDARD_VIEWS = [ { side: 'right', view: 'mediolateral oblique' }, diff --git a/app/lib/generators/participant-generator.js b/app/lib/generators/participant-generator.js index 63d08361..8ab65f17 100644 --- a/app/lib/generators/participant-generator.js +++ b/app/lib/generators/participant-generator.js @@ -1,12 +1,14 @@ // app/lib/generators/participant-generator.js const { faker } = require('@faker-js/faker') -const generateId = require('../utils/id-generator') -const weighted = require('weighted') -const { generateBSUAppropriateAddress } = require('./address-generator') +const dayjs = require('dayjs') const _ = require('lodash') +const weighted = require('weighted') + const riskLevels = require('../../data/risk-levels') -const dayjs = require('dayjs') +const generateId = require('../utils/id-generator') + +const { generateBSUAppropriateAddress } = require('./address-generator') /** * Generate a precise date of birth within the specified age range diff --git a/app/lib/generators/reading-generator.js b/app/lib/generators/reading-generator.js index 5af21e33..ef8985cf 100644 --- a/app/lib/generators/reading-generator.js +++ b/app/lib/generators/reading-generator.js @@ -2,6 +2,7 @@ const dayjs = require('dayjs') const weighted = require('weighted') + const { eligibleForReading } = require('../utils/status') /** @@ -151,7 +152,6 @@ const generateReadingData = (events, users) => { // NEW: Add clinic where both reads are completed, but neither by the current user if (clinics.length >= 3) { - let count = 0 // Use the next clinic for this scenario const clinic = clinics[2] console.log( @@ -190,7 +190,6 @@ const generateReadingData = (events, users) => { } updatedEventIds.add(event.id) - count++ }) // Add second reads by second user to 60% of events diff --git a/app/lib/generators/symptoms-generator.js b/app/lib/generators/symptoms-generator.js index 4c9b2024..f44add05 100644 --- a/app/lib/generators/symptoms-generator.js +++ b/app/lib/generators/symptoms-generator.js @@ -2,6 +2,7 @@ const { faker } = require('@faker-js/faker') const weighted = require('weighted') + const generateId = require('../utils/id-generator') // Updated symptom types to match the form diff --git a/app/lib/utils/dates.js b/app/lib/utils/dates.js index f0730601..a2612557 100644 --- a/app/lib/utils/dates.js +++ b/app/lib/utils/dates.js @@ -1,14 +1,14 @@ // app/lib/utils/dates.js const dayjs = require('dayjs') -const relativeTime = require('dayjs/plugin/relativeTime') const advancedFormat = require('dayjs/plugin/advancedFormat') -const utc = require('dayjs/plugin/utc') -const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') const isToday = require('dayjs/plugin/isToday') const isTomorrow = require('dayjs/plugin/isTomorrow') const isYesterday = require('dayjs/plugin/isYesterday') -const customParseFormat = require('dayjs/plugin/customParseFormat') +const relativeTime = require('dayjs/plugin/relativeTime') +const timezone = require('dayjs/plugin/timezone') +const utc = require('dayjs/plugin/utc') // Add plugins dayjs.extend(relativeTime) diff --git a/app/lib/utils/objects.js b/app/lib/utils/objects.js index ae0f8bf6..48c9360c 100644 --- a/app/lib/utils/objects.js +++ b/app/lib/utils/objects.js @@ -1,7 +1,5 @@ // app/lib/utils/objects.js -const _ = require('lodash') - /** * Extract all values from an object into a flat array * diff --git a/app/lib/utils/participants.js b/app/lib/utils/participants.js index 1c4297e2..ff6cbf7d 100644 --- a/app/lib/utils/participants.js +++ b/app/lib/utils/participants.js @@ -1,6 +1,7 @@ // app/lib/utils/participants.js const { safe: nunjucksSafe } = require('nunjucks/src/filters') + const riskLevels = require('../../data/risk-levels.js') /** diff --git a/app/lib/utils/random.js b/app/lib/utils/random.js index 4339f117..5ea65957 100644 --- a/app/lib/utils/random.js +++ b/app/lib/utils/random.js @@ -1,7 +1,7 @@ // app/lib/utils/random.js -const weighted = require('weighted') const { faker } = require('@faker-js/faker') +const weighted = require('weighted') // Keep track of function calls by name for each page render let callSequence = {} diff --git a/app/lib/utils/reading.js b/app/lib/utils/reading.js index 5ad9035a..e4506c8b 100644 --- a/app/lib/utils/reading.js +++ b/app/lib/utils/reading.js @@ -1,8 +1,9 @@ // app/lib/utils/.js const dayjs = require('dayjs') -const { eligibleForReading, getStatusTagColour } = require('./status') + const { isWithinDayRange } = require('./dates') +const { eligibleForReading, getStatusTagColour } = require('./status') // /** // * Get first unread event in a clinic @@ -207,7 +208,6 @@ const calculateReadingMetrics = function ( // Count first/second reads by this user events.forEach((event) => { - const metadata = getReadingMetadata(event) const reads = event.imageReading?.reads ? Object.values(event.imageReading.reads) : [] @@ -660,9 +660,7 @@ const getFirstAvailableClinic = (data) => { * Get all recent clinics that are available for reading * Includes completed screening events and reading progress */ -const getReadingClinics = (data, options = {}) => { - const {} = options - +const getReadingClinics = (data) => { return data.clinics .filter((clinic) => data.events.some((e) => e.clinicId === clinic.id && eligibleForReading(e)) diff --git a/app/lib/utils/regenerate-data.js b/app/lib/utils/regenerate-data.js index 8633ec03..e5cc4893 100644 --- a/app/lib/utils/regenerate-data.js +++ b/app/lib/utils/regenerate-data.js @@ -1,9 +1,11 @@ // app/lib/utils/regenerate-data.js -const generateData = require('../generate-seed-data') -const { join, resolve } = require('path') +const fs = require('node:fs') +const { join, resolve } = require('node:path') + const dayjs = require('dayjs') -const fs = require('fs') + +const generateData = require('../generate-seed-data') async function regenerateData(req) { const dataDirectory = join(__dirname, '../../data') @@ -15,11 +17,13 @@ async function regenerateData(req) { await generateData() // Clear the require cache for session data defaults + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete require.cache[require.resolve(sessionDataPath)] // Clear cache for the generated JSON files Object.keys(require.cache).forEach((key) => { if (key.startsWith(generatedDataPath)) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete require.cache[key] } }) diff --git a/app/lib/utils/status.js b/app/lib/utils/status.js index de9978b3..85463c0b 100644 --- a/app/lib/utils/status.js +++ b/app/lib/utils/status.js @@ -175,17 +175,6 @@ const getStatusTagColour = (status) => { 'to_review': 'blue', 'reviewed': 'green', - // Image reading - 'not_started': 'grey', - 'not_provided': 'grey', - 'not_read': 'grey', - 'skipped': 'white', - - // Image reading results - 'normal': 'green', - 'recall_for_assessment': 'red', - 'technical_recall': 'orange', - // Image status 'available': 'green', 'requested': 'orange', @@ -199,10 +188,10 @@ const getStatusTagColour = (status) => { // Reading statuses 'waiting_for_1st_read': 'grey', 'waiting_for_2nd_read': 'grey', + 'not_provided': 'grey', 'not_started': 'grey', 'skipped': 'grey', 'not_read': 'grey', - 'complete': 'green', 'partial_first_read': 'blue', 'first_read_complete': 'yellow', 'partial_second_read': 'blue', diff --git a/app/routes.js b/app/routes.js index b2cfdfa7..7d04644c 100644 --- a/app/routes.js +++ b/app/routes.js @@ -2,11 +2,12 @@ // External dependencies const express = require('express') + +const { resetCallSequence } = require('./lib/utils/random') const { regenerateData, needsRegeneration } = require('./lib/utils/regenerate-data') -const { resetCallSequence } = require('./lib/utils/random') const router = express.Router() diff --git a/app/routes/clinics.js b/app/routes/clinics.js index 0dddd6eb..9aca583f 100644 --- a/app/routes/clinics.js +++ b/app/routes/clinics.js @@ -1,15 +1,12 @@ // app/routes/clinics.js const dayjs = require('dayjs') + const { getFilteredClinics, getClinicEvents } = require('../lib/utils/clinics') -const { filterEventsByStatus } = require('../lib/utils/status') -const { - getReturnUrl, - urlWithReferrer, - appendReferrer -} = require('../lib/utils/referrers') -const { getParticipant } = require('../lib/utils/participants') const { updateEventStatus } = require('../lib/utils/event-data') +const { getParticipant } = require('../lib/utils/participants') +const { getReturnUrl } = require('../lib/utils/referrers') +const { filterEventsByStatus } = require('../lib/utils/status') /** * Get clinic and its related data from id diff --git a/app/routes/events.js b/app/routes/events.js index 924c252d..6af21e37 100644 --- a/app/routes/events.js +++ b/app/routes/events.js @@ -2,14 +2,10 @@ const dayjs = require('dayjs') const _ = require('lodash') -const { - getParticipant, - getFullName, - saveTempParticipantToParticipant -} = require('../lib/utils/participants') const { generateMammogramImages } = require('../lib/generators/mammogram-generator') +const { createDynamicTemplateRoute } = require('../lib/utils/dynamic-routing') const { getEvent, saveTempEventToEvent, @@ -18,11 +14,10 @@ const { } = require('../lib/utils/event-data') const generateId = require('../lib/utils/id-generator') const { - getReturnUrl, - urlWithReferrer, - appendReferrer -} = require('../lib/utils/referrers') -const { createDynamicTemplateRoute } = require('../lib/utils/dynamic-routing') + getFullName, + saveTempParticipantToParticipant +} = require('../lib/utils/participants') +const { getReturnUrl, urlWithReferrer } = require('../lib/utils/referrers') /** * Get single event and its related data @@ -1062,10 +1057,7 @@ module.exports = (router) => { const { clinicId, eventId } = req.params const data = req.session.data - const supportTypes = data.event?.specialAppointment?.supportTypes const temporaryReasons = data.event?.specialAppointment?.temporaryReasons - const temporaryReasonsList = - data.event?.specialAppointment?.temporaryReasonsList if (temporaryReasons === 'no') { delete data.event.specialAppointment.temporaryReasonsList diff --git a/app/routes/participants.js b/app/routes/participants.js index f33d83be..eaa89e00 100644 --- a/app/routes/participants.js +++ b/app/routes/participants.js @@ -1,18 +1,13 @@ // app/routes/participants.js +const { createDynamicTemplateRoute } = require('../lib/utils/dynamic-routing') const { getParticipant, sortBySurname, getParticipantClinicHistory, saveTempParticipantToParticipant } = require('../lib/utils/participants') -const { findById } = require('../lib/utils/arrays') -const { createDynamicTemplateRoute } = require('../lib/utils/dynamic-routing') -const { - getReturnUrl, - urlWithReferrer, - appendReferrer -} = require('../lib/utils/referrers') +const { getReturnUrl } = require('../lib/utils/referrers') module.exports = (router) => { // Set clinics to active in nav for all urls starting with /clinics diff --git a/app/routes/reading.js b/app/routes/reading.js index c84840a3..249ee07d 100644 --- a/app/routes/reading.js +++ b/app/routes/reading.js @@ -1,13 +1,11 @@ // app/routes/image-reading.js -const { getEventData } = require('../lib/utils/event-data') +const dayjs = require('dayjs') + +const generateId = require('../lib/utils/id-generator') const { getFirstUserReadableEvent, - getReadableEventsForClinic, getReadingStatusForEvents, getReadingClinics, - getReadingProgress, - hasReads, - canUserReadEvent, writeReading, createReadingBatch, getFirstReadableEventInBatch, @@ -17,9 +15,7 @@ const { skipEventInBatch, getReadingMetadata } = require('../lib/utils/reading') -const { camelCase, snakeCase } = require('../lib/utils/strings') -const dayjs = require('dayjs') -const generateId = require('../lib/utils/id-generator') +const { snakeCase } = require('../lib/utils/strings') module.exports = (router) => { // Set nav state @@ -82,7 +78,7 @@ module.exports = (router) => { // Redirect to the batch view res.redirect(`/reading/batch/${batch.id}`) - } catch (error) { + } catch { console.log('Could not load clinic for reading') res.redirect('/reading') } @@ -117,7 +113,7 @@ module.exports = (router) => { // No readable events, go to batch overview res.redirect(`/reading/batch/${batch.id}`) } - } catch (error) { + } catch { console.log('Could not start reading clinic') res.redirect('/reading') } @@ -347,7 +343,7 @@ module.exports = (router) => { router.get( '/reading/batch/:batchId/events/:eventId/:step', (req, res, next) => { - const { batchId, eventId, step } = req.params + const { step } = req.params const validSteps = [ 'assessment', 'normal-details', @@ -520,7 +516,7 @@ module.exports = (router) => { // }) // } // } - } catch (e) { + } catch { errors.push({ text: `Mark the location on both ${annotationTemp.side} breast views`, name: 'markerPositions', @@ -618,7 +614,6 @@ module.exports = (router) => { if (data.imageReadingTemp?.annotationTemp) { const side = annotationTemp.side const comment = annotationTemp.comment - const isNewAnnotation = !annotationTemp.id if (!side) { return res.redirect( diff --git a/app/routes/settings.js b/app/routes/settings.js index 7b3535a7..dcaa1c58 100644 --- a/app/routes/settings.js +++ b/app/routes/settings.js @@ -1,6 +1,5 @@ // app/routes/settings.js -const path = require('path') const { regenerateData } = require('../lib/utils/regenerate-data') module.exports = (router) => {