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,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
+