endoreg-db 0.6.0__py3-none-any.whl → 0.6.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/case_generator/__init__.py +0 -0
- endoreg_db/case_generator/case_generator.py +159 -0
- endoreg_db/case_generator/lab_sample_factory.py +33 -0
- endoreg_db/case_generator/utils.py +30 -0
- endoreg_db/data/__init__.py +118 -0
- endoreg_db/data/agl_service/data.yaml +19 -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-set/data.yaml +21 -0
- endoreg_db/data/ai_model_label/label-type/data.yaml +7 -0
- endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +5 -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 +90 -0
- endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -0
- endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -0
- endoreg_db/data/contraindication/bleeding.yaml +11 -0
- endoreg_db/data/disease/cardiovascular.yaml +37 -0
- endoreg_db/data/disease/hepatology.yaml +5 -0
- endoreg_db/data/disease/misc.yaml +6 -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 +47 -0
- endoreg_db/data/event/cardiology.yaml +28 -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/examination/examinations/data.yaml +66 -0
- endoreg_db/data/examination/time/data.yaml +48 -0
- endoreg_db/data/examination/time-type/data.yaml +8 -0
- endoreg_db/data/examination/type/data.yaml +5 -0
- endoreg_db/data/examination_indication/endoscopy.yaml +8 -0
- endoreg_db/data/examination_indication_classification/endoscopy.yaml +8 -0
- endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +101 -0
- endoreg_db/data/finding/data.yaml +141 -0
- endoreg_db/data/finding_intervention/endoscopy.yaml +138 -0
- endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
- endoreg_db/data/finding_location_classification/colonoscopy.yaml +46 -0
- endoreg_db/data/finding_location_classification_choice/colonoscopy.yaml +240 -0
- endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +48 -0
- endoreg_db/data/finding_morphology_classification_choice/colon_lesion_circularity_default.yaml +34 -0
- endoreg_db/data/finding_morphology_classification_choice/colon_lesion_nice.yaml +20 -0
- endoreg_db/data/finding_morphology_classification_choice/colon_lesion_paris.yaml +65 -0
- endoreg_db/data/finding_morphology_classification_choice/colon_lesion_planarity_default.yaml +56 -0
- endoreg_db/data/finding_morphology_classification_choice/colon_lesion_surface_intact_default.yaml +39 -0
- endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +57 -0
- endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +79 -0
- endoreg_db/data/finding_type/data.yaml +30 -0
- endoreg_db/data/gender/data.yaml +35 -0
- endoreg_db/data/information_source/data.yaml +30 -0
- endoreg_db/data/information_source/medication.yaml +6 -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 +33 -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 +51 -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 +29 -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/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -0
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +30 -0
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -0
- endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -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 +92 -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 +13 -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/forms/__init__.py +5 -0
- endoreg_db/forms/examination_form.py +11 -0
- endoreg_db/forms/patient_finding_intervention_form.py +19 -0
- endoreg_db/forms/patient_form.py +26 -0
- endoreg_db/forms/questionnaires/__init__.py +1 -0
- endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -0
- endoreg_db/forms/settings/__init__.py +8 -0
- endoreg_db/forms/unit.py +6 -0
- endoreg_db/management/__init__.py +0 -0
- endoreg_db/management/commands/__init__.py +0 -0
- endoreg_db/management/commands/_load_model_template.py +41 -0
- endoreg_db/management/commands/delete_all.py +18 -0
- endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -0
- endoreg_db/management/commands/fix_auth_permission.py +20 -0
- endoreg_db/management/commands/load_active_model_data.py +45 -0
- endoreg_db/management/commands/load_ai_model_data.py +79 -0
- endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
- endoreg_db/management/commands/load_base_db_data.py +178 -0
- endoreg_db/management/commands/load_center_data.py +43 -0
- endoreg_db/management/commands/load_contraindication_data.py +41 -0
- endoreg_db/management/commands/load_disease_classification_choices_data.py +41 -0
- endoreg_db/management/commands/load_disease_classification_data.py +41 -0
- endoreg_db/management/commands/load_disease_data.py +62 -0
- endoreg_db/management/commands/load_distribution_data.py +66 -0
- endoreg_db/management/commands/load_endoscope_data.py +68 -0
- endoreg_db/management/commands/load_event_data.py +41 -0
- endoreg_db/management/commands/load_examination_data.py +75 -0
- endoreg_db/management/commands/load_examination_indication_data.py +65 -0
- endoreg_db/management/commands/load_finding_data.py +171 -0
- endoreg_db/management/commands/load_g_play_data.py +113 -0
- endoreg_db/management/commands/load_gender_data.py +44 -0
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +133 -0
- endoreg_db/management/commands/load_information_source.py +45 -0
- endoreg_db/management/commands/load_lab_value_data.py +50 -0
- endoreg_db/management/commands/load_logging_data.py +39 -0
- endoreg_db/management/commands/load_lx_data.py +64 -0
- endoreg_db/management/commands/load_medication_data.py +103 -0
- endoreg_db/management/commands/load_medication_indication_data.py +63 -0
- endoreg_db/management/commands/load_medication_indication_type_data.py +41 -0
- endoreg_db/management/commands/load_medication_intake_time_data.py +41 -0
- endoreg_db/management/commands/load_medication_schedule_data.py +55 -0
- endoreg_db/management/commands/load_name_data.py +37 -0
- endoreg_db/management/commands/load_network_data.py +57 -0
- endoreg_db/management/commands/load_organ_data.py +43 -0
- endoreg_db/management/commands/load_pdf_type_data.py +61 -0
- endoreg_db/management/commands/load_profession_data.py +44 -0
- endoreg_db/management/commands/load_report_reader_flag_data.py +46 -0
- endoreg_db/management/commands/load_unit_data.py +46 -0
- endoreg_db/management/commands/load_user_groups.py +28 -0
- endoreg_db/management/commands/register_ai_model.py +64 -0
- endoreg_db/management/commands/reset_celery_schedule.py +9 -0
- endoreg_db/migrations/0001_initial.py +2045 -0
- endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +23 -0
- endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +23 -0
- endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +25 -0
- endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +33 -0
- endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +23 -0
- endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +24 -0
- endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +48 -0
- endoreg_db/migrations/__init__.py +0 -0
- endoreg_db/models/__init__.py +376 -0
- endoreg_db/models/ai_model/__init__.py +4 -0
- endoreg_db/models/ai_model/active_model.py +9 -0
- endoreg_db/models/ai_model/ai_model.py +103 -0
- endoreg_db/models/ai_model/lightning/__init__.py +3 -0
- endoreg_db/models/ai_model/lightning/inference_dataset.py +53 -0
- endoreg_db/models/ai_model/lightning/multilabel_classification_net.py +155 -0
- endoreg_db/models/ai_model/lightning/postprocess.py +53 -0
- endoreg_db/models/ai_model/lightning/predict.py +172 -0
- endoreg_db/models/ai_model/lightning/prediction_visualizer.py +55 -0
- endoreg_db/models/ai_model/lightning/preprocess.py +68 -0
- endoreg_db/models/ai_model/lightning/run_visualizer.py +21 -0
- endoreg_db/models/ai_model/model_meta.py +250 -0
- endoreg_db/models/ai_model/model_type.py +36 -0
- endoreg_db/models/ai_model/utils.py +8 -0
- endoreg_db/models/annotation/__init__.py +32 -0
- endoreg_db/models/annotation/anonymized_image_annotation.py +115 -0
- endoreg_db/models/annotation/binary_classification_annotation_task.py +117 -0
- endoreg_db/models/annotation/image_classification.py +86 -0
- endoreg_db/models/annotation/video_segmentation_annotation.py +52 -0
- endoreg_db/models/annotation/video_segmentation_labelset.py +20 -0
- endoreg_db/models/case/__init__.py +1 -0
- endoreg_db/models/case/case.py +34 -0
- endoreg_db/models/case_template/__init__.py +15 -0
- endoreg_db/models/case_template/case_template.py +125 -0
- endoreg_db/models/case_template/case_template_rule.py +276 -0
- endoreg_db/models/case_template/case_template_rule_value.py +88 -0
- endoreg_db/models/case_template/case_template_type.py +28 -0
- endoreg_db/models/center/__init__.py +11 -0
- endoreg_db/models/center/center.py +51 -0
- endoreg_db/models/center/center_product.py +33 -0
- endoreg_db/models/center/center_resource.py +33 -0
- endoreg_db/models/center/center_waste.py +16 -0
- endoreg_db/models/contraindication/__init__.py +21 -0
- endoreg_db/models/data_file/__init__.py +39 -0
- endoreg_db/models/data_file/base_classes/__init__.py +7 -0
- endoreg_db/models/data_file/base_classes/abstract_frame.py +100 -0
- endoreg_db/models/data_file/base_classes/abstract_pdf.py +136 -0
- endoreg_db/models/data_file/base_classes/abstract_video.py +807 -0
- endoreg_db/models/data_file/base_classes/frame_helpers.py +17 -0
- endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +19 -0
- endoreg_db/models/data_file/base_classes/utils.py +80 -0
- endoreg_db/models/data_file/frame.py +29 -0
- endoreg_db/models/data_file/import_classes/__init__.py +18 -0
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +35 -0
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -0
- endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -0
- endoreg_db/models/data_file/import_classes/raw_pdf.py +260 -0
- endoreg_db/models/data_file/import_classes/raw_video.py +288 -0
- endoreg_db/models/data_file/metadata/__init__.py +13 -0
- endoreg_db/models/data_file/metadata/pdf_meta.py +74 -0
- endoreg_db/models/data_file/metadata/sensitive_meta.py +290 -0
- endoreg_db/models/data_file/metadata/video_meta.py +199 -0
- endoreg_db/models/data_file/report_file.py +56 -0
- endoreg_db/models/data_file/video/__init__.py +11 -0
- endoreg_db/models/data_file/video/import_meta.py +25 -0
- endoreg_db/models/data_file/video/video.py +196 -0
- endoreg_db/models/data_file/video_segment.py +214 -0
- endoreg_db/models/disease.py +79 -0
- endoreg_db/models/emission/__init__.py +5 -0
- endoreg_db/models/emission/emission_factor.py +85 -0
- endoreg_db/models/event.py +73 -0
- endoreg_db/models/examination/__init__.py +9 -0
- endoreg_db/models/examination/examination.py +67 -0
- endoreg_db/models/examination/examination_indication.py +170 -0
- endoreg_db/models/examination/examination_time.py +53 -0
- endoreg_db/models/examination/examination_time_type.py +48 -0
- endoreg_db/models/examination/examination_type.py +40 -0
- endoreg_db/models/finding/__init__.py +11 -0
- endoreg_db/models/finding/finding.py +75 -0
- endoreg_db/models/finding/finding_intervention.py +60 -0
- endoreg_db/models/finding/finding_location_classification.py +94 -0
- endoreg_db/models/finding/finding_morphology_classification.py +89 -0
- endoreg_db/models/finding/finding_type.py +22 -0
- endoreg_db/models/hardware/__init__.py +2 -0
- endoreg_db/models/hardware/endoscope.py +60 -0
- endoreg_db/models/hardware/endoscopy_processor.py +155 -0
- endoreg_db/models/information_source.py +29 -0
- endoreg_db/models/label/__init__.py +1 -0
- endoreg_db/models/label/label.py +112 -0
- endoreg_db/models/laboratory/__init__.py +1 -0
- endoreg_db/models/laboratory/lab_value.py +111 -0
- endoreg_db/models/logging/__init__.py +11 -0
- endoreg_db/models/logging/agl_service.py +19 -0
- endoreg_db/models/logging/base.py +22 -0
- endoreg_db/models/logging/log_type.py +23 -0
- endoreg_db/models/logging/network_device.py +27 -0
- endoreg_db/models/lx/__init__.py +4 -0
- endoreg_db/models/lx/client.py +57 -0
- endoreg_db/models/lx/identity.py +34 -0
- endoreg_db/models/lx/permission.py +18 -0
- endoreg_db/models/lx/user.py +16 -0
- endoreg_db/models/medication/__init__.py +19 -0
- endoreg_db/models/medication/medication.py +33 -0
- endoreg_db/models/medication/medication_indication.py +50 -0
- endoreg_db/models/medication/medication_indication_type.py +34 -0
- endoreg_db/models/medication/medication_intake_time.py +26 -0
- endoreg_db/models/medication/medication_schedule.py +37 -0
- endoreg_db/models/network/__init__.py +9 -0
- endoreg_db/models/network/agl_service.py +38 -0
- endoreg_db/models/network/network_device.py +58 -0
- endoreg_db/models/network/network_device_type.py +23 -0
- endoreg_db/models/organ/__init__.py +38 -0
- endoreg_db/models/other/__init__.py +23 -0
- endoreg_db/models/other/distribution/__init__.py +44 -0
- endoreg_db/models/other/distribution/base_value_distribution.py +20 -0
- endoreg_db/models/other/distribution/date_value_distribution.py +91 -0
- endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +32 -0
- endoreg_db/models/other/distribution/numeric_value_distribution.py +97 -0
- endoreg_db/models/other/distribution/single_categorical_value_distribution.py +22 -0
- endoreg_db/models/other/distribution.py +5 -0
- endoreg_db/models/other/material.py +20 -0
- endoreg_db/models/other/resource.py +18 -0
- endoreg_db/models/other/transport_route.py +22 -0
- endoreg_db/models/other/waste.py +20 -0
- endoreg_db/models/patient/__init__.py +24 -0
- endoreg_db/models/patient/patient_examination.py +182 -0
- endoreg_db/models/patient/patient_finding.py +143 -0
- endoreg_db/models/patient/patient_finding_intervention.py +26 -0
- endoreg_db/models/patient/patient_finding_location.py +120 -0
- endoreg_db/models/patient/patient_finding_morphology.py +166 -0
- endoreg_db/models/permissions/__init__.py +44 -0
- endoreg_db/models/persons/__init__.py +34 -0
- endoreg_db/models/persons/examiner/__init__.py +2 -0
- endoreg_db/models/persons/examiner/examiner.py +60 -0
- endoreg_db/models/persons/examiner/examiner_type.py +2 -0
- endoreg_db/models/persons/first_name.py +18 -0
- endoreg_db/models/persons/gender.py +22 -0
- endoreg_db/models/persons/last_name.py +20 -0
- endoreg_db/models/persons/patient/__init__.py +8 -0
- endoreg_db/models/persons/patient/patient.py +389 -0
- endoreg_db/models/persons/patient/patient_disease.py +22 -0
- endoreg_db/models/persons/patient/patient_event.py +52 -0
- endoreg_db/models/persons/patient/patient_examination_indication.py +32 -0
- endoreg_db/models/persons/patient/patient_lab_sample.py +108 -0
- endoreg_db/models/persons/patient/patient_lab_value.py +197 -0
- endoreg_db/models/persons/patient/patient_medication.py +59 -0
- endoreg_db/models/persons/patient/patient_medication_schedule.py +88 -0
- endoreg_db/models/persons/person.py +31 -0
- endoreg_db/models/persons/portal_user_information.py +27 -0
- endoreg_db/models/prediction/__init__.py +8 -0
- endoreg_db/models/prediction/image_classification.py +51 -0
- endoreg_db/models/prediction/video_prediction_meta.py +306 -0
- endoreg_db/models/product/__init__.py +14 -0
- endoreg_db/models/product/product.py +110 -0
- endoreg_db/models/product/product_group.py +27 -0
- endoreg_db/models/product/product_material.py +28 -0
- endoreg_db/models/product/product_weight.py +38 -0
- endoreg_db/models/product/reference_product.py +115 -0
- endoreg_db/models/questionnaires/__init__.py +114 -0
- endoreg_db/models/quiz/__init__.py +9 -0
- endoreg_db/models/quiz/quiz_answer.py +41 -0
- endoreg_db/models/quiz/quiz_question.py +54 -0
- endoreg_db/models/report_reader/__init__.py +7 -0
- endoreg_db/models/report_reader/report_reader_config.py +53 -0
- endoreg_db/models/report_reader/report_reader_flag.py +20 -0
- endoreg_db/models/rules/__init__.py +5 -0
- endoreg_db/models/rules/rule.py +24 -0
- endoreg_db/models/rules/rule_applicator.py +224 -0
- endoreg_db/models/rules/rule_attribute_dtype.py +19 -0
- endoreg_db/models/rules/rule_type.py +22 -0
- endoreg_db/models/rules/ruleset.py +19 -0
- endoreg_db/models/unit.py +22 -0
- endoreg_db/queries/__init__.py +5 -0
- endoreg_db/queries/annotations/__init__.py +3 -0
- endoreg_db/queries/annotations/legacy.py +158 -0
- endoreg_db/queries/get/__init__.py +6 -0
- endoreg_db/queries/get/annotation.py +0 -0
- endoreg_db/queries/get/center.py +42 -0
- endoreg_db/queries/get/model.py +13 -0
- endoreg_db/queries/get/patient.py +14 -0
- endoreg_db/queries/get/patient_examination.py +20 -0
- endoreg_db/queries/get/prediction.py +0 -0
- endoreg_db/queries/get/report_file.py +33 -0
- endoreg_db/queries/get/video.py +31 -0
- endoreg_db/queries/get/video_import_meta.py +0 -0
- endoreg_db/queries/get/video_prediction_meta.py +0 -0
- endoreg_db/queries/sanity/__init_.py +0 -0
- endoreg_db/serializers/__init__.py +10 -0
- endoreg_db/serializers/ai_model.py +19 -0
- endoreg_db/serializers/annotation.py +14 -0
- endoreg_db/serializers/center.py +11 -0
- endoreg_db/serializers/examination.py +33 -0
- endoreg_db/serializers/frame.py +9 -0
- endoreg_db/serializers/hardware.py +21 -0
- endoreg_db/serializers/label.py +22 -0
- endoreg_db/serializers/patient.py +33 -0
- endoreg_db/serializers/prediction.py +10 -0
- endoreg_db/serializers/raw_video_meta_validation.py +13 -0
- endoreg_db/serializers/report_file.py +7 -0
- endoreg_db/serializers/video.py +20 -0
- endoreg_db/serializers/video_segmentation.py +492 -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/utils/__init__.py +36 -0
- endoreg_db/utils/cropping.py +29 -0
- endoreg_db/utils/dataloader.py +118 -0
- endoreg_db/utils/dates.py +39 -0
- endoreg_db/utils/file_operations.py +30 -0
- endoreg_db/utils/hashs.py +152 -0
- endoreg_db/utils/legacy_ocr.py +201 -0
- endoreg_db/utils/names.py +74 -0
- endoreg_db/utils/ocr.py +190 -0
- endoreg_db/utils/parse_and_generate_yaml.py +46 -0
- endoreg_db/utils/pydantic_models/__init__.py +6 -0
- endoreg_db/utils/pydantic_models/db_config.py +57 -0
- endoreg_db/utils/uuid.py +4 -0
- endoreg_db/utils/validate_endo_roi.py +19 -0
- endoreg_db/utils/validate_subcategory_dict.py +91 -0
- endoreg_db/utils/video/__init__.py +13 -0
- endoreg_db/utils/video/extract_frames.py +121 -0
- endoreg_db/utils/video/transcode_videofile.py +111 -0
- endoreg_db/views/__init__.py +2 -0
- endoreg_db/views/csrf.py +7 -0
- endoreg_db/views/patient_views.py +90 -0
- endoreg_db/views/raw_video_meta_validation_views.py +38 -0
- endoreg_db/views/report_views.py +96 -0
- endoreg_db/views/video_segmentation_views.py +149 -0
- endoreg_db/views/views_for_timeline.py +46 -0
- {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info}/METADATA +14 -4
- endoreg_db-0.6.2.dist-info/RECORD +420 -0
- {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info}/WHEEL +1 -2
- endoreg_db-0.6.0.dist-info/RECORD +0 -11
- endoreg_db-0.6.0.dist-info/top_level.txt +0 -1
- {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info/licenses}/LICENSE +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CenterManager(models.Manager):
|
|
5
|
+
def get_by_natural_key(self, name):
|
|
6
|
+
return self.get(name=name)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Center(models.Model):
|
|
10
|
+
objects = CenterManager()
|
|
11
|
+
|
|
12
|
+
# import_id = models.IntegerField(primary_key=True)
|
|
13
|
+
name = models.CharField(max_length=255)
|
|
14
|
+
name_de = models.CharField(max_length=255, blank=True, null=True)
|
|
15
|
+
name_en = models.CharField(max_length=255, blank=True, null=True)
|
|
16
|
+
|
|
17
|
+
first_names = models.ManyToManyField(
|
|
18
|
+
"FirstName",
|
|
19
|
+
related_name="centers",
|
|
20
|
+
)
|
|
21
|
+
last_names = models.ManyToManyField("LastName", related_name="centers")
|
|
22
|
+
|
|
23
|
+
@classmethod
|
|
24
|
+
def get_by_name(cls, name):
|
|
25
|
+
return cls.objects.get(name=name)
|
|
26
|
+
|
|
27
|
+
def natural_key(self):
|
|
28
|
+
return (self.name,)
|
|
29
|
+
|
|
30
|
+
def __str__(self):
|
|
31
|
+
return self.name
|
|
32
|
+
|
|
33
|
+
def get_first_names(self):
|
|
34
|
+
from endoreg_db.models import FirstName
|
|
35
|
+
|
|
36
|
+
names = FirstName.objects.filter(centers=self)
|
|
37
|
+
return names
|
|
38
|
+
|
|
39
|
+
def get_last_names(self):
|
|
40
|
+
from endoreg_db.models import LastName
|
|
41
|
+
|
|
42
|
+
names = LastName.objects.filter(centers=self)
|
|
43
|
+
return names
|
|
44
|
+
|
|
45
|
+
def get_endoscopes(self):
|
|
46
|
+
from endoreg_db.models import Endoscope
|
|
47
|
+
|
|
48
|
+
endoscopes = Endoscope.objects.filter(center=self)
|
|
49
|
+
return endoscopes
|
|
50
|
+
|
|
51
|
+
# def get_endoscopy_processor
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class CenterProduct(models.Model):
|
|
4
|
+
product = models.ForeignKey("Product", on_delete=models.CASCADE)
|
|
5
|
+
date_used = models.DateField()
|
|
6
|
+
center = models.ForeignKey("Center", on_delete=models.CASCADE)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def get_product_group(self):
|
|
10
|
+
product = self.product
|
|
11
|
+
product_group = product.product_group
|
|
12
|
+
|
|
13
|
+
return product_group
|
|
14
|
+
|
|
15
|
+
def get_reference_product(self):
|
|
16
|
+
product_group = self.get_product_group()
|
|
17
|
+
reference_product = product_group.reference_product
|
|
18
|
+
|
|
19
|
+
return reference_product
|
|
20
|
+
|
|
21
|
+
def get_product_weight(self):
|
|
22
|
+
product = self.product
|
|
23
|
+
weight, unit = product.get_product_weight()
|
|
24
|
+
|
|
25
|
+
return weight, unit
|
|
26
|
+
|
|
27
|
+
def get_package_weight(self):
|
|
28
|
+
product = self.product
|
|
29
|
+
weight, unit = product.get_package_weight()
|
|
30
|
+
|
|
31
|
+
return weight, unit
|
|
32
|
+
|
|
33
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class CenterResource(models.Model):
|
|
4
|
+
name = models.CharField(max_length=255, null=True)
|
|
5
|
+
center = models.ForeignKey("Center", on_delete=models.CASCADE)
|
|
6
|
+
name_de = models.CharField(max_length=255, null=True)
|
|
7
|
+
name_en = models.CharField(max_length=255, null=True)
|
|
8
|
+
quantity = models.FloatField()
|
|
9
|
+
resource = models.ForeignKey("Resource", on_delete=models.CASCADE)
|
|
10
|
+
transport_emission_factor = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True,
|
|
11
|
+
related_name="center_resource_transport_emission_factor")
|
|
12
|
+
use_emission_factor = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True,
|
|
13
|
+
related_name="center_resource_use_emission_factor")
|
|
14
|
+
year = models.IntegerField()
|
|
15
|
+
unit = models.ForeignKey("Unit", on_delete=models.SET_NULL, null=True)
|
|
16
|
+
|
|
17
|
+
def __str__(self):
|
|
18
|
+
result_string = ""
|
|
19
|
+
|
|
20
|
+
if self.name is not None:
|
|
21
|
+
result_string += self.name + ":\n"
|
|
22
|
+
|
|
23
|
+
result_string += "\tCenter\t-\t" + str(self.center) + "\n"
|
|
24
|
+
result_string += "\tResource\t-\t" + str(self.resource) + "\n"
|
|
25
|
+
result_string += "\tQuantity\t-\t" + str(self.quantity) + "\n"
|
|
26
|
+
result_string += "\tYear\t-\t" + str(self.year) + "\n"
|
|
27
|
+
result_string += "\tUnit\t-\t" + str(self.unit) + "\n"
|
|
28
|
+
result_string += "\tTransport Emission Factor\t-\t" + str(self.transport_emission_factor) + "\n"
|
|
29
|
+
result_string += "\tUse Emission Factor\t-\t" + str(self.use_emission_factor) + "\n"
|
|
30
|
+
|
|
31
|
+
result_string += "\n"
|
|
32
|
+
|
|
33
|
+
return result_string
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class CenterWaste(models.Model):
|
|
4
|
+
center = models.ForeignKey("Center", on_delete=models.CASCADE)
|
|
5
|
+
year = models.IntegerField()
|
|
6
|
+
waste = models.ForeignKey("Waste", on_delete=models.CASCADE)
|
|
7
|
+
quantity = models.FloatField()
|
|
8
|
+
unit = models.ForeignKey("Unit", on_delete=models.SET_NULL, null=True)
|
|
9
|
+
emission_factor = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def __str__(self):
|
|
13
|
+
result = f"{self.quantity} {self.unit}"
|
|
14
|
+
result += f" -\t{self.waste}, EmissionFactor: {self.emission_factor}\t\t- {self.center} - {self.year}"
|
|
15
|
+
|
|
16
|
+
return result
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class ContraindicationManager(models.Manager):
|
|
4
|
+
def get_by_natural_key(self, name):
|
|
5
|
+
return self.get(name=name)
|
|
6
|
+
|
|
7
|
+
class Contraindication(models.Model):
|
|
8
|
+
name = models.CharField(max_length=100, unique=True)
|
|
9
|
+
name_de = models.CharField(max_length=100, blank=True, null=True)
|
|
10
|
+
name_en = models.CharField(max_length=100, blank=True, null=True)
|
|
11
|
+
description = models.TextField(blank=True, null=True)
|
|
12
|
+
description_de = models.TextField(blank=True, null=True)
|
|
13
|
+
description_en = models.TextField(blank=True, null=True)
|
|
14
|
+
|
|
15
|
+
objects = ContraindicationManager()
|
|
16
|
+
|
|
17
|
+
def natural_key(self):
|
|
18
|
+
return (self.name,)
|
|
19
|
+
|
|
20
|
+
def __str__(self):
|
|
21
|
+
return self.name
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from .frame import Frame, RawFrame
|
|
2
|
+
from .report_file import ReportFile
|
|
3
|
+
from .video import Video, VideoImportMeta
|
|
4
|
+
from .video_segment import (
|
|
5
|
+
LabelVideoSegment,
|
|
6
|
+
LabelRawVideoSegment,
|
|
7
|
+
find_segments_in_prediction_array,
|
|
8
|
+
)
|
|
9
|
+
from .metadata import (
|
|
10
|
+
SensitiveMeta,
|
|
11
|
+
PdfMeta,
|
|
12
|
+
PdfType,
|
|
13
|
+
VideoMeta,
|
|
14
|
+
FFMpegMeta,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
from .import_classes import (
|
|
18
|
+
RawPdfFile,
|
|
19
|
+
RawVideoFile,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"Frame",
|
|
25
|
+
"ReportFile",
|
|
26
|
+
"Video",
|
|
27
|
+
"LabelVideoSegment",
|
|
28
|
+
"LabelRawVideoSegment",
|
|
29
|
+
"find_segments_in_prediction_array",
|
|
30
|
+
"SensitiveMeta",
|
|
31
|
+
"PdfMeta",
|
|
32
|
+
"PdfType",
|
|
33
|
+
"RawFrame",
|
|
34
|
+
"VideoMeta",
|
|
35
|
+
"FFMpegMeta",
|
|
36
|
+
"VideoImportMeta",
|
|
37
|
+
"RawPdfFile",
|
|
38
|
+
"RawVideoFile",
|
|
39
|
+
]
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
from typing import Union, TYPE_CHECKING
|
|
2
|
+
from endoreg_db.models.annotation.image_classification import (
|
|
3
|
+
ImageClassificationAnnotation,
|
|
4
|
+
)
|
|
5
|
+
from endoreg_db.models.label.label import Label
|
|
6
|
+
|
|
7
|
+
from django.db import models
|
|
8
|
+
from .utils import FRAME_DIR_NAME
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from endoreg_db.models import Video, RawVideoFile
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AbstractFrame(models.Model):
|
|
15
|
+
frame_number = models.IntegerField()
|
|
16
|
+
# Add any other fields you need to store frame-related information
|
|
17
|
+
suffix = models.CharField(max_length=255)
|
|
18
|
+
# ImageClassificationAnnotation has a foreign key to this model (related name: image_classification_annotations)
|
|
19
|
+
# image = models.ImageField(blank=True, null=True)
|
|
20
|
+
is_raw = models.BooleanField(default=False)
|
|
21
|
+
extracted = models.BooleanField(default=False)
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
video: Union["Video", "RawVideoFile"]
|
|
25
|
+
image_classification_annotations: (
|
|
26
|
+
"models.QuerySet[ImageClassificationAnnotation]"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
class Meta:
|
|
30
|
+
# Ensure that for each video, the frame_number is unique
|
|
31
|
+
abstract = True
|
|
32
|
+
unique_together = ("video", "frame_number")
|
|
33
|
+
# Optimize for retrieval in frame_number order
|
|
34
|
+
indexes = [models.Index(fields=["video", "frame_number"])]
|
|
35
|
+
|
|
36
|
+
# Override save method to set is_raw based on the type of frame
|
|
37
|
+
def save(self, *args, **kwargs):
|
|
38
|
+
self.is_raw = self.is_raw_frame()
|
|
39
|
+
super().save(*args, **kwargs)
|
|
40
|
+
|
|
41
|
+
def get_classification_annotations(self):
|
|
42
|
+
"""
|
|
43
|
+
Get all image classification annotations for this frame.
|
|
44
|
+
"""
|
|
45
|
+
if self.is_raw_frame():
|
|
46
|
+
return ImageClassificationAnnotation.objects.filter(raw_frame=self)
|
|
47
|
+
return ImageClassificationAnnotation.objects.filter(frame=self)
|
|
48
|
+
|
|
49
|
+
def get_classification_annotations_by_label(self, label: Label):
|
|
50
|
+
"""
|
|
51
|
+
Get all image classification annotations for this frame with the given label.
|
|
52
|
+
"""
|
|
53
|
+
if self.is_raw_frame():
|
|
54
|
+
return ImageClassificationAnnotation.objects.filter(
|
|
55
|
+
raw_frame=self, label=label
|
|
56
|
+
)
|
|
57
|
+
return ImageClassificationAnnotation.objects.filter(frame=self, label=label)
|
|
58
|
+
|
|
59
|
+
def get_classification_annotations_by_value(self, value: bool):
|
|
60
|
+
"""
|
|
61
|
+
Get all image classification annotations for this frame with the given value.
|
|
62
|
+
"""
|
|
63
|
+
if self.is_raw_frame():
|
|
64
|
+
return ImageClassificationAnnotation.objects.filter(
|
|
65
|
+
raw_frame=self, value=value
|
|
66
|
+
)
|
|
67
|
+
return ImageClassificationAnnotation.objects.filter(frame=self, value=value)
|
|
68
|
+
|
|
69
|
+
def get_classification_annotations_by_label_and_value(
|
|
70
|
+
self, label: Label, value: bool
|
|
71
|
+
):
|
|
72
|
+
"""
|
|
73
|
+
Get all image classification annotations for this frame with the given label and value.
|
|
74
|
+
"""
|
|
75
|
+
if self.is_raw_frame():
|
|
76
|
+
return ImageClassificationAnnotation.objects.filter(
|
|
77
|
+
raw_frame=self, label=label, value=value
|
|
78
|
+
)
|
|
79
|
+
return ImageClassificationAnnotation.objects.filter(
|
|
80
|
+
frame=self, label=label, value=value
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def __str__(self):
|
|
84
|
+
return self.video.file.path + " - " + str(self.frame_number)
|
|
85
|
+
|
|
86
|
+
def is_raw_frame(self):
|
|
87
|
+
from endoreg_db.models import RawFrame
|
|
88
|
+
|
|
89
|
+
if isinstance(self, RawFrame):
|
|
90
|
+
return True
|
|
91
|
+
else:
|
|
92
|
+
return False
|
|
93
|
+
|
|
94
|
+
def get_frame_model(self):
|
|
95
|
+
from endoreg_db.models import Frame, RawFrame
|
|
96
|
+
|
|
97
|
+
if self.is_raw_frame():
|
|
98
|
+
return RawFrame
|
|
99
|
+
else:
|
|
100
|
+
return Frame
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# models/data_file/import_classes/raw_pdf.py
|
|
2
|
+
# django db model "RawPdf"
|
|
3
|
+
# Class to store raw pdf file using django file field
|
|
4
|
+
# Class contains classmethod to create object from pdf file
|
|
5
|
+
# objects contains methods to extract text, extract metadata from text and anonymize text from pdf file uzing agl_report_reader.ReportReader class
|
|
6
|
+
# ------------------------------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
from django.db import models
|
|
9
|
+
|
|
10
|
+
# from django.core.files.storage import FileSystemStorage
|
|
11
|
+
# from django.conf import settings
|
|
12
|
+
from django.core.exceptions import ValidationError
|
|
13
|
+
# from django.core.validators import FileExtensionValidator
|
|
14
|
+
# from endoreg_db.utils.file_operations import get_uuid_filename
|
|
15
|
+
# from icecream import ic
|
|
16
|
+
|
|
17
|
+
# from agl_report_reader.report_reader import ReportReader
|
|
18
|
+
|
|
19
|
+
from endoreg_db.utils.hashs import get_pdf_hash
|
|
20
|
+
# from ..metadata import SensitiveMeta
|
|
21
|
+
|
|
22
|
+
# setup logging to pdf_import.log
|
|
23
|
+
import logging
|
|
24
|
+
|
|
25
|
+
# import shutil
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
from typing import TYPE_CHECKING
|
|
28
|
+
|
|
29
|
+
from ..base_classes.utils import (
|
|
30
|
+
STORAGE_LOCATION,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if TYPE_CHECKING:
|
|
34
|
+
from endoreg_db.models import SensitiveMeta
|
|
35
|
+
|
|
36
|
+
logger = logging.getLogger("pdf_import")
|
|
37
|
+
|
|
38
|
+
RAW_PDF_DIR_NAME = "raw_pdf"
|
|
39
|
+
RAW_PDF_DIR = STORAGE_LOCATION / RAW_PDF_DIR_NAME
|
|
40
|
+
|
|
41
|
+
if not RAW_PDF_DIR.exists():
|
|
42
|
+
RAW_PDF_DIR.mkdir(parents=True)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class AbstractPdfFile(models.Model):
|
|
46
|
+
pdf_hash = models.CharField(max_length=255, unique=True)
|
|
47
|
+
pdf_type = models.ForeignKey(
|
|
48
|
+
"PdfType",
|
|
49
|
+
on_delete=models.SET_NULL,
|
|
50
|
+
blank=True,
|
|
51
|
+
null=True,
|
|
52
|
+
)
|
|
53
|
+
sensitive_meta = models.ForeignKey(
|
|
54
|
+
"SensitiveMeta",
|
|
55
|
+
on_delete=models.SET_NULL,
|
|
56
|
+
related_name="report_files",
|
|
57
|
+
null=True,
|
|
58
|
+
blank=True,
|
|
59
|
+
)
|
|
60
|
+
center = models.ForeignKey(
|
|
61
|
+
"Center",
|
|
62
|
+
on_delete=models.SET_NULL,
|
|
63
|
+
blank=True,
|
|
64
|
+
null=True,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
patient = models.ForeignKey(
|
|
68
|
+
"Patient",
|
|
69
|
+
on_delete=models.SET_NULL,
|
|
70
|
+
blank=True,
|
|
71
|
+
null=True,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
examination = models.ForeignKey(
|
|
75
|
+
"PatientExamination",
|
|
76
|
+
on_delete=models.SET_NULL,
|
|
77
|
+
blank=True,
|
|
78
|
+
null=True,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
examiner = models.ForeignKey(
|
|
82
|
+
"Examiner",
|
|
83
|
+
on_delete=models.SET_NULL,
|
|
84
|
+
blank=True,
|
|
85
|
+
null=True,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
text = models.TextField(blank=True, null=True)
|
|
89
|
+
|
|
90
|
+
created_at = models.DateTimeField(auto_now_add=True)
|
|
91
|
+
|
|
92
|
+
if TYPE_CHECKING:
|
|
93
|
+
sensitive_meta: "SensitiveMeta"
|
|
94
|
+
|
|
95
|
+
class Meta:
|
|
96
|
+
abstract = True
|
|
97
|
+
|
|
98
|
+
def __str__(self):
|
|
99
|
+
str_repr = f"{self.pdf_hash} ({self.pdf_type}, {self.center})"
|
|
100
|
+
return str_repr
|
|
101
|
+
|
|
102
|
+
def delete_with_file(self):
|
|
103
|
+
file_path = Path(self.file.path)
|
|
104
|
+
if file_path.exists():
|
|
105
|
+
file_path.unlink()
|
|
106
|
+
logger.info("File removed: %s", file_path)
|
|
107
|
+
|
|
108
|
+
r = self.delete()
|
|
109
|
+
return r
|
|
110
|
+
|
|
111
|
+
def update(self, save=True, verbose=True):
|
|
112
|
+
try:
|
|
113
|
+
self.text, self.anonymized_text, self.raw_meta = self.process_file(
|
|
114
|
+
verbose=verbose
|
|
115
|
+
)
|
|
116
|
+
self.state_report_processed = True
|
|
117
|
+
self.state_report_processing_required = False
|
|
118
|
+
|
|
119
|
+
if save:
|
|
120
|
+
self.save()
|
|
121
|
+
|
|
122
|
+
return True
|
|
123
|
+
|
|
124
|
+
except (IOError, ValueError) as e:
|
|
125
|
+
logger.error("Error processing file: %s", self.file.path)
|
|
126
|
+
logger.error(e)
|
|
127
|
+
return False
|
|
128
|
+
|
|
129
|
+
# override save method to get patient and examination from sensitive meta
|
|
130
|
+
def save(self, *args, **kwargs):
|
|
131
|
+
if not self.patient and self.sensitive_meta:
|
|
132
|
+
self.patient = self.sensitive_meta.pseudo_patient
|
|
133
|
+
self.examination = self.sensitive_meta.pseudo_examination
|
|
134
|
+
self.center = self.sensitive_meta.center
|
|
135
|
+
|
|
136
|
+
super().save(*args, **kwargs)
|