endoreg-db 0.8.9.2__py3-none-any.whl → 0.8.9.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/admin.py +10 -5
- endoreg_db/apps.py +4 -7
- endoreg_db/authz/auth.py +1 -0
- endoreg_db/authz/backends.py +1 -1
- endoreg_db/authz/management/commands/list_routes.py +2 -0
- endoreg_db/authz/middleware.py +8 -7
- endoreg_db/authz/permissions.py +21 -10
- endoreg_db/authz/policy.py +14 -19
- endoreg_db/authz/views_auth.py +14 -10
- endoreg_db/codemods/rename_datetime_fields.py +8 -1
- endoreg_db/exceptions.py +5 -2
- endoreg_db/forms/__init__.py +0 -1
- endoreg_db/forms/examination_form.py +4 -3
- endoreg_db/forms/patient_finding_intervention_form.py +30 -8
- endoreg_db/forms/patient_form.py +9 -13
- endoreg_db/forms/questionnaires/__init__.py +1 -1
- endoreg_db/forms/settings/__init__.py +4 -1
- endoreg_db/forms/unit.py +2 -1
- endoreg_db/helpers/count_db.py +17 -14
- endoreg_db/helpers/default_objects.py +2 -1
- endoreg_db/helpers/download_segmentation_model.py +4 -3
- endoreg_db/helpers/interact.py +0 -5
- endoreg_db/helpers/test_video_helper.py +33 -25
- endoreg_db/import_files/__init__.py +1 -1
- endoreg_db/import_files/context/__init__.py +1 -1
- endoreg_db/import_files/context/default_sensitive_meta.py +11 -9
- endoreg_db/import_files/context/ensure_center.py +4 -4
- endoreg_db/import_files/context/file_lock.py +3 -3
- endoreg_db/import_files/context/import_context.py +11 -12
- endoreg_db/import_files/context/validate_directories.py +1 -0
- endoreg_db/import_files/file_storage/create_report_file.py +57 -34
- endoreg_db/import_files/file_storage/create_video_file.py +64 -35
- endoreg_db/import_files/file_storage/sensitive_meta_storage.py +5 -2
- endoreg_db/import_files/file_storage/state_management.py +89 -122
- endoreg_db/import_files/file_storage/storage.py +5 -1
- endoreg_db/import_files/processing/report_processing/report_anonymization.py +24 -19
- endoreg_db/import_files/processing/sensitive_meta_adapter.py +3 -3
- endoreg_db/import_files/processing/video_processing/video_anonymization.py +18 -18
- endoreg_db/import_files/pseudonymization/k_anonymity.py +8 -9
- endoreg_db/import_files/pseudonymization/k_pseudonymity.py +16 -5
- endoreg_db/import_files/report_import_service.py +36 -30
- endoreg_db/import_files/video_import_service.py +27 -23
- endoreg_db/logger_conf.py +56 -40
- endoreg_db/management/__init__.py +1 -1
- endoreg_db/management/commands/__init__.py +1 -1
- endoreg_db/management/commands/check_auth.py +45 -38
- endoreg_db/management/commands/create_model_meta_from_huggingface.py +53 -2
- endoreg_db/management/commands/create_multilabel_model_meta.py +54 -19
- endoreg_db/management/commands/fix_missing_patient_data.py +105 -71
- endoreg_db/management/commands/fix_video_paths.py +75 -54
- endoreg_db/management/commands/import_report.py +1 -3
- endoreg_db/management/commands/list_routes.py +2 -0
- endoreg_db/management/commands/load_ai_model_data.py +8 -2
- endoreg_db/management/commands/load_ai_model_label_data.py +0 -1
- endoreg_db/management/commands/load_center_data.py +3 -3
- endoreg_db/management/commands/load_distribution_data.py +35 -38
- endoreg_db/management/commands/load_endoscope_data.py +0 -3
- endoreg_db/management/commands/load_examination_data.py +20 -4
- endoreg_db/management/commands/load_finding_data.py +18 -3
- endoreg_db/management/commands/load_gender_data.py +17 -24
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +95 -85
- endoreg_db/management/commands/load_information_source.py +0 -3
- endoreg_db/management/commands/load_lab_value_data.py +14 -3
- endoreg_db/management/commands/load_legacy_data.py +303 -0
- endoreg_db/management/commands/load_name_data.py +1 -2
- endoreg_db/management/commands/load_pdf_type_data.py +4 -8
- endoreg_db/management/commands/load_profession_data.py +0 -1
- endoreg_db/management/commands/load_report_reader_flag_data.py +0 -4
- endoreg_db/management/commands/load_requirement_data.py +6 -2
- endoreg_db/management/commands/load_unit_data.py +0 -4
- endoreg_db/management/commands/load_user_groups.py +5 -7
- endoreg_db/management/commands/model_input.py +169 -0
- endoreg_db/management/commands/register_ai_model.py +22 -16
- endoreg_db/management/commands/setup_endoreg_db.py +110 -32
- endoreg_db/management/commands/storage_management.py +14 -8
- endoreg_db/management/commands/summarize_db_content.py +154 -63
- endoreg_db/management/commands/train_image_multilabel_model.py +144 -0
- endoreg_db/management/commands/validate_video_files.py +82 -50
- endoreg_db/management/commands/video_validation.py +4 -6
- endoreg_db/migrations/0001_initial.py +112 -63
- endoreg_db/models/__init__.py +8 -0
- endoreg_db/models/administration/ai/active_model.py +5 -5
- endoreg_db/models/administration/ai/ai_model.py +41 -18
- endoreg_db/models/administration/ai/model_type.py +1 -0
- endoreg_db/models/administration/case/case.py +22 -22
- endoreg_db/models/administration/center/__init__.py +5 -5
- endoreg_db/models/administration/center/center.py +6 -2
- endoreg_db/models/administration/center/center_resource.py +18 -4
- endoreg_db/models/administration/center/center_shift.py +3 -1
- endoreg_db/models/administration/center/center_waste.py +6 -2
- endoreg_db/models/administration/person/__init__.py +1 -1
- endoreg_db/models/administration/person/employee/__init__.py +1 -1
- endoreg_db/models/administration/person/employee/employee_type.py +3 -1
- endoreg_db/models/administration/person/examiner/__init__.py +1 -1
- endoreg_db/models/administration/person/examiner/examiner.py +10 -2
- endoreg_db/models/administration/person/names/first_name.py +6 -4
- endoreg_db/models/administration/person/names/last_name.py +4 -3
- endoreg_db/models/administration/person/patient/__init__.py +1 -1
- endoreg_db/models/administration/person/patient/patient.py +0 -1
- endoreg_db/models/administration/person/patient/patient_external_id.py +0 -1
- endoreg_db/models/administration/person/person.py +1 -1
- endoreg_db/models/administration/product/__init__.py +7 -6
- endoreg_db/models/administration/product/product.py +6 -2
- endoreg_db/models/administration/product/product_group.py +9 -7
- endoreg_db/models/administration/product/product_material.py +9 -2
- endoreg_db/models/administration/product/reference_product.py +64 -15
- endoreg_db/models/administration/qualification/qualification.py +3 -1
- endoreg_db/models/administration/shift/shift.py +3 -1
- endoreg_db/models/administration/shift/shift_type.py +12 -4
- endoreg_db/models/aidataset/__init__.py +5 -0
- endoreg_db/models/aidataset/aidataset.py +193 -0
- endoreg_db/models/label/__init__.py +1 -1
- endoreg_db/models/label/label.py +10 -2
- endoreg_db/models/label/label_set.py +3 -1
- endoreg_db/models/label/label_video_segment/_create_from_video.py +6 -2
- endoreg_db/models/label/label_video_segment/label_video_segment.py +148 -44
- endoreg_db/models/media/__init__.py +12 -5
- endoreg_db/models/media/frame/__init__.py +1 -1
- endoreg_db/models/media/frame/frame.py +34 -8
- endoreg_db/models/media/pdf/__init__.py +2 -1
- endoreg_db/models/media/pdf/raw_pdf.py +11 -4
- endoreg_db/models/media/pdf/report_file.py +6 -2
- endoreg_db/models/media/pdf/report_reader/__init__.py +3 -3
- endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +15 -5
- endoreg_db/models/media/video/create_from_file.py +20 -41
- endoreg_db/models/media/video/pipe_1.py +75 -30
- endoreg_db/models/media/video/pipe_2.py +37 -12
- endoreg_db/models/media/video/video_file.py +36 -24
- endoreg_db/models/media/video/video_file_ai.py +235 -70
- endoreg_db/models/media/video/video_file_anonymize.py +240 -65
- endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +6 -1
- endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +3 -1
- endoreg_db/models/media/video/video_file_frames/_delete_frames.py +30 -9
- endoreg_db/models/media/video/video_file_frames/_extract_frames.py +95 -29
- endoreg_db/models/media/video/video_file_frames/_get_frame.py +13 -3
- endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +4 -1
- endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +15 -3
- endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +15 -3
- endoreg_db/models/media/video/video_file_frames/_get_frames.py +7 -2
- endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +109 -23
- endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +111 -27
- endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +46 -13
- endoreg_db/models/media/video/video_file_io.py +85 -33
- endoreg_db/models/media/video/video_file_meta/__init__.py +6 -6
- endoreg_db/models/media/video/video_file_meta/get_crop_template.py +17 -4
- endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +28 -7
- endoreg_db/models/media/video/video_file_meta/get_fps.py +46 -13
- endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +81 -20
- endoreg_db/models/media/video/video_file_meta/text_meta.py +61 -20
- endoreg_db/models/media/video/video_file_meta/video_meta.py +40 -12
- endoreg_db/models/media/video/video_file_segments.py +118 -27
- endoreg_db/models/media/video/video_metadata.py +25 -6
- endoreg_db/models/media/video/video_processing.py +54 -15
- endoreg_db/models/medical/__init__.py +3 -13
- endoreg_db/models/medical/contraindication/__init__.py +3 -1
- endoreg_db/models/medical/disease.py +18 -6
- endoreg_db/models/medical/event.py +6 -2
- endoreg_db/models/medical/examination/__init__.py +5 -1
- endoreg_db/models/medical/examination/examination.py +22 -6
- endoreg_db/models/medical/examination/examination_indication.py +23 -7
- endoreg_db/models/medical/examination/examination_time.py +6 -2
- endoreg_db/models/medical/finding/__init__.py +3 -1
- endoreg_db/models/medical/finding/finding.py +37 -12
- endoreg_db/models/medical/finding/finding_classification.py +27 -8
- endoreg_db/models/medical/finding/finding_intervention.py +19 -6
- endoreg_db/models/medical/finding/finding_type.py +3 -1
- endoreg_db/models/medical/hardware/__init__.py +1 -1
- endoreg_db/models/medical/hardware/endoscope.py +14 -2
- endoreg_db/models/medical/laboratory/__init__.py +1 -1
- endoreg_db/models/medical/laboratory/lab_value.py +139 -39
- endoreg_db/models/medical/medication/__init__.py +7 -3
- endoreg_db/models/medical/medication/medication.py +3 -1
- endoreg_db/models/medical/medication/medication_indication.py +3 -1
- endoreg_db/models/medical/medication/medication_indication_type.py +11 -3
- endoreg_db/models/medical/medication/medication_intake_time.py +3 -1
- endoreg_db/models/medical/medication/medication_schedule.py +3 -1
- endoreg_db/models/medical/patient/__init__.py +2 -10
- endoreg_db/models/medical/patient/medication_examples.py +3 -14
- endoreg_db/models/medical/patient/patient_disease.py +17 -5
- endoreg_db/models/medical/patient/patient_event.py +12 -4
- endoreg_db/models/medical/patient/patient_examination.py +52 -15
- endoreg_db/models/medical/patient/patient_examination_indication.py +15 -4
- endoreg_db/models/medical/patient/patient_finding.py +105 -29
- endoreg_db/models/medical/patient/patient_finding_classification.py +41 -12
- endoreg_db/models/medical/patient/patient_finding_intervention.py +11 -3
- endoreg_db/models/medical/patient/patient_lab_sample.py +6 -2
- endoreg_db/models/medical/patient/patient_lab_value.py +42 -10
- endoreg_db/models/medical/patient/patient_medication.py +25 -7
- endoreg_db/models/medical/patient/patient_medication_schedule.py +34 -10
- endoreg_db/models/metadata/model_meta.py +40 -12
- endoreg_db/models/metadata/model_meta_logic.py +51 -16
- endoreg_db/models/metadata/sensitive_meta.py +65 -28
- endoreg_db/models/metadata/sensitive_meta_logic.py +28 -26
- endoreg_db/models/metadata/video_meta.py +146 -39
- endoreg_db/models/metadata/video_prediction_logic.py +70 -21
- endoreg_db/models/metadata/video_prediction_meta.py +80 -27
- endoreg_db/models/operation_log.py +63 -0
- endoreg_db/models/other/__init__.py +10 -10
- endoreg_db/models/other/distribution/__init__.py +9 -7
- endoreg_db/models/other/distribution/base_value_distribution.py +3 -1
- endoreg_db/models/other/distribution/date_value_distribution.py +19 -5
- endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +3 -1
- endoreg_db/models/other/distribution/numeric_value_distribution.py +34 -9
- endoreg_db/models/other/emission/__init__.py +1 -1
- endoreg_db/models/other/emission/emission_factor.py +9 -3
- endoreg_db/models/other/information_source.py +15 -5
- endoreg_db/models/other/material.py +3 -1
- endoreg_db/models/other/transport_route.py +3 -1
- endoreg_db/models/other/unit.py +6 -2
- endoreg_db/models/report/report.py +0 -1
- endoreg_db/models/requirement/requirement.py +84 -27
- endoreg_db/models/requirement/requirement_error.py +5 -6
- endoreg_db/models/requirement/requirement_evaluation/__init__.py +1 -1
- endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +8 -8
- endoreg_db/models/requirement/requirement_evaluation/get_values.py +3 -3
- endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +24 -8
- endoreg_db/models/requirement/requirement_operator.py +28 -8
- endoreg_db/models/requirement/requirement_set.py +34 -11
- endoreg_db/models/state/__init__.py +1 -0
- endoreg_db/models/state/audit_ledger.py +9 -2
- endoreg_db/models/{media → state}/processing_history/__init__.py +1 -3
- endoreg_db/models/state/processing_history/processing_history.py +136 -0
- endoreg_db/models/state/raw_pdf.py +0 -1
- endoreg_db/models/state/video.py +2 -4
- endoreg_db/models/utils.py +4 -2
- endoreg_db/queries/__init__.py +2 -6
- endoreg_db/queries/annotations/__init__.py +1 -3
- endoreg_db/queries/annotations/legacy.py +37 -26
- endoreg_db/root_urls.py +3 -4
- endoreg_db/schemas/examination_evaluation.py +3 -0
- endoreg_db/serializers/Frames_NICE_and_PARIS_classifications.py +249 -163
- endoreg_db/serializers/__init__.py +2 -8
- endoreg_db/serializers/administration/__init__.py +1 -2
- endoreg_db/serializers/administration/ai/__init__.py +0 -1
- endoreg_db/serializers/administration/ai/active_model.py +3 -1
- endoreg_db/serializers/administration/ai/ai_model.py +5 -3
- endoreg_db/serializers/administration/ai/model_type.py +3 -1
- endoreg_db/serializers/administration/center.py +7 -2
- endoreg_db/serializers/administration/gender.py +4 -2
- endoreg_db/serializers/anonymization.py +13 -13
- endoreg_db/serializers/evaluation/examination_evaluation.py +0 -1
- endoreg_db/serializers/examination/__init__.py +1 -1
- endoreg_db/serializers/examination/base.py +12 -13
- endoreg_db/serializers/examination/dropdown.py +6 -7
- endoreg_db/serializers/examination_serializer.py +3 -6
- endoreg_db/serializers/finding/__init__.py +1 -1
- endoreg_db/serializers/finding/finding.py +14 -7
- endoreg_db/serializers/finding_classification/__init__.py +3 -3
- endoreg_db/serializers/finding_classification/choice.py +3 -3
- endoreg_db/serializers/finding_classification/classification.py +2 -4
- endoreg_db/serializers/label_video_segment/__init__.py +5 -3
- endoreg_db/serializers/{label → label_video_segment}/image_classification_annotation.py +5 -5
- endoreg_db/serializers/label_video_segment/label/__init__.py +6 -0
- endoreg_db/serializers/{label → label_video_segment/label}/label.py +1 -1
- endoreg_db/serializers/label_video_segment/label_video_segment.py +338 -228
- endoreg_db/serializers/meta/__init__.py +1 -2
- endoreg_db/serializers/meta/sensitive_meta_detail.py +28 -13
- endoreg_db/serializers/meta/sensitive_meta_update.py +51 -46
- endoreg_db/serializers/meta/sensitive_meta_verification.py +19 -16
- endoreg_db/serializers/misc/__init__.py +2 -2
- endoreg_db/serializers/misc/file_overview.py +11 -7
- endoreg_db/serializers/misc/stats.py +10 -8
- endoreg_db/serializers/misc/translatable_field_mix_in.py +6 -6
- endoreg_db/serializers/misc/upload_job.py +32 -29
- endoreg_db/serializers/patient/__init__.py +2 -1
- endoreg_db/serializers/patient/patient.py +32 -15
- endoreg_db/serializers/patient/patient_dropdown.py +11 -3
- endoreg_db/serializers/patient_examination/__init__.py +1 -1
- endoreg_db/serializers/patient_examination/patient_examination.py +67 -40
- endoreg_db/serializers/patient_finding/__init__.py +1 -1
- endoreg_db/serializers/patient_finding/patient_finding.py +2 -1
- endoreg_db/serializers/patient_finding/patient_finding_classification.py +17 -9
- endoreg_db/serializers/patient_finding/patient_finding_detail.py +26 -17
- endoreg_db/serializers/patient_finding/patient_finding_intervention.py +7 -5
- endoreg_db/serializers/patient_finding/patient_finding_list.py +10 -11
- endoreg_db/serializers/patient_finding/patient_finding_write.py +36 -27
- endoreg_db/serializers/pdf/__init__.py +1 -3
- endoreg_db/serializers/requirements/requirement_schema.py +1 -6
- endoreg_db/serializers/sensitive_meta_serializer.py +100 -81
- endoreg_db/serializers/video/__init__.py +2 -2
- endoreg_db/serializers/video/{segmentation.py → video_file.py} +66 -47
- endoreg_db/serializers/video/video_file_brief.py +6 -2
- endoreg_db/serializers/video/video_file_detail.py +36 -23
- endoreg_db/serializers/video/video_file_list.py +4 -2
- endoreg_db/serializers/video/video_processing_history.py +54 -50
- endoreg_db/services/__init__.py +1 -1
- endoreg_db/services/anonymization.py +2 -2
- endoreg_db/services/examination_evaluation.py +40 -17
- endoreg_db/services/model_meta_from_hf.py +76 -0
- endoreg_db/services/polling_coordinator.py +101 -70
- endoreg_db/services/pseudonym_service.py +27 -22
- endoreg_db/services/report_import.py +6 -3
- endoreg_db/services/segment_sync.py +75 -59
- endoreg_db/services/video_import.py +6 -7
- endoreg_db/urls/__init__.py +2 -2
- endoreg_db/urls/ai.py +7 -25
- endoreg_db/urls/anonymization.py +61 -15
- endoreg_db/urls/auth.py +4 -4
- endoreg_db/urls/classification.py +4 -9
- endoreg_db/urls/examination.py +27 -18
- endoreg_db/urls/media.py +27 -34
- endoreg_db/urls/patient.py +11 -7
- endoreg_db/urls/requirements.py +3 -1
- endoreg_db/urls/root_urls.py +2 -3
- endoreg_db/urls/stats.py +24 -16
- endoreg_db/urls/upload.py +3 -11
- endoreg_db/utils/__init__.py +14 -15
- endoreg_db/utils/ai/__init__.py +1 -1
- endoreg_db/utils/ai/data_loader_for_model_input.py +262 -0
- endoreg_db/utils/ai/data_loader_for_model_training.py +262 -0
- endoreg_db/utils/ai/get.py +2 -1
- endoreg_db/utils/ai/inference_dataset.py +14 -15
- endoreg_db/utils/ai/model_training/config.py +117 -0
- endoreg_db/utils/ai/model_training/dataset.py +74 -0
- endoreg_db/utils/ai/model_training/losses.py +68 -0
- endoreg_db/utils/ai/model_training/metrics.py +78 -0
- endoreg_db/utils/ai/model_training/model_backbones.py +155 -0
- endoreg_db/utils/ai/model_training/model_gastronet_resnet.py +118 -0
- endoreg_db/utils/ai/model_training/trainer_gastronet_multilabel.py +771 -0
- endoreg_db/utils/ai/multilabel_classification_net.py +21 -6
- endoreg_db/utils/ai/predict.py +4 -4
- endoreg_db/utils/ai/preprocess.py +19 -11
- endoreg_db/utils/calc_duration_seconds.py +4 -4
- endoreg_db/utils/case_generator/lab_sample_factory.py +3 -4
- endoreg_db/utils/check_video_files.py +74 -47
- endoreg_db/utils/cropping.py +10 -9
- endoreg_db/utils/dataloader.py +11 -3
- endoreg_db/utils/dates.py +3 -4
- endoreg_db/utils/defaults/set_default_center.py +7 -6
- endoreg_db/utils/env.py +6 -2
- endoreg_db/utils/extract_specific_frames.py +24 -9
- endoreg_db/utils/file_operations.py +30 -18
- endoreg_db/utils/fix_video_path_direct.py +57 -41
- endoreg_db/utils/frame_anonymization_utils.py +157 -157
- endoreg_db/utils/hashs.py +3 -18
- endoreg_db/utils/links/requirement_link.py +96 -52
- endoreg_db/utils/ocr.py +30 -25
- endoreg_db/utils/operation_log.py +61 -0
- endoreg_db/utils/parse_and_generate_yaml.py +12 -13
- endoreg_db/utils/paths.py +6 -6
- endoreg_db/utils/permissions.py +40 -24
- endoreg_db/utils/pipelines/process_video_dir.py +50 -26
- endoreg_db/utils/product/sum_emissions.py +5 -3
- endoreg_db/utils/product/sum_weights.py +4 -2
- endoreg_db/utils/pydantic_models/__init__.py +3 -4
- endoreg_db/utils/requirement_operator_logic/_old/lab_value_operators.py +207 -107
- endoreg_db/utils/requirement_operator_logic/_old/model_evaluators.py +252 -65
- endoreg_db/utils/requirement_operator_logic/new_operator_logic.py +27 -10
- endoreg_db/utils/setup_config.py +21 -5
- endoreg_db/utils/storage.py +3 -1
- endoreg_db/utils/translation.py +19 -15
- endoreg_db/utils/uuid.py +1 -0
- endoreg_db/utils/validate_endo_roi.py +12 -4
- endoreg_db/utils/validate_subcategory_dict.py +26 -24
- endoreg_db/utils/validate_video_detailed.py +207 -149
- endoreg_db/utils/video/__init__.py +7 -3
- endoreg_db/utils/video/extract_frames.py +30 -18
- endoreg_db/utils/video/names.py +11 -6
- endoreg_db/utils/video/streaming_processor.py +175 -101
- endoreg_db/utils/video/video_splitter.py +30 -19
- endoreg_db/views/Frames_NICE_and_PARIS_classifications_views.py +59 -50
- endoreg_db/views/__init__.py +0 -20
- endoreg_db/views/anonymization/__init__.py +6 -2
- endoreg_db/views/anonymization/media_management.py +2 -6
- endoreg_db/views/anonymization/overview.py +34 -1
- endoreg_db/views/anonymization/validate.py +79 -18
- endoreg_db/views/auth/__init__.py +1 -1
- endoreg_db/views/auth/keycloak.py +16 -14
- endoreg_db/views/examination/__init__.py +12 -15
- endoreg_db/views/examination/examination.py +5 -5
- endoreg_db/views/examination/examination_manifest_cache.py +5 -5
- endoreg_db/views/examination/get_finding_classification_choices.py +8 -5
- endoreg_db/views/examination/get_finding_classifications.py +9 -7
- endoreg_db/views/examination/get_findings.py +8 -10
- endoreg_db/views/examination/get_instruments.py +3 -2
- endoreg_db/views/examination/get_interventions.py +1 -1
- endoreg_db/views/finding/__init__.py +2 -2
- endoreg_db/views/finding/finding.py +58 -54
- endoreg_db/views/finding/get_classifications.py +1 -1
- endoreg_db/views/finding/get_interventions.py +1 -1
- endoreg_db/views/finding_classification/__init__.py +5 -5
- endoreg_db/views/finding_classification/finding_classification.py +5 -6
- endoreg_db/views/finding_classification/get_classification_choices.py +3 -4
- endoreg_db/views/media/__init__.py +13 -13
- endoreg_db/views/media/pdf_media.py +9 -9
- endoreg_db/views/media/sensitive_metadata.py +10 -7
- endoreg_db/views/media/video_media.py +4 -4
- endoreg_db/views/meta/__init__.py +1 -1
- endoreg_db/views/meta/sensitive_meta_list.py +20 -22
- endoreg_db/views/meta/sensitive_meta_verification.py +14 -11
- endoreg_db/views/misc/__init__.py +6 -34
- endoreg_db/views/misc/center.py +2 -1
- endoreg_db/views/misc/csrf.py +2 -1
- endoreg_db/views/misc/gender.py +2 -1
- endoreg_db/views/misc/stats.py +141 -106
- endoreg_db/views/patient/__init__.py +1 -3
- endoreg_db/views/patient/patient.py +141 -99
- endoreg_db/views/patient_examination/__init__.py +5 -5
- endoreg_db/views/patient_examination/patient_examination.py +43 -42
- endoreg_db/views/patient_examination/patient_examination_create.py +10 -15
- endoreg_db/views/patient_examination/patient_examination_detail.py +12 -15
- endoreg_db/views/patient_examination/patient_examination_list.py +21 -17
- endoreg_db/views/patient_examination/video.py +114 -80
- endoreg_db/views/patient_finding/__init__.py +1 -1
- endoreg_db/views/patient_finding/patient_finding.py +17 -10
- endoreg_db/views/patient_finding/patient_finding_optimized.py +127 -95
- endoreg_db/views/patient_finding_classification/__init__.py +1 -1
- endoreg_db/views/patient_finding_classification/pfc_create.py +35 -27
- endoreg_db/views/report/reimport.py +1 -1
- endoreg_db/views/report/report_stream.py +5 -8
- endoreg_db/views/requirement/__init__.py +2 -1
- endoreg_db/views/requirement/evaluate.py +7 -9
- endoreg_db/views/requirement/lookup.py +2 -3
- endoreg_db/views/requirement/lookup_store.py +0 -1
- endoreg_db/views/requirement/requirement_utils.py +2 -4
- endoreg_db/views/stats/__init__.py +4 -4
- endoreg_db/views/stats/stats_views.py +152 -115
- endoreg_db/views/video/__init__.py +18 -27
- endoreg_db/views/{ai → video/ai}/__init__.py +2 -2
- endoreg_db/views/{ai → video/ai}/label.py +20 -16
- endoreg_db/views/video/correction.py +5 -6
- endoreg_db/views/video/reimport.py +134 -99
- endoreg_db/views/video/segments_crud.py +134 -44
- endoreg_db/views/video/video_apply_mask.py +13 -12
- endoreg_db/views/video/video_correction.py +2 -1
- endoreg_db/views/video/video_download_processed.py +15 -15
- endoreg_db/views/video/video_meta_stats.py +7 -6
- endoreg_db/views/video/video_processing_history.py +3 -2
- endoreg_db/views/video/video_remove_frames.py +13 -12
- endoreg_db/views/video/video_stream.py +110 -82
- {endoreg_db-0.8.9.2.dist-info → endoreg_db-0.8.9.10.dist-info}/METADATA +9 -3
- {endoreg_db-0.8.9.2.dist-info → endoreg_db-0.8.9.10.dist-info}/RECORD +434 -431
- endoreg_db/management/commands/import_fallback_video.py +0 -203
- endoreg_db/management/commands/import_video.py +0 -422
- endoreg_db/management/commands/import_video_with_classification.py +0 -367
- endoreg_db/models/media/processing_history/processing_history.py +0 -96
- endoreg_db/serializers/label/__init__.py +0 -7
- endoreg_db/serializers/label_video_segment/_lvs_create.py +0 -149
- endoreg_db/serializers/label_video_segment/_lvs_update.py +0 -138
- endoreg_db/serializers/label_video_segment/_lvs_validate.py +0 -149
- endoreg_db/serializers/label_video_segment/label_video_segment_annotation.py +0 -99
- endoreg_db/serializers/label_video_segment/label_video_segment_update.py +0 -163
- endoreg_db/services/__old/pdf_import.py +0 -1487
- endoreg_db/services/__old/video_import.py +0 -1306
- endoreg_db/tasks/upload_tasks.py +0 -216
- endoreg_db/tasks/video_ingest.py +0 -161
- endoreg_db/tasks/video_processing_tasks.py +0 -327
- endoreg_db/views/misc/translation.py +0 -182
- {endoreg_db-0.8.9.2.dist-info → endoreg_db-0.8.9.10.dist-info}/WHEEL +0 -0
- {endoreg_db-0.8.9.2.dist-info → endoreg_db-0.8.9.10.dist-info}/licenses/LICENSE +0 -0
|
@@ -14,9 +14,9 @@ from .finding import FindingSerializer
|
|
|
14
14
|
from .finding_classification import (
|
|
15
15
|
FindingClassificationSerializer, # FindingClassificationChoiceSerializer,
|
|
16
16
|
)
|
|
17
|
-
from .label import ImageClassificationAnnotationSerializer, LabelSerializer
|
|
18
17
|
from .label_video_segment import (
|
|
19
|
-
|
|
18
|
+
ImageClassificationAnnotationSerializer,
|
|
19
|
+
LabelSerializer,
|
|
20
20
|
LabelVideoSegmentSerializer,
|
|
21
21
|
)
|
|
22
22
|
from .meta import (
|
|
@@ -65,12 +65,10 @@ __all__ = [
|
|
|
65
65
|
# Finding
|
|
66
66
|
"FindingSerializer",
|
|
67
67
|
"FindingClassificationSerializer",
|
|
68
|
-
"FindingClassificationChoiceSerializer",
|
|
69
68
|
"LabelSerializer",
|
|
70
69
|
"ImageClassificationAnnotationSerializer",
|
|
71
70
|
# LabelVideoSegment
|
|
72
71
|
"LabelVideoSegmentSerializer",
|
|
73
|
-
"LabelVideoSegmentAnnotationSerializer",
|
|
74
72
|
# Meta
|
|
75
73
|
"SensitiveMetaDetailSerializer",
|
|
76
74
|
"SensitiveMetaUpdateSerializer",
|
|
@@ -97,10 +95,6 @@ __all__ = [
|
|
|
97
95
|
"PatientFindingWriteSerializer",
|
|
98
96
|
# report
|
|
99
97
|
"RawPdfAnonyTextSerializer",
|
|
100
|
-
# Report
|
|
101
|
-
"ReportListSerializer",
|
|
102
|
-
"ReportDataSerializer",
|
|
103
|
-
"SecureFileUrlSerializer",
|
|
104
98
|
# Video Correction (Phase 1.1)
|
|
105
99
|
"VideoProcessingHistorySerializer",
|
|
106
100
|
# Video Examination
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from endoreg_db.models import ActiveModel
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class ActiveModelSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""
|
|
6
7
|
Serializer for the ActiveModel model.
|
|
7
8
|
"""
|
|
9
|
+
|
|
8
10
|
class Meta:
|
|
9
11
|
model = ActiveModel
|
|
10
|
-
fields =
|
|
12
|
+
fields = "__all__"
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from endoreg_db.models import AiModel, ModelType
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class AiModelSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""
|
|
6
7
|
Serializer for the AiModel model.
|
|
7
8
|
Handles 'model_type' relationship by its name.
|
|
8
9
|
"""
|
|
10
|
+
|
|
9
11
|
model_type = serializers.SlugRelatedField(
|
|
10
12
|
queryset=ModelType.objects.all(),
|
|
11
|
-
slug_field=
|
|
13
|
+
slug_field="name",
|
|
12
14
|
allow_null=True, # Match model field definition
|
|
13
|
-
required=False
|
|
15
|
+
required=False, # Match model field definition (blank=True)
|
|
14
16
|
)
|
|
15
17
|
|
|
16
18
|
class Meta:
|
|
17
19
|
model = AiModel
|
|
18
|
-
fields =
|
|
20
|
+
fields = "__all__"
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from endoreg_db.models import ModelType
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class ModelTypeSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""
|
|
6
7
|
Serializer for the ModelType model.
|
|
7
8
|
"""
|
|
9
|
+
|
|
8
10
|
class Meta:
|
|
9
11
|
model = ModelType
|
|
10
|
-
fields =
|
|
12
|
+
fields = "__all__"
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from endoreg_db.models import Center
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class CenterSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""Serializer für Center-Modell"""
|
|
7
|
+
|
|
6
8
|
class Meta:
|
|
7
9
|
model = Center
|
|
8
|
-
fields = [
|
|
9
|
-
|
|
10
|
+
fields = [
|
|
11
|
+
"id",
|
|
12
|
+
"name",
|
|
13
|
+
]
|
|
14
|
+
read_only_fields = ["id"]
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from endoreg_db.models import Gender
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class GenderSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""Serializer für Gender-Modell"""
|
|
7
|
+
|
|
6
8
|
class Meta:
|
|
7
9
|
model = Gender
|
|
8
|
-
fields = [
|
|
9
|
-
read_only_fields = [
|
|
10
|
+
fields = ["id", "name", "abbreviation", "description"]
|
|
11
|
+
read_only_fields = ["id"]
|
|
@@ -7,17 +7,18 @@ Unterstützt DD.MM.YYYY als Primärformat und YYYY-MM-DD als Fallback.
|
|
|
7
7
|
from rest_framework import serializers
|
|
8
8
|
from endoreg_db.models.metadata.sensitive_meta_logic import parse_any_date
|
|
9
9
|
|
|
10
|
+
|
|
10
11
|
class SensitiveMetaValidateSerializer(serializers.Serializer):
|
|
11
12
|
"""
|
|
12
13
|
Serializer für SensitiveMeta-Validierung mit deutscher Datums-Priorität.
|
|
13
|
-
|
|
14
|
+
|
|
14
15
|
Akzeptiert Datumsfelder in folgenden Formaten:
|
|
15
16
|
1. DD.MM.YYYY (bevorzugt) - deutsches Format
|
|
16
17
|
2. YYYY-MM-DD (Fallback) - ISO-Format
|
|
17
|
-
|
|
18
|
+
|
|
18
19
|
Alle Datumsfelder werden in date-Objekte konvertiert.
|
|
19
20
|
"""
|
|
20
|
-
|
|
21
|
+
|
|
21
22
|
patient_first_name = serializers.CharField(required=True, allow_blank=True)
|
|
22
23
|
patient_last_name = serializers.CharField(required=True, allow_blank=True)
|
|
23
24
|
patient_dob = serializers.CharField(required=True, allow_blank=True)
|
|
@@ -28,27 +29,26 @@ class SensitiveMetaValidateSerializer(serializers.Serializer):
|
|
|
28
29
|
center_name = serializers.CharField(required=False, allow_blank=True)
|
|
29
30
|
is_verified = serializers.BooleanField(required=False, default=True)
|
|
30
31
|
file_type = serializers.ChoiceField(
|
|
31
|
-
choices=[
|
|
32
|
+
choices=["video", "pdf"], required=False
|
|
32
33
|
) # Optional: "video" oder "pdf"
|
|
33
34
|
center_name = serializers.CharField(required=False, allow_blank=True)
|
|
34
35
|
external_id = serializers.CharField(required=False, allow_blank=True)
|
|
35
36
|
external_id_origin = serializers.CharField(required=False, allow_blank=True)
|
|
36
|
-
|
|
37
37
|
|
|
38
38
|
def validate_patient_dob(self, value):
|
|
39
39
|
"""
|
|
40
40
|
Validiert patient_dob mit deutscher Format-Priorität.
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
Akzeptierte Formate:
|
|
43
43
|
- DD.MM.YYYY (z.B. "21.03.1994")
|
|
44
44
|
- YYYY-MM-DD (z.B. "1994-03-21")
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
|
-
if value ==
|
|
47
|
+
if value == "" or not value:
|
|
48
48
|
raise serializers.ValidationError(
|
|
49
49
|
"Ungültiges Datum. Kein Input! Erlaubte Formate: DD.MM.YYYY oder YYYY-MM-DD."
|
|
50
|
-
)
|
|
51
|
-
|
|
50
|
+
)
|
|
51
|
+
|
|
52
52
|
parsed_date = parse_any_date(value)
|
|
53
53
|
if not parsed_date:
|
|
54
54
|
raise serializers.ValidationError(
|
|
@@ -59,16 +59,16 @@ class SensitiveMetaValidateSerializer(serializers.Serializer):
|
|
|
59
59
|
def validate_examination_date(self, value):
|
|
60
60
|
"""
|
|
61
61
|
Validiert examination_date mit deutscher Format-Priorität.
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
Akzeptierte Formate:
|
|
64
64
|
- DD.MM.YYYY (z.B. "15.02.2024")
|
|
65
65
|
- YYYY-MM-DD (z.B. "2024-02-15")
|
|
66
66
|
"""
|
|
67
|
-
if value ==
|
|
67
|
+
if value == "" or not value:
|
|
68
68
|
raise serializers.ValidationError(
|
|
69
69
|
"Ungültiges Datum. Kein Input! Erlaubte Formate: DD.MM.YYYY oder YYYY-MM-DD."
|
|
70
|
-
)
|
|
71
|
-
|
|
70
|
+
)
|
|
71
|
+
|
|
72
72
|
parsed_date = parse_any_date(value)
|
|
73
73
|
if not parsed_date:
|
|
74
74
|
raise serializers.ValidationError(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from endoreg_db.models import ExaminationEvaluation
|
|
@@ -6,40 +6,39 @@ from ...models import Examination, ExaminationType
|
|
|
6
6
|
class ExaminationTypeSerializer(serializers.ModelSerializer):
|
|
7
7
|
class Meta:
|
|
8
8
|
model = ExaminationType
|
|
9
|
-
fields = [
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
fields = ["id", "name"]
|
|
10
|
+
|
|
12
11
|
|
|
12
|
+
class ExaminationSerializer(serializers.ModelSerializer):
|
|
13
13
|
findings = serializers.SerializerMethodField()
|
|
14
14
|
examination_types = serializers.SerializerMethodField()
|
|
15
|
+
|
|
15
16
|
class Meta:
|
|
16
17
|
model = Examination
|
|
17
|
-
fields = [
|
|
18
|
-
'id', 'name','findings', 'examination_types'
|
|
19
|
-
]
|
|
20
|
-
|
|
18
|
+
fields = ["id", "name", "findings", "examination_types"]
|
|
21
19
|
|
|
22
|
-
def get_findings(self, obj:Examination):
|
|
20
|
+
def get_findings(self, obj: Examination):
|
|
23
21
|
"""
|
|
24
22
|
Return a list of serialized findings associated with the given examination.
|
|
25
|
-
|
|
23
|
+
|
|
26
24
|
Parameters:
|
|
27
25
|
obj (Examination): The examination instance for which to retrieve findings.
|
|
28
|
-
|
|
26
|
+
|
|
29
27
|
Returns:
|
|
30
28
|
list: Serialized data for all findings available to the examination.
|
|
31
29
|
"""
|
|
32
30
|
from ..finding import FindingSerializer
|
|
31
|
+
|
|
33
32
|
findings = obj.get_available_findings()
|
|
34
33
|
return FindingSerializer(findings, many=True).data
|
|
35
34
|
|
|
36
|
-
def get_examination_types(self, obj:Examination):
|
|
35
|
+
def get_examination_types(self, obj: Examination):
|
|
37
36
|
"""
|
|
38
37
|
Return a list of serialized examination types associated with the given examination.
|
|
39
|
-
|
|
38
|
+
|
|
40
39
|
Parameters:
|
|
41
40
|
obj (Examination): The examination instance for which to retrieve examination types.
|
|
42
|
-
|
|
41
|
+
|
|
43
42
|
Returns:
|
|
44
43
|
list: Serialized data for each related examination type.
|
|
45
44
|
"""
|
|
@@ -6,16 +6,15 @@ from rest_framework import serializers
|
|
|
6
6
|
|
|
7
7
|
class ExaminationDropdownSerializer(serializers.ModelSerializer):
|
|
8
8
|
"""Serializer für Examination-Dropdown"""
|
|
9
|
+
|
|
9
10
|
display_name = serializers.SerializerMethodField()
|
|
10
11
|
|
|
11
12
|
class Meta:
|
|
12
13
|
model = Examination
|
|
13
|
-
fields = [
|
|
14
|
+
fields = ["id", "name", "display_name"]
|
|
14
15
|
|
|
15
16
|
def get_display_name(self, obj):
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return getattr(obj, "name_de", None) or obj.name
|
|
21
|
-
|
|
17
|
+
"""
|
|
18
|
+
Return a user-friendly (localized) display name for the examination.
|
|
19
|
+
Prefers a German translation (`name_de`) when available; otherwise falls back to `name`."""
|
|
20
|
+
return getattr(obj, "name_de", None) or obj.name
|
|
@@ -3,10 +3,7 @@ from rest_framework import serializers
|
|
|
3
3
|
from ..models import Examination
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
class ExaminationSerializer(serializers.ModelSerializer):
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
class Meta:
|
|
8
|
+
model = Examination
|
|
9
|
+
fields = ["id", "name"] # Add other fields as needed
|
|
@@ -5,8 +5,8 @@ from ..finding_classification import (
|
|
|
5
5
|
)
|
|
6
6
|
from endoreg_db.models import Finding
|
|
7
7
|
|
|
8
|
+
|
|
8
9
|
class FindingSerializer(serializers.ModelSerializer):
|
|
9
|
-
|
|
10
10
|
location_classifications = serializers.SerializerMethodField()
|
|
11
11
|
morphology_classifications = serializers.SerializerMethodField()
|
|
12
12
|
classifications = serializers.SerializerMethodField()
|
|
@@ -14,13 +14,18 @@ class FindingSerializer(serializers.ModelSerializer):
|
|
|
14
14
|
class Meta:
|
|
15
15
|
model = Finding
|
|
16
16
|
fields = [
|
|
17
|
-
|
|
17
|
+
"id",
|
|
18
|
+
"name",
|
|
19
|
+
"description",
|
|
20
|
+
"classifications",
|
|
21
|
+
"location_classifications",
|
|
22
|
+
"morphology_classifications",
|
|
18
23
|
]
|
|
19
24
|
|
|
20
25
|
def get_location_classifications(self, obj):
|
|
21
26
|
"""
|
|
22
27
|
Retrieve and serialize all 'location' classifications associated with the given Finding instance.
|
|
23
|
-
|
|
28
|
+
|
|
24
29
|
Returns:
|
|
25
30
|
list: Serialized data for each related classification of type 'location'.
|
|
26
31
|
"""
|
|
@@ -32,10 +37,10 @@ class FindingSerializer(serializers.ModelSerializer):
|
|
|
32
37
|
def get_morphology_classifications(self, obj):
|
|
33
38
|
"""
|
|
34
39
|
Return serialized morphology classifications associated with the given finding.
|
|
35
|
-
|
|
40
|
+
|
|
36
41
|
Parameters:
|
|
37
42
|
obj: The Finding instance whose morphology classifications are retrieved.
|
|
38
|
-
|
|
43
|
+
|
|
39
44
|
Returns:
|
|
40
45
|
list: Serialized data for all related morphology classifications.
|
|
41
46
|
"""
|
|
@@ -47,8 +52,10 @@ class FindingSerializer(serializers.ModelSerializer):
|
|
|
47
52
|
def get_classifications(self, obj):
|
|
48
53
|
"""
|
|
49
54
|
Retrieve all classifications related to the given finding.
|
|
50
|
-
|
|
55
|
+
|
|
51
56
|
Returns:
|
|
52
57
|
list: Serialized representations of all classifications associated with the finding.
|
|
53
58
|
"""
|
|
54
|
-
return FindingClassificationSerializer(
|
|
59
|
+
return FindingClassificationSerializer(
|
|
60
|
+
obj.finding_classifications.all(), many=True
|
|
61
|
+
).data
|
|
@@ -2,6 +2,6 @@ from .choice import FindingClassificationChoiceSerializer
|
|
|
2
2
|
from .classification import FindingClassificationSerializer
|
|
3
3
|
|
|
4
4
|
__all__ = [
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
]
|
|
5
|
+
"FindingClassificationChoiceSerializer",
|
|
6
|
+
"FindingClassificationSerializer",
|
|
7
|
+
]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from endoreg_db.models import FindingClassificationChoice
|
|
2
2
|
from rest_framework import serializers
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
class FindingClassificationChoiceSerializer(serializers.ModelSerializer):
|
|
5
6
|
"""
|
|
6
7
|
Serializer for the FindingClassificationChoice model.
|
|
@@ -12,8 +13,7 @@ class FindingClassificationChoiceSerializer(serializers.ModelSerializer):
|
|
|
12
13
|
- subcategories: Related subcategories for further classification.
|
|
13
14
|
- numerical_descriptors: Associated numerical descriptors for the classification choice.
|
|
14
15
|
"""
|
|
16
|
+
|
|
15
17
|
class Meta:
|
|
16
18
|
model = FindingClassificationChoice
|
|
17
|
-
fields = [
|
|
18
|
-
'id', 'name', 'description', 'subcategories', 'numerical_descriptors'
|
|
19
|
-
]
|
|
19
|
+
fields = ["id", "name", "description", "subcategories", "numerical_descriptors"]
|
|
@@ -2,12 +2,10 @@ from .choice import FindingClassificationChoiceSerializer
|
|
|
2
2
|
from endoreg_db.models import FindingClassification
|
|
3
3
|
from rest_framework import serializers
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
class FindingClassificationSerializer(serializers.ModelSerializer):
|
|
6
7
|
choices = FindingClassificationChoiceSerializer(many=True, read_only=True)
|
|
7
8
|
|
|
8
9
|
class Meta:
|
|
9
10
|
model = FindingClassification
|
|
10
|
-
fields = [
|
|
11
|
-
'id', 'name', 'description', 'choices', 'classification_types'
|
|
12
|
-
]
|
|
13
|
-
|
|
11
|
+
fields = ["id", "name", "description", "choices", "classification_types"]
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from .label_video_segment import LabelVideoSegmentSerializer
|
|
2
|
-
from .
|
|
2
|
+
from .image_classification_annotation import ImageClassificationAnnotationSerializer
|
|
3
|
+
from .label.label import LabelSerializer
|
|
3
4
|
|
|
4
5
|
__all__ = [
|
|
5
6
|
"LabelVideoSegmentSerializer",
|
|
6
|
-
"
|
|
7
|
-
|
|
7
|
+
"LabelSerializer",
|
|
8
|
+
"ImageClassificationAnnotationSerializer",
|
|
9
|
+
]
|
|
@@ -13,7 +13,7 @@ class ImageClassificationAnnotationSerializer(serializers.ModelSerializer):
|
|
|
13
13
|
|
|
14
14
|
label_name = serializers.SerializerMethodField()
|
|
15
15
|
confidence = serializers.SerializerMethodField()
|
|
16
|
-
frame_number = serializers.IntegerField(source=
|
|
16
|
+
frame_number = serializers.IntegerField(source="frame.frame_number", read_only=True)
|
|
17
17
|
|
|
18
18
|
class Meta:
|
|
19
19
|
model = ImageClassificationAnnotation
|
|
@@ -31,7 +31,7 @@ class ImageClassificationAnnotationSerializer(serializers.ModelSerializer):
|
|
|
31
31
|
def get_confidence(self, obj: ImageClassificationAnnotation) -> Optional[float]:
|
|
32
32
|
"""
|
|
33
33
|
Retrieve the confidence score associated with the annotation.
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
Returns:
|
|
36
36
|
The float value representing the annotation's confidence, or None if not set.
|
|
37
37
|
"""
|
|
@@ -48,12 +48,12 @@ class ImageClassificationAnnotationSerializer(serializers.ModelSerializer):
|
|
|
48
48
|
def to_representation(self, instance: ImageClassificationAnnotation) -> dict:
|
|
49
49
|
"""
|
|
50
50
|
Return the serialized representation of an ImageClassificationAnnotation instance.
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
Overrides the default method to allow for future customization of the serialized output, but currently returns the standard representation unchanged.
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
Parameters:
|
|
55
55
|
instance (ImageClassificationAnnotation): The annotation instance to serialize.
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
Returns:
|
|
58
58
|
dict: The serialized data for the annotation.
|
|
59
59
|
"""
|