improve condition filters
This commit is contained in:
+18
-3
@@ -25,6 +25,7 @@ def get_authors(request):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def get_cases(request):
|
def get_cases(request):
|
||||||
if request is None:
|
if request is None:
|
||||||
return Case.objects.none()
|
return Case.objects.none()
|
||||||
@@ -36,6 +37,7 @@ def get_cases(request):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def get_series(request):
|
def get_series(request):
|
||||||
if request is None:
|
if request is None:
|
||||||
return Series.objects.none()
|
return Series.objects.none()
|
||||||
@@ -47,6 +49,7 @@ def get_series(request):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class CaseCollectionFilter(django_filters.FilterSet):
|
class CaseCollectionFilter(django_filters.FilterSet):
|
||||||
author = django_filters.ModelMultipleChoiceFilter(
|
author = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=get_authors, null_label="No author"
|
queryset=get_authors, null_label="No author"
|
||||||
@@ -72,12 +75,15 @@ class CaseCollectionFilter(django_filters.FilterSet):
|
|||||||
request=None,
|
request=None,
|
||||||
):
|
):
|
||||||
if not request.user.groups.filter(name="atlas_editor").exists():
|
if not request.user.groups.filter(name="atlas_editor").exists():
|
||||||
queryset = queryset.prefetch_related("author").filter(author__id=request.user.id)
|
queryset = queryset.prefetch_related("author").filter(
|
||||||
|
author__id=request.user.id
|
||||||
|
)
|
||||||
super(CaseCollectionFilter, self).__init__(
|
super(CaseCollectionFilter, self).__init__(
|
||||||
data=data, queryset=queryset, prefix=prefix, request=request
|
data=data, queryset=queryset, prefix=prefix, request=request
|
||||||
)
|
)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class CaseFilter(django_filters.FilterSet):
|
class CaseFilter(django_filters.FilterSet):
|
||||||
author = django_filters.ModelMultipleChoiceFilter(
|
author = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=get_authors, null_label="No author"
|
queryset=get_authors, null_label="No author"
|
||||||
@@ -111,7 +117,9 @@ class CaseFilter(django_filters.FilterSet):
|
|||||||
request=None,
|
request=None,
|
||||||
):
|
):
|
||||||
if not request.user.groups.filter(name="atlas_editor").exists():
|
if not request.user.groups.filter(name="atlas_editor").exists():
|
||||||
queryset = queryset.prefetch_related("author").filter(author__id=request.user.id)
|
queryset = queryset.prefetch_related("author").filter(
|
||||||
|
author__id=request.user.id
|
||||||
|
)
|
||||||
super(CaseFilter, self).__init__(
|
super(CaseFilter, self).__init__(
|
||||||
data=data, queryset=queryset, prefix=prefix, request=request
|
data=data, queryset=queryset, prefix=prefix, request=request
|
||||||
)
|
)
|
||||||
@@ -151,7 +159,14 @@ class SeriesFilter(django_filters.FilterSet):
|
|||||||
class ConditionFilter(django_filters.FilterSet):
|
class ConditionFilter(django_filters.FilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Condition
|
model = Condition
|
||||||
fields = {"name": ["contains"], "primary": ["exact"], "synonym": ["exact"], "parent": ["exact"], "subspecialty": ["exact"]}
|
fields = {
|
||||||
|
"name": ["icontains"],
|
||||||
|
"primary": ["exact"],
|
||||||
|
"synonym": ["exact"],
|
||||||
|
"parent": ["exact"],
|
||||||
|
"subspecialty": ["exact"],
|
||||||
|
"rcr_curriculum": ["exact"],
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<h3>Name: {{condition.name}}</h3>
|
<h3>Name: {{condition.name}}</h3>
|
||||||
Primary name: {{condition.primary}}<br />
|
Primary name: {{condition.primary}}<br />
|
||||||
Synonyms:fyi
|
Synonyms:
|
||||||
{% for syn in condition.synonym.all %}
|
{% for syn in condition.synonym.all %}
|
||||||
<a href="{{syn.get_absolute_url}}">{{syn}}</a>
|
<a href="{{syn.get_absolute_url}}">{{syn}}</a>
|
||||||
{% endfor %}<br />
|
{% endfor %}<br />
|
||||||
|
|||||||
+2
-18
@@ -159,6 +159,7 @@ def get_image_dicom_hash(img, dataset=None) -> (str, bool):
|
|||||||
if dataset is None:
|
if dataset is None:
|
||||||
dataset = pydicom.dcmread(img)
|
dataset = pydicom.dcmread(img)
|
||||||
|
|
||||||
|
# TODO: improve?
|
||||||
md5 = hashlib.md5()
|
md5 = hashlib.md5()
|
||||||
first = True
|
first = True
|
||||||
for i in dataset.pixel_array.astype(str).flatten():
|
for i in dataset.pixel_array.astype(str).flatten():
|
||||||
@@ -177,24 +178,7 @@ def get_image_hash(img) -> (str, bool):
|
|||||||
hash = "1234"
|
hash = "1234"
|
||||||
try:
|
try:
|
||||||
# and generate a hash from the pixel data
|
# and generate a hash from the pixel data
|
||||||
# TODO: improve?
|
hash = get_image_dicom_hash(img)
|
||||||
dataset = pydicom.dcmread(img)
|
|
||||||
# flatten = dataset.pixel_array.astype(str).flatten()
|
|
||||||
# print("flatteded")
|
|
||||||
# pre_join = ",".join(flatten)
|
|
||||||
# print(pre_join)
|
|
||||||
# hash = hashlib.md5(pre_join.encode()).hexdigest()
|
|
||||||
# ----
|
|
||||||
md5 = hashlib.md5()
|
|
||||||
first = True
|
|
||||||
for i in dataset.pixel_array.astype(str).flatten():
|
|
||||||
if first:
|
|
||||||
first = False
|
|
||||||
md5.update(f"{i}".encode())
|
|
||||||
else:
|
|
||||||
md5.update(f",{i}".encode())
|
|
||||||
|
|
||||||
hash = md5.hexdigest()
|
|
||||||
is_dicom = True
|
is_dicom = True
|
||||||
# ----
|
# ----
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -36,4 +36,5 @@ git+https://github.com/jazzband/django-cookie-consent#django-cookie-consent
|
|||||||
django-crispy-forms
|
django-crispy-forms
|
||||||
django-ninja
|
django-ninja
|
||||||
crispy-bootstrap4
|
crispy-bootstrap4
|
||||||
django-rich
|
django-rich
|
||||||
|
ipython
|
||||||
Reference in New Issue
Block a user