endoreg-db 0.6.4__py3-none-any.whl → 0.8.2__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 +26 -26
- endoreg_db/api_urls.py +4 -0
- endoreg_db/apps.py +12 -0
- endoreg_db/assets/dummy_model.ckpt +1 -0
- endoreg_db/codemods/readme.md +88 -0
- endoreg_db/codemods/rename_datetime_fields.py +92 -0
- endoreg_db/config/env.py +101 -0
- endoreg_db/data/__init__.py +12 -0
- endoreg_db/data/ai_model/data.yaml +1 -1
- endoreg_db/data/ai_model_label/label/polyp_classification.yaml +52 -0
- endoreg_db/data/ai_model_label/label-set/data.yaml +20 -1
- endoreg_db/data/ai_model_label/label-set/polyp_classifications.yaml +25 -0
- endoreg_db/data/center/data.yaml +13 -12
- endoreg_db/data/center_shift/ukw.yaml +9 -0
- endoreg_db/data/db_summary.csv +58 -0
- endoreg_db/data/db_summary.xlsx +0 -0
- endoreg_db/data/disease/misc.yaml +1 -2
- endoreg_db/data/endoscopy_processor/data.yaml +3 -0
- endoreg_db/data/event/cardiology.yaml +0 -13
- endoreg_db/data/examination/examinations/data.yaml +14 -9
- endoreg_db/data/examination_indication/endoscopy.yaml +30 -30
- endoreg_db/data/examination_indication_classification/endoscopy.yaml +11 -11
- endoreg_db/data/examination_requirement_set/colonoscopy.yaml +15 -0
- endoreg_db/data/finding/anatomy_colon.yaml +128 -0
- endoreg_db/data/finding/colonoscopy.yaml +40 -0
- endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +56 -0
- endoreg_db/data/finding/complication.yaml +16 -0
- endoreg_db/data/finding/data.yaml +3 -46
- endoreg_db/data/finding/examination_setting.yaml +16 -0
- endoreg_db/data/finding/medication_related.yaml +18 -0
- endoreg_db/data/finding/outcome.yaml +12 -0
- endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +95 -0
- endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +22 -0
- endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +25 -0
- endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +20 -0
- endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +24 -0
- endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +68 -0
- endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +20 -0
- endoreg_db/data/finding_classification/colonoscopy_location.yaml +80 -0
- endoreg_db/data/finding_classification/colonoscopy_lst.yaml +21 -0
- endoreg_db/data/finding_classification/colonoscopy_nice.yaml +20 -0
- endoreg_db/data/finding_classification/colonoscopy_paris.yaml +26 -0
- endoreg_db/data/finding_classification/colonoscopy_sano.yaml +22 -0
- endoreg_db/data/finding_classification/colonoscopy_summary.yaml +53 -0
- endoreg_db/data/finding_classification/complication_generic.yaml +25 -0
- endoreg_db/data/finding_classification/examination_setting_generic.yaml +40 -0
- endoreg_db/data/finding_classification/histology_colo.yaml +51 -0
- endoreg_db/data/finding_classification/intervention_required.yaml +26 -0
- endoreg_db/data/finding_classification/medication_related.yaml +23 -0
- endoreg_db/data/finding_classification/visualized.yaml +33 -0
- endoreg_db/data/finding_classification_choice/bowel_preparation.yaml +78 -0
- endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_circularity_default.yaml +0 -2
- endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +15 -0
- endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +23 -0
- endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +15 -0
- endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_nice.yaml +4 -7
- endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_paris.yaml +0 -8
- endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_planarity_default.yaml +6 -13
- endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +14 -0
- endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_surface_intact_default.yaml +3 -6
- endoreg_db/data/{finding_location_classification_choice/colonoscopy.yaml → finding_classification_choice/colonoscopy_location.yaml} +11 -22
- endoreg_db/data/finding_classification_choice/colonoscopy_not_complete_reason.yaml +19 -0
- endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +82 -0
- endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +15 -0
- endoreg_db/data/finding_classification_choice/complication_generic_types.yaml +15 -0
- endoreg_db/data/finding_classification_choice/examination_setting_generic_types.yaml +15 -0
- endoreg_db/data/finding_classification_choice/histology.yaml +24 -0
- endoreg_db/data/finding_classification_choice/histology_polyp.yaml +20 -0
- endoreg_db/data/finding_classification_choice/outcome.yaml +19 -0
- endoreg_db/data/finding_classification_choice/yes_no_na.yaml +11 -0
- endoreg_db/data/finding_classification_type/colonoscopy_basic.yaml +48 -0
- endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +8 -3
- endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +6 -6
- endoreg_db/data/finding_type/data.yaml +23 -10
- endoreg_db/data/gender/data.yaml +8 -1
- endoreg_db/data/information_source/annotation.yaml +6 -0
- endoreg_db/data/information_source/prediction.yaml +7 -0
- endoreg_db/data/information_source_type/data.yaml +8 -0
- endoreg_db/data/lab_value/misc.yaml +43 -0
- endoreg_db/data/medication/anticoagulation.yaml +5 -5
- endoreg_db/data/medication/tah.yaml +5 -5
- endoreg_db/data/medication_intake_time/base.yaml +4 -4
- endoreg_db/data/names_first/first_names.yaml +3 -0
- endoreg_db/data/pdf_type/data.yaml +26 -2
- endoreg_db/data/qualification/endoscopy.yaml +36 -0
- endoreg_db/data/qualification/m2.yaml +39 -0
- endoreg_db/data/qualification/outpatient_clinic.yaml +35 -0
- endoreg_db/data/qualification/sonography.yaml +36 -0
- endoreg_db/data/qualification_type/base.yaml +29 -0
- endoreg_db/data/report_reader_flag/rkh-histology-generic.yaml +10 -0
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +5 -0
- endoreg_db/data/requirement/age.yaml +26 -0
- endoreg_db/data/requirement/colonoscopy_baseline_austria.yaml +45 -0
- endoreg_db/data/requirement/disease_cardiovascular.yaml +6 -6
- endoreg_db/data/requirement/disease_classification_choice_cardiovascular.yaml +9 -6
- endoreg_db/data/requirement/disease_hepatology.yaml +1 -1
- endoreg_db/data/requirement/disease_misc.yaml +3 -3
- endoreg_db/data/requirement/disease_renal.yaml +18 -2
- endoreg_db/data/requirement/{colonoscopy_indications.yaml → endoscopy_bleeding_risk.yaml} +6 -3
- endoreg_db/data/requirement/event_cardiology.yaml +17 -17
- endoreg_db/data/requirement/event_requirements.yaml +145 -0
- endoreg_db/data/requirement/finding_colon_polyp.yaml +50 -0
- endoreg_db/data/requirement/gender.yaml +25 -0
- endoreg_db/data/requirement/lab_value.yaml +352 -31
- endoreg_db/data/requirement/medication.yaml +93 -0
- endoreg_db/data/requirement_operator/age.yaml +13 -0
- endoreg_db/data/requirement_operator/lab_operators.yaml +36 -35
- endoreg_db/data/requirement_operator/model_operators.yaml +13 -7
- endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +48 -0
- endoreg_db/data/requirement_set/colonoscopy_austria_screening.yaml +57 -0
- endoreg_db/data/requirement_set/endoscopy_bleeding_risk.yaml +42 -2
- endoreg_db/data/requirement_type/requirement_types.yaml +82 -0
- endoreg_db/data/shift/endoscopy.yaml +21 -0
- endoreg_db/data/shift_type/base.yaml +35 -0
- endoreg_db/data/tag/requirement_set_tags.yaml +11 -0
- endoreg_db/data/unit/concentration.yaml +23 -0
- endoreg_db/exceptions.py +19 -0
- endoreg_db/forms/patient_finding_intervention_form.py +4 -5
- endoreg_db/forms/patient_form.py +7 -6
- endoreg_db/forms/questionnaires/__init__.py +1 -1
- endoreg_db/forms/questionnaires/tto_questionnaire.py +19 -19
- endoreg_db/helpers/count_db.py +45 -0
- endoreg_db/helpers/data_loader.py +208 -0
- endoreg_db/helpers/default_objects.py +359 -0
- endoreg_db/helpers/download_segmentation_model.py +31 -0
- endoreg_db/helpers/interact.py +6 -0
- endoreg_db/helpers/test_video_helper.py +119 -0
- endoreg_db/logger_conf.py +140 -0
- endoreg_db/management/__init__.py +1 -0
- endoreg_db/management/commands/__init__.py +1 -0
- endoreg_db/management/commands/anonymize_video.py +0 -0
- endoreg_db/management/commands/check_auth.py +125 -0
- endoreg_db/management/commands/create_multilabel_model_meta.py +214 -0
- endoreg_db/management/commands/fix_missing_patient_data.py +172 -0
- endoreg_db/management/commands/fix_video_paths.py +165 -0
- endoreg_db/management/commands/import_fallback_video.py +203 -0
- endoreg_db/management/commands/import_report.py +298 -0
- endoreg_db/management/commands/import_video.py +422 -0
- endoreg_db/management/commands/import_video_with_classification.py +367 -0
- endoreg_db/management/commands/init_default_ai_model.py +112 -0
- endoreg_db/management/commands/load_ai_model_data.py +2 -7
- endoreg_db/management/commands/load_base_db_data.py +1 -0
- endoreg_db/management/commands/load_endoscope_data.py +2 -2
- endoreg_db/management/commands/load_examination_indication_data.py +2 -3
- endoreg_db/management/commands/load_finding_data.py +49 -92
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +0 -1
- endoreg_db/management/commands/load_information_source.py +13 -7
- endoreg_db/management/commands/load_name_data.py +37 -0
- endoreg_db/management/commands/load_qualification_data.py +59 -0
- endoreg_db/management/commands/load_requirement_data.py +30 -6
- endoreg_db/management/commands/load_shift_data.py +60 -0
- endoreg_db/management/commands/load_tag_data.py +57 -0
- endoreg_db/management/commands/register_ai_model.py +1 -1
- endoreg_db/management/commands/start_filewatcher.py +106 -0
- endoreg_db/management/commands/storage_management.py +548 -0
- endoreg_db/management/commands/summarize_db_content.py +189 -0
- endoreg_db/management/commands/validate_video.py +204 -0
- endoreg_db/management/commands/validate_video_files.py +161 -0
- endoreg_db/management/commands/video_validation.py +22 -0
- endoreg_db/migrations/0001_initial.py +625 -813
- endoreg_db/migrations/0002_add_video_correction_models.py +52 -0
- endoreg_db/models/__init__.py +270 -307
- endoreg_db/models/administration/__init__.py +116 -0
- endoreg_db/models/{ai_model → administration/ai}/__init__.py +6 -1
- endoreg_db/models/administration/ai/active_model.py +35 -0
- endoreg_db/models/administration/ai/ai_model.py +156 -0
- endoreg_db/models/{ai_model → administration/ai}/model_type.py +6 -1
- endoreg_db/models/administration/case/__init__.py +19 -0
- endoreg_db/models/administration/case/case.py +114 -0
- endoreg_db/models/{case_template → administration/case/case_template}/case_template.py +3 -3
- endoreg_db/models/{case_template → administration/case/case_template}/case_template_rule.py +3 -10
- endoreg_db/models/{case_template → administration/case/case_template}/case_template_rule_value.py +2 -4
- endoreg_db/models/{case_template → administration/case/case_template}/case_template_type.py +1 -3
- endoreg_db/models/{center → administration/center}/__init__.py +3 -1
- endoreg_db/models/administration/center/center.py +61 -0
- endoreg_db/models/administration/center/center_product.py +64 -0
- endoreg_db/models/{center → administration/center}/center_resource.py +19 -3
- endoreg_db/models/administration/center/center_shift.py +88 -0
- endoreg_db/models/administration/center/center_waste.py +30 -0
- endoreg_db/models/administration/permissions/__init__.py +44 -0
- endoreg_db/models/administration/person/__init__.py +24 -0
- endoreg_db/models/administration/person/employee/__init__.py +3 -0
- endoreg_db/models/administration/person/employee/employee.py +35 -0
- endoreg_db/models/administration/person/employee/employee_qualification.py +39 -0
- endoreg_db/models/administration/person/employee/employee_type.py +42 -0
- endoreg_db/models/administration/person/examiner/__init__.py +4 -0
- endoreg_db/models/administration/person/examiner/examiner.py +54 -0
- endoreg_db/models/administration/person/names/__init__.py +0 -0
- endoreg_db/models/{persons → administration/person/names}/first_name.py +1 -1
- endoreg_db/models/{persons → administration/person/names}/last_name.py +2 -3
- endoreg_db/models/administration/person/patient/__init__.py +5 -0
- endoreg_db/models/administration/person/patient/patient.py +460 -0
- endoreg_db/models/administration/person/profession/__init__.py +24 -0
- endoreg_db/models/administration/person/user/__init__.py +5 -0
- endoreg_db/models/administration/person/user/portal_user_information.py +37 -0
- endoreg_db/models/administration/product/product.py +97 -0
- endoreg_db/models/administration/product/product_group.py +39 -0
- endoreg_db/models/administration/product/product_material.py +54 -0
- endoreg_db/models/{product → administration/product}/product_weight.py +9 -0
- endoreg_db/models/{product → administration/product}/reference_product.py +26 -11
- endoreg_db/models/administration/qualification/__init__.py +7 -0
- endoreg_db/models/administration/qualification/qualification.py +37 -0
- endoreg_db/models/administration/qualification/qualification_type.py +35 -0
- endoreg_db/models/administration/shift/__init__.py +9 -0
- endoreg_db/models/administration/shift/scheduled_days.py +69 -0
- endoreg_db/models/administration/shift/shift.py +51 -0
- endoreg_db/models/administration/shift/shift_type.py +108 -0
- endoreg_db/models/label/__init__.py +24 -1
- endoreg_db/models/label/annotation/__init__.py +12 -0
- endoreg_db/models/label/annotation/image_classification.py +84 -0
- endoreg_db/models/label/annotation/video_segmentation_annotation.py +66 -0
- endoreg_db/models/label/label.py +45 -74
- endoreg_db/models/label/label_set.py +53 -0
- endoreg_db/models/label/label_type.py +29 -0
- endoreg_db/models/label/label_video_segment/__init__.py +3 -0
- endoreg_db/models/label/label_video_segment/_create_from_video.py +41 -0
- endoreg_db/models/label/label_video_segment/label_video_segment.py +511 -0
- endoreg_db/models/label/video_segmentation_label.py +31 -0
- endoreg_db/models/{annotation → label}/video_segmentation_labelset.py +7 -0
- endoreg_db/models/media/__init__.py +14 -0
- endoreg_db/models/media/frame/__init__.py +3 -0
- endoreg_db/models/media/frame/frame.py +111 -0
- endoreg_db/models/media/pdf/__init__.py +11 -0
- endoreg_db/models/media/pdf/raw_pdf.py +608 -0
- endoreg_db/models/media/pdf/report_file.py +162 -0
- endoreg_db/models/media/pdf/report_reader/report_reader_config.py +77 -0
- endoreg_db/models/media/video/__init__.py +4 -0
- endoreg_db/models/media/video/create_from_file.py +336 -0
- endoreg_db/models/media/video/pipe_1.py +207 -0
- endoreg_db/models/media/video/pipe_2.py +105 -0
- endoreg_db/models/media/video/refactor_plan.md +0 -0
- endoreg_db/models/media/video/video_file.py +680 -0
- endoreg_db/models/media/video/video_file_ai.py +443 -0
- endoreg_db/models/media/video/video_file_anonymize.py +348 -0
- endoreg_db/models/media/video/video_file_frames/__init__.py +47 -0
- endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +22 -0
- endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +23 -0
- endoreg_db/models/media/video/video_file_frames/_delete_frames.py +104 -0
- endoreg_db/models/media/video/video_file_frames/_extract_frames.py +174 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame.py +28 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +27 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +20 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +27 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +34 -0
- endoreg_db/models/media/video/video_file_frames/_get_frames.py +27 -0
- endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +129 -0
- endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +129 -0
- endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +65 -0
- endoreg_db/models/media/video/video_file_frames.py +0 -0
- endoreg_db/models/media/video/video_file_io.py +166 -0
- endoreg_db/models/media/video/video_file_meta/__init__.py +22 -0
- endoreg_db/models/media/video/video_file_meta/get_crop_template.py +45 -0
- endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +39 -0
- endoreg_db/models/media/video/video_file_meta/get_fps.py +147 -0
- endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +143 -0
- endoreg_db/models/media/video/video_file_meta/text_meta.py +134 -0
- endoreg_db/models/media/video/video_file_meta/video_meta.py +70 -0
- endoreg_db/models/media/video/video_file_meta.py +11 -0
- endoreg_db/models/media/video/video_file_segments.py +209 -0
- endoreg_db/models/medical/__init__.py +146 -0
- endoreg_db/models/{contraindication → medical/contraindication}/__init__.py +1 -5
- endoreg_db/models/{disease.py → medical/disease.py} +60 -52
- endoreg_db/models/{event.py → medical/event.py} +31 -54
- endoreg_db/models/{examination → medical/examination}/__init__.py +1 -1
- endoreg_db/models/medical/examination/examination.py +148 -0
- endoreg_db/models/{examination → medical/examination}/examination_indication.py +64 -35
- endoreg_db/models/{examination → medical/examination}/examination_time.py +0 -4
- endoreg_db/models/{examination → medical/examination}/examination_time_type.py +1 -8
- endoreg_db/models/{examination → medical/examination}/examination_type.py +1 -7
- endoreg_db/models/medical/finding/__init__.py +18 -0
- endoreg_db/models/medical/finding/finding.py +96 -0
- endoreg_db/models/medical/finding/finding_classification.py +142 -0
- endoreg_db/models/{finding → medical/finding}/finding_intervention.py +2 -10
- endoreg_db/models/medical/finding/finding_type.py +35 -0
- endoreg_db/models/medical/hardware/__init__.py +8 -0
- endoreg_db/models/{hardware → medical/hardware}/endoscope.py +28 -23
- endoreg_db/models/medical/laboratory/__init__.py +5 -0
- endoreg_db/models/medical/laboratory/lab_value.py +419 -0
- endoreg_db/models/{medication → medical/medication}/medication.py +1 -3
- endoreg_db/models/{medication → medical/medication}/medication_indication_type.py +8 -3
- endoreg_db/models/{medication → medical/medication}/medication_intake_time.py +21 -3
- endoreg_db/models/{medication → medical/medication}/medication_schedule.py +13 -5
- endoreg_db/models/{organ → medical/organ}/__init__.py +3 -6
- endoreg_db/models/medical/patient/__init__.py +56 -0
- endoreg_db/models/medical/patient/medication_examples.py +38 -0
- endoreg_db/models/medical/patient/patient_disease.py +63 -0
- endoreg_db/models/medical/patient/patient_event.py +75 -0
- endoreg_db/models/medical/patient/patient_examination.py +249 -0
- endoreg_db/models/{persons → medical}/patient/patient_examination_indication.py +21 -9
- endoreg_db/models/medical/patient/patient_finding.py +357 -0
- endoreg_db/models/medical/patient/patient_finding_classification.py +207 -0
- endoreg_db/models/{patient → medical/patient}/patient_finding_intervention.py +15 -1
- endoreg_db/models/medical/patient/patient_lab_sample.py +148 -0
- endoreg_db/models/{persons → medical}/patient/patient_lab_value.py +40 -15
- endoreg_db/models/medical/patient/patient_medication.py +104 -0
- endoreg_db/models/medical/patient/patient_medication_schedule.py +136 -0
- endoreg_db/models/{risk → medical/risk}/risk_type.py +0 -4
- endoreg_db/models/{data_file/metadata → metadata}/__init__.py +6 -0
- endoreg_db/models/metadata/frame_ocr_result.py +0 -0
- endoreg_db/models/metadata/model_meta.py +193 -0
- endoreg_db/models/metadata/model_meta_logic.py +236 -0
- endoreg_db/models/{data_file/metadata → metadata}/pdf_meta.py +28 -13
- endoreg_db/models/metadata/sensitive_meta.py +288 -0
- endoreg_db/models/metadata/sensitive_meta_logic.py +643 -0
- endoreg_db/models/metadata/video_meta.py +332 -0
- endoreg_db/models/metadata/video_prediction_logic.py +190 -0
- endoreg_db/models/metadata/video_prediction_meta.py +270 -0
- endoreg_db/models/other/__init__.py +17 -0
- endoreg_db/models/other/distribution/date_value_distribution.py +0 -2
- endoreg_db/models/other/distribution/numeric_value_distribution.py +30 -2
- endoreg_db/models/{emission → other/emission}/emission_factor.py +15 -6
- endoreg_db/models/{persons → other}/gender.py +8 -3
- endoreg_db/models/other/information_source.py +159 -0
- endoreg_db/models/other/material.py +10 -2
- endoreg_db/models/other/resource.py +6 -2
- endoreg_db/models/other/tag.py +27 -0
- endoreg_db/models/other/transport_route.py +13 -2
- endoreg_db/models/{unit.py → other/unit.py} +16 -6
- endoreg_db/models/other/waste.py +10 -3
- endoreg_db/models/requirement/requirement.py +556 -114
- endoreg_db/models/requirement/requirement_evaluation/__init__.py +4 -132
- endoreg_db/models/requirement/requirement_evaluation/get_values.py +40 -0
- endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +9 -0
- endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +80 -87
- endoreg_db/models/requirement/requirement_operator.py +132 -14
- endoreg_db/models/requirement/requirement_set.py +181 -21
- endoreg_db/models/rule/__init__.py +13 -0
- endoreg_db/models/{rules → rule}/rule.py +6 -3
- endoreg_db/models/{rules → rule}/rule_attribute_dtype.py +0 -2
- endoreg_db/models/{rules → rule}/rule_type.py +0 -2
- endoreg_db/models/{rules → rule}/ruleset.py +0 -2
- endoreg_db/models/state/__init__.py +12 -0
- endoreg_db/models/state/abstract.py +11 -0
- endoreg_db/models/state/audit_ledger.py +150 -0
- endoreg_db/models/state/label_video_segment.py +22 -0
- endoreg_db/models/state/raw_pdf.py +187 -0
- endoreg_db/models/state/sensitive_meta.py +46 -0
- endoreg_db/models/state/video.py +232 -0
- endoreg_db/models/upload_job.py +99 -0
- endoreg_db/models/utils.py +135 -0
- endoreg_db/models/video_metadata.py +66 -0
- endoreg_db/models/video_processing.py +153 -0
- endoreg_db/renames.yml +8 -0
- endoreg_db/root_urls.py +9 -0
- endoreg_db/schemas/__init__.py +0 -0
- endoreg_db/schemas/examination_evaluation.py +27 -0
- endoreg_db/serializers/Frames_NICE_and_PARIS_classifications.py +775 -0
- endoreg_db/serializers/__init__.py +147 -10
- endoreg_db/serializers/{raw_pdf_meta_validation.py → _old/raw_pdf_meta_validation.py} +3 -3
- endoreg_db/serializers/{raw_video_meta_validation.py → _old/raw_video_meta_validation.py} +18 -14
- endoreg_db/serializers/_old/video.py +71 -0
- endoreg_db/serializers/administration/__init__.py +14 -0
- endoreg_db/serializers/administration/ai/__init__.py +10 -0
- endoreg_db/serializers/administration/ai/active_model.py +10 -0
- endoreg_db/serializers/administration/ai/ai_model.py +18 -0
- endoreg_db/serializers/administration/ai/model_type.py +10 -0
- endoreg_db/serializers/administration/center.py +9 -0
- endoreg_db/serializers/administration/gender.py +9 -0
- endoreg_db/serializers/anonymization.py +69 -0
- endoreg_db/serializers/evaluation/examination_evaluation.py +1 -0
- endoreg_db/serializers/examination/__init__.py +10 -0
- endoreg_db/serializers/examination/base.py +46 -0
- endoreg_db/serializers/examination/dropdown.py +21 -0
- endoreg_db/serializers/examination_serializer.py +12 -0
- endoreg_db/serializers/finding/__init__.py +5 -0
- endoreg_db/serializers/finding/finding.py +54 -0
- endoreg_db/serializers/finding_classification/__init__.py +7 -0
- endoreg_db/serializers/finding_classification/choice.py +19 -0
- endoreg_db/serializers/finding_classification/classification.py +13 -0
- endoreg_db/serializers/label/__init__.py +7 -0
- endoreg_db/serializers/label/image_classification_annotation.py +62 -0
- endoreg_db/serializers/label/label.py +15 -0
- endoreg_db/serializers/label_video_segment/__init__.py +7 -0
- endoreg_db/serializers/label_video_segment/_lvs_create.py +149 -0
- endoreg_db/serializers/label_video_segment/_lvs_update.py +138 -0
- endoreg_db/serializers/label_video_segment/_lvs_validate.py +149 -0
- endoreg_db/serializers/label_video_segment/label_video_segment.py +344 -0
- endoreg_db/serializers/label_video_segment/label_video_segment_annotation.py +99 -0
- endoreg_db/serializers/label_video_segment/label_video_segment_update.py +163 -0
- endoreg_db/serializers/meta/__init__.py +19 -0
- endoreg_db/serializers/meta/pdf_file_meta_extraction.py +115 -0
- endoreg_db/serializers/meta/report_meta.py +53 -0
- endoreg_db/serializers/meta/sensitive_meta_detail.py +162 -0
- endoreg_db/serializers/meta/sensitive_meta_update.py +148 -0
- endoreg_db/serializers/meta/sensitive_meta_verification.py +59 -0
- endoreg_db/serializers/meta/video_meta.py +39 -0
- endoreg_db/serializers/misc/__init__.py +14 -0
- endoreg_db/serializers/misc/file_overview.py +152 -0
- endoreg_db/serializers/misc/stats.py +33 -0
- endoreg_db/serializers/misc/translatable_field_mix_in.py +44 -0
- endoreg_db/serializers/misc/upload_job.py +71 -0
- endoreg_db/serializers/misc/vop_patient_data.py +120 -0
- endoreg_db/serializers/patient/__init__.py +11 -0
- endoreg_db/serializers/patient/patient.py +86 -0
- endoreg_db/serializers/patient/patient_dropdown.py +27 -0
- endoreg_db/serializers/patient_examination/__init__.py +7 -0
- endoreg_db/serializers/patient_examination/patient_examination.py +141 -0
- endoreg_db/serializers/patient_finding/__init__.py +15 -0
- endoreg_db/serializers/patient_finding/patient_finding.py +31 -0
- endoreg_db/serializers/patient_finding/patient_finding_classification.py +39 -0
- endoreg_db/serializers/patient_finding/patient_finding_detail.py +53 -0
- endoreg_db/serializers/patient_finding/patient_finding_intervention.py +26 -0
- endoreg_db/serializers/patient_finding/patient_finding_list.py +41 -0
- endoreg_db/serializers/patient_finding/patient_finding_write.py +126 -0
- endoreg_db/serializers/pdf/__init__.py +5 -0
- endoreg_db/serializers/pdf/anony_text_validation.py +85 -0
- endoreg_db/serializers/report/__init__.py +9 -0
- endoreg_db/serializers/report/mixins.py +45 -0
- endoreg_db/serializers/report/report.py +105 -0
- endoreg_db/serializers/report/report_list.py +22 -0
- endoreg_db/serializers/report/secure_file_url.py +26 -0
- endoreg_db/serializers/requirements/requirement_schema.py +25 -0
- endoreg_db/serializers/requirements/requirement_sets.py +29 -0
- endoreg_db/serializers/sensitive_meta_serializer.py +282 -0
- endoreg_db/serializers/video/__init__.py +7 -0
- endoreg_db/serializers/video/segmentation.py +263 -0
- endoreg_db/serializers/video/video_file_brief.py +10 -0
- endoreg_db/serializers/video/video_file_detail.py +83 -0
- endoreg_db/serializers/video/video_file_list.py +67 -0
- endoreg_db/serializers/video/video_metadata.py +105 -0
- endoreg_db/serializers/video/video_processing_history.py +153 -0
- endoreg_db/services/__init__.py +5 -0
- endoreg_db/services/anonymization.py +223 -0
- endoreg_db/services/examination_evaluation.py +149 -0
- endoreg_db/services/finding_description_service.py +0 -0
- endoreg_db/services/lookup_service.py +241 -0
- endoreg_db/services/lookup_store.py +122 -0
- endoreg_db/services/ollama_api_docs.py +1528 -0
- endoreg_db/services/pdf_import.py +963 -0
- endoreg_db/services/polling_coordinator.py +288 -0
- endoreg_db/services/pseudonym_service.py +89 -0
- endoreg_db/services/requirements_object.py +147 -0
- endoreg_db/services/segment_sync.py +155 -0
- endoreg_db/services/storage_aware_video_processor.py +344 -0
- endoreg_db/services/video_import.py +1118 -0
- endoreg_db/tasks/upload_tasks.py +207 -0
- endoreg_db/tasks/video_ingest.py +157 -0
- endoreg_db/tasks/video_processing_tasks.py +327 -0
- endoreg_db/urls/__init__.py +70 -0
- endoreg_db/urls/anonymization.py +32 -0
- endoreg_db/urls/auth.py +16 -0
- endoreg_db/urls/classification.py +39 -0
- endoreg_db/urls/examination.py +54 -0
- endoreg_db/urls/files.py +6 -0
- endoreg_db/urls/label_video_segment_validate.py +33 -0
- endoreg_db/urls/label_video_segments.py +44 -0
- endoreg_db/urls/media.py +229 -0
- endoreg_db/urls/patient.py +19 -0
- endoreg_db/urls/report.py +48 -0
- endoreg_db/urls/requirements.py +13 -0
- endoreg_db/urls/stats.py +46 -0
- endoreg_db/urls/upload.py +20 -0
- endoreg_db/urls/video.py +61 -0
- endoreg_db/urls.py +6 -283
- endoreg_db/utils/__init__.py +66 -57
- endoreg_db/utils/ai/__init__.py +9 -0
- endoreg_db/{models/ai_model/utils.py → utils/ai/get.py} +1 -4
- endoreg_db/{models/ai_model/lightning → utils/ai}/inference_dataset.py +0 -1
- endoreg_db/{models/ai_model/lightning → utils/ai}/multilabel_classification_net.py +14 -10
- endoreg_db/{models/ai_model/lightning → utils/ai}/postprocess.py +15 -5
- endoreg_db/utils/ai/predict.py +291 -0
- endoreg_db/{models/ai_model/lightning → utils/ai}/preprocess.py +1 -1
- endoreg_db/utils/calc_duration_seconds.py +24 -0
- endoreg_db/utils/case_generator/__init__.py +0 -0
- endoreg_db/utils/check_video_files.py +148 -0
- endoreg_db/utils/dataloader.py +50 -12
- endoreg_db/utils/dates.py +21 -0
- endoreg_db/utils/env.py +33 -0
- endoreg_db/utils/extract_specific_frames.py +72 -0
- endoreg_db/utils/file_operations.py +29 -1
- endoreg_db/utils/fix_video_path_direct.py +141 -0
- endoreg_db/utils/frame_anonymization_utils.py +463 -0
- endoreg_db/utils/links/__init__.py +0 -0
- endoreg_db/utils/links/requirement_link.py +193 -0
- endoreg_db/utils/mime_types.py +0 -0
- endoreg_db/utils/names.py +2 -0
- endoreg_db/utils/paths.py +100 -82
- endoreg_db/utils/permissions.py +143 -0
- endoreg_db/utils/pipelines/Readme.md +235 -0
- endoreg_db/utils/pipelines/__init__.py +0 -0
- endoreg_db/utils/pipelines/process_video_dir.py +120 -0
- endoreg_db/utils/product/__init__.py +0 -0
- endoreg_db/utils/product/sum_emissions.py +20 -0
- endoreg_db/utils/product/sum_weights.py +18 -0
- endoreg_db/utils/pydantic_models/db_config.py +1 -1
- endoreg_db/utils/requirement_helpers.py +0 -0
- endoreg_db/utils/requirement_operator_logic/__init__.py +0 -0
- endoreg_db/utils/requirement_operator_logic/lab_value_operators.py +578 -0
- endoreg_db/utils/requirement_operator_logic/model_evaluators.py +368 -0
- endoreg_db/utils/translation.py +27 -0
- endoreg_db/utils/validate_video_detailed.py +357 -0
- endoreg_db/utils/video/__init__.py +19 -6
- endoreg_db/utils/video/extract_frames.py +37 -70
- endoreg_db/utils/video/ffmpeg_wrapper.py +772 -0
- endoreg_db/utils/video/names.py +42 -0
- endoreg_db/utils/video/streaming_processor.py +312 -0
- endoreg_db/utils/video/video_splitter.py +94 -0
- endoreg_db/views/Frames_NICE_and_PARIS_classifications_views.py +238 -0
- endoreg_db/views/__init__.py +282 -2
- endoreg_db/views/anonymization/__init__.py +27 -0
- endoreg_db/views/anonymization/media_management.py +454 -0
- endoreg_db/views/anonymization/overview.py +216 -0
- endoreg_db/views/anonymization/validate.py +66 -0
- endoreg_db/views/auth/__init__.py +13 -0
- endoreg_db/views/{views.py → auth/keycloak.py} +19 -13
- endoreg_db/views/examination/__init__.py +33 -0
- endoreg_db/views/examination/examination.py +37 -0
- endoreg_db/views/examination/examination_manifest_cache.py +26 -0
- endoreg_db/views/examination/get_finding_classification_choices.py +59 -0
- endoreg_db/views/examination/get_finding_classifications.py +36 -0
- endoreg_db/views/examination/get_findings.py +41 -0
- endoreg_db/views/examination/get_instruments.py +18 -0
- endoreg_db/views/examination/get_interventions.py +14 -0
- endoreg_db/views/finding/__init__.py +9 -0
- endoreg_db/views/finding/finding.py +112 -0
- endoreg_db/views/finding/get_classifications.py +14 -0
- endoreg_db/views/finding/get_interventions.py +17 -0
- endoreg_db/views/finding_classification/__init__.py +13 -0
- endoreg_db/views/finding_classification/base.py +0 -0
- endoreg_db/views/finding_classification/finding_classification.py +42 -0
- endoreg_db/views/finding_classification/get_classification_choices.py +55 -0
- endoreg_db/views/label/__init__.py +5 -0
- endoreg_db/views/label/label.py +15 -0
- endoreg_db/views/label_video_segment/__init__.py +16 -0
- endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +44 -0
- endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +50 -0
- endoreg_db/views/label_video_segment/label_video_segment.py +77 -0
- endoreg_db/views/label_video_segment/label_video_segment_by_label.py +174 -0
- endoreg_db/views/label_video_segment/label_video_segment_detail.py +73 -0
- endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +46 -0
- endoreg_db/views/label_video_segment/validate.py +226 -0
- endoreg_db/views/media/__init__.py +45 -0
- endoreg_db/views/media/pdf_media.py +386 -0
- endoreg_db/views/media/segments.py +71 -0
- endoreg_db/views/media/sensitive_metadata.py +314 -0
- endoreg_db/views/media/video_media.py +272 -0
- endoreg_db/views/media/video_segments.py +596 -0
- endoreg_db/views/meta/__init__.py +15 -0
- endoreg_db/views/meta/available_files_list.py +146 -0
- endoreg_db/views/meta/report_meta.py +53 -0
- endoreg_db/views/meta/sensitive_meta_detail.py +148 -0
- endoreg_db/views/meta/sensitive_meta_list.py +104 -0
- endoreg_db/views/meta/sensitive_meta_verification.py +71 -0
- endoreg_db/views/misc/__init__.py +63 -0
- endoreg_db/views/misc/center.py +13 -0
- endoreg_db/views/misc/gender.py +14 -0
- endoreg_db/views/misc/secure_file_serving_view.py +80 -0
- endoreg_db/views/misc/secure_file_url_view.py +84 -0
- endoreg_db/views/misc/secure_url_validate.py +79 -0
- endoreg_db/views/misc/stats.py +220 -0
- endoreg_db/views/misc/translation.py +182 -0
- endoreg_db/views/misc/upload_views.py +240 -0
- endoreg_db/views/patient/__init__.py +5 -0
- endoreg_db/views/patient/patient.py +210 -0
- endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +164 -0
- endoreg_db/views/patient_examination/__init__.py +11 -0
- endoreg_db/views/patient_examination/patient_examination.py +140 -0
- endoreg_db/views/patient_examination/patient_examination_create.py +63 -0
- endoreg_db/views/patient_examination/patient_examination_detail.py +66 -0
- endoreg_db/views/patient_examination/patient_examination_list.py +68 -0
- endoreg_db/views/patient_examination/video.py +194 -0
- endoreg_db/views/patient_finding/__init__.py +7 -0
- endoreg_db/views/patient_finding/base.py +0 -0
- endoreg_db/views/patient_finding/patient_finding.py +64 -0
- endoreg_db/views/patient_finding/patient_finding_optimized.py +259 -0
- endoreg_db/views/patient_finding_classification/__init__.py +5 -0
- endoreg_db/views/patient_finding_classification/pfc_create.py +67 -0
- endoreg_db/views/patient_finding_location/__init__.py +5 -0
- endoreg_db/views/patient_finding_location/pfl_create.py +70 -0
- endoreg_db/views/patient_finding_morphology/__init__.py +5 -0
- endoreg_db/views/patient_finding_morphology/pfm_create.py +70 -0
- endoreg_db/views/pdf/__init__.py +11 -0
- endoreg_db/views/pdf/pdf_media.py +239 -0
- endoreg_db/views/pdf/pdf_stream_views.py +127 -0
- endoreg_db/views/pdf/reimport.py +161 -0
- endoreg_db/views/report/__init__.py +9 -0
- endoreg_db/views/report/report_list.py +112 -0
- endoreg_db/views/report/report_with_secure_url.py +28 -0
- endoreg_db/views/report/start_examination.py +7 -0
- endoreg_db/views/requirement/__init__.py +10 -0
- endoreg_db/views/requirement/evaluate.py +279 -0
- endoreg_db/views/requirement/lookup.py +483 -0
- endoreg_db/views/requirement/lookup_store.py +252 -0
- endoreg_db/views/requirement_lookup/lookup.py +0 -0
- endoreg_db/views/requirement_lookup/lookup_store.py +0 -0
- endoreg_db/views/stats/__init__.py +13 -0
- endoreg_db/views/stats/stats_views.py +229 -0
- endoreg_db/views/video/__init__.py +64 -0
- endoreg_db/views/video/correction.py +672 -0
- endoreg_db/views/video/reimport.py +195 -0
- endoreg_db/views/video/segmentation.py +274 -0
- endoreg_db/views/video/task_status.py +49 -0
- endoreg_db/views/{views_for_timeline.py → video/timeline.py} +3 -3
- endoreg_db/views/video/video_analyze.py +52 -0
- endoreg_db/views/video/video_apply_mask.py +48 -0
- endoreg_db/views/video/video_correction.py +21 -0
- endoreg_db/views/video/video_download_processed.py +58 -0
- endoreg_db/views/video/video_examination_viewset.py +329 -0
- endoreg_db/views/video/video_media.py +158 -0
- endoreg_db/views/video/video_meta.py +29 -0
- endoreg_db/views/video/video_processing_history.py +24 -0
- endoreg_db/views/video/video_remove_frames.py +48 -0
- endoreg_db/views/video/video_reprocess.py +40 -0
- endoreg_db/views/video/video_stream.py +306 -0
- endoreg_db-0.8.2.dist-info/METADATA +384 -0
- endoreg_db-0.8.2.dist-info/RECORD +790 -0
- endoreg_db/data/agl_service/data.yaml +0 -19
- endoreg_db/data/finding_location_classification/colonoscopy.yaml +0 -46
- endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +0 -48
- endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +0 -57
- endoreg_db/management/commands/_load_model_template.py +0 -41
- endoreg_db/management/commands/delete_all.py +0 -18
- endoreg_db/management/commands/fetch_legacy_image_dataset.py +0 -32
- endoreg_db/management/commands/fix_auth_permission.py +0 -20
- endoreg_db/management/commands/load_active_model_data.py +0 -45
- endoreg_db/management/commands/load_g_play_data.py +0 -113
- endoreg_db/management/commands/load_logging_data.py +0 -39
- endoreg_db/management/commands/load_lx_data.py +0 -64
- endoreg_db/management/commands/load_medication_indication_data.py +0 -63
- endoreg_db/management/commands/load_medication_indication_type_data.py +0 -41
- endoreg_db/management/commands/load_medication_intake_time_data.py +0 -41
- endoreg_db/management/commands/load_medication_schedule_data.py +0 -55
- endoreg_db/management/commands/load_network_data.py +0 -57
- endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +0 -23
- endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +0 -23
- endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +0 -25
- endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +0 -33
- endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +0 -23
- endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +0 -24
- endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +0 -48
- endoreg_db/migrations/0009_requirementoperator_requirementsettype_and_more.py +0 -154
- endoreg_db/models/ai_model/active_model.py +0 -9
- endoreg_db/models/ai_model/ai_model.py +0 -90
- endoreg_db/models/ai_model/lightning/__init__.py +0 -3
- endoreg_db/models/ai_model/lightning/predict.py +0 -172
- endoreg_db/models/ai_model/lightning/prediction_visualizer.py +0 -55
- endoreg_db/models/ai_model/lightning/run_visualizer.py +0 -21
- endoreg_db/models/ai_model/model_meta.py +0 -240
- endoreg_db/models/annotation/__init__.py +0 -32
- endoreg_db/models/annotation/anonymized_image_annotation.py +0 -115
- endoreg_db/models/annotation/binary_classification_annotation_task.py +0 -117
- endoreg_db/models/annotation/image_classification.py +0 -86
- endoreg_db/models/annotation/video_segmentation_annotation.py +0 -52
- endoreg_db/models/case/__init__.py +0 -1
- endoreg_db/models/case/case.py +0 -34
- endoreg_db/models/center/center.py +0 -51
- endoreg_db/models/center/center_product.py +0 -33
- endoreg_db/models/center/center_waste.py +0 -16
- endoreg_db/models/data_file/__init__.py +0 -39
- endoreg_db/models/data_file/base_classes/__init__.py +0 -7
- endoreg_db/models/data_file/base_classes/abstract_frame.py +0 -98
- endoreg_db/models/data_file/base_classes/abstract_pdf.py +0 -127
- endoreg_db/models/data_file/base_classes/abstract_video.py +0 -806
- endoreg_db/models/data_file/base_classes/frame_helpers.py +0 -17
- endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +0 -19
- endoreg_db/models/data_file/base_classes/utils.py +0 -58
- endoreg_db/models/data_file/frame.py +0 -29
- endoreg_db/models/data_file/import_classes/__init__.py +0 -18
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +0 -35
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +0 -28
- endoreg_db/models/data_file/import_classes/processing_functions/video.py +0 -260
- endoreg_db/models/data_file/import_classes/raw_pdf.py +0 -254
- endoreg_db/models/data_file/import_classes/raw_video.py +0 -290
- endoreg_db/models/data_file/metadata/sensitive_meta.py +0 -290
- endoreg_db/models/data_file/metadata/video_meta.py +0 -199
- endoreg_db/models/data_file/report_file.py +0 -56
- endoreg_db/models/data_file/video/__init__.py +0 -11
- endoreg_db/models/data_file/video/import_meta.py +0 -25
- endoreg_db/models/data_file/video/video.py +0 -196
- endoreg_db/models/data_file/video_segment.py +0 -214
- endoreg_db/models/examination/examination.py +0 -67
- endoreg_db/models/finding/__init__.py +0 -11
- endoreg_db/models/finding/finding.py +0 -75
- endoreg_db/models/finding/finding_location_classification.py +0 -94
- endoreg_db/models/finding/finding_morphology_classification.py +0 -89
- endoreg_db/models/finding/finding_type.py +0 -22
- endoreg_db/models/hardware/__init__.py +0 -2
- endoreg_db/models/information_source.py +0 -65
- endoreg_db/models/laboratory/__init__.py +0 -1
- endoreg_db/models/laboratory/lab_value.py +0 -162
- endoreg_db/models/logging/__init__.py +0 -11
- endoreg_db/models/logging/agl_service.py +0 -19
- endoreg_db/models/logging/base.py +0 -22
- endoreg_db/models/logging/log_type.py +0 -23
- endoreg_db/models/logging/network_device.py +0 -27
- endoreg_db/models/lx/__init__.py +0 -4
- endoreg_db/models/lx/client.py +0 -57
- endoreg_db/models/lx/identity.py +0 -34
- endoreg_db/models/lx/permission.py +0 -18
- endoreg_db/models/lx/user.py +0 -16
- endoreg_db/models/network/__init__.py +0 -9
- endoreg_db/models/network/agl_service.py +0 -38
- endoreg_db/models/network/network_device.py +0 -58
- endoreg_db/models/network/network_device_type.py +0 -23
- endoreg_db/models/other/distribution.py +0 -5
- endoreg_db/models/patient/__init__.py +0 -24
- endoreg_db/models/patient/patient_examination.py +0 -182
- endoreg_db/models/patient/patient_finding.py +0 -143
- endoreg_db/models/patient/patient_finding_location.py +0 -120
- endoreg_db/models/patient/patient_finding_morphology.py +0 -166
- endoreg_db/models/permissions/__init__.py +0 -44
- endoreg_db/models/persons/__init__.py +0 -34
- endoreg_db/models/persons/examiner/__init__.py +0 -2
- endoreg_db/models/persons/examiner/examiner.py +0 -60
- endoreg_db/models/persons/examiner/examiner_type.py +0 -2
- endoreg_db/models/persons/patient/__init__.py +0 -8
- endoreg_db/models/persons/patient/patient.py +0 -389
- endoreg_db/models/persons/patient/patient_disease.py +0 -22
- endoreg_db/models/persons/patient/patient_event.py +0 -52
- endoreg_db/models/persons/patient/patient_lab_sample.py +0 -108
- endoreg_db/models/persons/patient/patient_medication.py +0 -59
- endoreg_db/models/persons/patient/patient_medication_schedule.py +0 -88
- endoreg_db/models/persons/portal_user_information.py +0 -27
- endoreg_db/models/prediction/__init__.py +0 -8
- endoreg_db/models/prediction/image_classification.py +0 -51
- endoreg_db/models/prediction/video_prediction_meta.py +0 -306
- endoreg_db/models/product/product.py +0 -110
- endoreg_db/models/product/product_group.py +0 -27
- endoreg_db/models/product/product_material.py +0 -28
- endoreg_db/models/questionnaires/__init__.py +0 -114
- endoreg_db/models/quiz/__init__.py +0 -9
- endoreg_db/models/quiz/quiz_answer.py +0 -41
- endoreg_db/models/quiz/quiz_question.py +0 -54
- endoreg_db/models/report_reader/report_reader_config.py +0 -53
- endoreg_db/models/rules/__init__.py +0 -5
- endoreg_db/queries/get/__init__.py +0 -6
- endoreg_db/queries/get/center.py +0 -42
- endoreg_db/queries/get/model.py +0 -13
- endoreg_db/queries/get/patient.py +0 -14
- endoreg_db/queries/get/patient_examination.py +0 -20
- endoreg_db/queries/get/report_file.py +0 -33
- endoreg_db/queries/get/video.py +0 -31
- endoreg_db/serializers/ai_model.py +0 -19
- endoreg_db/serializers/annotation.py +0 -14
- endoreg_db/serializers/center.py +0 -11
- endoreg_db/serializers/examination.py +0 -33
- endoreg_db/serializers/frame.py +0 -9
- endoreg_db/serializers/hardware.py +0 -21
- endoreg_db/serializers/label.py +0 -22
- endoreg_db/serializers/patient.py +0 -33
- endoreg_db/serializers/prediction.py +0 -10
- endoreg_db/serializers/raw_pdf_anony_text_validation.py +0 -137
- endoreg_db/serializers/report_file.py +0 -7
- endoreg_db/serializers/video.py +0 -20
- endoreg_db/serializers/video_segmentation.py +0 -574
- endoreg_db/tests.py +0 -3
- endoreg_db/utils/legacy_ocr.py +0 -201
- endoreg_db/utils/video/transcode_videofile.py +0 -111
- endoreg_db/views/patient_views.py +0 -90
- endoreg_db/views/raw_pdf_anony_text_validation_views.py +0 -95
- endoreg_db/views/raw_pdf_meta_validation_views.py +0 -111
- endoreg_db/views/raw_video_meta_validation_views.py +0 -148
- endoreg_db/views/report_views.py +0 -96
- endoreg_db/views/video_segmentation_views.py +0 -166
- endoreg_db-0.6.4.dist-info/METADATA +0 -161
- endoreg_db-0.6.4.dist-info/RECORD +0 -470
- /endoreg_db/{case_generator/__init__.py → api/serializers/finding_descriptions.py} +0 -0
- /endoreg_db/{queries/get/annotation.py → api/views/finding_descriptions.py} +0 -0
- /endoreg_db/{queries/get/prediction.py → data/shift/m2.yaml} +0 -0
- /endoreg_db/{queries/get/video_import_meta.py → factories/__init__.py} +0 -0
- /endoreg_db/{queries/get/video_prediction_meta.py → helpers/__init__.py} +0 -0
- /endoreg_db/models/{case_template → administration/case/case_template}/__init__.py +0 -0
- /endoreg_db/models/{persons → administration/person}/person.py +0 -0
- /endoreg_db/models/{product → administration/product}/__init__.py +0 -0
- /endoreg_db/models/{report_reader → media/pdf/report_reader}/__init__.py +0 -0
- /endoreg_db/models/{report_reader → media/pdf/report_reader}/report_reader_flag.py +0 -0
- /endoreg_db/models/{hardware → medical/hardware}/endoscopy_processor.py +0 -0
- /endoreg_db/models/{medication → medical/medication}/__init__.py +0 -0
- /endoreg_db/models/{medication → medical/medication}/medication_indication.py +0 -0
- /endoreg_db/models/{risk → medical/risk}/__init__.py +0 -0
- /endoreg_db/models/{risk → medical/risk}/risk.py +0 -0
- /endoreg_db/models/{emission → other/emission}/__init__.py +0 -0
- /endoreg_db/models/{rules → rule}/rule_applicator.py +0 -0
- /endoreg_db/{case_generator → utils/case_generator}/case_generator.py +0 -0
- /endoreg_db/{case_generator → utils/case_generator}/lab_sample_factory.py +0 -0
- /endoreg_db/{case_generator → utils/case_generator}/utils.py +0 -0
- /endoreg_db/views/{csrf.py → misc/csrf.py} +0 -0
- {endoreg_db-0.6.4.dist-info → endoreg_db-0.8.2.dist-info}/WHEEL +0 -0
- {endoreg_db-0.6.4.dist-info → endoreg_db-0.8.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from django.urls import path, include
|
|
2
|
+
from django.conf import settings
|
|
3
|
+
from django.conf.urls.static import static
|
|
4
|
+
from rest_framework.routers import DefaultRouter
|
|
5
|
+
|
|
6
|
+
# Phase 1.2: Media Management URLs ✅ IMPLEMENTED
|
|
7
|
+
from .media import urlpatterns as media_url_patterns
|
|
8
|
+
|
|
9
|
+
from endoreg_db.views import (
|
|
10
|
+
VideoViewSet,
|
|
11
|
+
ExaminationViewSet,
|
|
12
|
+
VideoExaminationViewSet,
|
|
13
|
+
FindingViewSet,
|
|
14
|
+
FindingClassificationViewSet,
|
|
15
|
+
PatientFindingViewSet,
|
|
16
|
+
PatientExaminationViewSet
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
from .anonymization import url_patterns as anonymization_url_patterns
|
|
20
|
+
from .classification import url_patterns as classification_url_patterns
|
|
21
|
+
from .auth import urlpatterns as auth_url_patterns
|
|
22
|
+
from .examination import urlpatterns as examination_url_patterns
|
|
23
|
+
from .files import urlpatterns as files_url_patterns
|
|
24
|
+
from .label_video_segments import url_patterns as label_video_segments_url_patterns
|
|
25
|
+
from .label_video_segment_validate import url_patterns as label_video_segment_validate_url_patterns
|
|
26
|
+
# TODO Phase 1.2: Implement VideoMediaView and PDFMediaView before enabling
|
|
27
|
+
# from .media import urlpatterns as media_url_patterns
|
|
28
|
+
from .report import url_patterns as report_url_patterns
|
|
29
|
+
from .upload import urlpatterns as upload_url_patterns
|
|
30
|
+
from .video import url_patterns as video_url_patterns
|
|
31
|
+
from .requirements import urlpatterns as requirements_url_patterns
|
|
32
|
+
from .patient import urlpatterns as patient_url_patterns
|
|
33
|
+
from .stats import url_patterns as stats_url_patterns
|
|
34
|
+
|
|
35
|
+
api_urls = []
|
|
36
|
+
api_urls += classification_url_patterns
|
|
37
|
+
api_urls += anonymization_url_patterns
|
|
38
|
+
api_urls += auth_url_patterns
|
|
39
|
+
api_urls += examination_url_patterns
|
|
40
|
+
api_urls += files_url_patterns
|
|
41
|
+
api_urls += label_video_segments_url_patterns
|
|
42
|
+
api_urls += label_video_segment_validate_url_patterns # Neue Validierungs-Endpunkte
|
|
43
|
+
# Phase 1.2: Enable media_url_patterns ✅ IMPLEMENTED
|
|
44
|
+
api_urls += media_url_patterns
|
|
45
|
+
api_urls += report_url_patterns
|
|
46
|
+
api_urls += upload_url_patterns
|
|
47
|
+
api_urls += video_url_patterns
|
|
48
|
+
api_urls += requirements_url_patterns
|
|
49
|
+
api_urls += patient_url_patterns
|
|
50
|
+
api_urls += stats_url_patterns
|
|
51
|
+
|
|
52
|
+
router = DefaultRouter()
|
|
53
|
+
router.register(r'videos', VideoViewSet, basename='videos')
|
|
54
|
+
router.register(r'examinations', ExaminationViewSet)
|
|
55
|
+
router.register(r'video-examinations', VideoExaminationViewSet, basename='video-examinations')
|
|
56
|
+
router.register(r'findings', FindingViewSet)
|
|
57
|
+
router.register(r'classifications', FindingClassificationViewSet)
|
|
58
|
+
router.register(r'patient-findings', PatientFindingViewSet)
|
|
59
|
+
router.register(r'patient-examinations', PatientExaminationViewSet)
|
|
60
|
+
|
|
61
|
+
# Export raw API urlpatterns (no prefix). The project-level endoreg_db/urls.py mounts these under /api/.
|
|
62
|
+
urlpatterns = [
|
|
63
|
+
path('', include(api_urls)), # Specific routes first
|
|
64
|
+
path('', include(router.urls)), # Generic router routes second
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
if settings.DEBUG:
|
|
68
|
+
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
|
69
|
+
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
|
70
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
from endoreg_db.views.anonymization import (
|
|
3
|
+
AnonymizationOverviewView,
|
|
4
|
+
AnonymizationValidateView,
|
|
5
|
+
start_anonymization,
|
|
6
|
+
anonymization_current,
|
|
7
|
+
anonymization_status,
|
|
8
|
+
polling_coordinator_info,
|
|
9
|
+
clear_processing_locks,
|
|
10
|
+
has_raw_video_file,
|
|
11
|
+
)
|
|
12
|
+
from endoreg_db.views.anonymization import media_management
|
|
13
|
+
|
|
14
|
+
url_patterns = [
|
|
15
|
+
# URL patterns for anonymization overview
|
|
16
|
+
path('anonymization/items/overview/', AnonymizationOverviewView.as_view(), name='anonymization_items_overview'),
|
|
17
|
+
path('anonymization/<int:file_id>/current/', anonymization_current, name='set_current_for_validation'),
|
|
18
|
+
path('anonymization/<int:file_id>/start/', start_anonymization, name='start_anonymization'),
|
|
19
|
+
path('anonymization/<int:file_id>/status/', anonymization_status, name='get_anonymization_status'),
|
|
20
|
+
path('anonymization/<int:file_id>/validate/', AnonymizationValidateView.as_view(), name='validate_anonymization'),
|
|
21
|
+
# Polling Coordination API (new endpoints)
|
|
22
|
+
path('anonymization/polling-info/', polling_coordinator_info, name='polling_coordinator_info'),
|
|
23
|
+
path('anonymization/clear-locks/', clear_processing_locks, name='clear_processing_locks'),
|
|
24
|
+
path('anonymization/<int:file_id>/has-raw/', has_raw_video_file, name='has_raw_video_file'),
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Media Management API (new endpoints)
|
|
28
|
+
path('media-management/status/', media_management.MediaManagementView.as_view(), name='media_management_status'),
|
|
29
|
+
path('media-management/cleanup/', media_management.MediaManagementView.as_view(), name='media_management_cleanup'),
|
|
30
|
+
path('media-management/force-remove/<int:file_id>/', media_management.force_remove_media, name='force_remove_media'),
|
|
31
|
+
path('media-management/reset-status/<int:file_id>/', media_management.reset_processing_status, name='reset_processing_status'),
|
|
32
|
+
]
|
endoreg_db/urls/auth.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
|
|
3
|
+
from endoreg_db.views import (
|
|
4
|
+
public_home,
|
|
5
|
+
keycloak_login,
|
|
6
|
+
keycloak_callback,
|
|
7
|
+
csrf_token_view,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
urlpatterns = [
|
|
11
|
+
# Authentication endpoints
|
|
12
|
+
path('endoreg_db/', public_home, name='public_home'),
|
|
13
|
+
path('login/', keycloak_login, name='keycloak_login'),
|
|
14
|
+
path('login/callback/', keycloak_callback, name='keycloak_callback'),
|
|
15
|
+
path('conf/', csrf_token_view, name='csrf_token'),
|
|
16
|
+
]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'''
|
|
2
|
+
---------------------------------------------------------------------------------------
|
|
3
|
+
CLASSIFICATION API ENDPOINTS
|
|
4
|
+
|
|
5
|
+
Diese Endpunkte führen automatische Polyp-Klassifikationen durch:
|
|
6
|
+
- NICE: Für digitale Chromoendoskopie/NBI-basierte Klassifikation
|
|
7
|
+
- PARIS: Für Standard-Weißlicht-Klassifikation
|
|
8
|
+
|
|
9
|
+
Diese APIs sind für Backend-Verarbeitung gedacht und werden typischerweise
|
|
10
|
+
nach dem Import eines Videos automatisch aufgerufen.
|
|
11
|
+
---------------------------------------------------------------------------------------
|
|
12
|
+
'''
|
|
13
|
+
|
|
14
|
+
from django.urls import path
|
|
15
|
+
|
|
16
|
+
url_patterns = [
|
|
17
|
+
# NICE Classification API
|
|
18
|
+
# POST /api/classifications/nice/
|
|
19
|
+
# Body: {"video_ids": [1, 2, 3]} oder leerer Body für alle Videos
|
|
20
|
+
# Führt NICE-Klassifikation für spezifizierte Videos durch
|
|
21
|
+
# path('classifications/nice/', ForNiceClassificationView.as_view(), name='nice_classification'),
|
|
22
|
+
|
|
23
|
+
# PARIS Classification API
|
|
24
|
+
# POST /api/classifications/paris/
|
|
25
|
+
# Body: {"video_ids": [1, 2, 3]} oder leerer Body für alle Videos
|
|
26
|
+
# Führt PARIS-Klassifikation für spezifizierte Videos durch
|
|
27
|
+
# path('classifications/paris/', ForParisClassificationView.as_view(), name='paris_classification'),
|
|
28
|
+
|
|
29
|
+
# Batch Classification API (beide Typen)
|
|
30
|
+
# POST /api/classifications/batch/
|
|
31
|
+
# Body: {"video_ids": [1, 2, 3], "types": ["nice", "paris"]}
|
|
32
|
+
# Führt beide Klassifikationstypen für spezifizierte Videos durch
|
|
33
|
+
# path('classifications/batch/', BatchClassificationView.as_view(), name='batch_classification'),
|
|
34
|
+
|
|
35
|
+
# Classification Status API
|
|
36
|
+
# GET /api/classifications/status/<video_id>/
|
|
37
|
+
# Gibt den Status der Klassifikationen für ein Video zurück
|
|
38
|
+
# path('classifications/status/<int:video_id>/', ClassificationStatusView.as_view(), name='classification_status'),
|
|
39
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
from endoreg_db.views import (
|
|
3
|
+
get_findings_for_examination,
|
|
4
|
+
get_classifications_for_finding,
|
|
5
|
+
get_classification_choices,
|
|
6
|
+
get_classifications_for_examination,
|
|
7
|
+
ExaminationCreateView,
|
|
8
|
+
PatientExaminationDetailView,
|
|
9
|
+
PatientExaminationListView,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
urlpatterns = [# URL patterns for ExaminationForm.vue API calls
|
|
13
|
+
path(
|
|
14
|
+
'examinations/<int:examination_id>/findings/',
|
|
15
|
+
get_findings_for_examination,
|
|
16
|
+
name='get_findings_for_examination'
|
|
17
|
+
),
|
|
18
|
+
path(
|
|
19
|
+
'findings/<int:finding_id>/classifications/',
|
|
20
|
+
get_classifications_for_finding,
|
|
21
|
+
name='get_classifications_for_finding'
|
|
22
|
+
),
|
|
23
|
+
path(
|
|
24
|
+
'classifications/<int:classification_id>/choices/',
|
|
25
|
+
get_classification_choices,
|
|
26
|
+
name='get_choices_for_classification'
|
|
27
|
+
),
|
|
28
|
+
# NEW: Examination CRUD endpoints for SimpleExaminationForm
|
|
29
|
+
# POST /api/examinations/create/ - Create new examination
|
|
30
|
+
# GET /api/examinations/{id}/ - Get examination details
|
|
31
|
+
# PATCH /api/examinations/{id}/ - Update examination
|
|
32
|
+
# GET /api/examinations/list/ - List examinations with filtering
|
|
33
|
+
# TODO: Clearly Distinguish between Examination (the template) and PatientExamination (the instance).
|
|
34
|
+
# The views below handle PatientExamination instances, which represent a specific examination performed on a patient.
|
|
35
|
+
# The URL names are updated to reflect this, using the 'patient_examination_*' prefix for clarity.
|
|
36
|
+
# TODO: Clearly Distinguish between Examination and PatientExamination by using 'patient-examination' prefix for clarity
|
|
37
|
+
path('patient-examinations/create/', ExaminationCreateView.as_view(), name='patient_examination_create'),
|
|
38
|
+
path('patient-examinations/<int:pk>/', PatientExaminationDetailView.as_view(), name='patient_examination_detail'),
|
|
39
|
+
path('patient-examinations/list/', PatientExaminationListView.as_view(), name='patient_examination_list'),
|
|
40
|
+
|
|
41
|
+
# NEW ENDPOINTS FOR RESTRUCTURED FRONTEND
|
|
42
|
+
path(
|
|
43
|
+
'patient-examinations/<int:exam_id>/classifications/',
|
|
44
|
+
get_classifications_for_examination,
|
|
45
|
+
name='get_classifications_for_examination'
|
|
46
|
+
),
|
|
47
|
+
|
|
48
|
+
path(
|
|
49
|
+
'patient-examinations/<int:examination_id>/findings/',
|
|
50
|
+
get_findings_for_examination,
|
|
51
|
+
name='get_patient_examination_findings'
|
|
52
|
+
),
|
|
53
|
+
|
|
54
|
+
]
|
endoreg_db/urls/files.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
|
|
3
|
+
from endoreg_db.views.label_video_segment.validate import (
|
|
4
|
+
LabelVideoSegmentValidateView,
|
|
5
|
+
BulkSegmentValidateView,
|
|
6
|
+
VideoSegmentValidationCompleteView
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
url_patterns = [
|
|
10
|
+
# Einzelne Segment-Validierung
|
|
11
|
+
# POST /api/label-video-segment/<int:segment_id>/validate/
|
|
12
|
+
path(
|
|
13
|
+
'label-video-segment/<int:segment_id>/validate/',
|
|
14
|
+
LabelVideoSegmentValidateView.as_view(),
|
|
15
|
+
name='label_video_segment_validate'
|
|
16
|
+
),
|
|
17
|
+
|
|
18
|
+
# Bulk-Validierung mehrerer Segmente
|
|
19
|
+
# POST /api/label-video-segments/validate-bulk/
|
|
20
|
+
path(
|
|
21
|
+
'label-video-segments/validate-bulk/',
|
|
22
|
+
BulkSegmentValidateView.as_view(),
|
|
23
|
+
name='label_video_segments_validate_bulk'
|
|
24
|
+
),
|
|
25
|
+
|
|
26
|
+
# Alle Segmente eines Videos als validiert markieren
|
|
27
|
+
# POST /api/videos/<int:video_id>/segments/validate-complete/
|
|
28
|
+
path(
|
|
29
|
+
'videos/<int:video_id>/segments/validate-complete/',
|
|
30
|
+
VideoSegmentValidationCompleteView.as_view(),
|
|
31
|
+
name='video_segments_validate_complete'
|
|
32
|
+
),
|
|
33
|
+
]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
from endoreg_db.views import (
|
|
3
|
+
create_video_segment_annotation,
|
|
4
|
+
update_label_video_segment,
|
|
5
|
+
SensitiveMetaDetailView,
|
|
6
|
+
video_segments_view,
|
|
7
|
+
video_segment_detail_view,
|
|
8
|
+
get_lvs_by_name_and_video_id
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
url_patterns = [
|
|
12
|
+
path(
|
|
13
|
+
"lvs/by-label-name/<str:label_name>/by-video-id/<int:video_id>/",
|
|
14
|
+
get_lvs_by_name_and_video_id,
|
|
15
|
+
name='get_lvs_by_name_and_video_id'
|
|
16
|
+
),
|
|
17
|
+
path(
|
|
18
|
+
'annotations/',
|
|
19
|
+
create_video_segment_annotation,
|
|
20
|
+
name='create_annotation'
|
|
21
|
+
),
|
|
22
|
+
path(
|
|
23
|
+
'annotations/<int:annotation_id>/',
|
|
24
|
+
update_label_video_segment,
|
|
25
|
+
name='update_annotation'
|
|
26
|
+
),
|
|
27
|
+
path(
|
|
28
|
+
'save-anonymization-annotation-video/<int:annotation_id>/',
|
|
29
|
+
SensitiveMetaDetailView.as_view(),
|
|
30
|
+
name='save_anonymization_annotation_video'
|
|
31
|
+
),
|
|
32
|
+
# Label Video Segment API endpoints
|
|
33
|
+
path(
|
|
34
|
+
'video-segments/',
|
|
35
|
+
video_segments_view,
|
|
36
|
+
name='video_segments'
|
|
37
|
+
),
|
|
38
|
+
path(
|
|
39
|
+
'video-segments/<int:segment_id>/',
|
|
40
|
+
video_segment_detail_view,
|
|
41
|
+
name='video_segment_detail'
|
|
42
|
+
),
|
|
43
|
+
|
|
44
|
+
]
|
endoreg_db/urls/media.py
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
|
|
3
|
+
from endoreg_db.views.media import (
|
|
4
|
+
VideoMediaView,
|
|
5
|
+
PdfMediaView, # Alias to avoid conflict with legacy pdf.PDFMediaView
|
|
6
|
+
video_segments_by_pk,
|
|
7
|
+
video_segments_collection,
|
|
8
|
+
video_segments_by_video,
|
|
9
|
+
video_segment_detail,
|
|
10
|
+
video_segments_stats,
|
|
11
|
+
video_segment_validate,
|
|
12
|
+
video_segments_validate_bulk,
|
|
13
|
+
video_segments_validation_status,
|
|
14
|
+
video_sensitive_metadata,
|
|
15
|
+
video_sensitive_metadata_verify,
|
|
16
|
+
pdf_sensitive_metadata,
|
|
17
|
+
pdf_sensitive_metadata_verify,
|
|
18
|
+
sensitive_metadata_list,
|
|
19
|
+
pdf_sensitive_metadata_list,
|
|
20
|
+
)
|
|
21
|
+
from endoreg_db.views import (
|
|
22
|
+
VideoStreamView,
|
|
23
|
+
)
|
|
24
|
+
from endoreg_db.views.pdf.reimport import PdfReimportView
|
|
25
|
+
from endoreg_db.views.video.reimport import VideoReimportView
|
|
26
|
+
from endoreg_db.views.video.correction import (
|
|
27
|
+
VideoReprocessView,
|
|
28
|
+
VideoMetadataView,
|
|
29
|
+
VideoProcessingHistoryView,
|
|
30
|
+
VideoAnalyzeView,
|
|
31
|
+
VideoApplyMaskView,
|
|
32
|
+
VideoRemoveFramesView,
|
|
33
|
+
)
|
|
34
|
+
# ---------------------------------------------------------------------------------------
|
|
35
|
+
# ANNOTATION API ENDPOINTS
|
|
36
|
+
#
|
|
37
|
+
# New endpoints for segment annotation management that create user-source segments
|
|
38
|
+
# POST /api/annotations/ - Create new annotation (creates user segment if type=segment)
|
|
39
|
+
# PATCH /api/annotations/<id>/ - Update annotation (creates user segment if timing/label changed)
|
|
40
|
+
# ---------------------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
# Simplified Meta and Validation Endpoints
|
|
43
|
+
|
|
44
|
+
urlpatterns = [
|
|
45
|
+
# Video media endpoints
|
|
46
|
+
path("media/videos/", VideoMediaView.as_view(), name="video-list"),
|
|
47
|
+
path("media/videos/<int:pk>/", VideoStreamView.as_view(), name="video-detail-stream"), # Support ?type= params
|
|
48
|
+
path("media/videos/<int:pk>/details/", VideoMediaView.as_view(), name="video-detail"), # JSON metadata
|
|
49
|
+
path("media/videos/<int:pk>/stream/", VideoStreamView.as_view(), name="video-stream"), # Legacy support
|
|
50
|
+
|
|
51
|
+
# Video Re-import API endpoint (modern media framework)
|
|
52
|
+
# POST /api/media/videos/<int:pk>/reimport/
|
|
53
|
+
# Re-imports a video file to regenerate metadata when OCR failed or data is incomplete
|
|
54
|
+
path("media/videos/<int:pk>/reimport/", VideoReimportView.as_view(), name="video-reimport"),
|
|
55
|
+
|
|
56
|
+
# ---------------------------------------------------------------------------------------
|
|
57
|
+
# VIDEO CORRECTION API ENDPOINTS (Modern Media Framework - October 14, 2025)
|
|
58
|
+
#
|
|
59
|
+
# All video correction endpoints migrated to unified /api/media/videos/<pk>/ pattern
|
|
60
|
+
# These endpoints enable video correction workflows (Phase 1.1):
|
|
61
|
+
# - Analysis: Detect sensitive frames using MiniCPM-o 2.6 or OCR+LLM
|
|
62
|
+
# - Masking: Apply device-specific masks or custom ROI masks
|
|
63
|
+
# - Frame Removal: Remove sensitive frames from videos
|
|
64
|
+
# - Reprocessing: Re-run entire anonymization pipeline
|
|
65
|
+
# - Metadata: View analysis results
|
|
66
|
+
# - History: Track all correction operations
|
|
67
|
+
# ---------------------------------------------------------------------------------------
|
|
68
|
+
|
|
69
|
+
# Video Metadata API
|
|
70
|
+
# GET /api/media/videos/<int:pk>/metadata/
|
|
71
|
+
# Returns analysis results (sensitive frame count, ratio, frame IDs)
|
|
72
|
+
path("media/videos/<int:pk>/metadata/", VideoMetadataView.as_view(), name="video-metadata"),
|
|
73
|
+
|
|
74
|
+
# Video Processing History API
|
|
75
|
+
# GET /api/media/videos/<int:pk>/processing-history/
|
|
76
|
+
# Returns history of all processing operations (masking, frame removal, analysis)
|
|
77
|
+
path("media/videos/<int:pk>/processing-history/", VideoProcessingHistoryView.as_view(), name="video-processing-history"),
|
|
78
|
+
|
|
79
|
+
# Video Analysis API
|
|
80
|
+
# POST /api/media/videos/<int:pk>/analyze/
|
|
81
|
+
# Analyzes video for sensitive frames using MiniCPM-o 2.6 or OCR+LLM
|
|
82
|
+
# Body: { detection_method: 'minicpm'|'ocr_llm'|'hybrid', sample_interval: 30 }
|
|
83
|
+
path("media/videos/<int:pk>/analyze/", VideoAnalyzeView.as_view(), name="video-analyze"),
|
|
84
|
+
|
|
85
|
+
# Video Masking API
|
|
86
|
+
# POST /api/media/videos/<int:pk>/apply-mask/
|
|
87
|
+
# Applies device mask or custom ROI mask to video
|
|
88
|
+
# Body: { mask_type: 'device'|'custom', device_name: 'olympus', roi: {...} }
|
|
89
|
+
path("media/videos/<int:pk>/apply-mask/", VideoApplyMaskView.as_view(), name="video-apply-mask"),
|
|
90
|
+
|
|
91
|
+
# Video Frame Removal API
|
|
92
|
+
# POST /api/media/videos/<int:pk>/remove-frames/
|
|
93
|
+
# Removes specified frames from video
|
|
94
|
+
# Body: { frame_list: [10,20,30] OR frame_ranges: '10-20,30' OR detection_method: 'automatic' }
|
|
95
|
+
path("media/videos/<int:pk>/remove-frames/", VideoRemoveFramesView.as_view(), name="video-remove-frames"),
|
|
96
|
+
|
|
97
|
+
# Video Reprocess API endpoint (modern media framework)
|
|
98
|
+
# POST /api/media/videos/<int:pk>/reprocess/
|
|
99
|
+
# Re-runs entire anonymization pipeline for a video (correction workflow)
|
|
100
|
+
path("media/videos/<int:pk>/reprocess/", VideoReprocessView.as_view(), name="video-reprocess"),
|
|
101
|
+
|
|
102
|
+
# ---------------------------------------------------------------------------------------
|
|
103
|
+
# VIDEO SEGMENT API ENDPOINTS (Modern Media Framework - October 14, 2025)
|
|
104
|
+
#
|
|
105
|
+
# Unified segment management endpoints replacing legacy /api/video-segments/
|
|
106
|
+
# Collection: GET/POST all segments across videos
|
|
107
|
+
# Video-scoped: GET/POST segments for specific video
|
|
108
|
+
# Detail: GET/PATCH/DELETE individual segment
|
|
109
|
+
# ---------------------------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
# Video Segments Collection API
|
|
112
|
+
# GET/POST /api/media/videos/segments/
|
|
113
|
+
# List all video segments across videos or create new segment
|
|
114
|
+
path("media/videos/segments/", video_segments_collection, name="video-segments-collection"),
|
|
115
|
+
|
|
116
|
+
# Video Segments Stats API
|
|
117
|
+
# GET /api/media/videos/segments/stats/
|
|
118
|
+
# Get statistics about video segments
|
|
119
|
+
path("media/videos/segments/stats/", video_segments_stats, name="video-segments-stats"),
|
|
120
|
+
|
|
121
|
+
# Video-Specific Segments API
|
|
122
|
+
# GET/POST /api/media/videos/<int:pk>/segments/
|
|
123
|
+
# List segments for specific video or create segment for video
|
|
124
|
+
path("media/videos/<int:pk>/segments/", video_segments_by_video, name="video-segments-by-video"),
|
|
125
|
+
|
|
126
|
+
# Segment Detail API
|
|
127
|
+
# GET /api/media/videos/<int:pk>/segments/<int:segment_id>/
|
|
128
|
+
# PATCH /api/media/videos/<int:pk>/segments/<int:segment_id>/
|
|
129
|
+
# DELETE /api/media/videos/<int:pk>/segments/<int:segment_id>/
|
|
130
|
+
# Manages individual segment operations
|
|
131
|
+
path("media/videos/<int:pk>/segments/<int:segment_id>/", video_segment_detail, name="video-segment-detail"),
|
|
132
|
+
|
|
133
|
+
# ---------------------------------------------------------------------------------------
|
|
134
|
+
# VIDEO SEGMENT VALIDATION API ENDPOINTS (Modern Media Framework - October 14, 2025)
|
|
135
|
+
#
|
|
136
|
+
# Unified validation endpoints replacing legacy /api/label-video-segment/*/validate/
|
|
137
|
+
# Single: POST validate individual segment
|
|
138
|
+
# Bulk: POST validate multiple segments
|
|
139
|
+
# Status: GET/POST validation status for all segments
|
|
140
|
+
# ---------------------------------------------------------------------------------------
|
|
141
|
+
|
|
142
|
+
# Single Segment Validation API
|
|
143
|
+
# POST /api/media/videos/<int:pk>/segments/<int:segment_id>/validate/
|
|
144
|
+
# Validates a single video segment
|
|
145
|
+
# Body: { "is_validated": true, "notes": "..." }
|
|
146
|
+
path("media/videos/<int:pk>/segments/<int:segment_id>/validate/", video_segment_validate, name="video-segment-validate"),
|
|
147
|
+
|
|
148
|
+
# Bulk Segment Validation API
|
|
149
|
+
# POST /api/media/videos/<int:pk>/segments/validate-bulk/
|
|
150
|
+
# Validates multiple segments at once
|
|
151
|
+
# Body: { "segment_ids": [1,2,3], "is_validated": true, "notes": "..." }
|
|
152
|
+
path("media/videos/<int:pk>/segments/validate-bulk/", video_segments_validate_bulk, name="video-segments-validate-bulk"),
|
|
153
|
+
|
|
154
|
+
# Segment Validation Status API
|
|
155
|
+
# GET /api/media/videos/<int:pk>/segments/validation-status/
|
|
156
|
+
# Returns validation statistics for all segments
|
|
157
|
+
# POST /api/media/videos/<int:pk>/segments/validation-status/
|
|
158
|
+
# Marks all segments (or filtered by label) as validated
|
|
159
|
+
# Body: { "label_name": "polyp", "notes": "..." }
|
|
160
|
+
path("media/videos/<int:pk>/segments/validation-status/", video_segments_validation_status, name="video-segments-validation-status"),
|
|
161
|
+
|
|
162
|
+
# ---------------------------------------------------------------------------------------
|
|
163
|
+
# SENSITIVE METADATA ENDPOINTS (Modern Media Framework)
|
|
164
|
+
# ---------------------------------------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
# Video Sensitive Metadata (Resource-Scoped)
|
|
167
|
+
# GET/PATCH /api/media/videos/<pk>/sensitive-metadata/
|
|
168
|
+
# Get or update sensitive patient data for a video
|
|
169
|
+
path(
|
|
170
|
+
"media/videos/<int:pk>/sensitive-metadata/",
|
|
171
|
+
video_sensitive_metadata,
|
|
172
|
+
name="video-sensitive-metadata"
|
|
173
|
+
),
|
|
174
|
+
|
|
175
|
+
# POST /api/media/videos/<pk>/sensitive-metadata/verify/
|
|
176
|
+
# Update verification state (dob_verified, names_verified)
|
|
177
|
+
path(
|
|
178
|
+
"media/videos/<int:pk>/sensitive-metadata/verify/",
|
|
179
|
+
video_sensitive_metadata_verify,
|
|
180
|
+
name="video-sensitive-metadata-verify"
|
|
181
|
+
),
|
|
182
|
+
|
|
183
|
+
# PDF Sensitive Metadata (Resource-Scoped)
|
|
184
|
+
# GET/PATCH /api/media/pdfs/<pk>/sensitive-metadata/
|
|
185
|
+
# Get or update sensitive patient data for a PDF
|
|
186
|
+
path(
|
|
187
|
+
"media/pdfs/<int:pk>/sensitive-metadata/",
|
|
188
|
+
pdf_sensitive_metadata,
|
|
189
|
+
name="pdf-sensitive-metadata"
|
|
190
|
+
),
|
|
191
|
+
|
|
192
|
+
# POST /api/media/pdfs/<pk>/sensitive-metadata/verify/
|
|
193
|
+
# Update verification state (dob_verified, names_verified)
|
|
194
|
+
path(
|
|
195
|
+
"media/pdfs/<int:pk>/sensitive-metadata/verify/",
|
|
196
|
+
pdf_sensitive_metadata_verify,
|
|
197
|
+
name="pdf-sensitive-metadata-verify"
|
|
198
|
+
),
|
|
199
|
+
|
|
200
|
+
# List Endpoints (Collection-Level)
|
|
201
|
+
# GET /api/media/sensitive-metadata/
|
|
202
|
+
# List all sensitive metadata (combined PDFs and Videos)
|
|
203
|
+
# Supports filtering: ?content_type=pdf|video&verified=true&search=name
|
|
204
|
+
path(
|
|
205
|
+
"media/sensitive-metadata/",
|
|
206
|
+
sensitive_metadata_list,
|
|
207
|
+
name="sensitive-metadata-list"
|
|
208
|
+
),
|
|
209
|
+
|
|
210
|
+
# GET /api/media/pdfs/sensitive-metadata/
|
|
211
|
+
# List sensitive metadata for PDFs only
|
|
212
|
+
# Replaces legacy /api/pdf/sensitivemeta/list/
|
|
213
|
+
path(
|
|
214
|
+
"media/pdfs/sensitive-metadata/",
|
|
215
|
+
pdf_sensitive_metadata_list,
|
|
216
|
+
name="pdf-sensitive-metadata-list"
|
|
217
|
+
),
|
|
218
|
+
|
|
219
|
+
# PDF media endpoints
|
|
220
|
+
path("media/pdfs/", PdfMediaView.as_view(), name="pdf-list"),
|
|
221
|
+
path("media/pdfs/<int:pk>/", PdfMediaView.as_view(), name="pdf-detail"),
|
|
222
|
+
path("media/pdfs/<int:pk>/stream/", PdfMediaView.as_view(), name="pdf-stream"),
|
|
223
|
+
|
|
224
|
+
# PDF Re-import API endpoint (modern media framework)
|
|
225
|
+
# POST /api/media/pdfs/<int:pk>/reimport/
|
|
226
|
+
# Re-imports a PDF file to regenerate metadata when OCR failed or data is incomplete
|
|
227
|
+
path("media/pdfs/<int:pk>/reimport/", PdfReimportView.as_view(), name="pdf-reimport"),
|
|
228
|
+
]
|
|
229
|
+
# ---------------------------------------------------------------------------------------
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from endoreg_db.views import (
|
|
2
|
+
GenderViewSet,
|
|
3
|
+
CenterViewSet,
|
|
4
|
+
PatientViewSet,
|
|
5
|
+
PatientFindingViewSet
|
|
6
|
+
)
|
|
7
|
+
from rest_framework.routers import DefaultRouter
|
|
8
|
+
from django.urls import path, include
|
|
9
|
+
|
|
10
|
+
router = DefaultRouter()
|
|
11
|
+
router.register(r'patients', PatientViewSet)
|
|
12
|
+
router.register(r'centers', CenterViewSet)
|
|
13
|
+
router.register(r'genders', GenderViewSet)
|
|
14
|
+
router.register(r'patient-findings', PatientFindingViewSet)
|
|
15
|
+
|
|
16
|
+
urlpatterns = [
|
|
17
|
+
path('', include(router.urls)),
|
|
18
|
+
path('check_pe_exist/<int:pk>/', PatientViewSet.as_view({'get': 'check_pe_exist'}), name='check_pe_exist'),
|
|
19
|
+
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
from endoreg_db.views import (
|
|
3
|
+
ReportListView,
|
|
4
|
+
ReportWithSecureUrlView,
|
|
5
|
+
ReportFileMetadataView,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
url_patterns = [ # ---------------------------------------------------------------------------------------
|
|
9
|
+
# REPORT SERVICE ENDPOINTS
|
|
10
|
+
#
|
|
11
|
+
# Neue API-Endpunkte für den Report-Service mit sicheren URLs
|
|
12
|
+
#
|
|
13
|
+
# Diese Endpunkte ermöglichen es dem Frontend (UniversalReportViewer),
|
|
14
|
+
# Reports mit zeitlich begrenzten, sicheren URLs zu laden und anzuzeigen.
|
|
15
|
+
#
|
|
16
|
+
# Verwendung im Frontend:
|
|
17
|
+
# - loadReportWithSecureUrl(reportId)
|
|
18
|
+
# - generateSecureUrl(reportId, fileType)
|
|
19
|
+
# - validateCurrentUrl()
|
|
20
|
+
#
|
|
21
|
+
# ---------------------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
# API-Endpunkt für paginierte Report-Listen mit Filterung
|
|
24
|
+
# GET /api/reports/?page=1&page_size=20&status=pending&file_type=pdf&patient_name=John
|
|
25
|
+
# Lädt eine paginierte Liste aller Reports mit optionalen Filtern
|
|
26
|
+
path('reports/',
|
|
27
|
+
ReportListView.as_view(),
|
|
28
|
+
name='report_list'
|
|
29
|
+
),
|
|
30
|
+
|
|
31
|
+
# API-Endpunkt für Reports mit automatischer sicherer URL-Generierung
|
|
32
|
+
# GET /api/reports/{report_id}/with-secure-url/
|
|
33
|
+
# Lädt Report-Daten inklusive Metadaten und generiert automatisch eine sichere URL
|
|
34
|
+
path(
|
|
35
|
+
'reports/<int:report_id>/with-secure-url/',
|
|
36
|
+
ReportWithSecureUrlView.as_view(),
|
|
37
|
+
name='report_with_secure_url'
|
|
38
|
+
),
|
|
39
|
+
|
|
40
|
+
# API-Endpunkt für Report-Datei-Metadaten
|
|
41
|
+
# GET /api/reports/{report_id}/file-metadata/
|
|
42
|
+
# Gibt Datei-Metadaten zurück (Größe, Typ, Datum, etc.)
|
|
43
|
+
path(
|
|
44
|
+
'reports/<int:report_id>/file-metadata/',
|
|
45
|
+
ReportFileMetadataView.as_view(),
|
|
46
|
+
name='report_file_metadata'
|
|
47
|
+
),
|
|
48
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from django.urls import path, include
|
|
2
|
+
from rest_framework.routers import DefaultRouter
|
|
3
|
+
from endoreg_db.views.requirement.lookup import LookupViewSet
|
|
4
|
+
from endoreg_db.views.requirement.evaluate import evaluate_requirements
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
router = DefaultRouter()
|
|
8
|
+
router.register(r"lookup", LookupViewSet, basename="lookup/")
|
|
9
|
+
|
|
10
|
+
urlpatterns = [
|
|
11
|
+
path("", include(router.urls)),
|
|
12
|
+
path("evaluate-requirements/", evaluate_requirements, name="evaluate-requirements/"),
|
|
13
|
+
]
|
endoreg_db/urls/stats.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from django.urls import path
|
|
2
|
+
|
|
3
|
+
from endoreg_db.views import (
|
|
4
|
+
ExaminationStatsView,
|
|
5
|
+
VideoSegmentStatsView,
|
|
6
|
+
SensitiveMetaStatsView,
|
|
7
|
+
GeneralStatsView,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
url_patterns = [
|
|
11
|
+
# ---------------------------------------------------------------------------------------
|
|
12
|
+
# STATISTICS API ENDPOINTS
|
|
13
|
+
#
|
|
14
|
+
# Diese Endpunkte stellen Dashboard-Statistiken bereit für das Frontend
|
|
15
|
+
# ---------------------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
# Examination Statistics API
|
|
18
|
+
# GET /api/examinations/stats/
|
|
19
|
+
# Liefert Statistiken über Examinations und PatientExaminations
|
|
20
|
+
path('examinations/stats/', ExaminationStatsView.as_view(), name='examination_stats'),
|
|
21
|
+
|
|
22
|
+
# Video Segment Statistics API
|
|
23
|
+
# GET /api/video-segment/stats/ (Note: singular 'segment' to match frontend)
|
|
24
|
+
# Liefert Statistiken über Video-Segmente und Label-Verteilung
|
|
25
|
+
path('video-segment/stats/', VideoSegmentStatsView.as_view(), name='video_segment_stats'),
|
|
26
|
+
|
|
27
|
+
# Alternative Video Segments Statistics API (plural version for compatibility)
|
|
28
|
+
# GET /api/video-segments/stats/
|
|
29
|
+
path('video-segments/stats/', VideoSegmentStatsView.as_view(), name='video_segments_stats'),
|
|
30
|
+
|
|
31
|
+
# Sensitive Meta Statistics API
|
|
32
|
+
# GET /api/video/sensitivemeta/stats/
|
|
33
|
+
# Liefert Statistiken über SensitiveMeta-Einträge und Verifikationsstatus
|
|
34
|
+
path('video/sensitivemeta/stats/', SensitiveMetaStatsView.as_view(), name='sensitive_meta_stats'),
|
|
35
|
+
|
|
36
|
+
# General Dashboard Statistics API
|
|
37
|
+
# GET /api/stats/
|
|
38
|
+
# Liefert allgemeine Übersichtsstatistiken für das Dashboard
|
|
39
|
+
path('stats/', GeneralStatsView.as_view(), name='general_stats'),
|
|
40
|
+
|
|
41
|
+
path(
|
|
42
|
+
'video-segments/stats/',
|
|
43
|
+
VideoSegmentStatsView.as_view(),
|
|
44
|
+
name='video_segments_stats'
|
|
45
|
+
),
|
|
46
|
+
]
|