endoreg-db 0.3.6__py3-none-any.whl → 0.3.7__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 (347) 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_type/base_types.yaml +58 -58
  14. endoreg_db/data/case_template/template/base.yaml +7 -7
  15. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
  16. endoreg_db/data/case_template/tmp/_rule_value +13 -13
  17. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
  18. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
  19. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
  20. endoreg_db/data/center/data.yaml +59 -59
  21. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
  22. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
  23. endoreg_db/data/disease/cardiovascular.yaml +37 -37
  24. endoreg_db/data/disease/hepatology.yaml +4 -4
  25. endoreg_db/data/disease/misc.yaml +5 -5
  26. endoreg_db/data/disease/renal.yaml +4 -4
  27. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
  28. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
  29. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
  30. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
  31. endoreg_db/data/distribution/date/patient.yaml +6 -6
  32. endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
  33. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
  34. endoreg_db/data/endoscope_type/data.yaml +10 -10
  35. endoreg_db/data/endoscopy_processor/data.yaml +45 -45
  36. endoreg_db/data/event/cardiology.yaml +27 -27
  37. endoreg_db/data/event/neurology.yaml +13 -13
  38. endoreg_db/data/event/surgery.yaml +12 -12
  39. endoreg_db/data/event/thrombembolism.yaml +19 -19
  40. endoreg_db/data/examination/examinations/data.yaml +65 -65
  41. endoreg_db/data/examination/time/data.yaml +47 -47
  42. endoreg_db/data/examination/time-type/data.yaml +7 -7
  43. endoreg_db/data/examination/type/data.yaml +5 -5
  44. endoreg_db/data/gender/data.yaml +18 -18
  45. endoreg_db/data/information_source/data.yaml +30 -30
  46. endoreg_db/data/information_source/medication.yaml +5 -5
  47. endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
  48. endoreg_db/data/lab_value/coagulation.yaml +48 -48
  49. endoreg_db/data/lab_value/electrolytes.yaml +189 -189
  50. endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
  51. endoreg_db/data/lab_value/hematology.yaml +169 -169
  52. endoreg_db/data/lab_value/hormones.yaml +53 -53
  53. endoreg_db/data/lab_value/lipids.yaml +44 -44
  54. endoreg_db/data/lab_value/misc.yaml +30 -30
  55. endoreg_db/data/lab_value/renal_function.yaml +10 -10
  56. endoreg_db/data/label/label/data.yaml +62 -62
  57. endoreg_db/data/label/label-set/data.yaml +17 -17
  58. endoreg_db/data/label/label-type/data.yaml +6 -6
  59. endoreg_db/data/medication/anticoagulation.yaml +64 -64
  60. endoreg_db/data/medication/tah.yaml +69 -69
  61. endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
  62. endoreg_db/data/medication_indication_type/data.yaml +10 -10
  63. endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
  64. endoreg_db/data/medication_intake_time/base.yaml +30 -30
  65. endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
  66. endoreg_db/data/medication_schedule/ass.yaml +12 -12
  67. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
  68. endoreg_db/data/model_type/data.yaml +6 -6
  69. endoreg_db/data/network_device/data.yaml +17 -0
  70. endoreg_db/data/network_device_type/data.yaml +8 -0
  71. endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
  72. endoreg_db/data/pdf_type/data.yaml +28 -28
  73. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
  74. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
  75. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
  76. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
  77. endoreg_db/data/profession/data.yaml +70 -70
  78. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
  79. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
  80. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
  81. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
  82. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
  83. endoreg_db/data/unit/concentration.yaml +92 -92
  84. endoreg_db/data/unit/data.yaml +17 -17
  85. endoreg_db/data/unit/length.yaml +30 -30
  86. endoreg_db/data/unit/misc.yaml +19 -19
  87. endoreg_db/data/unit/rate.yaml +5 -5
  88. endoreg_db/data/unit/time.yaml +12 -12
  89. endoreg_db/data/unit/volume.yaml +35 -35
  90. endoreg_db/data/unit/weight.yaml +37 -37
  91. endoreg_db/data/waste/data.yaml +11 -11
  92. endoreg_db/forms/__init__.py +2 -2
  93. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
  94. endoreg_db/forms/settings/__init__.py +8 -8
  95. endoreg_db/forms/unit.py +5 -5
  96. endoreg_db/management/commands/_load_model_template.py +40 -40
  97. endoreg_db/management/commands/delete_all.py +18 -18
  98. endoreg_db/management/commands/delete_legacy_images.py +19 -19
  99. endoreg_db/management/commands/delete_legacy_videos.py +16 -16
  100. endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
  101. endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
  102. endoreg_db/management/commands/fix_auth_permission.py +20 -20
  103. endoreg_db/management/commands/import_legacy_images.py +94 -94
  104. endoreg_db/management/commands/import_legacy_videos.py +76 -76
  105. endoreg_db/management/commands/load_active_model_data.py +44 -44
  106. endoreg_db/management/commands/load_ai_model_data.py +44 -44
  107. endoreg_db/management/commands/load_base_db_data.py +132 -128
  108. endoreg_db/management/commands/load_center_data.py +42 -42
  109. endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
  110. endoreg_db/management/commands/load_disease_classification_data.py +40 -40
  111. endoreg_db/management/commands/load_disease_data.py +39 -39
  112. endoreg_db/management/commands/load_distribution_data.py +65 -65
  113. endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
  114. endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
  115. endoreg_db/management/commands/load_event_data.py +40 -40
  116. endoreg_db/management/commands/load_examination_data.py +74 -74
  117. endoreg_db/management/commands/load_g_play_data.py +112 -112
  118. endoreg_db/management/commands/load_gender_data.py +43 -43
  119. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
  120. endoreg_db/management/commands/load_information_source.py +44 -44
  121. endoreg_db/management/commands/load_lab_value_data.py +49 -49
  122. endoreg_db/management/commands/load_label_data.py +66 -66
  123. endoreg_db/management/commands/load_medication_data.py +40 -40
  124. endoreg_db/management/commands/load_medication_indication_data.py +62 -62
  125. endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
  126. endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
  127. endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
  128. endoreg_db/management/commands/load_network_data.py +49 -0
  129. endoreg_db/management/commands/load_pdf_type_data.py +60 -60
  130. endoreg_db/management/commands/load_profession_data.py +43 -43
  131. endoreg_db/management/commands/load_report_reader_flag.py +45 -45
  132. endoreg_db/management/commands/load_unit_data.py +45 -45
  133. endoreg_db/management/commands/load_user_groups.py +28 -28
  134. endoreg_db/management/commands/register_ai_model.py +65 -65
  135. endoreg_db/management/commands/reset_celery_schedule.py +9 -9
  136. endoreg_db/migrations/0001_initial.py +582 -582
  137. endoreg_db/migrations/0002_rawvideofile.py +26 -26
  138. endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
  139. endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
  140. endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
  141. endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
  142. endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
  143. endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
  144. endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
  145. endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
  146. endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
  147. endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
  148. endoreg_db/migrations/0013_rawpdffile.py +31 -31
  149. endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
  150. endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
  151. endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
  152. endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
  153. endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
  154. endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
  155. endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
  156. endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
  157. endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
  158. endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
  159. endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
  160. endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
  161. endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
  162. endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
  163. endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
  164. endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
  165. endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
  166. endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
  167. endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
  168. endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
  169. endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
  170. endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
  171. endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
  172. endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
  173. endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
  174. endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
  175. endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
  176. endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
  177. endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
  178. endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
  179. endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
  180. endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
  181. endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
  182. endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
  183. endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
  184. endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
  185. endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
  186. endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
  187. endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
  188. endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
  189. endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
  190. endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
  191. endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
  192. endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
  193. endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
  194. endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
  195. endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
  196. endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
  197. endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
  198. endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
  199. endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
  200. endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
  201. endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
  202. endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
  203. endoreg_db/models/__init__.py +75 -74
  204. endoreg_db/models/ai_model/__init__.py +3 -3
  205. endoreg_db/models/ai_model/active_model.py +9 -9
  206. endoreg_db/models/ai_model/model_meta.py +24 -24
  207. endoreg_db/models/ai_model/model_type.py +25 -25
  208. endoreg_db/models/ai_model/utils.py +8 -8
  209. endoreg_db/models/annotation/__init__.py +1 -1
  210. endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
  211. endoreg_db/models/annotation/image_classification.py +26 -26
  212. endoreg_db/models/case_template/__init__.py +5 -5
  213. endoreg_db/models/case_template/case_template.py +81 -81
  214. endoreg_db/models/case_template/case_template_rule.py +276 -276
  215. endoreg_db/models/case_template/case_template_rule_value.py +73 -73
  216. endoreg_db/models/case_template/case_template_type.py +27 -27
  217. endoreg_db/models/center/__init__.py +4 -4
  218. endoreg_db/models/center/center.py +24 -24
  219. endoreg_db/models/center/center_product.py +33 -33
  220. endoreg_db/models/center/center_resource.py +18 -18
  221. endoreg_db/models/center/center_waste.py +10 -10
  222. endoreg_db/models/data_file/__init__.py +5 -5
  223. endoreg_db/models/data_file/base_classes/__init__.py +2 -2
  224. endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
  225. endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
  226. endoreg_db/models/data_file/frame.py +45 -45
  227. endoreg_db/models/data_file/import_classes/__init__.py +31 -31
  228. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
  229. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
  230. endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
  231. endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
  232. endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
  233. endoreg_db/models/data_file/metadata/__init__.py +3 -3
  234. endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
  235. endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
  236. endoreg_db/models/data_file/metadata/video_meta.py +132 -132
  237. endoreg_db/models/data_file/report_file.py +89 -89
  238. endoreg_db/models/data_file/video/__init__.py +6 -6
  239. endoreg_db/models/data_file/video/import_meta.py +25 -25
  240. endoreg_db/models/data_file/video/video.py +25 -25
  241. endoreg_db/models/data_file/video_segment.py +107 -107
  242. endoreg_db/models/disease.py +55 -55
  243. endoreg_db/models/emission/emission_factor.py +19 -19
  244. endoreg_db/models/event.py +21 -21
  245. endoreg_db/models/examination/__init__.py +3 -3
  246. endoreg_db/models/examination/examination.py +26 -26
  247. endoreg_db/models/examination/examination_time.py +27 -27
  248. endoreg_db/models/examination/examination_time_type.py +24 -24
  249. endoreg_db/models/examination/examination_type.py +18 -18
  250. endoreg_db/models/hardware/__init__.py +1 -1
  251. endoreg_db/models/hardware/endoscope.py +44 -44
  252. endoreg_db/models/hardware/endoscopy_processor.py +143 -143
  253. endoreg_db/models/information_source.py +29 -29
  254. endoreg_db/models/label/label.py +84 -84
  255. endoreg_db/models/laboratory/lab_value.py +102 -102
  256. endoreg_db/models/legacy_data/__init__.py +3 -3
  257. endoreg_db/models/legacy_data/image.py +34 -34
  258. endoreg_db/models/medication/medication.py +148 -148
  259. endoreg_db/models/network/__init__.py +2 -0
  260. endoreg_db/models/network/network_device.py +27 -0
  261. endoreg_db/models/network/network_device_type.py +23 -0
  262. endoreg_db/models/other/__init__.py +4 -4
  263. endoreg_db/models/other/distribution.py +215 -215
  264. endoreg_db/models/other/material.py +16 -16
  265. endoreg_db/models/other/resource.py +17 -17
  266. endoreg_db/models/other/transport_route.py +20 -20
  267. endoreg_db/models/other/waste.py +20 -20
  268. endoreg_db/models/patient_examination/__init__.py +35 -35
  269. endoreg_db/models/permissions/__init__.py +44 -44
  270. endoreg_db/models/persons/__init__.py +6 -6
  271. endoreg_db/models/persons/examiner/__init__.py +1 -1
  272. endoreg_db/models/persons/examiner/examiner.py +15 -15
  273. endoreg_db/models/persons/examiner/examiner_type.py +1 -1
  274. endoreg_db/models/persons/first_name.py +17 -17
  275. endoreg_db/models/persons/gender.py +22 -22
  276. endoreg_db/models/persons/last_name.py +19 -19
  277. endoreg_db/models/persons/patient/__init__.py +7 -7
  278. endoreg_db/models/persons/patient/case/case.py +30 -30
  279. endoreg_db/models/persons/patient/patient.py +216 -216
  280. endoreg_db/models/persons/patient/patient_disease.py +16 -16
  281. endoreg_db/models/persons/patient/patient_event.py +22 -22
  282. endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
  283. endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
  284. endoreg_db/models/persons/patient/patient_medication.py +43 -43
  285. endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
  286. endoreg_db/models/persons/person.py +31 -31
  287. endoreg_db/models/persons/portal_user_information.py +27 -27
  288. endoreg_db/models/prediction/__init__.py +1 -1
  289. endoreg_db/models/prediction/image_classification.py +37 -37
  290. endoreg_db/models/prediction/video_prediction_meta.py +244 -244
  291. endoreg_db/models/product/__init__.py +4 -4
  292. endoreg_db/models/product/product.py +97 -97
  293. endoreg_db/models/product/product_group.py +19 -19
  294. endoreg_db/models/product/product_material.py +24 -24
  295. endoreg_db/models/product/product_weight.py +26 -26
  296. endoreg_db/models/product/reference_product.py +99 -99
  297. endoreg_db/models/questionnaires/__init__.py +114 -114
  298. endoreg_db/models/quiz/__init__.py +1 -1
  299. endoreg_db/models/quiz/quiz_answer.py +41 -41
  300. endoreg_db/models/quiz/quiz_question.py +54 -54
  301. endoreg_db/models/report_reader/__init__.py +1 -1
  302. endoreg_db/models/report_reader/report_reader_config.py +53 -53
  303. endoreg_db/models/report_reader/report_reader_flag.py +19 -19
  304. endoreg_db/models/rules/__init__.py +4 -4
  305. endoreg_db/models/rules/rule.py +23 -23
  306. endoreg_db/models/rules/rule_applicator.py +224 -224
  307. endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
  308. endoreg_db/models/rules/rule_type.py +21 -21
  309. endoreg_db/models/rules/ruleset.py +19 -19
  310. endoreg_db/models/unit.py +21 -21
  311. endoreg_db/queries/__init__.py +4 -4
  312. endoreg_db/queries/annotations/__init__.py +2 -2
  313. endoreg_db/queries/annotations/legacy.py +159 -159
  314. endoreg_db/queries/get/__init__.py +5 -5
  315. endoreg_db/queries/get/center.py +42 -42
  316. endoreg_db/queries/get/model.py +13 -13
  317. endoreg_db/queries/get/patient.py +14 -14
  318. endoreg_db/queries/get/patient_examination.py +20 -20
  319. endoreg_db/queries/get/report_file.py +33 -33
  320. endoreg_db/queries/get/video.py +31 -31
  321. endoreg_db/serializers/__init__.py +9 -9
  322. endoreg_db/serializers/ai_model.py +18 -18
  323. endoreg_db/serializers/annotation.py +17 -17
  324. endoreg_db/serializers/center.py +11 -11
  325. endoreg_db/serializers/examination.py +32 -32
  326. endoreg_db/serializers/frame.py +13 -13
  327. endoreg_db/serializers/hardware.py +20 -20
  328. endoreg_db/serializers/label.py +22 -22
  329. endoreg_db/serializers/patient.py +10 -10
  330. endoreg_db/serializers/prediction.py +15 -15
  331. endoreg_db/serializers/report_file.py +7 -7
  332. endoreg_db/serializers/video.py +27 -27
  333. endoreg_db/tests.py +3 -3
  334. endoreg_db/utils/cropping.py +28 -28
  335. endoreg_db/utils/dataloader.py +92 -92
  336. endoreg_db/utils/file_operations.py +30 -30
  337. endoreg_db/utils/hashs.py +33 -33
  338. endoreg_db/utils/legacy_ocr.py +201 -201
  339. endoreg_db/utils/ocr.py +197 -197
  340. endoreg_db/utils/uuid.py +4 -4
  341. endoreg_db/utils/video_metadata.py +87 -87
  342. endoreg_db/views.py +3 -3
  343. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/LICENSE +674 -674
  344. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/METADATA +2 -2
  345. endoreg_db-0.3.7.dist-info/RECORD +363 -0
  346. {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/WHEEL +1 -1
  347. endoreg_db-0.3.6.dist-info/RECORD +0 -357
@@ -1,84 +1,84 @@
1
- from django.db import models
2
-
3
- class LabelTypeManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class LabelType(models.Model):
8
- """
9
- A class representing a label type.
10
-
11
- Attributes:
12
- name (str): The name of the label type.
13
- description (str): A description of the label type.
14
-
15
- """
16
- name = models.CharField(max_length=255)
17
- description = models.TextField(blank=True, null=True)
18
-
19
- objects = LabelTypeManager()
20
-
21
- def natural_key(self):
22
- return (self.name,)
23
-
24
- def __str__(self):
25
- return self.name
26
-
27
-
28
- class LabelManager(models.Manager):
29
- def get_by_natural_key(self, name):
30
- return self.get(name=name)
31
-
32
- class Label(models.Model):
33
- """
34
- A class representing a label.
35
-
36
- Attributes:
37
- name (str): The name of the label.
38
- label_type (LabelType): The type of the label.
39
- description (str): A description of the label.
40
-
41
- """
42
- name = models.CharField(max_length=255)
43
- label_type = models.ForeignKey("LabelType", on_delete=models.CASCADE, related_name="labels")
44
- description = models.TextField(blank=True, null=True)
45
-
46
- objects = LabelManager()
47
-
48
- def natural_key(self):
49
- return (self.name,)
50
-
51
- def __str__(self):
52
- return self.name
53
-
54
- class LabelSetManager(models.Manager):
55
- def get_by_natural_key(self, name):
56
- return self.get(name=name)
57
-
58
- class LabelSet(models.Model):
59
- """
60
- A class representing a label set.
61
-
62
- Attributes:
63
- name (str): The name of the label set.
64
- description (str): A description of the label set.
65
-
66
- """
67
- name = models.CharField(max_length=255)
68
- description = models.TextField(blank=True, null=True)
69
- version = models.IntegerField()
70
- labels = models.ManyToManyField("Label", related_name="labels")
71
-
72
- objects = LabelSetManager()
73
-
74
- def natural_key(self):
75
- return (self.name,)
76
-
77
- def __str__(self):
78
- return self.name
79
-
80
- def get_labels_in_order(self):
81
- """
82
- Get all labels in this label set as list in the correct order.
83
- """
84
- return list(self.labels.all().order_by('id'))
1
+ from django.db import models
2
+
3
+ class LabelTypeManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ class LabelType(models.Model):
8
+ """
9
+ A class representing a label type.
10
+
11
+ Attributes:
12
+ name (str): The name of the label type.
13
+ description (str): A description of the label type.
14
+
15
+ """
16
+ name = models.CharField(max_length=255)
17
+ description = models.TextField(blank=True, null=True)
18
+
19
+ objects = LabelTypeManager()
20
+
21
+ def natural_key(self):
22
+ return (self.name,)
23
+
24
+ def __str__(self):
25
+ return self.name
26
+
27
+
28
+ class LabelManager(models.Manager):
29
+ def get_by_natural_key(self, name):
30
+ return self.get(name=name)
31
+
32
+ class Label(models.Model):
33
+ """
34
+ A class representing a label.
35
+
36
+ Attributes:
37
+ name (str): The name of the label.
38
+ label_type (LabelType): The type of the label.
39
+ description (str): A description of the label.
40
+
41
+ """
42
+ name = models.CharField(max_length=255)
43
+ label_type = models.ForeignKey("LabelType", on_delete=models.CASCADE, related_name="labels")
44
+ description = models.TextField(blank=True, null=True)
45
+
46
+ objects = LabelManager()
47
+
48
+ def natural_key(self):
49
+ return (self.name,)
50
+
51
+ def __str__(self):
52
+ return self.name
53
+
54
+ class LabelSetManager(models.Manager):
55
+ def get_by_natural_key(self, name):
56
+ return self.get(name=name)
57
+
58
+ class LabelSet(models.Model):
59
+ """
60
+ A class representing a label set.
61
+
62
+ Attributes:
63
+ name (str): The name of the label set.
64
+ description (str): A description of the label set.
65
+
66
+ """
67
+ name = models.CharField(max_length=255)
68
+ description = models.TextField(blank=True, null=True)
69
+ version = models.IntegerField()
70
+ labels = models.ManyToManyField("Label", related_name="labels")
71
+
72
+ objects = LabelSetManager()
73
+
74
+ def natural_key(self):
75
+ return (self.name,)
76
+
77
+ def __str__(self):
78
+ return self.name
79
+
80
+ def get_labels_in_order(self):
81
+ """
82
+ Get all labels in this label set as list in the correct order.
83
+ """
84
+ return list(self.labels.all().order_by('id'))
@@ -1,102 +1,102 @@
1
- from django.db import models
2
- import warnings
3
-
4
- LANG = "de"
5
-
6
- class LabValueManager(models.Manager):
7
- def get_by_natural_key(self, name):
8
- return self.get(name=name)
9
-
10
- class LabValue(models.Model):
11
- name = models.CharField(max_length=255, unique=True)
12
- name_de = models.CharField(max_length=255, blank=True, null=True)
13
- name_en = models.CharField(max_length=255, blank=True, null=True)
14
- abbreviation = models.CharField(max_length=10, blank=True, null=True)
15
- default_unit = models.ForeignKey('Unit', on_delete=models.CASCADE, blank=True, null=True)
16
- numeric_precision = models.IntegerField(default=3)
17
- default_single_categorical_value_distribution = models.ForeignKey(
18
- 'SingleCategoricalValueDistribution',
19
- on_delete=models.CASCADE,
20
- blank=True, null=True,
21
- related_name='default_single_categorical_value_distribution'
22
- )
23
- default_numerical_value_distribution = models.ForeignKey(
24
- 'NumericValueDistribution',
25
- on_delete=models.CASCADE,
26
- blank=True, null=True,
27
- related_name='default_numerical_value_distribution'
28
- )
29
- default_multiple_categorical_value_distribution = models.ForeignKey(
30
- 'MultipleCategoricalValueDistribution',
31
- on_delete=models.CASCADE,
32
- blank=True, null=True,
33
- related_name='default_multiple_categorical_value_distribution'
34
- )
35
- default_date_value_distribution = models.ForeignKey(
36
- 'DateValueDistribution',
37
- on_delete=models.CASCADE,
38
- blank=True, null=True,
39
- related_name='default_date_value_distribution'
40
- )
41
- default_normal_range = models.JSONField(blank=True, null=True)
42
- normal_range_age_dependent = models.BooleanField(default=False)
43
- normal_range_gender_dependent = models.BooleanField(default=False)
44
- normal_range_special_case = models.BooleanField(default=False)
45
- objects = LabValueManager()
46
-
47
- def natural_key(self):
48
- return (self.name,)
49
-
50
- def __str__(self):
51
- return self.name
52
-
53
- def get_default_default_distribution(self):
54
- if self.default_single_categorical_value_distribution:
55
- return self.default_single_categorical_value_distribution
56
- elif self.default_numerical_value_distribution:
57
- return self.default_numerical_value_distribution
58
- elif self.default_multiple_categorical_value_distribution:
59
- return self.default_multiple_categorical_value_distribution
60
- elif self.default_date_value_distribution:
61
- return self.default_date_value_distribution
62
- else:
63
- warnings.warn("No default distribution set for lab value")
64
- return None
65
-
66
- def get_normal_range(self, age=None, gender=None):
67
- age_dependent = self.normal_range_age_dependent
68
- gender_dependent = self.normal_range_gender_dependent
69
- special_case = self.normal_range_special_case
70
-
71
- min_value = None
72
- max_value = None
73
-
74
- if not age_dependent and \
75
- not gender_dependent and \
76
- not special_case:
77
- min_value = self.default_normal_range.get('min', None)
78
- max_value = self.default_normal_range.get('max', None)
79
-
80
- if age_dependent:
81
- # get normal range for age)
82
- warnings.warn("Age dependent normal range not implemented yet")
83
- pass
84
-
85
- if gender_dependent:
86
- if not gender:
87
- warnings.warn("Calling get_normal_range with gender_dependent=True requires gender to be set, choosing by random")
88
- # set gender to either "male" or "female"
89
- from random import choice
90
- choices = ["male", "female"]
91
- gender = choice(choices)
92
-
93
- default_range_dict = self.default_normal_range.get(gender, {})
94
- min_value = default_range_dict.get('min', None)
95
- max_value = default_range_dict.get('max', None)
96
-
97
- if special_case:
98
- # get normal range for special case
99
- warnings.warn("Special case normal range not implemented yet")
100
-
101
- return min_value, max_value
102
-
1
+ from django.db import models
2
+ import warnings
3
+
4
+ LANG = "de"
5
+
6
+ class LabValueManager(models.Manager):
7
+ def get_by_natural_key(self, name):
8
+ return self.get(name=name)
9
+
10
+ class LabValue(models.Model):
11
+ name = models.CharField(max_length=255, unique=True)
12
+ name_de = models.CharField(max_length=255, blank=True, null=True)
13
+ name_en = models.CharField(max_length=255, blank=True, null=True)
14
+ abbreviation = models.CharField(max_length=10, blank=True, null=True)
15
+ default_unit = models.ForeignKey('Unit', on_delete=models.CASCADE, blank=True, null=True)
16
+ numeric_precision = models.IntegerField(default=3)
17
+ default_single_categorical_value_distribution = models.ForeignKey(
18
+ 'SingleCategoricalValueDistribution',
19
+ on_delete=models.CASCADE,
20
+ blank=True, null=True,
21
+ related_name='default_single_categorical_value_distribution'
22
+ )
23
+ default_numerical_value_distribution = models.ForeignKey(
24
+ 'NumericValueDistribution',
25
+ on_delete=models.CASCADE,
26
+ blank=True, null=True,
27
+ related_name='default_numerical_value_distribution'
28
+ )
29
+ default_multiple_categorical_value_distribution = models.ForeignKey(
30
+ 'MultipleCategoricalValueDistribution',
31
+ on_delete=models.CASCADE,
32
+ blank=True, null=True,
33
+ related_name='default_multiple_categorical_value_distribution'
34
+ )
35
+ default_date_value_distribution = models.ForeignKey(
36
+ 'DateValueDistribution',
37
+ on_delete=models.CASCADE,
38
+ blank=True, null=True,
39
+ related_name='default_date_value_distribution'
40
+ )
41
+ default_normal_range = models.JSONField(blank=True, null=True)
42
+ normal_range_age_dependent = models.BooleanField(default=False)
43
+ normal_range_gender_dependent = models.BooleanField(default=False)
44
+ normal_range_special_case = models.BooleanField(default=False)
45
+ objects = LabValueManager()
46
+
47
+ def natural_key(self):
48
+ return (self.name,)
49
+
50
+ def __str__(self):
51
+ return self.name
52
+
53
+ def get_default_default_distribution(self):
54
+ if self.default_single_categorical_value_distribution:
55
+ return self.default_single_categorical_value_distribution
56
+ elif self.default_numerical_value_distribution:
57
+ return self.default_numerical_value_distribution
58
+ elif self.default_multiple_categorical_value_distribution:
59
+ return self.default_multiple_categorical_value_distribution
60
+ elif self.default_date_value_distribution:
61
+ return self.default_date_value_distribution
62
+ else:
63
+ warnings.warn("No default distribution set for lab value")
64
+ return None
65
+
66
+ def get_normal_range(self, age=None, gender=None):
67
+ age_dependent = self.normal_range_age_dependent
68
+ gender_dependent = self.normal_range_gender_dependent
69
+ special_case = self.normal_range_special_case
70
+
71
+ min_value = None
72
+ max_value = None
73
+
74
+ if not age_dependent and \
75
+ not gender_dependent and \
76
+ not special_case:
77
+ min_value = self.default_normal_range.get('min', None)
78
+ max_value = self.default_normal_range.get('max', None)
79
+
80
+ if age_dependent:
81
+ # get normal range for age)
82
+ warnings.warn("Age dependent normal range not implemented yet")
83
+ pass
84
+
85
+ if gender_dependent:
86
+ if not gender:
87
+ warnings.warn("Calling get_normal_range with gender_dependent=True requires gender to be set, choosing by random")
88
+ # set gender to either "male" or "female"
89
+ from random import choice
90
+ choices = ["male", "female"]
91
+ gender = choice(choices)
92
+
93
+ default_range_dict = self.default_normal_range.get(gender, {})
94
+ min_value = default_range_dict.get('min', None)
95
+ max_value = default_range_dict.get('max', None)
96
+
97
+ if special_case:
98
+ # get normal range for special case
99
+ warnings.warn("Special case normal range not implemented yet")
100
+
101
+ return min_value, max_value
102
+
@@ -1,3 +1,3 @@
1
- from ..data_file.frame import LegacyFrame
2
- from .image import LegacyImage
3
- from ..data_file.video import LegacyVideo
1
+ from ..data_file.frame import LegacyFrame
2
+ from .image import LegacyImage
3
+ from ..data_file.video import LegacyVideo
@@ -1,34 +1,34 @@
1
- from django.db import models
2
- from ..label.label import Label
3
- from ..annotation.image_classification import ImageClassificationAnnotation
4
-
5
- class LegacyImage(models.Model):
6
- # Add any other fields you need to store frame-related information
7
- image = models.ImageField(upload_to="legacy_images") # Or some other field type, depending on how you're storing the frame
8
- suffix = models.CharField(max_length=255)
9
- # ImageClassificationAnnotation has a foreign key to this model (related name: image_classification_annotations)
10
-
11
- def get_classification_annotations(self):
12
- """
13
- Get all image classification annotations for this image.
14
- """
15
- return ImageClassificationAnnotation.objects.filter(legacy_image=self)
16
-
17
- def get_classification_annotations_by_label(self, label:Label):
18
- """
19
- Get all image classification annotations for this image with the given label.
20
- """
21
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label)
22
-
23
- def get_classification_annotations_by_value(self, value:bool):
24
- """
25
- Get all image classification annotations for this image with the given value.
26
- """
27
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, value=value)
28
-
29
- def get_classification_annotations_by_label_and_value(self, label:Label, value:bool):
30
- """
31
- Get all image classification annotations for this image with the given label and value.
32
- """
33
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label, value=value)
34
-
1
+ from django.db import models
2
+ from ..label.label import Label
3
+ from ..annotation.image_classification import ImageClassificationAnnotation
4
+
5
+ class LegacyImage(models.Model):
6
+ # Add any other fields you need to store frame-related information
7
+ image = models.ImageField(upload_to="legacy_images") # Or some other field type, depending on how you're storing the frame
8
+ suffix = models.CharField(max_length=255)
9
+ # ImageClassificationAnnotation has a foreign key to this model (related name: image_classification_annotations)
10
+
11
+ def get_classification_annotations(self):
12
+ """
13
+ Get all image classification annotations for this image.
14
+ """
15
+ return ImageClassificationAnnotation.objects.filter(legacy_image=self)
16
+
17
+ def get_classification_annotations_by_label(self, label:Label):
18
+ """
19
+ Get all image classification annotations for this image with the given label.
20
+ """
21
+ return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label)
22
+
23
+ def get_classification_annotations_by_value(self, value:bool):
24
+ """
25
+ Get all image classification annotations for this image with the given value.
26
+ """
27
+ return ImageClassificationAnnotation.objects.filter(legacy_image=self, value=value)
28
+
29
+ def get_classification_annotations_by_label_and_value(self, label:Label, value:bool):
30
+ """
31
+ Get all image classification annotations for this image with the given label and value.
32
+ """
33
+ return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label, value=value)
34
+