Filters

Module contents

Provides filter classes for the REST API endpoints (for more information see the DRF docs and django-filter’s integration with DRF docs).

Submodules

django_dicom.filters.image_filter module

Definition of the ImageFilter class.

class django_dicom.filters.image_filter.ImageFilter(data=None, queryset=None, *, request=None, prefix=None)

Bases: django_filters.rest_framework.filterset.FilterSet

Provides filtering functionality for the ImageViewSet.

Available filters are:

  • id: Primary key
  • series_uid: Series instance UID (contains)
  • series_description: Series description (contains)
  • number: Series number (exact)
  • created_after_date: Create after date
  • created_before_date: Create before date
  • created_after_time: Create after time
  • created_before_time: Create before time
class Meta

Bases: object

fields = ('id', 'uid', 'number')
model

alias of django_dicom.models.image.Image

base_filters = {'created_after_date': <django_filters.filters.DateFilter object>, 'created_after_time': <django_filters.filters.DateFilter object>, 'created_before_date': <django_filters.filters.DateFilter object>, 'created_before_time': <django_filters.filters.DateFilter object>, 'id': <django_filters.filters.NumberFilter object>, 'number': <django_filters.filters.NumberFilter object>, 'sequence_type': <django_filters.filters.MultipleChoiceFilter object>, 'series_description': <django_filters.filters.CharFilter object>, 'series_uid': <django_filters.filters.CharFilter object>, 'uid': <django_filters.filters.CharFilter object>}
declared_filters = {'created_after_date': <django_filters.filters.DateFilter object>, 'created_after_time': <django_filters.filters.DateFilter object>, 'created_before_date': <django_filters.filters.DateFilter object>, 'created_before_time': <django_filters.filters.DateFilter object>, 'sequence_type': <django_filters.filters.MultipleChoiceFilter object>, 'series_description': <django_filters.filters.CharFilter object>, 'series_uid': <django_filters.filters.CharFilter object>}

django_dicom.filters.patient_filter module

Definition of the FilterSet subclass that will be assigned to the PatientViewSet’s filter_class attribute value.

class django_dicom.filters.patient_filter.PatientFilter(data=None, queryset=None, *, request=None, prefix=None)

Bases: django_filters.rest_framework.filterset.FilterSet

Provides filtering functionality for the PatientViewSet.

Available filters are:

  • id: Primary key
  • uid: Patient UID (contains, icontains, or exact)
  • born_after_date: Earliest date of birth
  • born_before_date: Latest date of birth
  • name_prefix: Any of the existing name_prefix values in the database
  • given_name: Given name value (contains, icontains, or exact)
  • middle_name: Middle name value (contains, icontains, or exact)
  • family_name: Family name value (contains, icontains, or exact)
  • name_suffix: Any of the existing name_prefix values in the database
  • sex: Any of the sex options defined in the Sex Enum
  • study__id: Related Study ID
class Meta

Bases: object

fields = ('id', 'uid')
model

alias of django_dicom.models.patient.Patient

base_filters = {'date_of_birth': <django_filters.filters.DateFromToRangeFilter object>, 'family_name': <django_filters.filters.LookupChoiceFilter object>, 'given_name': <django_filters.filters.LookupChoiceFilter object>, 'id': <django_filters.filters.NumberFilter object>, 'middle_name': <django_filters.filters.LookupChoiceFilter object>, 'name_prefix': <django_filters.filters.AllValuesFilter object>, 'name_suffix': <django_filters.filters.AllValuesFilter object>, 'sex': <django_filters.filters.ChoiceFilter object>, 'study__id': <django_filters.filters.NumberFilter object>, 'uid': <django_filters.filters.LookupChoiceFilter object>}
declared_filters = {'date_of_birth': <django_filters.filters.DateFromToRangeFilter object>, 'family_name': <django_filters.filters.LookupChoiceFilter object>, 'given_name': <django_filters.filters.LookupChoiceFilter object>, 'middle_name': <django_filters.filters.LookupChoiceFilter object>, 'name_prefix': <django_filters.filters.AllValuesFilter object>, 'name_suffix': <django_filters.filters.AllValuesFilter object>, 'sex': <django_filters.filters.ChoiceFilter object>, 'study__id': <django_filters.filters.NumberFilter object>, 'uid': <django_filters.filters.LookupChoiceFilter object>}
filter_by_study(queryset: django.db.models.query.QuerySet, name: str, value: int) → django.db.models.query.QuerySet

Returns all Patient instances that have Series instances belonging to the Study with the specified value as primary key.

Used by study__id.

Parameters:
Returns:

Filtered Patient instances

Return type:

QuerySet

django_dicom.filters.series_filter module

Definition of the SeriesFilter class.

class django_dicom.filters.series_filter.SeriesFilter(data=None, queryset=None, *, request=None, prefix=None)

Bases: django_filters.rest_framework.filterset.FilterSet

Provides filtering functionality for the SeriesViewSet.

Available filters are:

  • id: Primary key
  • uid: Series Instance UID
  • patient_id: Related Patient instance’s primary key
  • study_uid: Related Study instance’s uid value
  • study_description: Related Study instance’s description value (in-icontains)
  • modality: Any of the values defined in Modality
  • description: Series description value (contains, icontains, or exact)
  • number: Series number value
  • protocol_name: Protocol name value (contains)
  • scanning_sequence: Any combination of the values defined in ScanningSequence
  • sequence_variant: Any combination of the values defined in SequenceVariant
  • echo_time: echo_time value
  • inversion_time: inversion_time value
  • repetition_time: repetition_time value
  • flip_angle: Any of the existing flip_angle in the database
  • date_after: Exact date value
  • date_before: Create before date
  • time_after: Create after time
  • time_before: Create before time
  • manufacturer: Any of the existing manufacturer in the database
  • manufacturer_model_name: Any of the existing manufacturer_model_name in the database
  • device_serial_number: Any of the existing device_serial_number in the database
  • institution_name: Any of the existing institution_name in the database
  • pulse_sequence_name: pulse_sequence_name value (in-icontains)
  • sequence_name: sequence_name value (in-icontains)
class Meta

Bases: object

fields = ('id', 'uid', 'number', 'patient__id')
model

alias of django_dicom.models.series.Series

base_filters = {'date': <django_filters.filters.DateRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'device_serial_number': <django_filters.filters.AllValuesFilter object>, 'echo_time': <django_filters.filters.RangeFilter object>, 'flip_angle': <django_filters.filters.AllValuesFilter object>, 'header_fields': <django_filters.filters.CharFilter object>, 'id': <django_filters.filters.NumberFilter object>, 'institution_name': <django_filters.filters.AllValuesFilter object>, 'inversion_time': <django_filters.filters.RangeFilter object>, 'magnetic_field_strength': <django_filters.filters.AllValuesFilter object>, 'manufacturer': <django_filters.filters.AllValuesFilter object>, 'manufacturer_model_name': <django_filters.filters.AllValuesFilter object>, 'modality': <django_filters.filters.ChoiceFilter object>, 'number': <django_filters.filters.NumberFilter object>, 'patient__id': <django_filters.filters.NumberFilter object>, 'pixel_spacing': <django_filters.filters.RangeFilter object>, 'protocol_name': <django_filters.filters.CharFilter object>, 'pulse_sequence_name': <django_dicom.filters.utils.CharInFilter object>, 'repetition_time': <django_filters.filters.RangeFilter object>, 'scanning_sequence': <django_filters.filters.MultipleChoiceFilter object>, 'sequence_name': <django_dicom.filters.utils.CharInFilter object>, 'sequence_type': <django_filters.filters.MultipleChoiceFilter object>, 'sequence_variant': <django_filters.filters.MultipleChoiceFilter object>, 'slice_thickness': <django_filters.filters.RangeFilter object>, 'study_description': <django_dicom.filters.utils.CharInFilter object>, 'study_uid': <django_filters.filters.CharFilter object>, 'time': <django_filters.filters.TimeRangeFilter object>, 'uid': <django_filters.filters.CharFilter object>}
declared_filters = {'date': <django_filters.filters.DateRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'device_serial_number': <django_filters.filters.AllValuesFilter object>, 'echo_time': <django_filters.filters.RangeFilter object>, 'flip_angle': <django_filters.filters.AllValuesFilter object>, 'header_fields': <django_filters.filters.CharFilter object>, 'institution_name': <django_filters.filters.AllValuesFilter object>, 'inversion_time': <django_filters.filters.RangeFilter object>, 'magnetic_field_strength': <django_filters.filters.AllValuesFilter object>, 'manufacturer': <django_filters.filters.AllValuesFilter object>, 'manufacturer_model_name': <django_filters.filters.AllValuesFilter object>, 'modality': <django_filters.filters.ChoiceFilter object>, 'pixel_spacing': <django_filters.filters.RangeFilter object>, 'protocol_name': <django_filters.filters.CharFilter object>, 'pulse_sequence_name': <django_dicom.filters.utils.CharInFilter object>, 'repetition_time': <django_filters.filters.RangeFilter object>, 'scanning_sequence': <django_filters.filters.MultipleChoiceFilter object>, 'sequence_name': <django_dicom.filters.utils.CharInFilter object>, 'sequence_type': <django_filters.filters.MultipleChoiceFilter object>, 'sequence_variant': <django_filters.filters.MultipleChoiceFilter object>, 'slice_thickness': <django_filters.filters.RangeFilter object>, 'study_description': <django_dicom.filters.utils.CharInFilter object>, 'study_uid': <django_filters.filters.CharFilter object>, 'time': <django_filters.filters.TimeRangeFilter object>}
django_dicom.filters.series_filter.filter_array(queryset: django.db.models.query.QuerySet, field_name: str, value: list)

Returns an exact lookup for a PostgreSQL ArrayField.

Parameters:
  • queryset (QuerySet) – The filtered queryset
  • field_name (str) – The name of the field the queryset is being filtered by
  • value (list) – The values to filter by
django_dicom.filters.series_filter.filter_header(queryset: django.db.models.query.QuerySet, field_name: str, values: str)

Returns a desired lookup for a DicomHeader field.

Parameters:
  • queryset (QuerySet) – The filtered queryset
  • field_name (str) – The name of the field the queryset is being filtered by
  • values (dict) – The fields and values to filter by
django_dicom.filters.series_filter.filter_in_string(queryset: django.db.models.query.QuerySet, field_name: str, values: list)

Returns a in-icontains mixed lookup with ‘or’ between values for a CharField.

Parameters:
  • queryset (QuerySet) – The filtered queryset
  • field_name (str) – The name of the field the queryset is being filtered by
  • values (str) – The values to filter by

django_dicom.filters.study_filter module

Definition of the StudyFilter class.

class django_dicom.filters.study_filter.StudyFilter(data=None, queryset=None, *, request=None, prefix=None)

Bases: django_filters.rest_framework.filterset.FilterSet

Provides filtering functionality for the StudyViewSet.

Available filters are:

  • id: Primary key
  • uid: Study instance UID
  • description: Study description (contains, icontains, or exact)
  • created_after_date: Create after date
  • created_before_date: Create before date
  • created_after_time: Create after time
  • created_before_time: Create before time
class Meta

Bases: object

fields = ('id',)
model

alias of django_dicom.models.study.Study

base_filters = {'date': <django_filters.filters.DateFromToRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'id': <django_filters.filters.NumberFilter object>, 'time_after': <django_filters.filters.TimeFilter object>, 'time_before': <django_filters.filters.TimeFilter object>, 'uid': <django_filters.filters.LookupChoiceFilter object>}
declared_filters = {'date': <django_filters.filters.DateFromToRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'time_after': <django_filters.filters.TimeFilter object>, 'time_before': <django_filters.filters.TimeFilter object>, 'uid': <django_filters.filters.LookupChoiceFilter object>}