diff --git a/app/enums.js b/app/enums.js index 911378259..f8a6b6718 100644 --- a/app/enums.js +++ b/app/enums.js @@ -30,7 +30,8 @@ export const Adjustment = { LastAppointment: 'Needs the last appointment', Privacy: 'Needs a private space', HomeVisit: 'Needs a home visit', - Other: 'Other reasonable adjustment' + Other: 'Other reasonable adjustment', + None: 'No adjustments required' } /** @@ -225,7 +226,8 @@ export const Impairment = { Memory: 'Memory', MentalHealth: 'Mental health', Communicative: 'Social and/or communication differences', - Other: 'Other' + Other: 'Other', + None: 'None' } /** diff --git a/app/locales/en.js b/app/locales/en.js index 5ba8f3fd2..b5fc35997 100644 --- a/app/locales/en.js +++ b/app/locales/en.js @@ -260,13 +260,13 @@ export const en = { 'Book an appointment for the MenACWY and Td/IPV vaccinations', [SessionPresetName.HPV]: 'Book an appointment for the HPV vaccination', [SessionPresetName.MMR]: - 'Book an appointment for an MMR or MMR(V) catch-up vaccination' + 'Book an appointment for an MMR or MMRV catch-up vaccination' }, primaryProgrammeInSentence: { [SessionPresetName.Flu]: 'flu', [SessionPresetName.Doubles]: 'MenACWY and Td/IPV', [SessionPresetName.HPV]: 'HPV', - [SessionPresetName.MMR]: 'MMR or MMR(V)' + [SessionPresetName.MMR]: 'MMR and MMRV' }, confirm: { title: 'Book an appointment', @@ -650,6 +650,9 @@ export const en = { }, other: { label: 'Other' + }, + none: { + label: 'No, my child does not need any adjustments' } }, adjustmentsOther: { @@ -676,6 +679,9 @@ export const en = { }, communicative: { hint: 'For example, related to autism or ADHD (attention deficit hyperactivity disorder)' + }, + none: { + label: 'No, my child has no impairments' } }, impairmentsOther: { diff --git a/app/models/child.js b/app/models/child.js index f32c5f346..187df7188 100644 --- a/app/models/child.js +++ b/app/models/child.js @@ -150,6 +150,17 @@ export class Child { return `${this.formatted.dob} (aged ${this.age})` } + /** + * Can the child be offered the MMRV vaccine rather than MMR? + * + * Note: This property makes no assessment of their need for a vaccination + * + * @returns {boolean} - true if can be offered MMRV, or false if they should only receive MMR + */ + get canBeOfferedMmrv() { + return this.dob?.getFullYear() >= 2020 + } + /** * Get formatted ethnicity (ethnic group and background) * diff --git a/app/views/book-into-a-clinic/form/adjustments.njk b/app/views/book-into-a-clinic/form/adjustments.njk index 8a34a2a2d..1440ef510 100644 --- a/app/views/book-into-a-clinic/form/adjustments.njk +++ b/app/views/book-into-a-clinic/form/adjustments.njk @@ -16,29 +16,16 @@ } }, items: [{ - text: __("consent.child.adjustments.guideDog.label"), - value: Adjustment.GuideDog - }, { text: __("consent.child.adjustments.distraction.label"), - value: Adjustment.Distraction - }, { - text: __("consent.child.adjustments.extendedAppointment.label"), - value: Adjustment.ExtendedAppointment - }, { - text: __("consent.child.adjustments.firstAppointment.label"), - value: Adjustment.FirstAppointment - }, { - text: __("consent.child.adjustments.lastAppointment.label"), - value: Adjustment.LastAppointment + value: Adjustment.Distraction, + exclusiveGroup: "adjustments-list" }, { text: __("consent.child.adjustments.privacy.label"), value: Adjustment.Privacy, hint: { text: __("consent.child.adjustments.privacy.hint") - } - }, { - text: __("consent.child.adjustments.homeVisit.label"), - value: Adjustment.HomeVisit + }, + exclusiveGroup: "adjustments-list" }, { text: __("consent.child.adjustments.other.label"), value: Adjustment.Other, @@ -47,7 +34,17 @@ label: { text: __("consent.child.adjustmentsOther.title") }, decorate: "consent.child.adjustmentsOther" }) - } + }, + exclusiveGroup: "adjustments-list" + }, + { + divider: 'or' + }, + { + text: __("consent.child.adjustments.none.label"), + value: Adjustment.None, + exclusiveGroup: "adjustments-list", + exclusive: true }], decorate: "consent.child.adjustments" }) }} diff --git a/app/views/book-into-a-clinic/form/impairments.njk b/app/views/book-into-a-clinic/form/impairments.njk index fbd31f173..669ebb103 100644 --- a/app/views/book-into-a-clinic/form/impairments.njk +++ b/app/views/book-into-a-clinic/form/impairments.njk @@ -16,32 +16,38 @@ text: Impairment.Vision, hint: { text: __("consent.child.impairments.vision.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.Hearing, hint: { text: __("consent.child.impairments.hearing.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.Mobility, hint: { text: __("consent.child.impairments.mobility.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.Memory, hint: { text: __("consent.child.impairments.memory.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.MentalHealth, hint: { text: __("consent.child.impairments.mentalHealth.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.Communicative, hint: { text: __("consent.child.impairments.communicative.hint") - } + }, + exclusiveGroup: "impairments-list" }, { text: Impairment.Other, conditional: { @@ -49,7 +55,17 @@ label: { text: __("consent.child.impairmentsOther.title") }, decorate: "consent.child.impairmentsOther" }) - } + }, + exclusiveGroup: "impairments-list" + }, + { + divider: 'or' + }, + { + text: __("consent.child.impairments.none.label"), + value: Impairment.None, + exclusiveGroup: "impairments-list", + exclusive: true }], decorate: "consent.child.impairments" }) }} diff --git a/app/views/book-into-a-clinic/form/vaccination-choice.njk b/app/views/book-into-a-clinic/form/vaccination-choice.njk index 5ac988f6b..4c8337a9d 100644 --- a/app/views/book-into-a-clinic/form/vaccination-choice.njk +++ b/app/views/book-into-a-clinic/form/vaccination-choice.njk @@ -34,10 +34,14 @@ value: 'td-ipv', hint: { text: 'Protects against tetanus, diphtheria and polio' } },{ - text: 'MMR(V)', + text: 'MMRV', value: 'mmr', hint: { text: 'Protects against measles, mumps, rubella and varicella (chickenpox)' } - }], + } if appointment.child.canBeOfferedMmrv,{ + text: 'MMR', + value: 'mmr', + hint: { text: 'Protects against measles, mumps and rubella' } + } if not appointment.child.canBeOfferedMmrv], decorate: "appointment.selected_programme_ids" }) }} {% endblock %} diff --git a/app/views/book-into-a-clinic/start.njk b/app/views/book-into-a-clinic/start.njk index 2e6cdc39a..c70c8c33a 100644 --- a/app/views/book-into-a-clinic/start.njk +++ b/app/views/book-into-a-clinic/start.njk @@ -14,7 +14,6 @@ If your child has not been vaccinated at school, or is not up to date with their vaccinations for any other reason, you can book into a clinic.
- {# TODO: change the use of sessionPreset.name here to a more public-facing name. For example, present "MenACWY and Td/IPC" instead of "Doubles" #}Clinics have recently been set up to offer {{ __("clinicBooking.start.primaryProgrammeInSentence." + sessionPreset.name) }} vaccinations, but your child may be able to catch up on any outstanding vaccinations during their appointment.