endoreg-db 0.8.6.1__py3-none-any.whl → 0.8.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of endoreg-db might be problematic. Click here for more details.

Files changed (360) hide show
  1. endoreg_db/authz/auth.py +74 -0
  2. endoreg_db/authz/backends.py +168 -0
  3. endoreg_db/authz/management/commands/list_routes.py +18 -0
  4. endoreg_db/authz/middleware.py +83 -0
  5. endoreg_db/authz/permissions.py +127 -0
  6. endoreg_db/authz/policy.py +218 -0
  7. endoreg_db/authz/views_auth.py +66 -0
  8. endoreg_db/config/env.py +13 -8
  9. endoreg_db/data/__init__.py +8 -31
  10. endoreg_db/data/_examples/disease.yaml +55 -0
  11. endoreg_db/data/_examples/disease_classification.yaml +13 -0
  12. endoreg_db/data/_examples/disease_classification_choice.yaml +62 -0
  13. endoreg_db/data/_examples/event.yaml +64 -0
  14. endoreg_db/data/_examples/examination.yaml +72 -0
  15. endoreg_db/data/_examples/finding/anatomy_colon.yaml +128 -0
  16. endoreg_db/data/_examples/finding/colonoscopy.yaml +40 -0
  17. endoreg_db/data/_examples/finding/colonoscopy_bowel_prep.yaml +56 -0
  18. endoreg_db/data/_examples/finding/complication.yaml +16 -0
  19. endoreg_db/data/_examples/finding/data.yaml +105 -0
  20. endoreg_db/data/_examples/finding/examination_setting.yaml +16 -0
  21. endoreg_db/data/_examples/finding/medication_related.yaml +18 -0
  22. endoreg_db/data/_examples/finding/outcome.yaml +12 -0
  23. endoreg_db/data/_examples/finding_classification/colonoscopy_bowel_preparation.yaml +68 -0
  24. endoreg_db/data/_examples/finding_classification/colonoscopy_jnet.yaml +22 -0
  25. endoreg_db/data/_examples/finding_classification/colonoscopy_kudo.yaml +25 -0
  26. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_circularity.yaml +20 -0
  27. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_planarity.yaml +24 -0
  28. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_size.yaml +68 -0
  29. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_surface.yaml +20 -0
  30. endoreg_db/data/_examples/finding_classification/colonoscopy_location.yaml +80 -0
  31. endoreg_db/data/_examples/finding_classification/colonoscopy_lst.yaml +21 -0
  32. endoreg_db/data/_examples/finding_classification/colonoscopy_nice.yaml +20 -0
  33. endoreg_db/data/_examples/finding_classification/colonoscopy_paris.yaml +26 -0
  34. endoreg_db/data/_examples/finding_classification/colonoscopy_sano.yaml +22 -0
  35. endoreg_db/data/_examples/finding_classification/colonoscopy_summary.yaml +53 -0
  36. endoreg_db/data/_examples/finding_classification/complication_generic.yaml +25 -0
  37. endoreg_db/data/_examples/finding_classification/examination_setting_generic.yaml +40 -0
  38. endoreg_db/data/_examples/finding_classification/histology_colo.yaml +51 -0
  39. endoreg_db/data/_examples/finding_classification/intervention_required.yaml +26 -0
  40. endoreg_db/data/_examples/finding_classification/medication_related.yaml +23 -0
  41. endoreg_db/data/_examples/finding_classification/visualized.yaml +33 -0
  42. endoreg_db/data/_examples/finding_classification_choice/bowel_preparation.yaml +78 -0
  43. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_circularity_default.yaml +32 -0
  44. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_jnet.yaml +15 -0
  45. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_kudo.yaml +23 -0
  46. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_lst.yaml +15 -0
  47. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_nice.yaml +17 -0
  48. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_paris.yaml +57 -0
  49. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_planarity_default.yaml +49 -0
  50. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_sano.yaml +14 -0
  51. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_surface_intact_default.yaml +36 -0
  52. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_location.yaml +229 -0
  53. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_not_complete_reason.yaml +19 -0
  54. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_size.yaml +82 -0
  55. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +15 -0
  56. endoreg_db/data/_examples/finding_classification_choice/complication_generic_types.yaml +15 -0
  57. endoreg_db/data/_examples/finding_classification_choice/examination_setting_generic_types.yaml +15 -0
  58. endoreg_db/data/_examples/finding_classification_choice/histology.yaml +24 -0
  59. endoreg_db/data/_examples/finding_classification_choice/histology_polyp.yaml +20 -0
  60. endoreg_db/data/_examples/finding_classification_choice/outcome.yaml +19 -0
  61. endoreg_db/data/_examples/finding_classification_choice/yes_no_na.yaml +11 -0
  62. endoreg_db/data/_examples/finding_classification_type/colonoscopy_basic.yaml +48 -0
  63. endoreg_db/data/_examples/finding_intervention/endoscopy.yaml +43 -0
  64. endoreg_db/data/_examples/finding_intervention/endoscopy_colonoscopy.yaml +168 -0
  65. endoreg_db/data/_examples/finding_intervention/endoscopy_egd.yaml +128 -0
  66. endoreg_db/data/_examples/finding_intervention/endoscopy_ercp.yaml +32 -0
  67. endoreg_db/data/_examples/finding_intervention/endoscopy_eus_lower.yaml +9 -0
  68. endoreg_db/data/_examples/finding_intervention/endoscopy_eus_upper.yaml +36 -0
  69. endoreg_db/data/_examples/finding_intervention_type/endoscopy.yaml +15 -0
  70. endoreg_db/data/_examples/finding_type/data.yaml +43 -0
  71. endoreg_db/data/_examples/requirement/age.yaml +26 -0
  72. endoreg_db/data/_examples/requirement/colonoscopy_baseline_austria.yaml +45 -0
  73. endoreg_db/data/_examples/requirement/disease_cardiovascular.yaml +79 -0
  74. endoreg_db/data/_examples/requirement/disease_classification_choice_cardiovascular.yaml +41 -0
  75. endoreg_db/data/_examples/requirement/disease_hepatology.yaml +12 -0
  76. endoreg_db/data/_examples/requirement/disease_misc.yaml +12 -0
  77. endoreg_db/data/_examples/requirement/disease_renal.yaml +96 -0
  78. endoreg_db/data/_examples/requirement/endoscopy_bleeding_risk.yaml +59 -0
  79. endoreg_db/data/_examples/requirement/event_cardiology.yaml +251 -0
  80. endoreg_db/data/_examples/requirement/event_requirements.yaml +145 -0
  81. endoreg_db/data/_examples/requirement/finding_colon_polyp.yaml +50 -0
  82. endoreg_db/data/_examples/requirement/gender.yaml +25 -0
  83. endoreg_db/data/_examples/requirement/lab_value.yaml +441 -0
  84. endoreg_db/data/_examples/requirement/medication.yaml +93 -0
  85. endoreg_db/data/_examples/requirement_operator/age.yaml +13 -0
  86. endoreg_db/data/_examples/requirement_operator/lab_operators.yaml +129 -0
  87. endoreg_db/data/_examples/requirement_operator/model_operators.yaml +96 -0
  88. endoreg_db/data/_examples/requirement_set/01_endoscopy_generic.yaml +48 -0
  89. endoreg_db/data/_examples/requirement_set/colonoscopy_austria_screening.yaml +57 -0
  90. endoreg_db/data/_examples/yaml_examples.xlsx +0 -0
  91. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +4 -3
  92. endoreg_db/data/event_classification/data.yaml +4 -0
  93. endoreg_db/data/event_classification_choice/data.yaml +9 -0
  94. endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +43 -70
  95. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +22 -52
  96. endoreg_db/data/finding_classification/colonoscopy_location.yaml +31 -62
  97. endoreg_db/data/finding_classification/histology_colo.yaml +28 -36
  98. endoreg_db/data/requirement/colon_polyp_intervention.yaml +49 -0
  99. endoreg_db/data/requirement/coloreg_colon_polyp.yaml +49 -0
  100. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +31 -12
  101. endoreg_db/data/requirement_set/01_laboratory.yaml +13 -0
  102. endoreg_db/data/requirement_set/02_endoscopy_bleeding_risk.yaml +46 -0
  103. endoreg_db/data/requirement_set/90_coloreg.yaml +178 -0
  104. endoreg_db/data/requirement_set/_old_ +109 -0
  105. endoreg_db/data/requirement_set_type/data.yaml +21 -0
  106. endoreg_db/data/setup_config.yaml +4 -4
  107. endoreg_db/data/tag/requirement_set_tags.yaml +21 -0
  108. endoreg_db/exceptions.py +5 -2
  109. endoreg_db/helpers/data_loader.py +1 -1
  110. endoreg_db/management/commands/create_model_meta_from_huggingface.py +21 -10
  111. endoreg_db/management/commands/create_multilabel_model_meta.py +299 -129
  112. endoreg_db/management/commands/import_video.py +9 -10
  113. endoreg_db/management/commands/import_video_with_classification.py +1 -1
  114. endoreg_db/management/commands/init_default_ai_model.py +1 -1
  115. endoreg_db/management/commands/list_routes.py +18 -0
  116. endoreg_db/management/commands/load_center_data.py +12 -12
  117. endoreg_db/management/commands/load_requirement_data.py +60 -31
  118. endoreg_db/management/commands/load_requirement_set_tags.py +95 -0
  119. endoreg_db/management/commands/setup_endoreg_db.py +3 -3
  120. endoreg_db/management/commands/storage_management.py +271 -203
  121. endoreg_db/migrations/0001_initial.py +1799 -1300
  122. endoreg_db/migrations/0002_requirementset_depends_on.py +18 -0
  123. endoreg_db/migrations/_old/0001_initial.py +1857 -0
  124. endoreg_db/migrations/_old/0004_employee_city_employee_post_code_employee_street_and_more.py +68 -0
  125. endoreg_db/migrations/_old/0004_remove_casetemplate_rules_and_more.py +77 -0
  126. endoreg_db/migrations/_old/0005_merge_20251111_1003.py +14 -0
  127. endoreg_db/migrations/_old/0006_sensitivemeta_anonymized_text_and_more.py +68 -0
  128. endoreg_db/migrations/_old/0007_remove_rule_attribute_dtype_remove_rule_rule_type_and_more.py +89 -0
  129. endoreg_db/migrations/_old/0008_remove_event_event_classification_and_more.py +27 -0
  130. endoreg_db/migrations/_old/0009_alter_modelmeta_options_and_more.py +21 -0
  131. endoreg_db/models/__init__.py +78 -123
  132. endoreg_db/models/administration/__init__.py +21 -42
  133. endoreg_db/models/administration/ai/active_model.py +2 -2
  134. endoreg_db/models/administration/ai/ai_model.py +7 -6
  135. endoreg_db/models/administration/case/__init__.py +1 -15
  136. endoreg_db/models/administration/case/case.py +3 -3
  137. endoreg_db/models/administration/case/case_template/__init__.py +2 -14
  138. endoreg_db/models/administration/case/case_template/case_template.py +2 -124
  139. endoreg_db/models/administration/case/case_template/case_template_rule.py +2 -268
  140. endoreg_db/models/administration/case/case_template/case_template_rule_value.py +2 -85
  141. endoreg_db/models/administration/case/case_template/case_template_type.py +2 -25
  142. endoreg_db/models/administration/center/center.py +33 -19
  143. endoreg_db/models/administration/center/center_product.py +12 -9
  144. endoreg_db/models/administration/center/center_resource.py +25 -19
  145. endoreg_db/models/administration/center/center_shift.py +21 -17
  146. endoreg_db/models/administration/center/center_waste.py +16 -8
  147. endoreg_db/models/administration/person/__init__.py +2 -0
  148. endoreg_db/models/administration/person/employee/employee.py +10 -5
  149. endoreg_db/models/administration/person/employee/employee_qualification.py +9 -4
  150. endoreg_db/models/administration/person/employee/employee_type.py +12 -6
  151. endoreg_db/models/administration/person/examiner/examiner.py +13 -11
  152. endoreg_db/models/administration/person/patient/__init__.py +2 -0
  153. endoreg_db/models/administration/person/patient/patient.py +103 -100
  154. endoreg_db/models/administration/person/patient/patient_external_id.py +37 -0
  155. endoreg_db/models/administration/person/person.py +4 -0
  156. endoreg_db/models/administration/person/profession/__init__.py +8 -4
  157. endoreg_db/models/administration/person/user/portal_user_information.py +11 -7
  158. endoreg_db/models/administration/product/product.py +20 -15
  159. endoreg_db/models/administration/product/product_material.py +17 -18
  160. endoreg_db/models/administration/product/product_weight.py +12 -8
  161. endoreg_db/models/administration/product/reference_product.py +23 -55
  162. endoreg_db/models/administration/qualification/qualification.py +7 -3
  163. endoreg_db/models/administration/qualification/qualification_type.py +7 -3
  164. endoreg_db/models/administration/shift/scheduled_days.py +8 -5
  165. endoreg_db/models/administration/shift/shift.py +16 -12
  166. endoreg_db/models/administration/shift/shift_type.py +23 -31
  167. endoreg_db/models/label/__init__.py +7 -8
  168. endoreg_db/models/label/annotation/image_classification.py +10 -9
  169. endoreg_db/models/label/annotation/video_segmentation_annotation.py +8 -5
  170. endoreg_db/models/label/label.py +15 -15
  171. endoreg_db/models/label/label_set.py +19 -6
  172. endoreg_db/models/label/label_type.py +1 -1
  173. endoreg_db/models/label/label_video_segment/_create_from_video.py +5 -8
  174. endoreg_db/models/label/label_video_segment/label_video_segment.py +76 -102
  175. endoreg_db/models/label/video_segmentation_label.py +4 -0
  176. endoreg_db/models/label/video_segmentation_labelset.py +4 -3
  177. endoreg_db/models/media/frame/frame.py +22 -22
  178. endoreg_db/models/media/pdf/raw_pdf.py +110 -182
  179. endoreg_db/models/media/pdf/report_file.py +25 -29
  180. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +30 -46
  181. endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +23 -7
  182. endoreg_db/models/media/video/__init__.py +1 -0
  183. endoreg_db/models/media/video/create_from_file.py +48 -56
  184. endoreg_db/models/media/video/pipe_2.py +8 -9
  185. endoreg_db/models/media/video/video_file.py +150 -108
  186. endoreg_db/models/media/video/video_file_ai.py +288 -74
  187. endoreg_db/models/media/video/video_file_anonymize.py +38 -38
  188. endoreg_db/models/media/video/video_file_frames/__init__.py +3 -1
  189. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +6 -8
  190. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +7 -9
  191. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +9 -8
  192. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +38 -45
  193. endoreg_db/models/media/video/video_file_frames/_get_frame.py +6 -8
  194. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +4 -18
  195. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +4 -3
  196. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +7 -6
  197. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +6 -8
  198. endoreg_db/models/media/video/video_file_frames/_get_frames.py +6 -8
  199. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +15 -25
  200. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +26 -23
  201. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +23 -14
  202. endoreg_db/models/media/video/video_file_io.py +109 -62
  203. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +3 -3
  204. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +5 -3
  205. endoreg_db/models/media/video/video_file_meta/get_fps.py +37 -34
  206. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +19 -25
  207. endoreg_db/models/media/video/video_file_meta/text_meta.py +41 -38
  208. endoreg_db/models/media/video/video_file_meta/video_meta.py +14 -7
  209. endoreg_db/models/media/video/video_file_segments.py +24 -17
  210. endoreg_db/models/media/video/video_metadata.py +19 -35
  211. endoreg_db/models/media/video/video_processing.py +96 -95
  212. endoreg_db/models/medical/contraindication/__init__.py +13 -3
  213. endoreg_db/models/medical/disease.py +22 -16
  214. endoreg_db/models/medical/event.py +31 -18
  215. endoreg_db/models/medical/examination/__init__.py +13 -6
  216. endoreg_db/models/medical/examination/examination.py +17 -18
  217. endoreg_db/models/medical/examination/examination_indication.py +26 -25
  218. endoreg_db/models/medical/examination/examination_time.py +16 -6
  219. endoreg_db/models/medical/examination/examination_time_type.py +9 -6
  220. endoreg_db/models/medical/examination/examination_type.py +3 -4
  221. endoreg_db/models/medical/finding/finding.py +38 -39
  222. endoreg_db/models/medical/finding/finding_classification.py +37 -48
  223. endoreg_db/models/medical/finding/finding_intervention.py +27 -22
  224. endoreg_db/models/medical/finding/finding_type.py +13 -12
  225. endoreg_db/models/medical/hardware/endoscope.py +20 -26
  226. endoreg_db/models/medical/hardware/endoscopy_processor.py +2 -2
  227. endoreg_db/models/medical/laboratory/lab_value.py +62 -91
  228. endoreg_db/models/medical/medication/medication.py +22 -10
  229. endoreg_db/models/medical/medication/medication_indication.py +29 -3
  230. endoreg_db/models/medical/medication/medication_indication_type.py +25 -14
  231. endoreg_db/models/medical/medication/medication_intake_time.py +31 -19
  232. endoreg_db/models/medical/medication/medication_schedule.py +27 -16
  233. endoreg_db/models/medical/organ/__init__.py +15 -12
  234. endoreg_db/models/medical/patient/medication_examples.py +1 -5
  235. endoreg_db/models/medical/patient/patient_disease.py +20 -23
  236. endoreg_db/models/medical/patient/patient_event.py +19 -22
  237. endoreg_db/models/medical/patient/patient_examination.py +48 -54
  238. endoreg_db/models/medical/patient/patient_examination_indication.py +16 -14
  239. endoreg_db/models/medical/patient/patient_finding.py +122 -139
  240. endoreg_db/models/medical/patient/patient_finding_classification.py +44 -49
  241. endoreg_db/models/medical/patient/patient_finding_intervention.py +8 -19
  242. endoreg_db/models/medical/patient/patient_lab_sample.py +28 -23
  243. endoreg_db/models/medical/patient/patient_lab_value.py +82 -89
  244. endoreg_db/models/medical/patient/patient_medication.py +27 -38
  245. endoreg_db/models/medical/patient/patient_medication_schedule.py +28 -36
  246. endoreg_db/models/medical/risk/risk.py +7 -6
  247. endoreg_db/models/medical/risk/risk_type.py +8 -5
  248. endoreg_db/models/metadata/model_meta.py +60 -29
  249. endoreg_db/models/metadata/model_meta_logic.py +125 -18
  250. endoreg_db/models/metadata/pdf_meta.py +19 -24
  251. endoreg_db/models/metadata/sensitive_meta.py +102 -85
  252. endoreg_db/models/metadata/sensitive_meta_logic.py +192 -173
  253. endoreg_db/models/metadata/video_meta.py +51 -31
  254. endoreg_db/models/metadata/video_prediction_logic.py +16 -23
  255. endoreg_db/models/metadata/video_prediction_meta.py +29 -33
  256. endoreg_db/models/other/distribution/date_value_distribution.py +89 -29
  257. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +21 -5
  258. endoreg_db/models/other/distribution/numeric_value_distribution.py +114 -53
  259. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +4 -3
  260. endoreg_db/models/other/emission/emission_factor.py +18 -8
  261. endoreg_db/models/other/gender.py +10 -5
  262. endoreg_db/models/other/information_source.py +25 -25
  263. endoreg_db/models/other/material.py +9 -5
  264. endoreg_db/models/other/resource.py +6 -4
  265. endoreg_db/models/other/tag.py +10 -5
  266. endoreg_db/models/other/transport_route.py +13 -8
  267. endoreg_db/models/other/unit.py +10 -6
  268. endoreg_db/models/other/waste.py +6 -5
  269. endoreg_db/models/requirement/requirement.py +580 -272
  270. endoreg_db/models/requirement/requirement_error.py +85 -0
  271. endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +268 -0
  272. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +3 -6
  273. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +90 -64
  274. endoreg_db/models/requirement/requirement_operator.py +36 -33
  275. endoreg_db/models/requirement/requirement_set.py +74 -57
  276. endoreg_db/models/state/__init__.py +4 -4
  277. endoreg_db/models/state/abstract.py +2 -2
  278. endoreg_db/models/state/anonymization.py +12 -0
  279. endoreg_db/models/state/audit_ledger.py +46 -47
  280. endoreg_db/models/state/label_video_segment.py +9 -0
  281. endoreg_db/models/state/raw_pdf.py +40 -46
  282. endoreg_db/models/state/sensitive_meta.py +6 -2
  283. endoreg_db/models/state/video.py +58 -53
  284. endoreg_db/models/upload_job.py +32 -55
  285. endoreg_db/models/utils.py +1 -2
  286. endoreg_db/root_urls.py +21 -2
  287. endoreg_db/serializers/__init__.py +0 -2
  288. endoreg_db/serializers/anonymization.py +18 -10
  289. endoreg_db/serializers/meta/report_meta.py +1 -1
  290. endoreg_db/serializers/meta/sensitive_meta_detail.py +63 -118
  291. endoreg_db/serializers/misc/file_overview.py +11 -99
  292. endoreg_db/serializers/requirements/requirement_sets.py +92 -22
  293. endoreg_db/serializers/video/segmentation.py +2 -1
  294. endoreg_db/serializers/video/video_processing_history.py +20 -5
  295. endoreg_db/services/anonymization.py +75 -73
  296. endoreg_db/services/lookup_service.py +37 -24
  297. endoreg_db/services/pdf_import.py +166 -68
  298. endoreg_db/services/storage_aware_video_processor.py +140 -114
  299. endoreg_db/services/video_import.py +193 -283
  300. endoreg_db/urls/__init__.py +7 -20
  301. endoreg_db/urls/media.py +108 -67
  302. endoreg_db/urls/root_urls.py +29 -0
  303. endoreg_db/utils/__init__.py +15 -5
  304. endoreg_db/utils/ai/multilabel_classification_net.py +116 -20
  305. endoreg_db/utils/case_generator/__init__.py +3 -0
  306. endoreg_db/utils/dataloader.py +88 -16
  307. endoreg_db/utils/defaults/set_default_center.py +32 -0
  308. endoreg_db/utils/names.py +22 -16
  309. endoreg_db/utils/permissions.py +2 -1
  310. endoreg_db/utils/pipelines/process_video_dir.py +1 -1
  311. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +414 -127
  312. endoreg_db/utils/setup_config.py +8 -5
  313. endoreg_db/utils/storage.py +115 -0
  314. endoreg_db/utils/validate_endo_roi.py +8 -2
  315. endoreg_db/utils/video/ffmpeg_wrapper.py +184 -188
  316. endoreg_db/views/__init__.py +0 -10
  317. endoreg_db/views/anonymization/media_management.py +198 -163
  318. endoreg_db/views/anonymization/overview.py +4 -1
  319. endoreg_db/views/anonymization/validate.py +174 -40
  320. endoreg_db/views/media/__init__.py +2 -0
  321. endoreg_db/views/media/pdf_media.py +131 -152
  322. endoreg_db/views/media/sensitive_metadata.py +46 -6
  323. endoreg_db/views/media/video_media.py +89 -82
  324. endoreg_db/views/media/video_segments.py +2 -3
  325. endoreg_db/views/meta/sensitive_meta_detail.py +0 -63
  326. endoreg_db/views/patient/patient.py +5 -4
  327. endoreg_db/views/pdf/pdf_stream.py +20 -21
  328. endoreg_db/views/pdf/reimport.py +11 -32
  329. endoreg_db/views/requirement/evaluate.py +188 -187
  330. endoreg_db/views/requirement/lookup.py +17 -3
  331. endoreg_db/views/requirement/requirement_utils.py +89 -0
  332. endoreg_db/views/video/__init__.py +0 -2
  333. endoreg_db/views/video/correction.py +2 -2
  334. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.0.dist-info}/METADATA +7 -3
  335. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.0.dist-info}/RECORD +341 -245
  336. endoreg_db/models/administration/permissions/__init__.py +0 -44
  337. endoreg_db/models/media/video/video_file_frames.py +0 -0
  338. endoreg_db/models/metadata/frame_ocr_result.py +0 -0
  339. endoreg_db/models/rule/__init__.py +0 -13
  340. endoreg_db/models/rule/rule.py +0 -27
  341. endoreg_db/models/rule/rule_applicator.py +0 -224
  342. endoreg_db/models/rule/rule_attribute_dtype.py +0 -17
  343. endoreg_db/models/rule/rule_type.py +0 -20
  344. endoreg_db/models/rule/ruleset.py +0 -17
  345. endoreg_db/serializers/video/video_metadata.py +0 -105
  346. endoreg_db/urls/report.py +0 -48
  347. endoreg_db/urls/video.py +0 -61
  348. endoreg_db/utils/case_generator/case_generator.py +0 -159
  349. endoreg_db/utils/case_generator/utils.py +0 -30
  350. endoreg_db/views/report/__init__.py +0 -9
  351. endoreg_db/views/report/report_list.py +0 -112
  352. endoreg_db/views/report/report_with_secure_url.py +0 -28
  353. endoreg_db/views/report/start_examination.py +0 -7
  354. endoreg_db/views.py +0 -0
  355. /endoreg_db/data/{requirement_set → _examples/requirement_set}/endoscopy_bleeding_risk.yaml +0 -0
  356. /endoreg_db/migrations/{0002_add_video_correction_models.py → _old/0002_add_video_correction_models.py} +0 -0
  357. /endoreg_db/migrations/{0003_add_center_display_name.py → _old/0003_add_center_display_name.py} +0 -0
  358. /endoreg_db/{models/media/video/refactor_plan.md → views/pdf/pdf_stream_views.py} +0 -0
  359. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.0.dist-info}/WHEEL +0 -0
  360. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,229 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "terminal_ileum"
4
+ name_de: "terminales Ileum"
5
+ name_en: "Terminal Ileum"
6
+ subcategories:
7
+ description: {
8
+ choices: ["unspecified"],
9
+ required: false
10
+ }
11
+ numerical_descriptors:
12
+ cm_rectified:
13
+ unit: "centimeter"
14
+ min: 0
15
+ max: 180
16
+ description: "Insertion depth of the colonoscope in cm (rectified)"
17
+ required: false
18
+
19
+ - model: endoreg_db.finding_classification_choice
20
+ fields:
21
+ name: "cecum"
22
+ name_de: "Caecum"
23
+ name_en: "Cecum"
24
+ subcategories:
25
+ description:
26
+ choices: ["unspecified", "ileocecal-valve", "peri-appendicular"]
27
+ default: "unspecified"
28
+ probability: [0.5, 0.3, 0.2]
29
+ required: true
30
+ numerical_descriptors:
31
+ cm_rectified:
32
+ unit: "centimeter"
33
+ min: 60
34
+ max: 140
35
+ distribution: "uniform"
36
+ std: null
37
+ mean: null
38
+ description: "Insertion depth of the colonoscope in cm (rectified)"
39
+ required: false
40
+
41
+ - model: endoreg_db.finding_classification_choice
42
+ fields:
43
+ name: "ascending_colon"
44
+ name_de: "Colon ascendens"
45
+ name_en: "Ascending Colon"
46
+ subcategories:
47
+ description:
48
+ choices: ["unspecified", "proximal", "distal"]
49
+ probability: [0.5, 0.3, 0.2]
50
+ default: "unspecified"
51
+ required: true
52
+ numerical_descriptors:
53
+ cm_rectified:
54
+ unit: "centimeter"
55
+ min: 40
56
+ max: 100
57
+ distribution: "uniform"
58
+ description: "Insertion depth of the colonoscope in cm (rectified)"
59
+ required: false
60
+
61
+ - model: endoreg_db.finding_classification_choice
62
+ fields:
63
+ name: "right_flexure"
64
+ name_de: "Rechte Flexur"
65
+ name_en: "Right Flexure"
66
+ subcategories:
67
+ description:
68
+ choices: ["unspecified", "proximal", "distal"]
69
+ probability: [0.5, 0.3, 0.2]
70
+ default: "unspecified"
71
+ required: true
72
+ numerical_descriptors:
73
+ cm_rectified:
74
+ unit: "centimeter"
75
+ min: 80
76
+ max: 180
77
+ mean: null
78
+ std: null
79
+ distribution: "uniform"
80
+ description: "Insertion depth of the colonoscope in cm (rectified)"
81
+ required: false
82
+
83
+ - model: endoreg_db.finding_classification_choice
84
+ fields:
85
+ name: "transverse_colon"
86
+ name_de: "Colon transversum"
87
+ name_en: "Transverse Colon"
88
+ subcategories:
89
+ description:
90
+ choices: ["unspecified", "proximal", "distal"]
91
+ probability: [0.5, 0.3, 0.2]
92
+ default: "unspecified"
93
+ required: true
94
+ numerical_descriptors:
95
+ cm_rectified:
96
+ unit: "centimeter"
97
+ min: 40
98
+ max: 80
99
+ mean: null
100
+ std: null
101
+ distribution: "uniform"
102
+ description: "Insertion depth of the colonoscope in cm (rectified)"
103
+ required: false
104
+
105
+ - model: endoreg_db.finding_classification_choice
106
+ fields:
107
+ name: "descending_colon"
108
+ name_de: "Colon descendens"
109
+ name_en: "Descending Colon"
110
+ subcategories:
111
+ description:
112
+ choices: ["unspecified", "proximal", "distal"]
113
+ probability: [0.5, 0.3, 0.2]
114
+ default: "unspecified"
115
+ required: true
116
+ numerical_descriptors:
117
+ cm_rectified:
118
+ unit: "centimeter"
119
+ min: 35
120
+ max: 70
121
+ mean: null
122
+ std: null
123
+ distribution: "uniform"
124
+ description: "Insertion depth of the colonoscope in cm (rectified)"
125
+ required: false
126
+
127
+ - model: endoreg_db.finding_classification_choice
128
+ fields:
129
+ name: "sigmoid_colon"
130
+ name_de: "Colon sigmoideum"
131
+ name_en: "Sigmoid Colon"
132
+ subcategories:
133
+ description:
134
+ choices: ["unspecified", "proximal", "distal"]
135
+ probability: [0.5, 0.3, 0.2]
136
+ default: "unspecified"
137
+ required: true
138
+ numerical_descriptors:
139
+ cm_rectified:
140
+ unit: "centimeter"
141
+ min: 20
142
+ max: 50
143
+ description: "Insertion depth of the colonoscope in cm (rectified)"
144
+ required: true
145
+
146
+ - model: endoreg_db.finding_classification_choice
147
+ fields:
148
+ name: "rectum"
149
+ name_de: "Rektum"
150
+ name_en: "Rectum"
151
+ subcategories:
152
+ description:
153
+ choices: ["1/3", "2/3", "3/3"]
154
+ probability: [0.3, 0.3, 0.4]
155
+ default: "3/3"
156
+ required: true
157
+ numerical_descriptors:
158
+ cm_rectified:
159
+ unit: "centimeter"
160
+ min: 5
161
+ max: 20
162
+ description: "Insertion depth of the colonoscope in cm (rectified)"
163
+ required: true
164
+
165
+ - model: endoreg_db.finding_classification_choice
166
+ fields:
167
+ name: "anal_canal"
168
+ name_de: "Analkanal"
169
+ name_en: "Anal Canal"
170
+ subcategories:
171
+ description:
172
+ choices: ["unspecified", "proximal", "distal"]
173
+ probability: [0.5, 0.3, 0.2]
174
+ default: "unspecified"
175
+ required: false
176
+ numerical_descriptors:
177
+ cm_rectified:
178
+ unit: "centimeter"
179
+ min: 0
180
+ max: 3
181
+ mean: null
182
+ std: null
183
+ distribution: "uniform"
184
+ description: "Insertion depth of the colonoscope in cm (rectified)"
185
+ required: true
186
+
187
+ - model: endoreg_db.finding_classification_choice
188
+ fields:
189
+ name: "left_colon"
190
+ name_de: "linkes Kolon"
191
+ name_en: "Left Colon"
192
+ subcategories:
193
+ description:
194
+ choices: ["unspecified", "proximal", "distal"]
195
+ probability: [0.3, 0.3, 0.3]
196
+ default: "proximal"
197
+ required: true
198
+ numerical_descriptors:
199
+ cm_rectified:
200
+ unit: "centimeter"
201
+ min: 0
202
+ max: 180
203
+ mean: null
204
+ std: null
205
+ distribution: "uniform"
206
+ description: "Insertion depth of the colonoscope in cm (rectified)"
207
+ required: false
208
+
209
+ - model: endoreg_db.finding_classification_choice
210
+ fields:
211
+ name: "right_colon"
212
+ name_de: "rechtes Kolon"
213
+ name_en: "Right Colon"
214
+ subcategories:
215
+ description:
216
+ choices: ["unspecified", "proximal", "distal"]
217
+ probability: [0.3, 0.3, 0.3]
218
+ default: "proximal"
219
+ required: true
220
+ numerical_descriptors:
221
+ cm_rectified:
222
+ unit: "centimeter"
223
+ min: 0
224
+ max: 180
225
+ mean: null
226
+ std: null
227
+ distribution: "uniform"
228
+ description: "Insertion depth of the colonoscope in cm (rectified)"
229
+ required: false
@@ -0,0 +1,19 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colonoscopy_incomplete_insufficient_preparation"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colonoscopy_incomplete_complication"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colonoscopy_incomplete_pain"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "colonoscopy_incomplete_stenosis"
16
+
17
+ - model: endoreg_db.finding_classification_choice
18
+ fields:
19
+ name: "colonoscopy_incomplete_other"
@@ -0,0 +1,82 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_size_categorical_diminutive"
4
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
5
+ name_en: "Colon Lesion Size Classification (categorical)"
6
+ description: "Diminutive (< 6 mm)"
7
+
8
+ - model: endoreg_db.finding_classification_choice
9
+ fields:
10
+ name: "colon_lesion_size_categorical_small"
11
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
12
+ name_en: "Colon Lesion Size Classification (categorical)"
13
+ description: "Small (6 - 9 mm)"
14
+
15
+ - model: endoreg_db.finding_classification_choice
16
+ fields:
17
+ name: "colon_lesion_size_categorical_medium"
18
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
19
+ name_en: "Colon Lesion Size Classification (categorical)"
20
+ description: "Medium (10 - 19 mm)"
21
+
22
+ - model: endoreg_db.finding_classification_choice
23
+ fields:
24
+ name: "colon_lesion_size_categorical_large"
25
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
26
+ name_en: "Colon Lesion Size Classification (categorical)"
27
+ description: "Large (> 19 mm)"
28
+
29
+ ##########
30
+
31
+ - model: endoreg_db.finding_classification_choice
32
+ fields:
33
+ name: "colon_lesion_size_oval_mm"
34
+ name_de: "Formklassifikation Kolonläsion (kategorisch)"
35
+ name_en: "Colon Lesion Shape Classification (categorical)"
36
+ description: "oval lesions"
37
+ numerical_descriptors:
38
+ largest_diameter_mm:
39
+ unit: "mm"
40
+ min: 0
41
+ max: 35
42
+ distribution: "normal"
43
+ mean: 5
44
+ std: 3
45
+ description: "Largest diameter of the lesion in mm"
46
+ required: true
47
+ perpendicular_diameter_mm:
48
+ unit: "mm"
49
+ min: 0
50
+ max: 35
51
+ description: "Perpendicular diameter of the lesion in mm"
52
+ required: false
53
+
54
+ # Austria Screening Quality Assurance
55
+ # "colon_lesion_size_austria_categorical_0_5",
56
+ # "colon_lesion_size_austria_categorical_6_9",
57
+ # "colon_lesion_size_austria_categorical_10_20",
58
+ # "colon_lesion_size_austria_categorical_21_x"
59
+ - model: endoreg_db.finding_classification_choice
60
+ fields:
61
+ name: "colon_lesion_size_austria_categorical_0_5"
62
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
63
+ name_en: "Colon Lesion Size Classification (categorical)"
64
+ description: "0 - 5 mm"
65
+ - model: endoreg_db.finding_classification_choice
66
+ fields:
67
+ name: "colon_lesion_size_austria_categorical_6_9"
68
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
69
+ name_en: "Colon Lesion Size Classification (categorical)"
70
+ description: "6 - 9 mm"
71
+ - model: endoreg_db.finding_classification_choice
72
+ fields:
73
+ name: "colon_lesion_size_austria_categorical_10_20"
74
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
75
+ name_en: "Colon Lesion Size Classification (categorical)"
76
+ description: "10 - 20 mm"
77
+ - model: endoreg_db.finding_classification_choice
78
+ fields:
79
+ name: "colon_lesion_size_austria_categorical_21_x"
80
+ name_de: "Größenklassifikation Kolonläsion (kategorisch)"
81
+ name_en: "Colon Lesion Size Classification (categorical)"
82
+ description: "> 20 mm"
@@ -0,0 +1,15 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colonoscopy_worst_finding_polyp"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colonoscopy_worst_finding_rectum_cancer"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colonoscopy_worst_finding_colon_cancer"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "colonoscopy_worst_finding_other"
@@ -0,0 +1,15 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "complication_generic_type_cardiorespiratory"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "complication_generic_type_bleeding"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "complication_generic_type_perforation"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "complication_generic_type_other"
@@ -0,0 +1,15 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "examination_setting_generic_location_inpatient"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "examination_setting_generic_location_outpatient"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "examination_setting_operative"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "examination_setting_conservative"
@@ -0,0 +1,24 @@
1
+ # "histology_dysplasia_none",
2
+ # "histology_dysplasia_low_grade",
3
+ # "histology_dysplasia_high_grade",
4
+ - model: endoreg_db.finding_classification_choice
5
+ fields:
6
+ name: "histology_dysplasia_none"
7
+ description: "Histology: No dysplasia"
8
+ - model: endoreg_db.finding_classification_choice
9
+ fields:
10
+ name: "histology_dysplasia_low_grade"
11
+ description: "Histology: Low-grade dysplasia"
12
+ - model: endoreg_db.finding_classification_choice
13
+ fields:
14
+ name: "histology_dysplasia_high_grade"
15
+ description: "Histology: High-grade dysplasia"
16
+
17
+ - model: endoreg_db.finding_classification_choice
18
+ fields:
19
+ name: "histology_dignity_benign"
20
+ description: "Histology: Benign"
21
+ - model: endoreg_db.finding_classification_choice
22
+ fields:
23
+ name: "histology_dignity_malign"
24
+ description: "Histology: Malign"
@@ -0,0 +1,20 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "histology_polyp_hyperplastic"
4
+ description: "Histology: Hyperplastic polyp"
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "histology_polyp_adenoma_tubular"
8
+ description: "Histology: Tubular adenoma"
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "histology_polyp_adenoma_tubulovillous"
12
+ description: "Histology: Tubulovillous adenoma"
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "histology_polyp_adenoma_villous"
16
+ description: "Histology: Villous adenoma"
17
+ - model: endoreg_db.finding_classification_choice
18
+ fields:
19
+ name: "histology_polyp_sessile_serrated_lesion"
20
+ description: "Histology: Sessile serrated lesion"
@@ -0,0 +1,19 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "outcome_restitutio_ad_integrum"
4
+ description: "Outcome: Restitutio ad integrum"
5
+
6
+ - model: endoreg_db.finding_classification_choice
7
+ fields:
8
+ name: "outcome_death"
9
+ description: "Outcome: Death"
10
+
11
+ - model: endoreg_db.finding_classification_choice
12
+ fields:
13
+ name: "outcome_unknown"
14
+ description: "Outcome: Unknown"
15
+
16
+ - model: endoreg_db.finding_classification_choice
17
+ fields:
18
+ name: "outcome_lasting_disability"
19
+ description: "Outcome: Lasting disability"
@@ -0,0 +1,11 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "yes"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "no"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "na"
@@ -0,0 +1,48 @@
1
+ #####
2
+ # Base types for distinguishing morphology and location
3
+ # Related Fields
4
+ - model: endoreg_db.finding_classification_type
5
+ fields:
6
+ name: "location"
7
+ name_de: "Lokalisation"
8
+ name_en: "Location"
9
+
10
+ - model: endoreg_db.finding_classification_type
11
+ fields:
12
+ name: "morphology"
13
+ name_de: "Morphologie"
14
+ name_en: "Morphology"
15
+
16
+ #####
17
+
18
+ - model: endoreg_db.finding_classification_type
19
+ fields:
20
+ name: "bowel_prep"
21
+
22
+ - model: endoreg_db.finding_classification_type
23
+ fields:
24
+ name: "colon_lesion_size"
25
+
26
+ - model: endoreg_db.finding_classification_type
27
+ fields:
28
+ name: "colon_lesion_surface_intact"
29
+
30
+ - model: endoreg_db.finding_classification_type
31
+ fields:
32
+ name: "colon_lesion_planarity"
33
+
34
+ - model: endoreg_db.finding_classification_type
35
+ fields:
36
+ name: "colon_lesion_circularity"
37
+
38
+ - model: endoreg_db.finding_classification_type
39
+ fields:
40
+ name: "colon_lesion_advanced_imaging"
41
+
42
+ - model: endoreg_db.finding_classification_type
43
+ fields:
44
+ name: "colon_lesion_shape"
45
+
46
+ - model: endoreg_db.finding_classification_type
47
+ fields:
48
+ name: "colon_lesion_capillary_pattern"
@@ -0,0 +1,43 @@
1
+ # --- Begin kept interventions ---
2
+
3
+ - model: endoreg_db.finding_intervention
4
+ fields:
5
+ name: percutaneous_transhepatic_cholangiography
6
+ description: "TODO: Add description"
7
+ intervention_types: []
8
+ required_lab_values: []
9
+ contraindications: []
10
+ - model: endoreg_db.finding_intervention
11
+ fields:
12
+ name: sonography_guided_liver_punction
13
+ description: "TODO: Add description"
14
+ intervention_types: []
15
+ required_lab_values: []
16
+ contraindications: []
17
+ - model: endoreg_db.finding_intervention
18
+ fields:
19
+ name: xray_guided_liver_punction
20
+ description: "TODO: Add description"
21
+ intervention_types: []
22
+ required_lab_values: []
23
+ contraindications: []
24
+ - model: endoreg_db.finding_intervention
25
+ fields:
26
+ name: percutaneous_transhepatic_biliary_drainage
27
+ description: "TODO: Add description"
28
+ intervention_types: []
29
+ required_lab_values: []
30
+ contraindications: []
31
+ - model: endoreg_db.finding_intervention
32
+ fields:
33
+ name: biliary_stent
34
+ description: "TODO: Add description"
35
+ intervention_types: []
36
+ required_lab_values: []
37
+ contraindications: []
38
+ # --- End kept interventions ---
39
+
40
+ # --- Removed interventions moved to other files ---
41
+ # Removed: all items with names starting with "egd_"
42
+ # Removed: all items with names starting with "erc", "ercp", "erp"
43
+ # Removed: all items with names starting with "endosonography_upper_gi_"