endoreg-db 0.8.4.4__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 (372) 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_ai_model_data.py +2 -1
  117. endoreg_db/management/commands/load_center_data.py +12 -12
  118. endoreg_db/management/commands/load_requirement_data.py +60 -31
  119. endoreg_db/management/commands/load_requirement_set_tags.py +95 -0
  120. endoreg_db/management/commands/setup_endoreg_db.py +14 -10
  121. endoreg_db/management/commands/storage_management.py +271 -203
  122. endoreg_db/migrations/0001_initial.py +1799 -1300
  123. endoreg_db/migrations/0002_requirementset_depends_on.py +18 -0
  124. endoreg_db/migrations/_old/0001_initial.py +1857 -0
  125. endoreg_db/migrations/_old/0004_employee_city_employee_post_code_employee_street_and_more.py +68 -0
  126. endoreg_db/migrations/_old/0004_remove_casetemplate_rules_and_more.py +77 -0
  127. endoreg_db/migrations/_old/0005_merge_20251111_1003.py +14 -0
  128. endoreg_db/migrations/_old/0006_sensitivemeta_anonymized_text_and_more.py +68 -0
  129. endoreg_db/migrations/_old/0007_remove_rule_attribute_dtype_remove_rule_rule_type_and_more.py +89 -0
  130. endoreg_db/migrations/_old/0008_remove_event_event_classification_and_more.py +27 -0
  131. endoreg_db/migrations/_old/0009_alter_modelmeta_options_and_more.py +21 -0
  132. endoreg_db/models/__init__.py +78 -123
  133. endoreg_db/models/administration/__init__.py +21 -42
  134. endoreg_db/models/administration/ai/active_model.py +2 -2
  135. endoreg_db/models/administration/ai/ai_model.py +7 -6
  136. endoreg_db/models/administration/case/__init__.py +1 -15
  137. endoreg_db/models/administration/case/case.py +3 -3
  138. endoreg_db/models/administration/case/case_template/__init__.py +2 -14
  139. endoreg_db/models/administration/case/case_template/case_template.py +2 -124
  140. endoreg_db/models/administration/case/case_template/case_template_rule.py +2 -268
  141. endoreg_db/models/administration/case/case_template/case_template_rule_value.py +2 -85
  142. endoreg_db/models/administration/case/case_template/case_template_type.py +2 -25
  143. endoreg_db/models/administration/center/center.py +33 -19
  144. endoreg_db/models/administration/center/center_product.py +12 -9
  145. endoreg_db/models/administration/center/center_resource.py +25 -19
  146. endoreg_db/models/administration/center/center_shift.py +21 -17
  147. endoreg_db/models/administration/center/center_waste.py +16 -8
  148. endoreg_db/models/administration/person/__init__.py +2 -0
  149. endoreg_db/models/administration/person/employee/employee.py +10 -5
  150. endoreg_db/models/administration/person/employee/employee_qualification.py +9 -4
  151. endoreg_db/models/administration/person/employee/employee_type.py +12 -6
  152. endoreg_db/models/administration/person/examiner/examiner.py +13 -11
  153. endoreg_db/models/administration/person/patient/__init__.py +2 -0
  154. endoreg_db/models/administration/person/patient/patient.py +103 -100
  155. endoreg_db/models/administration/person/patient/patient_external_id.py +37 -0
  156. endoreg_db/models/administration/person/person.py +4 -0
  157. endoreg_db/models/administration/person/profession/__init__.py +8 -4
  158. endoreg_db/models/administration/person/user/portal_user_information.py +11 -7
  159. endoreg_db/models/administration/product/product.py +20 -15
  160. endoreg_db/models/administration/product/product_material.py +17 -18
  161. endoreg_db/models/administration/product/product_weight.py +12 -8
  162. endoreg_db/models/administration/product/reference_product.py +23 -55
  163. endoreg_db/models/administration/qualification/qualification.py +7 -3
  164. endoreg_db/models/administration/qualification/qualification_type.py +7 -3
  165. endoreg_db/models/administration/shift/scheduled_days.py +8 -5
  166. endoreg_db/models/administration/shift/shift.py +16 -12
  167. endoreg_db/models/administration/shift/shift_type.py +23 -31
  168. endoreg_db/models/label/__init__.py +7 -8
  169. endoreg_db/models/label/annotation/image_classification.py +10 -9
  170. endoreg_db/models/label/annotation/video_segmentation_annotation.py +8 -5
  171. endoreg_db/models/label/label.py +15 -15
  172. endoreg_db/models/label/label_set.py +19 -6
  173. endoreg_db/models/label/label_type.py +1 -1
  174. endoreg_db/models/label/label_video_segment/_create_from_video.py +5 -8
  175. endoreg_db/models/label/label_video_segment/label_video_segment.py +76 -102
  176. endoreg_db/models/label/video_segmentation_label.py +4 -0
  177. endoreg_db/models/label/video_segmentation_labelset.py +4 -3
  178. endoreg_db/models/media/frame/frame.py +22 -22
  179. endoreg_db/models/media/pdf/raw_pdf.py +249 -177
  180. endoreg_db/models/media/pdf/report_file.py +25 -29
  181. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +30 -46
  182. endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +23 -7
  183. endoreg_db/models/media/video/__init__.py +1 -0
  184. endoreg_db/models/media/video/create_from_file.py +48 -56
  185. endoreg_db/models/media/video/pipe_1.py +30 -33
  186. endoreg_db/models/media/video/pipe_2.py +8 -9
  187. endoreg_db/models/media/video/video_file.py +359 -204
  188. endoreg_db/models/media/video/video_file_ai.py +288 -74
  189. endoreg_db/models/media/video/video_file_anonymize.py +38 -38
  190. endoreg_db/models/media/video/video_file_frames/__init__.py +3 -1
  191. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +6 -8
  192. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +7 -9
  193. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +9 -8
  194. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +38 -45
  195. endoreg_db/models/media/video/video_file_frames/_get_frame.py +6 -8
  196. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +4 -18
  197. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +4 -3
  198. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +7 -6
  199. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +6 -8
  200. endoreg_db/models/media/video/video_file_frames/_get_frames.py +6 -8
  201. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +15 -25
  202. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +26 -23
  203. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +23 -14
  204. endoreg_db/models/media/video/video_file_io.py +109 -62
  205. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +3 -3
  206. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +5 -3
  207. endoreg_db/models/media/video/video_file_meta/get_fps.py +37 -34
  208. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +19 -25
  209. endoreg_db/models/media/video/video_file_meta/text_meta.py +41 -38
  210. endoreg_db/models/media/video/video_file_meta/video_meta.py +14 -7
  211. endoreg_db/models/media/video/video_file_segments.py +24 -17
  212. endoreg_db/models/media/video/video_metadata.py +19 -35
  213. endoreg_db/models/media/video/video_processing.py +96 -95
  214. endoreg_db/models/medical/contraindication/__init__.py +13 -3
  215. endoreg_db/models/medical/disease.py +22 -16
  216. endoreg_db/models/medical/event.py +31 -18
  217. endoreg_db/models/medical/examination/__init__.py +13 -6
  218. endoreg_db/models/medical/examination/examination.py +17 -18
  219. endoreg_db/models/medical/examination/examination_indication.py +26 -25
  220. endoreg_db/models/medical/examination/examination_time.py +16 -6
  221. endoreg_db/models/medical/examination/examination_time_type.py +9 -6
  222. endoreg_db/models/medical/examination/examination_type.py +3 -4
  223. endoreg_db/models/medical/finding/finding.py +38 -39
  224. endoreg_db/models/medical/finding/finding_classification.py +37 -48
  225. endoreg_db/models/medical/finding/finding_intervention.py +27 -22
  226. endoreg_db/models/medical/finding/finding_type.py +13 -12
  227. endoreg_db/models/medical/hardware/endoscope.py +20 -26
  228. endoreg_db/models/medical/hardware/endoscopy_processor.py +2 -2
  229. endoreg_db/models/medical/laboratory/lab_value.py +62 -91
  230. endoreg_db/models/medical/medication/medication.py +22 -10
  231. endoreg_db/models/medical/medication/medication_indication.py +29 -3
  232. endoreg_db/models/medical/medication/medication_indication_type.py +25 -14
  233. endoreg_db/models/medical/medication/medication_intake_time.py +31 -19
  234. endoreg_db/models/medical/medication/medication_schedule.py +27 -16
  235. endoreg_db/models/medical/organ/__init__.py +15 -12
  236. endoreg_db/models/medical/patient/medication_examples.py +1 -5
  237. endoreg_db/models/medical/patient/patient_disease.py +20 -23
  238. endoreg_db/models/medical/patient/patient_event.py +19 -22
  239. endoreg_db/models/medical/patient/patient_examination.py +48 -54
  240. endoreg_db/models/medical/patient/patient_examination_indication.py +16 -14
  241. endoreg_db/models/medical/patient/patient_finding.py +122 -139
  242. endoreg_db/models/medical/patient/patient_finding_classification.py +44 -49
  243. endoreg_db/models/medical/patient/patient_finding_intervention.py +8 -19
  244. endoreg_db/models/medical/patient/patient_lab_sample.py +28 -23
  245. endoreg_db/models/medical/patient/patient_lab_value.py +82 -89
  246. endoreg_db/models/medical/patient/patient_medication.py +27 -38
  247. endoreg_db/models/medical/patient/patient_medication_schedule.py +28 -36
  248. endoreg_db/models/medical/risk/risk.py +7 -6
  249. endoreg_db/models/medical/risk/risk_type.py +8 -5
  250. endoreg_db/models/metadata/model_meta.py +60 -29
  251. endoreg_db/models/metadata/model_meta_logic.py +139 -18
  252. endoreg_db/models/metadata/pdf_meta.py +19 -24
  253. endoreg_db/models/metadata/sensitive_meta.py +102 -85
  254. endoreg_db/models/metadata/sensitive_meta_logic.py +383 -43
  255. endoreg_db/models/metadata/video_meta.py +51 -31
  256. endoreg_db/models/metadata/video_prediction_logic.py +16 -23
  257. endoreg_db/models/metadata/video_prediction_meta.py +29 -33
  258. endoreg_db/models/other/distribution/date_value_distribution.py +89 -29
  259. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +21 -5
  260. endoreg_db/models/other/distribution/numeric_value_distribution.py +114 -53
  261. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +4 -3
  262. endoreg_db/models/other/emission/emission_factor.py +18 -8
  263. endoreg_db/models/other/gender.py +10 -5
  264. endoreg_db/models/other/information_source.py +25 -25
  265. endoreg_db/models/other/material.py +9 -5
  266. endoreg_db/models/other/resource.py +6 -4
  267. endoreg_db/models/other/tag.py +10 -5
  268. endoreg_db/models/other/transport_route.py +13 -8
  269. endoreg_db/models/other/unit.py +10 -6
  270. endoreg_db/models/other/waste.py +6 -5
  271. endoreg_db/models/requirement/requirement.py +580 -272
  272. endoreg_db/models/requirement/requirement_error.py +85 -0
  273. endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +268 -0
  274. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +3 -6
  275. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +90 -64
  276. endoreg_db/models/requirement/requirement_operator.py +36 -33
  277. endoreg_db/models/requirement/requirement_set.py +74 -57
  278. endoreg_db/models/state/__init__.py +4 -4
  279. endoreg_db/models/state/abstract.py +2 -2
  280. endoreg_db/models/state/anonymization.py +12 -0
  281. endoreg_db/models/state/audit_ledger.py +46 -47
  282. endoreg_db/models/state/label_video_segment.py +9 -0
  283. endoreg_db/models/state/raw_pdf.py +40 -46
  284. endoreg_db/models/state/sensitive_meta.py +6 -2
  285. endoreg_db/models/state/video.py +58 -53
  286. endoreg_db/models/upload_job.py +32 -55
  287. endoreg_db/models/utils.py +1 -2
  288. endoreg_db/root_urls.py +21 -2
  289. endoreg_db/serializers/__init__.py +26 -57
  290. endoreg_db/serializers/anonymization.py +18 -10
  291. endoreg_db/serializers/meta/report_meta.py +1 -1
  292. endoreg_db/serializers/meta/sensitive_meta_detail.py +63 -118
  293. endoreg_db/serializers/misc/__init__.py +1 -1
  294. endoreg_db/serializers/misc/file_overview.py +33 -91
  295. endoreg_db/serializers/misc/{vop_patient_data.py → sensitive_patient_data.py} +1 -1
  296. endoreg_db/serializers/requirements/requirement_sets.py +92 -22
  297. endoreg_db/serializers/video/segmentation.py +2 -1
  298. endoreg_db/serializers/video/video_processing_history.py +20 -5
  299. endoreg_db/serializers/video_examination.py +198 -0
  300. endoreg_db/services/anonymization.py +75 -73
  301. endoreg_db/services/lookup_service.py +256 -73
  302. endoreg_db/services/lookup_store.py +174 -30
  303. endoreg_db/services/pdf_import.py +711 -310
  304. endoreg_db/services/storage_aware_video_processor.py +140 -114
  305. endoreg_db/services/video_import.py +266 -117
  306. endoreg_db/urls/__init__.py +27 -27
  307. endoreg_db/urls/label_video_segments.py +2 -0
  308. endoreg_db/urls/media.py +108 -66
  309. endoreg_db/urls/root_urls.py +29 -0
  310. endoreg_db/utils/__init__.py +15 -5
  311. endoreg_db/utils/ai/multilabel_classification_net.py +116 -20
  312. endoreg_db/utils/case_generator/__init__.py +3 -0
  313. endoreg_db/utils/dataloader.py +88 -16
  314. endoreg_db/utils/defaults/set_default_center.py +32 -0
  315. endoreg_db/utils/names.py +22 -16
  316. endoreg_db/utils/permissions.py +2 -1
  317. endoreg_db/utils/pipelines/process_video_dir.py +1 -1
  318. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +414 -127
  319. endoreg_db/utils/setup_config.py +8 -5
  320. endoreg_db/utils/storage.py +115 -0
  321. endoreg_db/utils/validate_endo_roi.py +8 -2
  322. endoreg_db/utils/video/ffmpeg_wrapper.py +184 -188
  323. endoreg_db/views/__init__.py +5 -12
  324. endoreg_db/views/anonymization/media_management.py +198 -163
  325. endoreg_db/views/anonymization/overview.py +4 -1
  326. endoreg_db/views/anonymization/validate.py +174 -40
  327. endoreg_db/views/media/__init__.py +2 -0
  328. endoreg_db/views/media/pdf_media.py +131 -150
  329. endoreg_db/views/media/sensitive_metadata.py +46 -6
  330. endoreg_db/views/media/video_media.py +89 -82
  331. endoreg_db/views/media/video_segments.py +187 -260
  332. endoreg_db/views/meta/sensitive_meta_detail.py +0 -63
  333. endoreg_db/views/patient/patient.py +5 -4
  334. endoreg_db/views/pdf/__init__.py +5 -8
  335. endoreg_db/views/pdf/pdf_stream.py +186 -0
  336. endoreg_db/views/pdf/pdf_stream_views.py +0 -127
  337. endoreg_db/views/pdf/reimport.py +86 -91
  338. endoreg_db/views/requirement/evaluate.py +188 -187
  339. endoreg_db/views/requirement/lookup.py +186 -288
  340. endoreg_db/views/requirement/requirement_utils.py +89 -0
  341. endoreg_db/views/video/__init__.py +0 -4
  342. endoreg_db/views/video/correction.py +2 -2
  343. endoreg_db/views/video/video_examination_viewset.py +202 -289
  344. {endoreg_db-0.8.4.4.dist-info → endoreg_db-0.8.8.0.dist-info}/METADATA +7 -3
  345. {endoreg_db-0.8.4.4.dist-info → endoreg_db-0.8.8.0.dist-info}/RECORD +350 -255
  346. endoreg_db/models/administration/permissions/__init__.py +0 -44
  347. endoreg_db/models/media/video/refactor_plan.md +0 -0
  348. endoreg_db/models/media/video/video_file_frames.py +0 -0
  349. endoreg_db/models/metadata/frame_ocr_result.py +0 -0
  350. endoreg_db/models/rule/__init__.py +0 -13
  351. endoreg_db/models/rule/rule.py +0 -27
  352. endoreg_db/models/rule/rule_applicator.py +0 -224
  353. endoreg_db/models/rule/rule_attribute_dtype.py +0 -17
  354. endoreg_db/models/rule/rule_type.py +0 -20
  355. endoreg_db/models/rule/ruleset.py +0 -17
  356. endoreg_db/serializers/video/video_metadata.py +0 -105
  357. endoreg_db/urls/report.py +0 -48
  358. endoreg_db/urls/video.py +0 -61
  359. endoreg_db/utils/case_generator/case_generator.py +0 -159
  360. endoreg_db/utils/case_generator/utils.py +0 -30
  361. endoreg_db/views/pdf/pdf_media.py +0 -239
  362. endoreg_db/views/report/__init__.py +0 -9
  363. endoreg_db/views/report/report_list.py +0 -112
  364. endoreg_db/views/report/report_with_secure_url.py +0 -28
  365. endoreg_db/views/report/start_examination.py +0 -7
  366. endoreg_db/views/video/video_media.py +0 -158
  367. endoreg_db/views.py +0 -0
  368. /endoreg_db/data/{requirement_set → _examples/requirement_set}/endoscopy_bleeding_risk.yaml +0 -0
  369. /endoreg_db/migrations/{0002_add_video_correction_models.py → _old/0002_add_video_correction_models.py} +0 -0
  370. /endoreg_db/migrations/{0003_add_center_display_name.py → _old/0003_add_center_display_name.py} +0 -0
  371. {endoreg_db-0.8.4.4.dist-info → endoreg_db-0.8.8.0.dist-info}/WHEEL +0 -0
  372. {endoreg_db-0.8.4.4.dist-info → endoreg_db-0.8.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,49 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "colonoscopy_default_polyp_resection"
4
+ requirement_types:
5
+ - "patient_finding"
6
+ operators:
7
+ - "models_match_any"
8
+ finding_interventions:
9
+ - "colon_lesion_biopsy"
10
+ - "colon_lesion_polypectomy_cold_snare"
11
+ - "colon_lesion_polypectomy_hot_snare"
12
+ - "colon_lesion_emr"
13
+ - "colon_lesion_esd"
14
+ - "colon_lesion_eftr"
15
+
16
+ - model: endoreg_db.requirement
17
+ fields:
18
+ name: "colonoscopy_default_polyp_no_resection"
19
+ requirement_types:
20
+ - "patient_finding"
21
+ operators:
22
+ - "models_match_none"
23
+ finding_interventions:
24
+ - "colon_lesion_biopsy"
25
+ - "colon_lesion_polypectomy_cold_snare"
26
+ - "colon_lesion_polypectomy_hot_snare"
27
+ - "colon_lesion_emr"
28
+ - "colon_lesion_esd"
29
+ - "colon_lesion_eftr"
30
+ # - model: endoreg_db.requirement
31
+ # fields:
32
+ # name: "colonoscopy_finding_colon_polyp_no_resection_reason"
33
+ # requirement_types:
34
+ # - "patient_finding"
35
+ # operators:
36
+ # - "models_match_any"
37
+ # finding_classifications:
38
+ # - "colon_lesion_no_resection_reason"
39
+
40
+ # - model: endoreg_db.requirement
41
+ # fields:
42
+ # name: "colonoscopy_polyp_clip_application"
43
+ # requirement_types:
44
+ # - "patient_finding"
45
+ # operators:
46
+ # - "models_match_any"
47
+ # finding_interventions:
48
+ # - "colon_lesion_over_the_scope_clip"
49
+ # - "colon_lesion_clip"
@@ -0,0 +1,49 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "colonoscopy_default_size"
4
+ requirement_types:
5
+ - "patient_finding"
6
+ operators:
7
+ - "models_match_any"
8
+ finding_classifications:
9
+ - "colon_lesion_size_mm"
10
+ - "colon_lesion_size_categorical"
11
+
12
+ - model: endoreg_db.requirement
13
+ fields:
14
+ name: "colonoscopy_default_location"
15
+ requirement_types:
16
+ - "patient_finding"
17
+ operators:
18
+ - "models_match_any"
19
+ finding_classifications:
20
+ - "colonoscopy_location_default"
21
+
22
+ - model: endoreg_db.requirement
23
+ fields:
24
+ name: "colonoscopy_default_polyp_morphology"
25
+ operators:
26
+ - "models_match_any"
27
+ requirement_types:
28
+ - "patient_finding"
29
+ finding_classifications:
30
+ - "colon_lesion_paris"
31
+ - "colon_lesion_lst"
32
+ - "colon_lesion_planarity_default"
33
+
34
+ - model: endoreg_db.requirement
35
+ fields:
36
+ name: "colonoscopy_default_polyp_histology"
37
+ requirement_types:
38
+ - "patient_finding"
39
+ operators:
40
+ - "models_match_all"
41
+ finding_classifications:
42
+ - "colonoscopy_polyp_histology"
43
+ - "colonoscopy_polyp_histology_dysplasia"
44
+ - "colonoscopy_histology_dignity"
45
+ - "colonoscopy_default_histology_in_sano"
46
+
47
+ - models: endoreg_db.requirement
48
+ fields:
49
+ name: "colonoscopy_finding_colon_polyp_histo_expected"
@@ -2,7 +2,7 @@
2
2
  fields:
3
3
  name: "patient_gender_generic"
4
4
  name_de: "Patientengeschlecht (männlich/weiblich)"
5
- name_en: "Patient gender generic"
5
+ name_en: "Patient gender generic"
6
6
  description: "Patient gender (generic)"
7
7
  requirement_set_type: "any"
8
8
  requirements:
@@ -11,17 +11,35 @@
11
11
 
12
12
  - models: endoreg_db.requirement_set
13
13
  fields:
14
- name: "basic_lab_values_normal"
15
- name_de: "Basis-Labortests (Unauffällig)"
16
- name_en: "Basic Lab Tests (Normal)"
17
- description: "Basic lab tests (normal)"
14
+ name: "patient_names_generic"
15
+ name_de: "Patientennamen (Vorname, Nachname)"
16
+ name_en: "Patient names generic"
17
+ description: "Patient names (generic)"
18
18
  requirement_set_type: "all"
19
19
  requirements:
20
- - "lab_value_hb_normal"
21
- - "lab_value_leukocytes_normal"
22
- - "lab_value_platelets_normal"
23
- - "lab_value_creatinine_normal"
24
- - "lab_value_inr_normal"
20
+ - patient_first_name #TODO
21
+ - patient_last_name #TODO
22
+
23
+ - models: endoreg_db.requirement_set
24
+ fields:
25
+ name: "patient_dob_generic"
26
+ name_de: "Patienten-Geburtsdatum"
27
+ name_en: "Patient date of birth generic"
28
+ description: "Patient date of birth (generic)"
29
+ requirement_set_type: "all"
30
+ requirements:
31
+ - patient_date_of_birth_present #TODO
32
+
33
+ - models: endoreg_db.requirement_set
34
+ fields:
35
+ name: "colonoscopy_basic_patient_history"
36
+ name_de: "Koloskopie - Basis Patientenanamnese"
37
+ name_en: "Colonoscopy - Basic Patient History"
38
+ description: "Colonoscopy - Basic Patient History"
39
+ requirement_set_type: "all"
40
+ requirements:
41
+ - "patient_history_last_colonoscopy_known" #TODO
42
+ - "patient_history_previous_bowel_surgery_known" #TODO
25
43
 
26
44
  - models: endoreg_db.requirement_set
27
45
  fields:
@@ -34,7 +52,6 @@
34
52
  - "patient_age_gte_18"
35
53
  - "patient_age_lte_100"
36
54
 
37
- # - models: endoreg_db.requirement_set
38
55
  - models: endoreg_db.requirement_set
39
56
  fields:
40
57
  name: "generic_patient"
@@ -45,4 +62,6 @@
45
62
  links_to_sets:
46
63
  - "patient_age_generic"
47
64
  - "patient_gender_generic"
48
- - "basic_lab_values_normal"
65
+ - "basic_lab_values_normal"
66
+
67
+ -
@@ -0,0 +1,13 @@
1
+ - models: endoreg_db.requirement_set
2
+ fields:
3
+ name: "basic_lab_values_normal"
4
+ name_de: "Basis-Labortests (Unauffällig)"
5
+ name_en: "Basic Lab Tests (Normal)"
6
+ description: "Basic lab tests (normal)"
7
+ requirement_set_type: "all"
8
+ requirements:
9
+ - "lab_value_hb_normal"
10
+ - "lab_value_leukocytes_normal"
11
+ - "lab_value_platelets_normal"
12
+ - "lab_value_creatinine_normal"
13
+ - "lab_value_inr_normal"
@@ -0,0 +1,46 @@
1
+ - models: endoreg_db.requirement_set
2
+ fields:
3
+ name: "endoscopy_bleeding_risk_high"
4
+ name_de: "Endoskopie - Blutungsrisiko: hoch"
5
+ name_en: "Endoscopy - Bleeding Risk: High"
6
+ description: "Endoskopie - Blutungsrisiko: hoch"
7
+ # linked_sets: [] # if this rule depends on others
8
+ requirement_set_type: "any"
9
+ requirements:
10
+ - "endoscopy_intervention_bleeding_risk_high"
11
+
12
+ - models: endoreg_db.requirement_set
13
+ fields:
14
+ name: "endoscopy_bleeding_risk_low"
15
+ name_de: "Endoskopie - Blutungsrisiko: niedrig"
16
+ name_en: "Endoscopy - Bleeding Risk: Low"
17
+ description: "Endoskopie - Blutungsrisiko: niedrig"
18
+ # linked_sets: [] # if this rule depends on others
19
+ requirement_set_type: "any"
20
+ requirements:
21
+ - "endoscopy_intervention_bleeding_risk_low"
22
+ links_to_sets: []
23
+
24
+ - models: endoreg_db.requirement_set
25
+ fields:
26
+ name: "patient_medication_indication_anticoagulation"
27
+ name_de: "Patientenmedikation - Antikoagulation"
28
+ name_en: "Patient Medication - Anticoagulation"
29
+ description: "Patient medication - anticoagulation"
30
+ requirement_set_type: "any"
31
+ requirements:
32
+ - "indication_non_valvular_af_apixaban_is_defined_in_requirement"
33
+ - "indication_after_hip_apixaban_is_defined_in_requirement"
34
+ - "indication_after_knee_apixaban_is_defined_in_requirement"
35
+
36
+ - models: endoreg_db.requirement_set
37
+ fields:
38
+ name: "high_bleed_risk_endoscopy_w_patient_w_anticoagulation"
39
+ name_de: "Endoskopie - hohes Blutungsrisiko mit generischen Patientenanforderungen"
40
+ name_en: "High Bleed Risk Endoscopy with Generic Patient Requirements"
41
+ description: "High bleed risk endoscopy with generic patient requirements"
42
+ requirement_set_type: "all"
43
+ links_to_sets:
44
+ - "endoscopy_bleeding_risk_high"
45
+ - "generic_patient"
46
+ - "patient_medication_indication_anticoagulation"
@@ -0,0 +1,178 @@
1
+ - models: endoreg_db.requirement_set
2
+ fields:
3
+ name: "coloreg_patient_data"
4
+ name_de: "Coloreg Patientendaten"
5
+ name_en: "Coloreg Patient Data"
6
+ description: "Coloreg Patient Data"
7
+ requirement_set_type: "all"
8
+ requirements: []
9
+ links_to_sets:
10
+ - "patient_gender_generic"
11
+ - "patient_names_generic"
12
+ - "patient_dob_generic"
13
+ - "colonoscopy_basic_patient_history" # includes previous bowel_surgery_known and last_colonoscopy_known
14
+ tags: [] # not tagged as report_mask_requirement_set, only used in top level requirement set
15
+
16
+ - models: endoreg_db.requirement_set
17
+ fields:
18
+ name: "coloreg_examination_data"
19
+ name_de: "Coloreg Untersuchungsdaten"
20
+ name_en: "Coloreg Examination Data"
21
+ description: "Coloreg Examination Data"
22
+ requirement_set_type: "all"
23
+ requirements:
24
+ - "examination_has_indication" #TODO
25
+ - "examination_has_sedation_information" #TODO
26
+ - "examination_bowel_prep_recorded" #TODO
27
+ links_to_sets:
28
+ - "colonoscopy_deepest_insertion_reached_recorded" #TODO # if not cecum or terminal ileum
29
+ tags: []
30
+
31
+ - models: endoreg_db.requirement_set
32
+ fields:
33
+ name: "coloreg_finding_colon_polyp_location_base"
34
+ name_de: "Coloreg Befund Kolon Polyp Lage"
35
+ name_en: "Coloreg Finding Colon Polyp Location"
36
+ description: "Coloreg Finding Colon Polyp Exact Location"
37
+ requirement_set_type: "any"
38
+ requirements:
39
+ - "colon_polyp_has_location" #TODO
40
+
41
+ - models: endoreg_db.requirement_set
42
+ fields:
43
+ name: "coloreg_finding_colon_polyp_rectosigmoid_location"
44
+ name_de: "Coloreg Befund Kolon Polyp Rektosigmoid Lage"
45
+ name_en: "Coloreg Finding Colon Polyp Rectosigmoid Location"
46
+ description: "Coloreg Finding Colon Polyp Rectosigmoid Location"
47
+ requirement_set_type: "all"
48
+ depends_on_sets:
49
+ - "coloreg_finding_colon_polyp_location_base"
50
+ requirements:
51
+ - "coloreg_finding_colon_polyp_rectosigmoid_has_location_cm" #TODO Rektosigmoid muss cm haben
52
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_cm" #TODO nicht rektosigmoid kann cm haben
53
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_colon_segment" #TODO nicht rektosigmoid kann Segment haben
54
+
55
+ - models: endoreg_db.requirement_set
56
+ fields:
57
+ name: "coloreg_finding_colon_polyp_size"
58
+ name_de: "Coloreg Befund Kolon Polyp Größe"
59
+ name_en: "Coloreg Finding Colon Polyp Size"
60
+ description: "Coloreg Finding Colon Polyp Size"
61
+ requirement_set_type: "any"
62
+ requirements:
63
+ - "coloreg_finding_colon_polyp_size_measured_in_mm" #TODO
64
+ - "coloreg_finding_colon_polyp_size_categorical" #TODO
65
+
66
+ - models: endoreg_db.requirement_set
67
+ fields:
68
+ name: "coloreg_polyp_small_morphology"
69
+ name_de: "Coloreg Polyp Klein Morphologie"
70
+ name_en: "Coloreg Polyp Small Morphology"
71
+ description: "Coloreg Polyp Small Morphology"
72
+ requirement_set_type: "all"
73
+ requirements:
74
+ - "colon_polyp_size_smaller_10_mm" # any size_cat is <6 or 6 - 9 mm or size_mm is < 10 mm
75
+ - "colonoscopy_default_polyp_morphology_wli" # any (paris / description)
76
+
77
+ - models: endoreg_db.requirement_set
78
+ fields:
79
+ name: "coloreg_polyp_medium_morphology"
80
+ name_de: "Coloreg Polyp Mittel Morphologie"
81
+ name_en: "Coloreg Polyp Medium Morphology"
82
+ description: "Coloreg Polyp Medium Morphology"
83
+ requirement_set_type: "all"
84
+ requirements:
85
+ - "colon_polyp_size_smaller_10_19_mm" # size cat is 10-19 mm or size_mm between 10 and 19 mm
86
+ - "colonoscopy_default_polyp_morphology_wli"
87
+ - "colonoscopy_nbi_polyp_morphology" # (nice)
88
+
89
+ - models: endoreg_db.requirement_set
90
+ fields:
91
+ name: "coloreg_polyp_large_morphology"
92
+ name_de: "Coloreg Polyp Groß Morphologie"
93
+ name_en: "Coloreg Polyp Large Morphology"
94
+ description: "Coloreg Polyp Large Morphology"
95
+ requirement_set_type: "all"
96
+ requirements:
97
+ - "colon_polyp_size_20_mm_or_larger" # size cat is 20+ mm or size_mm >=20 mm
98
+ - "colonoscopy_nbi_polyp_morphology" # (nice)
99
+ - "colonoscopy_large_polyp_morphology" # ( LST )
100
+
101
+ - models: endoreg_db.requirement_set
102
+ fields:
103
+ name: "coloreg_finding_colon_polyp_morphology"
104
+ name_de: "Coloreg Befund Kolon Polyp Morphologie"
105
+ name_en: "Coloreg Finding Colon Polyp Morphology"
106
+ description: "Coloreg Finding Colon Polyp Morphology"
107
+ requirement_set_type: "any"
108
+ depends_on_sets:
109
+ - "coloreg_finding_colon_polyp_size"
110
+ links_to_sets:
111
+ - "coloreg_polyp_small_morphology"
112
+ - "coloreg_polyp_medium_morphology"
113
+ - "coloreg_polyp_large_morphology"
114
+
115
+ - models: endoreg_db.requirement_set
116
+ fields:
117
+ name: "coloreg_finding_colon_polyp_histology_expected_and_available"
118
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
119
+ name_en: "Coloreg Finding Colon Polyp Histology"
120
+ description: "Coloreg Finding Colon Polyp Histology"
121
+ requirement_set_type: "all"
122
+ requirements:
123
+ - "colonoscopy_default_polyp_resection"
124
+ - "colonoscopy_default_polyp_histology"
125
+
126
+ - models: endoreg_db.requirement_set
127
+ fields:
128
+ name: "coloreg_finding_colon_polyp_histology_not_expected"
129
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
130
+ name_en: "Coloreg Finding Colon Polyp Histology"
131
+ description: "Coloreg Finding Colon Polyp Histology"
132
+ requirement_set_type: "all"
133
+ requirements:
134
+ - "colonoscopy_default_polyp_no_resection"
135
+ # - "colonoscopy_finding_colon_polyp_no_resection_reason"
136
+
137
+ - models: endoreg_db.requirement_set
138
+ fields:
139
+ name: "coloreg_finding_colon_polyp_histology"
140
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
141
+ name_en: "Coloreg Finding Colon Polyp Histology"
142
+ description: "Coloreg Finding Colon Polyp Histology"
143
+ requirement_set_type: "any"
144
+ links_to_sets:
145
+ - "coloreg_finding_colon_polyp_histology_expected_and_available"
146
+ - "coloreg_finding_colon_polyp_histology_not_expected"
147
+
148
+ - models: endoreg_db.requirement_set
149
+ fields:
150
+ name: "coloreg_finding_colon_polyp_base_description"
151
+ name_de: "Coloreg Befund Kolon Polyp"
152
+ name_en: "Coloreg Finding Colon Polyp"
153
+ description: "Coloreg Finding Colon Polyp"
154
+ requirement_set_type: "all"
155
+ requirements: []
156
+ links_to_sets:
157
+ - "coloreg_finding_colon_polyp_size"
158
+ - "coloreg_finding_colon_polyp_location_base"
159
+ - "coloreg_finding_colon_polyp_rectosigmoid_location"
160
+ - "coloreg_finding_colon_polyp_morphology"
161
+ - "coloreg_finding_colon_polyp_histology"
162
+ tags: []
163
+
164
+ - models: endoreg_db.requirement_set
165
+ fields:
166
+ name: "colonoscopy_coloreg"
167
+ name_de: "Koloskopie Coloreg"
168
+ name_en: "Colonoscopy Coloreg"
169
+ description: "Colonoscopy Coloreg"
170
+ requirement_set_type: "all"
171
+ links_to_sets:
172
+ - "coloreg_patient_data"
173
+ - "coloreg_examination_data"
174
+ - "coloreg_finding_colon_polyp_base_description"
175
+ tags:
176
+ - "report_mask_requirement_set"
177
+ reqset_exam_links:
178
+ - "colonoscopy_req_sets"
@@ -0,0 +1,109 @@
1
+ - models: endoreg_db.requirement_set
2
+ fields:
3
+ name: "coloreg_patient_data"
4
+ name_de: "Coloreg Patientendaten"
5
+ name_en: "Coloreg Patient Data"
6
+ description: "Coloreg Patient Data"
7
+ requirement_set_type: "all"
8
+ requirements: []
9
+ links_to_sets:
10
+ - "patient_gender_generic"
11
+ - "patient_names_generic"
12
+ - "patient_dob_generic"
13
+ - "colonoscopy_basic_patient_history" # includes previous bowel_surgery_known and last_colonoscopy_known
14
+ tags: [] # not tagged as report_mask_requirement_set, only used in top level requirement set
15
+
16
+ - models: endoreg_db.requirement_set
17
+ fields:
18
+ name: "coloreg_examination_data"
19
+ name_de: "Coloreg Untersuchungsdaten"
20
+ name_en: "Coloreg Examination Data"
21
+ description: "Coloreg Examination Data"
22
+ requirement_set_type: "all"
23
+ requirements:
24
+ - "examination_has_indication" #TODO
25
+ - "examination_has_sedation_information" #TODO
26
+ - "examination_bowel_prep_recorded" #TODO
27
+ links_to_sets:
28
+ - "colonoscopy_deepest_insertion_reached_recorded" #TODO # if not cecum or terminal ileum
29
+ tags: []
30
+
31
+ - models: endoreg_db.requirement_set
32
+ fields:
33
+ name: "coloreg_finding_colon_polyp_location"
34
+ name_de: "Coloreg Befund Kolon Polyp Lage"
35
+ name_en: "Coloreg Finding Colon Polyp Location"
36
+ description: "Coloreg Finding Colon Polyp Exact Location"
37
+ requirement_set_type: "any"
38
+ requirements:
39
+ - "coloreg_finding_colon_polyp_rectosigmoid_has_location_distance_from_anal_verge" #TODO
40
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_distance_from_anal_verge" #TODO
41
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_colon_segment" #TODO
42
+
43
+ - models: endoreg_db.requirement_set
44
+ fields:
45
+ name: "coloreg_finding_colon_polyp_size"
46
+ name_de: "Coloreg Befund Kolon Polyp Größe"
47
+ name_en: "Coloreg Finding Colon Polyp Size"
48
+ description: "Coloreg Finding Colon Polyp Size"
49
+ requirement_set_type: "any"
50
+ requirements:
51
+ - "coloreg_finding_colon_polyp_size_measured_in_mm" #TODO
52
+ - "coloreg_finding_colon_polyp_size_categorical" #TODO
53
+
54
+ - models: endoreg_db.requirement_set
55
+ fields:
56
+ name: "coloreg_finding_colon_polyp_small_base"
57
+ name_de: "Coloreg Befund Kolon Polyp Klein"
58
+ name_en: "Coloreg Finding Colon Polyp Small"
59
+ description: "Coloreg Finding Colon Polyp Small"
60
+ requirement_set_type: "all"
61
+ requirements:
62
+ - "coloreg_finding_colon_polyp_size_smaller_10_mm" #TODO any; size_cat or size_mm
63
+ - "coloreg_finding_colon_polyp_location" # either location_categorical or location_cm (any)
64
+ - "colonoscopy_default_polyp_morphology_wli" # any (paris / description)
65
+ - "colonoscopy_default_polyp_histology" # all
66
+
67
+ - models: endoreg_db.requirement_set
68
+ fields:
69
+ name: "coloreg_finding_colon_polyp_medium_base"
70
+ name_de: "Coloreg Befund Kolon Polyp Mittel"
71
+ name_en: "Coloreg Finding Colon Polyp Medium"
72
+ description: "Coloreg Finding Colon Polyp Medium"
73
+ requirement_set_type: "all"
74
+ requirements:
75
+ - "coloreg_finding_colon_polyp_size_between_10_and_19_mm" #TODO size >=10mm
76
+ - "coloreg_finding_colon_polyp_location"
77
+ - "colonoscopy_default_polyp_morphology_wli"
78
+ - "colonoscopy_advanced_polyp_morphology"
79
+ - "colonoscopy_default_polyp_histology"
80
+
81
+ - models: endoreg_db.requirement_set
82
+ fields:
83
+ name: "coloreg_finding_colon_polyp_base_description"
84
+ name_de: "Coloreg Befund Kolon Polyp"
85
+ name_en: "Coloreg Finding Colon Polyp"
86
+ description: "Coloreg Finding Colon Polyp"
87
+ requirement_set_type: "any"
88
+ requirements: []
89
+ links_to_sets:
90
+ - "coloreg_finding_colon_polyp_small_base" #TODO size <10mm, requires size, location, paris / description, histology
91
+ - "coloreg_finding_colon_polyp_medium_base" #TODO size >=10mm, requires size, location, paris / description, advanced morphology, histology
92
+ - "coloreg_finding_colon_polyp_large_base" #TODO size >=20mm, requires size, location, LST / description, advanced morphology, histology
93
+ tags: []
94
+
95
+ - models: endoreg_db.requirement_set
96
+ fields:
97
+ name: "colonoscopy_coloreg"
98
+ name_de: "Koloskopie Coloreg"
99
+ name_en: "Colonoscopy Coloreg"
100
+ description: "Colonoscopy Coloreg"
101
+ requirement_set_type: "all"
102
+ links_to_sets:
103
+ - "coloreg_patient_data"
104
+ - "coloreg_examination_data"
105
+ - "coloreg_finding_colon_polyp_base_description"
106
+ tags:
107
+ - "report_mask_requirement_set"
108
+ reqset_exam_links:
109
+ - "colonoscopy_req_sets"
@@ -18,3 +18,24 @@
18
18
  name_de: "keine"
19
19
  name_en: "none"
20
20
  description: "No requirement is true"
21
+
22
+ - model: endoreg_db.requirement_set_type
23
+ fields:
24
+ name: "exactly_1"
25
+ name_de: "genau eins"
26
+ name_en: "exactly one"
27
+ description: "Exactly one requirement is true"
28
+
29
+ - model: endoreg_db.requirement_set_type
30
+ fields:
31
+ name: "at_least_1"
32
+ name_de: "mindestens eins"
33
+ name_en: "at least one"
34
+ description: "At least one requirement is true"
35
+
36
+ - model: endoreg_db.requirement_set_type
37
+ fields:
38
+ name: "at_most_1"
39
+ name_de: "höchstens eins"
40
+ name_en: "at most one"
41
+ description: "At most one requirement is true"
@@ -9,15 +9,15 @@ default_models:
9
9
  huggingface_fallback:
10
10
  enabled: true
11
11
  repo_id: "wg-lux/colo_segmentation_RegNetX800MF_base"
12
- filename: "colo_segmentation_RegNetX800MF_base.ckpt"
12
+ filename: "colo_segmentation_RegNetX800MF_base.safetensors"
13
13
  labelset_name: "multilabel_classification_colonoscopy_default"
14
14
 
15
15
  # Local weights search patterns
16
16
  weights_search_patterns:
17
17
  # Primary model weight filename patterns (supports wildcards)
18
- - "colo_segmentation_RegNetX800MF_*.ckpt"
19
- - "image_multilabel_classification_colonoscopy_default_*.ckpt"
20
- - "*_colonoscopy_*.ckpt"
18
+ - "colo_segmentation_RegNetX800MF_*.safetensors"
19
+ - "image_multilabel_classification_colonoscopy_default_*.safetensors"
20
+ - "*_colonoscopy_*.safetensors"
21
21
 
22
22
  # Search directories for local weights (relative to project root)
23
23
  weights_search_dirs:
@@ -9,3 +9,24 @@
9
9
  - model: endoreg_db.tag
10
10
  fields:
11
11
  name: "colonoscopy_austria"
12
+
13
+ # User role tags for requirement set filtering
14
+ - model: endoreg_db.tag
15
+ fields:
16
+ name: "Gastroenterologist"
17
+
18
+ - model: endoreg_db.tag
19
+ fields:
20
+ name: "Student"
21
+
22
+ - model: endoreg_db.tag
23
+ fields:
24
+ name: "Professor"
25
+
26
+ - model: endoreg_db.tag
27
+ fields:
28
+ name: "Terminology Expert"
29
+
30
+ - model: endoreg_db.tag
31
+ fields:
32
+ name: "Default Prototype"
endoreg_db/exceptions.py CHANGED
@@ -1,3 +1,6 @@
1
+ import logging
2
+
3
+ logger = logging.getLogger(__name__)
1
4
 
2
5
 
3
6
  class InsufficientStorageError(Exception):
@@ -7,7 +10,7 @@ class InsufficientStorageError(Exception):
7
10
  super().__init__(message)
8
11
  self.required_space = required_space
9
12
  self.available_space = available_space
10
-
13
+
11
14
 
12
15
  class TranscodingError(Exception):
13
16
  """Raised when video transcoding fails."""
@@ -16,4 +19,4 @@ class TranscodingError(Exception):
16
19
 
17
20
  class VideoProcessingError(Exception):
18
21
  """Base class for video processing errors."""
19
- pass
22
+ pass
@@ -12,7 +12,7 @@ def load_default_ai_model():
12
12
  This function constructs the path to the default AI model checkpoint and invokes the
13
13
  Django management command `create_multilabel_model_meta` to register the model.
14
14
  """
15
- model_path = f"{ASSET_DIR.as_posix()}/colo_segmentation_RegNetX800MF_6.ckpt"
15
+ model_path = f"{ASSET_DIR.as_posix()}/colo_segmentation_RegNetX800MF_6.safetensors"
16
16
  # Pass arguments individually to call_command
17
17
  call_command(
18
18
  "create_multilabel_model_meta",