Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,21 @@ class MastectomyOrLumpectomyHistoryForm(FormWithConditionalFields):
error_messages={"max_words": "Additional details must be 500 words or less"},
)

def __init__(self, *args, participant, **kwargs):
def __init__(self, *args, **kwargs):
self.instance = kwargs.pop("instance", None)

if self.instance:
kwargs["initial"] = {
"left_breast_procedure": self.instance.left_breast_procedure,
"right_breast_procedure": self.instance.right_breast_procedure,
"left_breast_other_surgery": self.instance.left_breast_other_surgery,
"right_breast_other_surgery": self.instance.right_breast_other_surgery,
"year_of_surgery": self.instance.year_of_surgery,
"surgery_reason": self.instance.surgery_reason,
"surgery_other_reason_details": self.instance.surgery_other_reason_details,
"additional_details": self.instance.additional_details,
}

super().__init__(*args, **kwargs)

self.given_field_value(
Expand Down Expand Up @@ -132,3 +146,26 @@ def create(self, appointment, request):
auditor.audit_create(mastectomy_or_lumpectomy_history)

return mastectomy_or_lumpectomy_history

def update(self, request):
self.instance.left_breast_procedure = self.cleaned_data["left_breast_procedure"]
self.instance.right_breast_procedure = self.cleaned_data[
"right_breast_procedure"
]
self.instance.left_breast_other_surgery = self.cleaned_data[
"left_breast_other_surgery"
]
self.instance.right_breast_other_surgery = self.cleaned_data[
"right_breast_other_surgery"
]
self.instance.year_of_surgery = self.cleaned_data["year_of_surgery"]
self.instance.surgery_reason = self.cleaned_data["surgery_reason"]
self.instance.surgery_other_reason_details = self.cleaned_data[
"surgery_other_reason_details"
]
self.instance.additional_details = self.cleaned_data["additional_details"]
self.instance.save()

Auditor.from_request(request).audit_update(self.instance)

return self.instance
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@

{% set mastectomy_or_lumpectomy_history_html %}
{% for presented_item in presenter.mastectomy_or_lumpectomy_history %}
<a style="float: right" class="nhsuk-link nhsuk-link--no-visited-state" href="{{ presented_item.change_link.href}}">
{{ presented_item.change_link.text }}<span class="nhsuk-u-visually-hidden">{{ presented_item.change_link.visually_hidden_text }}</span>
</a><br>
{{ summaryList(presented_item.summary_list_params) }}
{% endfor %}
<a href="{{ presenter.add_mastectomy_or_lumpectomy_history_link.href }}" class="nhsuk-link nhsuk-link--no-visited-state">{{ presenter.add_mastectomy_or_lumpectomy_history_link.text }}</a><br>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
from django.urls import reverse

from manage_breast_screening.core.template_helpers import multiline_content, nl2br
from manage_breast_screening.participants.models.mastectomy_or_lumpectomy_history_item import (
MastectomyOrLumpectomyHistoryItem,
)


class MastectomyOrLumpectomyHistoryItemPresenter:
def __init__(self, mastectomy_or_lumpectomy_history_item):
def __init__(self, mastectomy_or_lumpectomy_history_item, counter=None):
self._item = mastectomy_or_lumpectomy_history_item

# If there are more than one of these items, we add a counter to the
# visually hidden text
self.counter = counter

self.right_breast_procedure = self._item.get_right_breast_procedure_display()
self.left_breast_procedure = self._item.get_left_breast_procedure_display()

Expand Down Expand Up @@ -75,3 +81,21 @@ def summary_list_params(self):

def _format_multiple_choices(self, choices, ChoiceClass):
return ", ".join(ChoiceClass(choice).label for choice in choices)

@property
def change_link(self):
return {
"href": reverse(
"mammograms:change_mastectomy_or_lumpectomy_history_item",
kwargs={
"pk": self._item.appointment_id,
"history_item_pk": self._item.pk,
},
),
"text": "Change",
"visually_hidden_text": (
f" mastectomy or lumpectomy item {self.counter}"
if self.counter
else " mastectomy or lumpectomy item"
),
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,25 +41,15 @@ def __init__(self, appointment):
BreastCancerHistoryItemPresenter,
)

self.mastectomy_or_lumpectomy_history = [
MastectomyOrLumpectomyHistoryItemPresenter(item)
for item in appointment.mastectomy_or_lumpectomy_history_items.all()
]
self.mastectomy_or_lumpectomy_history = self._present_items(
appointment.mastectomy_or_lumpectomy_history_items.all(),
MastectomyOrLumpectomyHistoryItemPresenter,
)

implanted_medical_device_history = list(
appointment.implanted_medical_device_history_items.all()
self.implanted_medical_device_history = self._present_items(
appointment.implanted_medical_device_history_items.all(),
ImplantedMedicalDeviceHistoryItemPresenter,
)
if len(implanted_medical_device_history) == 1:
self.implanted_medical_device_history = [
ImplantedMedicalDeviceHistoryItemPresenter(
implanted_medical_device_history[0]
)
]
else:
self.implanted_medical_device_history = [
ImplantedMedicalDeviceHistoryItemPresenter(item, counter=counter)
for counter, item in enumerate(implanted_medical_device_history, 1)
]

self.breast_augmentation_history = [
BreastAugmentationHistoryItemPresenter(item)
Expand Down
Loading