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,96 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "disease_is_chronic_kidney_disease"
4
+ name_de: "Erkrankung chronische Nierenerkrankung"
5
+ name_en: "Disease Chronic Kidney Disease"
6
+ description: "Disease Chronic Kidney Disease"
7
+ requirement_types:
8
+ - "patient"
9
+ operators:
10
+ - models_match_all
11
+ diseases:
12
+ - "chronic_kidney_disease"
13
+
14
+ - model: endoreg_db.requirement
15
+ fields:
16
+ name: "disease_classification_choice_is_ckd_kdigo_1"
17
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 1)"
18
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 1)"
19
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 1)"
20
+ requirement_types:
21
+ - "patient_disease"
22
+ - "patient"
23
+ operators:
24
+ - models_match_all
25
+ disease_classification_choices:
26
+ - "ckd_kdigo_1"
27
+
28
+ - model: endoreg_db.requirement
29
+ fields:
30
+ name: "disease_classification_choice_is_ckd_kdigo_2"
31
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 2)"
32
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 2)"
33
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 2)"
34
+ requirement_types:
35
+ - "patient_disease"
36
+ - "patient"
37
+ operators:
38
+ - models_match_all
39
+ disease_classification_choices:
40
+ - "ckd_kdigo_2"
41
+
42
+ - model: endoreg_db.requirement
43
+ fields:
44
+ name: "disease_classification_choice_is_ckd_kdigo_3a"
45
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 3a)"
46
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 3a)"
47
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 3a)"
48
+ requirement_types:
49
+ - "patient_disease"
50
+ - "patient"
51
+ operators:
52
+ - models_match_all
53
+ disease_classification_choices:
54
+ - "ckd_kdigo_3a"
55
+
56
+ - model: endoreg_db.requirement
57
+ fields:
58
+ name: "disease_classification_choice_is_ckd_kdigo_3b"
59
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 3b)"
60
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 3b)"
61
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 3b)"
62
+ requirement_types:
63
+ - "patient_disease"
64
+ - "patient"
65
+ operators:
66
+ - models_match_all
67
+ disease_classification_choices:
68
+ - "ckd_kdigo_3b"
69
+
70
+ - model: endoreg_db.requirement
71
+ fields:
72
+ name: "disease_classification_choice_is_ckd_kdigo_4"
73
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 4)"
74
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 4)"
75
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 4)"
76
+ requirement_types:
77
+ - "patient_disease"
78
+ - "patient"
79
+ operators:
80
+ - models_match_all
81
+ disease_classification_choices:
82
+ - "ckd_kdigo_4"
83
+
84
+ - model: endoreg_db.requirement
85
+ fields:
86
+ name: "disease_classification_choice_is_ckd_kdigo_5"
87
+ name_de: "Erkrankung Klassifikation chronische Nierenerkrankung (KDIGO) (Stadium 5)"
88
+ name_en: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 5)"
89
+ description: "Disease Classification Chronic Kidney Disease (KDIGO) (Stage 5)"
90
+ requirement_types:
91
+ - "patient_disease"
92
+ - "patient"
93
+ operators:
94
+ - models_match_all
95
+ disease_classification_choices:
96
+ - "ckd_kdigo_5"
@@ -0,0 +1,59 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "endoscopy_intervention_bleeding_risk_high"
4
+ name_de: "Endoskopische Intervention - Blutungsrisiko: hoch"
5
+ name_en: "Endoscopy Intervention - Bleeding Risk: High"
6
+ description: "Endoskopische Intervention - Blutungsrisiko: hoch"
7
+ requirement_types:
8
+ - "examination_indication"
9
+ operators:
10
+ - "models_match_any"
11
+ finding_interventions:
12
+ - "egd_lesion_polypectomy_cold_snare"
13
+ - "egd_lesion_polypectomy_hot_snare"
14
+ - "colon_lesion_polypectomy_cold_snare"
15
+ - "colon_lesion_polypectomy_hot_snare"
16
+ - "colon_lesion_emr"
17
+ - "colon_lesion_esd"
18
+ - "colon_lesion_eftr"
19
+ - "egd_lesion_emr"
20
+ - "egd_lesion_esd"
21
+ - "egd_poem"
22
+ - "ercp_sphincterotomy"
23
+ - "egd_varice_band_ligation"
24
+ - "egd_varice_sclerotherapy"
25
+ - "egd_percutaneous_gastroenterostomy"
26
+ - "percutaneous_transhepatic_cholangiography"
27
+ - "percutaneous_transhepatic_biliary_drainage"
28
+ - "ercp_radiofrequency_ablation"
29
+
30
+ - model: endoreg_db.requirement
31
+ fields:
32
+ name: "endoscopy_intervention_bleeding_risk_low"
33
+ name_de: "Endoskopische Intervention - Blutungsrisiko: niedrig"
34
+ name_en: "Endoscopy Intervention - Bleeding Risk: Low"
35
+ description: "Endoskopische Intervention - Blutungsrisiko: niedrig"
36
+ requirement_types:
37
+ - "examination_indication"
38
+ operators:
39
+ - "models_match_any"
40
+ finding_interventions:
41
+ - "egd_lesion_biopsy"
42
+ - "colon_lesion_biopsy"
43
+ - "ercp"
44
+ - "egd_argon_plasma_coagulation"
45
+
46
+ - model: endoreg_db.requirement
47
+ fields:
48
+ name: "indication_is_colon_emr"
49
+ name_de: "Indikation Kolon EMR"
50
+ name_en: "Indication colon EMR"
51
+ description: "This functions evaluates whether the input ()"
52
+ requirement_types:
53
+ - "examination_indication"
54
+ operators:
55
+ - "models_match_any"
56
+ # when creating a requirement involving other models,
57
+ # we need to create the relationship here:
58
+ examination_indications:
59
+ - "colonoscopy_lesion_removal_emr"
@@ -0,0 +1,251 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "event_had_coro_des_implantation"
4
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt"
5
+ name_en: "Event: Coronary Stent Implantation (DES) performed"
6
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt"
7
+ operators:
8
+ - "models_match_any"
9
+ events:
10
+ - "coro_des_implantation"
11
+ requirement_types:
12
+ - "patient"
13
+
14
+ - model: endoreg_db.requirement
15
+ fields:
16
+ name: "event_had_coro_des_implantation_count_between_1_and_3 (exclusive)"
17
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt zwischen 1 und 3 (exklusive)"
18
+ name_en: "Event: Coronary Stent Implantation (DES) performed between 1 and 3 (exclusive)"
19
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt zwischen 1 und 3 (exklusive)"
20
+ operators:
21
+ - "models_match_count_in_range"
22
+ events:
23
+ - "coro_des_implantation"
24
+ numeric_value_min: 1
25
+ numeric_value_max: 3
26
+ requirement_types:
27
+ - "patient"
28
+
29
+ - model: endoreg_db.requirement
30
+ fields:
31
+ name: "event_had_coro_des_implantation_count_greater_than_3"
32
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt mehr als 3"
33
+ name_en: "Event: Coronary Stent Implantation (DES) performed more than 3"
34
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt mehr als 3"
35
+ operators:
36
+ - "models_match_n_or_more"
37
+ events:
38
+ - "coro_des_implantation"
39
+ numeric_value: 3
40
+ requirement_types:
41
+ - "patient"
42
+
43
+ - model: endoreg_db.requirement
44
+ fields:
45
+ name: "event_had_coro_bms_implantation"
46
+ name_de: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt"
47
+ name_en: "Event: Coronary Stent Implantation (BMS) performed"
48
+ description: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt"
49
+ operators:
50
+ - "models_match_any"
51
+ events:
52
+ - "coro_bms_implantation"
53
+ requirement_types:
54
+ - "patient"
55
+
56
+ - model: endoreg_db.requirement
57
+ fields:
58
+ name: "event_had_complication_coro_stent_thrombosis"
59
+ name_de: "Ereignis: Komplikation Koronar Stent Thrombose"
60
+ name_en: "Event: Complication Coronary Stent Thrombosis"
61
+ description: "Ereignis: Komplikation Koronar Stent Thrombose"
62
+ operators:
63
+ - "models_match_any"
64
+ events:
65
+ - "complication_coro_stent_thrombosis"
66
+ requirement_types:
67
+ - "patient"
68
+
69
+ - model: endoreg_db.requirement
70
+ fields:
71
+ name: "event_had_pulmonary_embolism"
72
+ name_de: "Ereignis: Lungenembolie"
73
+ name_en: "Event: Pulmonary Embolism"
74
+ description: "Ereignis: Lungenembolie"
75
+ operators:
76
+ - "models_match_any"
77
+ events:
78
+ - "pulmonary_embolism"
79
+ requirement_types:
80
+ - "patient"
81
+
82
+ - model: endoreg_db.requirement
83
+ fields:
84
+ name: "event_had_deep_vein_thrombosis"
85
+ name_de: "Ereignis: Tiefe Beinvenenthrombose"
86
+ name_en: "Event: Deep Vein Thrombosis"
87
+ description: "Ereignis: Tiefe Beinvenenthrombose"
88
+ operators:
89
+ - "models_match_any"
90
+ events:
91
+ - "deep_vein_thrombosis"
92
+ requirement_types:
93
+ - "patient"
94
+
95
+ - model: endoreg_db.requirement
96
+ fields:
97
+ name: "event_had_deep_vein_thrombosis_10_d"
98
+ name_de: "Ereignis: Tiefe Beinvenenthrombose innerhalb 10 Tage"
99
+ name_en: "Event: Deep Vein Thrombosis within 10 days"
100
+ description: "Ereignis: Tiefe Beinvenenthrombose innerhalb 10 Tage"
101
+ operators:
102
+ - "models_match_any_in_timeframe"
103
+ events:
104
+ - "deep_vein_thrombosis"
105
+ numeric_value_min: -10
106
+ numeric_value_max: 0
107
+ unit: "days"
108
+ requirement_types:
109
+ - "patient"
110
+
111
+ - model: endoreg_db.requirement
112
+ fields:
113
+ name: "event_had_more_than_1_deep_vein_thrombosis"
114
+ name_de: "Ereignis: Mehr als 1 Tiefe Beinvenenthrombose"
115
+ name_en: "Event: More than 1 Deep Vein Thrombosis"
116
+ description: "Ereignis: Mehr als 1 Tiefe Beinvenenthrombose"
117
+ operators:
118
+ - "models_match_n_or_more"
119
+ events:
120
+ - "deep_vein_thrombosis"
121
+ numeric_value: 1
122
+ requirement_types:
123
+ - "patient"
124
+
125
+ - model: endoreg_db.requirement
126
+ fields:
127
+ name: "event_had_coro_des_stent_implantation_30_d"
128
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 30 Tage"
129
+ name_en: "Event: Coronary Stent Implantation (DES) performed within 30 days"
130
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 30 Tage"
131
+ operators:
132
+ - "models_match_any_in_timeframe"
133
+ events:
134
+ - "coro_des_implantation"
135
+ numeric_value_min: -30
136
+ numeric_value_max: 0
137
+ unit: "days"
138
+ requirement_types:
139
+ - "patient"
140
+
141
+ - model: endoreg_db.requirement
142
+ fields:
143
+ name: "event_had_coro_des_stent_implantation_6_w"
144
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 6 Wochen"
145
+ name_en: "Event: Coronary Stent Implantation (DES) performed within 6 weeks"
146
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 6 Wochen"
147
+ operators:
148
+ - "models_match_any_in_timeframe"
149
+ events:
150
+ - "coro_des_implantation"
151
+ numeric_value_min: -6
152
+ numeric_value_max: 0
153
+ unit: "weeks"
154
+ requirement_types:
155
+ - "patient"
156
+
157
+ - model: endoreg_db.requirement
158
+ fields:
159
+ name: "event_had_coro_des_stent_implantation_6_m"
160
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 6 Monate"
161
+ name_en: "Event: Coronary Stent Implantation (DES) performed within 6 months"
162
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 6 Monate"
163
+ operators:
164
+ - "models_match_any_in_timeframe"
165
+ events:
166
+ - "coro_des_implantation"
167
+ numeric_value_min: -6
168
+ numeric_value_max: 0
169
+ unit: "months"
170
+ requirement_types:
171
+ - "patient"
172
+
173
+ - model: endoreg_db.requirement
174
+ fields:
175
+ name: "event_had_coro_des_stent_implantation_1_y"
176
+ name_de: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 1 Jahr"
177
+ name_en: "Event: Coronary Stent Implantation (DES) performed within 1 year"
178
+ description: "Ereignis: Koronarstent-Implantation (DES) durchgeführt innerhalb 1 Jahr"
179
+ operators:
180
+ - "models_match_any_in_timeframe"
181
+ events:
182
+ - "coro_des_implantation"
183
+ numeric_value_min: -1
184
+ numeric_value_max: 0
185
+ unit: "years"
186
+ requirement_types:
187
+ - "patient"
188
+
189
+ - model: endoreg_db.requirement
190
+ fields:
191
+ name: "event_had_coro_bms_stent_implantation_30_d"
192
+ name_de: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 30 Tage"
193
+ name_en: "Event: Coronary Stent Implantation (BMS) performed within 30 days"
194
+ description: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 30 Tage"
195
+ operators:
196
+ - "models_match_any_in_timeframe"
197
+ events:
198
+ - "coro_bms_implantation"
199
+ numeric_value_min: -30
200
+ numeric_value_max: 0
201
+ unit: "days"
202
+ requirement_types:
203
+ - "patient"
204
+
205
+ - model: endoreg_db.requirement
206
+ fields:
207
+ name: "event_had_coro_bms_stent_implantation_6_w"
208
+ name_de: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 6 Wochen"
209
+ name_en: "Event: Coronary Stent Implantation (BMS) performed within 6 weeks"
210
+ description: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 6 Wochen"
211
+ operators:
212
+ - "models_match_any_in_timeframe"
213
+ events:
214
+ - "coro_bms_implantation"
215
+ numeric_value_min: -6
216
+ numeric_value_max: 0
217
+ unit: "weeks"
218
+ requirement_types:
219
+ - "patient"
220
+
221
+ - model: endoreg_db.requirement
222
+ fields:
223
+ name: "event_had_coro_bms_stent_implantation_6_m"
224
+ name_de: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 6 Monate"
225
+ name_en: "Event: Coronary Stent Implantation (BMS) performed within 6 months"
226
+ description: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 6 Monate"
227
+ operators:
228
+ - "models_match_any_in_timeframe"
229
+ events:
230
+ - "coro_bms_implantation"
231
+ numeric_value_min: -6
232
+ numeric_value_max: 0
233
+ unit: "months"
234
+ requirement_types:
235
+ - "patient"
236
+
237
+ - model: endoreg_db.requirement
238
+ fields:
239
+ name: "event_had_coro_bms_stent_implantation_1_y"
240
+ name_de: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 1 Jahr"
241
+ name_en: "Event: Coronary Stent Implantation (BMS) performed within 1 year"
242
+ description: "Ereignis: Koronarstent-Implantation (BMS) durchgeführt innerhalb 1 Jahr"
243
+ operators:
244
+ - "models_match_any_in_timeframe"
245
+ events:
246
+ - "coro_bms_implantation"
247
+ numeric_value_min: -1
248
+ numeric_value_max: 0
249
+ unit: "years"
250
+ requirement_types:
251
+ - "patient"
@@ -0,0 +1,145 @@
1
+ # /home/admin/dev/endo-ai/endoreg-db/endoreg_db/data/requirement/event_requirements.yaml
2
+ - model: endoreg_db.requirement
3
+ fields:
4
+ name: "event_coro_des_implantation_exists"
5
+ name_de: "Ereignis Koronarstent-Implantation (DES) vorhanden"
6
+ name_en: "Event Coronary Stent Implantation (DES) exists"
7
+ description: "Checks if a 'coro_des_implantation' event exists for the patient."
8
+ requirement_types:
9
+ - "patient"
10
+ - "patient_event" # Added patient_event
11
+ operators:
12
+ - models_match_any
13
+ events:
14
+ - "coro_des_implantation"
15
+
16
+ - model: endoreg_db.requirement
17
+ fields:
18
+ name: "event_coro_bms_implantation_exists"
19
+ name_de: "Ereignis Koronarstent-Implantation (BMS) vorhanden"
20
+ name_en: "Event Coronary Stent Implantation (BMS) exists"
21
+ description: "Checks if a 'coro_bms_implantation' event exists for the patient."
22
+ requirement_types:
23
+ - "patient"
24
+ - "patient_event" # Added patient_event
25
+ operators:
26
+ - models_match_any
27
+ events:
28
+ - "coro_bms_implantation"
29
+
30
+ - model: endoreg_db.requirement
31
+ fields:
32
+ name: "event_pulmonary_embolism_exists"
33
+ name_de: "Ereignis Lungenembolie vorhanden"
34
+ name_en: "Event Pulmonary Embolism exists"
35
+ description: "Checks if a 'pulmonary_embolism' event exists for the patient."
36
+ requirement_types:
37
+ - "patient"
38
+ - "patient_event" # Added patient_event
39
+ operators:
40
+ - models_match_any
41
+ events:
42
+ - "pulmonary_embolism"
43
+
44
+ - model: endoreg_db.requirement
45
+ fields:
46
+ name: "event_deep_vein_thrombosis_exists"
47
+ name_de: "Ereignis Tiefe Beinvenenthrombose vorhanden"
48
+ name_en: "Event Deep Vein Thrombosis exists"
49
+ description: "Checks if a 'deep_vein_thrombosis' event exists for the patient."
50
+ requirement_types:
51
+ - "patient"
52
+ - "patient_event" # Added patient_event
53
+ operators:
54
+ - models_match_any
55
+ events:
56
+ - "deep_vein_thrombosis"
57
+
58
+ - model: endoreg_db.requirement
59
+ fields:
60
+ name: "event_stroke_exists"
61
+ name_de: "Ereignis Schlaganfall vorhanden"
62
+ name_en: "Event Stroke exists"
63
+ description: "Checks if a 'stroke' event exists for the patient."
64
+ requirement_types:
65
+ - "patient"
66
+ - "patient_event" # Added patient_event
67
+ operators:
68
+ - models_match_any
69
+ events:
70
+ - "stroke"
71
+
72
+ - model: endoreg_db.requirement
73
+ fields:
74
+ name: "event_transient_ischemic_attack_exists"
75
+ name_de: "Ereignis Transitorische ischämische Attacke vorhanden"
76
+ name_en: "Event Transient Ischemic Attack exists"
77
+ description: "Checks if a 'transient_ischemic_attack' event exists for the patient."
78
+ requirement_types:
79
+ - "patient"
80
+ - "patient_event" # Added patient_event
81
+ operators:
82
+ - models_match_any
83
+ events:
84
+ - "transient_ischemic_attack"
85
+
86
+ - model: endoreg_db.requirement
87
+ fields:
88
+ name: "event_hip_replacement_surgery_exists"
89
+ name_de: "Ereignis Hüft-TEP Operation vorhanden"
90
+ name_en: "Event Hip replacement surgery exists"
91
+ description: "Checks if a 'hip_replacement_surgery' event exists for the patient."
92
+ requirement_types:
93
+ - "patient"
94
+ - "patient_event" # Added patient_event
95
+ operators:
96
+ - models_match_any
97
+ events:
98
+ - "hip_replacement_surgery"
99
+
100
+ - model: endoreg_db.requirement
101
+ fields:
102
+ name: "event_knee_replacement_surgery_exists"
103
+ name_de: "Ereignis Knie-TEP Operation vorhanden"
104
+ name_en: "Event Knee replacement surgery exists"
105
+ description: "Checks if a 'knee_replacement_surgery' event exists for the patient."
106
+ requirement_types:
107
+ - "patient"
108
+ - "patient_event" # Added patient_event
109
+ operators:
110
+ - models_match_any
111
+ events:
112
+ - "knee_replacement_surgery"
113
+
114
+ - model: endoreg_db.requirement
115
+ fields:
116
+ name: "event_recurrent_thrombembolism_exists"
117
+ name_de: "Ereignis Rezidivierende Thrombembolien vorhanden"
118
+ name_en: "Event Recurrent Thrombembolism exists"
119
+ description: "Checks if a 'recurrent_thrombembolism' event exists for the patient."
120
+ requirement_types:
121
+ - "patient"
122
+ - "patient_event" # Added patient_event
123
+ operators:
124
+ - models_match_any
125
+ events:
126
+ - "recurrent_thrombembolism"
127
+
128
+ # Example for models_match_any_in_timeframe
129
+ - model: endoreg_db.requirement
130
+ fields:
131
+ name: "event_stroke_in_last_30_days"
132
+ name_de: "Ereignis Schlaganfall in den letzten 30 Tagen"
133
+ name_en: "Event Stroke in the last 30 days"
134
+ description: "Checks if a 'stroke' event occurred for the patient in the last 30 days."
135
+ requirement_types: # Defines which input models are expected by Requirement.evaluate()
136
+ - "patient"
137
+ - "patient_event" # This tells the system to look for PatientEvent models in the input
138
+ operators:
139
+ - models_match_any_in_timeframe
140
+ events: # This links the Requirement to specific Event models (e.g. "stroke")
141
+ - "stroke"
142
+ # Timeframe definition for the operator:
143
+ numeric_value_min: -30 # Start of timeframe (days ago)
144
+ numeric_value_max: 0 # End of timeframe (days ago, i.e., today)
145
+ unit: "days" # Unit for the timeframe
@@ -0,0 +1,50 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "colon_austria_screening_polyp_size"
4
+ requirement_types:
5
+ - "patient_examination"
6
+ - "patient_finding"
7
+ operators:
8
+ - "models_match_any"
9
+ finding_classifications:
10
+ - "colon_lesion_size_mm"
11
+ - "colon_lesion_size_austria_categorical"
12
+
13
+ - model: endoreg_db.requirement
14
+ fields:
15
+ name: "colonoscopy_austria_screening_polyp_location"
16
+ requirement_types:
17
+ - "patient_examination"
18
+ - "patient_finding"
19
+ operators:
20
+ - "models_match_any"
21
+ finding_classifications:
22
+ - "colonoscopy_austria_screening_location"
23
+ - "colonoscopy_location_default"
24
+
25
+ - model: endoreg_db.requirement
26
+ fields:
27
+ name: "colonoscopy_austria_screening_polyp_morphology"
28
+ operators:
29
+ - "models_match_any"
30
+ requirement_types:
31
+ - "patient_examination"
32
+ - "patient_finding"
33
+ finding_classifications:
34
+ - "colon_lesion_paris"
35
+ - "colon_lesion_lst"
36
+ - "colon_lesion_planarity_default"
37
+
38
+ - model: endoreg_db.requirement
39
+ fields:
40
+ name: "colonoscopy_austria_screening_polyp_histology"
41
+ requirement_types:
42
+ - "patient_finding"
43
+ - "patient_examination"
44
+ operators:
45
+ - "models_match_all"
46
+ finding_classifications:
47
+ - "colonoscopy_polyp_histology"
48
+ - "colonoscopy_polyp_histology_dysplasia"
49
+ - "colonoscopy_histology_dignity"
50
+
@@ -0,0 +1,25 @@
1
+ - model: endoreg_db.requirement
2
+ fields:
3
+ name: "patient_gender_is_male"
4
+ name_de: "Patient ist männlich"
5
+ name_en: "Patient is male"
6
+ description: "Checks if the patient is male."
7
+ requirement_types:
8
+ - "patient"
9
+ operators:
10
+ - models_match_all
11
+ genders:
12
+ - "male"
13
+
14
+ - model: endoreg_db.requirement
15
+ fields:
16
+ name: "patient_gender_is_female"
17
+ name_de: "Patient ist weiblich"
18
+ name_en: "Patient is female"
19
+ description: "Checks if the patient is female."
20
+ requirement_types:
21
+ - "patient"
22
+ operators:
23
+ - models_match_all
24
+ genders:
25
+ - "female"