Skip to content

Commit 82b562d

Browse files
Update internal names and seed data to match new labels (#279)
1 parent 08f2769 commit 82b562d

8 files changed

Lines changed: 71 additions & 112 deletions

File tree

app/lib/generators/medical-information/hrt-generator.js

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,13 @@
22

33
const { faker } = require('@faker-js/faker')
44
const weighted = require('weighted')
5+
const dayjs = require('dayjs')
56

6-
// Example durations for current HRT use
7-
const CURRENT_HRT_DURATIONS = [
8-
'6 months',
9-
'18 months',
10-
'2 years',
11-
'3 years',
12-
'5 years',
13-
'7 years',
14-
'10 years'
15-
]
16-
17-
// Example timeframes for when stopped
18-
const STOPPED_TIMEFRAMES = [
19-
'two weeks ago',
20-
'one month ago',
21-
'six weeks ago',
22-
'three months ago',
23-
'four months ago'
24-
]
7+
// Generate a past date in 'MMMM YYYY' format (e.g., 'September 2022')
8+
const randomPastDate = (minMonthsAgo, maxMonthsAgo) => {
9+
const monthsAgo = faker.number.int({ min: minMonthsAgo, max: maxMonthsAgo })
10+
return dayjs().subtract(monthsAgo, 'month').format('MMMM YYYY')
11+
}
2512

2613
// Example durations before stopping
2714
const DURATION_BEFORE_STOPPING = [
@@ -59,10 +46,12 @@ const generateHRT = (options = {}) => {
5946

6047
// Add conditional fields based on status
6148
if (hrtQuestion === 'yes') {
62-
hrt.hrtDuration = faker.helpers.arrayElement(CURRENT_HRT_DURATIONS)
49+
// Date HRT was started (6 months to 15 years ago)
50+
hrt.hrtDateStarted = randomPastDate(6, 180)
6351
}
6452
else if (hrtQuestion === 'no-recently-stopped') {
65-
hrt.hrtDurationSinceStopped = faker.helpers.arrayElement(STOPPED_TIMEFRAMES)
53+
// Date HRT was stopped (1-11 months ago)
54+
hrt.hrtDateStopped = randomPastDate(1, 11)
6655
hrt.hrtDurationBeforeStopping = faker.helpers.arrayElement(DURATION_BEFORE_STOPPING)
6756
}
6857

app/lib/generators/medical-information/pregnancy-and-breastfeeding-generator.js

Lines changed: 19 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,19 @@
22

33
const { faker } = require('@faker-js/faker')
44
const weighted = require('weighted')
5+
const dayjs = require('dayjs')
56

6-
// Example pregnancy details
7-
const PREGNANCY_DETAILS = [
8-
'due in November',
9-
'due in December',
10-
'due in January',
11-
'due next month',
12-
'8 weeks pregnant',
13-
'12 weeks pregnant',
14-
'20 weeks pregnant',
15-
'30 weeks pregnant'
16-
]
17-
18-
// Example recent pregnancy details
19-
const RECENT_PREGNANCY_DETAILS = [
20-
'gave birth two weeks ago',
21-
'gave birth one month ago',
22-
'gave birth six weeks ago',
23-
'gave birth two months ago',
24-
'gave birth three months ago'
25-
]
26-
27-
// Example breastfeeding durations
28-
const BREASTFEEDING_DURATIONS = [
29-
'since January',
30-
'since March',
31-
'for 2 weeks',
32-
'for 6 weeks',
33-
'for 3 months',
34-
'for 6 months',
35-
'for 1 year'
36-
]
7+
// Generate a past date in 'MMMM YYYY' format
8+
const randomPastDate = (minMonthsAgo, maxMonthsAgo) => {
9+
const monthsAgo = faker.number.int({ min: minMonthsAgo, max: maxMonthsAgo })
10+
return dayjs().subtract(monthsAgo, 'month').format('MMMM YYYY')
11+
}
3712

38-
// Example recent breastfeeding stopped
39-
const RECENTLY_STOPPED_BREASTFEEDING = [
40-
'two weeks ago',
41-
'one month ago',
42-
'two months ago',
43-
'three months ago',
44-
'stopped last week'
45-
]
13+
// Generate a future date in 'MMMM YYYY' format
14+
const randomFutureDate = (minMonthsAhead, maxMonthsAhead) => {
15+
const monthsAhead = faker.number.int({ min: minMonthsAhead, max: maxMonthsAhead })
16+
return dayjs().add(monthsAhead, 'month').format('MMMM YYYY')
17+
}
4618

4719
/**
4820
* Generate pregnancy and breastfeeding information
@@ -70,10 +42,12 @@ const generatePregnancyAndBreastfeeding = (options = {}) => {
7042

7143
// Add conditional fields based on pregnancy status
7244
if (info.pregnancyStatus === 'yes') {
73-
info.currentlyPregnantDetails = faker.helpers.arrayElement(PREGNANCY_DETAILS)
45+
// Due date 1-9 months in future
46+
info.pregnancyDueDate = randomFutureDate(1, 9)
7447
}
7548
else if (info.pregnancyStatus === 'noButRecently') {
76-
info.recentlyPregnantDetails = faker.helpers.arrayElement(RECENT_PREGNANCY_DETAILS)
49+
// Pregnancy ended 1-5 months ago
50+
info.pregnancyEndDate = randomPastDate(1, 5)
7751
}
7852

7953
// Weighted selection of breastfeeding status
@@ -97,10 +71,12 @@ const generatePregnancyAndBreastfeeding = (options = {}) => {
9771

9872
// Add conditional fields based on breastfeeding status
9973
if (info.breastfeedingStatus === 'yes') {
100-
info.currentlyBreastfeedingDuration = faker.helpers.arrayElement(BREASTFEEDING_DURATIONS)
74+
// Started breastfeeding 2 weeks to 18 months ago
75+
info.breastfeedingStartDate = randomPastDate(0, 18)
10176
}
10277
else if (info.breastfeedingStatus === 'recentlyStopped') {
103-
info.recentlyBreastfeedingDuration = faker.helpers.arrayElement(RECENTLY_STOPPED_BREASTFEEDING)
78+
// Stopped breastfeeding 1-4 months ago
79+
info.breastfeedingStopDate = randomPastDate(1, 4)
10480
}
10581

10682
return info

app/lib/generators/medical-information/symptoms-generator.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const { faker } = require('@faker-js/faker')
44
const weighted = require('weighted')
5+
const dayjs = require('dayjs')
56
const generateId = require('../../utils/id-generator')
67
const symptomTypesData = require('../../../data/symptom-types.js')
78

@@ -143,13 +144,6 @@ const INVESTIGATION_DETAILS = [
143144
'Specialist examined, ordered further tests'
144145
]
145146

146-
const APPROXIMATE_STOP_DATES = [
147-
'3 days ago',
148-
'1 week ago',
149-
'Few days ago',
150-
'Last week',
151-
'5 days ago'
152-
]
153147

154148
const LOCATION_DESCRIPTIONS = {
155149
'right breast': [
@@ -253,9 +247,9 @@ const generateSymptom = (options = {}) => {
253247
// 30% chance the symptom has recently stopped
254248
symptom.hasStopped = Math.random() < 0.3
255249
if (symptom.hasStopped) {
256-
symptom.approximateDateStopped = faker.helpers.arrayElement(
257-
APPROXIMATE_STOP_DATES
258-
)
250+
// Stopped 1-6 months ago, formatted as month/year
251+
const monthsAgo = faker.number.int({ min: 1, max: 6 })
252+
symptom.approximateDateStopped = dayjs().subtract(monthsAgo, 'month').format('MMMM YYYY')
259253
}
260254

261255
// 25% chance the symptom is intermittent

app/lib/utils/medical-information.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -372,11 +372,11 @@ const summariseOtherRelevantInformation = (medicalInformation) => {
372372
if (hrt) {
373373
if (hrt.hrtQuestion === 'yes') {
374374
summaries.push(
375-
`Taking HRT (${hrt.hrtDuration || 'duration not specified'})`
375+
`Taking HRT (started ${hrt.hrtDateStarted || 'date not specified'})`
376376
)
377377
} else if (hrt.hrtQuestion === 'no-recently-stopped') {
378-
if (hrt.hrtDurationSinceStopped) {
379-
summaries.push(`Recently stopped HRT (${hrt.hrtDurationSinceStopped})`)
378+
if (hrt.hrtDateStopped) {
379+
summaries.push(`Recently stopped HRT (stopped ${hrt.hrtDateStopped})`)
380380
} else {
381381
summaries.push('Recently stopped HRT')
382382
}
@@ -389,32 +389,32 @@ const summariseOtherRelevantInformation = (medicalInformation) => {
389389
if (pregBf) {
390390
// Pregnancy
391391
if (pregBf.pregnancyStatus === 'yes') {
392-
if (pregBf.currentlyPregnantDetails) {
393-
summaries.push(`Pregnant (${pregBf.currentlyPregnantDetails})`)
392+
if (pregBf.pregnancyDueDate) {
393+
summaries.push(`Pregnant (due ${pregBf.pregnancyDueDate})`)
394394
} else {
395395
summaries.push('Pregnant')
396396
}
397397
} else if (pregBf.pregnancyStatus === 'noButRecently') {
398-
if (pregBf.recentlyPregnantDetails) {
399-
summaries.push(`Recently pregnant (${pregBf.recentlyPregnantDetails})`)
398+
if (pregBf.pregnancyEndDate) {
399+
summaries.push(`Recently pregnant (ended ${pregBf.pregnancyEndDate})`)
400400
} else {
401401
summaries.push('Recently pregnant')
402402
}
403403
}
404404

405405
// Breastfeeding
406406
if (pregBf.breastfeedingStatus === 'yes') {
407-
if (pregBf.currentlyBreastfeedingDuration) {
407+
if (pregBf.breastfeedingStartDate) {
408408
summaries.push(
409-
`Breastfeeding (${pregBf.currentlyBreastfeedingDuration})`
409+
`Breastfeeding (started ${pregBf.breastfeedingStartDate})`
410410
)
411411
} else {
412412
summaries.push('Breastfeeding')
413413
}
414414
} else if (pregBf.breastfeedingStatus === 'recentlyStopped') {
415-
if (pregBf.recentlyBreastfeedingDuration) {
415+
if (pregBf.breastfeedingStopDate) {
416416
summaries.push(
417-
`Recently breastfeeding (stopped ${pregBf.recentlyBreastfeedingDuration})`
417+
`Recently breastfeeding (stopped ${pregBf.breastfeedingStopDate})`
418418
)
419419
} else {
420420
summaries.push('Recently breastfeeding')

app/views/_includes/summary-lists/medical-information/other-relevant-information.njk

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
Currently taking HRT
1010
</p>
1111
<p>
12-
{# Example: "Duration taken: 3 months" #}
13-
Duration taken: {{ hrtData.hrtDuration }}
12+
{# Example: "Date started: September 2022" #}
13+
Date started: {{ hrtData.hrtDateStarted }}
1414
</p>
1515
{% elseif hrtData.hrtQuestion == 'no-recently-stopped' %}
1616
<p>
1717
Recently stopped taking HRT
1818
</p>
1919
<p>
2020
Duration taken: {{ hrtData.hrtDurationBeforeStopping }}<br>
21-
Stopped: {{ hrtData.hrtDurationSinceStopped }} ago<br>
21+
Date stopped: {{ hrtData.hrtDateStopped }}<br>
2222
</p>
2323
{% elseif hrtData.hrtQuestion == 'no' %}
2424
Not taking HRT
@@ -39,15 +39,15 @@
3939
Currently pregnant
4040
</p>
4141
<p>
42-
{# Example: "Duration taken: 3 months" #}
43-
Timeframe: {{ pregnancyAndBreastfeedingData.currentlyPregnantDetails }}
42+
{# Example: "Due date: June 2026" #}
43+
Due date: {{ pregnancyAndBreastfeedingData.pregnancyDueDate }}
4444
</p>
4545
{% elseif pregnancyAndBreastfeedingData.pregnancyStatus == 'noButRecently' %}
4646
<p>
4747
Recently pregnant
4848
</p>
4949
<p>
50-
Details: {{ pregnancyAndBreastfeedingData.recentlyPregnantDetails }}
50+
Pregnancy ended: {{ pregnancyAndBreastfeedingData.pregnancyEndDate }}
5151
</p>
5252
{% elseif pregnancyAndBreastfeedingData.pregnancyStatus == 'noNotPregnant' %}
5353
<p>Not pregnant</p>
@@ -60,15 +60,15 @@
6060
Currently breastfeeding
6161
</p>
6262
<p>
63-
{# Example: "Duration taken: 3 months" #}
64-
Duration: {{ pregnancyAndBreastfeedingData.currentlyBreastfeedingDuration }}
63+
{# Example: "Started: January 2026" #}
64+
Started: {{ pregnancyAndBreastfeedingData.breastfeedingStartDate }}
6565
</p>
6666
{% elseif pregnancyAndBreastfeedingData.breastfeedingStatus == 'recentlyStopped' %}
6767
<p>
6868
Recently breastfeeding
6969
</p>
7070
<p>
71-
Details: {{ pregnancyAndBreastfeedingData.recentlyBreastfeedingDuration }}
71+
Stopped: {{ pregnancyAndBreastfeedingData.breastfeedingStopDate }}
7272
</p>
7373
{% elseif pregnancyAndBreastfeedingData.breastfeedingStatus == 'no' %}
7474
<p>Not breastfeeding</p>

app/views/events/medical-information/hormone-replacement-therapy.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
{% set currentlyTakingHtml %}
2929

3030
{{ input({
31-
name: "event[medicalInformation][hrt][hrtDuration]",
32-
value: event.medicalInformation.hrt.hrtDuration,
31+
name: "event[medicalInformation][hrt][hrtDateStarted]",
32+
value: event.medicalInformation.hrt.hrtDateStarted,
3333
label: {
3434
text: "Approximate date started"
3535
},
@@ -44,8 +44,8 @@
4444
{% set recentlyStoppedHtml %}
4545

4646
{{ input({
47-
name: "event[medicalInformation][hrt][hrtDurationSinceStopped]",
48-
value: event.medicalInformation.hrt.hrtDurationSinceStopped,
47+
name: "event[medicalInformation][hrt][hrtDateStopped]",
48+
value: event.medicalInformation.hrt.hrtDateStopped,
4949
label: {
5050
text: "Approximate date stopped"
5151
},

app/views/events/medical-information/pregnancy-and-breastfeeding.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ <h1 class="nhsuk-heading-l">
2626

2727
{% set currentlyPregnant %}
2828
{{ input({
29-
name: "event[medicalInformation][pregnancyAndBreastfeeding][currentlyPregnantDetails]",
30-
value: event.medicalInformation.pregnancyAndBreastfeeding.currentlyPregnantDetails,
29+
name: "event[medicalInformation][pregnancyAndBreastfeeding][pregnancyDueDate]",
30+
value: event.medicalInformation.pregnancyAndBreastfeeding.pregnancyDueDate,
3131
label: {
3232
text: "Approximate due date"
3333
},
@@ -40,8 +40,8 @@ <h1 class="nhsuk-heading-l">
4040

4141
{% set recentlyPregnant %}
4242
{{ input({
43-
name: "event[medicalInformation][pregnancyAndBreastfeeding][recentlyPregnantDetails]",
44-
value: event.medicalInformation.pregnancyAndBreastfeeding.recentlyPregnantDetails,
43+
name: "event[medicalInformation][pregnancyAndBreastfeeding][pregnancyEndDate]",
44+
value: event.medicalInformation.pregnancyAndBreastfeeding.pregnancyEndDate,
4545
label: {
4646
text: "Approximate date pregnancy ended"
4747
},
@@ -54,8 +54,8 @@ <h1 class="nhsuk-heading-l">
5454

5555
{% set currentlyBreastfeeding %}
5656
{{ input({
57-
name: "event[medicalInformation][pregnancyAndBreastfeeding][currentlyBreastfeedingDuration]",
58-
value: event.medicalInformation.pregnancyAndBreastfeeding.currentlyBreastfeedingDuration,
57+
name: "event[medicalInformation][pregnancyAndBreastfeeding][breastfeedingStartDate]",
58+
value: event.medicalInformation.pregnancyAndBreastfeeding.breastfeedingStartDate,
5959
label: {
6060
text: "Approximate date started"
6161
},
@@ -68,8 +68,8 @@ <h1 class="nhsuk-heading-l">
6868

6969
{% set recentlyBreastfeeding %}
7070
{{ input({
71-
name: "event[medicalInformation][pregnancyAndBreastfeeding][recentlyBreastfeedingDuration]",
72-
value: event.medicalInformation.pregnancyAndBreastfeeding.recentlyBreastfeedingDuration,
71+
name: "event[medicalInformation][pregnancyAndBreastfeeding][breastfeedingStopDate]",
72+
value: event.medicalInformation.pregnancyAndBreastfeeding.breastfeedingStopDate,
7373
label: {
7474
text: "Approximate date stopped"
7575
},

notes/MEDICAL-INFORMATION-GENERATOR-GUIDE.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,9 @@ module.exports = {
201201
{
202202
hrtQuestion: 'yes' | 'no-recently-stopped' | 'no',
203203
// If 'yes':
204-
hrtDuration: string, // e.g., '3 years', '18 months'
204+
hrtDateStarted: string, // e.g., 'September 2022'
205205
// If 'no-recently-stopped':
206-
hrtDurationSinceStopped: string, // e.g., 'two weeks ago'
206+
hrtDateStopped: string, // e.g., 'January 2026'
207207
hrtDurationBeforeStopping: string // e.g., '5 years'
208208
}
209209
```
@@ -227,15 +227,15 @@ module.exports = {
227227
{
228228
pregnancyStatus: 'yes' | 'noButRecently' | 'noNotPregnant',
229229
// If 'yes':
230-
currentlyPregnantDetails: string, // e.g., 'due in November'
230+
pregnancyDueDate: string, // e.g., 'June 2026'
231231
// If 'noButRecently':
232-
recentlyPregnantDetails: string, // e.g., 'gave birth one month ago'
232+
pregnancyEndDate: string, // e.g., 'January 2026'
233233

234234
breastfeedingStatus: 'yes' | 'recentlyStopped' | 'no',
235235
// If 'yes':
236-
currentlyBreastfeedingDuration: string, // e.g., 'for 6 months'
236+
breastfeedingStartDate: string, // e.g., 'January 2026'
237237
// If 'recentlyStopped':
238-
recentlyBreastfeedingDuration: string // e.g., 'two weeks ago'
238+
breastfeedingStopDate: string // e.g., 'December 2025'
239239
}
240240
```
241241

0 commit comments

Comments
 (0)