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,40 @@
1
+
2
+ - model: endoreg_db.finding_classification
3
+ fields:
4
+ name: "examination_setting_generic_location"
5
+ classification_types: []
6
+ examinations: [
7
+ "gastroscopy",
8
+ "endosonography_upper_gi",
9
+ "endosonography_lower_gi",
10
+ "ercp",
11
+ "small_bowel_endoscopy",
12
+ "capsule_endoscopy",
13
+ "percutaneous_transhepatic_biliary_drainage",
14
+ "colonoscopy",
15
+ ]
16
+ findings: [
17
+ "examination_setting",
18
+ ]
19
+ choices: [
20
+ "examination_setting_generic_location_inpatient",
21
+ "examination_setting_generic_location_outpatient",
22
+ ]
23
+
24
+
25
+ - model: endoreg_db.finding_classification
26
+ fields:
27
+ name: "colonoscopy_austria_screening_final_examination_setting"
28
+ classification_types: []
29
+ examinations: [
30
+ "colonoscopy_austria_screening",
31
+ ]
32
+ findings: [
33
+ "examination_setting",
34
+ ]
35
+ choices: [
36
+ "examination_setting_generic_location_inpatient",
37
+ "examination_setting_generic_location_outpatient",
38
+ "examination_setting_operative",
39
+ "examination_setting_conservative"
40
+ ]
@@ -0,0 +1,51 @@
1
+ - model: endoreg_db.finding_classification
2
+ fields:
3
+ name: "colonoscopy_polyp_histology"
4
+ classification_types: []
5
+ examinations: [
6
+ "colonoscopy",
7
+ "colonoscopy_austria_screening",
8
+ ]
9
+ findings: [
10
+ "colon_polyp",
11
+ ]
12
+ choices: [
13
+ "histology_polyp_hyperplastic",
14
+ "histology_polyp_adenoma_tubular",
15
+ "histology_polyp_adenoma_tubulovillous",
16
+ "histology_polyp_adenoma_villous",
17
+ "histology_polyp_sessile_serrated_lesion"
18
+ ]
19
+
20
+ - model: endoreg_db.finding_classification_choice
21
+ fields:
22
+ name: "colonoscopy_polyp_histology_dysplasia"
23
+ classification_types: []
24
+ examinations: [
25
+ "colonoscopy",
26
+ "colonoscopy_austria_screening",
27
+ ]
28
+ findings: [
29
+ "colon_polyp",
30
+ ]
31
+ choices: [
32
+ "histology_dysplasia_none",
33
+ "histology_dysplasia_low_grade",
34
+ "histology_dysplasia_high_grade",
35
+ ]
36
+
37
+ - model: endoreg_db.finding_classification
38
+ fields:
39
+ name: "colonoscopy_histology_dignity"
40
+ classification_types: []
41
+ examinations: [
42
+ "colonoscopy",
43
+ "colonoscopy_austria_screening",
44
+ ]
45
+ findings: [
46
+ "colon_polyp",
47
+ ]
48
+ choices: [
49
+ "histology_dignity_benign",
50
+ "histology_dignity_malign",
51
+ ]
@@ -0,0 +1,26 @@
1
+
2
+ - model: endoreg_db.finding_classification
3
+ fields:
4
+ name: "intervention_required"
5
+ classification_types: []
6
+ examinations: [
7
+ "gastroscopy",
8
+ "endosonography_upper_gi",
9
+ "endosonography_lower_gi",
10
+ "ercp",
11
+ "small_bowel_endoscopy",
12
+ "capsule_endoscopy",
13
+ "percutaneous_transhepatic_biliary_drainage",
14
+ "colonoscopy",
15
+ "colonoscopy_austria_screening",
16
+ ]
17
+ findings: [
18
+ "colon_polyp",
19
+ "post-intervention-wound",
20
+ "ulcer",
21
+
22
+ ]
23
+ choices: [
24
+ "yes",
25
+ "no",
26
+ ]
@@ -0,0 +1,23 @@
1
+
2
+ - model: endoreg_db.finding_classification
3
+ fields:
4
+ name: "sedation_performed"
5
+ classification_types: []
6
+ examinations: [
7
+ "gastroscopy",
8
+ "endosonography_upper_gi",
9
+ "endosonography_lower_gi",
10
+ "ercp",
11
+ "small_bowel_endoscopy",
12
+ "capsule_endoscopy",
13
+ "percutaneous_transhepatic_biliary_drainage",
14
+ "colonoscopy",
15
+ "colonoscopy_austria_screening",
16
+ ]
17
+ findings: [
18
+ "sedation",
19
+ ]
20
+ choices: [
21
+ "yes",
22
+ "no",
23
+ ]
@@ -0,0 +1,33 @@
1
+
2
+ - model: endoreg_db.finding_classification
3
+ fields:
4
+ name: "visualized"
5
+ classification_types: []
6
+ examinations: [
7
+ "gastroscopy",
8
+ "endosonography_upper_gi",
9
+ "endosonography_lower_gi",
10
+ "ercp",
11
+ "small_bowel_endoscopy",
12
+ "capsule_endoscopy",
13
+ "percutaneous_transhepatic_biliary_drainage",
14
+ "colonoscopy",
15
+ "colonoscopy_austria_screening",
16
+ ]
17
+ findings: [
18
+ "cecum",
19
+ "terminal_ileum",
20
+ "ileocecal_valve",
21
+ "ascending_colon",
22
+ "right_flexure",
23
+ "transverse_colon",
24
+ "left_flexure",
25
+ "descending_colon",
26
+ "sigmoid_colon",
27
+ "rectum",
28
+ "rectum_anus",
29
+ ]
30
+ choices: [
31
+ "yes",
32
+ "no",
33
+ ]
@@ -0,0 +1,78 @@
1
+ # Boston
2
+ - model: endoreg_db.finding_classification_choice
3
+ fields:
4
+ name: "bowel_prep_boston_0"
5
+ name_de: "0"
6
+ name_en: "bowel_prep_boston_0"
7
+
8
+ - model: endoreg_db.finding_classification_choice
9
+ fields:
10
+ name: "bowel_prep_boston_1"
11
+ name_de: "1"
12
+ name_en: "bowel_prep_boston_1"
13
+
14
+ - model: endoreg_db.finding_classification_choice
15
+ fields:
16
+ name: "bowel_prep_boston_2"
17
+ name_de: "2"
18
+ name_en: "bowel_prep_boston_2"
19
+
20
+ - model: endoreg_db.finding_classification_choice
21
+ fields:
22
+ name: "bowel_prep_boston_3"
23
+ name_de: "3"
24
+ name_en: "bowel_prep_boston_3"
25
+
26
+ # Aronchick
27
+ - model: endoreg_db.finding_classification_choice
28
+ fields:
29
+ name: "bowel_prep_aronchick_0"
30
+ name_de: "Inadäquat"
31
+ name_en: "Inadequate"
32
+
33
+ - model: endoreg_db.finding_classification_choice
34
+ fields:
35
+ name: "bowel_prep_aronchick_1"
36
+ name_en: "Fair"
37
+ name_de: "Ausreichend"
38
+
39
+ - model: endoreg_db.finding_classification_choice
40
+ fields:
41
+ name: "bowel_prep_aronchick_2"
42
+ name_en: "Good"
43
+ name_de: "Gut"
44
+
45
+ - model: endoreg_db.finding_classification_choice
46
+ fields:
47
+ name: "bowel_prep_aronchick_3"
48
+ name_en: "Excellent"
49
+ name_de: "Exzellent"
50
+
51
+ # Screening Austria
52
+ # Choices are "bowel_prep_perfect", "bowel_prep_good",
53
+ # "bowel_prep_fair", "bowel_prep_poor", "bowel_prep_poor_in_rc_only"
54
+ - model: endoreg_db.finding_classification_choice
55
+ fields:
56
+ name: "bowel_prep_perfect"
57
+ name_de: "Perfekt"
58
+ name_en: "Perfect"
59
+ - model: endoreg_db.finding_classification_choice
60
+ fields:
61
+ name: "bowel_prep_good"
62
+ name_de: "Gut"
63
+ name_en: "Good"
64
+ - model: endoreg_db.finding_classification_choice
65
+ fields:
66
+ name: "bowel_prep_fair"
67
+ name_de: "Befriedigend"
68
+ name_en: "Fair"
69
+ - model: endoreg_db.finding_classification_choice
70
+ fields:
71
+ name: "bowel_prep_poor"
72
+ name_de: "Schlecht"
73
+ name_en: "Poor"
74
+ - model: endoreg_db.finding_classification_choice
75
+ fields:
76
+ name: "bowel_prep_poor_in_rc_only"
77
+ name_de: "Schlecht (nur rechtes Kolon)"
78
+ name_en: "Poor (Right Colon Only)"
@@ -0,0 +1,32 @@
1
+ - model: endoreg_db.finding_morphology_classification_choice
2
+ fields:
3
+ name: "colon_lesion_circularity_false"
4
+ name_de: "Kolonläsion - Zirkularität"
5
+ name_en: "Colon lesion - circularity"
6
+ description: "Category for non-circular lesions"
7
+
8
+ - model: endoreg_db.finding_morphology_classification_choice
9
+ fields:
10
+ name: "colon_lesion_circularity_true"
11
+ name_de: "Kolonläsion - Zirkularität"
12
+ name_en: "Colon lesion - circularity"
13
+ description: "Category for circular lesions"
14
+ numerical_descriptors:
15
+ length:
16
+ unit: "milimeter"
17
+ min: 0
18
+ max: 100
19
+ default: null
20
+ distribution: "uniform"
21
+ description: "Length of the lesion in mm"
22
+ required: true
23
+ circumference:
24
+ unit: "percent"
25
+ min: 33
26
+ max: 100
27
+ mean: 50
28
+ std: 10
29
+ default: null
30
+ distribution: "normal"
31
+ description: "Circumference of the lesion in %"
32
+ required: true
@@ -0,0 +1,15 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_jnet_1"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colon_lesion_jnet_2a"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colon_lesion_jnet_2b"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "colon_lesion_jnet_3"
@@ -0,0 +1,23 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_kudo_1"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colon_lesion_kudo_2"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colon_lesion_kudo_3s"
12
+ - model: endoreg_db.finding_classification_choice
13
+ fields:
14
+ name: "colon_lesion_kudo_3l"
15
+ - model: endoreg_db.finding_classification_choice
16
+ fields:
17
+ name: "colon_lesion_kudo_4"
18
+ - model: endoreg_db.finding_classification_choice
19
+ fields:
20
+ name: "colon_lesion_kudo_5i"
21
+ - model: endoreg_db.finding_classification_choice
22
+ fields:
23
+ name: "colon_lesion_kudo_5n"
@@ -0,0 +1,15 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_lst_granular_homogeneous"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colon_lesion_lst_granular_nodular_mixed"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colon_lesion_lst_non_granular_flat_elevated"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "colon_lesion_lst_non_granular_pseudodepressed"
@@ -0,0 +1,17 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_NICE_type_1"
4
+ name_de: "Kolonläsion - NICE Typ 1"
5
+ name_en: "Colon lesion - NICE type 1"
6
+
7
+ - model: endoreg_db.finding_classification_choice
8
+ fields:
9
+ name: "colon_lesion_NICE_type_2"
10
+ name_de: "Kolonläsion - NICE Typ 2"
11
+ name_en: "Colon lesion - NICE type 2"
12
+
13
+ - model: endoreg_db.finding_classification_choice
14
+ fields:
15
+ name: "colon_lesion_NICE_type_3"
16
+ name_de: "Kolonläsion - NICE Typ 3"
17
+ name_en: "Colon lesion - NICE type 3"
@@ -0,0 +1,57 @@
1
+ - model: endoreg_db.finiding_morphology_classification_choice
2
+ fields:
3
+ name: "colon_paris_Is"
4
+ name_de: "Kolonläsion Formklassifikation (Paris Is)"
5
+ name_en: "Colon Lesion Shape Classification (Paris Is)"
6
+ description: "Shape classification for colon lesions (Paris Is)"
7
+
8
+ - model: endoreg_db.finiding_morphology_classification_choice
9
+ fields:
10
+ name: "colon_paris_Ip"
11
+ name_de: "Kolonläsion Formklassifikation (Paris Ip)"
12
+ name_en: "Colon Lesion Shape Classification (Paris Ip)"
13
+ description: "Shape classification for colon lesions (Paris Ip)"
14
+
15
+ - model: endoreg_db.finiding_morphology_classification_choice
16
+ fields:
17
+ name: "colon_paris_IIa"
18
+ name_de: "Kolonläsion Formklassifikation (Paris IIa)"
19
+ name_en: "Colon Lesion Shape Classification (Paris IIa)"
20
+ description: "Shape classification for colon lesions (Paris IIa)"
21
+
22
+ - model: endoreg_db.finiding_morphology_classification_choice
23
+ fields:
24
+ name: "colon_paris_IIb"
25
+ name_de: "Kolonläsion Formklassifikation (Paris IIb)"
26
+ name_en: "Colon Lesion Shape Classification (Paris IIb)"
27
+ description: "Shape classification for colon lesions (Paris IIb)"
28
+
29
+ - model: endoreg_db.finiding_morphology_classification_choice
30
+ fields:
31
+ name: "colon_paris_IIc"
32
+ name_de: "Kolonläsion Formklassifikation (Paris IIc)"
33
+ name_en: "Colon Lesion Shape Classification (Paris IIc)"
34
+ description: "Shape classification for colon lesions (Paris IIc)"
35
+
36
+ - model: endoreg_db.finiding_morphology_classification_choice
37
+ fields:
38
+ name: "colon_paris_III"
39
+ name_de: "Kolonläsion Formklassifikation (Paris III)"
40
+ name_en: "Colon Lesion Shape Classification (Paris III)"
41
+ description: "Shape classification for colon lesions (Paris III)"
42
+
43
+ # IIa+IIc
44
+ - model: endoreg_db.finiding_morphology_classification_choice
45
+ fields:
46
+ name: "colon_paris_IIa_IIc"
47
+ name_de: "Kolonläsion Formklassifikation (Paris IIa+IIc)"
48
+ name_en: "Colon Lesion Shape Classification (Paris IIa+IIc)"
49
+ description: "Shape classification for colon lesions (Paris IIa+IIc)"
50
+
51
+ # IIb+IIc
52
+ - model: endoreg_db.finiding_morphology_classification_choice
53
+ fields:
54
+ name: "colon_paris_IIb_IIc"
55
+ name_de: "Kolonläsion Formklassifikation (Paris IIb+IIc)"
56
+ name_en: "Colon Lesion Shape Classification (Paris IIb+IIc)"
57
+ description: "Shape classification for colon lesions (Paris IIb+IIc)"
@@ -0,0 +1,49 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_planarity_flat"
4
+ name_de: "Kolonläsion - Planarität flach"
5
+ name_en: "Colon lesion - planarity flat"
6
+ description: "Category for flat lesions"
7
+
8
+ - model: endoreg_db.finding_classification_choice
9
+ fields:
10
+ name: "colon_lesion_planarity_flat_elevated"
11
+ name_de: "Kolonläsion - Planarität flach-erhaben"
12
+ name_en: "Colon lesion - planarity flat-elevated"
13
+ description: "Category for flat-elevated lesions (surface +/- 2 mm)"
14
+
15
+ - model: endoreg_db.finding_classification_choice
16
+ fields:
17
+ name: "colon_lesion_planarity_sessile"
18
+ name_de: "Kolonläsion - Planarität sessil"
19
+ name_en: "Colon lesion - planarity sessile"
20
+ description: "Category for sessile lesions (surface > 2 mm)"
21
+
22
+ - model: endoreg_db.finding_classification_choice
23
+ fields:
24
+ name: "colon_lesion_planarity_pedunculated"
25
+ name_de: "Kolonläsion - Planarität gestielt"
26
+ name_en: "Colon lesion - planarity pedunculated"
27
+ description: "Category for pedunculated lesions (surface on a stalk)"
28
+
29
+ # excavated
30
+ - model: endoreg_db.finding_classification_choice
31
+ fields:
32
+ name: "colon_lesion_planarity_excavated"
33
+ name_de: "Kolonläsion - Planarität exkaviert"
34
+ name_en: "Colon lesion - planarity excavated"
35
+ description: "Category for excavated lesions (surface below surrounding mucosa)"
36
+ subcategories:
37
+ description:
38
+ choices: ["unspecified", "focal", "diffuse", "total"]
39
+ probability: [0.5, 0.2, 0.2, 0.1]
40
+ default: "unspecified"
41
+ required: true
42
+
43
+ - model: endoreg_db.finding_classification_choice
44
+ fields:
45
+ name: "colon_lesion_planarity_unknown"
46
+ name_de: "Kolonläsion - Planarität unbekannt"
47
+ name_en: "Colon lesion - planarity unknown"
48
+
49
+
@@ -0,0 +1,14 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_sano_1"
4
+
5
+ - model: endoreg_db.finding_classification_choice
6
+ fields:
7
+ name: "colon_lesion_sano_2"
8
+
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colon_lesion_sano_3a"
12
+ - model: endoreg_db.finding_classification_choice
13
+ fields:
14
+ name: "colon_lesion_sano_3b"
@@ -0,0 +1,36 @@
1
+ - model: endoreg_db.finding_classification_choice
2
+ fields:
3
+ name: "colon_lesion_surface_intact"
4
+ name_de: "Kolonläsion - Oberfläche intakt"
5
+ name_en: "Colon lesion - surface intact"
6
+ description: "Category for intact lesion surfaces"
7
+
8
+ # eroded
9
+ - model: endoreg_db.finding_classification_choice
10
+ fields:
11
+ name: "colon_lesion_surface_eroded"
12
+ name_de: "Kolonläsion - Oberfläche erodiert"
13
+ name_en: "Colon lesion - surface eroded"
14
+ description: "Category for eroded lesion surfaces"
15
+ subcategories:
16
+ description:
17
+ choices: ["unspecified", "focal", "diffuse"]
18
+ default: "unspecified"
19
+ probability: [0.5, 0.2, 0.3]
20
+ required: true
21
+
22
+
23
+ # ulcerated
24
+ - model: endoreg_db.finding_classification_choice
25
+ fields:
26
+ name: "colon_lesion_surface_ulcerated"
27
+ name_de: "Kolonläsion - Oberfläche ulzeriert"
28
+ name_en: "Colon lesion - surface ulcerated"
29
+ description: "Category for ulcerated lesion surfaces"
30
+ subcategories:
31
+ description:
32
+ choices: ["unspecified", "focal", "diffuse"]
33
+ default: "unspecified"
34
+ probability: [0.5, 0.2, 0.3]
35
+ required: true
36
+