Skip to content

Commit 9dbb843

Browse files
committed
PPHA-409: Relatives age when diagnosed page
1 parent 41e27b5 commit 9dbb843

22 files changed

Lines changed: 450 additions & 25 deletions

lung_cancer_screening/core/jinja2/layout.jinja

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
{% extends 'nhsuk/template.jinja' %}
44

5+
{% from 'nhsuk/components/back-link/macro.jinja' import backLink %}
6+
57
{% block head %}
68
<link rel="stylesheet" href="{{ static('css/main.css' )}}">
79
<script type="module" src="{{ static('js/bundle.js' )}}"></script>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from django import forms
2+
3+
from ...nhsuk_forms.choice_field import ChoiceField
4+
from ..models.relatives_age_when_diagnosed_response import RelativesAgeWhenDiagnosedResponse, RelativesAgeWhenDiagnosedValues
5+
6+
7+
class RelativesAgeWhenDiagnosedForm(forms.ModelForm):
8+
9+
def __init__(self, *args, **kwargs):
10+
super().__init__(*args, **kwargs)
11+
12+
self.fields["value"] = ChoiceField(
13+
choices=RelativesAgeWhenDiagnosedValues.choices,
14+
label="Were any of your relatives younger than 60 years old when they were diagnosed with lung cancer?",
15+
widget=forms.RadioSelect,
16+
error_messages={
17+
'required': 'Select if your relatives were younger than 60 when they were diagnosed with lung cancer'
18+
}
19+
)
20+
21+
class Meta:
22+
model = RelativesAgeWhenDiagnosedResponse
23+
fields = ['value']

lung_cancer_screening/questions/jinja2/question_form.jinja

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{% extends 'layout.jinja' %}
22

33
{% from 'nhsuk/components/button/macro.jinja' import button %}
4-
{% from 'nhsuk/components/back-link/macro.jinja' import backLink %}
54

65
{% if error %}
76
{% set error_message = { "text": error } %}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% extends 'question_form.jinja' %}
2+
3+
{% block prelude %}
4+
5+
<h1 class="nhsuk-heading-l">If your relatives were under 60 when they were diagnosed</h1>
6+
7+
<p>We ask about their age when they were diagnosed with lung cancer because it may impact your chances of developing lung cancer.</p>
8+
9+
<p>If you do not know or cannot remember, select ‘I do not know’.</p>
10+
11+
{% endblock prelude %}

lung_cancer_screening/questions/jinja2/responses.jinja

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
11
{% extends 'layout.jinja' %}
2-
{% from 'nhsuk/components/button/macro.jinja' import button %}
3-
{% from 'nhsuk/components/back-link/macro.jinja' import backLink %}
42

5-
{% block beforeContent %}
6-
<nav>
7-
{{
8-
backLink({
9-
"href": url("questions:family_history_lung_cancer"),
10-
"text": "Back"
11-
})
12-
}}
13-
</nav>
14-
{% endblock beforeContent %}
3+
{% from 'nhsuk/components/button/macro.jinja' import button %}
154

165
{% block page_content %}
176
<div class="nhsuk-grid-row">
@@ -27,6 +16,9 @@
2716
<li>What is your ethnic background? {{ response_set.ethnicity }}</li>
2817
<li>Have you ever worked in a job where you might have been exposed to asbestos? {{ response_set.asbestos_exposure }}</li>
2918
<li>Have you ever been diagnosed with any of the following respiratory conditions? {{ response_set.respiratory_conditions }}</li>
19+
<li>Have you ever been diagnosed with cancer? {{ response_set.cancer_diagnosis }}</li>
20+
<li>Have any of your parents, siblings or children ever been diagnosed with lung cancer {{ response_set.family_history_lung_cancer }}</li>
21+
<li>Were any of your relatives younger than 60 years old when they were diagnosed with lung cancer? {{ response_set.relatives_age_when_diagnosed }}</li>
3022
</ul>
3123

3224
<form action="{{ request.path }}" method="post">
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 5.2.9 on 2026-01-05 12:20
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('questions', '0036_familyhistorylungcancerresponse'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='FamilyHistoryAgeWhenDiagnosedResponse',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('created_at', models.DateTimeField(auto_now_add=True)),
19+
('updated_at', models.DateTimeField(auto_now=True)),
20+
('value', models.CharField(choices=[('Y', 'Yes, they were younger than 60'), ('N', 'No, they were 60 or older'), ('U', 'I do not know')], max_length=1)),
21+
('response_set', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='family_history_age_when_diagnosed', to='questions.responseset')),
22+
],
23+
options={
24+
'abstract': False,
25+
},
26+
),
27+
]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 5.2.9 on 2026-01-05 15:23
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('questions', '0037_familyhistoryagewhendiagnosedresponse'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='RelativesAgeWhenDiagnosedResponse',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('created_at', models.DateTimeField(auto_now_add=True)),
19+
('updated_at', models.DateTimeField(auto_now=True)),
20+
('value', models.CharField(choices=[('Y', 'Yes, they were younger than 60'), ('N', 'No, they were 60 or older'), ('U', 'I do not know')], max_length=1)),
21+
('response_set', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='relatives_age_when_diagnosed', to='questions.responseset')),
22+
],
23+
options={
24+
'abstract': False,
25+
},
26+
),
27+
migrations.DeleteModel(
28+
name='FamilyHistoryAgeWhenDiagnosedResponse',
29+
),
30+
]

lung_cancer_screening/questions/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
from .weight_response import WeightResponse # noqa: F401
1313
from .cancer_diagnosis_response import CancerDiagnosisResponse # noqa: F401
1414
from .family_history_lung_cancer_response import FamilyHistoryLungCancerResponse # noqa: F401
15+
from .relatives_age_when_diagnosed_response import RelativesAgeWhenDiagnosedResponse # noqa: F401

lung_cancer_screening/questions/models/family_history_lung_cancer_response.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66

77
class FamilyHistoryLungCancerValues(models.TextChoices):
8-
YES = "Y", 'Yes'
9-
NO = "N", 'No'
8+
YES = "Y", "Yes"
9+
NO = "N", "No"
1010
UNKNOWN = "U", "I do not know"
1111

1212
class FamilyHistoryLungCancerResponse(BaseModel):
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from django.db import models
2+
3+
from .base import BaseModel
4+
from .response_set import ResponseSet
5+
6+
7+
class RelativesAgeWhenDiagnosedValues(models.TextChoices):
8+
YES = "Y", "Yes, they were younger than 60"
9+
NO = "N", "No, they were 60 or older"
10+
UNKNOWN = "U", "I do not know"
11+
12+
class RelativesAgeWhenDiagnosedResponse(BaseModel):
13+
response_set = models.OneToOneField(ResponseSet, on_delete=models.CASCADE, related_name='relatives_age_when_diagnosed')
14+
value = models.CharField(max_length=1, choices=RelativesAgeWhenDiagnosedValues.choices)

0 commit comments

Comments
 (0)