endoreg-db 0.3.5__py3-none-any.whl → 0.3.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- endoreg_db/admin.py +3 -3
- endoreg_db/apps.py +6 -6
- endoreg_db/data/__init__.py +64 -64
- endoreg_db/data/active_model/data.yaml +2 -2
- endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -167
- endoreg_db/data/case_template/rule/01_patient-set-age.yaml +7 -7
- endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +8 -8
- endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +22 -22
- endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/19_create_patient.yaml +16 -16
- endoreg_db/data/case_template/rule_type/base_types.yaml +35 -35
- endoreg_db/data/case_template/rule_value_type/base_types.yaml +58 -58
- endoreg_db/data/case_template/template/base.yaml +7 -7
- endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
- endoreg_db/data/case_template/tmp/_rule_value +13 -13
- endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
- endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
- endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
- endoreg_db/data/center/data.yaml +59 -59
- endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
- endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
- endoreg_db/data/disease/cardiovascular.yaml +37 -37
- endoreg_db/data/disease/hepatology.yaml +4 -4
- endoreg_db/data/disease/misc.yaml +5 -5
- endoreg_db/data/disease/renal.yaml +4 -4
- endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
- endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
- endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
- endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
- endoreg_db/data/distribution/date/patient.yaml +6 -6
- endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
- endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
- endoreg_db/data/endoscope_type/data.yaml +10 -10
- endoreg_db/data/endoscopy_processor/data.yaml +45 -45
- endoreg_db/data/event/cardiology.yaml +27 -27
- endoreg_db/data/event/neurology.yaml +13 -13
- endoreg_db/data/event/surgery.yaml +12 -12
- endoreg_db/data/event/thrombembolism.yaml +19 -19
- endoreg_db/data/examination/examinations/data.yaml +65 -65
- endoreg_db/data/examination/time/data.yaml +47 -47
- endoreg_db/data/examination/time-type/data.yaml +7 -7
- endoreg_db/data/examination/type/data.yaml +5 -5
- endoreg_db/data/gender/data.yaml +18 -18
- endoreg_db/data/information_source/data.yaml +30 -30
- endoreg_db/data/information_source/medication.yaml +5 -5
- endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
- endoreg_db/data/lab_value/coagulation.yaml +48 -48
- endoreg_db/data/lab_value/electrolytes.yaml +189 -189
- endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
- endoreg_db/data/lab_value/hematology.yaml +169 -169
- endoreg_db/data/lab_value/hormones.yaml +53 -53
- endoreg_db/data/lab_value/lipids.yaml +44 -44
- endoreg_db/data/lab_value/misc.yaml +30 -30
- endoreg_db/data/lab_value/renal_function.yaml +10 -10
- endoreg_db/data/label/label/data.yaml +62 -62
- endoreg_db/data/label/label-set/data.yaml +17 -17
- endoreg_db/data/label/label-type/data.yaml +6 -6
- endoreg_db/data/medication/anticoagulation.yaml +64 -64
- endoreg_db/data/medication/tah.yaml +69 -69
- endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
- endoreg_db/data/medication_indication_type/data.yaml +10 -10
- endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
- endoreg_db/data/medication_intake_time/base.yaml +30 -30
- endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
- endoreg_db/data/medication_schedule/ass.yaml +12 -12
- endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
- endoreg_db/data/model_type/data.yaml +6 -6
- endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
- endoreg_db/data/pdf_type/data.yaml +28 -28
- endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
- endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
- endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
- endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
- endoreg_db/data/profession/data.yaml +70 -70
- endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
- endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
- endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
- endoreg_db/data/unit/concentration.yaml +92 -92
- endoreg_db/data/unit/data.yaml +17 -17
- endoreg_db/data/unit/length.yaml +30 -30
- endoreg_db/data/unit/misc.yaml +19 -19
- endoreg_db/data/unit/rate.yaml +5 -5
- endoreg_db/data/unit/time.yaml +12 -12
- endoreg_db/data/unit/volume.yaml +35 -35
- endoreg_db/data/unit/weight.yaml +37 -37
- endoreg_db/data/waste/data.yaml +11 -11
- endoreg_db/forms/__init__.py +2 -2
- endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
- endoreg_db/forms/settings/__init__.py +8 -8
- endoreg_db/forms/unit.py +5 -5
- endoreg_db/management/commands/_load_model_template.py +40 -40
- endoreg_db/management/commands/delete_all.py +18 -18
- endoreg_db/management/commands/delete_legacy_images.py +19 -19
- endoreg_db/management/commands/delete_legacy_videos.py +16 -16
- endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
- endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
- endoreg_db/management/commands/fix_auth_permission.py +20 -20
- endoreg_db/management/commands/import_legacy_images.py +94 -94
- endoreg_db/management/commands/import_legacy_videos.py +76 -76
- endoreg_db/management/commands/load_active_model_data.py +44 -44
- endoreg_db/management/commands/load_ai_model_data.py +44 -44
- endoreg_db/management/commands/load_base_db_data.py +128 -128
- endoreg_db/management/commands/load_center_data.py +42 -42
- endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
- endoreg_db/management/commands/load_disease_classification_data.py +40 -40
- endoreg_db/management/commands/load_disease_data.py +39 -39
- endoreg_db/management/commands/load_distribution_data.py +65 -65
- endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
- endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
- endoreg_db/management/commands/load_event_data.py +40 -40
- endoreg_db/management/commands/load_examination_data.py +74 -74
- endoreg_db/management/commands/load_g_play_data.py +112 -112
- endoreg_db/management/commands/load_gender_data.py +43 -43
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
- endoreg_db/management/commands/load_information_source.py +44 -44
- endoreg_db/management/commands/load_lab_value_data.py +49 -49
- endoreg_db/management/commands/load_label_data.py +66 -66
- endoreg_db/management/commands/load_medication_data.py +40 -40
- endoreg_db/management/commands/load_medication_indication_data.py +62 -62
- endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
- endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
- endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
- endoreg_db/management/commands/load_pdf_type_data.py +60 -60
- endoreg_db/management/commands/load_profession_data.py +43 -43
- endoreg_db/management/commands/load_report_reader_flag.py +45 -45
- endoreg_db/management/commands/load_unit_data.py +45 -45
- endoreg_db/management/commands/load_user_groups.py +28 -28
- endoreg_db/management/commands/register_ai_model.py +65 -65
- endoreg_db/management/commands/reset_celery_schedule.py +9 -9
- endoreg_db/migrations/0001_initial.py +582 -582
- endoreg_db/migrations/0002_rawvideofile.py +26 -26
- endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
- endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
- endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
- endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
- endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
- endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
- endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
- endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
- endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
- endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
- endoreg_db/migrations/0013_rawpdffile.py +31 -31
- endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
- endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
- endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
- endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
- endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
- endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
- endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
- endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
- endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
- endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
- endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
- endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
- endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
- endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
- endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
- endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
- endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
- endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
- endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
- endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
- endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
- endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
- endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
- endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
- endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
- endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
- endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
- endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
- endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
- endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
- endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
- endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
- endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
- endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
- endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
- endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
- endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
- endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
- endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
- endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
- endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
- endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
- endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
- endoreg_db/models/__init__.py +74 -74
- endoreg_db/models/ai_model/__init__.py +3 -3
- endoreg_db/models/ai_model/active_model.py +9 -9
- endoreg_db/models/ai_model/model_meta.py +24 -24
- endoreg_db/models/ai_model/model_type.py +25 -25
- endoreg_db/models/ai_model/utils.py +8 -8
- endoreg_db/models/annotation/__init__.py +1 -1
- endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
- endoreg_db/models/annotation/image_classification.py +26 -26
- endoreg_db/models/case_template/__init__.py +5 -5
- endoreg_db/models/case_template/case_template.py +81 -81
- endoreg_db/models/case_template/case_template_rule.py +276 -276
- endoreg_db/models/case_template/case_template_rule_value.py +73 -73
- endoreg_db/models/case_template/case_template_type.py +27 -27
- endoreg_db/models/center/__init__.py +4 -4
- endoreg_db/models/center/center.py +24 -24
- endoreg_db/models/center/center_product.py +33 -33
- endoreg_db/models/center/center_resource.py +18 -18
- endoreg_db/models/center/center_waste.py +10 -10
- endoreg_db/models/data_file/__init__.py +5 -5
- endoreg_db/models/data_file/base_classes/__init__.py +2 -2
- endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
- endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
- endoreg_db/models/data_file/frame.py +45 -45
- endoreg_db/models/data_file/import_classes/__init__.py +31 -31
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
- endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
- endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
- endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
- endoreg_db/models/data_file/metadata/__init__.py +3 -3
- endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
- endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
- endoreg_db/models/data_file/metadata/video_meta.py +132 -132
- endoreg_db/models/data_file/report_file.py +89 -89
- endoreg_db/models/data_file/video/__init__.py +6 -6
- endoreg_db/models/data_file/video/import_meta.py +25 -25
- endoreg_db/models/data_file/video/video.py +25 -25
- endoreg_db/models/data_file/video_segment.py +107 -107
- endoreg_db/models/disease.py +55 -55
- endoreg_db/models/emission/emission_factor.py +19 -19
- endoreg_db/models/event.py +21 -21
- endoreg_db/models/examination/__init__.py +3 -3
- endoreg_db/models/examination/examination.py +26 -26
- endoreg_db/models/examination/examination_time.py +27 -27
- endoreg_db/models/examination/examination_time_type.py +24 -24
- endoreg_db/models/examination/examination_type.py +18 -18
- endoreg_db/models/hardware/__init__.py +1 -1
- endoreg_db/models/hardware/endoscope.py +44 -44
- endoreg_db/models/hardware/endoscopy_processor.py +143 -143
- endoreg_db/models/information_source.py +29 -29
- endoreg_db/models/label/label.py +84 -84
- endoreg_db/models/laboratory/lab_value.py +102 -102
- endoreg_db/models/legacy_data/__init__.py +3 -3
- endoreg_db/models/legacy_data/image.py +34 -34
- endoreg_db/models/medication/medication.py +148 -148
- endoreg_db/models/other/__init__.py +4 -4
- endoreg_db/models/other/distribution.py +215 -215
- endoreg_db/models/other/material.py +16 -16
- endoreg_db/models/other/resource.py +17 -17
- endoreg_db/models/other/transport_route.py +20 -20
- endoreg_db/models/other/waste.py +20 -20
- endoreg_db/models/patient_examination/__init__.py +35 -35
- endoreg_db/models/permissions/__init__.py +44 -44
- endoreg_db/models/persons/__init__.py +6 -6
- endoreg_db/models/persons/examiner/__init__.py +1 -1
- endoreg_db/models/persons/examiner/examiner.py +15 -15
- endoreg_db/models/persons/examiner/examiner_type.py +1 -1
- endoreg_db/models/persons/first_name.py +17 -17
- endoreg_db/models/persons/gender.py +22 -22
- endoreg_db/models/persons/last_name.py +19 -19
- endoreg_db/models/persons/patient/__init__.py +7 -7
- endoreg_db/models/persons/patient/case/case.py +30 -30
- endoreg_db/models/persons/patient/patient.py +216 -216
- endoreg_db/models/persons/patient/patient_disease.py +16 -16
- endoreg_db/models/persons/patient/patient_event.py +22 -22
- endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
- endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
- endoreg_db/models/persons/patient/patient_medication.py +43 -43
- endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
- endoreg_db/models/persons/person.py +31 -31
- endoreg_db/models/persons/portal_user_information.py +27 -27
- endoreg_db/models/prediction/__init__.py +1 -1
- endoreg_db/models/prediction/image_classification.py +37 -37
- endoreg_db/models/prediction/video_prediction_meta.py +244 -244
- endoreg_db/models/product/__init__.py +4 -4
- endoreg_db/models/product/product.py +97 -97
- endoreg_db/models/product/product_group.py +19 -19
- endoreg_db/models/product/product_material.py +24 -24
- endoreg_db/models/product/product_weight.py +26 -26
- endoreg_db/models/product/reference_product.py +99 -99
- endoreg_db/models/questionnaires/__init__.py +114 -114
- endoreg_db/models/quiz/__init__.py +1 -1
- endoreg_db/models/quiz/quiz_answer.py +41 -41
- endoreg_db/models/quiz/quiz_question.py +54 -54
- endoreg_db/models/report_reader/__init__.py +1 -1
- endoreg_db/models/report_reader/report_reader_config.py +53 -53
- endoreg_db/models/report_reader/report_reader_flag.py +19 -19
- endoreg_db/models/rules/__init__.py +4 -4
- endoreg_db/models/rules/rule.py +23 -23
- endoreg_db/models/rules/rule_applicator.py +224 -224
- endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
- endoreg_db/models/rules/rule_type.py +21 -21
- endoreg_db/models/rules/ruleset.py +19 -19
- endoreg_db/models/unit.py +21 -21
- endoreg_db/queries/__init__.py +4 -4
- endoreg_db/queries/annotations/__init__.py +2 -2
- endoreg_db/queries/annotations/legacy.py +159 -159
- endoreg_db/queries/get/__init__.py +5 -5
- endoreg_db/queries/get/center.py +42 -42
- endoreg_db/queries/get/model.py +13 -13
- endoreg_db/queries/get/patient.py +14 -14
- endoreg_db/queries/get/patient_examination.py +20 -20
- endoreg_db/queries/get/report_file.py +33 -33
- endoreg_db/queries/get/video.py +31 -31
- endoreg_db/serializers/__init__.py +9 -9
- endoreg_db/serializers/ai_model.py +18 -18
- endoreg_db/serializers/annotation.py +17 -17
- endoreg_db/serializers/center.py +11 -11
- endoreg_db/serializers/examination.py +32 -32
- endoreg_db/serializers/frame.py +13 -13
- endoreg_db/serializers/hardware.py +20 -20
- endoreg_db/serializers/label.py +22 -22
- endoreg_db/serializers/patient.py +10 -10
- endoreg_db/serializers/prediction.py +15 -15
- endoreg_db/serializers/report_file.py +7 -7
- endoreg_db/serializers/video.py +27 -27
- endoreg_db/tests.py +3 -3
- endoreg_db/utils/cropping.py +28 -28
- endoreg_db/utils/dataloader.py +92 -92
- endoreg_db/utils/file_operations.py +30 -30
- endoreg_db/utils/hashs.py +33 -33
- endoreg_db/utils/legacy_ocr.py +201 -201
- endoreg_db/utils/ocr.py +197 -197
- endoreg_db/utils/uuid.py +4 -4
- endoreg_db/utils/video_metadata.py +87 -87
- endoreg_db/views.py +3 -3
- {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/LICENSE +674 -674
- {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/METADATA +2 -2
- endoreg_db-0.3.6.dist-info/RECORD +357 -0
- {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/WHEEL +1 -1
- endoreg_db-0.3.5.dist-info/RECORD +0 -357
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
from django.db import models
|
|
2
|
-
|
|
3
|
-
YES_NO_CHOICES = (
|
|
4
|
-
('yes', 'Ja'),
|
|
5
|
-
('no', 'Nein'),
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
class TtoQuestionnaire(models.Model):
|
|
9
|
-
|
|
10
|
-
# Patient Information
|
|
11
|
-
patient_name = models.CharField(max_length=255, verbose_name="Identifikation des Patienten (Name)")
|
|
12
|
-
birth_date = models.DateField(verbose_name="Geburtsdatum")
|
|
13
|
-
|
|
14
|
-
# Base documentation
|
|
15
|
-
emergency_patient = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notfallpatient/kürzlich untersuchter Patient (Verzicht auf Team-Time-Out möglich)")
|
|
16
|
-
consent_signed = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Einverständniserklärung unterschrieben (Arzt, Patient)")
|
|
17
|
-
documents_present = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Alle Dokumente liegen vor (Labor, Befunde, etc.)")
|
|
18
|
-
communication_possible = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Kommunikation mit Patient möglich")
|
|
19
|
-
work_incapacity_certificate = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Arbeitsunfähigkeitsbescheinigung")
|
|
20
|
-
|
|
21
|
-
# priority items
|
|
22
|
-
pregnancy = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Schwangerschaft")
|
|
23
|
-
asa_classification_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="ASA-Klassifikation/Komorbidität geprüft")
|
|
24
|
-
previous_anesthesia_complications = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Komplikationen bei bisherigen Narkosen?")
|
|
25
|
-
last_meal_over_6_hours_ago = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Zeitpunkt letzte Mahlzeit > 6 Stunden")
|
|
26
|
-
allergies = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Allergien, welche?")
|
|
27
|
-
outpatient_accompaniment_post_sedation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Nur bei ambulanter Vorstellung: Begleitung nach Sedierung?")
|
|
28
|
-
|
|
29
|
-
# Possessions
|
|
30
|
-
dental_prosthesis = models.BooleanField(default=False, verbose_name="Zahnprothese")
|
|
31
|
-
glasses = models.BooleanField(default=False, verbose_name="Brille")
|
|
32
|
-
implants = models.BooleanField(default=False, verbose_name="Implantate")
|
|
33
|
-
hearing_aids = models.BooleanField(default=False, verbose_name="Hörgeräte")
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
# Medical History
|
|
37
|
-
anticoagulants_ass = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Antikoagulation, ASS")
|
|
38
|
-
blood_pressure_medication = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Blutdruckmedikamente")
|
|
39
|
-
glaucoma = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Glaukom")
|
|
40
|
-
|
|
41
|
-
metal_implants = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Metallimplantate")
|
|
42
|
-
pacemaker_icd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Herzschrittmacher/ICD")
|
|
43
|
-
|
|
44
|
-
copd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="COPD")
|
|
45
|
-
liver_cirrhosis = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Leberzirrhose")
|
|
46
|
-
|
|
47
|
-
ibd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="CED (Chronisch entzündliche Darmerkrankungen)")
|
|
48
|
-
radiation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Bestrahlung")
|
|
49
|
-
surgeries = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="OP´s")
|
|
50
|
-
|
|
51
|
-
# preflight
|
|
52
|
-
team_introduction = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Teamvorstellung mit Name und Aufgabe")
|
|
53
|
-
instruments_available = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notwendige Instrumente vorhanden?")
|
|
54
|
-
monitoring_medications_equipment_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Monitoring, Medikamente, Equipment zum Atemwegsmanagement zur Verfügung und überprüft?")
|
|
55
|
-
complete_documentation_inclusive_care_notes = models.TextField(verbose_name="Vollständige Dokumentation inklusive Hinweise für Nachsorge")
|
|
56
|
-
|
|
57
|
-
# notes
|
|
58
|
-
notes = models.TextField(verbose_name="Bemerkungen", default = "Keine Bemerkungen")
|
|
59
|
-
|
|
60
|
-
# postflight
|
|
61
|
-
specimens_secured = models.BooleanField(default=False, verbose_name="Histologische Proben gesichert")
|
|
62
|
-
patient_condition_documented = models.TextField(verbose_name="Patientenzustand dokumentiert (je nach Ausgangszustand)")
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def __str__(self):
|
|
67
|
-
return f"Endoscopy Questionnaire for {self.patient_name} on {self.birth_date}"
|
|
68
|
-
|
|
69
|
-
def get_id_attributes(self):
|
|
70
|
-
_ = [self.patient_name, self.birth_date]
|
|
71
|
-
return _
|
|
72
|
-
|
|
73
|
-
def get_base_documentation_attributes(self):
|
|
74
|
-
_ = [self.emergency_patient, self.consent_signed, self.documents_present, self.communication_possible, self.work_incapacity_certificate]
|
|
75
|
-
return _
|
|
76
|
-
|
|
77
|
-
def get_priority_items_attributes(self):
|
|
78
|
-
_ = [self.pregnancy, self.asa_classification_checked, self.previous_anesthesia_complications, self.last_meal_over_6_hours_ago, self.allergies, self.outpatient_accompaniment_post_sedation]
|
|
79
|
-
return _
|
|
80
|
-
|
|
81
|
-
def get_possessions_attributes(self):
|
|
82
|
-
_ = [self.dental_prosthesis, self.glasses, self.implants, self.hearing_aids]
|
|
83
|
-
return _
|
|
84
|
-
|
|
85
|
-
def get_medical_history_attributes(self):
|
|
86
|
-
_ = [
|
|
87
|
-
self.anticoagulants_ass,
|
|
88
|
-
self.blood_pressure_medication,
|
|
89
|
-
self.glaucoma,
|
|
90
|
-
self.metal_implants,
|
|
91
|
-
self.pacemaker_icd,
|
|
92
|
-
self.copd,
|
|
93
|
-
self.liver_cirrhosis,
|
|
94
|
-
self.ibd,
|
|
95
|
-
self.radiation,
|
|
96
|
-
self.surgeries,
|
|
97
|
-
]
|
|
98
|
-
|
|
99
|
-
def get_preflight_attributes(self):
|
|
100
|
-
_ = [
|
|
101
|
-
self.team_introduction,
|
|
102
|
-
self.instruments_available,
|
|
103
|
-
self.monitoring_medications_equipment_checked,
|
|
104
|
-
]
|
|
105
|
-
|
|
106
|
-
def get_note_attributes(self):
|
|
107
|
-
_ = [self.notes]
|
|
108
|
-
|
|
109
|
-
def get_postflight_attributes(self):
|
|
110
|
-
_ = [
|
|
111
|
-
self.specimens_secured,
|
|
112
|
-
self.patient_condition_documented
|
|
113
|
-
]
|
|
114
|
-
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
YES_NO_CHOICES = (
|
|
4
|
+
('yes', 'Ja'),
|
|
5
|
+
('no', 'Nein'),
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
class TtoQuestionnaire(models.Model):
|
|
9
|
+
|
|
10
|
+
# Patient Information
|
|
11
|
+
patient_name = models.CharField(max_length=255, verbose_name="Identifikation des Patienten (Name)")
|
|
12
|
+
birth_date = models.DateField(verbose_name="Geburtsdatum")
|
|
13
|
+
|
|
14
|
+
# Base documentation
|
|
15
|
+
emergency_patient = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notfallpatient/kürzlich untersuchter Patient (Verzicht auf Team-Time-Out möglich)")
|
|
16
|
+
consent_signed = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Einverständniserklärung unterschrieben (Arzt, Patient)")
|
|
17
|
+
documents_present = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Alle Dokumente liegen vor (Labor, Befunde, etc.)")
|
|
18
|
+
communication_possible = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Kommunikation mit Patient möglich")
|
|
19
|
+
work_incapacity_certificate = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Arbeitsunfähigkeitsbescheinigung")
|
|
20
|
+
|
|
21
|
+
# priority items
|
|
22
|
+
pregnancy = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Schwangerschaft")
|
|
23
|
+
asa_classification_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="ASA-Klassifikation/Komorbidität geprüft")
|
|
24
|
+
previous_anesthesia_complications = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Komplikationen bei bisherigen Narkosen?")
|
|
25
|
+
last_meal_over_6_hours_ago = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Zeitpunkt letzte Mahlzeit > 6 Stunden")
|
|
26
|
+
allergies = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Allergien, welche?")
|
|
27
|
+
outpatient_accompaniment_post_sedation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Nur bei ambulanter Vorstellung: Begleitung nach Sedierung?")
|
|
28
|
+
|
|
29
|
+
# Possessions
|
|
30
|
+
dental_prosthesis = models.BooleanField(default=False, verbose_name="Zahnprothese")
|
|
31
|
+
glasses = models.BooleanField(default=False, verbose_name="Brille")
|
|
32
|
+
implants = models.BooleanField(default=False, verbose_name="Implantate")
|
|
33
|
+
hearing_aids = models.BooleanField(default=False, verbose_name="Hörgeräte")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Medical History
|
|
37
|
+
anticoagulants_ass = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Antikoagulation, ASS")
|
|
38
|
+
blood_pressure_medication = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Blutdruckmedikamente")
|
|
39
|
+
glaucoma = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Glaukom")
|
|
40
|
+
|
|
41
|
+
metal_implants = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Metallimplantate")
|
|
42
|
+
pacemaker_icd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Herzschrittmacher/ICD")
|
|
43
|
+
|
|
44
|
+
copd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="COPD")
|
|
45
|
+
liver_cirrhosis = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Leberzirrhose")
|
|
46
|
+
|
|
47
|
+
ibd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="CED (Chronisch entzündliche Darmerkrankungen)")
|
|
48
|
+
radiation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Bestrahlung")
|
|
49
|
+
surgeries = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="OP´s")
|
|
50
|
+
|
|
51
|
+
# preflight
|
|
52
|
+
team_introduction = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Teamvorstellung mit Name und Aufgabe")
|
|
53
|
+
instruments_available = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notwendige Instrumente vorhanden?")
|
|
54
|
+
monitoring_medications_equipment_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Monitoring, Medikamente, Equipment zum Atemwegsmanagement zur Verfügung und überprüft?")
|
|
55
|
+
complete_documentation_inclusive_care_notes = models.TextField(verbose_name="Vollständige Dokumentation inklusive Hinweise für Nachsorge")
|
|
56
|
+
|
|
57
|
+
# notes
|
|
58
|
+
notes = models.TextField(verbose_name="Bemerkungen", default = "Keine Bemerkungen")
|
|
59
|
+
|
|
60
|
+
# postflight
|
|
61
|
+
specimens_secured = models.BooleanField(default=False, verbose_name="Histologische Proben gesichert")
|
|
62
|
+
patient_condition_documented = models.TextField(verbose_name="Patientenzustand dokumentiert (je nach Ausgangszustand)")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def __str__(self):
|
|
67
|
+
return f"Endoscopy Questionnaire for {self.patient_name} on {self.birth_date}"
|
|
68
|
+
|
|
69
|
+
def get_id_attributes(self):
|
|
70
|
+
_ = [self.patient_name, self.birth_date]
|
|
71
|
+
return _
|
|
72
|
+
|
|
73
|
+
def get_base_documentation_attributes(self):
|
|
74
|
+
_ = [self.emergency_patient, self.consent_signed, self.documents_present, self.communication_possible, self.work_incapacity_certificate]
|
|
75
|
+
return _
|
|
76
|
+
|
|
77
|
+
def get_priority_items_attributes(self):
|
|
78
|
+
_ = [self.pregnancy, self.asa_classification_checked, self.previous_anesthesia_complications, self.last_meal_over_6_hours_ago, self.allergies, self.outpatient_accompaniment_post_sedation]
|
|
79
|
+
return _
|
|
80
|
+
|
|
81
|
+
def get_possessions_attributes(self):
|
|
82
|
+
_ = [self.dental_prosthesis, self.glasses, self.implants, self.hearing_aids]
|
|
83
|
+
return _
|
|
84
|
+
|
|
85
|
+
def get_medical_history_attributes(self):
|
|
86
|
+
_ = [
|
|
87
|
+
self.anticoagulants_ass,
|
|
88
|
+
self.blood_pressure_medication,
|
|
89
|
+
self.glaucoma,
|
|
90
|
+
self.metal_implants,
|
|
91
|
+
self.pacemaker_icd,
|
|
92
|
+
self.copd,
|
|
93
|
+
self.liver_cirrhosis,
|
|
94
|
+
self.ibd,
|
|
95
|
+
self.radiation,
|
|
96
|
+
self.surgeries,
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
def get_preflight_attributes(self):
|
|
100
|
+
_ = [
|
|
101
|
+
self.team_introduction,
|
|
102
|
+
self.instruments_available,
|
|
103
|
+
self.monitoring_medications_equipment_checked,
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
def get_note_attributes(self):
|
|
107
|
+
_ = [self.notes]
|
|
108
|
+
|
|
109
|
+
def get_postflight_attributes(self):
|
|
110
|
+
_ = [
|
|
111
|
+
self.specimens_secured,
|
|
112
|
+
self.patient_condition_documented
|
|
113
|
+
]
|
|
114
|
+
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
from .quiz_answer import QuizAnswer, QuizAnswerType
|
|
1
|
+
from .quiz_answer import QuizAnswer, QuizAnswerType
|
|
2
2
|
from .quiz_question import QuizQuestion, QuizQuestionType
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
from django.db import models
|
|
2
|
-
|
|
3
|
-
class QuizAnswerTypeManager(models.Manager):
|
|
4
|
-
def get_by_natural_key(self, name):
|
|
5
|
-
return self.get(name=name)
|
|
6
|
-
|
|
7
|
-
class QuizAnswerType(models.Model):
|
|
8
|
-
objects = QuizAnswerTypeManager()
|
|
9
|
-
|
|
10
|
-
name = models.CharField(max_length=255)
|
|
11
|
-
description = models.TextField(blank=True, null=True)
|
|
12
|
-
|
|
13
|
-
def natural_key(self):
|
|
14
|
-
return (self.name,)
|
|
15
|
-
|
|
16
|
-
def __str__(self):
|
|
17
|
-
return self.name
|
|
18
|
-
|
|
19
|
-
class QuizAnswerManager(models.Manager):
|
|
20
|
-
def get_by_natural_key(self, text):
|
|
21
|
-
return self.get(text=text)
|
|
22
|
-
|
|
23
|
-
class QuizAnswer(models.Model):
|
|
24
|
-
objects = QuizAnswerManager()
|
|
25
|
-
|
|
26
|
-
text_value = models.CharField(max_length=255, null=True, blank=True)
|
|
27
|
-
number_value = models.FloatField(null=True, blank=True)
|
|
28
|
-
answer_type = models.ForeignKey("QuizAnswerType", on_delete=models.CASCADE)
|
|
29
|
-
question = models.ForeignKey("QuizQuestion", on_delete=models.CASCADE)
|
|
30
|
-
|
|
31
|
-
last_updated = models.DateTimeField(auto_now=True)
|
|
32
|
-
|
|
33
|
-
#TODO add user as foreign key
|
|
34
|
-
|
|
35
|
-
def natural_key(self):
|
|
36
|
-
return (self.text,)
|
|
37
|
-
|
|
38
|
-
def __str__(self):
|
|
39
|
-
return self.text
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class QuizAnswerTypeManager(models.Manager):
|
|
4
|
+
def get_by_natural_key(self, name):
|
|
5
|
+
return self.get(name=name)
|
|
6
|
+
|
|
7
|
+
class QuizAnswerType(models.Model):
|
|
8
|
+
objects = QuizAnswerTypeManager()
|
|
9
|
+
|
|
10
|
+
name = models.CharField(max_length=255)
|
|
11
|
+
description = models.TextField(blank=True, null=True)
|
|
12
|
+
|
|
13
|
+
def natural_key(self):
|
|
14
|
+
return (self.name,)
|
|
15
|
+
|
|
16
|
+
def __str__(self):
|
|
17
|
+
return self.name
|
|
18
|
+
|
|
19
|
+
class QuizAnswerManager(models.Manager):
|
|
20
|
+
def get_by_natural_key(self, text):
|
|
21
|
+
return self.get(text=text)
|
|
22
|
+
|
|
23
|
+
class QuizAnswer(models.Model):
|
|
24
|
+
objects = QuizAnswerManager()
|
|
25
|
+
|
|
26
|
+
text_value = models.CharField(max_length=255, null=True, blank=True)
|
|
27
|
+
number_value = models.FloatField(null=True, blank=True)
|
|
28
|
+
answer_type = models.ForeignKey("QuizAnswerType", on_delete=models.CASCADE)
|
|
29
|
+
question = models.ForeignKey("QuizQuestion", on_delete=models.CASCADE)
|
|
30
|
+
|
|
31
|
+
last_updated = models.DateTimeField(auto_now=True)
|
|
32
|
+
|
|
33
|
+
#TODO add user as foreign key
|
|
34
|
+
|
|
35
|
+
def natural_key(self):
|
|
36
|
+
return (self.text,)
|
|
37
|
+
|
|
38
|
+
def __str__(self):
|
|
39
|
+
return self.text
|
|
40
|
+
|
|
41
|
+
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
from django.db import models
|
|
2
|
-
|
|
3
|
-
class QuizQuestionTypeManager(models.Manager):
|
|
4
|
-
def get_by_natural_key(self, name):
|
|
5
|
-
return self.get(name=name)
|
|
6
|
-
|
|
7
|
-
class QuizQuestionType(models.Model):
|
|
8
|
-
"""
|
|
9
|
-
A class representing a quiz question type.
|
|
10
|
-
|
|
11
|
-
Attributes:
|
|
12
|
-
name (str): The name of the quiz question type.
|
|
13
|
-
description (str): A description of the quiz question type.
|
|
14
|
-
|
|
15
|
-
"""
|
|
16
|
-
name = models.CharField(max_length=255)
|
|
17
|
-
description = models.TextField(blank=True, null=True)
|
|
18
|
-
|
|
19
|
-
objects = QuizQuestionTypeManager()
|
|
20
|
-
|
|
21
|
-
def natural_key(self):
|
|
22
|
-
return (self.name,)
|
|
23
|
-
|
|
24
|
-
def __str__(self):
|
|
25
|
-
return self.name
|
|
26
|
-
|
|
27
|
-
class QuizQuestionManager(models.Manager):
|
|
28
|
-
def get_by_natural_key(self, text):
|
|
29
|
-
return self.get(text=text)
|
|
30
|
-
|
|
31
|
-
class QuizQuestion(models.Model):
|
|
32
|
-
"""
|
|
33
|
-
A class representing a quiz question.
|
|
34
|
-
|
|
35
|
-
Attributes:
|
|
36
|
-
text (str): The text of the quiz question.
|
|
37
|
-
question_type (QuizQuestionType): The type of the quiz question.
|
|
38
|
-
description (str): A description of the quiz question.
|
|
39
|
-
|
|
40
|
-
"""
|
|
41
|
-
text = models.TextField()
|
|
42
|
-
description = models.TextField(blank=True, null=True)
|
|
43
|
-
question_type = models.ForeignKey("QuizQuestionType", on_delete=models.CASCADE)
|
|
44
|
-
|
|
45
|
-
objects = QuizQuestionManager()
|
|
46
|
-
|
|
47
|
-
def natural_key(self):
|
|
48
|
-
return (self.text,)
|
|
49
|
-
|
|
50
|
-
def __str__(self):
|
|
51
|
-
return self.text
|
|
52
|
-
|
|
53
|
-
def get_question_type(self):
|
|
54
|
-
return self.question_type.name
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class QuizQuestionTypeManager(models.Manager):
|
|
4
|
+
def get_by_natural_key(self, name):
|
|
5
|
+
return self.get(name=name)
|
|
6
|
+
|
|
7
|
+
class QuizQuestionType(models.Model):
|
|
8
|
+
"""
|
|
9
|
+
A class representing a quiz question type.
|
|
10
|
+
|
|
11
|
+
Attributes:
|
|
12
|
+
name (str): The name of the quiz question type.
|
|
13
|
+
description (str): A description of the quiz question type.
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
name = models.CharField(max_length=255)
|
|
17
|
+
description = models.TextField(blank=True, null=True)
|
|
18
|
+
|
|
19
|
+
objects = QuizQuestionTypeManager()
|
|
20
|
+
|
|
21
|
+
def natural_key(self):
|
|
22
|
+
return (self.name,)
|
|
23
|
+
|
|
24
|
+
def __str__(self):
|
|
25
|
+
return self.name
|
|
26
|
+
|
|
27
|
+
class QuizQuestionManager(models.Manager):
|
|
28
|
+
def get_by_natural_key(self, text):
|
|
29
|
+
return self.get(text=text)
|
|
30
|
+
|
|
31
|
+
class QuizQuestion(models.Model):
|
|
32
|
+
"""
|
|
33
|
+
A class representing a quiz question.
|
|
34
|
+
|
|
35
|
+
Attributes:
|
|
36
|
+
text (str): The text of the quiz question.
|
|
37
|
+
question_type (QuizQuestionType): The type of the quiz question.
|
|
38
|
+
description (str): A description of the quiz question.
|
|
39
|
+
|
|
40
|
+
"""
|
|
41
|
+
text = models.TextField()
|
|
42
|
+
description = models.TextField(blank=True, null=True)
|
|
43
|
+
question_type = models.ForeignKey("QuizQuestionType", on_delete=models.CASCADE)
|
|
44
|
+
|
|
45
|
+
objects = QuizQuestionManager()
|
|
46
|
+
|
|
47
|
+
def natural_key(self):
|
|
48
|
+
return (self.text,)
|
|
49
|
+
|
|
50
|
+
def __str__(self):
|
|
51
|
+
return self.text
|
|
52
|
+
|
|
53
|
+
def get_question_type(self):
|
|
54
|
+
return self.question_type.name
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
from .report_reader_config import ReportReaderConfig
|
|
1
|
+
from .report_reader_config import ReportReaderConfig
|
|
2
2
|
from .report_reader_flag import ReportReaderFlag
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# ReportReaderConfig Class
|
|
2
|
-
# Description: This class is used to store the configuration of the ReportReader
|
|
3
|
-
|
|
4
|
-
# PATIENT_INFO_LINE_FLAG = "Patient: "
|
|
5
|
-
# ENDOSCOPE_INFO_LINE_FLAG = "Gerät: "
|
|
6
|
-
# EXAMINER_INFO_LINE_FLAG = "1. Unters.:"
|
|
7
|
-
# CUT_OFF_BELOW_LINE_FLAG = "________________"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# CUT_OFF_ABOVE_LINE_FLAGS = [
|
|
11
|
-
# ENDOSCOPE_INFO_LINE_FLAG,
|
|
12
|
-
# EXAMINER_INFO_LINE_FLAG,
|
|
13
|
-
# ]
|
|
14
|
-
|
|
15
|
-
# CUT_OFF_BELOW_LINE_FLAGS = [
|
|
16
|
-
# CUT_OFF_BELOW_LINE_FLAG
|
|
17
|
-
# ]
|
|
18
|
-
|
|
19
|
-
from django.db import models
|
|
20
|
-
from .report_reader_flag import ReportReaderFlag
|
|
21
|
-
from ..center import Center
|
|
22
|
-
from ..data_file import PdfType
|
|
23
|
-
|
|
24
|
-
class ReportReaderConfig(models.Model):
|
|
25
|
-
|
|
26
|
-
locale = models.CharField(default="de_DE", max_length=10)
|
|
27
|
-
first_names = models.ManyToManyField('FirstName', related_name='report_reader_configs')
|
|
28
|
-
last_names = models.ManyToManyField('LastName', related_name='report_reader_configs')
|
|
29
|
-
text_date_format = models.CharField(default = "%d.%m.%Y", max_length=10)
|
|
30
|
-
patient_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_patient_info_line', on_delete=models.CASCADE)
|
|
31
|
-
endoscope_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_endoscope_info_line', on_delete=models.CASCADE)
|
|
32
|
-
examiner_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_examiner_info_line', on_delete=models.CASCADE)
|
|
33
|
-
cut_off_below = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_below')
|
|
34
|
-
cut_off_above = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_above')
|
|
35
|
-
|
|
36
|
-
def __str__(self):
|
|
37
|
-
return self.locale
|
|
38
|
-
|
|
39
|
-
def update_names_by_center(self, center:Center, save = True):
|
|
40
|
-
self.first_names.set(center.first_names.all())
|
|
41
|
-
self.last_names.set(center.last_names.all())
|
|
42
|
-
if save:
|
|
43
|
-
self.save()
|
|
44
|
-
|
|
45
|
-
def update_flags_by_pdf_type(self, pdf_type:PdfType, save = True):
|
|
46
|
-
self.patient_info_line_flag = pdf_type.patient_info_line_flag
|
|
47
|
-
self.endoscope_info_line_flag = pdf_type.endoscope_info_line_flag
|
|
48
|
-
self.examiner_info_line_flag = pdf_type.examiner_info_line_flag
|
|
49
|
-
self.cut_off_below.set(pdf_type.cut_off_below.all())
|
|
50
|
-
self.cut_off_above.set(pdf_type.cut_off_above.all())
|
|
51
|
-
if save:
|
|
52
|
-
self.save()
|
|
53
|
-
|
|
1
|
+
# ReportReaderConfig Class
|
|
2
|
+
# Description: This class is used to store the configuration of the ReportReader
|
|
3
|
+
|
|
4
|
+
# PATIENT_INFO_LINE_FLAG = "Patient: "
|
|
5
|
+
# ENDOSCOPE_INFO_LINE_FLAG = "Gerät: "
|
|
6
|
+
# EXAMINER_INFO_LINE_FLAG = "1. Unters.:"
|
|
7
|
+
# CUT_OFF_BELOW_LINE_FLAG = "________________"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# CUT_OFF_ABOVE_LINE_FLAGS = [
|
|
11
|
+
# ENDOSCOPE_INFO_LINE_FLAG,
|
|
12
|
+
# EXAMINER_INFO_LINE_FLAG,
|
|
13
|
+
# ]
|
|
14
|
+
|
|
15
|
+
# CUT_OFF_BELOW_LINE_FLAGS = [
|
|
16
|
+
# CUT_OFF_BELOW_LINE_FLAG
|
|
17
|
+
# ]
|
|
18
|
+
|
|
19
|
+
from django.db import models
|
|
20
|
+
from .report_reader_flag import ReportReaderFlag
|
|
21
|
+
from ..center import Center
|
|
22
|
+
from ..data_file import PdfType
|
|
23
|
+
|
|
24
|
+
class ReportReaderConfig(models.Model):
|
|
25
|
+
|
|
26
|
+
locale = models.CharField(default="de_DE", max_length=10)
|
|
27
|
+
first_names = models.ManyToManyField('FirstName', related_name='report_reader_configs')
|
|
28
|
+
last_names = models.ManyToManyField('LastName', related_name='report_reader_configs')
|
|
29
|
+
text_date_format = models.CharField(default = "%d.%m.%Y", max_length=10)
|
|
30
|
+
patient_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_patient_info_line', on_delete=models.CASCADE)
|
|
31
|
+
endoscope_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_endoscope_info_line', on_delete=models.CASCADE)
|
|
32
|
+
examiner_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_examiner_info_line', on_delete=models.CASCADE)
|
|
33
|
+
cut_off_below = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_below')
|
|
34
|
+
cut_off_above = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_above')
|
|
35
|
+
|
|
36
|
+
def __str__(self):
|
|
37
|
+
return self.locale
|
|
38
|
+
|
|
39
|
+
def update_names_by_center(self, center:Center, save = True):
|
|
40
|
+
self.first_names.set(center.first_names.all())
|
|
41
|
+
self.last_names.set(center.last_names.all())
|
|
42
|
+
if save:
|
|
43
|
+
self.save()
|
|
44
|
+
|
|
45
|
+
def update_flags_by_pdf_type(self, pdf_type:PdfType, save = True):
|
|
46
|
+
self.patient_info_line_flag = pdf_type.patient_info_line_flag
|
|
47
|
+
self.endoscope_info_line_flag = pdf_type.endoscope_info_line_flag
|
|
48
|
+
self.examiner_info_line_flag = pdf_type.examiner_info_line_flag
|
|
49
|
+
self.cut_off_below.set(pdf_type.cut_off_below.all())
|
|
50
|
+
self.cut_off_above.set(pdf_type.cut_off_above.all())
|
|
51
|
+
if save:
|
|
52
|
+
self.save()
|
|
53
|
+
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# Django model for the report reader flag
|
|
2
|
-
# have name and value
|
|
3
|
-
# name is natural key
|
|
4
|
-
|
|
5
|
-
from django.db import models
|
|
6
|
-
|
|
7
|
-
class ReportReaderFlagManager(models.Manager):
|
|
8
|
-
def get_by_natural_key(self, name):
|
|
9
|
-
return self.get(name=name)
|
|
10
|
-
|
|
11
|
-
class ReportReaderFlag(models.Model):
|
|
12
|
-
objects = ReportReaderFlagManager()
|
|
13
|
-
name = models.CharField(max_length=255, unique=True)
|
|
14
|
-
value = models.CharField(max_length=255)
|
|
15
|
-
|
|
16
|
-
def natural_key(self):
|
|
17
|
-
return (self.name,)
|
|
18
|
-
|
|
19
|
-
def __str__(self):
|
|
1
|
+
# Django model for the report reader flag
|
|
2
|
+
# have name and value
|
|
3
|
+
# name is natural key
|
|
4
|
+
|
|
5
|
+
from django.db import models
|
|
6
|
+
|
|
7
|
+
class ReportReaderFlagManager(models.Manager):
|
|
8
|
+
def get_by_natural_key(self, name):
|
|
9
|
+
return self.get(name=name)
|
|
10
|
+
|
|
11
|
+
class ReportReaderFlag(models.Model):
|
|
12
|
+
objects = ReportReaderFlagManager()
|
|
13
|
+
name = models.CharField(max_length=255, unique=True)
|
|
14
|
+
value = models.CharField(max_length=255)
|
|
15
|
+
|
|
16
|
+
def natural_key(self):
|
|
17
|
+
return (self.name,)
|
|
18
|
+
|
|
19
|
+
def __str__(self):
|
|
20
20
|
return self.name
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from .rule_type import RuleType
|
|
2
|
-
from .rule import Rule
|
|
3
|
-
from .ruleset import Ruleset
|
|
4
|
-
from .rule_attribute_dtype import RuleAttributeDType
|
|
1
|
+
from .rule_type import RuleType
|
|
2
|
+
from .rule import Rule
|
|
3
|
+
from .ruleset import Ruleset
|
|
4
|
+
from .rule_attribute_dtype import RuleAttributeDType
|
|
5
5
|
from .rule_applicator import RuleApplicator
|
endoreg_db/models/rules/rule.py
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
from django.db import models
|
|
2
|
-
|
|
3
|
-
class RuleManager(models.Manager):
|
|
4
|
-
def get_by_natural_key(self, name):
|
|
5
|
-
return self.get(name=name)
|
|
6
|
-
|
|
7
|
-
class Rule(models.Model):
|
|
8
|
-
name = models.CharField(max_length=255, unique=True)
|
|
9
|
-
name_de = models.CharField(max_length=255, blank=True, null=True)
|
|
10
|
-
name_en = models.CharField(max_length=255, blank=True, null=True)
|
|
11
|
-
description = models.TextField(blank=True, null=True)
|
|
12
|
-
attribute_key = models.CharField(max_length=255)
|
|
13
|
-
rule_type = models.ForeignKey("RuleType", on_delete=models.CASCADE)
|
|
14
|
-
attribute_dtype = models.ForeignKey("RuleAttributeDType", on_delete=models.CASCADE)
|
|
15
|
-
|
|
16
|
-
objects = RuleManager()
|
|
17
|
-
|
|
18
|
-
class Meta:
|
|
19
|
-
verbose_name = 'Rule'
|
|
20
|
-
verbose_name_plural = 'Rules'
|
|
21
|
-
|
|
22
|
-
def natural_key(self):
|
|
23
|
-
return (self.name,)
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class RuleManager(models.Manager):
|
|
4
|
+
def get_by_natural_key(self, name):
|
|
5
|
+
return self.get(name=name)
|
|
6
|
+
|
|
7
|
+
class Rule(models.Model):
|
|
8
|
+
name = models.CharField(max_length=255, unique=True)
|
|
9
|
+
name_de = models.CharField(max_length=255, blank=True, null=True)
|
|
10
|
+
name_en = models.CharField(max_length=255, blank=True, null=True)
|
|
11
|
+
description = models.TextField(blank=True, null=True)
|
|
12
|
+
attribute_key = models.CharField(max_length=255)
|
|
13
|
+
rule_type = models.ForeignKey("RuleType", on_delete=models.CASCADE)
|
|
14
|
+
attribute_dtype = models.ForeignKey("RuleAttributeDType", on_delete=models.CASCADE)
|
|
15
|
+
|
|
16
|
+
objects = RuleManager()
|
|
17
|
+
|
|
18
|
+
class Meta:
|
|
19
|
+
verbose_name = 'Rule'
|
|
20
|
+
verbose_name_plural = 'Rules'
|
|
21
|
+
|
|
22
|
+
def natural_key(self):
|
|
23
|
+
return (self.name,)
|
|
24
24
|
|