endoreg-db 0.8.8.0__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 (402) hide show
  1. endoreg_db/data/__init__.py +22 -8
  2. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +0 -1
  3. endoreg_db/data/examination/examinations/data.yaml +114 -14
  4. endoreg_db/data/examination/time-type/data.yaml +0 -3
  5. endoreg_db/data/examination_indication/endoscopy.yaml +108 -173
  6. endoreg_db/data/examination_indication_classification/endoscopy.yaml +0 -70
  7. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +33 -37
  8. endoreg_db/data/finding/00_generic.yaml +35 -0
  9. endoreg_db/data/finding/00_generic_complication.yaml +9 -0
  10. endoreg_db/data/finding/01_gastroscopy_baseline.yaml +88 -0
  11. endoreg_db/data/finding/01_gastroscopy_observation.yaml +113 -0
  12. endoreg_db/data/finding/02_colonoscopy_baseline.yaml +53 -0
  13. endoreg_db/data/finding/02_colonoscopy_hidden.yaml +119 -0
  14. endoreg_db/data/finding/02_colonoscopy_observation.yaml +152 -0
  15. endoreg_db/data/finding_classification/00_generic.yaml +44 -0
  16. endoreg_db/data/finding_classification/00_generic_histology.yaml +28 -0
  17. endoreg_db/data/finding_classification/00_generic_lesion.yaml +52 -0
  18. endoreg_db/data/finding_classification/{colonoscopy_bowel_preparation.yaml → 02_colonoscopy_baseline.yaml} +35 -20
  19. endoreg_db/data/finding_classification/02_colonoscopy_histology.yaml +13 -0
  20. endoreg_db/data/finding_classification/02_colonoscopy_other.yaml +12 -0
  21. endoreg_db/data/finding_classification/02_colonoscopy_polyp.yaml +101 -0
  22. endoreg_db/data/finding_classification_choice/{yes_no_na.yaml → 00_generic.yaml} +5 -1
  23. endoreg_db/data/finding_classification_choice/{examination_setting_generic_types.yaml → 00_generic_baseline.yaml} +10 -2
  24. endoreg_db/data/finding_classification_choice/{complication_generic_types.yaml → 00_generic_complication.yaml} +1 -1
  25. endoreg_db/data/finding_classification_choice/{histology.yaml → 00_generic_histology.yaml} +1 -4
  26. endoreg_db/data/finding_classification_choice/00_generic_lesion.yaml +158 -0
  27. endoreg_db/data/finding_classification_choice/{bowel_preparation.yaml → 02_colonoscopy_bowel_preparation.yaml} +1 -30
  28. endoreg_db/data/{_examples/finding_classification_choice/colonoscopy_not_complete_reason.yaml → finding_classification_choice/02_colonoscopy_generic.yaml} +1 -1
  29. endoreg_db/data/finding_classification_choice/{histology_polyp.yaml → 02_colonoscopy_histology.yaml} +1 -1
  30. endoreg_db/data/{_examples/finding_classification_choice/colonoscopy_location.yaml → finding_classification_choice/02_colonoscopy_location.yaml} +23 -4
  31. endoreg_db/data/finding_classification_choice/02_colonoscopy_other.yaml +34 -0
  32. endoreg_db/data/finding_classification_choice/02_colonoscopy_polyp_advanced_imaging.yaml +76 -0
  33. endoreg_db/data/{_examples/finding_classification_choice/colon_lesion_paris.yaml → finding_classification_choice/02_colonoscopy_polyp_morphology.yaml} +26 -8
  34. endoreg_db/data/finding_classification_choice/02_colonoscopy_size.yaml +27 -0
  35. endoreg_db/data/finding_classification_type/{colonoscopy_basic.yaml → 00_generic.yaml} +18 -13
  36. endoreg_db/data/finding_classification_type/02_colonoscopy.yaml +9 -0
  37. endoreg_db/data/finding_intervention/00_generic_endoscopy.yaml +59 -0
  38. endoreg_db/data/finding_intervention/00_generic_endoscopy_ablation.yaml +44 -0
  39. endoreg_db/data/finding_intervention/00_generic_endoscopy_bleeding.yaml +55 -0
  40. endoreg_db/data/finding_intervention/00_generic_endoscopy_resection.yaml +85 -0
  41. endoreg_db/data/finding_intervention/00_generic_endoscopy_stenosis.yaml +17 -0
  42. endoreg_db/data/finding_intervention/00_generic_endoscopy_stent.yaml +9 -0
  43. endoreg_db/data/finding_intervention/01_gastroscopy.yaml +19 -0
  44. endoreg_db/data/finding_intervention/04_eus.yaml +39 -0
  45. endoreg_db/data/finding_intervention/05_ercp.yaml +3 -0
  46. endoreg_db/data/finding_type/data.yaml +8 -12
  47. endoreg_db/data/requirement/01_patient_data.yaml +93 -0
  48. endoreg_db/data/requirement_operator/new_operators.yaml +36 -0
  49. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +0 -2
  50. endoreg_db/data/requirement_set/90_coloreg.yaml +20 -8
  51. endoreg_db/exceptions.py +0 -1
  52. endoreg_db/forms/examination_form.py +1 -1
  53. endoreg_db/helpers/data_loader.py +124 -52
  54. endoreg_db/helpers/default_objects.py +116 -81
  55. endoreg_db/import_files/__init__.py +27 -0
  56. endoreg_db/import_files/context/__init__.py +7 -0
  57. endoreg_db/import_files/context/default_sensitive_meta.py +81 -0
  58. endoreg_db/import_files/context/ensure_center.py +17 -0
  59. endoreg_db/import_files/context/file_lock.py +66 -0
  60. endoreg_db/import_files/context/import_context.py +43 -0
  61. endoreg_db/import_files/context/validate_directories.py +56 -0
  62. endoreg_db/import_files/file_storage/__init__.py +15 -0
  63. endoreg_db/import_files/file_storage/create_report_file.py +76 -0
  64. endoreg_db/import_files/file_storage/create_video_file.py +75 -0
  65. endoreg_db/import_files/file_storage/sensitive_meta_storage.py +39 -0
  66. endoreg_db/import_files/file_storage/state_management.py +400 -0
  67. endoreg_db/import_files/file_storage/storage.py +36 -0
  68. endoreg_db/import_files/import_service.md +26 -0
  69. endoreg_db/import_files/processing/__init__.py +11 -0
  70. endoreg_db/import_files/processing/report_processing/report_anonymization.py +94 -0
  71. endoreg_db/import_files/processing/sensitive_meta_adapter.py +51 -0
  72. endoreg_db/import_files/processing/video_processing/video_anonymization.py +107 -0
  73. endoreg_db/import_files/processing/video_processing/video_cleanup_on_error.py +119 -0
  74. endoreg_db/import_files/pseudonymization/fake.py +52 -0
  75. endoreg_db/import_files/pseudonymization/k_anonymity.py +182 -0
  76. endoreg_db/import_files/pseudonymization/k_pseudonymity.py +128 -0
  77. endoreg_db/import_files/report_import_service.py +141 -0
  78. endoreg_db/import_files/video_import_service.py +150 -0
  79. endoreg_db/management/commands/import_report.py +130 -65
  80. endoreg_db/management/commands/import_video_with_classification.py +1 -1
  81. endoreg_db/management/commands/load_ai_model_data.py +5 -5
  82. endoreg_db/management/commands/load_ai_model_label_data.py +9 -7
  83. endoreg_db/management/commands/load_base_db_data.py +5 -134
  84. endoreg_db/management/commands/load_contraindication_data.py +14 -16
  85. endoreg_db/management/commands/load_disease_classification_choices_data.py +15 -18
  86. endoreg_db/management/commands/load_disease_classification_data.py +15 -18
  87. endoreg_db/management/commands/load_disease_data.py +25 -28
  88. endoreg_db/management/commands/load_endoscope_data.py +20 -27
  89. endoreg_db/management/commands/load_event_data.py +14 -16
  90. endoreg_db/management/commands/load_examination_data.py +31 -44
  91. endoreg_db/management/commands/load_examination_indication_data.py +20 -21
  92. endoreg_db/management/commands/load_finding_data.py +52 -80
  93. endoreg_db/management/commands/load_information_source.py +21 -23
  94. endoreg_db/management/commands/load_lab_value_data.py +17 -26
  95. endoreg_db/management/commands/load_medication_data.py +13 -12
  96. endoreg_db/management/commands/load_organ_data.py +15 -19
  97. endoreg_db/management/commands/load_pdf_type_data.py +19 -18
  98. endoreg_db/management/commands/load_profession_data.py +14 -17
  99. endoreg_db/management/commands/load_qualification_data.py +20 -23
  100. endoreg_db/management/commands/load_report_reader_flag_data.py +17 -19
  101. endoreg_db/management/commands/load_requirement_data.py +14 -20
  102. endoreg_db/management/commands/load_risk_data.py +7 -6
  103. endoreg_db/management/commands/load_shift_data.py +20 -23
  104. endoreg_db/management/commands/load_tag_data.py +8 -11
  105. endoreg_db/management/commands/load_unit_data.py +17 -19
  106. endoreg_db/management/commands/start_filewatcher.py +46 -37
  107. endoreg_db/management/commands/validate_video_files.py +1 -5
  108. endoreg_db/migrations/0001_initial.py +1360 -1812
  109. endoreg_db/models/administration/person/patient/patient.py +72 -46
  110. endoreg_db/models/label/__init__.py +2 -2
  111. endoreg_db/models/label/annotation/video_segmentation_annotation.py +18 -26
  112. endoreg_db/models/label/label_video_segment/label_video_segment.py +23 -1
  113. endoreg_db/models/media/pdf/raw_pdf.py +136 -64
  114. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +34 -10
  115. endoreg_db/models/media/processing_history/__init__.py +5 -0
  116. endoreg_db/models/media/processing_history/processing_history.py +96 -0
  117. endoreg_db/models/media/video/create_from_file.py +101 -31
  118. endoreg_db/models/media/video/video_file.py +125 -105
  119. endoreg_db/models/media/video/video_file_io.py +31 -26
  120. endoreg_db/models/medical/contraindication/README.md +1 -0
  121. endoreg_db/models/medical/examination/examination.py +28 -8
  122. endoreg_db/models/medical/examination/examination_indication.py +13 -79
  123. endoreg_db/models/medical/examination/examination_time.py +8 -3
  124. endoreg_db/models/medical/finding/finding.py +5 -12
  125. endoreg_db/models/medical/finding/finding_classification.py +18 -37
  126. endoreg_db/models/medical/finding/finding_intervention.py +7 -9
  127. endoreg_db/models/medical/hardware/endoscope.py +6 -0
  128. endoreg_db/models/medical/patient/medication_examples.py +5 -1
  129. endoreg_db/models/medical/patient/patient_finding.py +1 -1
  130. endoreg_db/models/metadata/pdf_meta.py +22 -10
  131. endoreg_db/models/metadata/sensitive_meta.py +3 -0
  132. endoreg_db/models/metadata/sensitive_meta_logic.py +200 -124
  133. endoreg_db/models/other/information_source.py +27 -6
  134. endoreg_db/models/report/__init__.py +0 -0
  135. endoreg_db/models/report/images.py +0 -0
  136. endoreg_db/models/report/report.py +6 -0
  137. endoreg_db/models/requirement/requirement.py +59 -399
  138. endoreg_db/models/requirement/requirement_operator.py +86 -98
  139. endoreg_db/models/state/audit_ledger.py +4 -5
  140. endoreg_db/models/state/raw_pdf.py +69 -30
  141. endoreg_db/models/state/video.py +64 -49
  142. endoreg_db/models/upload_job.py +33 -9
  143. endoreg_db/models/utils.py +27 -23
  144. endoreg_db/queries/__init__.py +3 -1
  145. endoreg_db/schemas/examination_evaluation.py +1 -1
  146. endoreg_db/serializers/__init__.py +2 -8
  147. endoreg_db/serializers/label_video_segment/label_video_segment.py +2 -29
  148. endoreg_db/serializers/meta/__init__.py +1 -6
  149. endoreg_db/serializers/misc/sensitive_patient_data.py +50 -26
  150. endoreg_db/serializers/patient_examination/patient_examination.py +3 -3
  151. endoreg_db/serializers/pdf/anony_text_validation.py +39 -23
  152. endoreg_db/serializers/video/video_file_list.py +65 -34
  153. endoreg_db/services/__old/pdf_import.py +1487 -0
  154. endoreg_db/services/__old/video_import.py +1306 -0
  155. endoreg_db/services/anonymization.py +63 -26
  156. endoreg_db/services/lookup_service.py +28 -28
  157. endoreg_db/services/lookup_store.py +2 -2
  158. endoreg_db/services/pdf_import.py +0 -1480
  159. endoreg_db/services/report_import.py +10 -0
  160. endoreg_db/services/video_import.py +6 -1165
  161. endoreg_db/tasks/upload_tasks.py +79 -70
  162. endoreg_db/tasks/video_ingest.py +8 -4
  163. endoreg_db/urls/__init__.py +0 -14
  164. endoreg_db/urls/ai.py +32 -0
  165. endoreg_db/urls/media.py +21 -24
  166. endoreg_db/utils/dataloader.py +87 -57
  167. endoreg_db/utils/paths.py +110 -46
  168. endoreg_db/utils/pipelines/Readme.md +1 -1
  169. endoreg_db/utils/requirement_operator_logic/new_operator_logic.py +97 -0
  170. endoreg_db/views/__init__.py +85 -173
  171. endoreg_db/views/ai/__init__.py +8 -0
  172. endoreg_db/views/ai/label.py +155 -0
  173. endoreg_db/views/anonymization/media_management.py +8 -7
  174. endoreg_db/views/anonymization/overview.py +97 -68
  175. endoreg_db/views/anonymization/validate.py +25 -21
  176. endoreg_db/views/media/__init__.py +5 -20
  177. endoreg_db/views/media/pdf_media.py +109 -65
  178. endoreg_db/views/media/sensitive_metadata.py +163 -148
  179. endoreg_db/views/meta/__init__.py +0 -8
  180. endoreg_db/views/misc/__init__.py +1 -7
  181. endoreg_db/views/misc/upload_views.py +94 -93
  182. endoreg_db/views/report/__init__.py +7 -0
  183. endoreg_db/views/{pdf → report}/reimport.py +45 -24
  184. endoreg_db/views/{pdf/pdf_stream.py → report/report_stream.py} +40 -32
  185. endoreg_db/views/requirement/lookup_store.py +22 -90
  186. endoreg_db/views/video/__init__.py +23 -22
  187. endoreg_db/views/video/correction.py +201 -172
  188. endoreg_db/views/video/reimport.py +1 -1
  189. endoreg_db/views/{media/video_segments.py → video/segments_crud.py} +75 -37
  190. endoreg_db/views/video/{video_meta.py → video_meta_stats.py} +2 -2
  191. endoreg_db/views/video/video_stream.py +7 -8
  192. {endoreg_db-0.8.8.0.dist-info → endoreg_db-0.8.8.9.dist-info}/METADATA +2 -2
  193. {endoreg_db-0.8.8.0.dist-info → endoreg_db-0.8.8.9.dist-info}/RECORD +217 -335
  194. {endoreg_db-0.8.8.0.dist-info → endoreg_db-0.8.8.9.dist-info}/WHEEL +1 -1
  195. endoreg_db/data/_examples/disease.yaml +0 -55
  196. endoreg_db/data/_examples/disease_classification.yaml +0 -13
  197. endoreg_db/data/_examples/disease_classification_choice.yaml +0 -62
  198. endoreg_db/data/_examples/event.yaml +0 -64
  199. endoreg_db/data/_examples/examination.yaml +0 -72
  200. endoreg_db/data/_examples/finding/anatomy_colon.yaml +0 -128
  201. endoreg_db/data/_examples/finding/colonoscopy.yaml +0 -40
  202. endoreg_db/data/_examples/finding/colonoscopy_bowel_prep.yaml +0 -56
  203. endoreg_db/data/_examples/finding/complication.yaml +0 -16
  204. endoreg_db/data/_examples/finding/data.yaml +0 -105
  205. endoreg_db/data/_examples/finding/examination_setting.yaml +0 -16
  206. endoreg_db/data/_examples/finding/medication_related.yaml +0 -18
  207. endoreg_db/data/_examples/finding/outcome.yaml +0 -12
  208. endoreg_db/data/_examples/finding_classification/colonoscopy_bowel_preparation.yaml +0 -68
  209. endoreg_db/data/_examples/finding_classification/colonoscopy_jnet.yaml +0 -22
  210. endoreg_db/data/_examples/finding_classification/colonoscopy_kudo.yaml +0 -25
  211. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_circularity.yaml +0 -20
  212. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_planarity.yaml +0 -24
  213. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_size.yaml +0 -68
  214. endoreg_db/data/_examples/finding_classification/colonoscopy_lesion_surface.yaml +0 -20
  215. endoreg_db/data/_examples/finding_classification/colonoscopy_location.yaml +0 -80
  216. endoreg_db/data/_examples/finding_classification/colonoscopy_lst.yaml +0 -21
  217. endoreg_db/data/_examples/finding_classification/colonoscopy_nice.yaml +0 -20
  218. endoreg_db/data/_examples/finding_classification/colonoscopy_paris.yaml +0 -26
  219. endoreg_db/data/_examples/finding_classification/colonoscopy_sano.yaml +0 -22
  220. endoreg_db/data/_examples/finding_classification/colonoscopy_summary.yaml +0 -53
  221. endoreg_db/data/_examples/finding_classification/complication_generic.yaml +0 -25
  222. endoreg_db/data/_examples/finding_classification/examination_setting_generic.yaml +0 -40
  223. endoreg_db/data/_examples/finding_classification/histology_colo.yaml +0 -51
  224. endoreg_db/data/_examples/finding_classification/intervention_required.yaml +0 -26
  225. endoreg_db/data/_examples/finding_classification/medication_related.yaml +0 -23
  226. endoreg_db/data/_examples/finding_classification/visualized.yaml +0 -33
  227. endoreg_db/data/_examples/finding_classification_choice/bowel_preparation.yaml +0 -78
  228. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_circularity_default.yaml +0 -32
  229. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_jnet.yaml +0 -15
  230. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_kudo.yaml +0 -23
  231. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_lst.yaml +0 -15
  232. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_nice.yaml +0 -17
  233. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_planarity_default.yaml +0 -49
  234. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_sano.yaml +0 -14
  235. endoreg_db/data/_examples/finding_classification_choice/colon_lesion_surface_intact_default.yaml +0 -36
  236. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_size.yaml +0 -82
  237. endoreg_db/data/_examples/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +0 -15
  238. endoreg_db/data/_examples/finding_classification_choice/complication_generic_types.yaml +0 -15
  239. endoreg_db/data/_examples/finding_classification_choice/examination_setting_generic_types.yaml +0 -15
  240. endoreg_db/data/_examples/finding_classification_choice/histology.yaml +0 -24
  241. endoreg_db/data/_examples/finding_classification_choice/histology_polyp.yaml +0 -20
  242. endoreg_db/data/_examples/finding_classification_choice/outcome.yaml +0 -19
  243. endoreg_db/data/_examples/finding_classification_choice/yes_no_na.yaml +0 -11
  244. endoreg_db/data/_examples/finding_classification_type/colonoscopy_basic.yaml +0 -48
  245. endoreg_db/data/_examples/finding_intervention/endoscopy.yaml +0 -43
  246. endoreg_db/data/_examples/finding_intervention/endoscopy_colonoscopy.yaml +0 -168
  247. endoreg_db/data/_examples/finding_intervention/endoscopy_egd.yaml +0 -128
  248. endoreg_db/data/_examples/finding_intervention/endoscopy_ercp.yaml +0 -32
  249. endoreg_db/data/_examples/finding_intervention/endoscopy_eus_lower.yaml +0 -9
  250. endoreg_db/data/_examples/finding_intervention/endoscopy_eus_upper.yaml +0 -36
  251. endoreg_db/data/_examples/finding_intervention_type/endoscopy.yaml +0 -15
  252. endoreg_db/data/_examples/finding_type/data.yaml +0 -43
  253. endoreg_db/data/_examples/requirement/age.yaml +0 -26
  254. endoreg_db/data/_examples/requirement/gender.yaml +0 -25
  255. endoreg_db/data/_examples/requirement_set/01_endoscopy_generic.yaml +0 -48
  256. endoreg_db/data/_examples/requirement_set/colonoscopy_austria_screening.yaml +0 -57
  257. endoreg_db/data/_examples/requirement_set/endoscopy_bleeding_risk.yaml +0 -52
  258. endoreg_db/data/_examples/yaml_examples.xlsx +0 -0
  259. endoreg_db/data/finding/anatomy_colon.yaml +0 -128
  260. endoreg_db/data/finding/colonoscopy.yaml +0 -40
  261. endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +0 -56
  262. endoreg_db/data/finding/complication.yaml +0 -16
  263. endoreg_db/data/finding/data.yaml +0 -105
  264. endoreg_db/data/finding/examination_setting.yaml +0 -16
  265. endoreg_db/data/finding/medication_related.yaml +0 -18
  266. endoreg_db/data/finding/outcome.yaml +0 -12
  267. endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +0 -22
  268. endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +0 -25
  269. endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +0 -20
  270. endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +0 -24
  271. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +0 -38
  272. endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +0 -20
  273. endoreg_db/data/finding_classification/colonoscopy_location.yaml +0 -49
  274. endoreg_db/data/finding_classification/colonoscopy_lst.yaml +0 -21
  275. endoreg_db/data/finding_classification/colonoscopy_nice.yaml +0 -20
  276. endoreg_db/data/finding_classification/colonoscopy_paris.yaml +0 -26
  277. endoreg_db/data/finding_classification/colonoscopy_sano.yaml +0 -22
  278. endoreg_db/data/finding_classification/colonoscopy_summary.yaml +0 -53
  279. endoreg_db/data/finding_classification/complication_generic.yaml +0 -25
  280. endoreg_db/data/finding_classification/examination_setting_generic.yaml +0 -40
  281. endoreg_db/data/finding_classification/histology_colo.yaml +0 -43
  282. endoreg_db/data/finding_classification/intervention_required.yaml +0 -26
  283. endoreg_db/data/finding_classification/medication_related.yaml +0 -23
  284. endoreg_db/data/finding_classification/visualized.yaml +0 -33
  285. endoreg_db/data/finding_classification_choice/colon_lesion_circularity_default.yaml +0 -32
  286. endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +0 -15
  287. endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +0 -23
  288. endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +0 -15
  289. endoreg_db/data/finding_classification_choice/colon_lesion_nice.yaml +0 -17
  290. endoreg_db/data/finding_classification_choice/colon_lesion_paris.yaml +0 -57
  291. endoreg_db/data/finding_classification_choice/colon_lesion_planarity_default.yaml +0 -49
  292. endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +0 -14
  293. endoreg_db/data/finding_classification_choice/colon_lesion_surface_intact_default.yaml +0 -36
  294. endoreg_db/data/finding_classification_choice/colonoscopy_location.yaml +0 -229
  295. endoreg_db/data/finding_classification_choice/colonoscopy_not_complete_reason.yaml +0 -19
  296. endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +0 -82
  297. endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +0 -15
  298. endoreg_db/data/finding_classification_choice/outcome.yaml +0 -19
  299. endoreg_db/data/finding_intervention/endoscopy.yaml +0 -43
  300. endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +0 -168
  301. endoreg_db/data/finding_intervention/endoscopy_egd.yaml +0 -128
  302. endoreg_db/data/finding_intervention/endoscopy_ercp.yaml +0 -32
  303. endoreg_db/data/finding_intervention/endoscopy_eus_lower.yaml +0 -9
  304. endoreg_db/data/finding_intervention/endoscopy_eus_upper.yaml +0 -36
  305. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +0 -79
  306. endoreg_db/data/requirement/age.yaml +0 -26
  307. endoreg_db/data/requirement/colonoscopy_baseline_austria.yaml +0 -45
  308. endoreg_db/data/requirement/disease_cardiovascular.yaml +0 -79
  309. endoreg_db/data/requirement/disease_classification_choice_cardiovascular.yaml +0 -41
  310. endoreg_db/data/requirement/disease_hepatology.yaml +0 -12
  311. endoreg_db/data/requirement/disease_misc.yaml +0 -12
  312. endoreg_db/data/requirement/disease_renal.yaml +0 -96
  313. endoreg_db/data/requirement/endoscopy_bleeding_risk.yaml +0 -59
  314. endoreg_db/data/requirement/event_cardiology.yaml +0 -251
  315. endoreg_db/data/requirement/event_requirements.yaml +0 -145
  316. endoreg_db/data/requirement/finding_colon_polyp.yaml +0 -50
  317. endoreg_db/data/requirement/gender.yaml +0 -25
  318. endoreg_db/data/requirement/lab_value.yaml +0 -441
  319. endoreg_db/data/requirement/medication.yaml +0 -93
  320. endoreg_db/data/requirement_operator/age.yaml +0 -13
  321. endoreg_db/data/requirement_operator/lab_operators.yaml +0 -129
  322. endoreg_db/data/requirement_operator/model_operators.yaml +0 -96
  323. endoreg_db/management/commands/init_default_ai_model.py +0 -112
  324. endoreg_db/management/commands/reset_celery_schedule.py +0 -9
  325. endoreg_db/management/commands/validate_video.py +0 -204
  326. endoreg_db/migrations/0002_requirementset_depends_on.py +0 -18
  327. endoreg_db/migrations/_old/0001_initial.py +0 -1857
  328. endoreg_db/migrations/_old/0002_add_video_correction_models.py +0 -52
  329. endoreg_db/migrations/_old/0003_add_center_display_name.py +0 -30
  330. endoreg_db/migrations/_old/0004_employee_city_employee_post_code_employee_street_and_more.py +0 -68
  331. endoreg_db/migrations/_old/0004_remove_casetemplate_rules_and_more.py +0 -77
  332. endoreg_db/migrations/_old/0005_merge_20251111_1003.py +0 -14
  333. endoreg_db/migrations/_old/0006_sensitivemeta_anonymized_text_and_more.py +0 -68
  334. endoreg_db/migrations/_old/0007_remove_rule_attribute_dtype_remove_rule_rule_type_and_more.py +0 -89
  335. endoreg_db/migrations/_old/0008_remove_event_event_classification_and_more.py +0 -27
  336. endoreg_db/migrations/_old/0009_alter_modelmeta_options_and_more.py +0 -21
  337. endoreg_db/renames.yml +0 -8
  338. endoreg_db/serializers/_old/raw_pdf_meta_validation.py +0 -223
  339. endoreg_db/serializers/_old/raw_video_meta_validation.py +0 -179
  340. endoreg_db/serializers/_old/video.py +0 -71
  341. endoreg_db/serializers/meta/pdf_file_meta_extraction.py +0 -115
  342. endoreg_db/serializers/meta/report_meta.py +0 -53
  343. endoreg_db/serializers/report/__init__.py +0 -9
  344. endoreg_db/serializers/report/mixins.py +0 -45
  345. endoreg_db/serializers/report/report.py +0 -105
  346. endoreg_db/serializers/report/report_list.py +0 -22
  347. endoreg_db/serializers/report/secure_file_url.py +0 -26
  348. endoreg_db/services/requirements_object.py +0 -147
  349. endoreg_db/services/storage_aware_video_processor.py +0 -370
  350. endoreg_db/urls/files.py +0 -6
  351. endoreg_db/urls/label_video_segment_validate.py +0 -33
  352. endoreg_db/urls/label_video_segments.py +0 -46
  353. endoreg_db/views/label/__init__.py +0 -5
  354. endoreg_db/views/label/label.py +0 -15
  355. endoreg_db/views/label_video_segment/__init__.py +0 -16
  356. endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +0 -44
  357. endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +0 -50
  358. endoreg_db/views/label_video_segment/label_video_segment.py +0 -77
  359. endoreg_db/views/label_video_segment/label_video_segment_by_label.py +0 -174
  360. endoreg_db/views/label_video_segment/label_video_segment_detail.py +0 -73
  361. endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +0 -46
  362. endoreg_db/views/label_video_segment/validate.py +0 -226
  363. endoreg_db/views/media/segments.py +0 -71
  364. endoreg_db/views/meta/available_files_list.py +0 -146
  365. endoreg_db/views/meta/report_meta.py +0 -53
  366. endoreg_db/views/meta/sensitive_meta_detail.py +0 -85
  367. endoreg_db/views/misc/secure_file_serving_view.py +0 -80
  368. endoreg_db/views/misc/secure_file_url_view.py +0 -84
  369. endoreg_db/views/misc/secure_url_validate.py +0 -79
  370. endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +0 -164
  371. endoreg_db/views/patient_finding_location/__init__.py +0 -5
  372. endoreg_db/views/patient_finding_location/pfl_create.py +0 -70
  373. endoreg_db/views/patient_finding_morphology/__init__.py +0 -5
  374. endoreg_db/views/patient_finding_morphology/pfm_create.py +0 -70
  375. endoreg_db/views/pdf/__init__.py +0 -8
  376. endoreg_db/views/video/segmentation.py +0 -274
  377. endoreg_db/views/video/task_status.py +0 -49
  378. endoreg_db/views/video/timeline.py +0 -46
  379. endoreg_db/views/video/video_analyze.py +0 -52
  380. /endoreg_db/data/requirement/{colon_polyp_intervention.yaml → old/colon_polyp_intervention.yaml} +0 -0
  381. /endoreg_db/data/{_examples/requirement → requirement/old}/colonoscopy_baseline_austria.yaml +0 -0
  382. /endoreg_db/data/requirement/{coloreg_colon_polyp.yaml → old/coloreg_colon_polyp.yaml} +0 -0
  383. /endoreg_db/data/{_examples/requirement → requirement/old}/disease_cardiovascular.yaml +0 -0
  384. /endoreg_db/data/{_examples/requirement → requirement/old}/disease_classification_choice_cardiovascular.yaml +0 -0
  385. /endoreg_db/data/{_examples/requirement → requirement/old}/disease_hepatology.yaml +0 -0
  386. /endoreg_db/data/{_examples/requirement → requirement/old}/disease_misc.yaml +0 -0
  387. /endoreg_db/data/{_examples/requirement → requirement/old}/disease_renal.yaml +0 -0
  388. /endoreg_db/data/{_examples/requirement → requirement/old}/endoscopy_bleeding_risk.yaml +0 -0
  389. /endoreg_db/data/{_examples/requirement → requirement/old}/event_cardiology.yaml +0 -0
  390. /endoreg_db/data/{_examples/requirement → requirement/old}/event_requirements.yaml +0 -0
  391. /endoreg_db/data/{_examples/requirement → requirement/old}/finding_colon_polyp.yaml +0 -0
  392. /endoreg_db/{migrations/__init__.py → data/requirement/old/gender.yaml} +0 -0
  393. /endoreg_db/data/{_examples/requirement → requirement/old}/lab_value.yaml +0 -0
  394. /endoreg_db/data/{_examples/requirement → requirement/old}/medication.yaml +0 -0
  395. /endoreg_db/data/{_examples/requirement_operator → requirement_operator/_old}/age.yaml +0 -0
  396. /endoreg_db/data/{_examples/requirement_operator → requirement_operator/_old}/lab_operators.yaml +0 -0
  397. /endoreg_db/data/{_examples/requirement_operator → requirement_operator/_old}/model_operators.yaml +0 -0
  398. /endoreg_db/{urls/sensitive_meta.py → import_files/pseudonymization/__init__.py} +0 -0
  399. /endoreg_db/{views/pdf/pdf_stream_views.py → import_files/pseudonymization/pseudonymize.py} +0 -0
  400. /endoreg_db/utils/requirement_operator_logic/{lab_value_operators.py → _old/lab_value_operators.py} +0 -0
  401. /endoreg_db/utils/requirement_operator_logic/{model_evaluators.py → _old/model_evaluators.py} +0 -0
  402. {endoreg_db-0.8.8.0.dist-info → endoreg_db-0.8.8.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,46 +1,44 @@
1
- from django.conf import settings
2
1
  import os
2
+
3
+ import yaml
4
+ from django.conf import settings
3
5
  from django.core.management.base import BaseCommand
6
+
7
+ from ...data import REPORT_READER_FLAG_DATA_DIR
4
8
  from ...models import ReportReaderFlag
5
- import yaml
6
9
  from ...utils import load_model_data_from_yaml
7
- from ...data import REPORT_READER_FLAG_DATA_DIR
8
10
 
9
- SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
11
+ SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
10
12
 
11
13
  MODEL_0 = ReportReaderFlag
12
14
 
13
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
15
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
14
16
  MODEL_0.__name__,
15
17
  ]
16
18
 
17
19
  IMPORT_METADATA = {
18
20
  MODEL_0.__name__: {
19
- "dir": SOURCE_DIR, # e.g. "interventions"
20
- "model": MODEL_0, # e.g. Intervention
21
- "foreign_keys": [], # e.g. ["intervention_types"]
22
- "foreign_key_models": [] # e.g. [InterventionType]
21
+ "dir": SOURCE_DIR, # e.g. "interventions"
22
+ "model": MODEL_0,
23
+ "foreign_keys": [], # e.g. ["intervention_types"]
24
+ "foreign_key_models": [], # e.g. [InterventionType]
23
25
  }
24
26
  }
25
27
 
28
+
26
29
  class Command(BaseCommand):
27
30
  help = """Load all .yaml files in the data/intervention directory
28
31
  into the Intervention and InterventionType model"""
29
32
 
30
33
  def add_arguments(self, parser):
31
34
  parser.add_argument(
32
- '--verbose',
33
- action='store_true',
34
- help='Display verbose output',
35
+ "--verbose",
36
+ action="store_true",
37
+ help="Display verbose output",
35
38
  )
36
39
 
37
40
  def handle(self, *args, **options):
38
- verbose = options['verbose']
41
+ verbose = options["verbose"]
39
42
  for model_name in IMPORT_MODELS:
40
43
  _metadata = IMPORT_METADATA[model_name]
41
- load_model_data_from_yaml(
42
- self,
43
- model_name,
44
- _metadata,
45
- verbose
46
- )
44
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -45,7 +45,7 @@ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
45
45
  RequirementOperator.__name__,
46
46
  Requirement.__name__,
47
47
  RequirementSetType.__name__,
48
- ExaminationRequirementSet.__name__,
48
+ # ExaminationRequirementSet.__name__,
49
49
  RequirementSet.__name__,
50
50
  ]
51
51
 
@@ -62,46 +62,38 @@ def _validate_requirement_configuration(fields: dict, *, entry: dict, model):
62
62
  return True
63
63
  return any(not item for item in value)
64
64
 
65
- missing = [
66
- key for key in ("requirement_types", "operators") if _values_missing(key)
67
- ]
65
+ missing = [key for key in ("requirement_types", "operators") if _values_missing(key)]
68
66
  if missing:
69
67
  missing_display = ", ".join(missing)
70
- raise ValueError(
71
- f"{model.__name__} '{name}' is missing required configuration for: {missing_display}."
72
- )
68
+ raise ValueError(f"{model.__name__} '{name}' is missing required configuration for: {missing_display}.")
73
69
 
74
70
 
75
71
  IMPORT_METADATA = {
76
72
  RequirementType.__name__: {
77
73
  "dir": REQUIREMENT_TYPE_DATA_DIR, # e.g. "interventions"
78
- "model": RequirementType, # e.g. Intervention
74
+ "model": RequirementType,
79
75
  "foreign_keys": [], # e.g. ["intervention_types"]
80
76
  "foreign_key_models": [], # e.g. [InterventionType]
81
77
  },
82
78
  RequirementOperator.__name__: {
83
79
  "dir": REQUIREMENT_OPERATOR_DATA_DIR, # e.g. "interventions"
84
- "model": RequirementOperator, # e.g. Intervention
80
+ "model": RequirementOperator,
85
81
  "foreign_keys": [], # e.g. ["intervention_types"]
86
82
  "foreign_key_models": [], # e.g. [InterventionType]
87
83
  },
88
84
  ExaminationRequirementSet.__name__: {
89
85
  "dir": EXAMINATION_REQUIREMENT_SET_DATA_DIR, # e.g. "interventions"
90
- "model": ExaminationRequirementSet, # e.g. Intervention
91
- "foreign_keys": [
92
- "examinations",
93
- ], # Through model uses foreign keys of both models
94
- "foreign_key_models": [
95
- Examination,
96
- ],
86
+ "model": ExaminationRequirementSet,
87
+ "foreign_keys": [], # Through model uses foreign keys of both models
88
+ "foreign_key_models": [],
97
89
  },
98
90
  # ExaminationRequirementSet.__name__,
99
91
  Requirement.__name__: {
100
92
  "dir": REQUIREMENT_DATA_DIR, # e.g. "interventions"
101
- "model": Requirement, # e.g. Intervention
93
+ "model": Requirement,
102
94
  "foreign_keys": [
103
95
  "requirement_types",
104
- "operators",
96
+ "operator",
105
97
  "unit",
106
98
  "examinations",
107
99
  "examination_indications",
@@ -149,13 +141,13 @@ IMPORT_METADATA = {
149
141
  },
150
142
  RequirementSetType.__name__: {
151
143
  "dir": REQUIREMENT_SET_TYPE_DATA_DIR, # e.g. "interventions"
152
- "model": RequirementSetType, # e.g. Intervention
144
+ "model": RequirementSetType,
153
145
  "foreign_keys": [], # e.g. ["intervention_types"]
154
146
  "foreign_key_models": [], # e.g. [InterventionType]
155
147
  },
156
148
  RequirementSet.__name__: {
157
149
  "dir": REQUIREMENT_SET_DATA_DIR, # e.g. "interventions"
158
- "model": RequirementSet, # e.g. Intervention
150
+ "model": RequirementSet,
159
151
  "foreign_keys": [
160
152
  "requirement_set_type",
161
153
  "requirements", # This is a many-to-many field
@@ -163,6 +155,7 @@ IMPORT_METADATA = {
163
155
  "information_sources",
164
156
  "tags",
165
157
  "reqset_exam_links",
158
+ "depends_on",
166
159
  ], # e.g. ["intervention_types"]
167
160
  "foreign_key_models": [
168
161
  RequirementSetType,
@@ -171,6 +164,7 @@ IMPORT_METADATA = {
171
164
  InformationSource,
172
165
  Tag,
173
166
  ExaminationRequirementSet,
167
+ RequirementSet,
174
168
  ], # e.g. [InterventionType]
175
169
  },
176
170
  }
@@ -1,8 +1,9 @@
1
1
  from django.core.management.base import BaseCommand
2
+
2
3
  from endoreg_db.models import Risk, RiskType
3
- from ...utils import load_model_data_from_yaml
4
- from ...data import RISK_DATA_DIR, RISK_TYPE_DATA_DIR
5
4
 
5
+ from ...data import RISK_DATA_DIR, RISK_TYPE_DATA_DIR
6
+ from ...utils import load_model_data_from_yaml
6
7
 
7
8
  IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
8
9
  RiskType.__name__,
@@ -12,13 +13,13 @@ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
12
13
  IMPORT_METADATA = {
13
14
  RiskType.__name__: {
14
15
  "dir": RISK_TYPE_DATA_DIR, # e.g. "interventions"
15
- "model": RiskType, # e.g. Intervention
16
+ "model": RiskType,
16
17
  "foreign_keys": [], # e.g. ["intervention_types"]
17
18
  "foreign_key_models": [], # e.g. [InterventionType]
18
19
  },
19
20
  Risk.__name__: {
20
21
  "dir": RISK_DATA_DIR, # e.g. "interventions"
21
- "model": Risk, # e.g. Intervention
22
+ "model": Risk,
22
23
  "foreign_keys": ["risk_type"], # e.g. ["intervention_types"]
23
24
  "foreign_key_models": [RiskType], # e.g. [InterventionType]
24
25
  },
@@ -32,7 +33,7 @@ class Command(BaseCommand):
32
33
  def add_arguments(self, parser):
33
34
  """
34
35
  Adds the '--verbose' flag to the argument parser for detailed output.
35
-
36
+
36
37
  This method extends the given parser by adding an option that, when specified,
37
38
  enables verbose output during command execution.
38
39
  """
@@ -45,7 +46,7 @@ class Command(BaseCommand):
45
46
  def handle(self, *args, **options):
46
47
  """
47
48
  Execute the command to load YAML data into configured models.
48
-
49
+
49
50
  Retrieves the verbosity setting from the options and iterates over each model in IMPORT_MODELS.
50
51
  For each model, it obtains the corresponding metadata from IMPORT_METADATA and calls the utility
51
52
  function load_model_data_from_yaml to load data from the associated YAML files.
@@ -1,32 +1,34 @@
1
1
  from django.core.management.base import BaseCommand
2
+
3
+ from ...data import REPORT_READER_FLAG_DATA_DIR
2
4
  from ...models import Shift, ShiftType
3
5
  from ...utils import load_model_data_from_yaml
4
- from ...data import REPORT_READER_FLAG_DATA_DIR
5
6
 
6
- SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
7
+ SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
7
8
 
8
9
  model_0 = ShiftType
9
10
  model_1 = Shift
10
11
 
11
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
12
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
12
13
  model_0.__name__,
13
14
  ]
14
15
 
15
16
  IMPORT_METADATA = {
16
17
  model_0.__name__: {
17
- "dir": SOURCE_DIR, # e.g. "interventions"
18
- "model": model_0, # e.g. Intervention
19
- "foreign_keys": [], # e.g. ["intervention_types"]
20
- "foreign_key_models": [] # e.g. [InterventionType]
18
+ "dir": SOURCE_DIR, # e.g. "interventions"
19
+ "model": model_0,
20
+ "foreign_keys": [], # e.g. ["intervention_types"]
21
+ "foreign_key_models": [], # e.g. [InterventionType]
21
22
  },
22
23
  model_1.__name__: {
23
- "dir": SOURCE_DIR, # e.g. "interventions"
24
- "model": model_1, # e.g. Intervention
25
- "foreign_keys": ["shift_types"], # e.g. ["intervention_types"]
26
- "foreign_key_models": [model_0] # e.g. [InterventionType]
27
- }
24
+ "dir": SOURCE_DIR, # e.g. "interventions"
25
+ "model": model_1,
26
+ "foreign_keys": ["shift_types"], # e.g. ["intervention_types"]
27
+ "foreign_key_models": [model_0], # e.g. [InterventionType]
28
+ },
28
29
  }
29
30
 
31
+
30
32
  class Command(BaseCommand):
31
33
  help = """Load all .yaml files in the data/shift directory
32
34
  into the Shift and ShiftType model"""
@@ -36,25 +38,20 @@ class Command(BaseCommand):
36
38
  Adds the --verbose command-line option to enable detailed output during execution.
37
39
  """
38
40
  parser.add_argument(
39
- '--verbose',
40
- action='store_true',
41
- help='Display verbose output',
41
+ "--verbose",
42
+ action="store_true",
43
+ help="Display verbose output",
42
44
  )
43
45
 
44
46
  def handle(self, *args, **options):
45
47
  """
46
48
  Loads YAML data files into models defined in IMPORT_MODELS using provided metadata.
47
-
49
+
48
50
  Iterates over each model specified in IMPORT_MODELS, retrieves its import metadata,
49
51
  and calls the data loading utility to populate the database from YAML files. Supports
50
52
  optional verbose output if enabled via command-line options.
51
53
  """
52
- verbose = options['verbose']
54
+ verbose = options["verbose"]
53
55
  for model_name in IMPORT_MODELS:
54
56
  _metadata = IMPORT_METADATA[model_name]
55
- load_model_data_from_yaml(
56
- self,
57
- model_name,
58
- _metadata,
59
- verbose
60
- )
57
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -1,14 +1,11 @@
1
1
  from django.core.management.base import BaseCommand
2
+
2
3
  from endoreg_db.models import (
3
4
  Tag,
4
-
5
5
  )
6
6
 
7
+ from ...data import TAG_DATA_DIR
7
8
  from ...utils import load_model_data_from_yaml
8
- from ...data import (
9
- TAG_DATA_DIR
10
- )
11
-
12
9
 
13
10
  IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
14
11
  Tag.__name__,
@@ -17,7 +14,7 @@ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
17
14
  IMPORT_METADATA = {
18
15
  Tag.__name__: {
19
16
  "dir": TAG_DATA_DIR, # e.g. "interventions"
20
- "model": Tag, # e.g. Intervention
17
+ "model": Tag,
21
18
  "foreign_keys": [], # e.g. ["intervention_types"]
22
19
  "foreign_key_models": [], # e.g. [InterventionType]
23
20
  },
@@ -32,7 +29,7 @@ class Command(BaseCommand):
32
29
  def add_arguments(self, parser):
33
30
  """
34
31
  Add command-line arguments to enable verbose output.
35
-
32
+
36
33
  Adds an optional '--verbose' flag to the command parser. When specified,
37
34
  this flag causes the command to display detailed output during execution.
38
35
  """
@@ -45,10 +42,10 @@ class Command(BaseCommand):
45
42
  def handle(self, *args, **options):
46
43
  """
47
44
  Executes data import for requirement models from YAML files.
48
-
49
- Retrieves the verbosity setting from the command options and iterates over each model
50
- listed in IMPORT_MODELS. For each model, it obtains the corresponding metadata from
51
- IMPORT_METADATA and calls a helper to load the YAML data into the database. Verbose mode
45
+
46
+ Retrieves the verbosity setting from the command options and iterates over each model
47
+ listed in IMPORT_MODELS. For each model, it obtains the corresponding metadata from
48
+ IMPORT_METADATA and calls a helper to load the YAML data into the database. Verbose mode
52
49
  enables detailed output during the process.
53
50
  """
54
51
  verbose = options["verbose"]
@@ -1,46 +1,44 @@
1
- from django.conf import settings
2
1
  import os
2
+
3
+ import yaml
4
+ from django.conf import settings
3
5
  from django.core.management.base import BaseCommand
6
+
7
+ from ...data import UNIT_DATA_DIR
4
8
  from ...models import Unit
5
- import yaml
6
9
  from ...utils import load_model_data_from_yaml
7
- from ...data import UNIT_DATA_DIR
8
10
 
9
- SOURCE_DIR = UNIT_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
11
+ SOURCE_DIR = UNIT_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
10
12
 
11
13
  MODEL_0 = Unit
12
14
 
13
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
15
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
14
16
  MODEL_0.__name__,
15
17
  ]
16
18
 
17
19
  IMPORT_METADATA = {
18
20
  MODEL_0.__name__: {
19
- "dir": SOURCE_DIR, # e.g. "interventions"
20
- "model": MODEL_0, # e.g. Intervention
21
- "foreign_keys": [], # e.g. ["intervention_types"]
22
- "foreign_key_models": [] # e.g. [InterventionType]
21
+ "dir": SOURCE_DIR, # e.g. "interventions"
22
+ "model": MODEL_0,
23
+ "foreign_keys": [], # e.g. ["intervention_types"]
24
+ "foreign_key_models": [], # e.g. [InterventionType]
23
25
  }
24
26
  }
25
27
 
28
+
26
29
  class Command(BaseCommand):
27
30
  help = """Load all .yaml files in the data/intervention directory
28
31
  into the Intervention and InterventionType model"""
29
32
 
30
33
  def add_arguments(self, parser):
31
34
  parser.add_argument(
32
- '--verbose',
33
- action='store_true',
34
- help='Display verbose output',
35
+ "--verbose",
36
+ action="store_true",
37
+ help="Display verbose output",
35
38
  )
36
39
 
37
40
  def handle(self, *args, **options):
38
- verbose = options['verbose']
41
+ verbose = options["verbose"]
39
42
  for model_name in IMPORT_MODELS:
40
43
  _metadata = IMPORT_METADATA[model_name]
41
- load_model_data_from_yaml(
42
- self,
43
- model_name,
44
- _metadata,
45
- verbose
46
- )
44
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -4,72 +4,80 @@ Django Management Command for File Watcher Service
4
4
  This command provides Django integration for the file watcher service.
5
5
  """
6
6
 
7
- from django.core.management.base import BaseCommand
8
- from django.conf import settings
9
- import sys
10
7
  import os
8
+ import sys
11
9
  from pathlib import Path
12
10
 
11
+ from django.conf import settings
12
+ from django.core.management.base import BaseCommand
13
+
13
14
 
14
15
  class Command(BaseCommand):
15
16
  help = """
16
- Start the file watcher service for automatic video and PDF processing.
17
+ Start the file watcher service for automatic video and report processing.
17
18
 
18
19
  This command monitors:
19
20
  - data/raw_videos/ for video files (.mp4, .avi, .mov, .mkv, .webm, .m4v)
20
- - data/raw_pdfs/ for PDF files (.pdf)
21
+ - data/raw_pdfs/ for report files (.pdf)
21
22
 
22
23
  When files are detected, they are automatically processed with:
23
24
  - Video: Import, anonymization, and segmentation
24
- - PDF: Import and anonymization
25
+ - report: Import and anonymization
25
26
  """
26
27
 
27
28
  def add_arguments(self, parser):
28
29
  parser.add_argument(
29
- '--test',
30
- action='store_true',
31
- help='Test the file watcher configuration without starting monitoring',
30
+ "--test",
31
+ action="store_true",
32
+ help="Test the file watcher configuration without starting monitoring",
32
33
  )
33
34
  parser.add_argument(
34
- '--existing',
35
- action='store_true',
36
- help='Process existing files in the directories before starting monitoring',
35
+ "--existing",
36
+ action="store_true",
37
+ help="Process existing files in the directories before starting monitoring",
37
38
  )
38
39
  parser.add_argument(
39
- '--log-level',
40
- choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'],
41
- default='INFO',
42
- help='Set logging level (default: INFO)',
40
+ "--log-level",
41
+ choices=["DEBUG", "INFO", "WARNING", "ERROR"],
42
+ default="INFO",
43
+ help="Set logging level (default: INFO)",
43
44
  )
44
45
 
45
46
  def handle(self, *args, **options):
46
47
  self.stdout.write(self.style.SUCCESS("Starting File Watcher Service"))
47
-
48
+
48
49
  # Set environment variables
49
- os.environ['WATCHER_LOG_LEVEL'] = options['log_level']
50
-
50
+ os.environ["WATCHER_LOG_LEVEL"] = options["log_level"]
51
+
51
52
  try:
52
53
  # Add project root to path
53
54
  project_root = Path(settings.BASE_DIR)
54
55
  if str(project_root) not in sys.path:
55
56
  sys.path.insert(0, str(project_root))
56
-
57
+
57
58
  # Import the file watcher service from the correct location
58
- file_watcher_path = project_root / 'scripts' / 'file_watcher.py'
59
-
59
+ file_watcher_path = project_root / "scripts" / "file_watcher.py"
60
+
60
61
  if not file_watcher_path.exists():
61
- self.stdout.write(self.style.ERROR(f"❌ File watcher script not found: {file_watcher_path}"))
62
+ self.stdout.write(
63
+ self.style.ERROR(
64
+ f"❌ File watcher script not found: {file_watcher_path}"
65
+ )
66
+ )
62
67
  return
63
-
68
+
64
69
  # Import the module dynamically
65
70
  import importlib.util
66
- spec = importlib.util.spec_from_file_location("file_watcher", file_watcher_path)
71
+
72
+ spec = importlib.util.spec_from_file_location(
73
+ "file_watcher", file_watcher_path
74
+ )
67
75
  file_watcher_module = importlib.util.module_from_spec(spec)
68
76
  spec.loader.exec_module(file_watcher_module)
69
-
77
+
70
78
  FileWatcherService = file_watcher_module.FileWatcherService
71
-
72
- if options['test']:
79
+
80
+ if options["test"]:
73
81
  self.stdout.write("Testing file watcher configuration...")
74
82
  service = FileWatcherService()
75
83
  try:
@@ -79,28 +87,29 @@ class Command(BaseCommand):
79
87
  return
80
88
  self.stdout.write(self.style.SUCCESS("✅ File watcher test passed"))
81
89
  return
82
-
90
+
83
91
  # Create and start the service
84
92
  service = FileWatcherService()
85
-
86
- if options['existing']:
93
+
94
+ if options["existing"]:
87
95
  self.stdout.write("Processing existing files...")
88
96
  service._process_existing_files()
89
97
  self.stdout.write(self.style.SUCCESS("✅ Existing files processed"))
90
98
  return
91
-
99
+
92
100
  self.stdout.write("Starting file monitoring...")
93
101
  self.stdout.write(f"Video directory: {service.video_dir}")
94
- self.stdout.write(f"PDF directory: {service.pdf_dir}")
102
+ self.stdout.write(f"report directory: {service.report_dir}")
95
103
  self.stdout.write("Press Ctrl+C to stop")
96
-
104
+
97
105
  service.start()
98
-
106
+
99
107
  except KeyboardInterrupt:
100
108
  self.stdout.write(self.style.WARNING("\n⚠️ File watcher stopped by user"))
101
109
  except Exception as e:
102
110
  self.stdout.write(self.style.ERROR(f"❌ Error: {str(e)}"))
103
- if options['verbosity'] >= 2:
111
+ if options["verbosity"] >= 2:
104
112
  import traceback
113
+
105
114
  self.stdout.write(traceback.format_exc())
106
- sys.exit(1)
115
+ sys.exit(1)
@@ -9,6 +9,7 @@ import logging
9
9
 
10
10
  logger = logging.getLogger(__name__)
11
11
 
12
+ # TODO Review if this is still used. Delete if not.
12
13
 
13
14
  class Command(BaseCommand):
14
15
  help = 'Validate video file existence and accessibility'
@@ -24,11 +25,6 @@ class Command(BaseCommand):
24
25
  action='store_true',
25
26
  help='Enable verbose output',
26
27
  )
27
- parser.add_argument(
28
- '--fix-missing',
29
- action='store_true',
30
- help='Mark videos with missing files as inactive',
31
- )
32
28
 
33
29
  def handle(self, *args, **options):
34
30
  """Validate video files and their accessibility."""