diff --git a/app/routes/appointments/medical-information.js b/app/routes/appointments/medical-information.js index 11dd646d..143c06b1 100644 --- a/app/routes/appointments/medical-information.js +++ b/app/routes/appointments/medical-information.js @@ -67,6 +67,37 @@ module.exports = (router) => { } ) + // Save pregnancy/breastfeeding from modal form + router.post( + '/clinics/:clinicId/appointments/:appointmentId/medical-information/pregnancy-and-breastfeeding-save', + (req, res) => { + const { clinicId, appointmentId } = req.params + const data = req.session.data + + const postedFactors = req.body?.breastDensityFactors + const factors = ( + Array.isArray(postedFactors) + ? postedFactors + : postedFactors + ? [postedFactors] + : [] + ).filter((factor) => factor && factor !== '_unchecked') + + if (data.appointment?.id !== appointmentId) { + res.status(409).send() + return + } + + const medicalInformation = data.appointment.medicalInformation || {} + medicalInformation.breastDensityFactors = factors + data.appointment.medicalInformation = medicalInformation + + delete data.breastDensityFactors + + res.redirect(modalBreakout(`/clinics/${clinicId}/appointments/${appointmentId}/review-medical-information`)) + } + ) + // Save breast features (includes converting JSON string to structured data) router.post( '/clinics/:clinicId/appointments/:appointmentId/medical-information/record-breast-features/save', diff --git a/app/views/_includes/forms/breast-density-factors.njk b/app/views/_includes/forms/breast-density-factors.njk index a8a211e2..6439655f 100644 --- a/app/views/_includes/forms/breast-density-factors.njk +++ b/app/views/_includes/forms/breast-density-factors.njk @@ -105,15 +105,16 @@ value: { html: hrtInputHtml if allowEdits else hrtSummaryHtml } - }, - { - key: { - text: "Pregnant or breastfeeding" - }, - value: { - html: pregnantOrBreastfeedingInputHtml if allowEdits else pregnantOrBreastfeedingSummaryHtml - } } ] } | removeLastRowBorder ) }} + +
+ {{ button({ + text: "Add pregnancy and breastfeeding", + href: contextUrl + "/medical-information/pregnancy-and-breastfeeding", + variant: "secondary", + small: true + } | openInModal) }} +
diff --git a/app/views/appointments/medical-information/pregnancy-and-breastfeeding.html b/app/views/appointments/medical-information/pregnancy-and-breastfeeding.html new file mode 100644 index 00000000..584735f1 --- /dev/null +++ b/app/views/appointments/medical-information/pregnancy-and-breastfeeding.html @@ -0,0 +1,40 @@ +{# app/views/appointments/medical-information/pregnancy-and-breastfeeding.html #} + +{% extends parentLayout or 'layout-appointment.html' %} + +{% set pageHeading = "Pregnancy and breastfeeding" %} +{% set formAction = "./pregnancy-and-breastfeeding-save" %} + +{% block pageContent %} + + {% set breastDensityFactors = appointment.medicalInformation | getBreastDensityFactors %} + +