Skip to content
Open
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
5 changes: 4 additions & 1 deletion care/emr/api/viewsets/activity_definition.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.contrib.postgres.search import TrigramSimilarity
from django.db.models import Q
from django_filters import rest_framework as filters
from rest_framework.exceptions import PermissionDenied, ValidationError
from rest_framework.filters import OrderingFilter
Expand Down Expand Up @@ -42,7 +43,9 @@ def filter(self, qs, value):
queryset.annotate(
similarity=TrigramSimilarity(self.field_name, value),
)
.filter(similarity__gt=0.1)
.filter(
Q(similarity__gt=0.1) | Q(**{f"{self.field_name}__icontains": value})
)
.order_by("-similarity")
)

Expand Down
24 changes: 24 additions & 0 deletions care/emr/tests/test_activity_definition_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1133,6 +1133,30 @@ def test_list_activity_definition_with_status_filter(self):
ActivityDefinitionStatusOptions.active.value,
)

def test_list_activity_definition_with_title_acronym_filter(self):
"""Test listing activity definitions with an acronym in the title."""
self.client.force_authenticate(user=self.superuser)
activity_definition = self.create_activity_definition(
facility=self.facility,
slug="c-reactive-protein",
title="C-reactive protein (CRP including new born)",
category=self.resource_category,
)
self.create_activity_definition(
facility=self.facility,
slug="complete-blood-count",
title="Complete blood count",
category=self.resource_category,
)

response = self.client.get(self.base_url, {"title": "CRP"}, format="json")

self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data["results"]), 1)
self.assertEqual(
response.data["results"][0]["slug"], str(activity_definition.slug)
)

def test_list_activity_definition_with_category_filter(self):
"""Test filtering activity definitions by dummy category filter."""

Expand Down
Loading