+
+
Clinical documents in workflow
{% ae_followup_queryset ae_initial=result.parent_action_item.reference_obj as qs %}
{% if qs.count == 0 %}
There are no follow-ups to this AE
{% endif %}
{% for ae_followup in qs %}
- {% render_tmg_panel reference_obj=ae_followup counter=forloop.counter %}
+ {% render_tmg_panel reference_obj=ae_followup counter=forloop.counter next_url_name=listboard_filter_url %}
{% endfor %}
{% death_report_queryset subject_identifier=result.subject_identifier as qs %}
{% for death_report in qs %}
- {% render_tmg_panel reference_obj=death_report counter=forloop.counter %}
+ {% render_tmg_panel reference_obj=death_report counter=forloop.counter next_url_name=listboard_filter_url %}
{% endfor %}
-
-
-
-
diff --git a/edc_adverse_event/templates/edc_adverse_event/bootstrap3/tmg/tmg_button_group.html b/edc_adverse_event/templates/edc_adverse_event/bootstrap3/tmg/tmg_button_group.html
new file mode 100644
index 0000000..56b11d9
--- /dev/null
+++ b/edc_adverse_event/templates/edc_adverse_event/bootstrap3/tmg/tmg_button_group.html
@@ -0,0 +1,8 @@
+{% if subject_identifier %}
+
+{% endif %}
diff --git a/edc_adverse_event/templatetags/edc_adverse_event_extras.py b/edc_adverse_event/templatetags/edc_adverse_event_extras.py
index 980e776..e8b66cf 100644
--- a/edc_adverse_event/templatetags/edc_adverse_event_extras.py
+++ b/edc_adverse_event/templatetags/edc_adverse_event_extras.py
@@ -189,44 +189,49 @@ def render_tmg_panel(
by_user_created_only: bool | None = None,
counter: int = None,
report_status: str | None = None,
+ next_url_name: str | None = None,
) -> dict:
reference_obj = reference_obj or get_reference_obj(action_item)
if not action_item and reference_obj:
action_item = reference_obj.action_item
disable_all = True if not has_valid_tmg_perms(request=context["request"]) else False
- btn = TmgButton(
- user=context["request"].user,
- subject_identifier=action_item.subject_identifier,
- model_obj=reference_obj,
- model_cls=action_item.action_cls.reference_model_cls(),
- request=context["request"],
- only_user_created_may_access=by_user_created_only,
- forloop_counter=counter,
- current_site=context["request"].site,
- disable_all=disable_all,
- )
- if view_only:
- panel_color = "info"
- elif not reference_obj:
- panel_color = "warning"
- else:
- panel_color = "success"
-
- # panel_label
- display_name = action_item.display_name.replace("Submit", "").replace("pending", "")
- identifier = action_item.identifier or "New"
- panel_label = _(f"{display_name} {identifier}")
-
- return dict(
- btn=btn,
- panel_color=panel_color,
- reference_obj=reference_obj,
- action_item=action_item,
- OPEN=OPEN,
- CLOSED=CLOSED,
- report_status=report_status,
- panel_label=panel_label,
- )
+ if action_item:
+ params = dict(
+ user=context["request"].user,
+ subject_identifier=action_item.subject_identifier,
+ model_obj=reference_obj,
+ model_cls=action_item.action_cls.reference_model_cls(),
+ request=context["request"],
+ only_user_created_may_access=by_user_created_only,
+ forloop_counter=counter,
+ current_site=context["request"].site,
+ disable_all=disable_all,
+ action_item=action_item,
+ )
+ if next_url_name:
+ params.update(next_url_name=next_url_name.split(":")[1])
+ btn = TmgButton(**params)
+ if view_only:
+ panel_color = "info"
+ elif not reference_obj:
+ panel_color = "warning"
+ else:
+ panel_color = "success"
+ # panel_label
+ display_name = action_item.display_name.replace("Submit", "").replace("pending", "")
+ identifier = action_item.identifier or "New"
+ panel_label = _(f"{display_name} {identifier}")
+ return dict(
+ btn=btn,
+ panel_color=panel_color,
+ reference_obj=reference_obj,
+ action_item=action_item,
+ OPEN=OPEN,
+ CLOSED=CLOSED,
+ report_status=report_status,
+ panel_label=panel_label,
+ )
+ return {}
@register.simple_tag(takes_context=True)
@@ -253,3 +258,13 @@ def get_empty_qs_message(status: str, search_term: str):
if search_term:
msg = f"{msg[:-1]} for your search criteria"
return _(msg)
+
+
+@register.inclusion_tag(
+ f"edc_adverse_event/bootstrap{get_bootstrap_version()}/tmg/tmg_button_group.html",
+ takes_context=True,
+)
+def render_tmg_button_group(context, subject_identifier: str):
+ if context["request"].user.userprofile.roles.filter(name=TMG_ROLE).exists():
+ return dict(subject_identifier=subject_identifier)
+ return {}
diff --git a/edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py b/edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py
index fa13b59..b85e433 100644
--- a/edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py
+++ b/edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py
@@ -37,7 +37,7 @@ class TmgAeListboardViewMixin(
navbar_name = get_default_navbar()
navbar_selected_item = "tmg_home"
ordering = "-report_datetime"
- paginate_by = 50
+ paginate_by = 10
search_form_url = "tmg_ae_listboard_url"
action_type_names = [AE_TMG_ACTION]
@@ -54,6 +54,7 @@ def get_context_data(self, **kwargs) -> dict[str, Any]:
kwargs.update(
AE_TMG_ACTION=AE_TMG_ACTION,
utc_date=get_utcnow().date(),
+ subject_identifier=self.kwargs.get("subject_identifier"),
)
return super().get_context_data(**kwargs)
diff --git a/edc_adverse_event/view_utils/tmg_button.py b/edc_adverse_event/view_utils/tmg_button.py
index f98dfd8..e333a26 100644
--- a/edc_adverse_event/view_utils/tmg_button.py
+++ b/edc_adverse_event/view_utils/tmg_button.py
@@ -7,6 +7,7 @@
from edc_subject_dashboard.view_utils import ModelButton
if TYPE_CHECKING:
+ from edc_action_item.models import ActionItem
from edc_model.models import BaseUuidModel
from edc_adverse_event.model_mixins import (
@@ -28,11 +29,12 @@ class DeathReportModel(DeathReportModelMixin, BaseUuidModel): ...
@dataclass
class TmgButton(ModelButton):
model_obj: DeathReportTmgModel | DeathReportModel | AeFollowupModel | AeInitialModel = None
- next_url_name: str = "open_tmg_ae_listboard_url"
+ next_url_name: str | None = field(default="open_tmg_ae_listboard_url")
only_user_created_may_access: bool | None = None
forloop_counter: int | None = None
colors: tuple[str, str, str] = field(default=("warning", "success", "success"))
titles: tuple[str, str, str] = field(default=(_("Add"), _("Change"), _("View")))
+ action_item: ActionItem = (None,)
disable_all: bool = False
@@ -88,3 +90,24 @@ def label(self) -> str:
):
return _("View")
return _(super().label)
+
+ @property
+ def extra_kwargs(self) -> dict[str, str | int]:
+ opts = {}
+ if self.action_item.parent_action_item:
+ parent_action_item = getattr(self.action_item, "parent_action_item", None)
+ if parent_action_item:
+ opts.update(
+ parent_action_item=str(parent_action_item.id),
+ )
+ related_action_item = getattr(self.action_item, "parent_action_item", None)
+ if related_action_item:
+ opts.update(
+ related_action_item=str(related_action_item.id),
+ )
+ opts = dict(
+ ae_initial=str(self.action_item.parent_action_item.reference_obj.id),
+ action_identifier=self.action_item.action_identifier,
+ action_item=str(self.action_item.id),
+ )
+ return opts
diff --git a/edc_adverse_event/views/tmg/status_listboards.py b/edc_adverse_event/views/tmg/status_listboards.py
index 3cc6304..139c71c 100644
--- a/edc_adverse_event/views/tmg/status_listboards.py
+++ b/edc_adverse_event/views/tmg/status_listboards.py
@@ -7,18 +7,18 @@ class NewTmgAeListboardView(StatusTmgAeListboardView):
listboard_url = "new_tmg_ae_listboard_url"
search_form_url = "new_tmg_ae_listboard_url"
status = NEW
- listboard_panel_title = "TMG: New AE Reports"
+ listboard_panel_title = "TMG AE Reports: New"
class OpenTmgAeListboardView(StatusTmgAeListboardView):
listboard_url = "open_tmg_ae_listboard_url"
search_form_url = "open_tmg_ae_listboard_url"
status = OPEN
- listboard_panel_title = "TMG: Open AE Reports"
+ listboard_panel_title = "TMG AE Reports: Open"
class ClosedTmgAeListboardView(StatusTmgAeListboardView):
listboard_url = "closed_tmg_ae_listboard_url"
search_form_url = "closed_tmg_ae_listboard_url"
status = CLOSED
- listboard_panel_title = "TMG: Closed AE Reports"
+ listboard_panel_title = "TMG AE Reports: Closed"