endoreg-db 0.5.3__py3-none-any.whl → 0.6.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/admin.py +90 -1
- 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 +50 -4
- endoreg_db/data/ai_model/data.yaml +7 -0
- endoreg_db/data/{label → ai_model_label}/label/data.yaml +27 -1
- endoreg_db/data/ai_model_label/label-set/data.yaml +21 -0
- endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +5 -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/center/data.yaml +35 -5
- endoreg_db/data/contraindication/bleeding.yaml +11 -0
- endoreg_db/data/distribution/numeric/data.yaml +14 -0
- endoreg_db/data/endoscope/data.yaml +93 -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 +17 -0
- endoreg_db/data/lab_value/cardiac_enzymes.yaml +7 -1
- endoreg_db/data/lab_value/coagulation.yaml +6 -1
- endoreg_db/data/lab_value/electrolytes.yaml +39 -1
- endoreg_db/data/lab_value/gastrointestinal_function.yaml +12 -0
- endoreg_db/data/lab_value/hematology.yaml +17 -2
- endoreg_db/data/lab_value/hormones.yaml +6 -0
- endoreg_db/data/lab_value/lipids.yaml +12 -3
- endoreg_db/data/lab_value/misc.yaml +5 -2
- endoreg_db/data/lab_value/renal_function.yaml +2 -1
- 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/medication_indication/anticoagulation.yaml +44 -49
- 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 +30 -0
- endoreg_db/data/organ/data.yaml +29 -0
- endoreg_db/data/pdf_type/data.yaml +2 -1
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +4 -0
- endoreg_db/forms/__init__.py +3 -1
- 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/management/commands/__init__.py +0 -0
- endoreg_db/management/commands/load_ai_model_data.py +57 -23
- endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
- endoreg_db/management/commands/load_base_db_data.py +160 -118
- endoreg_db/management/commands/{load_endoscope_type_data.py → load_contraindication_data.py} +3 -7
- endoreg_db/management/commands/load_disease_data.py +29 -7
- endoreg_db/management/commands/load_endoscope_data.py +68 -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_lab_value_data.py +3 -3
- endoreg_db/management/commands/load_lx_data.py +64 -0
- endoreg_db/management/commands/load_medication_data.py +83 -21
- endoreg_db/management/commands/load_name_data.py +37 -0
- endoreg_db/management/commands/{load_endoscopy_processor_data.py → load_organ_data.py} +7 -9
- endoreg_db/migrations/0001_initial.py +1206 -728
- 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/models/__init__.py +331 -28
- endoreg_db/models/ai_model/__init__.py +1 -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 +232 -6
- endoreg_db/models/ai_model/model_type.py +13 -3
- endoreg_db/models/annotation/__init__.py +31 -2
- endoreg_db/models/annotation/anonymized_image_annotation.py +73 -18
- endoreg_db/models/annotation/binary_classification_annotation_task.py +94 -57
- endoreg_db/models/annotation/image_classification.py +73 -14
- 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/{persons/patient/case → case}/case.py +4 -0
- endoreg_db/models/case_template/__init__.py +10 -1
- endoreg_db/models/case_template/case_template.py +57 -13
- endoreg_db/models/case_template/case_template_rule.py +5 -5
- endoreg_db/models/case_template/case_template_rule_value.py +19 -4
- endoreg_db/models/center/__init__.py +7 -0
- endoreg_db/models/center/center.py +31 -5
- endoreg_db/models/center/center_product.py +0 -1
- endoreg_db/models/center/center_resource.py +16 -2
- endoreg_db/models/center/center_waste.py +6 -1
- endoreg_db/models/contraindication/__init__.py +21 -0
- endoreg_db/models/data_file/__init__.py +38 -5
- endoreg_db/models/data_file/base_classes/__init__.py +6 -1
- endoreg_db/models/data_file/base_classes/abstract_frame.py +64 -15
- endoreg_db/models/data_file/base_classes/abstract_pdf.py +136 -0
- endoreg_db/models/data_file/base_classes/abstract_video.py +744 -138
- 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 +22 -38
- endoreg_db/models/data_file/import_classes/__init__.py +4 -18
- endoreg_db/models/data_file/import_classes/raw_pdf.py +162 -90
- endoreg_db/models/data_file/import_classes/raw_video.py +239 -294
- endoreg_db/models/data_file/metadata/__init__.py +10 -0
- endoreg_db/models/data_file/metadata/pdf_meta.py +4 -0
- endoreg_db/models/data_file/metadata/sensitive_meta.py +265 -6
- endoreg_db/models/data_file/metadata/video_meta.py +116 -50
- endoreg_db/models/data_file/report_file.py +30 -63
- endoreg_db/models/data_file/video/__init__.py +6 -2
- endoreg_db/models/data_file/video/video.py +187 -16
- endoreg_db/models/data_file/video_segment.py +162 -55
- endoreg_db/models/disease.py +25 -2
- endoreg_db/models/emission/__init__.py +5 -1
- endoreg_db/models/emission/emission_factor.py +71 -6
- endoreg_db/models/event.py +51 -0
- endoreg_db/models/examination/__init__.py +6 -1
- endoreg_db/models/examination/examination.py +53 -12
- endoreg_db/models/examination/examination_indication.py +170 -0
- endoreg_db/models/examination/examination_time.py +31 -5
- endoreg_db/models/examination/examination_time_type.py +28 -4
- endoreg_db/models/examination/examination_type.py +28 -6
- 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/endoscope.py +16 -0
- endoreg_db/models/hardware/endoscopy_processor.py +31 -19
- endoreg_db/models/label/label.py +35 -7
- endoreg_db/models/laboratory/lab_value.py +12 -3
- endoreg_db/models/logging/__init__.py +8 -1
- 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 -1
- endoreg_db/models/medication/medication.py +7 -122
- 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 +7 -1
- endoreg_db/models/network/network_device.py +13 -8
- endoreg_db/models/organ/__init__.py +38 -0
- endoreg_db/models/other/__init__.py +19 -1
- 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 +1 -211
- endoreg_db/models/other/material.py +4 -0
- endoreg_db/models/other/transport_route.py +2 -1
- 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/persons/__init__.py +29 -2
- endoreg_db/models/persons/examiner/examiner.py +48 -4
- endoreg_db/models/persons/patient/__init__.py +1 -1
- endoreg_db/models/persons/patient/patient.py +227 -54
- endoreg_db/models/persons/patient/patient_disease.py +6 -0
- endoreg_db/models/persons/patient/patient_event.py +31 -1
- endoreg_db/models/persons/patient/patient_examination_indication.py +32 -0
- endoreg_db/models/persons/patient/patient_lab_sample.py +4 -2
- endoreg_db/models/persons/patient/patient_lab_value.py +37 -16
- endoreg_db/models/persons/patient/patient_medication.py +27 -12
- endoreg_db/models/persons/patient/patient_medication_schedule.py +62 -2
- endoreg_db/models/prediction/__init__.py +7 -1
- endoreg_db/models/prediction/image_classification.py +20 -6
- endoreg_db/models/prediction/video_prediction_meta.py +151 -89
- endoreg_db/models/product/__init__.py +10 -1
- endoreg_db/models/product/product.py +15 -2
- endoreg_db/models/product/product_group.py +8 -0
- endoreg_db/models/product/product_material.py +4 -0
- endoreg_db/models/product/product_weight.py +12 -0
- endoreg_db/models/product/reference_product.py +19 -3
- endoreg_db/models/quiz/__init__.py +8 -1
- endoreg_db/models/report_reader/__init__.py +6 -1
- endoreg_db/serializers/__init__.py +1 -1
- endoreg_db/serializers/annotation.py +2 -5
- endoreg_db/serializers/frame.py +1 -5
- endoreg_db/serializers/patient.py +26 -3
- endoreg_db/serializers/prediction.py +2 -7
- endoreg_db/serializers/raw_video_meta_validation.py +13 -0
- endoreg_db/serializers/video.py +6 -13
- 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/urls.py +173 -0
- endoreg_db/utils/__init__.py +36 -1
- endoreg_db/utils/dataloader.py +45 -19
- endoreg_db/utils/dates.py +39 -0
- endoreg_db/utils/hashs.py +122 -4
- endoreg_db/utils/names.py +74 -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/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/views.py +0 -3
- endoreg_db-0.6.1.dist-info/METADATA +151 -0
- endoreg_db-0.6.1.dist-info/RECORD +420 -0
- {endoreg_db-0.5.3.dist-info → endoreg_db-0.6.1.dist-info}/WHEEL +1 -1
- endoreg_db/data/active_model/data.yaml +0 -3
- endoreg_db/data/label/label-set/data.yaml +0 -18
- endoreg_db/management/commands/delete_legacy_images.py +0 -19
- endoreg_db/management/commands/delete_legacy_videos.py +0 -17
- endoreg_db/management/commands/extract_legacy_video_frames.py +0 -18
- endoreg_db/management/commands/import_legacy_images.py +0 -94
- endoreg_db/management/commands/import_legacy_videos.py +0 -76
- endoreg_db/management/commands/load_label_data.py +0 -67
- endoreg_db/migrations/0002_anonymizedimagelabel_anonymousimageannotation_and_more.py +0 -55
- endoreg_db/migrations/0003_anonymousimageannotation_original_image_url_and_more.py +0 -39
- endoreg_db/migrations/0004_alter_rawpdffile_file.py +0 -20
- endoreg_db/migrations/0005_uploadedfile_alter_rawpdffile_file_anonymizedfile.py +0 -40
- endoreg_db/migrations/0006_alter_rawpdffile_file.py +0 -20
- endoreg_db/migrations/0007_networkdevicelogentry_datetime_and_more.py +0 -43
- endoreg_db/migrations/0008_networkdevicelogentry_aglnet_ip_and_more.py +0 -28
- endoreg_db/migrations/0009_alter_networkdevicelogentry_vpn_service_status.py +0 -18
- endoreg_db/migrations/0010_remove_networkdevicelogentry_hostname.py +0 -17
- endoreg_db/models/legacy_data/__init__.py +0 -3
- endoreg_db/models/legacy_data/image.py +0 -34
- endoreg_db/models/patient_examination/__init__.py +0 -35
- endoreg_db/utils/video_metadata.py +0 -87
- endoreg_db-0.5.3.dist-info/METADATA +0 -28
- endoreg_db-0.5.3.dist-info/RECORD +0 -319
- /endoreg_db/{models/persons/patient/case → case_generator}/__init__.py +0 -0
- /endoreg_db/data/{label → ai_model_label}/label-type/data.yaml +0 -0
- /endoreg_db/data/{model_type → ai_model_type}/data.yaml +0 -0
- /endoreg_db/{data/distribution/numeric/.init → management/__init__.py} +0 -0
- /endoreg_db/management/commands/{load_report_reader_flag.py → load_report_reader_flag_data.py} +0 -0
- {endoreg_db-0.5.3.dist-info → endoreg_db-0.6.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
# BASE_PERMISSION_NAMES = [
|
|
3
|
+
# "local_admin",
|
|
4
|
+
# "local_user",
|
|
5
|
+
# "local_base_db_read",
|
|
6
|
+
# "local_base_db_write",
|
|
7
|
+
# ]
|
|
8
|
+
|
|
9
|
+
- model: endoreg_db.lx_permission
|
|
10
|
+
fields:
|
|
11
|
+
name: "local_admin"
|
|
12
|
+
|
|
13
|
+
- model: endoreg_db.lx_permission
|
|
14
|
+
fields:
|
|
15
|
+
name: "local_user"
|
|
16
|
+
|
|
17
|
+
- model: endoreg_db.lx_permission
|
|
18
|
+
fields:
|
|
19
|
+
name: "local_base_db_read"
|
|
20
|
+
|
|
21
|
+
- model: endoreg_db.lx_permission
|
|
22
|
+
fields:
|
|
23
|
+
name: "local_base_db_write"
|
|
24
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# EndoReg Base DB
|
|
2
|
+
- model: endoreg_db.lx_permission
|
|
3
|
+
fields:
|
|
4
|
+
name: "endoreg_base_db_read"
|
|
5
|
+
|
|
6
|
+
- model: endoreg_db.lx_permission
|
|
7
|
+
fields:
|
|
8
|
+
name: "endoreg_base_db_write"
|
|
9
|
+
|
|
10
|
+
- model: endoreg_db.lx_permission
|
|
11
|
+
fields:
|
|
12
|
+
name: "endoreg_base_db_admin"
|
|
13
|
+
|
|
14
|
+
- model: endoreg_db.lx_permission
|
|
15
|
+
fields:
|
|
16
|
+
name: "endoreg_base_db_user"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# EndoReg Backup DB
|
|
20
|
+
- model: endoreg_db.lx_permission
|
|
21
|
+
fields:
|
|
22
|
+
name: "endoreg_backup_db_read"
|
|
23
|
+
|
|
24
|
+
- model: endoreg_db.lx_permission
|
|
25
|
+
fields:
|
|
26
|
+
name: "endoreg_backup_db_write"
|
|
27
|
+
|
|
28
|
+
- model: endoreg_db.lx_permission
|
|
29
|
+
fields:
|
|
30
|
+
name: "endoreg_backup_db_admin"
|
|
31
|
+
|
|
32
|
+
- model: endoreg_db.lx_permission
|
|
33
|
+
fields:
|
|
34
|
+
name: "endoreg_backup_db_user"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# EndoReg Test DB
|
|
38
|
+
- model: endoreg_db.lx_permission
|
|
39
|
+
fields:
|
|
40
|
+
name: "endoreg_test_db_read"
|
|
41
|
+
|
|
42
|
+
- model: endoreg_db.lx_permission
|
|
43
|
+
fields:
|
|
44
|
+
name: "endoreg_test_db_write"
|
|
45
|
+
|
|
46
|
+
- model: endoreg_db.lx_permission
|
|
47
|
+
fields:
|
|
48
|
+
name: "endoreg_test_db_admin"
|
|
49
|
+
|
|
50
|
+
- model: endoreg_db.lx_permission
|
|
51
|
+
fields:
|
|
52
|
+
name: "endoreg_test_db_user"
|
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
fields:
|
|
4
4
|
name: "te_prevention-after_hip-apixaban"
|
|
5
5
|
events: ["hip_replacement"]
|
|
6
|
+
diseases: []
|
|
7
|
+
disease_classification_choices: []
|
|
6
8
|
medication_schedules: [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
"apixaban-2.5mg-twice_daily_32d", # min 32d, max 38d
|
|
10
|
+
]
|
|
9
11
|
indication_type: "thromboembolism-prevention-after_hip_replacement"
|
|
10
|
-
sources: [
|
|
11
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
12
|
-
]
|
|
12
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
13
13
|
|
|
14
14
|
- model: endoreg_db.medication_indication
|
|
15
15
|
fields:
|
|
16
16
|
name: "te_prevention-after_knee-apixaban"
|
|
17
17
|
events: ["knee_replacement"]
|
|
18
|
+
diseases: []
|
|
19
|
+
disease_classification_choices: []
|
|
18
20
|
medication_schedules: [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
"apixaban-2.5mg-twice_daily_10d", # min 10d, max 14d
|
|
22
|
+
]
|
|
21
23
|
indication_type: "thromboembolism-prevention-after_knee_replacement"
|
|
22
|
-
sources: [
|
|
23
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
24
|
-
]
|
|
24
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
25
25
|
|
|
26
26
|
- model: endoreg_db.medication_indication
|
|
27
27
|
fields:
|
|
28
28
|
name: "te_prevention-non_valvular_af-apixaban"
|
|
29
|
+
events: []
|
|
29
30
|
diseases: ["non_valvular_af"]
|
|
31
|
+
disease_classification_choices: []
|
|
30
32
|
medication_schedules: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
"apixaban-5mg-twice_daily", # no limit
|
|
34
|
+
]
|
|
33
35
|
indication_type: "thromboembolism-prevention-non_valvular_af"
|
|
34
|
-
sources: [
|
|
35
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
36
|
-
]
|
|
36
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
37
37
|
|
|
38
38
|
# - model: endoreg_db.medication_indication
|
|
39
39
|
# fields:
|
|
@@ -51,70 +51,65 @@
|
|
|
51
51
|
|
|
52
52
|
# generally same as ckd4 above but technically different definition
|
|
53
53
|
# Applies for example when risk factors (2 of three: age >= 80; KG <= 60 kg; Kreatinin >= 1.5 mg/dl)
|
|
54
|
-
- model: endoreg_db.medication_indication
|
|
54
|
+
- model: endoreg_db.medication_indication
|
|
55
55
|
fields:
|
|
56
56
|
name: "te_prevention-non_valvular_af-apixaban-dr" #dr = dose reduction
|
|
57
|
+
events: []
|
|
57
58
|
diseases: ["non_valvular_af"]
|
|
59
|
+
disease_classification_choices: []
|
|
58
60
|
medication_schedules: [
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
"apixaban-2.5mg-twice_daily", # no limit
|
|
62
|
+
]
|
|
61
63
|
indication_type: "thromboembolism-prevention-non_valvular_af"
|
|
62
|
-
sources: [
|
|
63
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
64
|
-
]
|
|
64
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
65
65
|
|
|
66
66
|
- model: endoreg_db.medication_indication
|
|
67
67
|
fields:
|
|
68
68
|
name: "dvt_treatment-apixaban-3mo"
|
|
69
69
|
events: ["deep_vein_thrombosis"]
|
|
70
|
+
diseases: []
|
|
71
|
+
disease_classification_choices: []
|
|
70
72
|
medication_schedules: [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
"apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
|
|
74
|
+
"apixaban-5g-twice_daily_3mo", # no limit
|
|
75
|
+
]
|
|
74
76
|
indication_type: "deep_vein_thrombosis-treatment"
|
|
75
|
-
sources: [
|
|
76
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
77
|
-
]
|
|
77
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
78
78
|
|
|
79
79
|
- model: endoreg_db.medication_indication
|
|
80
80
|
fields:
|
|
81
81
|
name: "pe_treatment-apixaban-3mo"
|
|
82
82
|
events: ["pulmonary_embolism"]
|
|
83
|
+
diseases: []
|
|
84
|
+
disease_classification_choices: []
|
|
83
85
|
medication_schedules: [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
"apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
|
|
87
|
+
"apixaban-5g-twice_daily_3mo", # no limit
|
|
88
|
+
]
|
|
87
89
|
indication_type: "pulmonary_embolism-treatment"
|
|
88
|
-
sources: [
|
|
89
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
90
|
-
]
|
|
90
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
91
91
|
|
|
92
92
|
- model: endoreg_db.medication_indication
|
|
93
93
|
fields:
|
|
94
94
|
name: "pe_treatment-apixaban-6mo"
|
|
95
95
|
events: ["pulmonary_embolism"]
|
|
96
|
+
diseases: []
|
|
97
|
+
disease_classification_choices: []
|
|
96
98
|
medication_schedules: [
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
"apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
|
|
100
|
+
"apixaban-5g-twice_daily_6mo", # no limit
|
|
101
|
+
]
|
|
100
102
|
indication_type: "pulmonary_embolism-treatment"
|
|
101
|
-
sources: [
|
|
102
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
103
|
-
]
|
|
103
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
104
104
|
|
|
105
105
|
- model: endoreg_db.medication_indication
|
|
106
106
|
fields:
|
|
107
107
|
name: "te_prevention-recurrent-te-apixaban"
|
|
108
|
-
events: [
|
|
109
|
-
|
|
110
|
-
]
|
|
111
|
-
medication_schedules: [
|
|
112
|
-
"apixaban-2.5mg-twice_daily"
|
|
113
|
-
]
|
|
108
|
+
events: ["recurrent_thrombembolism"]
|
|
109
|
+
diseases: []
|
|
110
|
+
disease_classification_choices: []
|
|
111
|
+
medication_schedules: ["apixaban-2.5mg-twice_daily"]
|
|
114
112
|
indication_type: "thrombembolism-prevention-recurrent_thrombembolism"
|
|
115
|
-
sources: [
|
|
116
|
-
"fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
|
|
117
|
-
]
|
|
118
|
-
|
|
113
|
+
sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
|
|
119
114
|
# templates to create:
|
|
120
115
|
# medication_schedules:
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
- model: endoreg_db.first_name
|
|
2
|
+
fields:
|
|
3
|
+
name: Alexander
|
|
4
|
+
- model: endoreg_db.first_name
|
|
5
|
+
fields:
|
|
6
|
+
name: Angelika
|
|
7
|
+
- model: endoreg_db.first_name
|
|
8
|
+
fields:
|
|
9
|
+
name: Anja
|
|
10
|
+
- model: endoreg_db.first_name
|
|
11
|
+
fields:
|
|
12
|
+
name: Doro
|
|
13
|
+
- model: endoreg_db.first_name
|
|
14
|
+
fields:
|
|
15
|
+
name: Dorothea
|
|
16
|
+
- model: endoreg_db.first_name
|
|
17
|
+
fields:
|
|
18
|
+
name: Florian
|
|
19
|
+
- model: endoreg_db.first_name
|
|
20
|
+
fields:
|
|
21
|
+
name: Hans
|
|
22
|
+
- model: endoreg_db.first_name
|
|
23
|
+
fields:
|
|
24
|
+
name: Kathrin
|
|
25
|
+
- model: endoreg_db.first_name
|
|
26
|
+
fields:
|
|
27
|
+
name: Laura
|
|
28
|
+
- model: endoreg_db.first_name
|
|
29
|
+
fields:
|
|
30
|
+
name: Linhel
|
|
31
|
+
- model: endoreg_db.first_name
|
|
32
|
+
fields:
|
|
33
|
+
name: Mandy
|
|
34
|
+
- model: endoreg_db.first_name
|
|
35
|
+
fields:
|
|
36
|
+
name: Markus
|
|
37
|
+
- model: endoreg_db.first_name
|
|
38
|
+
fields:
|
|
39
|
+
name: Philip
|
|
40
|
+
- model: endoreg_db.first_name
|
|
41
|
+
fields:
|
|
42
|
+
name: Rainer
|
|
43
|
+
- model: endoreg_db.first_name
|
|
44
|
+
fields:
|
|
45
|
+
name: Sven
|
|
46
|
+
- model: endoreg_db.first_name
|
|
47
|
+
fields:
|
|
48
|
+
name: Tanja
|
|
49
|
+
- model: endoreg_db.first_name
|
|
50
|
+
fields:
|
|
51
|
+
name: Theodor
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
- model: endoreg_db.last_name
|
|
2
|
+
fields:
|
|
3
|
+
name: Brand
|
|
4
|
+
- model: endoreg_db.last_name
|
|
5
|
+
fields:
|
|
6
|
+
name: Dela Cruz
|
|
7
|
+
- model: endoreg_db.last_name
|
|
8
|
+
fields:
|
|
9
|
+
name: Hann
|
|
10
|
+
- model: endoreg_db.last_name
|
|
11
|
+
fields:
|
|
12
|
+
name: Henniger
|
|
13
|
+
- model: endoreg_db.last_name
|
|
14
|
+
fields:
|
|
15
|
+
name: Hose
|
|
16
|
+
- model: endoreg_db.last_name
|
|
17
|
+
fields:
|
|
18
|
+
name: Hossner
|
|
19
|
+
- model: endoreg_db.last_name
|
|
20
|
+
fields:
|
|
21
|
+
name: Kozielski
|
|
22
|
+
- model: endoreg_db.last_name
|
|
23
|
+
fields:
|
|
24
|
+
name: Kudlich
|
|
25
|
+
- model: endoreg_db.last_name
|
|
26
|
+
fields:
|
|
27
|
+
name: Lux
|
|
28
|
+
- model: endoreg_db.last_name
|
|
29
|
+
fields:
|
|
30
|
+
name: Meining
|
|
31
|
+
- model: endoreg_db.last_name
|
|
32
|
+
fields:
|
|
33
|
+
name: Purrer
|
|
34
|
+
- model: endoreg_db.last_name
|
|
35
|
+
fields:
|
|
36
|
+
name: Reiter
|
|
37
|
+
- model: endoreg_db.last_name
|
|
38
|
+
fields:
|
|
39
|
+
name: Retzbach
|
|
40
|
+
- model: endoreg_db.last_name
|
|
41
|
+
fields:
|
|
42
|
+
name: Sodmann
|
|
43
|
+
- model: endoreg_db.last_name
|
|
44
|
+
fields:
|
|
45
|
+
name: Weich
|
|
46
|
+
- model: endoreg_db.last_name
|
|
47
|
+
fields:
|
|
48
|
+
name: Wiese
|
|
49
|
+
- model: endoreg_db.last_name
|
|
50
|
+
fields:
|
|
51
|
+
name: Wiesemann
|
|
@@ -22,6 +22,36 @@
|
|
|
22
22
|
device_type: "agl-server"
|
|
23
23
|
ip: "172.16.255.4"
|
|
24
24
|
|
|
25
|
+
- model: endoreg_db.network_device
|
|
26
|
+
fields:
|
|
27
|
+
name: "agl-gpu-client-01"
|
|
28
|
+
device_type: "agl-server"
|
|
29
|
+
ip: "172.16.255.141"
|
|
30
|
+
|
|
31
|
+
- model: endoreg_db.network_device
|
|
32
|
+
fields:
|
|
33
|
+
name: "agl-gpu-client-02"
|
|
34
|
+
device_type: "agl-server"
|
|
35
|
+
ip: "172.16.255.142"
|
|
36
|
+
|
|
37
|
+
- model: endoreg_db.network_device
|
|
38
|
+
fields:
|
|
39
|
+
name: "agl-gpu-client-03"
|
|
40
|
+
device_type: "agl-server"
|
|
41
|
+
ip: "172.16.255.143"
|
|
42
|
+
|
|
43
|
+
- model: endoreg_db.network_device
|
|
44
|
+
fields:
|
|
45
|
+
name: "agl-gpu-client-04"
|
|
46
|
+
device_type: "agl-server"
|
|
47
|
+
ip: "172.16.255.144"
|
|
48
|
+
|
|
49
|
+
- model: endoreg_db.network_device
|
|
50
|
+
fields:
|
|
51
|
+
name: "agl-gpu-client-05"
|
|
52
|
+
device_type: "agl-server"
|
|
53
|
+
ip: "172.16.255.145"
|
|
54
|
+
|
|
25
55
|
- model: endoreg_db.network_device
|
|
26
56
|
fields:
|
|
27
57
|
name: "agl-gpu-client-dev"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
- model: endoreg_db.organ
|
|
2
|
+
fields:
|
|
3
|
+
name: "colon"
|
|
4
|
+
name_de: "Kolon"
|
|
5
|
+
name_en: "Colon"
|
|
6
|
+
|
|
7
|
+
- model: endoreg_db.organ
|
|
8
|
+
fields:
|
|
9
|
+
name: "rectum"
|
|
10
|
+
name_de: "Rektum"
|
|
11
|
+
name_en: "Rectum"
|
|
12
|
+
|
|
13
|
+
- model: endoreg_db.organ
|
|
14
|
+
fields:
|
|
15
|
+
name: "anal_canal"
|
|
16
|
+
name_de: "Analkanal"
|
|
17
|
+
name_en: "Anal Canal"
|
|
18
|
+
|
|
19
|
+
- model: endoreg_db.organ
|
|
20
|
+
fields:
|
|
21
|
+
name: "ileum"
|
|
22
|
+
name_de: "Ileum"
|
|
23
|
+
name_en: "Ileum"
|
|
24
|
+
|
|
25
|
+
- model: endoreg_db.organ
|
|
26
|
+
fields:
|
|
27
|
+
name: "small_bowel"
|
|
28
|
+
name_de: "Dünndarm"
|
|
29
|
+
name_en: "Small Bowel"
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
endoscope_info_line: "ukw-examination-generic-endoscope-info-line"
|
|
7
7
|
examiner_info_line: "ukw-examination-generic-examiner-info-line"
|
|
8
8
|
cut_off_above_lines: [
|
|
9
|
+
"ukw-examination-generic-anamnese-info-line",
|
|
9
10
|
"ukw-examination-generic-endoscope-info-line",
|
|
10
|
-
"ukw-examination-generic-examiner-info-line"
|
|
11
|
+
"ukw-examination-generic-examiner-info-line",
|
|
11
12
|
]
|
|
12
13
|
cut_off_below_lines: [
|
|
13
14
|
"ukw-examination-generic-cut-off-below-line-01"
|
endoreg_db/forms/__init__.py
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
from endoreg_db.models.examination.examination import Examination
|
|
3
|
+
|
|
4
|
+
class ExaminationForm(forms.ModelForm):
|
|
5
|
+
class Meta:
|
|
6
|
+
model = Examination
|
|
7
|
+
fields = '__all__'
|
|
8
|
+
widgets = {
|
|
9
|
+
'date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
10
|
+
'time': forms.TimeInput(attrs={'type': 'time', 'class': 'form-control'}),
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Patient, PatientExamination, Finding,
|
|
4
|
+
FindingLocationClassification, FindingMorphologyClassification,
|
|
5
|
+
FindingIntervention, PatientFindingIntervention
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
class PatientFindingInterventionForm(forms.ModelForm):
|
|
9
|
+
patient = forms.ModelChoiceField(queryset=Patient.objects.all(), required=True)
|
|
10
|
+
examination = forms.ModelChoiceField(queryset=PatientExamination.objects.none(), required=True)
|
|
11
|
+
finding = forms.ModelChoiceField(queryset=Finding.objects.none(), required=True)
|
|
12
|
+
location = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
|
|
13
|
+
location_choice = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
|
|
14
|
+
morphology = forms.ModelChoiceField(queryset=FindingMorphologyClassification.objects.none(), required=True)
|
|
15
|
+
interventions = forms.ModelMultipleChoiceField(queryset=FindingIntervention.objects.none(), widget=forms.CheckboxSelectMultiple, required=True)
|
|
16
|
+
|
|
17
|
+
class Meta:
|
|
18
|
+
model = PatientFindingIntervention
|
|
19
|
+
fields = ["patient", "examination", "finding", "location", "location_choice", "morphology", "interventions"]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
from django.forms import ModelForm, Select
|
|
3
|
+
from endoreg_db.models.persons.patient.patient import Patient
|
|
4
|
+
from django import forms
|
|
5
|
+
from django.forms import ModelForm, Select
|
|
6
|
+
from endoreg_db.models.persons.patient.patient import Patient
|
|
7
|
+
from endoreg_db.models.persons.gender import Gender
|
|
8
|
+
from endoreg_db.models.center import Center
|
|
9
|
+
class PatientForm(ModelForm):
|
|
10
|
+
gender = forms.ModelChoiceField(
|
|
11
|
+
queryset=Gender.objects.all(),
|
|
12
|
+
empty_label="Select Gender",
|
|
13
|
+
widget=Select(attrs={'class': 'form-control'})
|
|
14
|
+
)
|
|
15
|
+
center = forms.ModelChoiceField(
|
|
16
|
+
queryset=Center.objects.all(),
|
|
17
|
+
empty_label="Select Center",
|
|
18
|
+
widget=Select(attrs={'class': 'form-control'})
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
class Meta:
|
|
22
|
+
model = Patient
|
|
23
|
+
fields = '__all__'
|
|
24
|
+
widgets = {
|
|
25
|
+
'dob': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
26
|
+
}
|
|
File without changes
|
|
@@ -1,45 +1,79 @@
|
|
|
1
1
|
from django.conf import settings
|
|
2
2
|
import os
|
|
3
3
|
from django.core.management.base import BaseCommand
|
|
4
|
-
from ...models import
|
|
4
|
+
from ...models import (
|
|
5
|
+
ModelMeta,
|
|
6
|
+
ModelType,
|
|
7
|
+
LabelSet,
|
|
8
|
+
VideoSegmentationLabel,
|
|
9
|
+
VideoSegmentationLabelSet,
|
|
10
|
+
AiModel,
|
|
11
|
+
)
|
|
5
12
|
from ...utils import load_model_data_from_yaml
|
|
6
|
-
from ...data import
|
|
13
|
+
from ...data import (
|
|
14
|
+
MODEL_TYPE_DATA_DIR,
|
|
15
|
+
VIDEO_SEGMENTATION_LABEL_DATA_DIR,
|
|
16
|
+
VIDEO_SEGMENTATION_LABELSET_DATA_DIR,
|
|
17
|
+
AI_MODEL_DATA_DIR,
|
|
18
|
+
AI_MODEL_META_DATA_DIR,
|
|
19
|
+
)
|
|
7
20
|
|
|
8
|
-
SOURCE_DIR = MODEL_TYPE_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
9
21
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
22
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
23
|
+
ModelType.__name__,
|
|
24
|
+
# ModelMeta.__name__,
|
|
25
|
+
VideoSegmentationLabel.__name__,
|
|
26
|
+
VideoSegmentationLabelSet.__name__,
|
|
27
|
+
AiModel.__name__,
|
|
14
28
|
]
|
|
15
29
|
|
|
16
30
|
IMPORT_METADATA = {
|
|
17
|
-
|
|
18
|
-
"dir":
|
|
19
|
-
"model":
|
|
20
|
-
"foreign_keys": [],
|
|
21
|
-
"foreign_key_models": []
|
|
22
|
-
}
|
|
31
|
+
ModelType.__name__: {
|
|
32
|
+
"dir": MODEL_TYPE_DATA_DIR, # e.g. "intervention_types"
|
|
33
|
+
"model": ModelType, # e.g. InterventionType
|
|
34
|
+
"foreign_keys": [], # e.g. ["interventions"]
|
|
35
|
+
"foreign_key_models": [], # e.g. [Intervention]
|
|
36
|
+
},
|
|
37
|
+
# ModelMeta.__name__: {
|
|
38
|
+
# "dir": AI_MODEL_META_DATA_DIR, # e.g. "intervention_types"
|
|
39
|
+
# "model": ModelMeta, # e.g. InterventionType
|
|
40
|
+
# "foreign_keys": ["labelset", "type"], # e.g. ["interventions"]
|
|
41
|
+
# "foreign_key_models": [LabelSet, ModelType], # e.g. [Intervention]
|
|
42
|
+
# },
|
|
43
|
+
VideoSegmentationLabel.__name__: {
|
|
44
|
+
"dir": VIDEO_SEGMENTATION_LABEL_DATA_DIR, # e.g. "interventions"
|
|
45
|
+
"model": VideoSegmentationLabel, # e.g. Intervention
|
|
46
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
47
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
48
|
+
},
|
|
49
|
+
VideoSegmentationLabelSet.__name__: {
|
|
50
|
+
"dir": VIDEO_SEGMENTATION_LABELSET_DATA_DIR, # e.g. "interventions"
|
|
51
|
+
"model": VideoSegmentationLabelSet, # e.g. Intervention
|
|
52
|
+
"foreign_keys": ["labels"], # e.g. ["intervention_types"]
|
|
53
|
+
"foreign_key_models": [VideoSegmentationLabel], # e.g. [Intervention]
|
|
54
|
+
},
|
|
55
|
+
AiModel.__name__: {
|
|
56
|
+
"dir": AI_MODEL_DATA_DIR, # e.g. "intervention_types"
|
|
57
|
+
"model": AiModel, # e.g. InterventionType
|
|
58
|
+
"foreign_keys": ["video_segmentation_labelset"], # e.g. ["interventions"]
|
|
59
|
+
"foreign_key_models": [VideoSegmentationLabelSet], # e.g. [Intervention]
|
|
60
|
+
},
|
|
23
61
|
}
|
|
24
62
|
|
|
63
|
+
|
|
25
64
|
class Command(BaseCommand):
|
|
26
65
|
help = """Load all .yaml files in the data/intervention directory
|
|
27
66
|
into the Intervention and InterventionType model"""
|
|
28
67
|
|
|
29
68
|
def add_arguments(self, parser):
|
|
30
69
|
parser.add_argument(
|
|
31
|
-
|
|
32
|
-
action=
|
|
33
|
-
help=
|
|
70
|
+
"--verbose",
|
|
71
|
+
action="store_true",
|
|
72
|
+
help="Display verbose output",
|
|
34
73
|
)
|
|
35
74
|
|
|
36
75
|
def handle(self, *args, **options):
|
|
37
|
-
verbose = options[
|
|
76
|
+
verbose = options["verbose"]
|
|
38
77
|
for model_name in IMPORT_MODELS:
|
|
39
78
|
_metadata = IMPORT_METADATA[model_name]
|
|
40
|
-
load_model_data_from_yaml(
|
|
41
|
-
self,
|
|
42
|
-
model_name,
|
|
43
|
-
_metadata,
|
|
44
|
-
verbose
|
|
45
|
-
)
|
|
79
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
from django.core.management.base import BaseCommand
|
|
3
|
+
from ...models import Label, LabelType, LabelSet
|
|
4
|
+
import os
|
|
5
|
+
from ...utils import load_model_data_from_yaml
|
|
6
|
+
from ...data import LABEL_DATA_DIR
|
|
7
|
+
|
|
8
|
+
SOURCE_DIR = LABEL_DATA_DIR
|
|
9
|
+
|
|
10
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
11
|
+
"LabelType",
|
|
12
|
+
"Label",
|
|
13
|
+
"LabelSet",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
IMPORT_METADATA = {
|
|
17
|
+
# "": { # same as model name in "import models", e.g. "Intervention"
|
|
18
|
+
# "subdir": os.path.join(SOURCE_DIR,""), # e.g. "interventions"
|
|
19
|
+
# "model": None, # e.g. Intervention
|
|
20
|
+
# "foreign_keys": [], # e.g. ["intervention_types"]
|
|
21
|
+
# "foreign_key_models": [] # e.g. [InterventionType]
|
|
22
|
+
# },
|
|
23
|
+
"LabelType": {
|
|
24
|
+
"dir": os.path.join(SOURCE_DIR, "label-type"), # e.g. "interventions"
|
|
25
|
+
"model": LabelType, # e.g. Intervention
|
|
26
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
27
|
+
"foreign_key_models": [], # e.g. [InterventionType]
|
|
28
|
+
},
|
|
29
|
+
"Label": {
|
|
30
|
+
"dir": os.path.join(SOURCE_DIR, "label"), # e.g. "interventions"
|
|
31
|
+
"model": Label, # e.g. Intervention
|
|
32
|
+
"foreign_keys": ["label_type"], # e.g. ["intervention_types"]
|
|
33
|
+
"foreign_key_models": [LabelType], # e.g. [InterventionType]
|
|
34
|
+
},
|
|
35
|
+
"LabelSet": {
|
|
36
|
+
"dir": os.path.join(SOURCE_DIR, "label-set"), # e.g. "interventions"
|
|
37
|
+
"model": LabelSet, # e.g. Intervention
|
|
38
|
+
"foreign_keys": ["labels"], # e.g. ["intervention_types"]
|
|
39
|
+
"foreign_key_models": [Label], # e.g. [InterventionType]
|
|
40
|
+
},
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class Command(BaseCommand):
|
|
45
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
46
|
+
into the Intervention and InterventionType model"""
|
|
47
|
+
|
|
48
|
+
def add_arguments(self, parser):
|
|
49
|
+
parser.add_argument(
|
|
50
|
+
"--verbose",
|
|
51
|
+
action="store_true",
|
|
52
|
+
help="Display verbose output",
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def handle(self, *args, **options):
|
|
56
|
+
verbose = options["verbose"]
|
|
57
|
+
for model_name in IMPORT_MODELS:
|
|
58
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
59
|
+
load_model_data_from_yaml(self, model_name, _metadata, verbose)
|