endoreg-db 0.5.3__tar.gz → 0.6.1__tar.gz
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-0.6.1/.envrc +3 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/.gitignore +10 -2
- endoreg_db-0.6.1/.pylintrc +14 -0
- endoreg_db-0.6.1/.python-version +1 -0
- endoreg_db-0.6.1/PKG-INFO +151 -0
- endoreg_db-0.6.1/README.md +121 -0
- endoreg_db-0.6.1/dev/cg.py +9 -0
- endoreg_db-0.6.1/dev/explore_legacy_frames.py +108 -0
- endoreg_db-0.6.1/dev/test_model.py +3 -0
- endoreg_db-0.6.1/dev/video_utils.py +46 -0
- endoreg_db-0.6.1/devenv.lock +183 -0
- endoreg_db-0.6.1/devenv.nix +61 -0
- endoreg_db-0.6.1/devenv.yaml +11 -0
- endoreg_db-0.6.1/endoreg_db/admin.py +92 -0
- endoreg_db-0.6.1/endoreg_db/case_generator/case_generator.py +159 -0
- endoreg_db-0.6.1/endoreg_db/case_generator/lab_sample_factory.py +33 -0
- endoreg_db-0.6.1/endoreg_db/case_generator/utils.py +30 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/__init__.py +50 -4
- endoreg_db-0.6.1/endoreg_db/data/ai_model/data.yaml +7 -0
- {endoreg_db-0.5.3/endoreg_db/data/label → endoreg_db-0.6.1/endoreg_db/data/ai_model_label}/label/data.yaml +27 -1
- endoreg_db-0.6.1/endoreg_db/data/ai_model_label/label-set/data.yaml +21 -0
- endoreg_db-0.6.1/endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +5 -0
- endoreg_db-0.6.1/endoreg_db/data/ai_model_video_segmentation_label/base_segmentation.yaml +176 -0
- endoreg_db-0.6.1/endoreg_db/data/ai_model_video_segmentation_labelset/data.yaml +20 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/center/data.yaml +35 -5
- endoreg_db-0.6.1/endoreg_db/data/contraindication/bleeding.yaml +11 -0
- endoreg_db-0.6.1/endoreg_db/data/distribution/numeric/data.yaml +14 -0
- endoreg_db-0.6.1/endoreg_db/data/endoscope/data.yaml +93 -0
- endoreg_db-0.6.1/endoreg_db/data/examination_indication/endoscopy.yaml +8 -0
- endoreg_db-0.6.1/endoreg_db/data/examination_indication_classification/endoscopy.yaml +8 -0
- endoreg_db-0.6.1/endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +101 -0
- endoreg_db-0.6.1/endoreg_db/data/finding/data.yaml +141 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_intervention/endoscopy.yaml +138 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_location_classification/colonoscopy.yaml +46 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_location_classification_choice/colonoscopy.yaml +240 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +48 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colon_lesion_circularity_default.yaml +34 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colon_lesion_nice.yaml +20 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colon_lesion_paris.yaml +65 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colon_lesion_planarity_default.yaml +56 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colon_lesion_surface_intact_default.yaml +39 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +57 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +79 -0
- endoreg_db-0.6.1/endoreg_db/data/finding_type/data.yaml +30 -0
- endoreg_db-0.6.1/endoreg_db/data/gender/data.yaml +35 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/cardiac_enzymes.yaml +7 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/coagulation.yaml +6 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/electrolytes.yaml +39 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/gastrointestinal_function.yaml +12 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/hematology.yaml +17 -2
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/hormones.yaml +6 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/lipids.yaml +12 -3
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/misc.yaml +5 -2
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/lab_value/renal_function.yaml +2 -1
- endoreg_db-0.6.1/endoreg_db/data/lx_client_tag/base.yaml +54 -0
- endoreg_db-0.6.1/endoreg_db/data/lx_client_type/base.yaml +30 -0
- endoreg_db-0.6.1/endoreg_db/data/lx_permission/base.yaml +24 -0
- endoreg_db-0.6.1/endoreg_db/data/lx_permission/endoreg.yaml +52 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_indication/anticoagulation.yaml +44 -49
- endoreg_db-0.6.1/endoreg_db/data/names_first/first_names.yaml +51 -0
- endoreg_db-0.6.1/endoreg_db/data/names_last/last_names.yaml +51 -0
- endoreg_db-0.6.1/endoreg_db/data/network_device/data.yaml +59 -0
- endoreg_db-0.6.1/endoreg_db/data/organ/data.yaml +29 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/pdf_type/data.yaml +2 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +4 -0
- endoreg_db-0.6.1/endoreg_db/forms/__init__.py +5 -0
- endoreg_db-0.6.1/endoreg_db/forms/examination_form.py +11 -0
- endoreg_db-0.6.1/endoreg_db/forms/patient_finding_intervention_form.py +19 -0
- endoreg_db-0.6.1/endoreg_db/forms/patient_form.py +26 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_ai_model_data.py +79 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_base_db_data.py +178 -0
- endoreg_db-0.5.3/endoreg_db/management/commands/load_disease_data.py → endoreg_db-0.6.1/endoreg_db/management/commands/load_contraindication_data.py +3 -2
- endoreg_db-0.6.1/endoreg_db/management/commands/load_disease_data.py +62 -0
- endoreg_db-0.5.3/endoreg_db/management/commands/load_endoscope_type_data.py → endoreg_db-0.6.1/endoreg_db/management/commands/load_endoscope_data.py +30 -7
- endoreg_db-0.6.1/endoreg_db/management/commands/load_examination_indication_data.py +65 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_finding_data.py +171 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_lab_value_data.py +3 -3
- endoreg_db-0.6.1/endoreg_db/management/commands/load_lx_data.py +64 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_medication_data.py +103 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_name_data.py +37 -0
- endoreg_db-0.6.1/endoreg_db/management/commands/load_organ_data.py +43 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/migrations/0001_initial.py +1206 -728
- endoreg_db-0.6.1/endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +23 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +23 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +25 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +33 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +23 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +24 -0
- endoreg_db-0.6.1/endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +48 -0
- endoreg_db-0.6.1/endoreg_db/models/__init__.py +376 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/ai_model/__init__.py +1 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/ai_model.py +103 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/__init__.py +3 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/inference_dataset.py +53 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/multilabel_classification_net.py +155 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/postprocess.py +53 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/predict.py +172 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/prediction_visualizer.py +55 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/preprocess.py +68 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/lightning/run_visualizer.py +21 -0
- endoreg_db-0.6.1/endoreg_db/models/ai_model/model_meta.py +250 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/ai_model/model_type.py +13 -3
- endoreg_db-0.6.1/endoreg_db/models/annotation/__init__.py +32 -0
- endoreg_db-0.6.1/endoreg_db/models/annotation/anonymized_image_annotation.py +115 -0
- endoreg_db-0.6.1/endoreg_db/models/annotation/binary_classification_annotation_task.py +117 -0
- endoreg_db-0.6.1/endoreg_db/models/annotation/image_classification.py +86 -0
- endoreg_db-0.6.1/endoreg_db/models/annotation/video_segmentation_annotation.py +52 -0
- endoreg_db-0.6.1/endoreg_db/models/annotation/video_segmentation_labelset.py +20 -0
- endoreg_db-0.6.1/endoreg_db/models/case/__init__.py +1 -0
- {endoreg_db-0.5.3/endoreg_db/models/persons/patient → endoreg_db-0.6.1/endoreg_db/models}/case/case.py +4 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/case_template/__init__.py +10 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/case_template/case_template.py +57 -13
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/case_template/case_template_rule.py +5 -5
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/case_template/case_template_rule_value.py +19 -4
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/center/__init__.py +7 -0
- endoreg_db-0.6.1/endoreg_db/models/center/center.py +51 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/center/center_product.py +0 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/center/center_resource.py +16 -2
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/center/center_waste.py +6 -1
- endoreg_db-0.5.3/endoreg_db/models/examination/examination_time_type.py → endoreg_db-0.6.1/endoreg_db/models/contraindication/__init__.py +9 -12
- endoreg_db-0.6.1/endoreg_db/models/data_file/__init__.py +39 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/__init__.py +7 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/abstract_frame.py +100 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/abstract_pdf.py +136 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/abstract_video.py +807 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/frame_helpers.py +17 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +19 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/base_classes/utils.py +80 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/frame.py +29 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/import_classes/__init__.py +18 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/import_classes/raw_pdf.py +260 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/import_classes/raw_video.py +288 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/metadata/__init__.py +10 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/metadata/pdf_meta.py +4 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/metadata/sensitive_meta.py +290 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/metadata/video_meta.py +199 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/report_file.py +56 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/video/__init__.py +6 -2
- endoreg_db-0.6.1/endoreg_db/models/data_file/video/video.py +196 -0
- endoreg_db-0.6.1/endoreg_db/models/data_file/video_segment.py +214 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/disease.py +25 -2
- endoreg_db-0.6.1/endoreg_db/models/emission/__init__.py +5 -0
- endoreg_db-0.6.1/endoreg_db/models/emission/emission_factor.py +85 -0
- endoreg_db-0.6.1/endoreg_db/models/event.py +73 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/__init__.py +9 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/examination.py +67 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/examination_indication.py +170 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/examination_time.py +53 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/examination_time_type.py +48 -0
- endoreg_db-0.6.1/endoreg_db/models/examination/examination_type.py +40 -0
- endoreg_db-0.6.1/endoreg_db/models/finding/__init__.py +11 -0
- endoreg_db-0.6.1/endoreg_db/models/finding/finding.py +75 -0
- endoreg_db-0.6.1/endoreg_db/models/finding/finding_intervention.py +60 -0
- endoreg_db-0.6.1/endoreg_db/models/finding/finding_location_classification.py +94 -0
- endoreg_db-0.6.1/endoreg_db/models/finding/finding_morphology_classification.py +89 -0
- endoreg_db-0.5.3/endoreg_db/models/examination/examination_type.py → endoreg_db-0.6.1/endoreg_db/models/finding/finding_type.py +10 -6
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/hardware/endoscope.py +16 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/hardware/endoscopy_processor.py +31 -19
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/label/label.py +35 -7
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/laboratory/lab_value.py +12 -3
- endoreg_db-0.6.1/endoreg_db/models/logging/__init__.py +11 -0
- endoreg_db-0.6.1/endoreg_db/models/lx/__init__.py +4 -0
- endoreg_db-0.6.1/endoreg_db/models/lx/client.py +57 -0
- endoreg_db-0.6.1/endoreg_db/models/lx/identity.py +34 -0
- endoreg_db-0.6.1/endoreg_db/models/lx/permission.py +18 -0
- endoreg_db-0.6.1/endoreg_db/models/lx/user.py +16 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/__init__.py +19 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/medication.py +33 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/medication_indication.py +50 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/medication_indication_type.py +34 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/medication_intake_time.py +26 -0
- endoreg_db-0.6.1/endoreg_db/models/medication/medication_schedule.py +37 -0
- endoreg_db-0.6.1/endoreg_db/models/network/__init__.py +9 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/network/network_device.py +13 -8
- endoreg_db-0.6.1/endoreg_db/models/organ/__init__.py +38 -0
- endoreg_db-0.6.1/endoreg_db/models/other/__init__.py +23 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/__init__.py +44 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/base_value_distribution.py +20 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/date_value_distribution.py +91 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +32 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/numeric_value_distribution.py +97 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution/single_categorical_value_distribution.py +22 -0
- endoreg_db-0.6.1/endoreg_db/models/other/distribution.py +5 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/other/material.py +4 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/other/transport_route.py +2 -1
- endoreg_db-0.6.1/endoreg_db/models/patient/__init__.py +24 -0
- endoreg_db-0.6.1/endoreg_db/models/patient/patient_examination.py +182 -0
- endoreg_db-0.6.1/endoreg_db/models/patient/patient_finding.py +143 -0
- endoreg_db-0.6.1/endoreg_db/models/patient/patient_finding_intervention.py +26 -0
- endoreg_db-0.6.1/endoreg_db/models/patient/patient_finding_location.py +120 -0
- endoreg_db-0.6.1/endoreg_db/models/patient/patient_finding_morphology.py +166 -0
- endoreg_db-0.6.1/endoreg_db/models/persons/__init__.py +34 -0
- endoreg_db-0.6.1/endoreg_db/models/persons/examiner/examiner.py +60 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/patient/__init__.py +1 -1
- endoreg_db-0.6.1/endoreg_db/models/persons/patient/patient.py +389 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/patient/patient_disease.py +6 -0
- endoreg_db-0.6.1/endoreg_db/models/persons/patient/patient_event.py +52 -0
- endoreg_db-0.6.1/endoreg_db/models/persons/patient/patient_examination_indication.py +32 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/patient/patient_lab_sample.py +4 -2
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/patient/patient_lab_value.py +37 -16
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/patient/patient_medication.py +27 -12
- endoreg_db-0.6.1/endoreg_db/models/persons/patient/patient_medication_schedule.py +88 -0
- endoreg_db-0.6.1/endoreg_db/models/prediction/__init__.py +8 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/prediction/image_classification.py +20 -6
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/prediction/video_prediction_meta.py +151 -89
- endoreg_db-0.6.1/endoreg_db/models/product/__init__.py +14 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/product/product.py +15 -2
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/product/product_group.py +8 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/product/product_material.py +4 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/product/product_weight.py +12 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/product/reference_product.py +19 -3
- endoreg_db-0.6.1/endoreg_db/models/quiz/__init__.py +9 -0
- endoreg_db-0.6.1/endoreg_db/models/report_reader/__init__.py +7 -0
- endoreg_db-0.6.1/endoreg_db/queries/get/video_prediction_meta.py +0 -0
- endoreg_db-0.6.1/endoreg_db/queries/sanity/__init_.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/__init__.py +1 -1
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/annotation.py +2 -5
- endoreg_db-0.6.1/endoreg_db/serializers/frame.py +9 -0
- endoreg_db-0.6.1/endoreg_db/serializers/patient.py +33 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/prediction.py +2 -7
- endoreg_db-0.6.1/endoreg_db/serializers/raw_video_meta_validation.py +13 -0
- endoreg_db-0.6.1/endoreg_db/serializers/video.py +20 -0
- endoreg_db-0.6.1/endoreg_db/serializers/video_segmentation.py +492 -0
- endoreg_db-0.6.1/endoreg_db/templates/admin/patient_finding_intervention.html +253 -0
- endoreg_db-0.6.1/endoreg_db/templates/admin/start_examination.html +12 -0
- endoreg_db-0.6.1/endoreg_db/templates/timeline.html +176 -0
- endoreg_db-0.6.1/endoreg_db/urls.py +173 -0
- endoreg_db-0.6.1/endoreg_db/utils/__init__.py +36 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/dataloader.py +45 -19
- endoreg_db-0.6.1/endoreg_db/utils/dates.py +39 -0
- endoreg_db-0.6.1/endoreg_db/utils/hashs.py +152 -0
- endoreg_db-0.6.1/endoreg_db/utils/names.py +74 -0
- endoreg_db-0.6.1/endoreg_db/utils/parse_and_generate_yaml.py +46 -0
- endoreg_db-0.6.1/endoreg_db/utils/pydantic_models/__init__.py +6 -0
- endoreg_db-0.6.1/endoreg_db/utils/pydantic_models/db_config.py +57 -0
- endoreg_db-0.6.1/endoreg_db/utils/validate_endo_roi.py +19 -0
- endoreg_db-0.6.1/endoreg_db/utils/validate_subcategory_dict.py +91 -0
- endoreg_db-0.6.1/endoreg_db/utils/video/__init__.py +13 -0
- endoreg_db-0.6.1/endoreg_db/utils/video/extract_frames.py +121 -0
- endoreg_db-0.6.1/endoreg_db/utils/video/transcode_videofile.py +111 -0
- endoreg_db-0.6.1/endoreg_db/views/__init__.py +2 -0
- endoreg_db-0.6.1/endoreg_db/views/csrf.py +7 -0
- endoreg_db-0.6.1/endoreg_db/views/patient_views.py +90 -0
- endoreg_db-0.6.1/endoreg_db/views/raw_video_meta_validation_views.py +38 -0
- endoreg_db-0.6.1/endoreg_db/views/report_views.py +96 -0
- endoreg_db-0.6.1/endoreg_db/views/video_segmentation_views.py +149 -0
- endoreg_db-0.6.1/endoreg_db/views/views_for_timeline.py +46 -0
- endoreg_db-0.6.1/endoreg_db/views.py +0 -0
- endoreg_db-0.6.1/hello.py +58 -0
- endoreg_db-0.6.1/install_dependencies.py +31 -0
- endoreg_db-0.6.1/logs/2024-12-01_15-37-07.txt +1 -0
- endoreg_db-0.6.1/logs/2024-12-01_15-37-45.txt +1 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/pyproject.toml +14 -24
- endoreg_db-0.6.1/requirements-cpu.txt +61 -0
- endoreg_db-0.6.1/requirements-gpu.txt +76 -0
- endoreg_db-0.6.1/runtests.py +15 -0
- endoreg_db-0.6.1/teeeests_for_later/case_template/__init__.py +0 -0
- endoreg_db-0.6.1/teeeests_for_later/case_template/_test_main_template.py +70 -0
- endoreg_db-0.6.1/teeeests_for_later/center/__init__.py +0 -0
- endoreg_db-0.6.1/teeeests_for_later/center/test_center.py +12 -0
- endoreg_db-0.6.1/teeeests_for_later/center/test_green_endoscopy.py +17 -0
- endoreg_db-0.6.1/tests/__init__.py +0 -0
- endoreg_db-0.6.1/tests/center/__init__.py +0 -0
- endoreg_db-0.6.1/tests/center/conf.py +18 -0
- endoreg_db-0.6.1/tests/center/test_center.py +61 -0
- endoreg_db-0.6.1/tests/center/test_hardware.py +90 -0
- endoreg_db-0.6.1/tests/datafiles/__init__.py +0 -0
- endoreg_db-0.6.1/tests/datafiles/conf.py +56 -0
- endoreg_db-0.6.1/tests/datafiles/test_ai_model.py +180 -0
- endoreg_db-0.6.1/tests/datafiles/test_pdf.py +90 -0
- endoreg_db-0.6.1/tests/datafiles/test_video_import.py +142 -0
- endoreg_db-0.6.1/tests/luxnix/__init__.py +0 -0
- endoreg_db-0.6.1/tests/luxnix/conf.py +85 -0
- endoreg_db-0.6.1/tests/luxnix/test_client_permission.py +39 -0
- endoreg_db-0.6.1/tests/luxnix/test_client_tags.py +0 -0
- endoreg_db-0.6.1/tests/luxnix/test_client_types.py +33 -0
- endoreg_db-0.6.1/tests/management/__init__.py +0 -0
- endoreg_db-0.6.1/tests/management/test_load_data.py +30 -0
- endoreg_db-0.6.1/tests/models.py +8 -0
- endoreg_db-0.6.1/tests/patient/__init__.py +0 -0
- endoreg_db-0.6.1/tests/patient/conf.py +69 -0
- endoreg_db-0.6.1/tests/patient/test_patient.py +67 -0
- endoreg_db-0.6.1/tests/patient/test_patient_disease.py +58 -0
- endoreg_db-0.6.1/tests/patient/test_patient_event.py +41 -0
- endoreg_db-0.6.1/tests/patient/test_patient_examination.py +108 -0
- endoreg_db-0.6.1/tests/patient/test_patient_finding_intervention.py +96 -0
- endoreg_db-0.6.1/tests/patient/test_patient_findings.py +222 -0
- endoreg_db-0.6.1/tests/patient/test_patient_lab_sample.py +78 -0
- endoreg_db-0.6.1/tests/patient/test_patient_medication.py +102 -0
- endoreg_db-0.6.1/tests/patient/utils.py +51 -0
- endoreg_db-0.6.1/tests/test_settings.py +25 -0
- endoreg_db-0.6.1/tests/unit/__init__.py +0 -0
- endoreg_db-0.6.1/tests/unit/conf.py +5 -0
- endoreg_db-0.6.1/tests/unit/test_unit.py +25 -0
- endoreg_db-0.6.1/tests/utils/__init__.py +0 -0
- endoreg_db-0.6.1/tests/utils/test_dates.py +26 -0
- endoreg_db-0.6.1/uv.lock +1555 -0
- endoreg_db-0.5.3/.envrc +0 -1
- endoreg_db-0.5.3/PKG-INFO +0 -28
- endoreg_db-0.5.3/README.md +0 -8
- endoreg_db-0.5.3/_flake.nix +0 -130
- endoreg_db-0.5.3/_pyproject.toml +0 -33
- endoreg_db-0.5.3/depreceated_pip-shell.nix +0 -12
- endoreg_db-0.5.3/endoreg_db/admin.py +0 -3
- endoreg_db-0.5.3/endoreg_db/data/active_model/data.yaml +0 -3
- endoreg_db-0.5.3/endoreg_db/data/gender/data.yaml +0 -18
- endoreg_db-0.5.3/endoreg_db/data/label/label-set/data.yaml +0 -18
- endoreg_db-0.5.3/endoreg_db/data/network_device/data.yaml +0 -29
- endoreg_db-0.5.3/endoreg_db/forms/__init__.py +0 -3
- endoreg_db-0.5.3/endoreg_db/management/commands/delete_legacy_images.py +0 -19
- endoreg_db-0.5.3/endoreg_db/management/commands/delete_legacy_videos.py +0 -17
- endoreg_db-0.5.3/endoreg_db/management/commands/extract_legacy_video_frames.py +0 -18
- endoreg_db-0.5.3/endoreg_db/management/commands/import_legacy_images.py +0 -94
- endoreg_db-0.5.3/endoreg_db/management/commands/import_legacy_videos.py +0 -76
- endoreg_db-0.5.3/endoreg_db/management/commands/load_ai_model_data.py +0 -45
- endoreg_db-0.5.3/endoreg_db/management/commands/load_base_db_data.py +0 -136
- endoreg_db-0.5.3/endoreg_db/management/commands/load_endoscopy_processor_data.py +0 -45
- endoreg_db-0.5.3/endoreg_db/management/commands/load_label_data.py +0 -67
- endoreg_db-0.5.3/endoreg_db/management/commands/load_medication_data.py +0 -41
- endoreg_db-0.5.3/endoreg_db/migrations/0002_anonymizedimagelabel_anonymousimageannotation_and_more.py +0 -55
- endoreg_db-0.5.3/endoreg_db/migrations/0003_anonymousimageannotation_original_image_url_and_more.py +0 -39
- endoreg_db-0.5.3/endoreg_db/migrations/0004_alter_rawpdffile_file.py +0 -20
- endoreg_db-0.5.3/endoreg_db/migrations/0005_uploadedfile_alter_rawpdffile_file_anonymizedfile.py +0 -40
- endoreg_db-0.5.3/endoreg_db/migrations/0006_alter_rawpdffile_file.py +0 -20
- endoreg_db-0.5.3/endoreg_db/migrations/0007_networkdevicelogentry_datetime_and_more.py +0 -43
- endoreg_db-0.5.3/endoreg_db/migrations/0008_networkdevicelogentry_aglnet_ip_and_more.py +0 -28
- endoreg_db-0.5.3/endoreg_db/migrations/0009_alter_networkdevicelogentry_vpn_service_status.py +0 -18
- endoreg_db-0.5.3/endoreg_db/migrations/0010_remove_networkdevicelogentry_hostname.py +0 -17
- endoreg_db-0.5.3/endoreg_db/models/__init__.py +0 -73
- endoreg_db-0.5.3/endoreg_db/models/ai_model/model_meta.py +0 -24
- endoreg_db-0.5.3/endoreg_db/models/annotation/__init__.py +0 -3
- endoreg_db-0.5.3/endoreg_db/models/annotation/anonymized_image_annotation.py +0 -60
- endoreg_db-0.5.3/endoreg_db/models/annotation/binary_classification_annotation_task.py +0 -80
- endoreg_db-0.5.3/endoreg_db/models/annotation/image_classification.py +0 -27
- endoreg_db-0.5.3/endoreg_db/models/center/center.py +0 -25
- endoreg_db-0.5.3/endoreg_db/models/data_file/__init__.py +0 -6
- endoreg_db-0.5.3/endoreg_db/models/data_file/base_classes/__init__.py +0 -2
- endoreg_db-0.5.3/endoreg_db/models/data_file/base_classes/abstract_frame.py +0 -51
- endoreg_db-0.5.3/endoreg_db/models/data_file/base_classes/abstract_video.py +0 -201
- endoreg_db-0.5.3/endoreg_db/models/data_file/frame.py +0 -45
- endoreg_db-0.5.3/endoreg_db/models/data_file/import_classes/__init__.py +0 -32
- endoreg_db-0.5.3/endoreg_db/models/data_file/import_classes/raw_pdf.py +0 -188
- endoreg_db-0.5.3/endoreg_db/models/data_file/import_classes/raw_video.py +0 -343
- endoreg_db-0.5.3/endoreg_db/models/data_file/metadata/sensitive_meta.py +0 -31
- endoreg_db-0.5.3/endoreg_db/models/data_file/metadata/video_meta.py +0 -133
- endoreg_db-0.5.3/endoreg_db/models/data_file/report_file.py +0 -89
- endoreg_db-0.5.3/endoreg_db/models/data_file/video/video.py +0 -25
- endoreg_db-0.5.3/endoreg_db/models/data_file/video_segment.py +0 -107
- endoreg_db-0.5.3/endoreg_db/models/emission/__init__.py +0 -1
- endoreg_db-0.5.3/endoreg_db/models/emission/emission_factor.py +0 -20
- endoreg_db-0.5.3/endoreg_db/models/event.py +0 -22
- endoreg_db-0.5.3/endoreg_db/models/examination/__init__.py +0 -4
- endoreg_db-0.5.3/endoreg_db/models/examination/examination.py +0 -26
- endoreg_db-0.5.3/endoreg_db/models/examination/examination_time.py +0 -27
- endoreg_db-0.5.3/endoreg_db/models/legacy_data/__init__.py +0 -3
- endoreg_db-0.5.3/endoreg_db/models/legacy_data/image.py +0 -34
- endoreg_db-0.5.3/endoreg_db/models/logging/__init__.py +0 -4
- endoreg_db-0.5.3/endoreg_db/models/medication/__init__.py +0 -1
- endoreg_db-0.5.3/endoreg_db/models/medication/medication.py +0 -148
- endoreg_db-0.5.3/endoreg_db/models/network/__init__.py +0 -3
- endoreg_db-0.5.3/endoreg_db/models/other/__init__.py +0 -5
- endoreg_db-0.5.3/endoreg_db/models/other/distribution.py +0 -215
- endoreg_db-0.5.3/endoreg_db/models/patient_examination/__init__.py +0 -35
- endoreg_db-0.5.3/endoreg_db/models/persons/__init__.py +0 -7
- endoreg_db-0.5.3/endoreg_db/models/persons/examiner/examiner.py +0 -16
- endoreg_db-0.5.3/endoreg_db/models/persons/patient/patient.py +0 -216
- endoreg_db-0.5.3/endoreg_db/models/persons/patient/patient_event.py +0 -22
- endoreg_db-0.5.3/endoreg_db/models/persons/patient/patient_medication_schedule.py +0 -28
- endoreg_db-0.5.3/endoreg_db/models/prediction/__init__.py +0 -2
- endoreg_db-0.5.3/endoreg_db/models/product/__init__.py +0 -5
- endoreg_db-0.5.3/endoreg_db/models/quiz/__init__.py +0 -2
- endoreg_db-0.5.3/endoreg_db/models/report_reader/__init__.py +0 -2
- endoreg_db-0.5.3/endoreg_db/serializers/frame.py +0 -13
- endoreg_db-0.5.3/endoreg_db/serializers/patient.py +0 -10
- endoreg_db-0.5.3/endoreg_db/serializers/video.py +0 -27
- endoreg_db-0.5.3/endoreg_db/utils/__init__.py +0 -1
- endoreg_db-0.5.3/endoreg_db/utils/hashs.py +0 -34
- endoreg_db-0.5.3/endoreg_db/utils/video_metadata.py +0 -87
- endoreg_db-0.5.3/endoreg_db/views.py +0 -3
- endoreg_db-0.5.3/flake.lock +0 -72
- endoreg_db-0.5.3/flake.nix +0 -197
- endoreg_db-0.5.3/poetry.lock +0 -976
- endoreg_db-0.5.3/uv.lock +0 -928
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/LICENSE +0 -0
- {endoreg_db-0.5.3/endoreg_db → endoreg_db-0.6.1/dev}/__init__.py +0 -0
- {endoreg_db-0.5.3/endoreg_db/migrations → endoreg_db-0.6.1/endoreg_db}/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/apps.py +0 -0
- {endoreg_db-0.5.3/endoreg_db/models/persons/patient/case → endoreg_db-0.6.1/endoreg_db/case_generator}/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/agl_service/data.yaml +0 -0
- {endoreg_db-0.5.3/endoreg_db/data/label → endoreg_db-0.6.1/endoreg_db/data/ai_model_label}/label-type/data.yaml +0 -0
- {endoreg_db-0.5.3/endoreg_db/data/model_type → endoreg_db-0.6.1/endoreg_db/data/ai_model_type}/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/01_patient-set-age.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule/19_create_patient.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule_type/base_types.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule_value/.init +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/rule_value_type/base_types.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/template/base.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/tmp/_rule_value +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease/cardiovascular.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease/hepatology.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease/misc.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease/renal.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/distribution/date/patient.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/distribution/multiple_categorical/.init +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/distribution/single_categorical/patient.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/endoscope_type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/endoscopy_processor/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/event/cardiology.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/event/neurology.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/event/surgery.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/event/thrombembolism.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/examination/examinations/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/examination/time/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/examination/time-type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/examination/type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/information_source/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/information_source/medication.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/log_type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/material/material.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication/anticoagulation.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication/tah.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_indication_type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_indication_type/thrombembolism.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_intake_time/base.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_schedule/apixaban.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_schedule/ass.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/medication_schedule/enoxaparin.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/network_device_type/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/patient_lab_sample_type/generic.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/profession/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/concentration.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/length.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/misc.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/rate.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/time.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/volume.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/unit/weight.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/data/waste/data.yaml +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/forms/questionnaires/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/forms/questionnaires/tto_questionnaire.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/forms/settings/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/forms/unit.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/data/distribution/numeric/.init → /endoreg_db-0.6.1/endoreg_db/management/__init__.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/queries/get/annotation.py → /endoreg_db-0.6.1/endoreg_db/management/commands/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/_load_model_template.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/delete_all.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/fetch_legacy_image_dataset.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/fix_auth_permission.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_active_model_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_center_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_disease_classification_choices_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_disease_classification_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_distribution_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_event_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_examination_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_g_play_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_gender_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_information_source.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_logging_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_medication_indication_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_medication_indication_type_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_medication_intake_time_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_medication_schedule_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_network_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_pdf_type_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_profession_data.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/management/commands/load_report_reader_flag.py → /endoreg_db-0.6.1/endoreg_db/management/commands/load_report_reader_flag_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_unit_data.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/load_user_groups.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/register_ai_model.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/management/commands/reset_celery_schedule.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/queries/get/prediction.py → /endoreg_db-0.6.1/endoreg_db/migrations/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/ai_model/active_model.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/ai_model/utils.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/case_template/case_template_type.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/import_classes/processing_functions/video.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/data_file/video/import_meta.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/hardware/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/information_source.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/label/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/laboratory/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/logging/agl_service.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/logging/base.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/logging/log_type.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/logging/network_device.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/network/agl_service.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/network/network_device_type.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/other/resource.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/other/waste.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/permissions/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/examiner/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/examiner/examiner_type.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/first_name.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/gender.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/last_name.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/person.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/persons/portal_user_information.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/questionnaires/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/quiz/quiz_answer.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/quiz/quiz_question.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/report_reader/report_reader_config.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/report_reader/report_reader_flag.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/rule.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/rule_applicator.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/rule_attribute_dtype.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/rule_type.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/rules/ruleset.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/models/unit.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/annotations/__init__.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/annotations/legacy.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/__init__.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/queries/get/video_import_meta.py → /endoreg_db-0.6.1/endoreg_db/queries/get/annotation.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/center.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/model.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/patient.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/patient_examination.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/queries/get/video_prediction_meta.py → /endoreg_db-0.6.1/endoreg_db/queries/get/prediction.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/report_file.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/queries/get/video.py +0 -0
- /endoreg_db-0.5.3/endoreg_db/queries/sanity/__init_.py → /endoreg_db-0.6.1/endoreg_db/queries/get/video_import_meta.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/ai_model.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/center.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/examination.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/hardware.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/label.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/serializers/report_file.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/tests.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/cropping.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/file_operations.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/legacy_ocr.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/ocr.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/endoreg_db/utils/uuid.py +0 -0
- {endoreg_db-0.5.3 → endoreg_db-0.6.1}/secrets/poetry.yaml +0 -0
endoreg_db-0.6.1/.envrc
ADDED
|
@@ -2,6 +2,12 @@ result
|
|
|
2
2
|
result/
|
|
3
3
|
*result
|
|
4
4
|
.ruff_cache/
|
|
5
|
+
.devenv
|
|
6
|
+
untracked_notes.md
|
|
7
|
+
tests/sensitive/
|
|
8
|
+
erc_data/
|
|
9
|
+
./data/
|
|
10
|
+
test_reports/*
|
|
5
11
|
|
|
6
12
|
# Byte-compiled / optimized / DLL files
|
|
7
13
|
__pycache__/
|
|
@@ -10,9 +16,11 @@ __pycache__/
|
|
|
10
16
|
_build
|
|
11
17
|
.direnv
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
.devenv.flake.nix
|
|
20
|
+
|
|
21
|
+
###### Do not Remove ###### # Deprecated?
|
|
14
22
|
# Protects temporary files from being comitted
|
|
15
|
-
endoreg_client_manager/data/*
|
|
23
|
+
endoreg_client_manager/data/*
|
|
16
24
|
|
|
17
25
|
# C extensions
|
|
18
26
|
*.so
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
[MESSAGES CONTROL]
|
|
2
|
+
disable=
|
|
3
|
+
E1101,
|
|
4
|
+
W0611,
|
|
5
|
+
C0114, ; Missing module docstring
|
|
6
|
+
C0115, ; Missing class docstring
|
|
7
|
+
C0116, ; Missing function or method docstring
|
|
8
|
+
C0301, ; Line too long
|
|
9
|
+
C0411,
|
|
10
|
+
C0412,
|
|
11
|
+
C0413,
|
|
12
|
+
C0415, ; Import outside toplevel
|
|
13
|
+
W0613, ; Unused argument
|
|
14
|
+
W0719, ; Broad exception raised
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: endoreg-db
|
|
3
|
+
Version: 0.6.1
|
|
4
|
+
Summary: EndoReg Db Django App
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Requires-Dist: agl-report-reader>=0.4.0
|
|
8
|
+
Requires-Dist: django-bootstrap5>=24.3
|
|
9
|
+
Requires-Dist: django-cors-headers>=4.7.0
|
|
10
|
+
Requires-Dist: django-extensions>=3.2.3
|
|
11
|
+
Requires-Dist: django>=5.1.3
|
|
12
|
+
Requires-Dist: djangorestframework>=3.15.2
|
|
13
|
+
Requires-Dist: faker>=32.1.0
|
|
14
|
+
Requires-Dist: icecream>=2.1.4
|
|
15
|
+
Requires-Dist: numpy>=2.1.3
|
|
16
|
+
Requires-Dist: opencv-python>=4.10.0.84
|
|
17
|
+
Requires-Dist: pandas>=2.2.3
|
|
18
|
+
Requires-Dist: pillow>=11.0.0
|
|
19
|
+
Requires-Dist: pydantic>=2.10.6
|
|
20
|
+
Requires-Dist: pytesseract>=0.3.13
|
|
21
|
+
Requires-Dist: python-ffmpeg>=2.0.12
|
|
22
|
+
Requires-Dist: pytorch-lightning>=2.4.0
|
|
23
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
24
|
+
Requires-Dist: scikit-learn>=1.5.2
|
|
25
|
+
Requires-Dist: scipy>=1.14.1
|
|
26
|
+
Requires-Dist: tesseract>=0.1.3
|
|
27
|
+
Requires-Dist: tqdm>=4.67.0
|
|
28
|
+
Requires-Dist: urllib3>=2.2.3
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# EndoregDB - Professional Data Infrastructure for Clinical Research
|
|
32
|
+
|
|
33
|
+
EndoregDB is a comprehensive database framework designed to manage medical and research-related data for clinical trials. This repository focuses on efficient data processing, automated deployment, security, and reproducibility, offering a flexible setup for local development environments as well as distributed systems. It supports the integration of AI/ML tools and advanced image and report processing.
|
|
34
|
+
|
|
35
|
+
This infrastructure was originally designed for clinical research studies and is optimized for handling large data volumes, including:
|
|
36
|
+
|
|
37
|
+
- Medical reports,
|
|
38
|
+
- Patient imaging and video data,
|
|
39
|
+
- Clinical product and treatment data,
|
|
40
|
+
and more.
|
|
41
|
+
|
|
42
|
+
## 🚀 Key Features
|
|
43
|
+
|
|
44
|
+
### System Architecture
|
|
45
|
+
|
|
46
|
+
- **Modular Design**: Built on scalable and reusable components to simplify integration into various environments.
|
|
47
|
+
- **Multi-System Support**: Manages configurations for local workstations and production servers.
|
|
48
|
+
- **Role-Specific Configuration**: Predefined roles for common use cases:
|
|
49
|
+
- Medical data processing systems
|
|
50
|
+
- AI/ML model deployment
|
|
51
|
+
- Research workstation configuration
|
|
52
|
+
|
|
53
|
+
### Security & Data Management
|
|
54
|
+
|
|
55
|
+
- **Data Encryption**: All sensitive data is encrypted, and privacy policies are enforced.
|
|
56
|
+
- **Impermanence**: Stateless system configuration with persistence for critical data.
|
|
57
|
+
- **Access Control**: Role-based access and identity management integration.
|
|
58
|
+
|
|
59
|
+
### Data and Processing Environment
|
|
60
|
+
|
|
61
|
+
- **Data Processing**: Optimized for processing medical datasets with preprocessing tools.
|
|
62
|
+
- **AI/ML Support**:
|
|
63
|
+
- Integration of machine learning tools for predictive analysis.
|
|
64
|
+
- TensorFlow, PyTorch, and other frameworks supported for model training.
|
|
65
|
+
- **Image/Video Processing**: Support for analyzing patient images and clinical videos.
|
|
66
|
+
|
|
67
|
+
### Development Tools & Infrastructure
|
|
68
|
+
|
|
69
|
+
- **Data Science Toolchains**: Pre-configured environments for data processing, analysis, and visualization.
|
|
70
|
+
- **Monitoring & Logging**: Setup for continuous monitoring and logging to ensure system stability and performance.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 🛠 Getting Started
|
|
75
|
+
|
|
76
|
+
### Prerequisites
|
|
77
|
+
|
|
78
|
+
- A Linux-based system (Ubuntu/Debian recommended) or NixOS
|
|
79
|
+
- Hardware with sufficient storage for data processing (at least 1 TB recommended)
|
|
80
|
+
|
|
81
|
+
### Quick Start
|
|
82
|
+
|
|
83
|
+
1. Clone the repository:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git clone https://github.com/wg-lux/endoreg-db.git
|
|
87
|
+
cd endoreg-db
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
2. Set up your Python environment:
|
|
91
|
+
_TODO_: Explain Devenv / point to other docs
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
direnv allow
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. Run tests:
|
|
98
|
+
Call Devenv Script to run tests
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
runtests
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 📁 Repository Structure
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
endoreg-db/
|
|
110
|
+
├── endoreg_db/ # Main Django app for medical data
|
|
111
|
+
│ ├── case_generator/ # Sample case generator
|
|
112
|
+
│ ├── data/ # Medical knowledge base
|
|
113
|
+
│ ├── management/ # Data wrangling operations
|
|
114
|
+
│ ├── models/ # Data models
|
|
115
|
+
│ ├── migrations/ # Database migrations
|
|
116
|
+
│ └── serializers/ # Serializers for data
|
|
117
|
+
├── .gitignore # Git ignore file for unnecessary files
|
|
118
|
+
└── README.md # Project description and setup instructions
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 🔒 Security Features
|
|
124
|
+
|
|
125
|
+
- **Data Encryption**: All sensitive patient data is encrypted.
|
|
126
|
+
- **Role-Based Access Control**: Configurable roles for managing access to various parts of the system.
|
|
127
|
+
- **Logging & Auditing**: Comprehensive logging system that tracks user activities and data changes.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 🖥️ Supported Systems
|
|
132
|
+
|
|
133
|
+
- **Workstations**: Local development or research workstations with low data processing demands.
|
|
134
|
+
- **Servers**: Scalable server infrastructure for processing large data volumes, integrated with cloud services for scalability.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 🛟 Support
|
|
139
|
+
|
|
140
|
+
For issues and questions:
|
|
141
|
+
|
|
142
|
+
- Create an issue in the repository
|
|
143
|
+
- Review the Deployment Guide for common issues
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 📜 License
|
|
148
|
+
|
|
149
|
+
MIT - see LICENSE
|
|
150
|
+
|
|
151
|
+
---
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# EndoregDB - Professional Data Infrastructure for Clinical Research
|
|
2
|
+
|
|
3
|
+
EndoregDB is a comprehensive database framework designed to manage medical and research-related data for clinical trials. This repository focuses on efficient data processing, automated deployment, security, and reproducibility, offering a flexible setup for local development environments as well as distributed systems. It supports the integration of AI/ML tools and advanced image and report processing.
|
|
4
|
+
|
|
5
|
+
This infrastructure was originally designed for clinical research studies and is optimized for handling large data volumes, including:
|
|
6
|
+
|
|
7
|
+
- Medical reports,
|
|
8
|
+
- Patient imaging and video data,
|
|
9
|
+
- Clinical product and treatment data,
|
|
10
|
+
and more.
|
|
11
|
+
|
|
12
|
+
## 🚀 Key Features
|
|
13
|
+
|
|
14
|
+
### System Architecture
|
|
15
|
+
|
|
16
|
+
- **Modular Design**: Built on scalable and reusable components to simplify integration into various environments.
|
|
17
|
+
- **Multi-System Support**: Manages configurations for local workstations and production servers.
|
|
18
|
+
- **Role-Specific Configuration**: Predefined roles for common use cases:
|
|
19
|
+
- Medical data processing systems
|
|
20
|
+
- AI/ML model deployment
|
|
21
|
+
- Research workstation configuration
|
|
22
|
+
|
|
23
|
+
### Security & Data Management
|
|
24
|
+
|
|
25
|
+
- **Data Encryption**: All sensitive data is encrypted, and privacy policies are enforced.
|
|
26
|
+
- **Impermanence**: Stateless system configuration with persistence for critical data.
|
|
27
|
+
- **Access Control**: Role-based access and identity management integration.
|
|
28
|
+
|
|
29
|
+
### Data and Processing Environment
|
|
30
|
+
|
|
31
|
+
- **Data Processing**: Optimized for processing medical datasets with preprocessing tools.
|
|
32
|
+
- **AI/ML Support**:
|
|
33
|
+
- Integration of machine learning tools for predictive analysis.
|
|
34
|
+
- TensorFlow, PyTorch, and other frameworks supported for model training.
|
|
35
|
+
- **Image/Video Processing**: Support for analyzing patient images and clinical videos.
|
|
36
|
+
|
|
37
|
+
### Development Tools & Infrastructure
|
|
38
|
+
|
|
39
|
+
- **Data Science Toolchains**: Pre-configured environments for data processing, analysis, and visualization.
|
|
40
|
+
- **Monitoring & Logging**: Setup for continuous monitoring and logging to ensure system stability and performance.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🛠 Getting Started
|
|
45
|
+
|
|
46
|
+
### Prerequisites
|
|
47
|
+
|
|
48
|
+
- A Linux-based system (Ubuntu/Debian recommended) or NixOS
|
|
49
|
+
- Hardware with sufficient storage for data processing (at least 1 TB recommended)
|
|
50
|
+
|
|
51
|
+
### Quick Start
|
|
52
|
+
|
|
53
|
+
1. Clone the repository:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
git clone https://github.com/wg-lux/endoreg-db.git
|
|
57
|
+
cd endoreg-db
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
2. Set up your Python environment:
|
|
61
|
+
_TODO_: Explain Devenv / point to other docs
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
direnv allow
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
3. Run tests:
|
|
68
|
+
Call Devenv Script to run tests
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
runtests
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 📁 Repository Structure
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
endoreg-db/
|
|
80
|
+
├── endoreg_db/ # Main Django app for medical data
|
|
81
|
+
│ ├── case_generator/ # Sample case generator
|
|
82
|
+
│ ├── data/ # Medical knowledge base
|
|
83
|
+
│ ├── management/ # Data wrangling operations
|
|
84
|
+
│ ├── models/ # Data models
|
|
85
|
+
│ ├── migrations/ # Database migrations
|
|
86
|
+
│ └── serializers/ # Serializers for data
|
|
87
|
+
├── .gitignore # Git ignore file for unnecessary files
|
|
88
|
+
└── README.md # Project description and setup instructions
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🔒 Security Features
|
|
94
|
+
|
|
95
|
+
- **Data Encryption**: All sensitive patient data is encrypted.
|
|
96
|
+
- **Role-Based Access Control**: Configurable roles for managing access to various parts of the system.
|
|
97
|
+
- **Logging & Auditing**: Comprehensive logging system that tracks user activities and data changes.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🖥️ Supported Systems
|
|
102
|
+
|
|
103
|
+
- **Workstations**: Local development or research workstations with low data processing demands.
|
|
104
|
+
- **Servers**: Scalable server infrastructure for processing large data volumes, integrated with cloud services for scalability.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🛟 Support
|
|
109
|
+
|
|
110
|
+
For issues and questions:
|
|
111
|
+
|
|
112
|
+
- Create an issue in the repository
|
|
113
|
+
- Review the Deployment Guide for common issues
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 📜 License
|
|
118
|
+
|
|
119
|
+
MIT - see LICENSE
|
|
120
|
+
|
|
121
|
+
---
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from endoreg_db.case_generator.utils import get_case_generator
|
|
2
|
+
from endoreg_db.case_generator.lab_sample_factory import LabSampleFactory
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
TEMPLATE_NAME = "pre_default_screening_colonoscopy"
|
|
6
|
+
|
|
7
|
+
cg = get_case_generator(TEMPLATE_NAME)
|
|
8
|
+
lab_factory = LabSampleFactory()
|
|
9
|
+
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
from tqdm import tqdm
|
|
2
|
+
import os
|
|
3
|
+
import json
|
|
4
|
+
import shutil
|
|
5
|
+
import random
|
|
6
|
+
from collections import defaultdict
|
|
7
|
+
|
|
8
|
+
# Define the directory paths
|
|
9
|
+
base_dir = "/run/media/setup-user/8f1cd448-7aef-4eb8-9acb-d05869ea1923"
|
|
10
|
+
jsons_dir = os.path.join(base_dir, "jsons")
|
|
11
|
+
output_json_dir = "./jsons"
|
|
12
|
+
output_image_dir = "./images"
|
|
13
|
+
|
|
14
|
+
# Remove existing output directories
|
|
15
|
+
shutil.rmtree(output_json_dir, ignore_errors=True)
|
|
16
|
+
shutil.rmtree(output_image_dir, ignore_errors=True)
|
|
17
|
+
|
|
18
|
+
# Ensure the output directories exist
|
|
19
|
+
os.makedirs(output_json_dir, exist_ok=True)
|
|
20
|
+
os.makedirs(output_image_dir, exist_ok=True)
|
|
21
|
+
|
|
22
|
+
# Initialize dictionaries to track examples and counts
|
|
23
|
+
key_stats = defaultdict(lambda: defaultdict(int))
|
|
24
|
+
examples = defaultdict(list)
|
|
25
|
+
|
|
26
|
+
def normalize_value(value):
|
|
27
|
+
"""
|
|
28
|
+
Converts complex data types into a hashable string representation.
|
|
29
|
+
"""
|
|
30
|
+
if isinstance(value, (list, dict)):
|
|
31
|
+
return str(value)
|
|
32
|
+
return value
|
|
33
|
+
|
|
34
|
+
def explore_json_file(json_file):
|
|
35
|
+
"""
|
|
36
|
+
Reads a JSON file and updates key_stats and examples for specific keys.
|
|
37
|
+
Also copies the corresponding image if the "path" key exists.
|
|
38
|
+
"""
|
|
39
|
+
try:
|
|
40
|
+
with open(json_file, 'r', encoding='utf-8') as file:
|
|
41
|
+
data = json.loads(file.read())
|
|
42
|
+
except json.JSONDecodeError as e:
|
|
43
|
+
print(f"Error reading {json_file}: {e}")
|
|
44
|
+
return False # Skip processing this file
|
|
45
|
+
|
|
46
|
+
# Update key_stats and gather examples
|
|
47
|
+
extracted_keys = False
|
|
48
|
+
for key, value in data.items():
|
|
49
|
+
if key in ["predictions_smooth", "labels_new"]:
|
|
50
|
+
for sub_key, sub_value in value.items():
|
|
51
|
+
sub_value_normalized = normalize_value(sub_value)
|
|
52
|
+
key_stats[f"{key}.{sub_key}"][sub_value_normalized] += 1
|
|
53
|
+
|
|
54
|
+
# Add example if fewer than 50 have been collected
|
|
55
|
+
if len(examples[f"{key}.{sub_key}"]) < 50:
|
|
56
|
+
examples[f"{key}.{sub_key}"].append(data)
|
|
57
|
+
extracted_keys = True
|
|
58
|
+
else:
|
|
59
|
+
value_normalized = normalize_value(value)
|
|
60
|
+
key_stats[key][value_normalized] += 1
|
|
61
|
+
|
|
62
|
+
# Copy the corresponding image if "path" key exists
|
|
63
|
+
if "path" in data:
|
|
64
|
+
image_path = os.path.join(base_dir, data["path"])
|
|
65
|
+
if os.path.exists(image_path):
|
|
66
|
+
try:
|
|
67
|
+
shutil.copy(image_path, output_image_dir)
|
|
68
|
+
except Exception as e:
|
|
69
|
+
print(f"Error copying image {image_path}: {e}")
|
|
70
|
+
|
|
71
|
+
return extracted_keys
|
|
72
|
+
|
|
73
|
+
def explore_directory(jsons_dir):
|
|
74
|
+
"""
|
|
75
|
+
Iterates through the JSON files in a randomized order and processes them.
|
|
76
|
+
"""
|
|
77
|
+
# Gather all JSON files
|
|
78
|
+
json_files = []
|
|
79
|
+
for root, _, files in os.walk(jsons_dir):
|
|
80
|
+
for file in tqdm(files):
|
|
81
|
+
if file.endswith(".json"):
|
|
82
|
+
json_files.append(os.path.join(root, file))
|
|
83
|
+
|
|
84
|
+
# Randomize the order of JSON files
|
|
85
|
+
random.shuffle(json_files)
|
|
86
|
+
|
|
87
|
+
# Process each JSON file
|
|
88
|
+
for json_file in tqdm(json_files):
|
|
89
|
+
extracted = explore_json_file(json_file)
|
|
90
|
+
|
|
91
|
+
# Copy file if it contained relevant keys
|
|
92
|
+
if extracted:
|
|
93
|
+
shutil.copy(json_file, output_json_dir)
|
|
94
|
+
|
|
95
|
+
# Start the exploration process
|
|
96
|
+
explore_directory(jsons_dir)
|
|
97
|
+
|
|
98
|
+
# Save key_stats and examples to separate summary files
|
|
99
|
+
with open(os.path.join(output_json_dir, "key_stats.json"), "w", encoding="utf-8") as stats_file:
|
|
100
|
+
json.dump({k: dict(v) for k, v in key_stats.items()}, stats_file, indent=4)
|
|
101
|
+
|
|
102
|
+
with open(os.path.join(output_json_dir, "examples.json"), "w", encoding="utf-8") as examples_file:
|
|
103
|
+
json.dump({k: [e["_id"] for e in v] for k, v in examples.items()}, examples_file, indent=4)
|
|
104
|
+
|
|
105
|
+
# Display summary
|
|
106
|
+
print("Exploration complete!")
|
|
107
|
+
print(f"Total keys analyzed: {len(key_stats)}")
|
|
108
|
+
print(f"Total examples collected: {sum(len(v) for v in examples.values())}")
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
# /home/setup-user/dev/endoreg-db/tests/sensitive/raw_videos/001.mp4
|
|
5
|
+
# /home/setup-user/dev/endoreg-db/tests/sensitive/raw_videos/001_short.mp4
|
|
6
|
+
|
|
7
|
+
def copy_first_minute(input_file, output_file):
|
|
8
|
+
"""
|
|
9
|
+
Copies the first minute (60 seconds) of a given MP4 file to a new file.
|
|
10
|
+
|
|
11
|
+
Parameters:
|
|
12
|
+
input_file (str): Path to the input MP4 file.
|
|
13
|
+
output_file (str): Path to the output MP4 file.
|
|
14
|
+
"""
|
|
15
|
+
# Check if the input file exists
|
|
16
|
+
if not os.path.isfile(input_file):
|
|
17
|
+
raise FileNotFoundError(f"Input file '{input_file}' does not exist.")
|
|
18
|
+
|
|
19
|
+
# Construct the ffmpeg command
|
|
20
|
+
command = [
|
|
21
|
+
"ffmpeg",
|
|
22
|
+
"-i", input_file, # Input file
|
|
23
|
+
"-t", "60", # Duration to copy (60 seconds)
|
|
24
|
+
"-c", "copy", # Copy codec (no re-encoding)
|
|
25
|
+
output_file # Output file
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
# Run the command
|
|
30
|
+
subprocess.run(command, check=True)
|
|
31
|
+
print(f"The first minute of '{input_file}' has been saved to '{output_file}'.")
|
|
32
|
+
except subprocess.CalledProcessError as e:
|
|
33
|
+
print(f"Error during file processing: {e}")
|
|
34
|
+
except Exception as e:
|
|
35
|
+
print(f"An unexpected error occurred: {e}")
|
|
36
|
+
|
|
37
|
+
# Example usage
|
|
38
|
+
if __name__ == "__main__":
|
|
39
|
+
# Input and output file paths
|
|
40
|
+
input_path = "input.mp4"
|
|
41
|
+
output_path = "output_first_minute.mp4"
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
copy_first_minute(input_path, output_path)
|
|
45
|
+
except Exception as error:
|
|
46
|
+
print(f"Failed: {error}")
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nodes": {
|
|
3
|
+
"devenv": {
|
|
4
|
+
"locked": {
|
|
5
|
+
"dir": "src/modules",
|
|
6
|
+
"lastModified": 1734605856,
|
|
7
|
+
"owner": "cachix",
|
|
8
|
+
"repo": "devenv",
|
|
9
|
+
"rev": "f81cf7dc4cbfa46de11618af94e5983c5e600d8c",
|
|
10
|
+
"type": "github"
|
|
11
|
+
},
|
|
12
|
+
"original": {
|
|
13
|
+
"dir": "src/modules",
|
|
14
|
+
"owner": "cachix",
|
|
15
|
+
"repo": "devenv",
|
|
16
|
+
"type": "github"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"flake-compat": {
|
|
20
|
+
"flake": false,
|
|
21
|
+
"locked": {
|
|
22
|
+
"lastModified": 1733328505,
|
|
23
|
+
"owner": "edolstra",
|
|
24
|
+
"repo": "flake-compat",
|
|
25
|
+
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
|
26
|
+
"type": "github"
|
|
27
|
+
},
|
|
28
|
+
"original": {
|
|
29
|
+
"owner": "edolstra",
|
|
30
|
+
"repo": "flake-compat",
|
|
31
|
+
"type": "github"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"flake-utils": {
|
|
35
|
+
"inputs": {
|
|
36
|
+
"systems": "systems"
|
|
37
|
+
},
|
|
38
|
+
"locked": {
|
|
39
|
+
"lastModified": 1731533236,
|
|
40
|
+
"owner": "numtide",
|
|
41
|
+
"repo": "flake-utils",
|
|
42
|
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
43
|
+
"type": "github"
|
|
44
|
+
},
|
|
45
|
+
"original": {
|
|
46
|
+
"owner": "numtide",
|
|
47
|
+
"repo": "flake-utils",
|
|
48
|
+
"type": "github"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"gitignore": {
|
|
52
|
+
"inputs": {
|
|
53
|
+
"nixpkgs": [
|
|
54
|
+
"pre-commit-hooks",
|
|
55
|
+
"nixpkgs"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"locked": {
|
|
59
|
+
"lastModified": 1709087332,
|
|
60
|
+
"owner": "hercules-ci",
|
|
61
|
+
"repo": "gitignore.nix",
|
|
62
|
+
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
63
|
+
"type": "github"
|
|
64
|
+
},
|
|
65
|
+
"original": {
|
|
66
|
+
"owner": "hercules-ci",
|
|
67
|
+
"repo": "gitignore.nix",
|
|
68
|
+
"type": "github"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"mk-shell-bin": {
|
|
72
|
+
"locked": {
|
|
73
|
+
"lastModified": 1677004959,
|
|
74
|
+
"owner": "rrbutani",
|
|
75
|
+
"repo": "nix-mk-shell-bin",
|
|
76
|
+
"rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887",
|
|
77
|
+
"type": "github"
|
|
78
|
+
},
|
|
79
|
+
"original": {
|
|
80
|
+
"owner": "rrbutani",
|
|
81
|
+
"repo": "nix-mk-shell-bin",
|
|
82
|
+
"type": "github"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"nix2container": {
|
|
86
|
+
"inputs": {
|
|
87
|
+
"flake-utils": "flake-utils",
|
|
88
|
+
"nixpkgs": [
|
|
89
|
+
"nixpkgs"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"locked": {
|
|
93
|
+
"lastModified": 1730479402,
|
|
94
|
+
"owner": "nlewo",
|
|
95
|
+
"repo": "nix2container",
|
|
96
|
+
"rev": "5fb215a1564baa74ce04ad7f903d94ad6617e17a",
|
|
97
|
+
"type": "github"
|
|
98
|
+
},
|
|
99
|
+
"original": {
|
|
100
|
+
"owner": "nlewo",
|
|
101
|
+
"repo": "nix2container",
|
|
102
|
+
"type": "github"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"nixpkgs": {
|
|
106
|
+
"locked": {
|
|
107
|
+
"lastModified": 1734435836,
|
|
108
|
+
"owner": "NixOS",
|
|
109
|
+
"repo": "nixpkgs",
|
|
110
|
+
"rev": "4989a246d7a390a859852baddb1013f825435cee",
|
|
111
|
+
"type": "github"
|
|
112
|
+
},
|
|
113
|
+
"original": {
|
|
114
|
+
"owner": "NixOS",
|
|
115
|
+
"ref": "nixpkgs-unstable",
|
|
116
|
+
"repo": "nixpkgs",
|
|
117
|
+
"type": "github"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"nixpkgs-stable": {
|
|
121
|
+
"locked": {
|
|
122
|
+
"lastModified": 1734529975,
|
|
123
|
+
"owner": "NixOS",
|
|
124
|
+
"repo": "nixpkgs",
|
|
125
|
+
"rev": "72d11d40b9878a67c38f003c240c2d2e1811e72a",
|
|
126
|
+
"type": "github"
|
|
127
|
+
},
|
|
128
|
+
"original": {
|
|
129
|
+
"owner": "NixOS",
|
|
130
|
+
"ref": "nixos-24.05",
|
|
131
|
+
"repo": "nixpkgs",
|
|
132
|
+
"type": "github"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"pre-commit-hooks": {
|
|
136
|
+
"inputs": {
|
|
137
|
+
"flake-compat": "flake-compat",
|
|
138
|
+
"gitignore": "gitignore",
|
|
139
|
+
"nixpkgs": [
|
|
140
|
+
"nixpkgs"
|
|
141
|
+
],
|
|
142
|
+
"nixpkgs-stable": "nixpkgs-stable"
|
|
143
|
+
},
|
|
144
|
+
"locked": {
|
|
145
|
+
"lastModified": 1734425854,
|
|
146
|
+
"owner": "cachix",
|
|
147
|
+
"repo": "pre-commit-hooks.nix",
|
|
148
|
+
"rev": "0ddd26d0925f618c3a5d85a4fa5eb1e23a09491d",
|
|
149
|
+
"type": "github"
|
|
150
|
+
},
|
|
151
|
+
"original": {
|
|
152
|
+
"owner": "cachix",
|
|
153
|
+
"repo": "pre-commit-hooks.nix",
|
|
154
|
+
"type": "github"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"root": {
|
|
158
|
+
"inputs": {
|
|
159
|
+
"devenv": "devenv",
|
|
160
|
+
"mk-shell-bin": "mk-shell-bin",
|
|
161
|
+
"nix2container": "nix2container",
|
|
162
|
+
"nixpkgs": "nixpkgs",
|
|
163
|
+
"pre-commit-hooks": "pre-commit-hooks"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"systems": {
|
|
167
|
+
"locked": {
|
|
168
|
+
"lastModified": 1681028828,
|
|
169
|
+
"owner": "nix-systems",
|
|
170
|
+
"repo": "default",
|
|
171
|
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
172
|
+
"type": "github"
|
|
173
|
+
},
|
|
174
|
+
"original": {
|
|
175
|
+
"owner": "nix-systems",
|
|
176
|
+
"repo": "default",
|
|
177
|
+
"type": "github"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"root": "root",
|
|
182
|
+
"version": 7
|
|
183
|
+
}
|