endoreg-db 0.3.6__py3-none-any.whl → 0.3.8__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.
- endoreg_db/admin.py +3 -3
- endoreg_db/apps.py +6 -6
- endoreg_db/data/__init__.py +67 -64
- endoreg_db/data/active_model/data.yaml +2 -2
- endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -167
- endoreg_db/data/case_template/rule/01_patient-set-age.yaml +7 -7
- endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +8 -8
- endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +22 -22
- endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/19_create_patient.yaml +16 -16
- endoreg_db/data/case_template/rule_type/base_types.yaml +35 -35
- endoreg_db/data/case_template/rule_value/.init +0 -0
- endoreg_db/data/case_template/rule_value_type/base_types.yaml +58 -58
- endoreg_db/data/case_template/template/base.yaml +7 -7
- endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
- endoreg_db/data/case_template/tmp/_rule_value +13 -13
- endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
- endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
- endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
- endoreg_db/data/center/data.yaml +59 -59
- endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
- endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
- endoreg_db/data/disease/cardiovascular.yaml +37 -37
- endoreg_db/data/disease/hepatology.yaml +4 -4
- endoreg_db/data/disease/misc.yaml +5 -5
- endoreg_db/data/disease/renal.yaml +4 -4
- endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
- endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
- endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
- endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
- endoreg_db/data/distribution/date/patient.yaml +6 -6
- endoreg_db/data/distribution/multiple_categorical/.init +0 -0
- endoreg_db/data/distribution/numeric/.init +0 -0
- endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
- endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
- endoreg_db/data/endoscope_type/data.yaml +10 -10
- endoreg_db/data/endoscopy_processor/data.yaml +45 -45
- endoreg_db/data/event/cardiology.yaml +27 -27
- endoreg_db/data/event/neurology.yaml +13 -13
- endoreg_db/data/event/surgery.yaml +12 -12
- endoreg_db/data/event/thrombembolism.yaml +19 -19
- endoreg_db/data/examination/examinations/data.yaml +65 -65
- endoreg_db/data/examination/time/data.yaml +47 -47
- endoreg_db/data/examination/time-type/data.yaml +7 -7
- endoreg_db/data/examination/type/data.yaml +5 -5
- endoreg_db/data/gender/data.yaml +18 -18
- endoreg_db/data/information_source/data.yaml +30 -30
- endoreg_db/data/information_source/medication.yaml +5 -5
- endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
- endoreg_db/data/lab_value/coagulation.yaml +48 -48
- endoreg_db/data/lab_value/electrolytes.yaml +189 -189
- endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
- endoreg_db/data/lab_value/hematology.yaml +169 -169
- endoreg_db/data/lab_value/hormones.yaml +53 -53
- endoreg_db/data/lab_value/lipids.yaml +44 -44
- endoreg_db/data/lab_value/misc.yaml +30 -30
- endoreg_db/data/lab_value/renal_function.yaml +10 -10
- endoreg_db/data/label/label/data.yaml +62 -62
- endoreg_db/data/label/label-set/data.yaml +17 -17
- endoreg_db/data/label/label-type/data.yaml +6 -6
- endoreg_db/data/medication/anticoagulation.yaml +64 -64
- endoreg_db/data/medication/tah.yaml +69 -69
- endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
- endoreg_db/data/medication_indication_type/data.yaml +10 -10
- endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
- endoreg_db/data/medication_intake_time/base.yaml +30 -30
- endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
- endoreg_db/data/medication_schedule/ass.yaml +12 -12
- endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
- endoreg_db/data/model_type/data.yaml +6 -6
- endoreg_db/data/network_device/data.yaml +17 -0
- endoreg_db/data/network_device_type/data.yaml +8 -0
- endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
- endoreg_db/data/pdf_type/data.yaml +28 -28
- endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
- endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
- endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
- endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
- endoreg_db/data/profession/data.yaml +70 -70
- endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
- endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
- endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
- endoreg_db/data/unit/concentration.yaml +92 -92
- endoreg_db/data/unit/data.yaml +17 -17
- endoreg_db/data/unit/length.yaml +30 -30
- endoreg_db/data/unit/misc.yaml +19 -19
- endoreg_db/data/unit/rate.yaml +5 -5
- endoreg_db/data/unit/time.yaml +12 -12
- endoreg_db/data/unit/volume.yaml +35 -35
- endoreg_db/data/unit/weight.yaml +37 -37
- endoreg_db/data/waste/data.yaml +11 -11
- endoreg_db/forms/__init__.py +2 -2
- endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
- endoreg_db/forms/settings/__init__.py +8 -8
- endoreg_db/forms/unit.py +5 -5
- endoreg_db/management/commands/_load_model_template.py +40 -40
- endoreg_db/management/commands/delete_all.py +18 -18
- endoreg_db/management/commands/delete_legacy_images.py +19 -19
- endoreg_db/management/commands/delete_legacy_videos.py +16 -16
- endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
- endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
- endoreg_db/management/commands/fix_auth_permission.py +20 -20
- endoreg_db/management/commands/import_legacy_images.py +94 -94
- endoreg_db/management/commands/import_legacy_videos.py +76 -76
- endoreg_db/management/commands/load_active_model_data.py +44 -44
- endoreg_db/management/commands/load_ai_model_data.py +44 -44
- endoreg_db/management/commands/load_base_db_data.py +132 -128
- endoreg_db/management/commands/load_center_data.py +42 -42
- endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
- endoreg_db/management/commands/load_disease_classification_data.py +40 -40
- endoreg_db/management/commands/load_disease_data.py +39 -39
- endoreg_db/management/commands/load_distribution_data.py +65 -65
- endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
- endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
- endoreg_db/management/commands/load_event_data.py +40 -40
- endoreg_db/management/commands/load_examination_data.py +74 -74
- endoreg_db/management/commands/load_g_play_data.py +112 -112
- endoreg_db/management/commands/load_gender_data.py +43 -43
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
- endoreg_db/management/commands/load_information_source.py +44 -44
- endoreg_db/management/commands/load_lab_value_data.py +49 -49
- endoreg_db/management/commands/load_label_data.py +66 -66
- endoreg_db/management/commands/load_medication_data.py +40 -40
- endoreg_db/management/commands/load_medication_indication_data.py +62 -62
- endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
- endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
- endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
- endoreg_db/management/commands/load_network_data.py +49 -0
- endoreg_db/management/commands/load_pdf_type_data.py +60 -60
- endoreg_db/management/commands/load_profession_data.py +43 -43
- endoreg_db/management/commands/load_report_reader_flag.py +45 -45
- endoreg_db/management/commands/load_unit_data.py +45 -45
- endoreg_db/management/commands/load_user_groups.py +28 -28
- endoreg_db/management/commands/register_ai_model.py +65 -65
- endoreg_db/management/commands/reset_celery_schedule.py +9 -9
- endoreg_db/migrations/0001_initial.py +582 -582
- endoreg_db/migrations/0002_rawvideofile.py +26 -26
- endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
- endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
- endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
- endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
- endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
- endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
- endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
- endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
- endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
- endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
- endoreg_db/migrations/0013_rawpdffile.py +31 -31
- endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
- endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
- endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
- endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
- endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
- endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
- endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
- endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
- endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
- endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
- endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
- endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
- endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
- endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
- endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
- endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
- endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
- endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
- endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
- endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
- endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
- endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
- endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
- endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
- endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
- endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
- endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
- endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
- endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
- endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
- endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
- endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
- endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
- endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
- endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
- endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
- endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
- endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
- endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
- endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
- endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
- endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
- endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
- endoreg_db/migrations/0068_networkdevicetype_networkdevicetypemanager_and_more.py +57 -0
- endoreg_db/models/__init__.py +75 -74
- endoreg_db/models/ai_model/__init__.py +3 -3
- endoreg_db/models/ai_model/active_model.py +9 -9
- endoreg_db/models/ai_model/model_meta.py +24 -24
- endoreg_db/models/ai_model/model_type.py +25 -25
- endoreg_db/models/ai_model/utils.py +8 -8
- endoreg_db/models/annotation/__init__.py +1 -1
- endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
- endoreg_db/models/annotation/image_classification.py +26 -26
- endoreg_db/models/case_template/__init__.py +5 -5
- endoreg_db/models/case_template/case_template.py +81 -81
- endoreg_db/models/case_template/case_template_rule.py +276 -276
- endoreg_db/models/case_template/case_template_rule_value.py +73 -73
- endoreg_db/models/case_template/case_template_type.py +27 -27
- endoreg_db/models/center/__init__.py +4 -4
- endoreg_db/models/center/center.py +24 -24
- endoreg_db/models/center/center_product.py +33 -33
- endoreg_db/models/center/center_resource.py +18 -18
- endoreg_db/models/center/center_waste.py +10 -10
- endoreg_db/models/data_file/__init__.py +5 -5
- endoreg_db/models/data_file/base_classes/__init__.py +2 -2
- endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
- endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
- endoreg_db/models/data_file/frame.py +45 -45
- endoreg_db/models/data_file/import_classes/__init__.py +31 -31
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
- endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
- endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
- endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
- endoreg_db/models/data_file/metadata/__init__.py +3 -3
- endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
- endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
- endoreg_db/models/data_file/metadata/video_meta.py +132 -132
- endoreg_db/models/data_file/report_file.py +89 -89
- endoreg_db/models/data_file/video/__init__.py +6 -6
- endoreg_db/models/data_file/video/import_meta.py +25 -25
- endoreg_db/models/data_file/video/video.py +25 -25
- endoreg_db/models/data_file/video_segment.py +107 -107
- endoreg_db/models/disease.py +55 -55
- endoreg_db/models/emission/emission_factor.py +19 -19
- endoreg_db/models/event.py +21 -21
- endoreg_db/models/examination/__init__.py +3 -3
- endoreg_db/models/examination/examination.py +26 -26
- endoreg_db/models/examination/examination_time.py +27 -27
- endoreg_db/models/examination/examination_time_type.py +24 -24
- endoreg_db/models/examination/examination_type.py +18 -18
- endoreg_db/models/hardware/__init__.py +1 -1
- endoreg_db/models/hardware/endoscope.py +44 -44
- endoreg_db/models/hardware/endoscopy_processor.py +143 -143
- endoreg_db/models/information_source.py +29 -29
- endoreg_db/models/label/label.py +84 -84
- endoreg_db/models/laboratory/lab_value.py +102 -102
- endoreg_db/models/legacy_data/__init__.py +3 -3
- endoreg_db/models/legacy_data/image.py +34 -34
- endoreg_db/models/medication/medication.py +148 -148
- endoreg_db/models/network/__init__.py +2 -0
- endoreg_db/models/network/network_device.py +27 -0
- endoreg_db/models/network/network_device_type.py +23 -0
- endoreg_db/models/other/__init__.py +4 -4
- endoreg_db/models/other/distribution.py +215 -215
- endoreg_db/models/other/material.py +16 -16
- endoreg_db/models/other/resource.py +17 -17
- endoreg_db/models/other/transport_route.py +20 -20
- endoreg_db/models/other/waste.py +20 -20
- endoreg_db/models/patient_examination/__init__.py +35 -35
- endoreg_db/models/permissions/__init__.py +44 -44
- endoreg_db/models/persons/__init__.py +6 -6
- endoreg_db/models/persons/examiner/__init__.py +1 -1
- endoreg_db/models/persons/examiner/examiner.py +15 -15
- endoreg_db/models/persons/examiner/examiner_type.py +1 -1
- endoreg_db/models/persons/first_name.py +17 -17
- endoreg_db/models/persons/gender.py +22 -22
- endoreg_db/models/persons/last_name.py +19 -19
- endoreg_db/models/persons/patient/__init__.py +7 -7
- endoreg_db/models/persons/patient/case/case.py +30 -30
- endoreg_db/models/persons/patient/patient.py +216 -216
- endoreg_db/models/persons/patient/patient_disease.py +16 -16
- endoreg_db/models/persons/patient/patient_event.py +22 -22
- endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
- endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
- endoreg_db/models/persons/patient/patient_medication.py +43 -43
- endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
- endoreg_db/models/persons/person.py +31 -31
- endoreg_db/models/persons/portal_user_information.py +27 -27
- endoreg_db/models/prediction/__init__.py +1 -1
- endoreg_db/models/prediction/image_classification.py +37 -37
- endoreg_db/models/prediction/video_prediction_meta.py +244 -244
- endoreg_db/models/product/__init__.py +4 -4
- endoreg_db/models/product/product.py +97 -97
- endoreg_db/models/product/product_group.py +19 -19
- endoreg_db/models/product/product_material.py +24 -24
- endoreg_db/models/product/product_weight.py +26 -26
- endoreg_db/models/product/reference_product.py +99 -99
- endoreg_db/models/questionnaires/__init__.py +114 -114
- endoreg_db/models/quiz/__init__.py +1 -1
- endoreg_db/models/quiz/quiz_answer.py +41 -41
- endoreg_db/models/quiz/quiz_question.py +54 -54
- endoreg_db/models/report_reader/__init__.py +1 -1
- endoreg_db/models/report_reader/report_reader_config.py +53 -53
- endoreg_db/models/report_reader/report_reader_flag.py +19 -19
- endoreg_db/models/rules/__init__.py +4 -4
- endoreg_db/models/rules/rule.py +23 -23
- endoreg_db/models/rules/rule_applicator.py +224 -224
- endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
- endoreg_db/models/rules/rule_type.py +21 -21
- endoreg_db/models/rules/ruleset.py +19 -19
- endoreg_db/models/unit.py +21 -21
- endoreg_db/queries/__init__.py +4 -4
- endoreg_db/queries/annotations/__init__.py +2 -2
- endoreg_db/queries/annotations/legacy.py +159 -159
- endoreg_db/queries/get/__init__.py +5 -5
- endoreg_db/queries/get/center.py +42 -42
- endoreg_db/queries/get/model.py +13 -13
- endoreg_db/queries/get/patient.py +14 -14
- endoreg_db/queries/get/patient_examination.py +20 -20
- endoreg_db/queries/get/report_file.py +33 -33
- endoreg_db/queries/get/video.py +31 -31
- endoreg_db/serializers/__init__.py +9 -9
- endoreg_db/serializers/ai_model.py +18 -18
- endoreg_db/serializers/annotation.py +17 -17
- endoreg_db/serializers/center.py +11 -11
- endoreg_db/serializers/examination.py +32 -32
- endoreg_db/serializers/frame.py +13 -13
- endoreg_db/serializers/hardware.py +20 -20
- endoreg_db/serializers/label.py +22 -22
- endoreg_db/serializers/patient.py +10 -10
- endoreg_db/serializers/prediction.py +15 -15
- endoreg_db/serializers/report_file.py +7 -7
- endoreg_db/serializers/video.py +27 -27
- endoreg_db/tests.py +3 -3
- endoreg_db/utils/cropping.py +28 -28
- endoreg_db/utils/dataloader.py +92 -92
- endoreg_db/utils/file_operations.py +30 -30
- endoreg_db/utils/hashs.py +33 -33
- endoreg_db/utils/legacy_ocr.py +201 -201
- endoreg_db/utils/ocr.py +197 -197
- endoreg_db/utils/uuid.py +4 -4
- endoreg_db/utils/video_metadata.py +87 -87
- endoreg_db/views.py +3 -3
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/LICENSE +674 -674
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/METADATA +3 -1
- endoreg_db-0.3.8.dist-info/RECORD +367 -0
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/WHEEL +1 -1
- endoreg_db-0.3.6.dist-info/RECORD +0 -357
endoreg_db/utils/dataloader.py
CHANGED
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import yaml
|
|
3
|
-
from django.core.exceptions import ObjectDoesNotExist
|
|
4
|
-
|
|
5
|
-
def load_model_data_from_yaml(command, model_name, metadata, verbose):
|
|
6
|
-
"""
|
|
7
|
-
Load model data from YAML files.
|
|
8
|
-
|
|
9
|
-
Args:
|
|
10
|
-
command: Command object for stdout writing.
|
|
11
|
-
model_name: Name of the model being loaded.
|
|
12
|
-
metadata: Metadata including directory and foreign key information.
|
|
13
|
-
verbose: Boolean indicating whether to print verbose output.
|
|
14
|
-
"""
|
|
15
|
-
if verbose:
|
|
16
|
-
command.stdout.write(f"Start loading {model_name}")
|
|
17
|
-
model = metadata["model"]
|
|
18
|
-
dir_path = metadata["dir"]
|
|
19
|
-
foreign_keys = metadata["foreign_keys"]
|
|
20
|
-
foreign_key_models = metadata["foreign_key_models"]
|
|
21
|
-
|
|
22
|
-
_files = [f for f in os.listdir(dir_path) if f.endswith('.yaml')]
|
|
23
|
-
# sort
|
|
24
|
-
_files.sort()
|
|
25
|
-
for file in _files:
|
|
26
|
-
with open(os.path.join(dir_path, file), 'r') as file:
|
|
27
|
-
yaml_data = yaml.safe_load(file)
|
|
28
|
-
|
|
29
|
-
load_data_with_foreign_keys(command, model, yaml_data, foreign_keys, foreign_key_models, verbose)
|
|
30
|
-
|
|
31
|
-
def load_data_with_foreign_keys(command, model, yaml_data, foreign_keys, foreign_key_models, verbose):
|
|
32
|
-
"""
|
|
33
|
-
Load data handling foreign keys and many-to-many relationships.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
command: Command object for stdout writing.
|
|
37
|
-
model: The Django model for the data.
|
|
38
|
-
yaml_data: Data loaded from YAML.
|
|
39
|
-
foreign_keys: List of foreign keys.
|
|
40
|
-
foreign_key_models: Corresponding models for the foreign keys.
|
|
41
|
-
verbose: Boolean indicating whether to print verbose output.
|
|
42
|
-
"""
|
|
43
|
-
for entry in yaml_data:
|
|
44
|
-
fields = entry.get('fields', {})
|
|
45
|
-
name = fields.pop('name', None)
|
|
46
|
-
m2m_relationships = {} # Store many-to-many relationships
|
|
47
|
-
print(entry)
|
|
48
|
-
|
|
49
|
-
# Handle foreign keys and many-to-many relationships
|
|
50
|
-
for fk_field, fk_model in zip(foreign_keys, foreign_key_models):
|
|
51
|
-
print(fk_field, fk_model)
|
|
52
|
-
target_keys = fields.pop(fk_field, None)
|
|
53
|
-
|
|
54
|
-
# Ensure the foreign key exists
|
|
55
|
-
if target_keys is None:
|
|
56
|
-
if verbose:
|
|
57
|
-
command.stdout.write(command.style.WARNING(f"Foreign key {fk_field} not found in fields"))
|
|
58
|
-
continue # Skip if no foreign key provided
|
|
59
|
-
|
|
60
|
-
# Process many-to-many fields or foreign keys
|
|
61
|
-
if isinstance(target_keys, list): # Assume many-to-many relationship
|
|
62
|
-
related_objects = []
|
|
63
|
-
for key in target_keys:
|
|
64
|
-
obj, created = fk_model.objects.get_or_create(name=key)
|
|
65
|
-
if created and verbose:
|
|
66
|
-
command.stdout.write(command.style.SUCCESS(f"Created {fk_model.__name__} {key}"))
|
|
67
|
-
related_objects.append(obj)
|
|
68
|
-
m2m_relationships[fk_field] = related_objects
|
|
69
|
-
else: # Single foreign key relationship
|
|
70
|
-
try:
|
|
71
|
-
if model == "endoreg_db.case_template_rule":
|
|
72
|
-
print(fk_model, target_keys)
|
|
73
|
-
obj = fk_model.objects.get_by_natural_key(target_keys)
|
|
74
|
-
except ObjectDoesNotExist:
|
|
75
|
-
if verbose:
|
|
76
|
-
command.stdout.write(command.style.WARNING(f"{fk_model.__name__} with key {target_keys} not found"))
|
|
77
|
-
continue
|
|
78
|
-
fields[fk_field] = obj
|
|
79
|
-
|
|
80
|
-
# Create or update the main object
|
|
81
|
-
if name is None:
|
|
82
|
-
obj, created = model.objects.get_or_create(**fields)
|
|
83
|
-
else:
|
|
84
|
-
obj, created = model.objects.update_or_create(defaults=fields, name=name)
|
|
85
|
-
if created and verbose:
|
|
86
|
-
command.stdout.write(command.style.SUCCESS(f'Created {model.__name__} {name}'))
|
|
87
|
-
elif verbose:
|
|
88
|
-
command.stdout.write(command.style.WARNING(f'Skipped {model.__name__} {name}, already exists'))
|
|
89
|
-
|
|
90
|
-
# Set many-to-many relationships
|
|
91
|
-
for field_name, related_objs in m2m_relationships.items():
|
|
92
|
-
getattr(obj, field_name).set(related_objs)
|
|
1
|
+
import os
|
|
2
|
+
import yaml
|
|
3
|
+
from django.core.exceptions import ObjectDoesNotExist
|
|
4
|
+
|
|
5
|
+
def load_model_data_from_yaml(command, model_name, metadata, verbose):
|
|
6
|
+
"""
|
|
7
|
+
Load model data from YAML files.
|
|
8
|
+
|
|
9
|
+
Args:
|
|
10
|
+
command: Command object for stdout writing.
|
|
11
|
+
model_name: Name of the model being loaded.
|
|
12
|
+
metadata: Metadata including directory and foreign key information.
|
|
13
|
+
verbose: Boolean indicating whether to print verbose output.
|
|
14
|
+
"""
|
|
15
|
+
if verbose:
|
|
16
|
+
command.stdout.write(f"Start loading {model_name}")
|
|
17
|
+
model = metadata["model"]
|
|
18
|
+
dir_path = metadata["dir"]
|
|
19
|
+
foreign_keys = metadata["foreign_keys"]
|
|
20
|
+
foreign_key_models = metadata["foreign_key_models"]
|
|
21
|
+
|
|
22
|
+
_files = [f for f in os.listdir(dir_path) if f.endswith('.yaml')]
|
|
23
|
+
# sort
|
|
24
|
+
_files.sort()
|
|
25
|
+
for file in _files:
|
|
26
|
+
with open(os.path.join(dir_path, file), 'r') as file:
|
|
27
|
+
yaml_data = yaml.safe_load(file)
|
|
28
|
+
|
|
29
|
+
load_data_with_foreign_keys(command, model, yaml_data, foreign_keys, foreign_key_models, verbose)
|
|
30
|
+
|
|
31
|
+
def load_data_with_foreign_keys(command, model, yaml_data, foreign_keys, foreign_key_models, verbose):
|
|
32
|
+
"""
|
|
33
|
+
Load data handling foreign keys and many-to-many relationships.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
command: Command object for stdout writing.
|
|
37
|
+
model: The Django model for the data.
|
|
38
|
+
yaml_data: Data loaded from YAML.
|
|
39
|
+
foreign_keys: List of foreign keys.
|
|
40
|
+
foreign_key_models: Corresponding models for the foreign keys.
|
|
41
|
+
verbose: Boolean indicating whether to print verbose output.
|
|
42
|
+
"""
|
|
43
|
+
for entry in yaml_data:
|
|
44
|
+
fields = entry.get('fields', {})
|
|
45
|
+
name = fields.pop('name', None)
|
|
46
|
+
m2m_relationships = {} # Store many-to-many relationships
|
|
47
|
+
print(entry)
|
|
48
|
+
|
|
49
|
+
# Handle foreign keys and many-to-many relationships
|
|
50
|
+
for fk_field, fk_model in zip(foreign_keys, foreign_key_models):
|
|
51
|
+
print(fk_field, fk_model)
|
|
52
|
+
target_keys = fields.pop(fk_field, None)
|
|
53
|
+
|
|
54
|
+
# Ensure the foreign key exists
|
|
55
|
+
if target_keys is None:
|
|
56
|
+
if verbose:
|
|
57
|
+
command.stdout.write(command.style.WARNING(f"Foreign key {fk_field} not found in fields"))
|
|
58
|
+
continue # Skip if no foreign key provided
|
|
59
|
+
|
|
60
|
+
# Process many-to-many fields or foreign keys
|
|
61
|
+
if isinstance(target_keys, list): # Assume many-to-many relationship
|
|
62
|
+
related_objects = []
|
|
63
|
+
for key in target_keys:
|
|
64
|
+
obj, created = fk_model.objects.get_or_create(name=key)
|
|
65
|
+
if created and verbose:
|
|
66
|
+
command.stdout.write(command.style.SUCCESS(f"Created {fk_model.__name__} {key}"))
|
|
67
|
+
related_objects.append(obj)
|
|
68
|
+
m2m_relationships[fk_field] = related_objects
|
|
69
|
+
else: # Single foreign key relationship
|
|
70
|
+
try:
|
|
71
|
+
if model == "endoreg_db.case_template_rule":
|
|
72
|
+
print(fk_model, target_keys)
|
|
73
|
+
obj = fk_model.objects.get_by_natural_key(target_keys)
|
|
74
|
+
except ObjectDoesNotExist:
|
|
75
|
+
if verbose:
|
|
76
|
+
command.stdout.write(command.style.WARNING(f"{fk_model.__name__} with key {target_keys} not found"))
|
|
77
|
+
continue
|
|
78
|
+
fields[fk_field] = obj
|
|
79
|
+
|
|
80
|
+
# Create or update the main object
|
|
81
|
+
if name is None:
|
|
82
|
+
obj, created = model.objects.get_or_create(**fields)
|
|
83
|
+
else:
|
|
84
|
+
obj, created = model.objects.update_or_create(defaults=fields, name=name)
|
|
85
|
+
if created and verbose:
|
|
86
|
+
command.stdout.write(command.style.SUCCESS(f'Created {model.__name__} {name}'))
|
|
87
|
+
elif verbose:
|
|
88
|
+
command.stdout.write(command.style.WARNING(f'Skipped {model.__name__} {name}, already exists'))
|
|
89
|
+
|
|
90
|
+
# Set many-to-many relationships
|
|
91
|
+
for field_name, related_objs in m2m_relationships.items():
|
|
92
|
+
getattr(obj, field_name).set(related_objs)
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import shutil
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
from endoreg_db.utils.uuid import get_uuid
|
|
4
|
-
|
|
5
|
-
def get_uuid_filename(file:Path) -> tuple[str, str]:
|
|
6
|
-
"""
|
|
7
|
-
Returns a new filename with a uuid
|
|
8
|
-
"""
|
|
9
|
-
# Get the file extension
|
|
10
|
-
file_extension = file.suffix
|
|
11
|
-
# Generate a new file name
|
|
12
|
-
uuid = get_uuid()
|
|
13
|
-
new_file_name = f"{uuid}{file_extension}"
|
|
14
|
-
return new_file_name, uuid
|
|
15
|
-
|
|
16
|
-
def rename_file_uuid(old_file:Path):
|
|
17
|
-
"""
|
|
18
|
-
Rename a file by assigning a uuid while preserving file extension. Returns new filepath and uuid
|
|
19
|
-
"""
|
|
20
|
-
# Get the file extension
|
|
21
|
-
file_extension = old_file.suffix
|
|
22
|
-
# Generate a new file name
|
|
23
|
-
uuid = get_uuid()
|
|
24
|
-
new_file_name = f"{uuid}{file_extension}"
|
|
25
|
-
|
|
26
|
-
# Rename the file
|
|
27
|
-
new_file = old_file.with_name(new_file_name)
|
|
28
|
-
shutil.move(old_file.resolve().as_posix(), new_file.resolve().as_posix())
|
|
29
|
-
|
|
30
|
-
return new_file, uuid
|
|
1
|
+
import shutil
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from endoreg_db.utils.uuid import get_uuid
|
|
4
|
+
|
|
5
|
+
def get_uuid_filename(file:Path) -> tuple[str, str]:
|
|
6
|
+
"""
|
|
7
|
+
Returns a new filename with a uuid
|
|
8
|
+
"""
|
|
9
|
+
# Get the file extension
|
|
10
|
+
file_extension = file.suffix
|
|
11
|
+
# Generate a new file name
|
|
12
|
+
uuid = get_uuid()
|
|
13
|
+
new_file_name = f"{uuid}{file_extension}"
|
|
14
|
+
return new_file_name, uuid
|
|
15
|
+
|
|
16
|
+
def rename_file_uuid(old_file:Path):
|
|
17
|
+
"""
|
|
18
|
+
Rename a file by assigning a uuid while preserving file extension. Returns new filepath and uuid
|
|
19
|
+
"""
|
|
20
|
+
# Get the file extension
|
|
21
|
+
file_extension = old_file.suffix
|
|
22
|
+
# Generate a new file name
|
|
23
|
+
uuid = get_uuid()
|
|
24
|
+
new_file_name = f"{uuid}{file_extension}"
|
|
25
|
+
|
|
26
|
+
# Rename the file
|
|
27
|
+
new_file = old_file.with_name(new_file_name)
|
|
28
|
+
shutil.move(old_file.resolve().as_posix(), new_file.resolve().as_posix())
|
|
29
|
+
|
|
30
|
+
return new_file, uuid
|
endoreg_db/utils/hashs.py
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import hashlib
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
def get_video_hash(video_path):
|
|
5
|
-
"""
|
|
6
|
-
Get the hash of a video file.
|
|
7
|
-
"""
|
|
8
|
-
# Open the video file in read-binary mode:
|
|
9
|
-
with open(video_path, 'rb') as f:
|
|
10
|
-
# Create the hash object, passing in the video contents for hashing:
|
|
11
|
-
hash_object = hashlib.sha256(f.read())
|
|
12
|
-
# Get the hexadecimal representation of the hash
|
|
13
|
-
video_hash = hash_object.hexdigest()
|
|
14
|
-
assert len(video_hash) <= 255, "Hash length exceeds 255 characters"
|
|
15
|
-
|
|
16
|
-
return video_hash
|
|
17
|
-
|
|
18
|
-
def get_pdf_hash(pdf_path:Path):
|
|
19
|
-
"""
|
|
20
|
-
Get the hash of a pdf file.
|
|
21
|
-
"""
|
|
22
|
-
pdf_hash = None
|
|
23
|
-
|
|
24
|
-
# Open the file in binary mode and read its contents
|
|
25
|
-
with open(pdf_path, 'rb') as f:
|
|
26
|
-
pdf_contents = f.read()
|
|
27
|
-
# Create a hash object using SHA-256 algorithm
|
|
28
|
-
|
|
29
|
-
hash_object = hashlib.sha256(pdf_contents, usedforsecurity=False)
|
|
30
|
-
# Get the hexadecimal representation of the hash
|
|
31
|
-
pdf_hash = hash_object.hexdigest()
|
|
32
|
-
assert len(pdf_hash) <= 255, "Hash length exceeds 255 characters"
|
|
33
|
-
|
|
1
|
+
import hashlib
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
def get_video_hash(video_path):
|
|
5
|
+
"""
|
|
6
|
+
Get the hash of a video file.
|
|
7
|
+
"""
|
|
8
|
+
# Open the video file in read-binary mode:
|
|
9
|
+
with open(video_path, 'rb') as f:
|
|
10
|
+
# Create the hash object, passing in the video contents for hashing:
|
|
11
|
+
hash_object = hashlib.sha256(f.read())
|
|
12
|
+
# Get the hexadecimal representation of the hash
|
|
13
|
+
video_hash = hash_object.hexdigest()
|
|
14
|
+
assert len(video_hash) <= 255, "Hash length exceeds 255 characters"
|
|
15
|
+
|
|
16
|
+
return video_hash
|
|
17
|
+
|
|
18
|
+
def get_pdf_hash(pdf_path:Path):
|
|
19
|
+
"""
|
|
20
|
+
Get the hash of a pdf file.
|
|
21
|
+
"""
|
|
22
|
+
pdf_hash = None
|
|
23
|
+
|
|
24
|
+
# Open the file in binary mode and read its contents
|
|
25
|
+
with open(pdf_path, 'rb') as f:
|
|
26
|
+
pdf_contents = f.read()
|
|
27
|
+
# Create a hash object using SHA-256 algorithm
|
|
28
|
+
|
|
29
|
+
hash_object = hashlib.sha256(pdf_contents, usedforsecurity=False)
|
|
30
|
+
# Get the hexadecimal representation of the hash
|
|
31
|
+
pdf_hash = hash_object.hexdigest()
|
|
32
|
+
assert len(pdf_hash) <= 255, "Hash length exceeds 255 characters"
|
|
33
|
+
|
|
34
34
|
return pdf_hash
|