endoreg-db 0.8.6.1__py3-none-any.whl → 0.8.8.9__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 (503) 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 +2 -11
  10. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +3 -3
  11. endoreg_db/data/event_classification/data.yaml +4 -0
  12. endoreg_db/data/event_classification_choice/data.yaml +9 -0
  13. endoreg_db/data/examination/examinations/data.yaml +114 -14
  14. endoreg_db/data/examination/time-type/data.yaml +0 -3
  15. endoreg_db/data/examination_indication/endoscopy.yaml +108 -173
  16. endoreg_db/data/examination_indication_classification/endoscopy.yaml +0 -70
  17. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +33 -37
  18. endoreg_db/data/finding/00_generic.yaml +35 -0
  19. endoreg_db/data/finding/00_generic_complication.yaml +9 -0
  20. endoreg_db/data/finding/01_gastroscopy_baseline.yaml +88 -0
  21. endoreg_db/data/finding/01_gastroscopy_observation.yaml +113 -0
  22. endoreg_db/data/finding/02_colonoscopy_baseline.yaml +53 -0
  23. endoreg_db/data/finding/02_colonoscopy_hidden.yaml +119 -0
  24. endoreg_db/data/finding/02_colonoscopy_observation.yaml +152 -0
  25. endoreg_db/data/finding_classification/00_generic.yaml +44 -0
  26. endoreg_db/data/finding_classification/00_generic_histology.yaml +28 -0
  27. endoreg_db/data/finding_classification/00_generic_lesion.yaml +52 -0
  28. endoreg_db/data/finding_classification/02_colonoscopy_baseline.yaml +83 -0
  29. endoreg_db/data/finding_classification/02_colonoscopy_histology.yaml +13 -0
  30. endoreg_db/data/finding_classification/02_colonoscopy_other.yaml +12 -0
  31. endoreg_db/data/finding_classification/02_colonoscopy_polyp.yaml +101 -0
  32. endoreg_db/data/finding_classification_choice/{yes_no_na.yaml → 00_generic.yaml} +5 -1
  33. endoreg_db/data/finding_classification_choice/{examination_setting_generic_types.yaml → 00_generic_baseline.yaml} +10 -2
  34. endoreg_db/data/finding_classification_choice/{complication_generic_types.yaml → 00_generic_complication.yaml} +1 -1
  35. endoreg_db/data/finding_classification_choice/{histology.yaml → 00_generic_histology.yaml} +1 -4
  36. endoreg_db/data/finding_classification_choice/00_generic_lesion.yaml +158 -0
  37. endoreg_db/data/finding_classification_choice/{bowel_preparation.yaml → 02_colonoscopy_bowel_preparation.yaml} +1 -30
  38. endoreg_db/data/finding_classification_choice/{colonoscopy_not_complete_reason.yaml → 02_colonoscopy_generic.yaml} +1 -1
  39. endoreg_db/data/finding_classification_choice/{histology_polyp.yaml → 02_colonoscopy_histology.yaml} +1 -1
  40. endoreg_db/data/finding_classification_choice/{colonoscopy_location.yaml → 02_colonoscopy_location.yaml} +23 -4
  41. endoreg_db/data/finding_classification_choice/02_colonoscopy_other.yaml +34 -0
  42. endoreg_db/data/finding_classification_choice/02_colonoscopy_polyp_advanced_imaging.yaml +76 -0
  43. endoreg_db/data/finding_classification_choice/{colon_lesion_paris.yaml → 02_colonoscopy_polyp_morphology.yaml} +26 -8
  44. endoreg_db/data/finding_classification_choice/02_colonoscopy_size.yaml +27 -0
  45. endoreg_db/data/finding_classification_type/{colonoscopy_basic.yaml → 00_generic.yaml} +18 -13
  46. endoreg_db/data/finding_classification_type/02_colonoscopy.yaml +9 -0
  47. endoreg_db/data/finding_intervention/00_generic_endoscopy.yaml +59 -0
  48. endoreg_db/data/finding_intervention/00_generic_endoscopy_ablation.yaml +44 -0
  49. endoreg_db/data/finding_intervention/00_generic_endoscopy_bleeding.yaml +55 -0
  50. endoreg_db/data/finding_intervention/00_generic_endoscopy_resection.yaml +85 -0
  51. endoreg_db/data/finding_intervention/00_generic_endoscopy_stenosis.yaml +17 -0
  52. endoreg_db/data/finding_intervention/00_generic_endoscopy_stent.yaml +9 -0
  53. endoreg_db/data/finding_intervention/01_gastroscopy.yaml +19 -0
  54. endoreg_db/data/finding_intervention/04_eus.yaml +39 -0
  55. endoreg_db/data/finding_intervention/05_ercp.yaml +3 -0
  56. endoreg_db/data/finding_type/data.yaml +8 -12
  57. endoreg_db/data/requirement/01_patient_data.yaml +93 -0
  58. endoreg_db/data/requirement/old/colon_polyp_intervention.yaml +49 -0
  59. endoreg_db/data/requirement/old/coloreg_colon_polyp.yaml +49 -0
  60. endoreg_db/data/requirement_operator/new_operators.yaml +36 -0
  61. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +29 -12
  62. endoreg_db/data/requirement_set/01_laboratory.yaml +13 -0
  63. endoreg_db/data/requirement_set/{endoscopy_bleeding_risk.yaml → 02_endoscopy_bleeding_risk.yaml} +0 -6
  64. endoreg_db/data/requirement_set/90_coloreg.yaml +190 -0
  65. endoreg_db/data/requirement_set/_old_ +109 -0
  66. endoreg_db/data/requirement_set_type/data.yaml +21 -0
  67. endoreg_db/data/setup_config.yaml +4 -4
  68. endoreg_db/data/tag/requirement_set_tags.yaml +21 -0
  69. endoreg_db/exceptions.py +4 -2
  70. endoreg_db/forms/examination_form.py +1 -1
  71. endoreg_db/helpers/data_loader.py +125 -53
  72. endoreg_db/helpers/default_objects.py +116 -81
  73. endoreg_db/import_files/__init__.py +27 -0
  74. endoreg_db/import_files/context/__init__.py +7 -0
  75. endoreg_db/import_files/context/default_sensitive_meta.py +81 -0
  76. endoreg_db/import_files/context/ensure_center.py +17 -0
  77. endoreg_db/import_files/context/file_lock.py +66 -0
  78. endoreg_db/import_files/context/import_context.py +43 -0
  79. endoreg_db/import_files/context/validate_directories.py +56 -0
  80. endoreg_db/import_files/file_storage/__init__.py +15 -0
  81. endoreg_db/import_files/file_storage/create_report_file.py +76 -0
  82. endoreg_db/import_files/file_storage/create_video_file.py +75 -0
  83. endoreg_db/import_files/file_storage/sensitive_meta_storage.py +39 -0
  84. endoreg_db/import_files/file_storage/state_management.py +400 -0
  85. endoreg_db/import_files/file_storage/storage.py +36 -0
  86. endoreg_db/import_files/import_service.md +26 -0
  87. endoreg_db/import_files/processing/__init__.py +11 -0
  88. endoreg_db/import_files/processing/report_processing/report_anonymization.py +94 -0
  89. endoreg_db/import_files/processing/sensitive_meta_adapter.py +51 -0
  90. endoreg_db/import_files/processing/video_processing/video_anonymization.py +107 -0
  91. endoreg_db/import_files/processing/video_processing/video_cleanup_on_error.py +119 -0
  92. endoreg_db/import_files/pseudonymization/fake.py +52 -0
  93. endoreg_db/import_files/pseudonymization/k_anonymity.py +182 -0
  94. endoreg_db/import_files/pseudonymization/k_pseudonymity.py +128 -0
  95. endoreg_db/import_files/report_import_service.py +141 -0
  96. endoreg_db/import_files/video_import_service.py +150 -0
  97. endoreg_db/management/commands/create_model_meta_from_huggingface.py +21 -10
  98. endoreg_db/management/commands/create_multilabel_model_meta.py +299 -129
  99. endoreg_db/management/commands/import_report.py +130 -65
  100. endoreg_db/management/commands/import_video.py +9 -10
  101. endoreg_db/management/commands/import_video_with_classification.py +2 -2
  102. endoreg_db/management/commands/list_routes.py +18 -0
  103. endoreg_db/management/commands/load_ai_model_data.py +5 -5
  104. endoreg_db/management/commands/load_ai_model_label_data.py +9 -7
  105. endoreg_db/management/commands/load_base_db_data.py +5 -134
  106. endoreg_db/management/commands/load_center_data.py +12 -12
  107. endoreg_db/management/commands/load_contraindication_data.py +14 -16
  108. endoreg_db/management/commands/load_disease_classification_choices_data.py +15 -18
  109. endoreg_db/management/commands/load_disease_classification_data.py +15 -18
  110. endoreg_db/management/commands/load_disease_data.py +25 -28
  111. endoreg_db/management/commands/load_endoscope_data.py +20 -27
  112. endoreg_db/management/commands/load_event_data.py +14 -16
  113. endoreg_db/management/commands/load_examination_data.py +31 -44
  114. endoreg_db/management/commands/load_examination_indication_data.py +20 -21
  115. endoreg_db/management/commands/load_finding_data.py +52 -80
  116. endoreg_db/management/commands/load_information_source.py +21 -23
  117. endoreg_db/management/commands/load_lab_value_data.py +17 -26
  118. endoreg_db/management/commands/load_medication_data.py +13 -12
  119. endoreg_db/management/commands/load_organ_data.py +15 -19
  120. endoreg_db/management/commands/load_pdf_type_data.py +19 -18
  121. endoreg_db/management/commands/load_profession_data.py +14 -17
  122. endoreg_db/management/commands/load_qualification_data.py +20 -23
  123. endoreg_db/management/commands/load_report_reader_flag_data.py +17 -19
  124. endoreg_db/management/commands/load_requirement_data.py +62 -39
  125. endoreg_db/management/commands/load_requirement_set_tags.py +95 -0
  126. endoreg_db/management/commands/load_risk_data.py +7 -6
  127. endoreg_db/management/commands/load_shift_data.py +20 -23
  128. endoreg_db/management/commands/load_tag_data.py +8 -11
  129. endoreg_db/management/commands/load_unit_data.py +17 -19
  130. endoreg_db/management/commands/setup_endoreg_db.py +3 -3
  131. endoreg_db/management/commands/start_filewatcher.py +46 -37
  132. endoreg_db/management/commands/storage_management.py +271 -203
  133. endoreg_db/management/commands/validate_video_files.py +1 -5
  134. endoreg_db/migrations/0001_initial.py +297 -250
  135. endoreg_db/models/__init__.py +78 -123
  136. endoreg_db/models/administration/__init__.py +21 -42
  137. endoreg_db/models/administration/ai/active_model.py +2 -2
  138. endoreg_db/models/administration/ai/ai_model.py +7 -6
  139. endoreg_db/models/administration/case/__init__.py +1 -15
  140. endoreg_db/models/administration/case/case.py +3 -3
  141. endoreg_db/models/administration/case/case_template/__init__.py +2 -14
  142. endoreg_db/models/administration/case/case_template/case_template.py +2 -124
  143. endoreg_db/models/administration/case/case_template/case_template_rule.py +2 -268
  144. endoreg_db/models/administration/case/case_template/case_template_rule_value.py +2 -85
  145. endoreg_db/models/administration/case/case_template/case_template_type.py +2 -25
  146. endoreg_db/models/administration/center/center.py +33 -19
  147. endoreg_db/models/administration/center/center_product.py +12 -9
  148. endoreg_db/models/administration/center/center_resource.py +25 -19
  149. endoreg_db/models/administration/center/center_shift.py +21 -17
  150. endoreg_db/models/administration/center/center_waste.py +16 -8
  151. endoreg_db/models/administration/person/__init__.py +2 -0
  152. endoreg_db/models/administration/person/employee/employee.py +10 -5
  153. endoreg_db/models/administration/person/employee/employee_qualification.py +9 -4
  154. endoreg_db/models/administration/person/employee/employee_type.py +12 -6
  155. endoreg_db/models/administration/person/examiner/examiner.py +13 -11
  156. endoreg_db/models/administration/person/patient/__init__.py +2 -0
  157. endoreg_db/models/administration/person/patient/patient.py +129 -100
  158. endoreg_db/models/administration/person/patient/patient_external_id.py +37 -0
  159. endoreg_db/models/administration/person/person.py +4 -0
  160. endoreg_db/models/administration/person/profession/__init__.py +8 -4
  161. endoreg_db/models/administration/person/user/portal_user_information.py +11 -7
  162. endoreg_db/models/administration/product/product.py +20 -15
  163. endoreg_db/models/administration/product/product_material.py +17 -18
  164. endoreg_db/models/administration/product/product_weight.py +12 -8
  165. endoreg_db/models/administration/product/reference_product.py +23 -55
  166. endoreg_db/models/administration/qualification/qualification.py +7 -3
  167. endoreg_db/models/administration/qualification/qualification_type.py +7 -3
  168. endoreg_db/models/administration/shift/scheduled_days.py +8 -5
  169. endoreg_db/models/administration/shift/shift.py +16 -12
  170. endoreg_db/models/administration/shift/shift_type.py +23 -31
  171. endoreg_db/models/label/__init__.py +8 -9
  172. endoreg_db/models/label/annotation/image_classification.py +10 -9
  173. endoreg_db/models/label/annotation/video_segmentation_annotation.py +23 -28
  174. endoreg_db/models/label/label.py +15 -15
  175. endoreg_db/models/label/label_set.py +19 -6
  176. endoreg_db/models/label/label_type.py +1 -1
  177. endoreg_db/models/label/label_video_segment/_create_from_video.py +5 -8
  178. endoreg_db/models/label/label_video_segment/label_video_segment.py +98 -102
  179. endoreg_db/models/label/video_segmentation_label.py +4 -0
  180. endoreg_db/models/label/video_segmentation_labelset.py +4 -3
  181. endoreg_db/models/media/frame/frame.py +22 -22
  182. endoreg_db/models/media/pdf/raw_pdf.py +194 -194
  183. endoreg_db/models/media/pdf/report_file.py +25 -29
  184. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +55 -47
  185. endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +23 -7
  186. endoreg_db/models/media/processing_history/__init__.py +5 -0
  187. endoreg_db/models/media/processing_history/processing_history.py +96 -0
  188. endoreg_db/models/media/video/__init__.py +1 -0
  189. endoreg_db/models/media/video/create_from_file.py +139 -77
  190. endoreg_db/models/media/video/pipe_2.py +8 -9
  191. endoreg_db/models/media/video/video_file.py +174 -112
  192. endoreg_db/models/media/video/video_file_ai.py +288 -74
  193. endoreg_db/models/media/video/video_file_anonymize.py +38 -38
  194. endoreg_db/models/media/video/video_file_frames/__init__.py +3 -1
  195. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +6 -8
  196. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +7 -9
  197. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +9 -8
  198. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +38 -45
  199. endoreg_db/models/media/video/video_file_frames/_get_frame.py +6 -8
  200. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +4 -18
  201. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +4 -3
  202. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +7 -6
  203. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +6 -8
  204. endoreg_db/models/media/video/video_file_frames/_get_frames.py +6 -8
  205. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +15 -25
  206. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +26 -23
  207. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +23 -14
  208. endoreg_db/models/media/video/video_file_io.py +113 -61
  209. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +3 -3
  210. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +5 -3
  211. endoreg_db/models/media/video/video_file_meta/get_fps.py +37 -34
  212. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +19 -25
  213. endoreg_db/models/media/video/video_file_meta/text_meta.py +41 -38
  214. endoreg_db/models/media/video/video_file_meta/video_meta.py +14 -7
  215. endoreg_db/models/media/video/video_file_segments.py +24 -17
  216. endoreg_db/models/media/video/video_metadata.py +19 -35
  217. endoreg_db/models/media/video/video_processing.py +96 -95
  218. endoreg_db/models/medical/contraindication/README.md +1 -0
  219. endoreg_db/models/medical/contraindication/__init__.py +13 -3
  220. endoreg_db/models/medical/disease.py +22 -16
  221. endoreg_db/models/medical/event.py +31 -18
  222. endoreg_db/models/medical/examination/__init__.py +13 -6
  223. endoreg_db/models/medical/examination/examination.py +39 -20
  224. endoreg_db/models/medical/examination/examination_indication.py +30 -95
  225. endoreg_db/models/medical/examination/examination_time.py +23 -8
  226. endoreg_db/models/medical/examination/examination_time_type.py +9 -6
  227. endoreg_db/models/medical/examination/examination_type.py +3 -4
  228. endoreg_db/models/medical/finding/finding.py +32 -40
  229. endoreg_db/models/medical/finding/finding_classification.py +42 -72
  230. endoreg_db/models/medical/finding/finding_intervention.py +25 -22
  231. endoreg_db/models/medical/finding/finding_type.py +13 -12
  232. endoreg_db/models/medical/hardware/endoscope.py +26 -26
  233. endoreg_db/models/medical/hardware/endoscopy_processor.py +2 -2
  234. endoreg_db/models/medical/laboratory/lab_value.py +62 -91
  235. endoreg_db/models/medical/medication/medication.py +22 -10
  236. endoreg_db/models/medical/medication/medication_indication.py +29 -3
  237. endoreg_db/models/medical/medication/medication_indication_type.py +25 -14
  238. endoreg_db/models/medical/medication/medication_intake_time.py +31 -19
  239. endoreg_db/models/medical/medication/medication_schedule.py +27 -16
  240. endoreg_db/models/medical/organ/__init__.py +15 -12
  241. endoreg_db/models/medical/patient/medication_examples.py +6 -6
  242. endoreg_db/models/medical/patient/patient_disease.py +20 -23
  243. endoreg_db/models/medical/patient/patient_event.py +19 -22
  244. endoreg_db/models/medical/patient/patient_examination.py +48 -54
  245. endoreg_db/models/medical/patient/patient_examination_indication.py +16 -14
  246. endoreg_db/models/medical/patient/patient_finding.py +122 -139
  247. endoreg_db/models/medical/patient/patient_finding_classification.py +44 -49
  248. endoreg_db/models/medical/patient/patient_finding_intervention.py +8 -19
  249. endoreg_db/models/medical/patient/patient_lab_sample.py +28 -23
  250. endoreg_db/models/medical/patient/patient_lab_value.py +82 -89
  251. endoreg_db/models/medical/patient/patient_medication.py +27 -38
  252. endoreg_db/models/medical/patient/patient_medication_schedule.py +28 -36
  253. endoreg_db/models/medical/risk/risk.py +7 -6
  254. endoreg_db/models/medical/risk/risk_type.py +8 -5
  255. endoreg_db/models/metadata/model_meta.py +60 -29
  256. endoreg_db/models/metadata/model_meta_logic.py +125 -18
  257. endoreg_db/models/metadata/pdf_meta.py +31 -24
  258. endoreg_db/models/metadata/sensitive_meta.py +105 -85
  259. endoreg_db/models/metadata/sensitive_meta_logic.py +198 -103
  260. endoreg_db/models/metadata/video_meta.py +51 -31
  261. endoreg_db/models/metadata/video_prediction_logic.py +16 -23
  262. endoreg_db/models/metadata/video_prediction_meta.py +29 -33
  263. endoreg_db/models/other/distribution/date_value_distribution.py +89 -29
  264. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +21 -5
  265. endoreg_db/models/other/distribution/numeric_value_distribution.py +114 -53
  266. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +4 -3
  267. endoreg_db/models/other/emission/emission_factor.py +18 -8
  268. endoreg_db/models/other/gender.py +10 -5
  269. endoreg_db/models/other/information_source.py +50 -29
  270. endoreg_db/models/other/material.py +9 -5
  271. endoreg_db/models/other/resource.py +6 -4
  272. endoreg_db/models/other/tag.py +10 -5
  273. endoreg_db/models/other/transport_route.py +13 -8
  274. endoreg_db/models/other/unit.py +10 -6
  275. endoreg_db/models/other/waste.py +6 -5
  276. endoreg_db/models/report/report.py +6 -0
  277. endoreg_db/models/requirement/requirement.py +329 -361
  278. endoreg_db/models/requirement/requirement_error.py +85 -0
  279. endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +268 -0
  280. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +3 -6
  281. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +90 -64
  282. endoreg_db/models/requirement/requirement_operator.py +103 -112
  283. endoreg_db/models/requirement/requirement_set.py +74 -57
  284. endoreg_db/models/state/__init__.py +4 -4
  285. endoreg_db/models/state/abstract.py +2 -2
  286. endoreg_db/models/state/anonymization.py +12 -0
  287. endoreg_db/models/state/audit_ledger.py +49 -51
  288. endoreg_db/models/state/label_video_segment.py +9 -0
  289. endoreg_db/models/state/raw_pdf.py +101 -68
  290. endoreg_db/models/state/sensitive_meta.py +6 -2
  291. endoreg_db/models/state/video.py +110 -90
  292. endoreg_db/models/upload_job.py +35 -34
  293. endoreg_db/models/utils.py +28 -25
  294. endoreg_db/queries/__init__.py +3 -1
  295. endoreg_db/root_urls.py +21 -2
  296. endoreg_db/schemas/examination_evaluation.py +1 -1
  297. endoreg_db/serializers/__init__.py +2 -10
  298. endoreg_db/serializers/anonymization.py +18 -10
  299. endoreg_db/serializers/label_video_segment/label_video_segment.py +2 -29
  300. endoreg_db/serializers/meta/__init__.py +1 -6
  301. endoreg_db/serializers/meta/sensitive_meta_detail.py +63 -118
  302. endoreg_db/serializers/misc/file_overview.py +11 -99
  303. endoreg_db/serializers/misc/sensitive_patient_data.py +50 -26
  304. endoreg_db/serializers/patient_examination/patient_examination.py +3 -3
  305. endoreg_db/serializers/pdf/anony_text_validation.py +39 -23
  306. endoreg_db/serializers/requirements/requirement_sets.py +92 -22
  307. endoreg_db/serializers/video/segmentation.py +2 -1
  308. endoreg_db/serializers/video/video_file_list.py +65 -34
  309. endoreg_db/serializers/video/video_processing_history.py +20 -5
  310. endoreg_db/services/__old/pdf_import.py +1487 -0
  311. endoreg_db/services/__old/video_import.py +1306 -0
  312. endoreg_db/services/anonymization.py +128 -89
  313. endoreg_db/services/lookup_service.py +65 -52
  314. endoreg_db/services/lookup_store.py +2 -2
  315. endoreg_db/services/pdf_import.py +0 -1382
  316. endoreg_db/services/report_import.py +10 -0
  317. endoreg_db/services/video_import.py +6 -1255
  318. endoreg_db/tasks/upload_tasks.py +79 -70
  319. endoreg_db/tasks/video_ingest.py +8 -4
  320. endoreg_db/urls/__init__.py +5 -32
  321. endoreg_db/urls/ai.py +32 -0
  322. endoreg_db/urls/media.py +121 -83
  323. endoreg_db/urls/root_urls.py +29 -0
  324. endoreg_db/utils/__init__.py +15 -5
  325. endoreg_db/utils/ai/multilabel_classification_net.py +116 -20
  326. endoreg_db/utils/case_generator/__init__.py +3 -0
  327. endoreg_db/utils/dataloader.py +142 -40
  328. endoreg_db/utils/defaults/set_default_center.py +32 -0
  329. endoreg_db/utils/names.py +22 -16
  330. endoreg_db/utils/paths.py +110 -46
  331. endoreg_db/utils/permissions.py +2 -1
  332. endoreg_db/utils/pipelines/Readme.md +1 -1
  333. endoreg_db/utils/pipelines/process_video_dir.py +1 -1
  334. endoreg_db/utils/requirement_operator_logic/_old/model_evaluators.py +655 -0
  335. endoreg_db/utils/requirement_operator_logic/new_operator_logic.py +97 -0
  336. endoreg_db/utils/setup_config.py +8 -5
  337. endoreg_db/utils/storage.py +115 -0
  338. endoreg_db/utils/validate_endo_roi.py +8 -2
  339. endoreg_db/utils/video/ffmpeg_wrapper.py +184 -188
  340. endoreg_db/views/__init__.py +85 -183
  341. endoreg_db/views/ai/__init__.py +8 -0
  342. endoreg_db/views/ai/label.py +155 -0
  343. endoreg_db/views/anonymization/media_management.py +202 -166
  344. endoreg_db/views/anonymization/overview.py +99 -67
  345. endoreg_db/views/anonymization/validate.py +182 -44
  346. endoreg_db/views/media/__init__.py +7 -20
  347. endoreg_db/views/media/pdf_media.py +197 -174
  348. endoreg_db/views/media/sensitive_metadata.py +193 -138
  349. endoreg_db/views/media/video_media.py +89 -82
  350. endoreg_db/views/meta/__init__.py +0 -8
  351. endoreg_db/views/misc/__init__.py +1 -7
  352. endoreg_db/views/misc/upload_views.py +94 -93
  353. endoreg_db/views/patient/patient.py +5 -4
  354. endoreg_db/views/report/__init__.py +5 -7
  355. endoreg_db/views/{pdf → report}/reimport.py +22 -22
  356. endoreg_db/views/{pdf/pdf_stream.py → report/report_stream.py} +46 -39
  357. endoreg_db/views/requirement/evaluate.py +188 -187
  358. endoreg_db/views/requirement/lookup.py +17 -3
  359. endoreg_db/views/requirement/lookup_store.py +22 -90
  360. endoreg_db/views/requirement/requirement_utils.py +89 -0
  361. endoreg_db/views/video/__init__.py +23 -24
  362. endoreg_db/views/video/correction.py +201 -172
  363. endoreg_db/views/video/reimport.py +1 -1
  364. endoreg_db/views/{media/video_segments.py → video/segments_crud.py} +77 -40
  365. endoreg_db/views/video/{video_meta.py → video_meta_stats.py} +2 -2
  366. endoreg_db/views/video/video_stream.py +7 -8
  367. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/METADATA +7 -3
  368. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/RECORD +391 -413
  369. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/WHEEL +1 -1
  370. endoreg_db/data/finding/anatomy_colon.yaml +0 -128
  371. endoreg_db/data/finding/colonoscopy.yaml +0 -40
  372. endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +0 -56
  373. endoreg_db/data/finding/complication.yaml +0 -16
  374. endoreg_db/data/finding/data.yaml +0 -105
  375. endoreg_db/data/finding/examination_setting.yaml +0 -16
  376. endoreg_db/data/finding/medication_related.yaml +0 -18
  377. endoreg_db/data/finding/outcome.yaml +0 -12
  378. endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +0 -95
  379. endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +0 -22
  380. endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +0 -25
  381. endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +0 -20
  382. endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +0 -24
  383. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +0 -68
  384. endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +0 -20
  385. endoreg_db/data/finding_classification/colonoscopy_location.yaml +0 -80
  386. endoreg_db/data/finding_classification/colonoscopy_lst.yaml +0 -21
  387. endoreg_db/data/finding_classification/colonoscopy_nice.yaml +0 -20
  388. endoreg_db/data/finding_classification/colonoscopy_paris.yaml +0 -26
  389. endoreg_db/data/finding_classification/colonoscopy_sano.yaml +0 -22
  390. endoreg_db/data/finding_classification/colonoscopy_summary.yaml +0 -53
  391. endoreg_db/data/finding_classification/complication_generic.yaml +0 -25
  392. endoreg_db/data/finding_classification/examination_setting_generic.yaml +0 -40
  393. endoreg_db/data/finding_classification/histology_colo.yaml +0 -51
  394. endoreg_db/data/finding_classification/intervention_required.yaml +0 -26
  395. endoreg_db/data/finding_classification/medication_related.yaml +0 -23
  396. endoreg_db/data/finding_classification/visualized.yaml +0 -33
  397. endoreg_db/data/finding_classification_choice/colon_lesion_circularity_default.yaml +0 -32
  398. endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +0 -15
  399. endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +0 -23
  400. endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +0 -15
  401. endoreg_db/data/finding_classification_choice/colon_lesion_nice.yaml +0 -17
  402. endoreg_db/data/finding_classification_choice/colon_lesion_planarity_default.yaml +0 -49
  403. endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +0 -14
  404. endoreg_db/data/finding_classification_choice/colon_lesion_surface_intact_default.yaml +0 -36
  405. endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +0 -82
  406. endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +0 -15
  407. endoreg_db/data/finding_classification_choice/outcome.yaml +0 -19
  408. endoreg_db/data/finding_intervention/endoscopy.yaml +0 -43
  409. endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +0 -168
  410. endoreg_db/data/finding_intervention/endoscopy_egd.yaml +0 -128
  411. endoreg_db/data/finding_intervention/endoscopy_ercp.yaml +0 -32
  412. endoreg_db/data/finding_intervention/endoscopy_eus_lower.yaml +0 -9
  413. endoreg_db/data/finding_intervention/endoscopy_eus_upper.yaml +0 -36
  414. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +0 -79
  415. endoreg_db/data/requirement/age.yaml +0 -26
  416. endoreg_db/data/requirement/gender.yaml +0 -25
  417. endoreg_db/management/commands/init_default_ai_model.py +0 -112
  418. endoreg_db/management/commands/reset_celery_schedule.py +0 -9
  419. endoreg_db/management/commands/validate_video.py +0 -204
  420. endoreg_db/migrations/0002_add_video_correction_models.py +0 -52
  421. endoreg_db/migrations/0003_add_center_display_name.py +0 -30
  422. endoreg_db/models/administration/permissions/__init__.py +0 -44
  423. endoreg_db/models/rule/__init__.py +0 -13
  424. endoreg_db/models/rule/rule.py +0 -27
  425. endoreg_db/models/rule/rule_applicator.py +0 -224
  426. endoreg_db/models/rule/rule_attribute_dtype.py +0 -17
  427. endoreg_db/models/rule/rule_type.py +0 -20
  428. endoreg_db/models/rule/ruleset.py +0 -17
  429. endoreg_db/renames.yml +0 -8
  430. endoreg_db/serializers/_old/raw_pdf_meta_validation.py +0 -223
  431. endoreg_db/serializers/_old/raw_video_meta_validation.py +0 -179
  432. endoreg_db/serializers/_old/video.py +0 -71
  433. endoreg_db/serializers/meta/pdf_file_meta_extraction.py +0 -115
  434. endoreg_db/serializers/meta/report_meta.py +0 -53
  435. endoreg_db/serializers/report/__init__.py +0 -9
  436. endoreg_db/serializers/report/mixins.py +0 -45
  437. endoreg_db/serializers/report/report.py +0 -105
  438. endoreg_db/serializers/report/report_list.py +0 -22
  439. endoreg_db/serializers/report/secure_file_url.py +0 -26
  440. endoreg_db/serializers/video/video_metadata.py +0 -105
  441. endoreg_db/services/requirements_object.py +0 -147
  442. endoreg_db/services/storage_aware_video_processor.py +0 -344
  443. endoreg_db/urls/files.py +0 -6
  444. endoreg_db/urls/label_video_segment_validate.py +0 -33
  445. endoreg_db/urls/label_video_segments.py +0 -46
  446. endoreg_db/urls/report.py +0 -48
  447. endoreg_db/urls/video.py +0 -61
  448. endoreg_db/utils/case_generator/case_generator.py +0 -159
  449. endoreg_db/utils/case_generator/utils.py +0 -30
  450. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +0 -368
  451. endoreg_db/views/label/__init__.py +0 -5
  452. endoreg_db/views/label/label.py +0 -15
  453. endoreg_db/views/label_video_segment/__init__.py +0 -16
  454. endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +0 -44
  455. endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +0 -50
  456. endoreg_db/views/label_video_segment/label_video_segment.py +0 -77
  457. endoreg_db/views/label_video_segment/label_video_segment_by_label.py +0 -174
  458. endoreg_db/views/label_video_segment/label_video_segment_detail.py +0 -73
  459. endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +0 -46
  460. endoreg_db/views/label_video_segment/validate.py +0 -226
  461. endoreg_db/views/media/segments.py +0 -71
  462. endoreg_db/views/meta/available_files_list.py +0 -146
  463. endoreg_db/views/meta/report_meta.py +0 -53
  464. endoreg_db/views/meta/sensitive_meta_detail.py +0 -148
  465. endoreg_db/views/misc/secure_file_serving_view.py +0 -80
  466. endoreg_db/views/misc/secure_file_url_view.py +0 -84
  467. endoreg_db/views/misc/secure_url_validate.py +0 -79
  468. endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +0 -164
  469. endoreg_db/views/patient_finding_location/__init__.py +0 -5
  470. endoreg_db/views/patient_finding_location/pfl_create.py +0 -70
  471. endoreg_db/views/patient_finding_morphology/__init__.py +0 -5
  472. endoreg_db/views/patient_finding_morphology/pfm_create.py +0 -70
  473. endoreg_db/views/pdf/__init__.py +0 -8
  474. endoreg_db/views/report/report_list.py +0 -112
  475. endoreg_db/views/report/report_with_secure_url.py +0 -28
  476. endoreg_db/views/report/start_examination.py +0 -7
  477. endoreg_db/views/video/segmentation.py +0 -274
  478. endoreg_db/views/video/task_status.py +0 -49
  479. endoreg_db/views/video/timeline.py +0 -46
  480. endoreg_db/views/video/video_analyze.py +0 -52
  481. endoreg_db/views.py +0 -0
  482. /endoreg_db/data/requirement/{colonoscopy_baseline_austria.yaml → old/colonoscopy_baseline_austria.yaml} +0 -0
  483. /endoreg_db/data/requirement/{disease_cardiovascular.yaml → old/disease_cardiovascular.yaml} +0 -0
  484. /endoreg_db/data/requirement/{disease_classification_choice_cardiovascular.yaml → old/disease_classification_choice_cardiovascular.yaml} +0 -0
  485. /endoreg_db/data/requirement/{disease_hepatology.yaml → old/disease_hepatology.yaml} +0 -0
  486. /endoreg_db/data/requirement/{disease_misc.yaml → old/disease_misc.yaml} +0 -0
  487. /endoreg_db/data/requirement/{disease_renal.yaml → old/disease_renal.yaml} +0 -0
  488. /endoreg_db/data/requirement/{endoscopy_bleeding_risk.yaml → old/endoscopy_bleeding_risk.yaml} +0 -0
  489. /endoreg_db/data/requirement/{event_cardiology.yaml → old/event_cardiology.yaml} +0 -0
  490. /endoreg_db/data/requirement/{event_requirements.yaml → old/event_requirements.yaml} +0 -0
  491. /endoreg_db/data/requirement/{finding_colon_polyp.yaml → old/finding_colon_polyp.yaml} +0 -0
  492. /endoreg_db/{migrations/__init__.py → data/requirement/old/gender.yaml} +0 -0
  493. /endoreg_db/data/requirement/{lab_value.yaml → old/lab_value.yaml} +0 -0
  494. /endoreg_db/data/requirement/{medication.yaml → old/medication.yaml} +0 -0
  495. /endoreg_db/data/requirement_operator/{age.yaml → _old/age.yaml} +0 -0
  496. /endoreg_db/data/requirement_operator/{lab_operators.yaml → _old/lab_operators.yaml} +0 -0
  497. /endoreg_db/data/requirement_operator/{model_operators.yaml → _old/model_operators.yaml} +0 -0
  498. /endoreg_db/{models/media/video/refactor_plan.md → import_files/pseudonymization/__init__.py} +0 -0
  499. /endoreg_db/{models/media/video/video_file_frames.py → import_files/pseudonymization/pseudonymize.py} +0 -0
  500. /endoreg_db/models/{metadata/frame_ocr_result.py → report/__init__.py} +0 -0
  501. /endoreg_db/{urls/sensitive_meta.py → models/report/images.py} +0 -0
  502. /endoreg_db/utils/requirement_operator_logic/{lab_value_operators.py → _old/lab_value_operators.py} +0 -0
  503. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,93 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "patient_has_dob_information"
4
+ name_de: "Patient hat Geburtsdatum Information"
5
+ name_en: "Patient has date of birth information"
6
+ description: "Checks if the patient has date of birth information."
7
+ requirement_types:
8
+ - "patient"
9
+ - "patient_examination"
10
+ operator: model_attribute_set_any #TODO implement operator
11
+ operator_instructions: "dob;patient.dob"
12
+
13
+ - model: endoreg_db.requirement
14
+ fields:
15
+ name: "patient_has_valid_dob_information"
16
+ name_de: "Patient hat gültige Geburtsdatum Information"
17
+ name_en: "Patient has valid date of birth information"
18
+ description: "Checks if the patient has valid date of birth information."
19
+ requirement_types:
20
+ - "patient"
21
+ - "patient_examination"
22
+ operator: model_attribute_numeric_in_range
23
+ operator_instructions: "?age;?patient.age"
24
+ numeric_value_min: 18
25
+ numeric_value_max: 110
26
+
27
+ # Name related Requirements
28
+ - model: endoreg_db.requirement
29
+ fields:
30
+ name: "patient_has_first_name_information"
31
+ name_de: "Patienten-Untersuchung hat Namensinformation"
32
+ name_en: "Patient Examination has names information"
33
+ description: "Checks if the patient has first and last name information."
34
+ requirement_types:
35
+ - "patient"
36
+ - "patient_examination"
37
+ operator: "model_attribute_set_any"
38
+ operator_instructions: "?first_name;?patient.first_name"
39
+
40
+ - model: endoreg_db.requirement
41
+ fields:
42
+ name: "patient_has_last_name_information"
43
+ name_de: "Patienten-Untersuchung hat Nachnameninformation"
44
+ name_en: "Patient Examination has last name information"
45
+ description: "Checks if the patient has last name information."
46
+ requirement_types:
47
+ - "patient"
48
+ - "patient_examination"
49
+ operator: "model_attribute_set_any"
50
+ operator_instructions: "?last_name;?patient.last_name"
51
+
52
+ ############# Gender Related Requirements ################
53
+ - model: endoreg_db.requirement
54
+ fields:
55
+ name: "patient_has_gender_information"
56
+ name_de: "Patient hat Geschlechtsinformation"
57
+ name_en: "Patient has gender information"
58
+ description: "Checks if the patient has gender information."
59
+ requirement_types:
60
+ - "patient"
61
+ - "patient_examination"
62
+ operator: model_attribute_set_any
63
+ operator_instructions: "?gender;?patient.gender"
64
+
65
+ # model_attribute_is_among_values operator to be implemented
66
+ # should resolve the target models defined in requirement types to
67
+ # get at least one of the linked models (i.e. "patient_has_gender_information",
68
+ # expects a patient as input and should fetch the gender attribute and check
69
+ # if it is among the defined values [male, female])
70
+ # operator_instructions must be provided for used operator;
71
+ # we will parse the value as comma separated list;
72
+ # it defines attributes the operator will try to fetch
73
+ # from the input models defined in requirement_types.
74
+ # at least one of the provided values must match at least one
75
+ # valid field for each input model
76
+
77
+ - model: endoreg_db.requirement
78
+ fields:
79
+ name: "patient_has_valid_gender_information"
80
+ name_de: "Patient hat Geschlechtsinformation"
81
+ name_en: "Patient has gender information"
82
+ description: "Checks if the patient has gender information."
83
+ requirement_types:
84
+ - "patient"
85
+ - "patient_examination"
86
+ operator: model_attribute_is_among_values #TODO implement operator; here,
87
+ # we add "entries leading with "!" to indicate the current
88
+ # requirements field we use to fetch the list of values
89
+ # to check against
90
+ operator_instructions: "?gender;?patient.gender;!genders"
91
+ genders:
92
+ - "male"
93
+ - "female"
@@ -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"
@@ -0,0 +1,36 @@
1
+ - model: endoreg_db.requirement_operator
2
+ fields:
3
+ name: "model_attribute_numeric_in_range"
4
+ name_de: "Modellattribut numerisch im Bereich"
5
+ name_en: "Model attribute numeric in range"
6
+ description: "
7
+ Checks if a numeric model attribute is within a specified range.
8
+ If this operator is used in a requirement, the requirement
9
+ must define 'target_attributes', 'numeric_value_min', and 'numeric_value_max' fields.
10
+ "
11
+
12
+ - model: endoreg_db.requirement_operator
13
+ fields:
14
+ name: "model_attribute_set_any"
15
+ name_de: "Modellattribut Menge beliebig"
16
+ name_en: "Model attribute set any"
17
+ description: "
18
+ Checks if a model attribute is set to any value (not null or empty).
19
+ If this operator is used in a requirement, the requirement
20
+ must define 'target_attributes' field.
21
+ "
22
+
23
+ - model: endoreg_db.requirement_operator
24
+ fields:
25
+ name: "model_attribute_is_among_values"
26
+ name_de: "Modellattribut ist unter Werten"
27
+ name_en: "Model attribute is among values"
28
+ description: "
29
+ Checks if a model attribute is among a specified set of values.
30
+ If this operator is used in a requirement, the requirement
31
+ must define 'target_attributes'. In this case,
32
+ target must contain a comma-separated list.
33
+ Entries without prefix are target fields to check against,
34
+ entries with prefix '?' define fields of the requirement to use
35
+ as reference during evaluation.
36
+ "
@@ -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,4 @@
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"
@@ -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"
@@ -9,8 +9,6 @@
9
9
  requirements:
10
10
  - "endoscopy_intervention_bleeding_risk_high"
11
11
 
12
-
13
-
14
12
  - models: endoreg_db.requirement_set
15
13
  fields:
16
14
  name: "endoscopy_bleeding_risk_low"
@@ -23,9 +21,6 @@
23
21
  - "endoscopy_intervention_bleeding_risk_low"
24
22
  links_to_sets: []
25
23
 
26
-
27
-
28
-
29
24
  - models: endoreg_db.requirement_set
30
25
  fields:
31
26
  name: "patient_medication_indication_anticoagulation"
@@ -37,7 +32,6 @@
37
32
  - "indication_non_valvular_af_apixaban_is_defined_in_requirement"
38
33
  - "indication_after_hip_apixaban_is_defined_in_requirement"
39
34
  - "indication_after_knee_apixaban_is_defined_in_requirement"
40
-
41
35
 
42
36
  - models: endoreg_db.requirement_set
43
37
  fields:
@@ -0,0 +1,190 @@
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
+ - "patient_has_gender_information" # Checks if any gender is set
10
+ # - "patient_has_valid_gender_information" # checks if gender is male or female
11
+ - "patient_has_dob_information" #TODO
12
+ - "patient_has_names_information" #TODO
13
+ links_to_sets:
14
+ - "colonoscopy_basic_patient_history" # includes previous bowel_surgery_known and last_colonoscopy_known
15
+ tags: [] # not tagged as report_mask_requirement_set, only used in top level requirement set
16
+
17
+ - models: endoreg_db.requirement_set
18
+ fields:
19
+ name: "coloreg_examination_data"
20
+ name_de: "Coloreg Untersuchungsdaten"
21
+ name_en: "Coloreg Examination Data"
22
+ description: "Coloreg Examination Data"
23
+ requirement_set_type: "all"
24
+ requirements:
25
+ - "examination_has_indication" #TODO
26
+ - "examination_has_sedation_information" #TODO
27
+ - "examination_bowel_prep_recorded" #TODO
28
+ links_to_sets:
29
+ - "colonoscopy_deepest_insertion_reached_recorded" #TODO # if not cecum or terminal ileum
30
+ tags: []
31
+
32
+ - models: endoreg_db.requirement_set
33
+ fields:
34
+ name: "coloreg_finding_colon_polyp_location_base"
35
+ name_de: "Coloreg Befund Kolon Polyp Lage"
36
+ name_en: "Coloreg Finding Colon Polyp Location"
37
+ description: "Coloreg Finding Colon Polyp Exact Location"
38
+ requirement_set_type: "any"
39
+ requirements:
40
+ - "colon_polyp_has_location" #TODO
41
+
42
+ - models: endoreg_db.requirement_set
43
+ fields:
44
+ name: "coloreg_finding_colon_polyp_rectosigmoid_location"
45
+ name_de: "Coloreg Befund Kolon Polyp Rektosigmoid Lage"
46
+ name_en: "Coloreg Finding Colon Polyp Rectosigmoid Location"
47
+ description: "Coloreg Finding Colon Polyp Rectosigmoid Location"
48
+ requirement_set_type: "all"
49
+ depends_on:
50
+ - "coloreg_finding_colon_polyp_location_base"
51
+ requirements:
52
+ - "coloreg_finding_colon_polyp_rectosigmoid_has_location_cm" #TODO Rektosigmoid muss cm haben
53
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_cm" #TODO nicht rektosigmoid kann cm haben
54
+ - "coloreg_finding_colon_polyp_non_rectosigmoid_has_location_colon_segment" #TODO nicht rektosigmoid kann Segment haben
55
+
56
+ - models: endoreg_db.requirement_set
57
+ fields:
58
+ name: "coloreg_finding_colon_polyp_size"
59
+ name_de: "Coloreg Befund Kolon Polyp Größe"
60
+ name_en: "Coloreg Finding Colon Polyp Size"
61
+ description: "Coloreg Finding Colon Polyp Size"
62
+ requirement_set_type: "any"
63
+ requirements:
64
+ - "coloreg_finding_colon_polyp_size_measured_in_mm" #TODO
65
+ - "coloreg_finding_colon_polyp_size_categorical" #TODO
66
+
67
+ - models: endoreg_db.requirement_set
68
+ fields:
69
+ name: "coloreg_polyp_small_morphology"
70
+ name_de: "Coloreg Polyp Klein Morphologie"
71
+ name_en: "Coloreg Polyp Small Morphology"
72
+ description: "Coloreg Polyp Small Morphology"
73
+ requirement_set_type: "all"
74
+ requirements:
75
+ - "colon_polyp_size_smaller_10_mm" # any size_cat is <6 or 6 - 9 mm or size_mm is < 10 mm
76
+ - "colonoscopy_default_polyp_morphology_wli" # any (paris / description)
77
+
78
+ - models: endoreg_db.requirement_set
79
+ fields:
80
+ name: "coloreg_polyp_medium_morphology"
81
+ name_de: "Coloreg Polyp Mittel Morphologie"
82
+ name_en: "Coloreg Polyp Medium Morphology"
83
+ description: "Coloreg Polyp Medium Morphology"
84
+ requirement_set_type: "all"
85
+ requirements:
86
+ - "colon_polyp_size_smaller_10_19_mm" # size cat is 10-19 mm or size_mm between 10 and 19 mm
87
+ - "colonoscopy_default_polyp_morphology_wli"
88
+ - "colonoscopy_nbi_polyp_morphology" # (nice)
89
+
90
+ - models: endoreg_db.requirement_set
91
+ fields:
92
+ name: "coloreg_polyp_large_morphology"
93
+ name_de: "Coloreg Polyp Groß Morphologie"
94
+ name_en: "Coloreg Polyp Large Morphology"
95
+ description: "Coloreg Polyp Large Morphology"
96
+ requirement_set_type: "all"
97
+ requirements:
98
+ - "colon_polyp_size_20_mm_or_larger" # size cat is 20+ mm or size_mm >=20 mm
99
+ - "colonoscopy_nbi_polyp_morphology" # (nice)
100
+ - "colonoscopy_large_polyp_morphology" # ( LST )
101
+
102
+ - models: endoreg_db.requirement_set
103
+ fields:
104
+ name: "coloreg_finding_colon_polyp_morphology"
105
+ name_de: "Coloreg Befund Kolon Polyp Morphologie"
106
+ name_en: "Coloreg Finding Colon Polyp Morphology"
107
+ description: "Coloreg Finding Colon Polyp Morphology"
108
+ requirement_set_type: "any"
109
+ depends_on:
110
+ - "coloreg_finding_colon_polyp_size"
111
+ links_to_sets:
112
+ - "coloreg_polyp_small_morphology"
113
+ - "coloreg_polyp_medium_morphology"
114
+ - "coloreg_polyp_large_morphology"
115
+
116
+ - models: endoreg_db.requirement_set
117
+ fields:
118
+ name: "coloreg_finding_colon_polyp_histology_expected_and_available"
119
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
120
+ name_en: "Coloreg Finding Colon Polyp Histology"
121
+ description: "Coloreg Finding Colon Polyp Histology"
122
+ requirement_set_type: "all"
123
+ requirements:
124
+ - "colonoscopy_default_polyp_resection"
125
+ - "colonoscopy_default_polyp_histology"
126
+
127
+ - models: endoreg_db.requirement_set
128
+ fields:
129
+ name: "coloreg_finding_colon_polyp_histology_not_expected"
130
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
131
+ name_en: "Coloreg Finding Colon Polyp Histology"
132
+ description: "Coloreg Finding Colon Polyp Histology"
133
+ requirement_set_type: "all"
134
+ requirements:
135
+ - "colonoscopy_default_polyp_no_resection"
136
+ # - "colonoscopy_finding_colon_polyp_no_resection_reason"
137
+
138
+ - models: endoreg_db.requirement_set
139
+ fields:
140
+ name: "coloreg_finding_colon_polyp_histology"
141
+ name_de: "Coloreg Befund Kolon Polyp Histologie"
142
+ name_en: "Coloreg Finding Colon Polyp Histology"
143
+ description: "Coloreg Finding Colon Polyp Histology"
144
+ requirement_set_type: "any"
145
+ links_to_sets:
146
+ - "coloreg_finding_colon_polyp_histology_expected_and_available"
147
+ - "coloreg_finding_colon_polyp_histology_not_expected"
148
+
149
+ - models: endoreg_db.requirement_set
150
+ fields:
151
+ name: "coloreg_finding_colon_polyp_base_description"
152
+ name_de: "Coloreg Befund Kolon Polyp"
153
+ name_en: "Coloreg Finding Colon Polyp"
154
+ description: "Coloreg Finding Colon Polyp"
155
+ requirement_set_type: "all"
156
+ requirements: []
157
+ links_to_sets:
158
+ - "coloreg_finding_colon_polyp_size"
159
+ - "coloreg_finding_colon_polyp_location_base"
160
+ - "coloreg_finding_colon_polyp_rectosigmoid_location"
161
+ - "coloreg_finding_colon_polyp_morphology"
162
+ - "coloreg_finding_colon_polyp_histology"
163
+ tags: []
164
+
165
+ - models: endoreg_db.requirement_set
166
+ fields:
167
+ name: "coloreg_finding_data_complete"
168
+ name_de: "Coloreg Befund Kolon Polyp Komplett"
169
+ name_en: "Coloreg Finding Colon Polyp Complete"
170
+ description: "Coloreg Finding Colon Polyp Complete"
171
+ requirement_set_type: "all"
172
+ links_to_sets:
173
+ - "coloreg_finding_colon_polyp_base_description"
174
+ tags: []
175
+
176
+ - models: endoreg_db.requirement_set
177
+ fields:
178
+ name: "coloreg_colonoscopy_report_complete"
179
+ name_de: "Koloskopie Coloreg"
180
+ name_en: "Colonoscopy Coloreg"
181
+ description: "Colonoscopy Coloreg"
182
+ requirement_set_type: "all"
183
+ links_to_sets:
184
+ - "coloreg_patient_data"
185
+ - "coloreg_examination_data"
186
+ - "coloreg_finding_data_complete"
187
+ tags:
188
+ - "report_mask_requirement_set"
189
+ reqset_exam_links:
190
+ - "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: