endoreg-db 0.3.6__py3-none-any.whl → 0.3.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. endoreg_db/admin.py +3 -3
  2. endoreg_db/apps.py +6 -6
  3. endoreg_db/data/__init__.py +67 -64
  4. endoreg_db/data/active_model/data.yaml +2 -2
  5. endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -167
  6. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +7 -7
  7. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +8 -8
  8. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +22 -22
  9. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +18 -18
  10. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +18 -18
  11. endoreg_db/data/case_template/rule/19_create_patient.yaml +16 -16
  12. endoreg_db/data/case_template/rule_type/base_types.yaml +35 -35
  13. endoreg_db/data/case_template/rule_value/.init +0 -0
  14. endoreg_db/data/case_template/rule_value_type/base_types.yaml +58 -58
  15. endoreg_db/data/case_template/template/base.yaml +7 -7
  16. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
  17. endoreg_db/data/case_template/tmp/_rule_value +13 -13
  18. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
  19. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
  20. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
  21. endoreg_db/data/center/data.yaml +59 -59
  22. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
  23. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
  24. endoreg_db/data/disease/cardiovascular.yaml +37 -37
  25. endoreg_db/data/disease/hepatology.yaml +4 -4
  26. endoreg_db/data/disease/misc.yaml +5 -5
  27. endoreg_db/data/disease/renal.yaml +4 -4
  28. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
  29. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
  30. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
  31. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
  32. endoreg_db/data/distribution/date/patient.yaml +6 -6
  33. endoreg_db/data/distribution/multiple_categorical/.init +0 -0
  34. endoreg_db/data/distribution/numeric/.init +0 -0
  35. endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
  36. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
  37. endoreg_db/data/endoscope_type/data.yaml +10 -10
  38. endoreg_db/data/endoscopy_processor/data.yaml +45 -45
  39. endoreg_db/data/event/cardiology.yaml +27 -27
  40. endoreg_db/data/event/neurology.yaml +13 -13
  41. endoreg_db/data/event/surgery.yaml +12 -12
  42. endoreg_db/data/event/thrombembolism.yaml +19 -19
  43. endoreg_db/data/examination/examinations/data.yaml +65 -65
  44. endoreg_db/data/examination/time/data.yaml +47 -47
  45. endoreg_db/data/examination/time-type/data.yaml +7 -7
  46. endoreg_db/data/examination/type/data.yaml +5 -5
  47. endoreg_db/data/gender/data.yaml +18 -18
  48. endoreg_db/data/information_source/data.yaml +30 -30
  49. endoreg_db/data/information_source/medication.yaml +5 -5
  50. endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
  51. endoreg_db/data/lab_value/coagulation.yaml +48 -48
  52. endoreg_db/data/lab_value/electrolytes.yaml +189 -189
  53. endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
  54. endoreg_db/data/lab_value/hematology.yaml +169 -169
  55. endoreg_db/data/lab_value/hormones.yaml +53 -53
  56. endoreg_db/data/lab_value/lipids.yaml +44 -44
  57. endoreg_db/data/lab_value/misc.yaml +30 -30
  58. endoreg_db/data/lab_value/renal_function.yaml +10 -10
  59. endoreg_db/data/label/label/data.yaml +62 -62
  60. endoreg_db/data/label/label-set/data.yaml +17 -17
  61. endoreg_db/data/label/label-type/data.yaml +6 -6
  62. endoreg_db/data/medication/anticoagulation.yaml +64 -64
  63. endoreg_db/data/medication/tah.yaml +69 -69
  64. endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
  65. endoreg_db/data/medication_indication_type/data.yaml +10 -10
  66. endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
  67. endoreg_db/data/medication_intake_time/base.yaml +30 -30
  68. endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
  69. endoreg_db/data/medication_schedule/ass.yaml +12 -12
  70. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
  71. endoreg_db/data/model_type/data.yaml +6 -6
  72. endoreg_db/data/network_device/data.yaml +17 -0
  73. endoreg_db/data/network_device_type/data.yaml +8 -0
  74. endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
  75. endoreg_db/data/pdf_type/data.yaml +28 -28
  76. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
  77. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
  78. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
  79. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
  80. endoreg_db/data/profession/data.yaml +70 -70
  81. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
  82. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
  83. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
  84. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
  85. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
  86. endoreg_db/data/unit/concentration.yaml +92 -92
  87. endoreg_db/data/unit/data.yaml +17 -17
  88. endoreg_db/data/unit/length.yaml +30 -30
  89. endoreg_db/data/unit/misc.yaml +19 -19
  90. endoreg_db/data/unit/rate.yaml +5 -5
  91. endoreg_db/data/unit/time.yaml +12 -12
  92. endoreg_db/data/unit/volume.yaml +35 -35
  93. endoreg_db/data/unit/weight.yaml +37 -37
  94. endoreg_db/data/waste/data.yaml +11 -11
  95. endoreg_db/forms/__init__.py +2 -2
  96. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
  97. endoreg_db/forms/settings/__init__.py +8 -8
  98. endoreg_db/forms/unit.py +5 -5
  99. endoreg_db/management/commands/_load_model_template.py +40 -40
  100. endoreg_db/management/commands/delete_all.py +18 -18
  101. endoreg_db/management/commands/delete_legacy_images.py +19 -19
  102. endoreg_db/management/commands/delete_legacy_videos.py +16 -16
  103. endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
  104. endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
  105. endoreg_db/management/commands/fix_auth_permission.py +20 -20
  106. endoreg_db/management/commands/import_legacy_images.py +94 -94
  107. endoreg_db/management/commands/import_legacy_videos.py +76 -76
  108. endoreg_db/management/commands/load_active_model_data.py +44 -44
  109. endoreg_db/management/commands/load_ai_model_data.py +44 -44
  110. endoreg_db/management/commands/load_base_db_data.py +132 -128
  111. endoreg_db/management/commands/load_center_data.py +42 -42
  112. endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
  113. endoreg_db/management/commands/load_disease_classification_data.py +40 -40
  114. endoreg_db/management/commands/load_disease_data.py +39 -39
  115. endoreg_db/management/commands/load_distribution_data.py +65 -65
  116. endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
  117. endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
  118. endoreg_db/management/commands/load_event_data.py +40 -40
  119. endoreg_db/management/commands/load_examination_data.py +74 -74
  120. endoreg_db/management/commands/load_g_play_data.py +112 -112
  121. endoreg_db/management/commands/load_gender_data.py +43 -43
  122. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
  123. endoreg_db/management/commands/load_information_source.py +44 -44
  124. endoreg_db/management/commands/load_lab_value_data.py +49 -49
  125. endoreg_db/management/commands/load_label_data.py +66 -66
  126. endoreg_db/management/commands/load_medication_data.py +40 -40
  127. endoreg_db/management/commands/load_medication_indication_data.py +62 -62
  128. endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
  129. endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
  130. endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
  131. endoreg_db/management/commands/load_network_data.py +49 -0
  132. endoreg_db/management/commands/load_pdf_type_data.py +60 -60
  133. endoreg_db/management/commands/load_profession_data.py +43 -43
  134. endoreg_db/management/commands/load_report_reader_flag.py +45 -45
  135. endoreg_db/management/commands/load_unit_data.py +45 -45
  136. endoreg_db/management/commands/load_user_groups.py +28 -28
  137. endoreg_db/management/commands/register_ai_model.py +65 -65
  138. endoreg_db/management/commands/reset_celery_schedule.py +9 -9
  139. endoreg_db/migrations/0001_initial.py +582 -582
  140. endoreg_db/migrations/0002_rawvideofile.py +26 -26
  141. endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
  142. endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
  143. endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
  144. endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
  145. endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
  146. endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
  147. endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
  148. endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
  149. endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
  150. endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
  151. endoreg_db/migrations/0013_rawpdffile.py +31 -31
  152. endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
  153. endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
  154. endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
  155. endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
  156. endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
  157. endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
  158. endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
  159. endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
  160. endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
  161. endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
  162. endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
  163. endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
  164. endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
  165. endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
  166. endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
  167. endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
  168. endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
  169. endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
  170. endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
  171. endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
  172. endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
  173. endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
  174. endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
  175. endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
  176. endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
  177. endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
  178. endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
  179. endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
  180. endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
  181. endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
  182. endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
  183. endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
  184. endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
  185. endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
  186. endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
  187. endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
  188. endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
  189. endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
  190. endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
  191. endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
  192. endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
  193. endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
  194. endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
  195. endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
  196. endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
  197. endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
  198. endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
  199. endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
  200. endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
  201. endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
  202. endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
  203. endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
  204. endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
  205. endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
  206. endoreg_db/migrations/0068_networkdevicetype_networkdevicetypemanager_and_more.py +57 -0
  207. endoreg_db/models/__init__.py +75 -74
  208. endoreg_db/models/ai_model/__init__.py +3 -3
  209. endoreg_db/models/ai_model/active_model.py +9 -9
  210. endoreg_db/models/ai_model/model_meta.py +24 -24
  211. endoreg_db/models/ai_model/model_type.py +25 -25
  212. endoreg_db/models/ai_model/utils.py +8 -8
  213. endoreg_db/models/annotation/__init__.py +1 -1
  214. endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
  215. endoreg_db/models/annotation/image_classification.py +26 -26
  216. endoreg_db/models/case_template/__init__.py +5 -5
  217. endoreg_db/models/case_template/case_template.py +81 -81
  218. endoreg_db/models/case_template/case_template_rule.py +276 -276
  219. endoreg_db/models/case_template/case_template_rule_value.py +73 -73
  220. endoreg_db/models/case_template/case_template_type.py +27 -27
  221. endoreg_db/models/center/__init__.py +4 -4
  222. endoreg_db/models/center/center.py +24 -24
  223. endoreg_db/models/center/center_product.py +33 -33
  224. endoreg_db/models/center/center_resource.py +18 -18
  225. endoreg_db/models/center/center_waste.py +10 -10
  226. endoreg_db/models/data_file/__init__.py +5 -5
  227. endoreg_db/models/data_file/base_classes/__init__.py +2 -2
  228. endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
  229. endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
  230. endoreg_db/models/data_file/frame.py +45 -45
  231. endoreg_db/models/data_file/import_classes/__init__.py +31 -31
  232. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
  233. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
  234. endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
  235. endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
  236. endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
  237. endoreg_db/models/data_file/metadata/__init__.py +3 -3
  238. endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
  239. endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
  240. endoreg_db/models/data_file/metadata/video_meta.py +132 -132
  241. endoreg_db/models/data_file/report_file.py +89 -89
  242. endoreg_db/models/data_file/video/__init__.py +6 -6
  243. endoreg_db/models/data_file/video/import_meta.py +25 -25
  244. endoreg_db/models/data_file/video/video.py +25 -25
  245. endoreg_db/models/data_file/video_segment.py +107 -107
  246. endoreg_db/models/disease.py +55 -55
  247. endoreg_db/models/emission/emission_factor.py +19 -19
  248. endoreg_db/models/event.py +21 -21
  249. endoreg_db/models/examination/__init__.py +3 -3
  250. endoreg_db/models/examination/examination.py +26 -26
  251. endoreg_db/models/examination/examination_time.py +27 -27
  252. endoreg_db/models/examination/examination_time_type.py +24 -24
  253. endoreg_db/models/examination/examination_type.py +18 -18
  254. endoreg_db/models/hardware/__init__.py +1 -1
  255. endoreg_db/models/hardware/endoscope.py +44 -44
  256. endoreg_db/models/hardware/endoscopy_processor.py +143 -143
  257. endoreg_db/models/information_source.py +29 -29
  258. endoreg_db/models/label/label.py +84 -84
  259. endoreg_db/models/laboratory/lab_value.py +102 -102
  260. endoreg_db/models/legacy_data/__init__.py +3 -3
  261. endoreg_db/models/legacy_data/image.py +34 -34
  262. endoreg_db/models/medication/medication.py +148 -148
  263. endoreg_db/models/network/__init__.py +2 -0
  264. endoreg_db/models/network/network_device.py +27 -0
  265. endoreg_db/models/network/network_device_type.py +23 -0
  266. endoreg_db/models/other/__init__.py +4 -4
  267. endoreg_db/models/other/distribution.py +215 -215
  268. endoreg_db/models/other/material.py +16 -16
  269. endoreg_db/models/other/resource.py +17 -17
  270. endoreg_db/models/other/transport_route.py +20 -20
  271. endoreg_db/models/other/waste.py +20 -20
  272. endoreg_db/models/patient_examination/__init__.py +35 -35
  273. endoreg_db/models/permissions/__init__.py +44 -44
  274. endoreg_db/models/persons/__init__.py +6 -6
  275. endoreg_db/models/persons/examiner/__init__.py +1 -1
  276. endoreg_db/models/persons/examiner/examiner.py +15 -15
  277. endoreg_db/models/persons/examiner/examiner_type.py +1 -1
  278. endoreg_db/models/persons/first_name.py +17 -17
  279. endoreg_db/models/persons/gender.py +22 -22
  280. endoreg_db/models/persons/last_name.py +19 -19
  281. endoreg_db/models/persons/patient/__init__.py +7 -7
  282. endoreg_db/models/persons/patient/case/case.py +30 -30
  283. endoreg_db/models/persons/patient/patient.py +216 -216
  284. endoreg_db/models/persons/patient/patient_disease.py +16 -16
  285. endoreg_db/models/persons/patient/patient_event.py +22 -22
  286. endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
  287. endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
  288. endoreg_db/models/persons/patient/patient_medication.py +43 -43
  289. endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
  290. endoreg_db/models/persons/person.py +31 -31
  291. endoreg_db/models/persons/portal_user_information.py +27 -27
  292. endoreg_db/models/prediction/__init__.py +1 -1
  293. endoreg_db/models/prediction/image_classification.py +37 -37
  294. endoreg_db/models/prediction/video_prediction_meta.py +244 -244
  295. endoreg_db/models/product/__init__.py +4 -4
  296. endoreg_db/models/product/product.py +97 -97
  297. endoreg_db/models/product/product_group.py +19 -19
  298. endoreg_db/models/product/product_material.py +24 -24
  299. endoreg_db/models/product/product_weight.py +26 -26
  300. endoreg_db/models/product/reference_product.py +99 -99
  301. endoreg_db/models/questionnaires/__init__.py +114 -114
  302. endoreg_db/models/quiz/__init__.py +1 -1
  303. endoreg_db/models/quiz/quiz_answer.py +41 -41
  304. endoreg_db/models/quiz/quiz_question.py +54 -54
  305. endoreg_db/models/report_reader/__init__.py +1 -1
  306. endoreg_db/models/report_reader/report_reader_config.py +53 -53
  307. endoreg_db/models/report_reader/report_reader_flag.py +19 -19
  308. endoreg_db/models/rules/__init__.py +4 -4
  309. endoreg_db/models/rules/rule.py +23 -23
  310. endoreg_db/models/rules/rule_applicator.py +224 -224
  311. endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
  312. endoreg_db/models/rules/rule_type.py +21 -21
  313. endoreg_db/models/rules/ruleset.py +19 -19
  314. endoreg_db/models/unit.py +21 -21
  315. endoreg_db/queries/__init__.py +4 -4
  316. endoreg_db/queries/annotations/__init__.py +2 -2
  317. endoreg_db/queries/annotations/legacy.py +159 -159
  318. endoreg_db/queries/get/__init__.py +5 -5
  319. endoreg_db/queries/get/center.py +42 -42
  320. endoreg_db/queries/get/model.py +13 -13
  321. endoreg_db/queries/get/patient.py +14 -14
  322. endoreg_db/queries/get/patient_examination.py +20 -20
  323. endoreg_db/queries/get/report_file.py +33 -33
  324. endoreg_db/queries/get/video.py +31 -31
  325. endoreg_db/serializers/__init__.py +9 -9
  326. endoreg_db/serializers/ai_model.py +18 -18
  327. endoreg_db/serializers/annotation.py +17 -17
  328. endoreg_db/serializers/center.py +11 -11
  329. endoreg_db/serializers/examination.py +32 -32
  330. endoreg_db/serializers/frame.py +13 -13
  331. endoreg_db/serializers/hardware.py +20 -20
  332. endoreg_db/serializers/label.py +22 -22
  333. endoreg_db/serializers/patient.py +10 -10
  334. endoreg_db/serializers/prediction.py +15 -15
  335. endoreg_db/serializers/report_file.py +7 -7
  336. endoreg_db/serializers/video.py +27 -27
  337. endoreg_db/tests.py +3 -3
  338. endoreg_db/utils/cropping.py +28 -28
  339. endoreg_db/utils/dataloader.py +92 -92
  340. endoreg_db/utils/file_operations.py +30 -30
  341. endoreg_db/utils/hashs.py +33 -33
  342. endoreg_db/utils/legacy_ocr.py +201 -201
  343. endoreg_db/utils/ocr.py +197 -197
  344. endoreg_db/utils/uuid.py +4 -4
  345. endoreg_db/utils/video_metadata.py +87 -87
  346. endoreg_db/views.py +3 -3
  347. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/LICENSE +674 -674
  348. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/METADATA +3 -1
  349. endoreg_db-0.3.8.dist-info/RECORD +367 -0
  350. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.8.dist-info}/WHEEL +1 -1
  351. endoreg_db-0.3.6.dist-info/RECORD +0 -357
@@ -1,97 +1,97 @@
1
- from django.db import models
2
-
3
- class ProductManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- def sum_weights(product_materials):
8
- # sum up the weights
9
- weight = 0
10
- reference_unit = None
11
- for product_material in product_materials:
12
- if not reference_unit:
13
- reference_unit = product_material.unit
14
- else:
15
- assert reference_unit == product_material.unit, "ProductMaterial units do not match"
16
- weight += product_material.quantity
17
-
18
- return weight, reference_unit
19
-
20
- def sum_emissions(product_materials):
21
- # sum up the emissions
22
- emission = 0
23
- reference_unit = None
24
- for product_material in product_materials:
25
- if not reference_unit:
26
- reference_unit = product_material.unit
27
- else:
28
- assert reference_unit == product_material.unit, "ProductMaterial units do not match"
29
- emission, emission_unit = product_material.get_emission()
30
- assert reference_unit == emission_unit, "ProductMaterial units do not match"
31
- emission += emission
32
-
33
- return emission, reference_unit
34
-
35
- class Product(models.Model):
36
- objects = ProductManager()
37
-
38
- name = models.CharField(max_length=255)
39
- name_de = models.CharField(max_length=255, null=True)
40
- name_en = models.CharField(max_length=255, null=True)
41
-
42
- transport_route = models.ForeignKey("TransportRoute", on_delete=models.SET_NULL, null=True)
43
- product_group = models.ForeignKey("ProductGroup", on_delete=models.SET_NULL, null=True)
44
-
45
- def natural_key(self):
46
- return (self.name,)
47
-
48
- def __str__(self):
49
- return self.name
50
-
51
- def get_product_weight(self):
52
- # check if there is a product material weight
53
- from .product_material import ProductMaterial
54
- product_materials = ProductMaterial.objects.filter(product=self, component="product")
55
- if product_materials:
56
- return self.get_product_material_weight()
57
-
58
- # check if there is a product weight
59
- #TODO
60
-
61
- def get_package_weight(self):
62
- # check if there is a package material weight
63
- from .product_material import ProductMaterial
64
- product_materials = ProductMaterial.objects.filter(product=self, component="package")
65
- if product_materials:
66
- return self.get_package_material_weight()
67
-
68
- # check if there is a package weight
69
- #TODO
70
-
71
- def get_product_material_weight(self):
72
- # get all materials with component == "product"
73
- from .product_material import ProductMaterial
74
- product_materials = ProductMaterial.objects.filter(product=self, component="product")
75
-
76
- return sum_weights(product_materials)
77
-
78
- def get_package_material_weight(self):
79
- # get all materials with component == "package"
80
- from .product_material import ProductMaterial
81
- product_materials = ProductMaterial.objects.filter(product=self, component="package")
82
-
83
- return sum_weights(product_materials)
84
-
85
- def get_product_material_emission(self):
86
- # get all materials with component == "product"
87
- from .product_material import ProductMaterial
88
- product_materials = ProductMaterial.objects.filter(product=self, component="product")
89
-
90
- return sum_emissions(product_materials)
91
-
92
- def get_package_material_emission(self):
93
- # get all materials with component == "package"
94
- from .product_material import ProductMaterial
95
- product_materials = ProductMaterial.objects.filter(product=self, component="package")
96
-
97
- return sum_emissions(product_materials)
1
+ from django.db import models
2
+
3
+ class ProductManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ def sum_weights(product_materials):
8
+ # sum up the weights
9
+ weight = 0
10
+ reference_unit = None
11
+ for product_material in product_materials:
12
+ if not reference_unit:
13
+ reference_unit = product_material.unit
14
+ else:
15
+ assert reference_unit == product_material.unit, "ProductMaterial units do not match"
16
+ weight += product_material.quantity
17
+
18
+ return weight, reference_unit
19
+
20
+ def sum_emissions(product_materials):
21
+ # sum up the emissions
22
+ emission = 0
23
+ reference_unit = None
24
+ for product_material in product_materials:
25
+ if not reference_unit:
26
+ reference_unit = product_material.unit
27
+ else:
28
+ assert reference_unit == product_material.unit, "ProductMaterial units do not match"
29
+ emission, emission_unit = product_material.get_emission()
30
+ assert reference_unit == emission_unit, "ProductMaterial units do not match"
31
+ emission += emission
32
+
33
+ return emission, reference_unit
34
+
35
+ class Product(models.Model):
36
+ objects = ProductManager()
37
+
38
+ name = models.CharField(max_length=255)
39
+ name_de = models.CharField(max_length=255, null=True)
40
+ name_en = models.CharField(max_length=255, null=True)
41
+
42
+ transport_route = models.ForeignKey("TransportRoute", on_delete=models.SET_NULL, null=True)
43
+ product_group = models.ForeignKey("ProductGroup", on_delete=models.SET_NULL, null=True)
44
+
45
+ def natural_key(self):
46
+ return (self.name,)
47
+
48
+ def __str__(self):
49
+ return self.name
50
+
51
+ def get_product_weight(self):
52
+ # check if there is a product material weight
53
+ from .product_material import ProductMaterial
54
+ product_materials = ProductMaterial.objects.filter(product=self, component="product")
55
+ if product_materials:
56
+ return self.get_product_material_weight()
57
+
58
+ # check if there is a product weight
59
+ #TODO
60
+
61
+ def get_package_weight(self):
62
+ # check if there is a package material weight
63
+ from .product_material import ProductMaterial
64
+ product_materials = ProductMaterial.objects.filter(product=self, component="package")
65
+ if product_materials:
66
+ return self.get_package_material_weight()
67
+
68
+ # check if there is a package weight
69
+ #TODO
70
+
71
+ def get_product_material_weight(self):
72
+ # get all materials with component == "product"
73
+ from .product_material import ProductMaterial
74
+ product_materials = ProductMaterial.objects.filter(product=self, component="product")
75
+
76
+ return sum_weights(product_materials)
77
+
78
+ def get_package_material_weight(self):
79
+ # get all materials with component == "package"
80
+ from .product_material import ProductMaterial
81
+ product_materials = ProductMaterial.objects.filter(product=self, component="package")
82
+
83
+ return sum_weights(product_materials)
84
+
85
+ def get_product_material_emission(self):
86
+ # get all materials with component == "product"
87
+ from .product_material import ProductMaterial
88
+ product_materials = ProductMaterial.objects.filter(product=self, component="product")
89
+
90
+ return sum_emissions(product_materials)
91
+
92
+ def get_package_material_emission(self):
93
+ # get all materials with component == "package"
94
+ from .product_material import ProductMaterial
95
+ product_materials = ProductMaterial.objects.filter(product=self, component="package")
96
+
97
+ return sum_emissions(product_materials)
@@ -1,19 +1,19 @@
1
- from django.db import models
2
-
3
- class ProductGroupManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class ProductGroup(models.Model):
8
- objects = ProductGroupManager()
9
-
10
- name = models.CharField(max_length=255)
11
- name_de = models.CharField(max_length=255, null=True)
12
- name_en = models.CharField(max_length=255, null=True)
13
-
14
- def natural_key(self):
15
- return (self.name,)
16
-
17
- def __str__(self):
18
- return self.name
19
-
1
+ from django.db import models
2
+
3
+ class ProductGroupManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ class ProductGroup(models.Model):
8
+ objects = ProductGroupManager()
9
+
10
+ name = models.CharField(max_length=255)
11
+ name_de = models.CharField(max_length=255, null=True)
12
+ name_en = models.CharField(max_length=255, null=True)
13
+
14
+ def natural_key(self):
15
+ return (self.name,)
16
+
17
+ def __str__(self):
18
+ return self.name
19
+
@@ -1,24 +1,24 @@
1
- from django.db import models
2
-
3
- class ProductMaterial(models.Model):
4
- component = models.CharField(max_length=255)
5
- material = models.ForeignKey("Material", on_delete=models.CASCADE)
6
- product = models.ForeignKey("Product", on_delete=models.CASCADE, related_name="product_materials")
7
- unit = models.ForeignKey("Unit", on_delete=models.CASCADE)
8
- quantity = models.FloatField()
9
-
10
- def get_emission(self):
11
- from ..emission import EmissionFactor
12
- emission_factor:EmissionFactor = self.material.emission_factor
13
- if emission_factor is None:
14
- raise Exception("No emission factor for material " + self.material.name + " found.")
15
-
16
- # make sure product_material.unit is the same as emission_factor.unit
17
- if self.unit != emission_factor.unit:
18
- raise Exception("Unit mismatch: " + self.unit.name + " != " + emission_factor.unit.name)
19
-
20
- emmision_value = emission_factor.value * self.quantity
21
- emission_unit = emission_factor.unit
22
- return emmision_value, emission_unit
23
-
24
-
1
+ from django.db import models
2
+
3
+ class ProductMaterial(models.Model):
4
+ component = models.CharField(max_length=255)
5
+ material = models.ForeignKey("Material", on_delete=models.CASCADE)
6
+ product = models.ForeignKey("Product", on_delete=models.CASCADE, related_name="product_materials")
7
+ unit = models.ForeignKey("Unit", on_delete=models.CASCADE)
8
+ quantity = models.FloatField()
9
+
10
+ def get_emission(self):
11
+ from ..emission import EmissionFactor
12
+ emission_factor:EmissionFactor = self.material.emission_factor
13
+ if emission_factor is None:
14
+ raise Exception("No emission factor for material " + self.material.name + " found.")
15
+
16
+ # make sure product_material.unit is the same as emission_factor.unit
17
+ if self.unit != emission_factor.unit:
18
+ raise Exception("Unit mismatch: " + self.unit.name + " != " + emission_factor.unit.name)
19
+
20
+ emmision_value = emission_factor.value * self.quantity
21
+ emission_unit = emission_factor.unit
22
+ return emmision_value, emission_unit
23
+
24
+
@@ -1,26 +1,26 @@
1
- from django.db import models
2
- import pandas as pd
3
-
4
- class ProductWeightManager(models.Manager):
5
- def get_by_natural_key(self, product, product_group, weight):
6
- return self.get(product=product, product_group=product_group, weight=weight)
7
-
8
- class ProductWeight(models.Model):
9
- objects = ProductWeightManager()
10
-
11
- name = models.CharField(max_length=255, null = True)
12
- product = models.ForeignKey("Product", on_delete=models.CASCADE)
13
- measured = models.FloatField(null=True)
14
- verified = models.FloatField(null=True)
15
- manufacturer = models.FloatField(null=True)
16
- unit = models.ForeignKey("Unit", on_delete=models.SET_NULL, null=True)
17
-
18
- def get_weight(self):
19
- if not pd.isnull(self.verified):
20
- return self.verified
21
- elif not pd.isnull(self.measured):
22
- return self.measured
23
- elif not pd.isnull(self.manufacturer):
24
- return self.manufacturer
25
- else:
26
- return None
1
+ from django.db import models
2
+ import pandas as pd
3
+
4
+ class ProductWeightManager(models.Manager):
5
+ def get_by_natural_key(self, product, product_group, weight):
6
+ return self.get(product=product, product_group=product_group, weight=weight)
7
+
8
+ class ProductWeight(models.Model):
9
+ objects = ProductWeightManager()
10
+
11
+ name = models.CharField(max_length=255, null = True)
12
+ product = models.ForeignKey("Product", on_delete=models.CASCADE)
13
+ measured = models.FloatField(null=True)
14
+ verified = models.FloatField(null=True)
15
+ manufacturer = models.FloatField(null=True)
16
+ unit = models.ForeignKey("Unit", on_delete=models.SET_NULL, null=True)
17
+
18
+ def get_weight(self):
19
+ if not pd.isnull(self.verified):
20
+ return self.verified
21
+ elif not pd.isnull(self.measured):
22
+ return self.measured
23
+ elif not pd.isnull(self.manufacturer):
24
+ return self.manufacturer
25
+ else:
26
+ return None
@@ -1,99 +1,99 @@
1
- from django.db import models
2
- from typing import List
3
-
4
- class ReferenceProductManager(models.Manager):
5
- def get_by_natural_key(self, product_name:str, product_group_name:str):
6
- return self.get(product__name=product_name, product_group__name=product_group_name)
7
-
8
- class ReferenceProduct(models.Model):
9
- name = models.CharField(max_length=255)
10
- product = models.ForeignKey("Product", on_delete=models.CASCADE)
11
- product_group = models.OneToOneField("ProductGroup", on_delete=models.CASCADE, related_name="reference_product")
12
- emission_factor_total = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, blank = True)
13
- emission_factor_package = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, related_name="reference_product_package")
14
- emission_factor_product = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, related_name="reference_product_product")
15
-
16
- objects = ReferenceProductManager()
17
-
18
- def __str__(self):
19
- return self.product.name + " (" + self.product_group.name + ")"
20
-
21
- def set_emission_factors(self):
22
- from .product import Product
23
- from .product_material import ProductMaterial
24
- from ..emission import EmissionFactor
25
-
26
- product:Product = self.product
27
- materials = product.product_materials.all()
28
- emission_factor_name = f"{self.product_group.name}_{product.name}_total_emission_factor"
29
- emission_factor_package_name = f"{self.product_group.name}_{product.name}_package_emission_factor"
30
- emission_factor_product_name = f"{self.product_group.name}_{product.name}_product_emission_factor"
31
-
32
- product_emissions = 0
33
- package_emissions = 0
34
-
35
- product_weight, product_weight_unit = product.get_product_material_weight()
36
- package_weight, package_weight_unit = product.get_package_material_weight()
37
- product_emission, product_emission_unit = product.get_product_material_emission()
38
- package_emission, package_emission_unit = product.get_package_material_emission()
39
-
40
- total_weight = product_weight + package_weight
41
- total_emission = product_emission + package_emission
42
-
43
- reference_unit = product_weight_unit
44
- assert reference_unit == package_weight_unit, "Package weight units do not match"
45
- assert reference_unit == product_emission_unit, "Product emission units do not match"
46
- assert reference_unit == package_emission_unit, "Package emission units do not match"
47
-
48
- product_emission_factor_value = product_emission / product_weight
49
- package_emission_factor_value = package_emission / package_weight
50
- total_emission_factor_value = total_emission / total_weight
51
-
52
- emission_factor, created = EmissionFactor.objects.get_or_create(
53
- name=emission_factor_name,
54
- defaults={
55
- "name": emission_factor_name,
56
- "value": total_emission_factor_value,
57
- "unit": reference_unit
58
- }
59
- )
60
- self.emission_factor_total = emission_factor
61
-
62
- emission_factor_package, created = EmissionFactor.objects.get_or_create(
63
- name=emission_factor_package_name,
64
- defaults={
65
- "name": emission_factor_package_name,
66
- "value": package_emission_factor_value,
67
- "unit": reference_unit
68
- }
69
- )
70
- self.emission_factor_package = emission_factor_package
71
-
72
- emission_factor_product, created = EmissionFactor.objects.get_or_create(
73
- name=emission_factor_product_name,
74
- defaults={
75
- "name": emission_factor_product_name,
76
- "value": product_emission_factor_value,
77
- "unit": reference_unit
78
- }
79
- )
80
- self.emission_factor_product = emission_factor_product
81
-
82
- self.save()
83
-
84
- def get_emission_factor(self, component:str):
85
- # check if emission_factor_total exists:
86
- if self.emission_factor_total is None:
87
- self.set_emission_factors()
88
-
89
- if component == "total":
90
- return self.emission_factor_total
91
- elif component == "package":
92
- return self.emission_factor_package
93
- elif component == "product":
94
- return self.emission_factor_product
95
- else:
96
- raise Exception("Unknown component: " + component)
97
-
98
-
99
-
1
+ from django.db import models
2
+ from typing import List
3
+
4
+ class ReferenceProductManager(models.Manager):
5
+ def get_by_natural_key(self, product_name:str, product_group_name:str):
6
+ return self.get(product__name=product_name, product_group__name=product_group_name)
7
+
8
+ class ReferenceProduct(models.Model):
9
+ name = models.CharField(max_length=255)
10
+ product = models.ForeignKey("Product", on_delete=models.CASCADE)
11
+ product_group = models.OneToOneField("ProductGroup", on_delete=models.CASCADE, related_name="reference_product")
12
+ emission_factor_total = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, blank = True)
13
+ emission_factor_package = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, related_name="reference_product_package")
14
+ emission_factor_product = models.ForeignKey("EmissionFactor", on_delete=models.SET_NULL, null=True, related_name="reference_product_product")
15
+
16
+ objects = ReferenceProductManager()
17
+
18
+ def __str__(self):
19
+ return self.product.name + " (" + self.product_group.name + ")"
20
+
21
+ def set_emission_factors(self):
22
+ from .product import Product
23
+ from .product_material import ProductMaterial
24
+ from ..emission import EmissionFactor
25
+
26
+ product:Product = self.product
27
+ materials = product.product_materials.all()
28
+ emission_factor_name = f"{self.product_group.name}_{product.name}_total_emission_factor"
29
+ emission_factor_package_name = f"{self.product_group.name}_{product.name}_package_emission_factor"
30
+ emission_factor_product_name = f"{self.product_group.name}_{product.name}_product_emission_factor"
31
+
32
+ product_emissions = 0
33
+ package_emissions = 0
34
+
35
+ product_weight, product_weight_unit = product.get_product_material_weight()
36
+ package_weight, package_weight_unit = product.get_package_material_weight()
37
+ product_emission, product_emission_unit = product.get_product_material_emission()
38
+ package_emission, package_emission_unit = product.get_package_material_emission()
39
+
40
+ total_weight = product_weight + package_weight
41
+ total_emission = product_emission + package_emission
42
+
43
+ reference_unit = product_weight_unit
44
+ assert reference_unit == package_weight_unit, "Package weight units do not match"
45
+ assert reference_unit == product_emission_unit, "Product emission units do not match"
46
+ assert reference_unit == package_emission_unit, "Package emission units do not match"
47
+
48
+ product_emission_factor_value = product_emission / product_weight
49
+ package_emission_factor_value = package_emission / package_weight
50
+ total_emission_factor_value = total_emission / total_weight
51
+
52
+ emission_factor, created = EmissionFactor.objects.get_or_create(
53
+ name=emission_factor_name,
54
+ defaults={
55
+ "name": emission_factor_name,
56
+ "value": total_emission_factor_value,
57
+ "unit": reference_unit
58
+ }
59
+ )
60
+ self.emission_factor_total = emission_factor
61
+
62
+ emission_factor_package, created = EmissionFactor.objects.get_or_create(
63
+ name=emission_factor_package_name,
64
+ defaults={
65
+ "name": emission_factor_package_name,
66
+ "value": package_emission_factor_value,
67
+ "unit": reference_unit
68
+ }
69
+ )
70
+ self.emission_factor_package = emission_factor_package
71
+
72
+ emission_factor_product, created = EmissionFactor.objects.get_or_create(
73
+ name=emission_factor_product_name,
74
+ defaults={
75
+ "name": emission_factor_product_name,
76
+ "value": product_emission_factor_value,
77
+ "unit": reference_unit
78
+ }
79
+ )
80
+ self.emission_factor_product = emission_factor_product
81
+
82
+ self.save()
83
+
84
+ def get_emission_factor(self, component:str):
85
+ # check if emission_factor_total exists:
86
+ if self.emission_factor_total is None:
87
+ self.set_emission_factors()
88
+
89
+ if component == "total":
90
+ return self.emission_factor_total
91
+ elif component == "package":
92
+ return self.emission_factor_package
93
+ elif component == "product":
94
+ return self.emission_factor_product
95
+ else:
96
+ raise Exception("Unknown component: " + component)
97
+
98
+
99
+