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
@@ -1,199 +1,174 @@
1
1
  ####### Administration ########
2
2
  from .administration import (
3
- AiModel,
4
3
  ActiveModel,
5
- ModelType,
4
+ AiModel,
6
5
  Case,
7
- CaseTemplate,
8
- CaseTemplateRule,
9
- CaseTemplateRuleType,
10
- CaseTemplateRuleValue,
11
- CaseTemplateRuleValueType,
12
- CaseTemplateType,
13
6
  Center,
14
7
  CenterProduct,
15
8
  CenterResource,
16
- CenterWaste,
17
9
  CenterShift,
18
- Person,
19
- Patient,
10
+ CenterWaste,
11
+ Employee,
12
+ EmployeeQualification,
13
+ EmployeeType,
20
14
  Examiner,
21
- PortalUserInfo,
22
15
  FirstName,
23
16
  LastName,
24
- Profession,
17
+ ModelType,
18
+ Patient,
19
+ PatientExternalID,
20
+ Person,
21
+ PortalUserInfo,
25
22
  Product,
26
- ProductMaterial,
27
23
  ProductGroup,
28
- ReferenceProduct,
24
+ ProductMaterial,
29
25
  ProductWeight,
26
+ Profession,
30
27
  Qualification,
31
28
  QualificationType,
29
+ ReferenceProduct,
30
+ ScheduledDays,
32
31
  Shift,
33
32
  ShiftType,
34
- ScheduledDays,
35
- Employee,
36
- EmployeeType,
37
- EmployeeQualification,
38
33
  )
39
34
 
40
-
41
35
  ####### Label ########
42
36
  from .label import (
37
+ ImageClassificationAnnotation,
43
38
  Label,
44
39
  LabelSet,
45
40
  LabelType,
46
- VideoSegmentationLabel,
47
- VideoSegmentationLabelSet,
48
41
  LabelVideoSegment,
49
- ImageClassificationAnnotation,
50
42
  VideoSegmentationAnnotation,
43
+ VideoSegmentationLabel,
44
+ VideoSegmentationLabelSet,
51
45
  )
52
46
 
53
47
  ####### Media ########
54
48
  from .media import (
55
- VideoFile,
56
- Frame,
57
- RawPdfFile,
58
- DocumentType,
59
49
  AnonymExaminationReport,
60
50
  AnonymHistologyReport,
51
+ DocumentType,
52
+ Frame,
53
+ RawPdfFile,
61
54
  ReportReaderConfig,
62
55
  ReportReaderFlag,
56
+ VideoFile,
63
57
  VideoMetadata,
64
58
  VideoProcessingHistory,
65
59
  )
66
60
 
67
61
  ######## Medical ########
68
62
  from .medical import (
63
+ Contraindication,
69
64
  Disease,
70
65
  DiseaseClassification,
71
66
  DiseaseClassificationChoice,
67
+ Endoscope,
68
+ EndoscopeType,
69
+ EndoscopyProcessor,
72
70
  Event,
73
71
  EventClassification,
74
72
  EventClassificationChoice,
75
- Contraindication,
76
73
  Examination,
77
- ExaminationRequirementSet,
78
- ExaminationType,
79
74
  ExaminationIndication,
80
- ExaminationIndicationClassificationChoice,
81
75
  ExaminationIndicationClassification,
76
+ ExaminationIndicationClassificationChoice,
77
+ ExaminationRequirementSet,
82
78
  ExaminationTime,
83
79
  ExaminationTimeType,
80
+ ExaminationType,
84
81
  Finding,
85
- PatientFindingClassification,
86
- FindingClassificationType,
87
82
  FindingClassification,
88
83
  FindingClassificationChoice,
89
- FindingType,
84
+ FindingClassificationType,
90
85
  FindingIntervention,
91
86
  FindingInterventionType,
87
+ FindingType,
88
+ LabValue,
89
+ Medication,
90
+ MedicationIndication,
91
+ MedicationIndicationType,
92
+ MedicationIntakeTime,
93
+ MedicationSchedule,
94
+ Organ,
92
95
  PatientDisease,
93
96
  PatientEvent,
94
- PatientExaminationIndication,
95
97
  PatientExamination,
98
+ PatientExaminationIndication,
96
99
  PatientFinding,
100
+ PatientFindingClassification,
97
101
  PatientFindingIntervention,
98
102
  PatientLabSample,
99
103
  PatientLabSampleType,
100
104
  PatientLabValue,
101
105
  PatientMedication,
102
106
  PatientMedicationSchedule,
103
- Organ,
104
107
  Risk,
105
108
  RiskType,
106
- Medication,
107
- MedicationSchedule,
108
- MedicationIntakeTime,
109
- MedicationIndicationType,
110
- MedicationIndication,
111
- Endoscope,
112
- EndoscopeType,
113
- EndoscopyProcessor,
114
- LabValue,
115
109
  )
116
110
 
117
111
  ####### Metadata ########
118
112
  from .metadata import (
119
- SensitiveMeta,
113
+ FFMpegMeta,
114
+ ModelMeta,
120
115
  PdfMeta,
121
116
  PdfType,
122
- VideoMeta,
123
- FFMpegMeta,
117
+ SensitiveMeta,
124
118
  VideoImportMeta,
125
- ModelMeta,
119
+ VideoMeta,
126
120
  VideoPredictionMeta,
127
121
  )
128
-
129
122
  from .other import (
130
- Material,
131
- Resource,
132
- TransportRoute,
133
- Waste,
134
123
  BaseValueDistribution,
135
- NumericValueDistribution,
136
- SingleCategoricalValueDistribution,
137
- MultipleCategoricalValueDistribution,
138
124
  DateValueDistribution,
125
+ EmissionFactor,
139
126
  Gender,
140
127
  InformationSource,
141
128
  InformationSourceType,
129
+ Material,
130
+ MultipleCategoricalValueDistribution,
131
+ NumericValueDistribution,
132
+ Resource,
133
+ SingleCategoricalValueDistribution,
134
+ Tag,
135
+ TransportRoute,
142
136
  Unit,
143
- EmissionFactor,
144
- Tag
137
+ Waste,
145
138
  )
146
-
147
139
  from .requirement import (
148
140
  Requirement,
149
- RequirementType,
150
141
  RequirementOperator,
151
142
  RequirementSet,
152
143
  RequirementSetType,
144
+ RequirementType,
153
145
  )
154
- from .rule import (
155
- RuleType,
156
- Rule,
157
- Ruleset,
158
- RuleAttributeDType,
159
- RuleApplicator,
160
- )
161
-
162
146
  from .state import (
163
- SensitiveMetaState,
164
- VideoState,
147
+ AnonymizationState,
165
148
  LabelVideoSegmentState,
166
- AnonymizationStatus,
167
149
  RawPdfState,
150
+ SensitiveMetaState,
151
+ VideoState,
168
152
  )
169
153
 
170
154
  __all__ = [
171
-
172
155
  ####### Administration ########
173
- # AI
156
+ # AI
174
157
  "AiModel",
175
158
  "ActiveModel",
176
159
  "ModelType",
177
-
178
160
  # Case
179
161
  "Case",
180
- "CaseTemplate",
181
- "CaseTemplateRule",
182
- "CaseTemplateRuleType",
183
- "CaseTemplateRuleValue",
184
- "CaseTemplateRuleValueType",
185
- "CaseTemplateType",
186
-
187
162
  # Center
188
163
  "Center",
189
164
  "CenterProduct",
190
165
  "CenterResource",
191
166
  "CenterWaste",
192
167
  "CenterShift",
193
-
194
168
  # Person
195
169
  "Person",
196
170
  "Patient",
171
+ "PatientExternalID",
197
172
  "Examiner",
198
173
  "PortalUserInfo",
199
174
  "FirstName",
@@ -202,23 +177,19 @@ __all__ = [
202
177
  "Employee",
203
178
  "EmployeeType",
204
179
  "EmployeeQualification",
205
-
206
180
  # Product
207
- 'Product',
208
- 'ProductMaterial',
209
- 'ProductGroup',
210
- 'ReferenceProduct',
211
- 'ProductWeight',
212
-
181
+ "Product",
182
+ "ProductMaterial",
183
+ "ProductGroup",
184
+ "ReferenceProduct",
185
+ "ProductWeight",
213
186
  # Qualification
214
187
  "Qualification",
215
188
  "QualificationType",
216
-
217
189
  # Shift
218
190
  "Shift",
219
191
  "ShiftType",
220
192
  "ScheduledDays",
221
-
222
193
  ####### Label ########
223
194
  "Label",
224
195
  "LabelSet",
@@ -228,8 +199,6 @@ __all__ = [
228
199
  "LabelVideoSegment",
229
200
  "ImageClassificationAnnotation",
230
201
  "VideoSegmentationAnnotation",
231
-
232
-
233
202
  ####### Media ########
234
203
  "VideoFile",
235
204
  "Frame",
@@ -237,12 +206,10 @@ __all__ = [
237
206
  "DocumentType",
238
207
  "AnonymExaminationReport",
239
208
  "AnonymHistologyReport",
240
- 'ReportReaderConfig',
241
- 'ReportReaderFlag',
242
- 'VideoMetadata',
243
- 'VideoProcessingHistory',
244
-
245
-
209
+ "ReportReaderConfig",
210
+ "ReportReaderFlag",
211
+ "VideoMetadata",
212
+ "VideoProcessingHistory",
246
213
  ######## Medical ########
247
214
  # Disease
248
215
  "Disease",
@@ -256,6 +223,7 @@ __all__ = [
256
223
  "Contraindication",
257
224
  # Examination
258
225
  "Examination",
226
+ "ExaminationRequirementSet",
259
227
  "ExaminationType",
260
228
  "ExaminationIndication",
261
229
  "ExaminationIndicationClassificationChoice",
@@ -300,15 +268,12 @@ __all__ = [
300
268
  "MedicationIntakeTime",
301
269
  "MedicationIndicationType",
302
270
  "MedicationIndication",
303
-
304
271
  # Hardware
305
272
  "Endoscope",
306
273
  "EndoscopeType",
307
274
  "EndoscopyProcessor",
308
-
309
275
  # Laboratory
310
276
  "LabValue",
311
-
312
277
  ####### Metadata ########
313
278
  "SensitiveMeta",
314
279
  "PdfMeta",
@@ -318,42 +283,32 @@ __all__ = [
318
283
  "VideoImportMeta",
319
284
  "ModelMeta",
320
285
  "VideoPredictionMeta",
321
-
322
286
  ####### Other #######
323
- 'Material',
324
- 'Resource',
325
- 'TransportRoute',
326
- 'Waste',
327
- 'BaseValueDistribution',
328
- 'NumericValueDistribution',
329
- 'SingleCategoricalValueDistribution',
330
- 'MultipleCategoricalValueDistribution',
331
- 'DateValueDistribution',
287
+ "Material",
288
+ "Resource",
289
+ "TransportRoute",
290
+ "Waste",
291
+ "BaseValueDistribution",
292
+ "NumericValueDistribution",
293
+ "SingleCategoricalValueDistribution",
294
+ "MultipleCategoricalValueDistribution",
295
+ "DateValueDistribution",
332
296
  "Gender",
333
297
  "InformationSource",
334
298
  "InformationSourceType",
335
299
  "Unit",
336
300
  "EmissionFactor",
337
301
  "Tag",
338
-
339
302
  ###### Requirement ######
340
303
  "Requirement",
341
304
  "RequirementType",
342
305
  "RequirementOperator",
343
306
  "RequirementSet",
344
307
  "RequirementSetType",
345
-
346
- ######## Rule #######
347
- "RuleType",
348
- "Rule",
349
- "Ruleset",
350
- "RuleAttributeDType",
351
- "RuleApplicator",
352
-
353
308
  ####### State ########
354
309
  "SensitiveMetaState",
355
310
  "VideoState",
356
311
  "LabelVideoSegmentState",
357
- "AnonymizationStatus",
312
+ "AnonymizationState",
358
313
  "RawPdfState",
359
314
  ]
@@ -1,19 +1,13 @@
1
1
  # AI
2
2
  from .ai import (
3
- AiModel,
4
3
  ActiveModel,
4
+ AiModel,
5
5
  ModelType,
6
6
  )
7
7
 
8
8
  # Case
9
9
  from .case import (
10
10
  Case,
11
- CaseTemplate,
12
- CaseTemplateRule,
13
- CaseTemplateRuleType,
14
- CaseTemplateRuleValue,
15
- CaseTemplateRuleValueType,
16
- CaseTemplateType,
17
11
  )
18
12
 
19
13
  # Center
@@ -21,46 +15,43 @@ from .center import (
21
15
  Center,
22
16
  CenterProduct,
23
17
  CenterResource,
24
- CenterWaste,
25
18
  CenterShift,
19
+ CenterWaste,
26
20
  )
27
21
 
28
-
29
- #TODO Review module
30
- # from .permissions import ()
31
-
22
+ # TODO Review module
23
+ # from .permissions import ()
32
24
  # Person
33
25
  from .person import (
34
- Person,
35
- Examiner,
36
- Patient,
37
- PortalUserInfo,
26
+ Employee,
27
+ EmployeeQualification,
28
+ EmployeeType,
29
+ Examiner,
38
30
  FirstName,
39
31
  LastName,
32
+ Patient,
33
+ PatientExternalID,
34
+ Person,
35
+ PortalUserInfo,
40
36
  Profession,
41
- Employee,
42
- EmployeeType,
43
- EmployeeQualification,
44
37
  )
45
38
 
46
39
  # Product
47
40
  from .product import (
48
41
  Product,
49
- ProductMaterial,
50
42
  ProductGroup,
51
- ReferenceProduct,
43
+ ProductMaterial,
52
44
  ProductWeight,
45
+ ReferenceProduct,
53
46
  )
54
-
55
47
  from .qualification import (
56
48
  Qualification,
57
49
  QualificationType,
58
50
  )
59
-
60
51
  from .shift import (
52
+ ScheduledDays,
61
53
  Shift,
62
54
  ShiftType,
63
- ScheduledDays,
64
55
  )
65
56
 
66
57
  __all__ = [
@@ -68,26 +59,18 @@ __all__ = [
68
59
  "AiModel",
69
60
  "ActiveModel",
70
61
  "ModelType",
71
-
72
62
  # Case
73
63
  "Case",
74
- "CaseTemplate",
75
- "CaseTemplateRule",
76
- "CaseTemplateRuleType",
77
- "CaseTemplateRuleValue",
78
- "CaseTemplateRuleValueType",
79
- "CaseTemplateType",
80
-
81
64
  # Center
82
65
  "Center",
83
66
  "CenterProduct",
84
67
  "CenterResource",
85
68
  "CenterWaste",
86
69
  "CenterShift",
87
-
88
70
  # Person
89
71
  "Person",
90
72
  "Patient",
73
+ "PatientExternalID",
91
74
  "Examiner",
92
75
  "PortalUserInfo",
93
76
  "FirstName",
@@ -96,21 +79,17 @@ __all__ = [
96
79
  "Employee",
97
80
  "EmployeeType",
98
81
  "EmployeeQualification",
99
-
100
82
  # Product
101
- 'Product',
102
- 'ProductMaterial',
103
- 'ProductGroup',
104
- 'ReferenceProduct',
105
- 'ProductWeight',
106
-
83
+ "Product",
84
+ "ProductMaterial",
85
+ "ProductGroup",
86
+ "ReferenceProduct",
87
+ "ProductWeight",
107
88
  # Qualification
108
89
  "Qualification",
109
90
  "QualificationType",
110
-
111
91
  # Shift
112
92
  "Shift",
113
93
  "ShiftType",
114
94
  "ScheduledDays",
115
95
  ]
116
-
@@ -1,5 +1,5 @@
1
1
  from django.db import models
2
- from typing import TYPE_CHECKING, Optional
2
+ from typing import TYPE_CHECKING
3
3
 
4
4
  if TYPE_CHECKING:
5
5
  from endoreg_db.models.metadata import ModelMeta
@@ -27,7 +27,7 @@ class ActiveModel(models.Model):
27
27
 
28
28
  name = models.CharField(max_length=255, unique=True)
29
29
 
30
- model_meta:Optional[models.ForeignKey["ModelMeta"]] = models.ForeignKey(
30
+ model_meta:models.ForeignKey["ModelMeta|None"] = models.ForeignKey(
31
31
  'ModelMeta', on_delete=models.SET_NULL,
32
32
  blank=True, null=True
33
33
  )
@@ -1,10 +1,9 @@
1
1
  """
2
2
  Django model for AI models.
3
3
  """
4
- from importlib import metadata
5
4
  from django.db import models
6
5
  from icecream import ic
7
- from typing import TYPE_CHECKING, Optional, Union
6
+ from typing import TYPE_CHECKING
8
7
 
9
8
  if TYPE_CHECKING:
10
9
  from .model_type import ModelType
@@ -54,7 +53,7 @@ class AiModel(models.Model):
54
53
  name = models.CharField(max_length=255, unique=True)
55
54
 
56
55
  description = models.TextField(blank=True, null=True)
57
- model_type:Optional[models.ForeignKey[Union["ModelType", None]]] = models.ForeignKey(
56
+ model_type = models.ForeignKey(
58
57
  "ModelType",
59
58
  on_delete=models.CASCADE,
60
59
  related_name="ai_models",
@@ -62,14 +61,14 @@ class AiModel(models.Model):
62
61
  null=True,
63
62
  )
64
63
  model_subtype = models.CharField(max_length=255, blank=True, null=True)
65
- video_segmentation_labelset:Optional[models.ForeignKey[Union["VideoSegmentationLabelSet", None]]] = models.ForeignKey(
64
+ video_segmentation_labelset = models.ForeignKey(
66
65
  "VideoSegmentationLabelSet",
67
66
  on_delete=models.CASCADE,
68
67
  related_name="ai_models",
69
68
  blank=True,
70
69
  null=True,
71
70
  )
72
- active_meta:Optional[models.ForeignKey[Union["ModelMeta", None]]] = models.ForeignKey(
71
+ active_meta = models.ForeignKey(
73
72
  "ModelMeta",
74
73
  on_delete=models.SET_NULL,
75
74
  related_name="active_model",
@@ -79,7 +78,9 @@ class AiModel(models.Model):
79
78
 
80
79
  if TYPE_CHECKING:
81
80
  metadata_versions: models.QuerySet["ModelMeta"]
82
-
81
+ model_type:models.ForeignKey["ModelType|None"]
82
+ active_meta:models.ForeignKey["ModelMeta|None"]
83
+ video_segmentation_labelset:models.ForeignKey["VideoSegmentationLabelSet|None"]
83
84
 
84
85
  def get_version(self, version: int) -> "ModelMeta":
85
86
  """
@@ -1,19 +1,5 @@
1
1
  from .case import Case
2
- from .case_template import (
3
- CaseTemplate,
4
- CaseTemplateRule,
5
- CaseTemplateRuleType,
6
- CaseTemplateRuleValue,
7
- CaseTemplateRuleValueType,
8
- CaseTemplateType,
9
- )
10
2
 
11
3
  __all__ = [
12
4
  "Case",
13
- "CaseTemplate",
14
- "CaseTemplateRule",
15
- "CaseTemplateRuleType",
16
- "CaseTemplateRuleValue",
17
- "CaseTemplateRuleValueType",
18
- "CaseTemplateType",
19
- ]
5
+ ]
@@ -75,9 +75,9 @@ class Case(models.Model):
75
75
  )
76
76
 
77
77
  if TYPE_CHECKING:
78
- patient: "Patient"
79
- patient_examinations: models.QuerySet["PatientExamination"]
80
-
78
+ patient: models.ForeignKey["Patient"]
79
+ patient_examinations: models.ManyToManyField["PatientExamination", "PatientExamination"]
80
+
81
81
  class Meta:
82
82
  ordering = ['-start_date', 'patient']
83
83
  verbose_name = "Case"
@@ -1,15 +1,3 @@
1
- # Django models to define CaseTemplate and CaseTemplateType models
2
- # (each with "name" field which acts as a natural key)
3
- from .case_template_rule import CaseTemplateRule, CaseTemplateRuleType
4
- from .case_template_rule_value import CaseTemplateRuleValue, CaseTemplateRuleValueType
5
- from .case_template_type import CaseTemplateType
6
- from .case_template import CaseTemplate
1
+ """Case template models have been deprecated and are no longer available."""
7
2
 
8
- __all__ = [
9
- "CaseTemplateRule",
10
- "CaseTemplateRuleType",
11
- "CaseTemplateRuleValue",
12
- "CaseTemplateRuleValueType",
13
- "CaseTemplateType",
14
- "CaseTemplate",
15
- ]
3
+ __all__: list[str] = []