endoreg-db 0.8.9.32__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/__init__.py +0 -0
- endoreg_db/_version.py +34 -0
- endoreg_db/admin.py +97 -0
- endoreg_db/api/serializers/finding_descriptions.py +0 -0
- endoreg_db/api/views/finding_descriptions.py +0 -0
- endoreg_db/api_urls.py +4 -0
- endoreg_db/apps.py +17 -0
- endoreg_db/assets/dummy_model.ckpt +1 -0
- endoreg_db/authz/auth.py +78 -0
- endoreg_db/authz/backends.py +168 -0
- endoreg_db/authz/management/commands/list_routes.py +20 -0
- endoreg_db/authz/middleware.py +84 -0
- endoreg_db/authz/permissions.py +138 -0
- endoreg_db/authz/policy.py +224 -0
- endoreg_db/authz/settings.py +64 -0
- endoreg_db/authz/views_auth.py +70 -0
- endoreg_db/codemods/readme.md +88 -0
- endoreg_db/codemods/rename_datetime_fields.py +99 -0
- endoreg_db/config/__init__.py +0 -0
- endoreg_db/config/env.py +106 -0
- endoreg_db/config/settings/__init__.py +6 -0
- endoreg_db/config/settings/base.py +148 -0
- endoreg_db/config/settings/case_gen.py +32 -0
- endoreg_db/config/settings/dev.py +108 -0
- endoreg_db/config/settings/keycloak.py +177 -0
- endoreg_db/config/settings/prod.py +66 -0
- endoreg_db/config/settings/test.py +72 -0
- endoreg_db/data/__init__.py +135 -0
- endoreg_db/data/ai_model/data.yaml +7 -0
- endoreg_db/data/ai_model_label/label/data.yaml +88 -0
- endoreg_db/data/ai_model_label/label/polyp_classification.yaml +52 -0
- endoreg_db/data/ai_model_label/label-set/data.yaml +40 -0
- endoreg_db/data/ai_model_label/label-set/polyp_classifications.yaml +25 -0
- endoreg_db/data/ai_model_label/label-type/data.yaml +7 -0
- endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +27 -0
- endoreg_db/data/ai_model_type/data.yaml +7 -0
- endoreg_db/data/ai_model_video_segmentation_label/base_segmentation.yaml +176 -0
- endoreg_db/data/ai_model_video_segmentation_labelset/data.yaml +20 -0
- endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -0
- endoreg_db/data/case_template/rule/01_patient-set-age.yaml +8 -0
- endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +9 -0
- endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +23 -0
- endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +19 -0
- endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +19 -0
- endoreg_db/data/case_template/rule/19_create_patient.yaml +17 -0
- endoreg_db/data/case_template/rule_type/base_types.yaml +35 -0
- endoreg_db/data/case_template/rule_value/.init +0 -0
- endoreg_db/data/case_template/rule_value_type/base_types.yaml +59 -0
- endoreg_db/data/case_template/template/base.yaml +8 -0
- endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +3 -0
- endoreg_db/data/case_template/tmp/_rule_value +13 -0
- endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -0
- endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +10 -0
- endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +7 -0
- endoreg_db/data/center/data.yaml +99 -0
- endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -0
- endoreg_db/data/center_shift/ukw.yaml +9 -0
- endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -0
- endoreg_db/data/contraindication/bleeding.yaml +11 -0
- endoreg_db/data/db_summary.csv +58 -0
- endoreg_db/data/db_summary.xlsx +0 -0
- endoreg_db/data/disease/cardiovascular.yaml +37 -0
- endoreg_db/data/disease/hepatology.yaml +5 -0
- endoreg_db/data/disease/misc.yaml +5 -0
- endoreg_db/data/disease/renal.yaml +5 -0
- endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +6 -0
- endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +6 -0
- endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +41 -0
- endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +20 -0
- endoreg_db/data/distribution/date/patient.yaml +7 -0
- endoreg_db/data/distribution/multiple_categorical/.init +0 -0
- endoreg_db/data/distribution/numeric/data.yaml +14 -0
- endoreg_db/data/distribution/single_categorical/patient.yaml +7 -0
- endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -0
- endoreg_db/data/endoscope/data.yaml +93 -0
- endoreg_db/data/endoscope_type/data.yaml +11 -0
- endoreg_db/data/endoscopy_processor/data.yaml +50 -0
- endoreg_db/data/event/cardiology.yaml +15 -0
- endoreg_db/data/event/neurology.yaml +14 -0
- endoreg_db/data/event/surgery.yaml +13 -0
- endoreg_db/data/event/thrombembolism.yaml +20 -0
- endoreg_db/data/event_classification/data.yaml +4 -0
- endoreg_db/data/event_classification_choice/data.yaml +9 -0
- endoreg_db/data/examination/examinations/data.yaml +172 -0
- endoreg_db/data/examination/time/data.yaml +48 -0
- endoreg_db/data/examination/time-type/data.yaml +5 -0
- endoreg_db/data/examination/type/data.yaml +17 -0
- endoreg_db/data/examination_indication/endoscopy.yaml +359 -0
- endoreg_db/data/examination_indication_classification/endoscopy.yaml +90 -0
- endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +97 -0
- endoreg_db/data/examination_requirement_set/colonoscopy.yaml +15 -0
- endoreg_db/data/finding/00_generic.yaml +35 -0
- endoreg_db/data/finding/00_generic_complication.yaml +9 -0
- endoreg_db/data/finding/01_gastroscopy_baseline.yaml +88 -0
- endoreg_db/data/finding/01_gastroscopy_observation.yaml +113 -0
- endoreg_db/data/finding/02_colonoscopy_baseline.yaml +53 -0
- endoreg_db/data/finding/02_colonoscopy_hidden.yaml +119 -0
- endoreg_db/data/finding/02_colonoscopy_observation.yaml +152 -0
- endoreg_db/data/finding_classification/00_generic.yaml +44 -0
- endoreg_db/data/finding_classification/00_generic_histology.yaml +28 -0
- endoreg_db/data/finding_classification/00_generic_lesion.yaml +52 -0
- endoreg_db/data/finding_classification/02_colonoscopy_baseline.yaml +83 -0
- endoreg_db/data/finding_classification/02_colonoscopy_histology.yaml +13 -0
- endoreg_db/data/finding_classification/02_colonoscopy_other.yaml +12 -0
- endoreg_db/data/finding_classification/02_colonoscopy_polyp.yaml +101 -0
- endoreg_db/data/finding_classification_choice/00_generic.yaml +15 -0
- endoreg_db/data/finding_classification_choice/00_generic_baseline.yaml +23 -0
- endoreg_db/data/finding_classification_choice/00_generic_complication.yaml +15 -0
- endoreg_db/data/finding_classification_choice/00_generic_histology.yaml +21 -0
- endoreg_db/data/finding_classification_choice/00_generic_lesion.yaml +158 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_bowel_preparation.yaml +49 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_generic.yaml +19 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_histology.yaml +20 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_location.yaml +248 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_other.yaml +34 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_polyp_advanced_imaging.yaml +76 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_polyp_morphology.yaml +75 -0
- endoreg_db/data/finding_classification_choice/02_colonoscopy_size.yaml +27 -0
- endoreg_db/data/finding_classification_type/00_generic.yaml +53 -0
- endoreg_db/data/finding_classification_type/02_colonoscopy.yaml +9 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy.yaml +59 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy_ablation.yaml +44 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy_bleeding.yaml +55 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy_resection.yaml +85 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy_stenosis.yaml +17 -0
- endoreg_db/data/finding_intervention/00_generic_endoscopy_stent.yaml +9 -0
- endoreg_db/data/finding_intervention/01_gastroscopy.yaml +19 -0
- endoreg_db/data/finding_intervention/04_eus.yaml +39 -0
- endoreg_db/data/finding_intervention/05_ercp.yaml +3 -0
- endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
- endoreg_db/data/finding_type/data.yaml +39 -0
- endoreg_db/data/gender/data.yaml +42 -0
- endoreg_db/data/information_source/annotation.yaml +6 -0
- endoreg_db/data/information_source/data.yaml +30 -0
- endoreg_db/data/information_source/endoscopy_guidelines.yaml +7 -0
- endoreg_db/data/information_source/medication.yaml +6 -0
- endoreg_db/data/information_source/prediction.yaml +7 -0
- endoreg_db/data/information_source_type/data.yaml +8 -0
- endoreg_db/data/lab_value/cardiac_enzymes.yaml +37 -0
- endoreg_db/data/lab_value/coagulation.yaml +54 -0
- endoreg_db/data/lab_value/electrolytes.yaml +228 -0
- endoreg_db/data/lab_value/gastrointestinal_function.yaml +133 -0
- endoreg_db/data/lab_value/hematology.yaml +184 -0
- endoreg_db/data/lab_value/hormones.yaml +59 -0
- endoreg_db/data/lab_value/lipids.yaml +53 -0
- endoreg_db/data/lab_value/misc.yaml +76 -0
- endoreg_db/data/lab_value/renal_function.yaml +12 -0
- endoreg_db/data/log_type/data.yaml +57 -0
- endoreg_db/data/lx_client_tag/base.yaml +54 -0
- endoreg_db/data/lx_client_type/base.yaml +30 -0
- endoreg_db/data/lx_permission/base.yaml +24 -0
- endoreg_db/data/lx_permission/endoreg.yaml +52 -0
- endoreg_db/data/material/material.yaml +91 -0
- endoreg_db/data/medication/anticoagulation.yaml +65 -0
- endoreg_db/data/medication/tah.yaml +70 -0
- endoreg_db/data/medication_indication/anticoagulation.yaml +115 -0
- endoreg_db/data/medication_indication_type/data.yaml +11 -0
- endoreg_db/data/medication_indication_type/thrombembolism.yaml +41 -0
- endoreg_db/data/medication_intake_time/base.yaml +31 -0
- endoreg_db/data/medication_schedule/apixaban.yaml +95 -0
- endoreg_db/data/medication_schedule/ass.yaml +12 -0
- endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -0
- endoreg_db/data/names_first/first_names.yaml +54 -0
- endoreg_db/data/names_last/last_names.yaml +51 -0
- endoreg_db/data/network_device/data.yaml +59 -0
- endoreg_db/data/network_device_type/data.yaml +12 -0
- endoreg_db/data/organ/data.yaml +29 -0
- endoreg_db/data/patient_lab_sample_type/generic.yaml +6 -0
- endoreg_db/data/pdf_type/data.yaml +46 -0
- endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -0
- endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -0
- endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -0
- endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -0
- endoreg_db/data/profession/data.yaml +70 -0
- endoreg_db/data/qualification/endoscopy.yaml +36 -0
- endoreg_db/data/qualification/m2.yaml +39 -0
- endoreg_db/data/qualification/outpatient_clinic.yaml +35 -0
- endoreg_db/data/qualification/sonography.yaml +36 -0
- endoreg_db/data/qualification_type/base.yaml +29 -0
- endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -0
- endoreg_db/data/report_reader_flag/rkh-histology-generic.yaml +10 -0
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +30 -0
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +24 -0
- endoreg_db/data/requirement/01_patient_data.yaml +93 -0
- endoreg_db/data/requirement/old/colon_polyp_intervention.yaml +49 -0
- endoreg_db/data/requirement/old/colonoscopy_baseline_austria.yaml +45 -0
- endoreg_db/data/requirement/old/coloreg_colon_polyp.yaml +49 -0
- endoreg_db/data/requirement/old/disease_cardiovascular.yaml +79 -0
- endoreg_db/data/requirement/old/disease_classification_choice_cardiovascular.yaml +41 -0
- endoreg_db/data/requirement/old/disease_hepatology.yaml +12 -0
- endoreg_db/data/requirement/old/disease_misc.yaml +12 -0
- endoreg_db/data/requirement/old/disease_renal.yaml +96 -0
- endoreg_db/data/requirement/old/endoscopy_bleeding_risk.yaml +59 -0
- endoreg_db/data/requirement/old/event_cardiology.yaml +251 -0
- endoreg_db/data/requirement/old/event_requirements.yaml +145 -0
- endoreg_db/data/requirement/old/finding_colon_polyp.yaml +50 -0
- endoreg_db/data/requirement/old/gender.yaml +0 -0
- endoreg_db/data/requirement/old/lab_value.yaml +441 -0
- endoreg_db/data/requirement/old/medication.yaml +93 -0
- endoreg_db/data/requirement_operator/_old/age.yaml +13 -0
- endoreg_db/data/requirement_operator/_old/lab_operators.yaml +129 -0
- endoreg_db/data/requirement_operator/_old/model_operators.yaml +96 -0
- endoreg_db/data/requirement_operator/new_operators.yaml +36 -0
- endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +65 -0
- endoreg_db/data/requirement_set/01_laboratory.yaml +13 -0
- endoreg_db/data/requirement_set/02_endoscopy_bleeding_risk.yaml +46 -0
- endoreg_db/data/requirement_set/90_coloreg.yaml +190 -0
- endoreg_db/data/requirement_set/_old_ +109 -0
- endoreg_db/data/requirement_set/colonoscopy_austria_screening.yaml +57 -0
- endoreg_db/data/requirement_set_type/data.yaml +41 -0
- endoreg_db/data/requirement_type/requirement_types.yaml +165 -0
- endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -0
- endoreg_db/data/risk/bleeding.yaml +26 -0
- endoreg_db/data/risk/thrombosis.yaml +37 -0
- endoreg_db/data/risk_type/data.yaml +27 -0
- endoreg_db/data/setup_config.yaml +38 -0
- endoreg_db/data/shift/endoscopy.yaml +21 -0
- endoreg_db/data/shift/m2.yaml +0 -0
- endoreg_db/data/shift_type/base.yaml +35 -0
- endoreg_db/data/tag/requirement_set_tags.yaml +32 -0
- endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
- endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
- endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -0
- endoreg_db/data/unit/concentration.yaml +115 -0
- endoreg_db/data/unit/data.yaml +17 -0
- endoreg_db/data/unit/length.yaml +31 -0
- endoreg_db/data/unit/misc.yaml +20 -0
- endoreg_db/data/unit/rate.yaml +6 -0
- endoreg_db/data/unit/time.yaml +48 -0
- endoreg_db/data/unit/volume.yaml +35 -0
- endoreg_db/data/unit/weight.yaml +38 -0
- endoreg_db/data/waste/data.yaml +12 -0
- endoreg_db/exceptions.py +24 -0
- endoreg_db/export/frames/export.py +6 -0
- endoreg_db/export/frames/export_frames_with_labels.py +616 -0
- endoreg_db/factories/__init__.py +0 -0
- endoreg_db/forms/__init__.py +4 -0
- endoreg_db/forms/examination_form.py +12 -0
- endoreg_db/forms/patient_finding_intervention_form.py +40 -0
- endoreg_db/forms/patient_form.py +23 -0
- endoreg_db/forms/questionnaires/__init__.py +1 -0
- endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -0
- endoreg_db/forms/settings/__init__.py +11 -0
- endoreg_db/forms/unit.py +7 -0
- endoreg_db/helpers/__init__.py +0 -0
- endoreg_db/helpers/count_db.py +48 -0
- endoreg_db/helpers/data_loader.py +280 -0
- endoreg_db/helpers/default_objects.py +414 -0
- endoreg_db/helpers/download_segmentation_model.py +32 -0
- endoreg_db/helpers/interact.py +1 -0
- endoreg_db/helpers/test_video_helper.py +127 -0
- endoreg_db/import_files/__init__.py +27 -0
- endoreg_db/import_files/context/__init__.py +7 -0
- endoreg_db/import_files/context/default_sensitive_meta.py +83 -0
- endoreg_db/import_files/context/ensure_center.py +17 -0
- endoreg_db/import_files/context/file_lock.py +66 -0
- endoreg_db/import_files/context/import_context.py +42 -0
- endoreg_db/import_files/context/validate_directories.py +57 -0
- endoreg_db/import_files/file_storage/__init__.py +15 -0
- endoreg_db/import_files/file_storage/create_report_file.py +99 -0
- endoreg_db/import_files/file_storage/create_video_file.py +104 -0
- endoreg_db/import_files/file_storage/sensitive_meta_storage.py +42 -0
- endoreg_db/import_files/file_storage/state_management.py +463 -0
- endoreg_db/import_files/file_storage/storage.py +42 -0
- endoreg_db/import_files/import_service.md +26 -0
- endoreg_db/import_files/processing/__init__.py +11 -0
- endoreg_db/import_files/processing/report_processing/report_anonymization.py +99 -0
- endoreg_db/import_files/processing/sensitive_meta_adapter.py +51 -0
- endoreg_db/import_files/processing/video_processing/video_anonymization.py +107 -0
- endoreg_db/import_files/pseudonymization/__init__.py +0 -0
- endoreg_db/import_files/pseudonymization/fake.py +52 -0
- endoreg_db/import_files/pseudonymization/k_anonymity.py +181 -0
- endoreg_db/import_files/pseudonymization/k_pseudonymity.py +139 -0
- endoreg_db/import_files/pseudonymization/pseudonymize.py +0 -0
- endoreg_db/import_files/report_import_service.py +147 -0
- endoreg_db/import_files/video_import_service.py +154 -0
- endoreg_db/logger_conf.py +156 -0
- endoreg_db/management/__init__.py +1 -0
- endoreg_db/management/commands/__init__.py +1 -0
- endoreg_db/management/commands/anonymize_video.py +0 -0
- endoreg_db/management/commands/check_auth.py +132 -0
- endoreg_db/management/commands/create_model_meta_from_huggingface.py +177 -0
- endoreg_db/management/commands/create_multilabel_model_meta.py +419 -0
- endoreg_db/management/commands/export_frame_annot.py +196 -0
- endoreg_db/management/commands/fix_missing_patient_data.py +206 -0
- endoreg_db/management/commands/fix_video_paths.py +186 -0
- endoreg_db/management/commands/import_report.py +361 -0
- endoreg_db/management/commands/list_routes.py +20 -0
- endoreg_db/management/commands/load_ai_model_data.py +83 -0
- endoreg_db/management/commands/load_ai_model_label_data.py +60 -0
- endoreg_db/management/commands/load_base_db_data.py +63 -0
- endoreg_db/management/commands/load_center_data.py +68 -0
- endoreg_db/management/commands/load_contraindication_data.py +39 -0
- endoreg_db/management/commands/load_disease_classification_choices_data.py +38 -0
- endoreg_db/management/commands/load_disease_classification_data.py +38 -0
- endoreg_db/management/commands/load_disease_data.py +59 -0
- endoreg_db/management/commands/load_distribution_data.py +63 -0
- endoreg_db/management/commands/load_endoscope_data.py +58 -0
- endoreg_db/management/commands/load_event_data.py +39 -0
- endoreg_db/management/commands/load_examination_data.py +78 -0
- endoreg_db/management/commands/load_examination_indication_data.py +85 -0
- endoreg_db/management/commands/load_finding_data.py +115 -0
- endoreg_db/management/commands/load_gender_data.py +37 -0
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +142 -0
- endoreg_db/management/commands/load_information_source.py +46 -0
- endoreg_db/management/commands/load_lab_value_data.py +52 -0
- endoreg_db/management/commands/load_legacy_data.py +303 -0
- endoreg_db/management/commands/load_medication_data.py +104 -0
- endoreg_db/management/commands/load_name_data.py +36 -0
- endoreg_db/management/commands/load_organ_data.py +39 -0
- endoreg_db/management/commands/load_pdf_type_data.py +58 -0
- endoreg_db/management/commands/load_profession_data.py +40 -0
- endoreg_db/management/commands/load_qualification_data.py +56 -0
- endoreg_db/management/commands/load_report_reader_flag_data.py +40 -0
- endoreg_db/management/commands/load_requirement_data.py +207 -0
- endoreg_db/management/commands/load_requirement_set_tags.py +95 -0
- endoreg_db/management/commands/load_risk_data.py +57 -0
- endoreg_db/management/commands/load_shift_data.py +57 -0
- endoreg_db/management/commands/load_tag_data.py +54 -0
- endoreg_db/management/commands/load_unit_data.py +40 -0
- endoreg_db/management/commands/load_user_groups.py +26 -0
- endoreg_db/management/commands/model_input.py +169 -0
- endoreg_db/management/commands/register_ai_model.py +70 -0
- endoreg_db/management/commands/setup_endoreg_db.py +459 -0
- endoreg_db/management/commands/start_filewatcher.py +115 -0
- endoreg_db/management/commands/storage_management.py +622 -0
- endoreg_db/management/commands/summarize_db_content.py +280 -0
- endoreg_db/management/commands/train_image_multilabel_model.py +144 -0
- endoreg_db/management/commands/validate_video_files.py +189 -0
- endoreg_db/management/commands/video_validation.py +20 -0
- endoreg_db/mermaid/Overall_flow_patient_finding_intervention.md +10 -0
- endoreg_db/mermaid/anonymized_image_annotation.md +20 -0
- endoreg_db/mermaid/binary_classification_annotation.md +50 -0
- endoreg_db/mermaid/classification.md +8 -0
- endoreg_db/mermaid/examination.md +8 -0
- endoreg_db/mermaid/findings.md +7 -0
- endoreg_db/mermaid/image_classification.md +28 -0
- endoreg_db/mermaid/interventions.md +8 -0
- endoreg_db/mermaid/morphology.md +8 -0
- endoreg_db/mermaid/patient_creation.md +14 -0
- endoreg_db/mermaid/video_segmentation_annotation.md +17 -0
- endoreg_db/migrations/0001_initial.py +1953 -0
- endoreg_db/migrations/__init__.py +0 -0
- endoreg_db/models/__init__.py +322 -0
- endoreg_db/models/administration/__init__.py +95 -0
- endoreg_db/models/administration/ai/__init__.py +9 -0
- endoreg_db/models/administration/ai/active_model.py +35 -0
- endoreg_db/models/administration/ai/ai_model.py +180 -0
- endoreg_db/models/administration/ai/model_type.py +42 -0
- endoreg_db/models/administration/case/__init__.py +5 -0
- endoreg_db/models/administration/case/case.py +114 -0
- endoreg_db/models/administration/case/case_template/__init__.py +3 -0
- endoreg_db/models/administration/case/case_template/case_template.py +3 -0
- endoreg_db/models/administration/case/case_template/case_template_rule.py +3 -0
- endoreg_db/models/administration/case/case_template/case_template_rule_value.py +3 -0
- endoreg_db/models/administration/case/case_template/case_template_type.py +3 -0
- endoreg_db/models/administration/center/__init__.py +13 -0
- endoreg_db/models/administration/center/center.py +85 -0
- endoreg_db/models/administration/center/center_product.py +67 -0
- endoreg_db/models/administration/center/center_resource.py +69 -0
- endoreg_db/models/administration/center/center_shift.py +94 -0
- endoreg_db/models/administration/center/center_waste.py +42 -0
- endoreg_db/models/administration/person/__init__.py +26 -0
- endoreg_db/models/administration/person/employee/__init__.py +3 -0
- endoreg_db/models/administration/person/employee/employee.py +40 -0
- endoreg_db/models/administration/person/employee/employee_qualification.py +44 -0
- endoreg_db/models/administration/person/employee/employee_type.py +50 -0
- endoreg_db/models/administration/person/examiner/__init__.py +4 -0
- endoreg_db/models/administration/person/examiner/examiner.py +64 -0
- endoreg_db/models/administration/person/names/__init__.py +0 -0
- endoreg_db/models/administration/person/names/first_name.py +20 -0
- endoreg_db/models/administration/person/names/last_name.py +20 -0
- endoreg_db/models/administration/person/patient/__init__.py +7 -0
- endoreg_db/models/administration/person/patient/patient.py +488 -0
- endoreg_db/models/administration/person/patient/patient_external_id.py +36 -0
- endoreg_db/models/administration/person/person.py +35 -0
- endoreg_db/models/administration/person/profession/__init__.py +28 -0
- endoreg_db/models/administration/person/user/__init__.py +5 -0
- endoreg_db/models/administration/person/user/portal_user_information.py +41 -0
- endoreg_db/models/administration/product/__init__.py +15 -0
- endoreg_db/models/administration/product/product.py +106 -0
- endoreg_db/models/administration/product/product_group.py +41 -0
- endoreg_db/models/administration/product/product_material.py +60 -0
- endoreg_db/models/administration/product/product_weight.py +51 -0
- endoreg_db/models/administration/product/reference_product.py +147 -0
- endoreg_db/models/administration/qualification/__init__.py +7 -0
- endoreg_db/models/administration/qualification/qualification.py +43 -0
- endoreg_db/models/administration/qualification/qualification_type.py +39 -0
- endoreg_db/models/administration/shift/__init__.py +9 -0
- endoreg_db/models/administration/shift/scheduled_days.py +72 -0
- endoreg_db/models/administration/shift/shift.py +57 -0
- endoreg_db/models/administration/shift/shift_type.py +108 -0
- endoreg_db/models/aidataset/__init__.py +5 -0
- endoreg_db/models/aidataset/aidataset.py +193 -0
- endoreg_db/models/label/__init__.py +23 -0
- endoreg_db/models/label/annotation/__init__.py +12 -0
- endoreg_db/models/label/annotation/image_classification.py +85 -0
- endoreg_db/models/label/annotation/video_segmentation_annotation.py +61 -0
- endoreg_db/models/label/label.py +91 -0
- endoreg_db/models/label/label_set.py +68 -0
- endoreg_db/models/label/label_type.py +29 -0
- endoreg_db/models/label/label_video_segment/__init__.py +3 -0
- endoreg_db/models/label/label_video_segment/_create_from_video.py +42 -0
- endoreg_db/models/label/label_video_segment/label_video_segment.py +611 -0
- endoreg_db/models/label/video_segmentation_label.py +35 -0
- endoreg_db/models/label/video_segmentation_labelset.py +28 -0
- endoreg_db/models/media/__init__.py +23 -0
- endoreg_db/models/media/frame/__init__.py +3 -0
- endoreg_db/models/media/frame/frame.py +137 -0
- endoreg_db/models/media/pdf/__init__.py +12 -0
- endoreg_db/models/media/pdf/raw_pdf.py +764 -0
- endoreg_db/models/media/pdf/report_file.py +162 -0
- endoreg_db/models/media/pdf/report_reader/__init__.py +7 -0
- endoreg_db/models/media/pdf/report_reader/report_reader_config.py +85 -0
- endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +46 -0
- endoreg_db/models/media/video/__init__.py +9 -0
- endoreg_db/models/media/video/create_from_file.py +402 -0
- endoreg_db/models/media/video/pipe_1.py +258 -0
- endoreg_db/models/media/video/pipe_2.py +129 -0
- endoreg_db/models/media/video/video_file.py +907 -0
- endoreg_db/models/media/video/video_file_ai.py +828 -0
- endoreg_db/models/media/video/video_file_anonymize.py +524 -0
- endoreg_db/models/media/video/video_file_frames/__init__.py +49 -0
- endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +25 -0
- endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +23 -0
- endoreg_db/models/media/video/video_file_frames/_delete_frames.py +126 -0
- endoreg_db/models/media/video/video_file_frames/_extract_frames.py +233 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame.py +36 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +13 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +24 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +40 -0
- endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +44 -0
- endoreg_db/models/media/video/video_file_frames/_get_frames.py +30 -0
- endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +205 -0
- endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +228 -0
- endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +107 -0
- endoreg_db/models/media/video/video_file_io.py +272 -0
- endoreg_db/models/media/video/video_file_meta/__init__.py +22 -0
- endoreg_db/models/media/video/video_file_meta/get_crop_template.py +58 -0
- endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +62 -0
- endoreg_db/models/media/video/video_file_meta/get_fps.py +183 -0
- endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +198 -0
- endoreg_db/models/media/video/video_file_meta/text_meta.py +178 -0
- endoreg_db/models/media/video/video_file_meta/video_meta.py +105 -0
- endoreg_db/models/media/video/video_file_segments.py +317 -0
- endoreg_db/models/media/video/video_metadata.py +67 -0
- endoreg_db/models/media/video/video_processing.py +192 -0
- endoreg_db/models/medical/__init__.py +136 -0
- endoreg_db/models/medical/contraindication/README.md +1 -0
- endoreg_db/models/medical/contraindication/__init__.py +29 -0
- endoreg_db/models/medical/disease.py +174 -0
- endoreg_db/models/medical/event.py +154 -0
- endoreg_db/models/medical/examination/__init__.py +20 -0
- endoreg_db/models/medical/examination/examination.py +183 -0
- endoreg_db/models/medical/examination/examination_indication.py +229 -0
- endoreg_db/models/medical/examination/examination_time.py +68 -0
- endoreg_db/models/medical/examination/examination_time_type.py +44 -0
- endoreg_db/models/medical/examination/examination_type.py +47 -0
- endoreg_db/models/medical/finding/__init__.py +20 -0
- endoreg_db/models/medical/finding/finding.py +113 -0
- endoreg_db/models/medical/finding/finding_classification.py +131 -0
- endoreg_db/models/medical/finding/finding_intervention.py +68 -0
- endoreg_db/models/medical/finding/finding_type.py +38 -0
- endoreg_db/models/medical/hardware/__init__.py +8 -0
- endoreg_db/models/medical/hardware/endoscope.py +77 -0
- endoreg_db/models/medical/hardware/endoscopy_processor.py +182 -0
- endoreg_db/models/medical/laboratory/__init__.py +5 -0
- endoreg_db/models/medical/laboratory/lab_value.py +490 -0
- endoreg_db/models/medical/medication/__init__.py +23 -0
- endoreg_db/models/medical/medication/medication.py +45 -0
- endoreg_db/models/medical/medication/medication_indication.py +78 -0
- endoreg_db/models/medical/medication/medication_indication_type.py +58 -0
- endoreg_db/models/medical/medication/medication_intake_time.py +58 -0
- endoreg_db/models/medical/medication/medication_schedule.py +58 -0
- endoreg_db/models/medical/organ/__init__.py +38 -0
- endoreg_db/models/medical/patient/__init__.py +48 -0
- endoreg_db/models/medical/patient/medication_examples.py +56 -0
- endoreg_db/models/medical/patient/patient_disease.py +72 -0
- endoreg_db/models/medical/patient/patient_event.py +80 -0
- endoreg_db/models/medical/patient/patient_examination.py +280 -0
- endoreg_db/models/medical/patient/patient_examination_indication.py +57 -0
- endoreg_db/models/medical/patient/patient_finding.py +416 -0
- endoreg_db/models/medical/patient/patient_finding_classification.py +231 -0
- endoreg_db/models/medical/patient/patient_finding_intervention.py +37 -0
- endoreg_db/models/medical/patient/patient_lab_sample.py +157 -0
- endoreg_db/models/medical/patient/patient_lab_value.py +247 -0
- endoreg_db/models/medical/patient/patient_medication.py +111 -0
- endoreg_db/models/medical/patient/patient_medication_schedule.py +152 -0
- endoreg_db/models/medical/risk/__init__.py +7 -0
- endoreg_db/models/medical/risk/risk.py +73 -0
- endoreg_db/models/medical/risk/risk_type.py +54 -0
- endoreg_db/models/metadata/__init__.py +19 -0
- endoreg_db/models/metadata/model_meta.py +266 -0
- endoreg_db/models/metadata/model_meta_logic.py +485 -0
- endoreg_db/models/metadata/pdf_meta.py +96 -0
- endoreg_db/models/metadata/sensitive_meta.py +345 -0
- endoreg_db/models/metadata/sensitive_meta_logic.py +1161 -0
- endoreg_db/models/metadata/video_meta.py +459 -0
- endoreg_db/models/metadata/video_prediction_logic.py +232 -0
- endoreg_db/models/metadata/video_prediction_meta.py +319 -0
- endoreg_db/models/operation_log.py +63 -0
- endoreg_db/models/other/__init__.py +40 -0
- endoreg_db/models/other/distribution/__init__.py +46 -0
- endoreg_db/models/other/distribution/base_value_distribution.py +22 -0
- endoreg_db/models/other/distribution/date_value_distribution.py +163 -0
- endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +50 -0
- endoreg_db/models/other/distribution/numeric_value_distribution.py +211 -0
- endoreg_db/models/other/distribution/single_categorical_value_distribution.py +23 -0
- endoreg_db/models/other/emission/__init__.py +5 -0
- endoreg_db/models/other/emission/emission_factor.py +110 -0
- endoreg_db/models/other/gender.py +32 -0
- endoreg_db/models/other/information_source.py +190 -0
- endoreg_db/models/other/material.py +34 -0
- endoreg_db/models/other/resource.py +24 -0
- endoreg_db/models/other/tag.py +32 -0
- endoreg_db/models/other/transport_route.py +40 -0
- endoreg_db/models/other/unit.py +40 -0
- endoreg_db/models/other/waste.py +28 -0
- endoreg_db/models/report/__init__.py +0 -0
- endoreg_db/models/report/images.py +0 -0
- endoreg_db/models/report/report.py +5 -0
- endoreg_db/models/requirement/__init__.py +11 -0
- endoreg_db/models/requirement/requirement.py +792 -0
- endoreg_db/models/requirement/requirement_error.py +84 -0
- endoreg_db/models/requirement/requirement_evaluation/__init__.py +6 -0
- endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +268 -0
- endoreg_db/models/requirement/requirement_evaluation/get_values.py +40 -0
- endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +6 -0
- endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +137 -0
- endoreg_db/models/requirement/requirement_operator.py +187 -0
- endoreg_db/models/requirement/requirement_set.py +327 -0
- endoreg_db/models/state/__init__.py +13 -0
- endoreg_db/models/state/abstract.py +11 -0
- endoreg_db/models/state/anonymization.py +30 -0
- endoreg_db/models/state/audit_ledger.py +155 -0
- endoreg_db/models/state/label_video_segment.py +31 -0
- endoreg_db/models/state/processing_history/__init__.py +3 -0
- endoreg_db/models/state/processing_history/processing_history.py +136 -0
- endoreg_db/models/state/raw_pdf.py +219 -0
- endoreg_db/models/state/sensitive_meta.py +50 -0
- endoreg_db/models/state/video.py +251 -0
- endoreg_db/models/upload_job.py +100 -0
- endoreg_db/models/utils.py +138 -0
- endoreg_db/queries/__init__.py +3 -0
- endoreg_db/queries/annotations/__init__.py +1 -0
- endoreg_db/queries/annotations/legacy.py +169 -0
- endoreg_db/queries/sanity/__init_.py +0 -0
- endoreg_db/root_urls.py +27 -0
- endoreg_db/schemas/__init__.py +0 -0
- endoreg_db/schemas/examination_evaluation.py +30 -0
- endoreg_db/serializers/Frames_NICE_and_PARIS_classifications.py +861 -0
- endoreg_db/serializers/__init__.py +104 -0
- endoreg_db/serializers/administration/__init__.py +13 -0
- endoreg_db/serializers/administration/ai/__init__.py +9 -0
- endoreg_db/serializers/administration/ai/active_model.py +12 -0
- endoreg_db/serializers/administration/ai/ai_model.py +20 -0
- endoreg_db/serializers/administration/ai/model_type.py +12 -0
- endoreg_db/serializers/administration/center.py +14 -0
- endoreg_db/serializers/administration/gender.py +11 -0
- endoreg_db/serializers/anonymization.py +77 -0
- endoreg_db/serializers/evaluation/examination_evaluation.py +0 -0
- endoreg_db/serializers/examination/__init__.py +10 -0
- endoreg_db/serializers/examination/base.py +45 -0
- endoreg_db/serializers/examination/dropdown.py +20 -0
- endoreg_db/serializers/examination_serializer.py +9 -0
- endoreg_db/serializers/finding/__init__.py +5 -0
- endoreg_db/serializers/finding/finding.py +61 -0
- endoreg_db/serializers/finding_classification/__init__.py +7 -0
- endoreg_db/serializers/finding_classification/choice.py +19 -0
- endoreg_db/serializers/finding_classification/classification.py +11 -0
- endoreg_db/serializers/label_video_segment/__init__.py +9 -0
- endoreg_db/serializers/label_video_segment/image_classification_annotation.py +62 -0
- endoreg_db/serializers/label_video_segment/label/__init__.py +6 -0
- endoreg_db/serializers/label_video_segment/label/label.py +15 -0
- endoreg_db/serializers/label_video_segment/label_video_segment.py +427 -0
- endoreg_db/serializers/meta/__init__.py +13 -0
- endoreg_db/serializers/meta/sensitive_meta_detail.py +122 -0
- endoreg_db/serializers/meta/sensitive_meta_update.py +153 -0
- endoreg_db/serializers/meta/sensitive_meta_verification.py +62 -0
- endoreg_db/serializers/meta/video_meta.py +39 -0
- endoreg_db/serializers/misc/__init__.py +14 -0
- endoreg_db/serializers/misc/file_overview.py +72 -0
- endoreg_db/serializers/misc/sensitive_patient_data.py +144 -0
- endoreg_db/serializers/misc/stats.py +35 -0
- endoreg_db/serializers/misc/translatable_field_mix_in.py +44 -0
- endoreg_db/serializers/misc/upload_job.py +74 -0
- endoreg_db/serializers/patient/__init__.py +12 -0
- endoreg_db/serializers/patient/patient.py +103 -0
- endoreg_db/serializers/patient/patient_dropdown.py +35 -0
- endoreg_db/serializers/patient_examination/__init__.py +7 -0
- endoreg_db/serializers/patient_examination/patient_examination.py +168 -0
- endoreg_db/serializers/patient_finding/__init__.py +15 -0
- endoreg_db/serializers/patient_finding/patient_finding.py +32 -0
- endoreg_db/serializers/patient_finding/patient_finding_classification.py +47 -0
- endoreg_db/serializers/patient_finding/patient_finding_detail.py +62 -0
- endoreg_db/serializers/patient_finding/patient_finding_intervention.py +28 -0
- endoreg_db/serializers/patient_finding/patient_finding_list.py +40 -0
- endoreg_db/serializers/patient_finding/patient_finding_write.py +135 -0
- endoreg_db/serializers/pdf/__init__.py +3 -0
- endoreg_db/serializers/pdf/anony_text_validation.py +101 -0
- endoreg_db/serializers/requirements/requirement_schema.py +20 -0
- endoreg_db/serializers/requirements/requirement_sets.py +99 -0
- endoreg_db/serializers/sensitive_meta_serializer.py +301 -0
- endoreg_db/serializers/video/__init__.py +7 -0
- endoreg_db/serializers/video/video_file.py +283 -0
- endoreg_db/serializers/video/video_file_brief.py +14 -0
- endoreg_db/serializers/video/video_file_detail.py +96 -0
- endoreg_db/serializers/video/video_file_list.py +100 -0
- endoreg_db/serializers/video/video_processing_history.py +172 -0
- endoreg_db/serializers/video_examination.py +198 -0
- endoreg_db/services/__init__.py +5 -0
- endoreg_db/services/anonymization.py +274 -0
- endoreg_db/services/examination_evaluation.py +172 -0
- endoreg_db/services/finding_description_service.py +0 -0
- endoreg_db/services/lookup_service.py +424 -0
- endoreg_db/services/lookup_store.py +266 -0
- endoreg_db/services/model_meta_from_hf.py +76 -0
- endoreg_db/services/pdf_import.py +0 -0
- endoreg_db/services/polling_coordinator.py +319 -0
- endoreg_db/services/pseudonym_service.py +94 -0
- endoreg_db/services/report_import.py +13 -0
- endoreg_db/services/segment_sync.py +171 -0
- endoreg_db/services/video_import.py +9 -0
- endoreg_db/templates/admin/patient_finding_intervention.html +253 -0
- endoreg_db/templates/admin/start_examination.html +12 -0
- endoreg_db/templates/timeline.html +176 -0
- endoreg_db/urls/__init__.py +56 -0
- endoreg_db/urls/ai.py +14 -0
- endoreg_db/urls/anonymization.py +78 -0
- endoreg_db/urls/auth.py +16 -0
- endoreg_db/urls/classification.py +34 -0
- endoreg_db/urls/examination.py +63 -0
- endoreg_db/urls/media.py +251 -0
- endoreg_db/urls/patient.py +23 -0
- endoreg_db/urls/requirements.py +15 -0
- endoreg_db/urls/root_urls.py +28 -0
- endoreg_db/urls/stats.py +54 -0
- endoreg_db/urls/upload.py +12 -0
- endoreg_db/urls.py +9 -0
- endoreg_db/utils/__init__.py +97 -0
- endoreg_db/utils/ai/__init__.py +9 -0
- endoreg_db/utils/ai/data_loader_for_model_input.py +262 -0
- endoreg_db/utils/ai/data_loader_for_model_training.py +262 -0
- endoreg_db/utils/ai/get.py +6 -0
- endoreg_db/utils/ai/inference_dataset.py +51 -0
- endoreg_db/utils/ai/model_training/config.py +117 -0
- endoreg_db/utils/ai/model_training/dataset.py +74 -0
- endoreg_db/utils/ai/model_training/losses.py +68 -0
- endoreg_db/utils/ai/model_training/metrics.py +78 -0
- endoreg_db/utils/ai/model_training/model_backbones.py +155 -0
- endoreg_db/utils/ai/model_training/model_gastronet_resnet.py +118 -0
- endoreg_db/utils/ai/model_training/trainer_gastronet_multilabel.py +771 -0
- endoreg_db/utils/ai/multilabel_classification_net.py +270 -0
- endoreg_db/utils/ai/postprocess.py +63 -0
- endoreg_db/utils/ai/predict.py +293 -0
- endoreg_db/utils/ai/preprocess.py +76 -0
- endoreg_db/utils/calc_duration_seconds.py +24 -0
- endoreg_db/utils/case_generator/__init__.py +3 -0
- endoreg_db/utils/case_generator/lab_sample_factory.py +32 -0
- endoreg_db/utils/check_video_files.py +175 -0
- endoreg_db/utils/cropping.py +30 -0
- endoreg_db/utils/dataloader.py +285 -0
- endoreg_db/utils/dates.py +59 -0
- endoreg_db/utils/defaults/set_default_center.py +33 -0
- endoreg_db/utils/env.py +37 -0
- endoreg_db/utils/extract_specific_frames.py +87 -0
- endoreg_db/utils/file_operations.py +70 -0
- endoreg_db/utils/fix_video_path_direct.py +157 -0
- endoreg_db/utils/frame_anonymization_utils.py +463 -0
- endoreg_db/utils/hashs.py +138 -0
- endoreg_db/utils/links/__init__.py +0 -0
- endoreg_db/utils/links/requirement_link.py +237 -0
- endoreg_db/utils/mime_types.py +0 -0
- endoreg_db/utils/names.py +82 -0
- endoreg_db/utils/ocr.py +195 -0
- endoreg_db/utils/operation_log.py +87 -0
- endoreg_db/utils/parse_and_generate_yaml.py +45 -0
- endoreg_db/utils/paths.py +159 -0
- endoreg_db/utils/permissions.py +160 -0
- endoreg_db/utils/pipelines/Readme.md +235 -0
- endoreg_db/utils/pipelines/__init__.py +0 -0
- endoreg_db/utils/pipelines/process_video_dir.py +144 -0
- endoreg_db/utils/product/__init__.py +0 -0
- endoreg_db/utils/product/sum_emissions.py +22 -0
- endoreg_db/utils/product/sum_weights.py +20 -0
- endoreg_db/utils/pydantic_models/__init__.py +5 -0
- endoreg_db/utils/pydantic_models/db_config.py +57 -0
- endoreg_db/utils/requirement_helpers.py +0 -0
- endoreg_db/utils/requirement_operator_logic/__init__.py +0 -0
- endoreg_db/utils/requirement_operator_logic/_old/lab_value_operators.py +678 -0
- endoreg_db/utils/requirement_operator_logic/_old/model_evaluators.py +842 -0
- endoreg_db/utils/requirement_operator_logic/new_operator_logic.py +114 -0
- endoreg_db/utils/setup_config.py +196 -0
- endoreg_db/utils/storage.py +117 -0
- endoreg_db/utils/translation.py +31 -0
- endoreg_db/utils/uuid.py +5 -0
- endoreg_db/utils/validate_endo_roi.py +33 -0
- endoreg_db/utils/validate_subcategory_dict.py +93 -0
- endoreg_db/utils/validate_video_detailed.py +415 -0
- endoreg_db/utils/video/__init__.py +30 -0
- endoreg_db/utils/video/extract_frames.py +100 -0
- endoreg_db/utils/video/ffmpeg_wrapper.py +996 -0
- endoreg_db/utils/video/names.py +47 -0
- endoreg_db/utils/video/streaming_processor.py +386 -0
- endoreg_db/utils/video/video_splitter.py +105 -0
- endoreg_db/versioning.md +79 -0
- endoreg_db/views/Frames_NICE_and_PARIS_classifications_views.py +247 -0
- endoreg_db/views/__init__.py +157 -0
- endoreg_db/views/anonymization/__init__.py +31 -0
- endoreg_db/views/anonymization/media_management.py +486 -0
- endoreg_db/views/anonymization/overview.py +307 -0
- endoreg_db/views/anonymization/validate.py +310 -0
- endoreg_db/views/auth/__init__.py +13 -0
- endoreg_db/views/auth/keycloak.py +146 -0
- endoreg_db/views/examination/__init__.py +30 -0
- endoreg_db/views/examination/examination.py +37 -0
- endoreg_db/views/examination/examination_manifest_cache.py +26 -0
- endoreg_db/views/examination/get_finding_classification_choices.py +62 -0
- endoreg_db/views/examination/get_finding_classifications.py +38 -0
- endoreg_db/views/examination/get_findings.py +39 -0
- endoreg_db/views/examination/get_instruments.py +19 -0
- endoreg_db/views/examination/get_interventions.py +14 -0
- endoreg_db/views/finding/__init__.py +9 -0
- endoreg_db/views/finding/finding.py +116 -0
- endoreg_db/views/finding/get_classifications.py +14 -0
- endoreg_db/views/finding/get_interventions.py +17 -0
- endoreg_db/views/finding_classification/__init__.py +13 -0
- endoreg_db/views/finding_classification/base.py +0 -0
- endoreg_db/views/finding_classification/finding_classification.py +41 -0
- endoreg_db/views/finding_classification/get_classification_choices.py +54 -0
- endoreg_db/views/media/__init__.py +32 -0
- endoreg_db/views/media/pdf_media.py +411 -0
- endoreg_db/views/media/sensitive_metadata.py +372 -0
- endoreg_db/views/media/video_media.py +275 -0
- endoreg_db/views/meta/__init__.py +7 -0
- endoreg_db/views/meta/sensitive_meta_list.py +102 -0
- endoreg_db/views/meta/sensitive_meta_verification.py +74 -0
- endoreg_db/views/misc/__init__.py +29 -0
- endoreg_db/views/misc/center.py +14 -0
- endoreg_db/views/misc/csrf.py +8 -0
- endoreg_db/views/misc/gender.py +15 -0
- endoreg_db/views/misc/stats.py +255 -0
- endoreg_db/views/misc/upload_views.py +241 -0
- endoreg_db/views/patient/__init__.py +3 -0
- endoreg_db/views/patient/patient.py +253 -0
- endoreg_db/views/patient_examination/__init__.py +11 -0
- endoreg_db/views/patient_examination/patient_examination.py +141 -0
- endoreg_db/views/patient_examination/patient_examination_create.py +58 -0
- endoreg_db/views/patient_examination/patient_examination_detail.py +63 -0
- endoreg_db/views/patient_examination/patient_examination_list.py +72 -0
- endoreg_db/views/patient_examination/video.py +228 -0
- endoreg_db/views/patient_finding/__init__.py +7 -0
- endoreg_db/views/patient_finding/base.py +0 -0
- endoreg_db/views/patient_finding/patient_finding.py +71 -0
- endoreg_db/views/patient_finding/patient_finding_optimized.py +291 -0
- endoreg_db/views/patient_finding_classification/__init__.py +5 -0
- endoreg_db/views/patient_finding_classification/pfc_create.py +75 -0
- endoreg_db/views/report/__init__.py +7 -0
- endoreg_db/views/report/reimport.py +177 -0
- endoreg_db/views/report/report_stream.py +191 -0
- endoreg_db/views/requirement/__init__.py +11 -0
- endoreg_db/views/requirement/evaluate.py +278 -0
- endoreg_db/views/requirement/lookup.py +380 -0
- endoreg_db/views/requirement/lookup_store.py +183 -0
- endoreg_db/views/requirement/requirement_utils.py +87 -0
- endoreg_db/views/requirement_lookup/lookup.py +0 -0
- endoreg_db/views/requirement_lookup/lookup_store.py +0 -0
- endoreg_db/views/stats/__init__.py +13 -0
- endoreg_db/views/stats/stats_views.py +266 -0
- endoreg_db/views/video/__init__.py +49 -0
- endoreg_db/views/video/ai/__init__.py +8 -0
- endoreg_db/views/video/ai/label.py +159 -0
- endoreg_db/views/video/correction.py +529 -0
- endoreg_db/views/video/reimport.py +230 -0
- endoreg_db/views/video/segments_crud.py +709 -0
- endoreg_db/views/video/video_apply_mask.py +49 -0
- endoreg_db/views/video/video_correction.py +22 -0
- endoreg_db/views/video/video_download_processed.py +58 -0
- endoreg_db/views/video/video_examination_viewset.py +242 -0
- endoreg_db/views/video/video_metadata.py +101 -0
- endoreg_db/views/video/video_processing_history.py +25 -0
- endoreg_db/views/video/video_remove_frames.py +49 -0
- endoreg_db/views/video/video_stream.py +334 -0
- endoreg_db-0.8.9.32.dist-info/METADATA +404 -0
- endoreg_db-0.8.9.32.dist-info/RECORD +787 -0
- endoreg_db-0.8.9.32.dist-info/WHEEL +4 -0
- endoreg_db-0.8.9.32.dist-info/licenses/LICENSE +674 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from endoreg_db.models import Organ
|
|
4
|
+
|
|
5
|
+
from ...data import ORGAN_DATA_DIR
|
|
6
|
+
from ...utils import load_model_data_from_yaml
|
|
7
|
+
|
|
8
|
+
MODEL_0 = Organ
|
|
9
|
+
|
|
10
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
11
|
+
MODEL_0.__name__, #
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
IMPORT_METADATA = {
|
|
15
|
+
MODEL_0.__name__: {
|
|
16
|
+
"dir": ORGAN_DATA_DIR, # e.g. "interventions"
|
|
17
|
+
"model": MODEL_0,
|
|
18
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
19
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Command(BaseCommand):
|
|
25
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
26
|
+
into the Intervention and InterventionType model"""
|
|
27
|
+
|
|
28
|
+
def add_arguments(self, parser):
|
|
29
|
+
parser.add_argument(
|
|
30
|
+
"--verbose",
|
|
31
|
+
action="store_true",
|
|
32
|
+
help="Display verbose output",
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def handle(self, *args, **options):
|
|
36
|
+
verbose = options["verbose"]
|
|
37
|
+
for model_name in IMPORT_MODELS:
|
|
38
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
39
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from ...data import REPORT_TYPE_DATA_DIR
|
|
4
|
+
|
|
5
|
+
#### CUSTOMIZE
|
|
6
|
+
from ...models import PdfType, ReportReaderFlag
|
|
7
|
+
from ...utils import load_model_data_from_yaml
|
|
8
|
+
|
|
9
|
+
SOURCE_DIR = REPORT_TYPE_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
10
|
+
|
|
11
|
+
MODEL_0 = PdfType
|
|
12
|
+
|
|
13
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
14
|
+
MODEL_0.__name__,
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
IMPORT_METADATA = {
|
|
18
|
+
MODEL_0.__name__: {
|
|
19
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
20
|
+
"model": MODEL_0, # e.g. Intervention
|
|
21
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
22
|
+
"model": MODEL_0,
|
|
23
|
+
"foreign_keys": [
|
|
24
|
+
"patient_info_line",
|
|
25
|
+
"endoscope_info_line",
|
|
26
|
+
"examiner_info_line",
|
|
27
|
+
"cut_off_below_lines",
|
|
28
|
+
"cut_off_above_lines",
|
|
29
|
+
], # e.g. ["intervention_types"]
|
|
30
|
+
"foreign_key_models": [
|
|
31
|
+
ReportReaderFlag,
|
|
32
|
+
ReportReaderFlag,
|
|
33
|
+
ReportReaderFlag,
|
|
34
|
+
ReportReaderFlag,
|
|
35
|
+
ReportReaderFlag,
|
|
36
|
+
], # e.g. [InterventionType]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class Command(BaseCommand):
|
|
42
|
+
help = f"""Load all .yaml files in the {SOURCE_DIR} directory"""
|
|
43
|
+
|
|
44
|
+
def add_arguments(self, parser):
|
|
45
|
+
parser.add_argument(
|
|
46
|
+
"--verbose",
|
|
47
|
+
action="store_true",
|
|
48
|
+
help="Display verbose output",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def handle(self, *args, **options):
|
|
52
|
+
verbose = options["verbose"]
|
|
53
|
+
verbose = options["verbose"]
|
|
54
|
+
for model_name in IMPORT_MODELS:
|
|
55
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
56
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
57
|
+
|
|
58
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from ...data import PROFESSION_DATA_DIR
|
|
4
|
+
from ...models import Profession
|
|
5
|
+
from ...utils import load_model_data_from_yaml
|
|
6
|
+
|
|
7
|
+
SOURCE_DIR = PROFESSION_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
8
|
+
|
|
9
|
+
MODEL_0 = Profession
|
|
10
|
+
|
|
11
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
12
|
+
MODEL_0.__name__,
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
IMPORT_METADATA = {
|
|
16
|
+
MODEL_0.__name__: {
|
|
17
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
18
|
+
"model": MODEL_0,
|
|
19
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
20
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Command(BaseCommand):
|
|
26
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
27
|
+
into the Intervention and InterventionType model"""
|
|
28
|
+
|
|
29
|
+
def add_arguments(self, parser):
|
|
30
|
+
parser.add_argument(
|
|
31
|
+
"--verbose",
|
|
32
|
+
action="store_true",
|
|
33
|
+
help="Display verbose output",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def handle(self, *args, **options):
|
|
37
|
+
verbose = options["verbose"]
|
|
38
|
+
for model_name in IMPORT_MODELS:
|
|
39
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
40
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from ...data import QUALIFICATION_DATA_DIR
|
|
4
|
+
from ...models import Qualification, QualificationType
|
|
5
|
+
from ...utils import load_model_data_from_yaml
|
|
6
|
+
|
|
7
|
+
SOURCE_DIR = QUALIFICATION_DATA_DIR # qualification data directory
|
|
8
|
+
|
|
9
|
+
model_0 = QualificationType
|
|
10
|
+
model_1 = Qualification
|
|
11
|
+
|
|
12
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
13
|
+
model_0.__name__,
|
|
14
|
+
model_1.__name__,
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
IMPORT_METADATA = {
|
|
18
|
+
model_0.__name__: {
|
|
19
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
20
|
+
"model": model_0,
|
|
21
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
22
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
23
|
+
},
|
|
24
|
+
model_1.__name__: {
|
|
25
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
26
|
+
"model": model_1,
|
|
27
|
+
"foreign_keys": ["qualification_types"], # e.g. ["intervention_types"]
|
|
28
|
+
"foreign_key_models": [model_0], # e.g. [InterventionType]
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Command(BaseCommand):
|
|
34
|
+
help = """Load all .yaml files in the data/qualification directory
|
|
35
|
+
into the Qualification / Qualification Type model"""
|
|
36
|
+
|
|
37
|
+
def add_arguments(self, parser):
|
|
38
|
+
"""
|
|
39
|
+
Adds the --verbose flag to the command-line parser to enable detailed output.
|
|
40
|
+
"""
|
|
41
|
+
parser.add_argument(
|
|
42
|
+
"--verbose",
|
|
43
|
+
action="store_true",
|
|
44
|
+
help="Display verbose output",
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def handle(self, *args, **options):
|
|
48
|
+
"""
|
|
49
|
+
Loads data from YAML files into the QualificationType and Qualification models.
|
|
50
|
+
|
|
51
|
+
Iterates over predefined models and imports their data from YAML files using associated metadata. Supports verbose output if enabled via command-line options.
|
|
52
|
+
"""
|
|
53
|
+
verbose = options["verbose"]
|
|
54
|
+
for model_name in IMPORT_MODELS:
|
|
55
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
56
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from ...data import REPORT_READER_FLAG_DATA_DIR
|
|
4
|
+
from ...models import ReportReaderFlag
|
|
5
|
+
from ...utils import load_model_data_from_yaml
|
|
6
|
+
|
|
7
|
+
SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
8
|
+
|
|
9
|
+
MODEL_0 = ReportReaderFlag
|
|
10
|
+
|
|
11
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
12
|
+
MODEL_0.__name__,
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
IMPORT_METADATA = {
|
|
16
|
+
MODEL_0.__name__: {
|
|
17
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
18
|
+
"model": MODEL_0,
|
|
19
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
20
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Command(BaseCommand):
|
|
26
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
27
|
+
into the Intervention and InterventionType model"""
|
|
28
|
+
|
|
29
|
+
def add_arguments(self, parser):
|
|
30
|
+
parser.add_argument(
|
|
31
|
+
"--verbose",
|
|
32
|
+
action="store_true",
|
|
33
|
+
help="Display verbose output",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def handle(self, *args, **options):
|
|
37
|
+
verbose = options["verbose"]
|
|
38
|
+
for model_name in IMPORT_MODELS:
|
|
39
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
40
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from endoreg_db.models import (
|
|
4
|
+
Disease,
|
|
5
|
+
DiseaseClassificationChoice,
|
|
6
|
+
Event,
|
|
7
|
+
Examination,
|
|
8
|
+
ExaminationIndication,
|
|
9
|
+
ExaminationRequirementSet, # Added to avoid circular import issues
|
|
10
|
+
Finding,
|
|
11
|
+
FindingClassification,
|
|
12
|
+
FindingClassificationChoice,
|
|
13
|
+
FindingIntervention,
|
|
14
|
+
InformationSource,
|
|
15
|
+
LabValue,
|
|
16
|
+
Medication, # Added Medication model
|
|
17
|
+
MedicationIndication,
|
|
18
|
+
MedicationIndicationType,
|
|
19
|
+
MedicationIntakeTime,
|
|
20
|
+
MedicationSchedule,
|
|
21
|
+
Requirement,
|
|
22
|
+
RequirementOperator,
|
|
23
|
+
RequirementSet,
|
|
24
|
+
RequirementSetType,
|
|
25
|
+
RequirementType,
|
|
26
|
+
Risk,
|
|
27
|
+
RiskType,
|
|
28
|
+
Tag,
|
|
29
|
+
Unit,
|
|
30
|
+
)
|
|
31
|
+
from endoreg_db.models.other.gender import Gender
|
|
32
|
+
|
|
33
|
+
from ...data import (
|
|
34
|
+
EXAMINATION_REQUIREMENT_SET_DATA_DIR,
|
|
35
|
+
REQUIREMENT_DATA_DIR,
|
|
36
|
+
REQUIREMENT_OPERATOR_DATA_DIR,
|
|
37
|
+
REQUIREMENT_SET_DATA_DIR,
|
|
38
|
+
REQUIREMENT_SET_TYPE_DATA_DIR,
|
|
39
|
+
REQUIREMENT_TYPE_DATA_DIR,
|
|
40
|
+
)
|
|
41
|
+
from ...utils import load_model_data_from_yaml
|
|
42
|
+
|
|
43
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
44
|
+
RequirementType.__name__,
|
|
45
|
+
RequirementOperator.__name__,
|
|
46
|
+
Requirement.__name__,
|
|
47
|
+
RequirementSetType.__name__,
|
|
48
|
+
# ExaminationRequirementSet.__name__,
|
|
49
|
+
RequirementSet.__name__,
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _validate_requirement_configuration(fields: dict, *, entry: dict, model):
|
|
54
|
+
"""Ensures requirement fixtures declare both requirement_types and operators."""
|
|
55
|
+
name = fields.get("name") or entry.get("pk") or "<unnamed>"
|
|
56
|
+
|
|
57
|
+
def _values_missing(key: str) -> bool:
|
|
58
|
+
value = fields.get(key)
|
|
59
|
+
if not isinstance(value, list):
|
|
60
|
+
return True
|
|
61
|
+
if not value:
|
|
62
|
+
return True
|
|
63
|
+
return any(not item for item in value)
|
|
64
|
+
|
|
65
|
+
missing = [
|
|
66
|
+
key for key in ("requirement_types", "operators") if _values_missing(key)
|
|
67
|
+
]
|
|
68
|
+
if missing:
|
|
69
|
+
missing_display = ", ".join(missing)
|
|
70
|
+
raise ValueError(
|
|
71
|
+
f"{model.__name__} '{name}' is missing required configuration for: {missing_display}."
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
IMPORT_METADATA = {
|
|
76
|
+
RequirementType.__name__: {
|
|
77
|
+
"dir": REQUIREMENT_TYPE_DATA_DIR, # e.g. "interventions"
|
|
78
|
+
"model": RequirementType,
|
|
79
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
80
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
81
|
+
},
|
|
82
|
+
RequirementOperator.__name__: {
|
|
83
|
+
"dir": REQUIREMENT_OPERATOR_DATA_DIR, # e.g. "interventions"
|
|
84
|
+
"model": RequirementOperator,
|
|
85
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
86
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
87
|
+
},
|
|
88
|
+
ExaminationRequirementSet.__name__: {
|
|
89
|
+
"dir": EXAMINATION_REQUIREMENT_SET_DATA_DIR, # e.g. "interventions"
|
|
90
|
+
"model": ExaminationRequirementSet,
|
|
91
|
+
"foreign_keys": [], # Through model uses foreign keys of both models
|
|
92
|
+
"foreign_key_models": [],
|
|
93
|
+
},
|
|
94
|
+
# ExaminationRequirementSet.__name__,
|
|
95
|
+
Requirement.__name__: {
|
|
96
|
+
"dir": REQUIREMENT_DATA_DIR, # e.g. "interventions"
|
|
97
|
+
"model": Requirement,
|
|
98
|
+
"foreign_keys": [
|
|
99
|
+
"requirement_types",
|
|
100
|
+
"operator",
|
|
101
|
+
"unit",
|
|
102
|
+
"examinations",
|
|
103
|
+
"examination_indications",
|
|
104
|
+
"diseases",
|
|
105
|
+
"disease_classification_choices",
|
|
106
|
+
"events",
|
|
107
|
+
"lab_values",
|
|
108
|
+
"findings",
|
|
109
|
+
"finding_classifications",
|
|
110
|
+
"finding_classification_choices", # updated from finding_morphology_classification_choices
|
|
111
|
+
"finding_interventions",
|
|
112
|
+
"risks",
|
|
113
|
+
"risk_types",
|
|
114
|
+
"medication_indications",
|
|
115
|
+
"medication_indication_types",
|
|
116
|
+
"medication_schedules",
|
|
117
|
+
"medications", # Added medications
|
|
118
|
+
"medication_intake_times",
|
|
119
|
+
"genders",
|
|
120
|
+
],
|
|
121
|
+
"foreign_key_models": [
|
|
122
|
+
RequirementType,
|
|
123
|
+
RequirementOperator,
|
|
124
|
+
Unit,
|
|
125
|
+
Examination,
|
|
126
|
+
ExaminationIndication,
|
|
127
|
+
Disease,
|
|
128
|
+
DiseaseClassificationChoice,
|
|
129
|
+
Event,
|
|
130
|
+
LabValue,
|
|
131
|
+
Finding,
|
|
132
|
+
FindingClassification,
|
|
133
|
+
FindingClassificationChoice,
|
|
134
|
+
FindingIntervention,
|
|
135
|
+
Risk,
|
|
136
|
+
RiskType,
|
|
137
|
+
MedicationIndication,
|
|
138
|
+
MedicationIndicationType,
|
|
139
|
+
MedicationSchedule,
|
|
140
|
+
Medication, # Added Medication model
|
|
141
|
+
MedicationIntakeTime,
|
|
142
|
+
Gender,
|
|
143
|
+
],
|
|
144
|
+
# "validators": [_validate_requirement_configuration],
|
|
145
|
+
},
|
|
146
|
+
RequirementSetType.__name__: {
|
|
147
|
+
"dir": REQUIREMENT_SET_TYPE_DATA_DIR, # e.g. "interventions"
|
|
148
|
+
"model": RequirementSetType,
|
|
149
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
150
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
151
|
+
},
|
|
152
|
+
RequirementSet.__name__: {
|
|
153
|
+
"dir": REQUIREMENT_SET_DATA_DIR, # e.g. "interventions"
|
|
154
|
+
"model": RequirementSet,
|
|
155
|
+
"foreign_keys": [
|
|
156
|
+
"requirement_set_type",
|
|
157
|
+
"requirements", # This is a many-to-many field
|
|
158
|
+
"links_to_sets",
|
|
159
|
+
"information_sources",
|
|
160
|
+
"tags",
|
|
161
|
+
"reqset_exam_links",
|
|
162
|
+
"depends_on",
|
|
163
|
+
], # e.g. ["intervention_types"]
|
|
164
|
+
"foreign_key_models": [
|
|
165
|
+
RequirementSetType,
|
|
166
|
+
Requirement,
|
|
167
|
+
RequirementSet,
|
|
168
|
+
InformationSource,
|
|
169
|
+
Tag,
|
|
170
|
+
ExaminationRequirementSet,
|
|
171
|
+
RequirementSet,
|
|
172
|
+
], # e.g. [InterventionType]
|
|
173
|
+
},
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class Command(BaseCommand):
|
|
178
|
+
help = """Load all requirement-related YAML files from their respective directories
|
|
179
|
+
into the database, including RequirementType, RequirementOperator, Requirement,
|
|
180
|
+
RequirementSetType, and RequirementSet models"""
|
|
181
|
+
|
|
182
|
+
def add_arguments(self, parser):
|
|
183
|
+
"""
|
|
184
|
+
Add command-line arguments to enable verbose output.
|
|
185
|
+
|
|
186
|
+
Adds an optional '--verbose' flag to the command parser. When specified,
|
|
187
|
+
this flag causes the command to display detailed output during execution.
|
|
188
|
+
"""
|
|
189
|
+
parser.add_argument(
|
|
190
|
+
"--verbose",
|
|
191
|
+
action="store_true",
|
|
192
|
+
help="Display verbose output",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
def handle(self, *args, **options):
|
|
196
|
+
"""
|
|
197
|
+
Executes data import for requirement models from YAML files.
|
|
198
|
+
|
|
199
|
+
Retrieves the verbosity setting from the command options and iterates over each model
|
|
200
|
+
listed in IMPORT_MODELS. For each model, it obtains the corresponding metadata from
|
|
201
|
+
IMPORT_METADATA and calls a helper to load the YAML data into the database. Verbose mode
|
|
202
|
+
enables detailed output during the process.
|
|
203
|
+
"""
|
|
204
|
+
verbose = options["verbose"]
|
|
205
|
+
for model_name in IMPORT_MODELS:
|
|
206
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
207
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Management command to load default requirement set tags for role-based filtering.
|
|
3
|
+
|
|
4
|
+
⚠️ DEPRECATED: This command is deprecated. Please use 'load_tag_data' instead.
|
|
5
|
+
|
|
6
|
+
The new method loads tags from YAML configuration files, making it easier to
|
|
7
|
+
add, modify, or remove tags without changing Python code.
|
|
8
|
+
|
|
9
|
+
New Usage:
|
|
10
|
+
uv run python manage.py load_tag_data --verbose
|
|
11
|
+
|
|
12
|
+
Tags are now managed in: endoreg_db/data/tag/requirement_set_tags.yaml
|
|
13
|
+
|
|
14
|
+
This command is kept for backward compatibility but may be removed in future versions.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import logging
|
|
18
|
+
|
|
19
|
+
from django.core.management.base import BaseCommand
|
|
20
|
+
|
|
21
|
+
from endoreg_db.models import Tag
|
|
22
|
+
|
|
23
|
+
logger = logging.getLogger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Command(BaseCommand):
|
|
27
|
+
"""
|
|
28
|
+
⚠️ DEPRECATED: Load default requirement set tags for role-based filtering.
|
|
29
|
+
|
|
30
|
+
Please use 'load_tag_data' instead:
|
|
31
|
+
uv run python manage.py load_tag_data --verbose
|
|
32
|
+
|
|
33
|
+
This command creates or verifies the existence of default tags used
|
|
34
|
+
for filtering requirement sets by user role/expertise level.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
help = "Load default requirement set tags for role-based filtering"
|
|
38
|
+
|
|
39
|
+
def handle(self, *args, **options):
|
|
40
|
+
"""
|
|
41
|
+
Create or verify default tags for requirement set filtering.
|
|
42
|
+
|
|
43
|
+
Tags created:
|
|
44
|
+
- Gastroenterologist: For specialist-level requirements
|
|
45
|
+
- Student: For educational/basic requirements
|
|
46
|
+
- Professor: For academic/research requirements
|
|
47
|
+
- Terminology Expert: For terminology standardization
|
|
48
|
+
- Default Prototype: For baseline/reference requirements
|
|
49
|
+
"""
|
|
50
|
+
default_tags = [
|
|
51
|
+
("Gastroenterologist", "Specialist-level endoscopy requirements"),
|
|
52
|
+
("Student", "Educational and basic learning requirements"),
|
|
53
|
+
("Professor", "Academic and research-focused requirements"),
|
|
54
|
+
("Terminology Expert", "Terminology standardization requirements"),
|
|
55
|
+
("Default Prototype", "Baseline reference requirements"),
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
created_count = 0
|
|
59
|
+
updated_count = 0
|
|
60
|
+
|
|
61
|
+
for tag_name, description in default_tags:
|
|
62
|
+
tag, created = Tag.objects.get_or_create(
|
|
63
|
+
name=tag_name,
|
|
64
|
+
defaults={"description": description}
|
|
65
|
+
if hasattr(Tag, "description")
|
|
66
|
+
else {},
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if created:
|
|
70
|
+
created_count += 1
|
|
71
|
+
self.stdout.write(self.style.SUCCESS(f"✓ Created tag: {tag_name}"))
|
|
72
|
+
logger.info(f"Created requirement set tag: {tag_name}")
|
|
73
|
+
else:
|
|
74
|
+
updated_count += 1
|
|
75
|
+
self.stdout.write(f" Tag already exists: {tag_name}")
|
|
76
|
+
|
|
77
|
+
# Summary
|
|
78
|
+
total_tags = len(default_tags)
|
|
79
|
+
self.stdout.write(
|
|
80
|
+
self.style.SUCCESS(
|
|
81
|
+
f"\n{'=' * 60}\n"
|
|
82
|
+
f"Tag Loading Complete\n"
|
|
83
|
+
f"{'=' * 60}\n"
|
|
84
|
+
f" New tags created: {created_count}\n"
|
|
85
|
+
f" Existing tags found: {updated_count}\n"
|
|
86
|
+
f" Total tags verified: {total_tags}\n"
|
|
87
|
+
f"{'=' * 60}"
|
|
88
|
+
)
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
logger.info(
|
|
92
|
+
f"Requirement set tag loading complete: "
|
|
93
|
+
f"{created_count} created, {updated_count} existing, "
|
|
94
|
+
f"{total_tags} total"
|
|
95
|
+
)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from endoreg_db.models import Risk, RiskType
|
|
4
|
+
|
|
5
|
+
from ...data import RISK_DATA_DIR, RISK_TYPE_DATA_DIR
|
|
6
|
+
from ...utils import load_model_data_from_yaml
|
|
7
|
+
|
|
8
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
9
|
+
RiskType.__name__,
|
|
10
|
+
Risk.__name__,
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
IMPORT_METADATA = {
|
|
14
|
+
RiskType.__name__: {
|
|
15
|
+
"dir": RISK_TYPE_DATA_DIR, # e.g. "interventions"
|
|
16
|
+
"model": RiskType,
|
|
17
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
18
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
19
|
+
},
|
|
20
|
+
Risk.__name__: {
|
|
21
|
+
"dir": RISK_DATA_DIR, # e.g. "interventions"
|
|
22
|
+
"model": Risk,
|
|
23
|
+
"foreign_keys": ["risk_type"], # e.g. ["intervention_types"]
|
|
24
|
+
"foreign_key_models": [RiskType], # e.g. [InterventionType]
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class Command(BaseCommand):
|
|
30
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
31
|
+
into the Intervention and InterventionType model"""
|
|
32
|
+
|
|
33
|
+
def add_arguments(self, parser):
|
|
34
|
+
"""
|
|
35
|
+
Adds the '--verbose' flag to the argument parser for detailed output.
|
|
36
|
+
|
|
37
|
+
This method extends the given parser by adding an option that, when specified,
|
|
38
|
+
enables verbose output during command execution.
|
|
39
|
+
"""
|
|
40
|
+
parser.add_argument(
|
|
41
|
+
"--verbose",
|
|
42
|
+
action="store_true",
|
|
43
|
+
help="Display verbose output",
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def handle(self, *args, **options):
|
|
47
|
+
"""
|
|
48
|
+
Execute the command to load YAML data into configured models.
|
|
49
|
+
|
|
50
|
+
Retrieves the verbosity setting from the options and iterates over each model in IMPORT_MODELS.
|
|
51
|
+
For each model, it obtains the corresponding metadata from IMPORT_METADATA and calls the utility
|
|
52
|
+
function load_model_data_from_yaml to load data from the associated YAML files.
|
|
53
|
+
"""
|
|
54
|
+
verbose = options["verbose"]
|
|
55
|
+
for model_name in IMPORT_MODELS:
|
|
56
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
57
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
|
|
3
|
+
from ...data import REPORT_READER_FLAG_DATA_DIR
|
|
4
|
+
from ...models import Shift, ShiftType
|
|
5
|
+
from ...utils import load_model_data_from_yaml
|
|
6
|
+
|
|
7
|
+
SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
8
|
+
|
|
9
|
+
model_0 = ShiftType
|
|
10
|
+
model_1 = Shift
|
|
11
|
+
|
|
12
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
13
|
+
model_0.__name__,
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
IMPORT_METADATA = {
|
|
17
|
+
model_0.__name__: {
|
|
18
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
19
|
+
"model": model_0,
|
|
20
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
21
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
22
|
+
},
|
|
23
|
+
model_1.__name__: {
|
|
24
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
25
|
+
"model": model_1,
|
|
26
|
+
"foreign_keys": ["shift_types"], # e.g. ["intervention_types"]
|
|
27
|
+
"foreign_key_models": [model_0], # e.g. [InterventionType]
|
|
28
|
+
},
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class Command(BaseCommand):
|
|
33
|
+
help = """Load all .yaml files in the data/shift directory
|
|
34
|
+
into the Shift and ShiftType model"""
|
|
35
|
+
|
|
36
|
+
def add_arguments(self, parser):
|
|
37
|
+
"""
|
|
38
|
+
Adds the --verbose command-line option to enable detailed output during execution.
|
|
39
|
+
"""
|
|
40
|
+
parser.add_argument(
|
|
41
|
+
"--verbose",
|
|
42
|
+
action="store_true",
|
|
43
|
+
help="Display verbose output",
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def handle(self, *args, **options):
|
|
47
|
+
"""
|
|
48
|
+
Loads YAML data files into models defined in IMPORT_MODELS using provided metadata.
|
|
49
|
+
|
|
50
|
+
Iterates over each model specified in IMPORT_MODELS, retrieves its import metadata,
|
|
51
|
+
and calls the data loading utility to populate the database from YAML files. Supports
|
|
52
|
+
optional verbose output if enabled via command-line options.
|
|
53
|
+
"""
|
|
54
|
+
verbose = options["verbose"]
|
|
55
|
+
for model_name in IMPORT_MODELS:
|
|
56
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
57
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|