Skip to content

Commit

Permalink
draft
Browse files Browse the repository at this point in the history
  • Loading branch information
rithviknishad committed Jul 6, 2023
1 parent 987a970 commit 7759fce
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 41 deletions.
10 changes: 6 additions & 4 deletions care/facility/api/viewsets/prescription.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from django.db.models.query import QuerySet
from django.shortcuts import get_object_or_404
from django_filters import rest_framework as filters
from drf_spectacular.utils import extend_schema
from rest_framework import mixins, status
from rest_framework.decorators import action
from rest_framework.filters import SearchFilter
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet
Expand Down Expand Up @@ -143,8 +143,10 @@ class MedicineViewSet(
GenericViewSet,
):
serializer_class = MedibaseMedicineSerializer
permission_classes = (IsAuthenticated,)
# permission_classes = (IsAuthenticated,)
queryset = MedibaseMedicine.objects.all()
lookup_field = "external_id"
filter_backends = (SearchFilter,)
search_fields = ("name", "generic", "company", "contents", "cims_class")

def get_queryset(self) -> QuerySet:
search_term = self.request.query_params.get("search_text", "")
return self.queryset.filter(search_vector=search_term)
22 changes: 0 additions & 22 deletions care/facility/migrations/0371_medibasemedicine_search_idx.py

This file was deleted.

18 changes: 18 additions & 0 deletions care/facility/migrations/0371_medibasemedicine_search_vector.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.2 on 2023-07-06 17:00

import django.contrib.postgres.search
from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("facility", "0370_merge_20230705_1500"),
]

operations = [
migrations.AddField(
model_name="medibasemedicine",
name="search_vector",
field=django.contrib.postgres.search.SearchVectorField(null=True),
),
]
12 changes: 3 additions & 9 deletions care/facility/models/prescription.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import enum

from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVectorField
from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import JSONField
Expand Down Expand Up @@ -64,17 +64,11 @@ class MedibaseMedicine(BaseModel):
cims_class = models.CharField(max_length=255, blank=True, null=True)
atc_classification = models.TextField(blank=True, null=True)

search_vector = SearchVectorField(null=True)

def __str__(self):
return " - ".join([self.name, self.generic, self.company])

class Meta:
indexes = [
GinIndex(
fields=["name", "generic", "company", "contents", "cims_class"],
name="search_idx",
)
]


class Prescription(BaseModel):
consultation = models.ForeignKey(
Expand Down
12 changes: 6 additions & 6 deletions care/facility/tests/test_medibase_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@

class TestMedibaseApi(TestBase):
def get_url(self, query=None):
return f"/api/v1/medibase/?query={query}"
return f"/api/v1/medicine/?search_text={query}"

def test_search_by_name_exact_word(self):
response = self.client.get(self.get_url(query="dolo"))
self.assertEquals(response.status_code, status.HTTP_200_OK)
self.assertEquals(response.data[0]["name"], "DOLO")
self.assertEquals(response.data.results[0]["name"], "DOLO")

def test_search_by_generic_exact_word(self):
response = self.client.get(self.get_url(query="pAraCetAmoL"))
self.assertEquals(response.status_code, status.HTTP_200_OK)
self.assertEquals(response.data[0]["generic"], "paracetamol")
self.assertEquals(response.data.results[0]["generic"], "paracetamol")

def test_search_by_name_and_generic_exact_word(self):
response = self.client.get(self.get_url(query="panadol paracetamol"))
self.assertEquals(response.status_code, status.HTTP_200_OK)
self.assertEquals(response.data[0]["name"], "PANADOL")
self.assertEquals(response.data[0]["generic"], "paracetamol")
self.assertEquals(response.data[0]["company"], "GSK")
self.assertEquals(response.data.results[0]["name"], "PANADOL")
self.assertEquals(response.data.results[0]["generic"], "paracetamol")
self.assertEquals(response.data.results[0]["company"], "GSK")

0 comments on commit 7759fce

Please sign in to comment.