endoreg-db 0.6.4__py3-none-any.whl → 0.8.2__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 (779) hide show
  1. endoreg_db/admin.py +26 -26
  2. endoreg_db/api_urls.py +4 -0
  3. endoreg_db/apps.py +12 -0
  4. endoreg_db/assets/dummy_model.ckpt +1 -0
  5. endoreg_db/codemods/readme.md +88 -0
  6. endoreg_db/codemods/rename_datetime_fields.py +92 -0
  7. endoreg_db/config/env.py +101 -0
  8. endoreg_db/data/__init__.py +12 -0
  9. endoreg_db/data/ai_model/data.yaml +1 -1
  10. endoreg_db/data/ai_model_label/label/polyp_classification.yaml +52 -0
  11. endoreg_db/data/ai_model_label/label-set/data.yaml +20 -1
  12. endoreg_db/data/ai_model_label/label-set/polyp_classifications.yaml +25 -0
  13. endoreg_db/data/center/data.yaml +13 -12
  14. endoreg_db/data/center_shift/ukw.yaml +9 -0
  15. endoreg_db/data/db_summary.csv +58 -0
  16. endoreg_db/data/db_summary.xlsx +0 -0
  17. endoreg_db/data/disease/misc.yaml +1 -2
  18. endoreg_db/data/endoscopy_processor/data.yaml +3 -0
  19. endoreg_db/data/event/cardiology.yaml +0 -13
  20. endoreg_db/data/examination/examinations/data.yaml +14 -9
  21. endoreg_db/data/examination_indication/endoscopy.yaml +30 -30
  22. endoreg_db/data/examination_indication_classification/endoscopy.yaml +11 -11
  23. endoreg_db/data/examination_requirement_set/colonoscopy.yaml +15 -0
  24. endoreg_db/data/finding/anatomy_colon.yaml +128 -0
  25. endoreg_db/data/finding/colonoscopy.yaml +40 -0
  26. endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +56 -0
  27. endoreg_db/data/finding/complication.yaml +16 -0
  28. endoreg_db/data/finding/data.yaml +3 -46
  29. endoreg_db/data/finding/examination_setting.yaml +16 -0
  30. endoreg_db/data/finding/medication_related.yaml +18 -0
  31. endoreg_db/data/finding/outcome.yaml +12 -0
  32. endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +95 -0
  33. endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +22 -0
  34. endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +25 -0
  35. endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +20 -0
  36. endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +24 -0
  37. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +68 -0
  38. endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +20 -0
  39. endoreg_db/data/finding_classification/colonoscopy_location.yaml +80 -0
  40. endoreg_db/data/finding_classification/colonoscopy_lst.yaml +21 -0
  41. endoreg_db/data/finding_classification/colonoscopy_nice.yaml +20 -0
  42. endoreg_db/data/finding_classification/colonoscopy_paris.yaml +26 -0
  43. endoreg_db/data/finding_classification/colonoscopy_sano.yaml +22 -0
  44. endoreg_db/data/finding_classification/colonoscopy_summary.yaml +53 -0
  45. endoreg_db/data/finding_classification/complication_generic.yaml +25 -0
  46. endoreg_db/data/finding_classification/examination_setting_generic.yaml +40 -0
  47. endoreg_db/data/finding_classification/histology_colo.yaml +51 -0
  48. endoreg_db/data/finding_classification/intervention_required.yaml +26 -0
  49. endoreg_db/data/finding_classification/medication_related.yaml +23 -0
  50. endoreg_db/data/finding_classification/visualized.yaml +33 -0
  51. endoreg_db/data/finding_classification_choice/bowel_preparation.yaml +78 -0
  52. endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_circularity_default.yaml +0 -2
  53. endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +15 -0
  54. endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +23 -0
  55. endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +15 -0
  56. endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_nice.yaml +4 -7
  57. endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_paris.yaml +0 -8
  58. endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_planarity_default.yaml +6 -13
  59. endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +14 -0
  60. endoreg_db/data/{finding_morphology_classification_choice → finding_classification_choice}/colon_lesion_surface_intact_default.yaml +3 -6
  61. endoreg_db/data/{finding_location_classification_choice/colonoscopy.yaml → finding_classification_choice/colonoscopy_location.yaml} +11 -22
  62. endoreg_db/data/finding_classification_choice/colonoscopy_not_complete_reason.yaml +19 -0
  63. endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +82 -0
  64. endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +15 -0
  65. endoreg_db/data/finding_classification_choice/complication_generic_types.yaml +15 -0
  66. endoreg_db/data/finding_classification_choice/examination_setting_generic_types.yaml +15 -0
  67. endoreg_db/data/finding_classification_choice/histology.yaml +24 -0
  68. endoreg_db/data/finding_classification_choice/histology_polyp.yaml +20 -0
  69. endoreg_db/data/finding_classification_choice/outcome.yaml +19 -0
  70. endoreg_db/data/finding_classification_choice/yes_no_na.yaml +11 -0
  71. endoreg_db/data/finding_classification_type/colonoscopy_basic.yaml +48 -0
  72. endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +8 -3
  73. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +6 -6
  74. endoreg_db/data/finding_type/data.yaml +23 -10
  75. endoreg_db/data/gender/data.yaml +8 -1
  76. endoreg_db/data/information_source/annotation.yaml +6 -0
  77. endoreg_db/data/information_source/prediction.yaml +7 -0
  78. endoreg_db/data/information_source_type/data.yaml +8 -0
  79. endoreg_db/data/lab_value/misc.yaml +43 -0
  80. endoreg_db/data/medication/anticoagulation.yaml +5 -5
  81. endoreg_db/data/medication/tah.yaml +5 -5
  82. endoreg_db/data/medication_intake_time/base.yaml +4 -4
  83. endoreg_db/data/names_first/first_names.yaml +3 -0
  84. endoreg_db/data/pdf_type/data.yaml +26 -2
  85. endoreg_db/data/qualification/endoscopy.yaml +36 -0
  86. endoreg_db/data/qualification/m2.yaml +39 -0
  87. endoreg_db/data/qualification/outpatient_clinic.yaml +35 -0
  88. endoreg_db/data/qualification/sonography.yaml +36 -0
  89. endoreg_db/data/qualification_type/base.yaml +29 -0
  90. endoreg_db/data/report_reader_flag/rkh-histology-generic.yaml +10 -0
  91. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +5 -0
  92. endoreg_db/data/requirement/age.yaml +26 -0
  93. endoreg_db/data/requirement/colonoscopy_baseline_austria.yaml +45 -0
  94. endoreg_db/data/requirement/disease_cardiovascular.yaml +6 -6
  95. endoreg_db/data/requirement/disease_classification_choice_cardiovascular.yaml +9 -6
  96. endoreg_db/data/requirement/disease_hepatology.yaml +1 -1
  97. endoreg_db/data/requirement/disease_misc.yaml +3 -3
  98. endoreg_db/data/requirement/disease_renal.yaml +18 -2
  99. endoreg_db/data/requirement/{colonoscopy_indications.yaml → endoscopy_bleeding_risk.yaml} +6 -3
  100. endoreg_db/data/requirement/event_cardiology.yaml +17 -17
  101. endoreg_db/data/requirement/event_requirements.yaml +145 -0
  102. endoreg_db/data/requirement/finding_colon_polyp.yaml +50 -0
  103. endoreg_db/data/requirement/gender.yaml +25 -0
  104. endoreg_db/data/requirement/lab_value.yaml +352 -31
  105. endoreg_db/data/requirement/medication.yaml +93 -0
  106. endoreg_db/data/requirement_operator/age.yaml +13 -0
  107. endoreg_db/data/requirement_operator/lab_operators.yaml +36 -35
  108. endoreg_db/data/requirement_operator/model_operators.yaml +13 -7
  109. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +48 -0
  110. endoreg_db/data/requirement_set/colonoscopy_austria_screening.yaml +57 -0
  111. endoreg_db/data/requirement_set/endoscopy_bleeding_risk.yaml +42 -2
  112. endoreg_db/data/requirement_type/requirement_types.yaml +82 -0
  113. endoreg_db/data/shift/endoscopy.yaml +21 -0
  114. endoreg_db/data/shift_type/base.yaml +35 -0
  115. endoreg_db/data/tag/requirement_set_tags.yaml +11 -0
  116. endoreg_db/data/unit/concentration.yaml +23 -0
  117. endoreg_db/exceptions.py +19 -0
  118. endoreg_db/forms/patient_finding_intervention_form.py +4 -5
  119. endoreg_db/forms/patient_form.py +7 -6
  120. endoreg_db/forms/questionnaires/__init__.py +1 -1
  121. endoreg_db/forms/questionnaires/tto_questionnaire.py +19 -19
  122. endoreg_db/helpers/count_db.py +45 -0
  123. endoreg_db/helpers/data_loader.py +208 -0
  124. endoreg_db/helpers/default_objects.py +359 -0
  125. endoreg_db/helpers/download_segmentation_model.py +31 -0
  126. endoreg_db/helpers/interact.py +6 -0
  127. endoreg_db/helpers/test_video_helper.py +119 -0
  128. endoreg_db/logger_conf.py +140 -0
  129. endoreg_db/management/__init__.py +1 -0
  130. endoreg_db/management/commands/__init__.py +1 -0
  131. endoreg_db/management/commands/anonymize_video.py +0 -0
  132. endoreg_db/management/commands/check_auth.py +125 -0
  133. endoreg_db/management/commands/create_multilabel_model_meta.py +214 -0
  134. endoreg_db/management/commands/fix_missing_patient_data.py +172 -0
  135. endoreg_db/management/commands/fix_video_paths.py +165 -0
  136. endoreg_db/management/commands/import_fallback_video.py +203 -0
  137. endoreg_db/management/commands/import_report.py +298 -0
  138. endoreg_db/management/commands/import_video.py +422 -0
  139. endoreg_db/management/commands/import_video_with_classification.py +367 -0
  140. endoreg_db/management/commands/init_default_ai_model.py +112 -0
  141. endoreg_db/management/commands/load_ai_model_data.py +2 -7
  142. endoreg_db/management/commands/load_base_db_data.py +1 -0
  143. endoreg_db/management/commands/load_endoscope_data.py +2 -2
  144. endoreg_db/management/commands/load_examination_indication_data.py +2 -3
  145. endoreg_db/management/commands/load_finding_data.py +49 -92
  146. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +0 -1
  147. endoreg_db/management/commands/load_information_source.py +13 -7
  148. endoreg_db/management/commands/load_name_data.py +37 -0
  149. endoreg_db/management/commands/load_qualification_data.py +59 -0
  150. endoreg_db/management/commands/load_requirement_data.py +30 -6
  151. endoreg_db/management/commands/load_shift_data.py +60 -0
  152. endoreg_db/management/commands/load_tag_data.py +57 -0
  153. endoreg_db/management/commands/register_ai_model.py +1 -1
  154. endoreg_db/management/commands/start_filewatcher.py +106 -0
  155. endoreg_db/management/commands/storage_management.py +548 -0
  156. endoreg_db/management/commands/summarize_db_content.py +189 -0
  157. endoreg_db/management/commands/validate_video.py +204 -0
  158. endoreg_db/management/commands/validate_video_files.py +161 -0
  159. endoreg_db/management/commands/video_validation.py +22 -0
  160. endoreg_db/migrations/0001_initial.py +625 -813
  161. endoreg_db/migrations/0002_add_video_correction_models.py +52 -0
  162. endoreg_db/models/__init__.py +270 -307
  163. endoreg_db/models/administration/__init__.py +116 -0
  164. endoreg_db/models/{ai_model → administration/ai}/__init__.py +6 -1
  165. endoreg_db/models/administration/ai/active_model.py +35 -0
  166. endoreg_db/models/administration/ai/ai_model.py +156 -0
  167. endoreg_db/models/{ai_model → administration/ai}/model_type.py +6 -1
  168. endoreg_db/models/administration/case/__init__.py +19 -0
  169. endoreg_db/models/administration/case/case.py +114 -0
  170. endoreg_db/models/{case_template → administration/case/case_template}/case_template.py +3 -3
  171. endoreg_db/models/{case_template → administration/case/case_template}/case_template_rule.py +3 -10
  172. endoreg_db/models/{case_template → administration/case/case_template}/case_template_rule_value.py +2 -4
  173. endoreg_db/models/{case_template → administration/case/case_template}/case_template_type.py +1 -3
  174. endoreg_db/models/{center → administration/center}/__init__.py +3 -1
  175. endoreg_db/models/administration/center/center.py +61 -0
  176. endoreg_db/models/administration/center/center_product.py +64 -0
  177. endoreg_db/models/{center → administration/center}/center_resource.py +19 -3
  178. endoreg_db/models/administration/center/center_shift.py +88 -0
  179. endoreg_db/models/administration/center/center_waste.py +30 -0
  180. endoreg_db/models/administration/permissions/__init__.py +44 -0
  181. endoreg_db/models/administration/person/__init__.py +24 -0
  182. endoreg_db/models/administration/person/employee/__init__.py +3 -0
  183. endoreg_db/models/administration/person/employee/employee.py +35 -0
  184. endoreg_db/models/administration/person/employee/employee_qualification.py +39 -0
  185. endoreg_db/models/administration/person/employee/employee_type.py +42 -0
  186. endoreg_db/models/administration/person/examiner/__init__.py +4 -0
  187. endoreg_db/models/administration/person/examiner/examiner.py +54 -0
  188. endoreg_db/models/administration/person/names/__init__.py +0 -0
  189. endoreg_db/models/{persons → administration/person/names}/first_name.py +1 -1
  190. endoreg_db/models/{persons → administration/person/names}/last_name.py +2 -3
  191. endoreg_db/models/administration/person/patient/__init__.py +5 -0
  192. endoreg_db/models/administration/person/patient/patient.py +460 -0
  193. endoreg_db/models/administration/person/profession/__init__.py +24 -0
  194. endoreg_db/models/administration/person/user/__init__.py +5 -0
  195. endoreg_db/models/administration/person/user/portal_user_information.py +37 -0
  196. endoreg_db/models/administration/product/product.py +97 -0
  197. endoreg_db/models/administration/product/product_group.py +39 -0
  198. endoreg_db/models/administration/product/product_material.py +54 -0
  199. endoreg_db/models/{product → administration/product}/product_weight.py +9 -0
  200. endoreg_db/models/{product → administration/product}/reference_product.py +26 -11
  201. endoreg_db/models/administration/qualification/__init__.py +7 -0
  202. endoreg_db/models/administration/qualification/qualification.py +37 -0
  203. endoreg_db/models/administration/qualification/qualification_type.py +35 -0
  204. endoreg_db/models/administration/shift/__init__.py +9 -0
  205. endoreg_db/models/administration/shift/scheduled_days.py +69 -0
  206. endoreg_db/models/administration/shift/shift.py +51 -0
  207. endoreg_db/models/administration/shift/shift_type.py +108 -0
  208. endoreg_db/models/label/__init__.py +24 -1
  209. endoreg_db/models/label/annotation/__init__.py +12 -0
  210. endoreg_db/models/label/annotation/image_classification.py +84 -0
  211. endoreg_db/models/label/annotation/video_segmentation_annotation.py +66 -0
  212. endoreg_db/models/label/label.py +45 -74
  213. endoreg_db/models/label/label_set.py +53 -0
  214. endoreg_db/models/label/label_type.py +29 -0
  215. endoreg_db/models/label/label_video_segment/__init__.py +3 -0
  216. endoreg_db/models/label/label_video_segment/_create_from_video.py +41 -0
  217. endoreg_db/models/label/label_video_segment/label_video_segment.py +511 -0
  218. endoreg_db/models/label/video_segmentation_label.py +31 -0
  219. endoreg_db/models/{annotation → label}/video_segmentation_labelset.py +7 -0
  220. endoreg_db/models/media/__init__.py +14 -0
  221. endoreg_db/models/media/frame/__init__.py +3 -0
  222. endoreg_db/models/media/frame/frame.py +111 -0
  223. endoreg_db/models/media/pdf/__init__.py +11 -0
  224. endoreg_db/models/media/pdf/raw_pdf.py +608 -0
  225. endoreg_db/models/media/pdf/report_file.py +162 -0
  226. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +77 -0
  227. endoreg_db/models/media/video/__init__.py +4 -0
  228. endoreg_db/models/media/video/create_from_file.py +336 -0
  229. endoreg_db/models/media/video/pipe_1.py +207 -0
  230. endoreg_db/models/media/video/pipe_2.py +105 -0
  231. endoreg_db/models/media/video/refactor_plan.md +0 -0
  232. endoreg_db/models/media/video/video_file.py +680 -0
  233. endoreg_db/models/media/video/video_file_ai.py +443 -0
  234. endoreg_db/models/media/video/video_file_anonymize.py +348 -0
  235. endoreg_db/models/media/video/video_file_frames/__init__.py +47 -0
  236. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +22 -0
  237. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +23 -0
  238. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +104 -0
  239. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +174 -0
  240. endoreg_db/models/media/video/video_file_frames/_get_frame.py +28 -0
  241. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +27 -0
  242. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +20 -0
  243. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +27 -0
  244. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +34 -0
  245. endoreg_db/models/media/video/video_file_frames/_get_frames.py +27 -0
  246. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +129 -0
  247. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +129 -0
  248. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +65 -0
  249. endoreg_db/models/media/video/video_file_frames.py +0 -0
  250. endoreg_db/models/media/video/video_file_io.py +166 -0
  251. endoreg_db/models/media/video/video_file_meta/__init__.py +22 -0
  252. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +45 -0
  253. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +39 -0
  254. endoreg_db/models/media/video/video_file_meta/get_fps.py +147 -0
  255. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +143 -0
  256. endoreg_db/models/media/video/video_file_meta/text_meta.py +134 -0
  257. endoreg_db/models/media/video/video_file_meta/video_meta.py +70 -0
  258. endoreg_db/models/media/video/video_file_meta.py +11 -0
  259. endoreg_db/models/media/video/video_file_segments.py +209 -0
  260. endoreg_db/models/medical/__init__.py +146 -0
  261. endoreg_db/models/{contraindication → medical/contraindication}/__init__.py +1 -5
  262. endoreg_db/models/{disease.py → medical/disease.py} +60 -52
  263. endoreg_db/models/{event.py → medical/event.py} +31 -54
  264. endoreg_db/models/{examination → medical/examination}/__init__.py +1 -1
  265. endoreg_db/models/medical/examination/examination.py +148 -0
  266. endoreg_db/models/{examination → medical/examination}/examination_indication.py +64 -35
  267. endoreg_db/models/{examination → medical/examination}/examination_time.py +0 -4
  268. endoreg_db/models/{examination → medical/examination}/examination_time_type.py +1 -8
  269. endoreg_db/models/{examination → medical/examination}/examination_type.py +1 -7
  270. endoreg_db/models/medical/finding/__init__.py +18 -0
  271. endoreg_db/models/medical/finding/finding.py +96 -0
  272. endoreg_db/models/medical/finding/finding_classification.py +142 -0
  273. endoreg_db/models/{finding → medical/finding}/finding_intervention.py +2 -10
  274. endoreg_db/models/medical/finding/finding_type.py +35 -0
  275. endoreg_db/models/medical/hardware/__init__.py +8 -0
  276. endoreg_db/models/{hardware → medical/hardware}/endoscope.py +28 -23
  277. endoreg_db/models/medical/laboratory/__init__.py +5 -0
  278. endoreg_db/models/medical/laboratory/lab_value.py +419 -0
  279. endoreg_db/models/{medication → medical/medication}/medication.py +1 -3
  280. endoreg_db/models/{medication → medical/medication}/medication_indication_type.py +8 -3
  281. endoreg_db/models/{medication → medical/medication}/medication_intake_time.py +21 -3
  282. endoreg_db/models/{medication → medical/medication}/medication_schedule.py +13 -5
  283. endoreg_db/models/{organ → medical/organ}/__init__.py +3 -6
  284. endoreg_db/models/medical/patient/__init__.py +56 -0
  285. endoreg_db/models/medical/patient/medication_examples.py +38 -0
  286. endoreg_db/models/medical/patient/patient_disease.py +63 -0
  287. endoreg_db/models/medical/patient/patient_event.py +75 -0
  288. endoreg_db/models/medical/patient/patient_examination.py +249 -0
  289. endoreg_db/models/{persons → medical}/patient/patient_examination_indication.py +21 -9
  290. endoreg_db/models/medical/patient/patient_finding.py +357 -0
  291. endoreg_db/models/medical/patient/patient_finding_classification.py +207 -0
  292. endoreg_db/models/{patient → medical/patient}/patient_finding_intervention.py +15 -1
  293. endoreg_db/models/medical/patient/patient_lab_sample.py +148 -0
  294. endoreg_db/models/{persons → medical}/patient/patient_lab_value.py +40 -15
  295. endoreg_db/models/medical/patient/patient_medication.py +104 -0
  296. endoreg_db/models/medical/patient/patient_medication_schedule.py +136 -0
  297. endoreg_db/models/{risk → medical/risk}/risk_type.py +0 -4
  298. endoreg_db/models/{data_file/metadata → metadata}/__init__.py +6 -0
  299. endoreg_db/models/metadata/frame_ocr_result.py +0 -0
  300. endoreg_db/models/metadata/model_meta.py +193 -0
  301. endoreg_db/models/metadata/model_meta_logic.py +236 -0
  302. endoreg_db/models/{data_file/metadata → metadata}/pdf_meta.py +28 -13
  303. endoreg_db/models/metadata/sensitive_meta.py +288 -0
  304. endoreg_db/models/metadata/sensitive_meta_logic.py +643 -0
  305. endoreg_db/models/metadata/video_meta.py +332 -0
  306. endoreg_db/models/metadata/video_prediction_logic.py +190 -0
  307. endoreg_db/models/metadata/video_prediction_meta.py +270 -0
  308. endoreg_db/models/other/__init__.py +17 -0
  309. endoreg_db/models/other/distribution/date_value_distribution.py +0 -2
  310. endoreg_db/models/other/distribution/numeric_value_distribution.py +30 -2
  311. endoreg_db/models/{emission → other/emission}/emission_factor.py +15 -6
  312. endoreg_db/models/{persons → other}/gender.py +8 -3
  313. endoreg_db/models/other/information_source.py +159 -0
  314. endoreg_db/models/other/material.py +10 -2
  315. endoreg_db/models/other/resource.py +6 -2
  316. endoreg_db/models/other/tag.py +27 -0
  317. endoreg_db/models/other/transport_route.py +13 -2
  318. endoreg_db/models/{unit.py → other/unit.py} +16 -6
  319. endoreg_db/models/other/waste.py +10 -3
  320. endoreg_db/models/requirement/requirement.py +556 -114
  321. endoreg_db/models/requirement/requirement_evaluation/__init__.py +4 -132
  322. endoreg_db/models/requirement/requirement_evaluation/get_values.py +40 -0
  323. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +9 -0
  324. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +80 -87
  325. endoreg_db/models/requirement/requirement_operator.py +132 -14
  326. endoreg_db/models/requirement/requirement_set.py +181 -21
  327. endoreg_db/models/rule/__init__.py +13 -0
  328. endoreg_db/models/{rules → rule}/rule.py +6 -3
  329. endoreg_db/models/{rules → rule}/rule_attribute_dtype.py +0 -2
  330. endoreg_db/models/{rules → rule}/rule_type.py +0 -2
  331. endoreg_db/models/{rules → rule}/ruleset.py +0 -2
  332. endoreg_db/models/state/__init__.py +12 -0
  333. endoreg_db/models/state/abstract.py +11 -0
  334. endoreg_db/models/state/audit_ledger.py +150 -0
  335. endoreg_db/models/state/label_video_segment.py +22 -0
  336. endoreg_db/models/state/raw_pdf.py +187 -0
  337. endoreg_db/models/state/sensitive_meta.py +46 -0
  338. endoreg_db/models/state/video.py +232 -0
  339. endoreg_db/models/upload_job.py +99 -0
  340. endoreg_db/models/utils.py +135 -0
  341. endoreg_db/models/video_metadata.py +66 -0
  342. endoreg_db/models/video_processing.py +153 -0
  343. endoreg_db/renames.yml +8 -0
  344. endoreg_db/root_urls.py +9 -0
  345. endoreg_db/schemas/__init__.py +0 -0
  346. endoreg_db/schemas/examination_evaluation.py +27 -0
  347. endoreg_db/serializers/Frames_NICE_and_PARIS_classifications.py +775 -0
  348. endoreg_db/serializers/__init__.py +147 -10
  349. endoreg_db/serializers/{raw_pdf_meta_validation.py → _old/raw_pdf_meta_validation.py} +3 -3
  350. endoreg_db/serializers/{raw_video_meta_validation.py → _old/raw_video_meta_validation.py} +18 -14
  351. endoreg_db/serializers/_old/video.py +71 -0
  352. endoreg_db/serializers/administration/__init__.py +14 -0
  353. endoreg_db/serializers/administration/ai/__init__.py +10 -0
  354. endoreg_db/serializers/administration/ai/active_model.py +10 -0
  355. endoreg_db/serializers/administration/ai/ai_model.py +18 -0
  356. endoreg_db/serializers/administration/ai/model_type.py +10 -0
  357. endoreg_db/serializers/administration/center.py +9 -0
  358. endoreg_db/serializers/administration/gender.py +9 -0
  359. endoreg_db/serializers/anonymization.py +69 -0
  360. endoreg_db/serializers/evaluation/examination_evaluation.py +1 -0
  361. endoreg_db/serializers/examination/__init__.py +10 -0
  362. endoreg_db/serializers/examination/base.py +46 -0
  363. endoreg_db/serializers/examination/dropdown.py +21 -0
  364. endoreg_db/serializers/examination_serializer.py +12 -0
  365. endoreg_db/serializers/finding/__init__.py +5 -0
  366. endoreg_db/serializers/finding/finding.py +54 -0
  367. endoreg_db/serializers/finding_classification/__init__.py +7 -0
  368. endoreg_db/serializers/finding_classification/choice.py +19 -0
  369. endoreg_db/serializers/finding_classification/classification.py +13 -0
  370. endoreg_db/serializers/label/__init__.py +7 -0
  371. endoreg_db/serializers/label/image_classification_annotation.py +62 -0
  372. endoreg_db/serializers/label/label.py +15 -0
  373. endoreg_db/serializers/label_video_segment/__init__.py +7 -0
  374. endoreg_db/serializers/label_video_segment/_lvs_create.py +149 -0
  375. endoreg_db/serializers/label_video_segment/_lvs_update.py +138 -0
  376. endoreg_db/serializers/label_video_segment/_lvs_validate.py +149 -0
  377. endoreg_db/serializers/label_video_segment/label_video_segment.py +344 -0
  378. endoreg_db/serializers/label_video_segment/label_video_segment_annotation.py +99 -0
  379. endoreg_db/serializers/label_video_segment/label_video_segment_update.py +163 -0
  380. endoreg_db/serializers/meta/__init__.py +19 -0
  381. endoreg_db/serializers/meta/pdf_file_meta_extraction.py +115 -0
  382. endoreg_db/serializers/meta/report_meta.py +53 -0
  383. endoreg_db/serializers/meta/sensitive_meta_detail.py +162 -0
  384. endoreg_db/serializers/meta/sensitive_meta_update.py +148 -0
  385. endoreg_db/serializers/meta/sensitive_meta_verification.py +59 -0
  386. endoreg_db/serializers/meta/video_meta.py +39 -0
  387. endoreg_db/serializers/misc/__init__.py +14 -0
  388. endoreg_db/serializers/misc/file_overview.py +152 -0
  389. endoreg_db/serializers/misc/stats.py +33 -0
  390. endoreg_db/serializers/misc/translatable_field_mix_in.py +44 -0
  391. endoreg_db/serializers/misc/upload_job.py +71 -0
  392. endoreg_db/serializers/misc/vop_patient_data.py +120 -0
  393. endoreg_db/serializers/patient/__init__.py +11 -0
  394. endoreg_db/serializers/patient/patient.py +86 -0
  395. endoreg_db/serializers/patient/patient_dropdown.py +27 -0
  396. endoreg_db/serializers/patient_examination/__init__.py +7 -0
  397. endoreg_db/serializers/patient_examination/patient_examination.py +141 -0
  398. endoreg_db/serializers/patient_finding/__init__.py +15 -0
  399. endoreg_db/serializers/patient_finding/patient_finding.py +31 -0
  400. endoreg_db/serializers/patient_finding/patient_finding_classification.py +39 -0
  401. endoreg_db/serializers/patient_finding/patient_finding_detail.py +53 -0
  402. endoreg_db/serializers/patient_finding/patient_finding_intervention.py +26 -0
  403. endoreg_db/serializers/patient_finding/patient_finding_list.py +41 -0
  404. endoreg_db/serializers/patient_finding/patient_finding_write.py +126 -0
  405. endoreg_db/serializers/pdf/__init__.py +5 -0
  406. endoreg_db/serializers/pdf/anony_text_validation.py +85 -0
  407. endoreg_db/serializers/report/__init__.py +9 -0
  408. endoreg_db/serializers/report/mixins.py +45 -0
  409. endoreg_db/serializers/report/report.py +105 -0
  410. endoreg_db/serializers/report/report_list.py +22 -0
  411. endoreg_db/serializers/report/secure_file_url.py +26 -0
  412. endoreg_db/serializers/requirements/requirement_schema.py +25 -0
  413. endoreg_db/serializers/requirements/requirement_sets.py +29 -0
  414. endoreg_db/serializers/sensitive_meta_serializer.py +282 -0
  415. endoreg_db/serializers/video/__init__.py +7 -0
  416. endoreg_db/serializers/video/segmentation.py +263 -0
  417. endoreg_db/serializers/video/video_file_brief.py +10 -0
  418. endoreg_db/serializers/video/video_file_detail.py +83 -0
  419. endoreg_db/serializers/video/video_file_list.py +67 -0
  420. endoreg_db/serializers/video/video_metadata.py +105 -0
  421. endoreg_db/serializers/video/video_processing_history.py +153 -0
  422. endoreg_db/services/__init__.py +5 -0
  423. endoreg_db/services/anonymization.py +223 -0
  424. endoreg_db/services/examination_evaluation.py +149 -0
  425. endoreg_db/services/finding_description_service.py +0 -0
  426. endoreg_db/services/lookup_service.py +241 -0
  427. endoreg_db/services/lookup_store.py +122 -0
  428. endoreg_db/services/ollama_api_docs.py +1528 -0
  429. endoreg_db/services/pdf_import.py +963 -0
  430. endoreg_db/services/polling_coordinator.py +288 -0
  431. endoreg_db/services/pseudonym_service.py +89 -0
  432. endoreg_db/services/requirements_object.py +147 -0
  433. endoreg_db/services/segment_sync.py +155 -0
  434. endoreg_db/services/storage_aware_video_processor.py +344 -0
  435. endoreg_db/services/video_import.py +1118 -0
  436. endoreg_db/tasks/upload_tasks.py +207 -0
  437. endoreg_db/tasks/video_ingest.py +157 -0
  438. endoreg_db/tasks/video_processing_tasks.py +327 -0
  439. endoreg_db/urls/__init__.py +70 -0
  440. endoreg_db/urls/anonymization.py +32 -0
  441. endoreg_db/urls/auth.py +16 -0
  442. endoreg_db/urls/classification.py +39 -0
  443. endoreg_db/urls/examination.py +54 -0
  444. endoreg_db/urls/files.py +6 -0
  445. endoreg_db/urls/label_video_segment_validate.py +33 -0
  446. endoreg_db/urls/label_video_segments.py +44 -0
  447. endoreg_db/urls/media.py +229 -0
  448. endoreg_db/urls/patient.py +19 -0
  449. endoreg_db/urls/report.py +48 -0
  450. endoreg_db/urls/requirements.py +13 -0
  451. endoreg_db/urls/stats.py +46 -0
  452. endoreg_db/urls/upload.py +20 -0
  453. endoreg_db/urls/video.py +61 -0
  454. endoreg_db/urls.py +6 -283
  455. endoreg_db/utils/__init__.py +66 -57
  456. endoreg_db/utils/ai/__init__.py +9 -0
  457. endoreg_db/{models/ai_model/utils.py → utils/ai/get.py} +1 -4
  458. endoreg_db/{models/ai_model/lightning → utils/ai}/inference_dataset.py +0 -1
  459. endoreg_db/{models/ai_model/lightning → utils/ai}/multilabel_classification_net.py +14 -10
  460. endoreg_db/{models/ai_model/lightning → utils/ai}/postprocess.py +15 -5
  461. endoreg_db/utils/ai/predict.py +291 -0
  462. endoreg_db/{models/ai_model/lightning → utils/ai}/preprocess.py +1 -1
  463. endoreg_db/utils/calc_duration_seconds.py +24 -0
  464. endoreg_db/utils/case_generator/__init__.py +0 -0
  465. endoreg_db/utils/check_video_files.py +148 -0
  466. endoreg_db/utils/dataloader.py +50 -12
  467. endoreg_db/utils/dates.py +21 -0
  468. endoreg_db/utils/env.py +33 -0
  469. endoreg_db/utils/extract_specific_frames.py +72 -0
  470. endoreg_db/utils/file_operations.py +29 -1
  471. endoreg_db/utils/fix_video_path_direct.py +141 -0
  472. endoreg_db/utils/frame_anonymization_utils.py +463 -0
  473. endoreg_db/utils/links/__init__.py +0 -0
  474. endoreg_db/utils/links/requirement_link.py +193 -0
  475. endoreg_db/utils/mime_types.py +0 -0
  476. endoreg_db/utils/names.py +2 -0
  477. endoreg_db/utils/paths.py +100 -82
  478. endoreg_db/utils/permissions.py +143 -0
  479. endoreg_db/utils/pipelines/Readme.md +235 -0
  480. endoreg_db/utils/pipelines/__init__.py +0 -0
  481. endoreg_db/utils/pipelines/process_video_dir.py +120 -0
  482. endoreg_db/utils/product/__init__.py +0 -0
  483. endoreg_db/utils/product/sum_emissions.py +20 -0
  484. endoreg_db/utils/product/sum_weights.py +18 -0
  485. endoreg_db/utils/pydantic_models/db_config.py +1 -1
  486. endoreg_db/utils/requirement_helpers.py +0 -0
  487. endoreg_db/utils/requirement_operator_logic/__init__.py +0 -0
  488. endoreg_db/utils/requirement_operator_logic/lab_value_operators.py +578 -0
  489. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +368 -0
  490. endoreg_db/utils/translation.py +27 -0
  491. endoreg_db/utils/validate_video_detailed.py +357 -0
  492. endoreg_db/utils/video/__init__.py +19 -6
  493. endoreg_db/utils/video/extract_frames.py +37 -70
  494. endoreg_db/utils/video/ffmpeg_wrapper.py +772 -0
  495. endoreg_db/utils/video/names.py +42 -0
  496. endoreg_db/utils/video/streaming_processor.py +312 -0
  497. endoreg_db/utils/video/video_splitter.py +94 -0
  498. endoreg_db/views/Frames_NICE_and_PARIS_classifications_views.py +238 -0
  499. endoreg_db/views/__init__.py +282 -2
  500. endoreg_db/views/anonymization/__init__.py +27 -0
  501. endoreg_db/views/anonymization/media_management.py +454 -0
  502. endoreg_db/views/anonymization/overview.py +216 -0
  503. endoreg_db/views/anonymization/validate.py +66 -0
  504. endoreg_db/views/auth/__init__.py +13 -0
  505. endoreg_db/views/{views.py → auth/keycloak.py} +19 -13
  506. endoreg_db/views/examination/__init__.py +33 -0
  507. endoreg_db/views/examination/examination.py +37 -0
  508. endoreg_db/views/examination/examination_manifest_cache.py +26 -0
  509. endoreg_db/views/examination/get_finding_classification_choices.py +59 -0
  510. endoreg_db/views/examination/get_finding_classifications.py +36 -0
  511. endoreg_db/views/examination/get_findings.py +41 -0
  512. endoreg_db/views/examination/get_instruments.py +18 -0
  513. endoreg_db/views/examination/get_interventions.py +14 -0
  514. endoreg_db/views/finding/__init__.py +9 -0
  515. endoreg_db/views/finding/finding.py +112 -0
  516. endoreg_db/views/finding/get_classifications.py +14 -0
  517. endoreg_db/views/finding/get_interventions.py +17 -0
  518. endoreg_db/views/finding_classification/__init__.py +13 -0
  519. endoreg_db/views/finding_classification/base.py +0 -0
  520. endoreg_db/views/finding_classification/finding_classification.py +42 -0
  521. endoreg_db/views/finding_classification/get_classification_choices.py +55 -0
  522. endoreg_db/views/label/__init__.py +5 -0
  523. endoreg_db/views/label/label.py +15 -0
  524. endoreg_db/views/label_video_segment/__init__.py +16 -0
  525. endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +44 -0
  526. endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +50 -0
  527. endoreg_db/views/label_video_segment/label_video_segment.py +77 -0
  528. endoreg_db/views/label_video_segment/label_video_segment_by_label.py +174 -0
  529. endoreg_db/views/label_video_segment/label_video_segment_detail.py +73 -0
  530. endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +46 -0
  531. endoreg_db/views/label_video_segment/validate.py +226 -0
  532. endoreg_db/views/media/__init__.py +45 -0
  533. endoreg_db/views/media/pdf_media.py +386 -0
  534. endoreg_db/views/media/segments.py +71 -0
  535. endoreg_db/views/media/sensitive_metadata.py +314 -0
  536. endoreg_db/views/media/video_media.py +272 -0
  537. endoreg_db/views/media/video_segments.py +596 -0
  538. endoreg_db/views/meta/__init__.py +15 -0
  539. endoreg_db/views/meta/available_files_list.py +146 -0
  540. endoreg_db/views/meta/report_meta.py +53 -0
  541. endoreg_db/views/meta/sensitive_meta_detail.py +148 -0
  542. endoreg_db/views/meta/sensitive_meta_list.py +104 -0
  543. endoreg_db/views/meta/sensitive_meta_verification.py +71 -0
  544. endoreg_db/views/misc/__init__.py +63 -0
  545. endoreg_db/views/misc/center.py +13 -0
  546. endoreg_db/views/misc/gender.py +14 -0
  547. endoreg_db/views/misc/secure_file_serving_view.py +80 -0
  548. endoreg_db/views/misc/secure_file_url_view.py +84 -0
  549. endoreg_db/views/misc/secure_url_validate.py +79 -0
  550. endoreg_db/views/misc/stats.py +220 -0
  551. endoreg_db/views/misc/translation.py +182 -0
  552. endoreg_db/views/misc/upload_views.py +240 -0
  553. endoreg_db/views/patient/__init__.py +5 -0
  554. endoreg_db/views/patient/patient.py +210 -0
  555. endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +164 -0
  556. endoreg_db/views/patient_examination/__init__.py +11 -0
  557. endoreg_db/views/patient_examination/patient_examination.py +140 -0
  558. endoreg_db/views/patient_examination/patient_examination_create.py +63 -0
  559. endoreg_db/views/patient_examination/patient_examination_detail.py +66 -0
  560. endoreg_db/views/patient_examination/patient_examination_list.py +68 -0
  561. endoreg_db/views/patient_examination/video.py +194 -0
  562. endoreg_db/views/patient_finding/__init__.py +7 -0
  563. endoreg_db/views/patient_finding/base.py +0 -0
  564. endoreg_db/views/patient_finding/patient_finding.py +64 -0
  565. endoreg_db/views/patient_finding/patient_finding_optimized.py +259 -0
  566. endoreg_db/views/patient_finding_classification/__init__.py +5 -0
  567. endoreg_db/views/patient_finding_classification/pfc_create.py +67 -0
  568. endoreg_db/views/patient_finding_location/__init__.py +5 -0
  569. endoreg_db/views/patient_finding_location/pfl_create.py +70 -0
  570. endoreg_db/views/patient_finding_morphology/__init__.py +5 -0
  571. endoreg_db/views/patient_finding_morphology/pfm_create.py +70 -0
  572. endoreg_db/views/pdf/__init__.py +11 -0
  573. endoreg_db/views/pdf/pdf_media.py +239 -0
  574. endoreg_db/views/pdf/pdf_stream_views.py +127 -0
  575. endoreg_db/views/pdf/reimport.py +161 -0
  576. endoreg_db/views/report/__init__.py +9 -0
  577. endoreg_db/views/report/report_list.py +112 -0
  578. endoreg_db/views/report/report_with_secure_url.py +28 -0
  579. endoreg_db/views/report/start_examination.py +7 -0
  580. endoreg_db/views/requirement/__init__.py +10 -0
  581. endoreg_db/views/requirement/evaluate.py +279 -0
  582. endoreg_db/views/requirement/lookup.py +483 -0
  583. endoreg_db/views/requirement/lookup_store.py +252 -0
  584. endoreg_db/views/requirement_lookup/lookup.py +0 -0
  585. endoreg_db/views/requirement_lookup/lookup_store.py +0 -0
  586. endoreg_db/views/stats/__init__.py +13 -0
  587. endoreg_db/views/stats/stats_views.py +229 -0
  588. endoreg_db/views/video/__init__.py +64 -0
  589. endoreg_db/views/video/correction.py +672 -0
  590. endoreg_db/views/video/reimport.py +195 -0
  591. endoreg_db/views/video/segmentation.py +274 -0
  592. endoreg_db/views/video/task_status.py +49 -0
  593. endoreg_db/views/{views_for_timeline.py → video/timeline.py} +3 -3
  594. endoreg_db/views/video/video_analyze.py +52 -0
  595. endoreg_db/views/video/video_apply_mask.py +48 -0
  596. endoreg_db/views/video/video_correction.py +21 -0
  597. endoreg_db/views/video/video_download_processed.py +58 -0
  598. endoreg_db/views/video/video_examination_viewset.py +329 -0
  599. endoreg_db/views/video/video_media.py +158 -0
  600. endoreg_db/views/video/video_meta.py +29 -0
  601. endoreg_db/views/video/video_processing_history.py +24 -0
  602. endoreg_db/views/video/video_remove_frames.py +48 -0
  603. endoreg_db/views/video/video_reprocess.py +40 -0
  604. endoreg_db/views/video/video_stream.py +306 -0
  605. endoreg_db-0.8.2.dist-info/METADATA +384 -0
  606. endoreg_db-0.8.2.dist-info/RECORD +790 -0
  607. endoreg_db/data/agl_service/data.yaml +0 -19
  608. endoreg_db/data/finding_location_classification/colonoscopy.yaml +0 -46
  609. endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +0 -48
  610. endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +0 -57
  611. endoreg_db/management/commands/_load_model_template.py +0 -41
  612. endoreg_db/management/commands/delete_all.py +0 -18
  613. endoreg_db/management/commands/fetch_legacy_image_dataset.py +0 -32
  614. endoreg_db/management/commands/fix_auth_permission.py +0 -20
  615. endoreg_db/management/commands/load_active_model_data.py +0 -45
  616. endoreg_db/management/commands/load_g_play_data.py +0 -113
  617. endoreg_db/management/commands/load_logging_data.py +0 -39
  618. endoreg_db/management/commands/load_lx_data.py +0 -64
  619. endoreg_db/management/commands/load_medication_indication_data.py +0 -63
  620. endoreg_db/management/commands/load_medication_indication_type_data.py +0 -41
  621. endoreg_db/management/commands/load_medication_intake_time_data.py +0 -41
  622. endoreg_db/management/commands/load_medication_schedule_data.py +0 -55
  623. endoreg_db/management/commands/load_network_data.py +0 -57
  624. endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +0 -23
  625. endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +0 -23
  626. endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +0 -25
  627. endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +0 -33
  628. endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +0 -23
  629. endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +0 -24
  630. endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +0 -48
  631. endoreg_db/migrations/0009_requirementoperator_requirementsettype_and_more.py +0 -154
  632. endoreg_db/models/ai_model/active_model.py +0 -9
  633. endoreg_db/models/ai_model/ai_model.py +0 -90
  634. endoreg_db/models/ai_model/lightning/__init__.py +0 -3
  635. endoreg_db/models/ai_model/lightning/predict.py +0 -172
  636. endoreg_db/models/ai_model/lightning/prediction_visualizer.py +0 -55
  637. endoreg_db/models/ai_model/lightning/run_visualizer.py +0 -21
  638. endoreg_db/models/ai_model/model_meta.py +0 -240
  639. endoreg_db/models/annotation/__init__.py +0 -32
  640. endoreg_db/models/annotation/anonymized_image_annotation.py +0 -115
  641. endoreg_db/models/annotation/binary_classification_annotation_task.py +0 -117
  642. endoreg_db/models/annotation/image_classification.py +0 -86
  643. endoreg_db/models/annotation/video_segmentation_annotation.py +0 -52
  644. endoreg_db/models/case/__init__.py +0 -1
  645. endoreg_db/models/case/case.py +0 -34
  646. endoreg_db/models/center/center.py +0 -51
  647. endoreg_db/models/center/center_product.py +0 -33
  648. endoreg_db/models/center/center_waste.py +0 -16
  649. endoreg_db/models/data_file/__init__.py +0 -39
  650. endoreg_db/models/data_file/base_classes/__init__.py +0 -7
  651. endoreg_db/models/data_file/base_classes/abstract_frame.py +0 -98
  652. endoreg_db/models/data_file/base_classes/abstract_pdf.py +0 -127
  653. endoreg_db/models/data_file/base_classes/abstract_video.py +0 -806
  654. endoreg_db/models/data_file/base_classes/frame_helpers.py +0 -17
  655. endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +0 -19
  656. endoreg_db/models/data_file/base_classes/utils.py +0 -58
  657. endoreg_db/models/data_file/frame.py +0 -29
  658. endoreg_db/models/data_file/import_classes/__init__.py +0 -18
  659. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +0 -35
  660. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +0 -28
  661. endoreg_db/models/data_file/import_classes/processing_functions/video.py +0 -260
  662. endoreg_db/models/data_file/import_classes/raw_pdf.py +0 -254
  663. endoreg_db/models/data_file/import_classes/raw_video.py +0 -290
  664. endoreg_db/models/data_file/metadata/sensitive_meta.py +0 -290
  665. endoreg_db/models/data_file/metadata/video_meta.py +0 -199
  666. endoreg_db/models/data_file/report_file.py +0 -56
  667. endoreg_db/models/data_file/video/__init__.py +0 -11
  668. endoreg_db/models/data_file/video/import_meta.py +0 -25
  669. endoreg_db/models/data_file/video/video.py +0 -196
  670. endoreg_db/models/data_file/video_segment.py +0 -214
  671. endoreg_db/models/examination/examination.py +0 -67
  672. endoreg_db/models/finding/__init__.py +0 -11
  673. endoreg_db/models/finding/finding.py +0 -75
  674. endoreg_db/models/finding/finding_location_classification.py +0 -94
  675. endoreg_db/models/finding/finding_morphology_classification.py +0 -89
  676. endoreg_db/models/finding/finding_type.py +0 -22
  677. endoreg_db/models/hardware/__init__.py +0 -2
  678. endoreg_db/models/information_source.py +0 -65
  679. endoreg_db/models/laboratory/__init__.py +0 -1
  680. endoreg_db/models/laboratory/lab_value.py +0 -162
  681. endoreg_db/models/logging/__init__.py +0 -11
  682. endoreg_db/models/logging/agl_service.py +0 -19
  683. endoreg_db/models/logging/base.py +0 -22
  684. endoreg_db/models/logging/log_type.py +0 -23
  685. endoreg_db/models/logging/network_device.py +0 -27
  686. endoreg_db/models/lx/__init__.py +0 -4
  687. endoreg_db/models/lx/client.py +0 -57
  688. endoreg_db/models/lx/identity.py +0 -34
  689. endoreg_db/models/lx/permission.py +0 -18
  690. endoreg_db/models/lx/user.py +0 -16
  691. endoreg_db/models/network/__init__.py +0 -9
  692. endoreg_db/models/network/agl_service.py +0 -38
  693. endoreg_db/models/network/network_device.py +0 -58
  694. endoreg_db/models/network/network_device_type.py +0 -23
  695. endoreg_db/models/other/distribution.py +0 -5
  696. endoreg_db/models/patient/__init__.py +0 -24
  697. endoreg_db/models/patient/patient_examination.py +0 -182
  698. endoreg_db/models/patient/patient_finding.py +0 -143
  699. endoreg_db/models/patient/patient_finding_location.py +0 -120
  700. endoreg_db/models/patient/patient_finding_morphology.py +0 -166
  701. endoreg_db/models/permissions/__init__.py +0 -44
  702. endoreg_db/models/persons/__init__.py +0 -34
  703. endoreg_db/models/persons/examiner/__init__.py +0 -2
  704. endoreg_db/models/persons/examiner/examiner.py +0 -60
  705. endoreg_db/models/persons/examiner/examiner_type.py +0 -2
  706. endoreg_db/models/persons/patient/__init__.py +0 -8
  707. endoreg_db/models/persons/patient/patient.py +0 -389
  708. endoreg_db/models/persons/patient/patient_disease.py +0 -22
  709. endoreg_db/models/persons/patient/patient_event.py +0 -52
  710. endoreg_db/models/persons/patient/patient_lab_sample.py +0 -108
  711. endoreg_db/models/persons/patient/patient_medication.py +0 -59
  712. endoreg_db/models/persons/patient/patient_medication_schedule.py +0 -88
  713. endoreg_db/models/persons/portal_user_information.py +0 -27
  714. endoreg_db/models/prediction/__init__.py +0 -8
  715. endoreg_db/models/prediction/image_classification.py +0 -51
  716. endoreg_db/models/prediction/video_prediction_meta.py +0 -306
  717. endoreg_db/models/product/product.py +0 -110
  718. endoreg_db/models/product/product_group.py +0 -27
  719. endoreg_db/models/product/product_material.py +0 -28
  720. endoreg_db/models/questionnaires/__init__.py +0 -114
  721. endoreg_db/models/quiz/__init__.py +0 -9
  722. endoreg_db/models/quiz/quiz_answer.py +0 -41
  723. endoreg_db/models/quiz/quiz_question.py +0 -54
  724. endoreg_db/models/report_reader/report_reader_config.py +0 -53
  725. endoreg_db/models/rules/__init__.py +0 -5
  726. endoreg_db/queries/get/__init__.py +0 -6
  727. endoreg_db/queries/get/center.py +0 -42
  728. endoreg_db/queries/get/model.py +0 -13
  729. endoreg_db/queries/get/patient.py +0 -14
  730. endoreg_db/queries/get/patient_examination.py +0 -20
  731. endoreg_db/queries/get/report_file.py +0 -33
  732. endoreg_db/queries/get/video.py +0 -31
  733. endoreg_db/serializers/ai_model.py +0 -19
  734. endoreg_db/serializers/annotation.py +0 -14
  735. endoreg_db/serializers/center.py +0 -11
  736. endoreg_db/serializers/examination.py +0 -33
  737. endoreg_db/serializers/frame.py +0 -9
  738. endoreg_db/serializers/hardware.py +0 -21
  739. endoreg_db/serializers/label.py +0 -22
  740. endoreg_db/serializers/patient.py +0 -33
  741. endoreg_db/serializers/prediction.py +0 -10
  742. endoreg_db/serializers/raw_pdf_anony_text_validation.py +0 -137
  743. endoreg_db/serializers/report_file.py +0 -7
  744. endoreg_db/serializers/video.py +0 -20
  745. endoreg_db/serializers/video_segmentation.py +0 -574
  746. endoreg_db/tests.py +0 -3
  747. endoreg_db/utils/legacy_ocr.py +0 -201
  748. endoreg_db/utils/video/transcode_videofile.py +0 -111
  749. endoreg_db/views/patient_views.py +0 -90
  750. endoreg_db/views/raw_pdf_anony_text_validation_views.py +0 -95
  751. endoreg_db/views/raw_pdf_meta_validation_views.py +0 -111
  752. endoreg_db/views/raw_video_meta_validation_views.py +0 -148
  753. endoreg_db/views/report_views.py +0 -96
  754. endoreg_db/views/video_segmentation_views.py +0 -166
  755. endoreg_db-0.6.4.dist-info/METADATA +0 -161
  756. endoreg_db-0.6.4.dist-info/RECORD +0 -470
  757. /endoreg_db/{case_generator/__init__.py → api/serializers/finding_descriptions.py} +0 -0
  758. /endoreg_db/{queries/get/annotation.py → api/views/finding_descriptions.py} +0 -0
  759. /endoreg_db/{queries/get/prediction.py → data/shift/m2.yaml} +0 -0
  760. /endoreg_db/{queries/get/video_import_meta.py → factories/__init__.py} +0 -0
  761. /endoreg_db/{queries/get/video_prediction_meta.py → helpers/__init__.py} +0 -0
  762. /endoreg_db/models/{case_template → administration/case/case_template}/__init__.py +0 -0
  763. /endoreg_db/models/{persons → administration/person}/person.py +0 -0
  764. /endoreg_db/models/{product → administration/product}/__init__.py +0 -0
  765. /endoreg_db/models/{report_reader → media/pdf/report_reader}/__init__.py +0 -0
  766. /endoreg_db/models/{report_reader → media/pdf/report_reader}/report_reader_flag.py +0 -0
  767. /endoreg_db/models/{hardware → medical/hardware}/endoscopy_processor.py +0 -0
  768. /endoreg_db/models/{medication → medical/medication}/__init__.py +0 -0
  769. /endoreg_db/models/{medication → medical/medication}/medication_indication.py +0 -0
  770. /endoreg_db/models/{risk → medical/risk}/__init__.py +0 -0
  771. /endoreg_db/models/{risk → medical/risk}/risk.py +0 -0
  772. /endoreg_db/models/{emission → other/emission}/__init__.py +0 -0
  773. /endoreg_db/models/{rules → rule}/rule_applicator.py +0 -0
  774. /endoreg_db/{case_generator → utils/case_generator}/case_generator.py +0 -0
  775. /endoreg_db/{case_generator → utils/case_generator}/lab_sample_factory.py +0 -0
  776. /endoreg_db/{case_generator → utils/case_generator}/utils.py +0 -0
  777. /endoreg_db/views/{csrf.py → misc/csrf.py} +0 -0
  778. {endoreg_db-0.6.4.dist-info → endoreg_db-0.8.2.dist-info}/WHEEL +0 -0
  779. {endoreg_db-0.6.4.dist-info → endoreg_db-0.8.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,70 @@
1
+ from django.urls import path, include
2
+ from django.conf import settings
3
+ from django.conf.urls.static import static
4
+ from rest_framework.routers import DefaultRouter
5
+
6
+ # Phase 1.2: Media Management URLs ✅ IMPLEMENTED
7
+ from .media import urlpatterns as media_url_patterns
8
+
9
+ from endoreg_db.views import (
10
+ VideoViewSet,
11
+ ExaminationViewSet,
12
+ VideoExaminationViewSet,
13
+ FindingViewSet,
14
+ FindingClassificationViewSet,
15
+ PatientFindingViewSet,
16
+ PatientExaminationViewSet
17
+ )
18
+
19
+ from .anonymization import url_patterns as anonymization_url_patterns
20
+ from .classification import url_patterns as classification_url_patterns
21
+ from .auth import urlpatterns as auth_url_patterns
22
+ from .examination import urlpatterns as examination_url_patterns
23
+ from .files import urlpatterns as files_url_patterns
24
+ from .label_video_segments import url_patterns as label_video_segments_url_patterns
25
+ from .label_video_segment_validate import url_patterns as label_video_segment_validate_url_patterns
26
+ # TODO Phase 1.2: Implement VideoMediaView and PDFMediaView before enabling
27
+ # from .media import urlpatterns as media_url_patterns
28
+ from .report import url_patterns as report_url_patterns
29
+ from .upload import urlpatterns as upload_url_patterns
30
+ from .video import url_patterns as video_url_patterns
31
+ from .requirements import urlpatterns as requirements_url_patterns
32
+ from .patient import urlpatterns as patient_url_patterns
33
+ from .stats import url_patterns as stats_url_patterns
34
+
35
+ api_urls = []
36
+ api_urls += classification_url_patterns
37
+ api_urls += anonymization_url_patterns
38
+ api_urls += auth_url_patterns
39
+ api_urls += examination_url_patterns
40
+ api_urls += files_url_patterns
41
+ api_urls += label_video_segments_url_patterns
42
+ api_urls += label_video_segment_validate_url_patterns # Neue Validierungs-Endpunkte
43
+ # Phase 1.2: Enable media_url_patterns ✅ IMPLEMENTED
44
+ api_urls += media_url_patterns
45
+ api_urls += report_url_patterns
46
+ api_urls += upload_url_patterns
47
+ api_urls += video_url_patterns
48
+ api_urls += requirements_url_patterns
49
+ api_urls += patient_url_patterns
50
+ api_urls += stats_url_patterns
51
+
52
+ router = DefaultRouter()
53
+ router.register(r'videos', VideoViewSet, basename='videos')
54
+ router.register(r'examinations', ExaminationViewSet)
55
+ router.register(r'video-examinations', VideoExaminationViewSet, basename='video-examinations')
56
+ router.register(r'findings', FindingViewSet)
57
+ router.register(r'classifications', FindingClassificationViewSet)
58
+ router.register(r'patient-findings', PatientFindingViewSet)
59
+ router.register(r'patient-examinations', PatientExaminationViewSet)
60
+
61
+ # Export raw API urlpatterns (no prefix). The project-level endoreg_db/urls.py mounts these under /api/.
62
+ urlpatterns = [
63
+ path('', include(api_urls)), # Specific routes first
64
+ path('', include(router.urls)), # Generic router routes second
65
+ ]
66
+
67
+ if settings.DEBUG:
68
+ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
69
+ urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
70
+
@@ -0,0 +1,32 @@
1
+ from django.urls import path
2
+ from endoreg_db.views.anonymization import (
3
+ AnonymizationOverviewView,
4
+ AnonymizationValidateView,
5
+ start_anonymization,
6
+ anonymization_current,
7
+ anonymization_status,
8
+ polling_coordinator_info,
9
+ clear_processing_locks,
10
+ has_raw_video_file,
11
+ )
12
+ from endoreg_db.views.anonymization import media_management
13
+
14
+ url_patterns = [
15
+ # URL patterns for anonymization overview
16
+ path('anonymization/items/overview/', AnonymizationOverviewView.as_view(), name='anonymization_items_overview'),
17
+ path('anonymization/<int:file_id>/current/', anonymization_current, name='set_current_for_validation'),
18
+ path('anonymization/<int:file_id>/start/', start_anonymization, name='start_anonymization'),
19
+ path('anonymization/<int:file_id>/status/', anonymization_status, name='get_anonymization_status'),
20
+ path('anonymization/<int:file_id>/validate/', AnonymizationValidateView.as_view(), name='validate_anonymization'),
21
+ # Polling Coordination API (new endpoints)
22
+ path('anonymization/polling-info/', polling_coordinator_info, name='polling_coordinator_info'),
23
+ path('anonymization/clear-locks/', clear_processing_locks, name='clear_processing_locks'),
24
+ path('anonymization/<int:file_id>/has-raw/', has_raw_video_file, name='has_raw_video_file'),
25
+
26
+
27
+ # Media Management API (new endpoints)
28
+ path('media-management/status/', media_management.MediaManagementView.as_view(), name='media_management_status'),
29
+ path('media-management/cleanup/', media_management.MediaManagementView.as_view(), name='media_management_cleanup'),
30
+ path('media-management/force-remove/<int:file_id>/', media_management.force_remove_media, name='force_remove_media'),
31
+ path('media-management/reset-status/<int:file_id>/', media_management.reset_processing_status, name='reset_processing_status'),
32
+ ]
@@ -0,0 +1,16 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views import (
4
+ public_home,
5
+ keycloak_login,
6
+ keycloak_callback,
7
+ csrf_token_view,
8
+ )
9
+
10
+ urlpatterns = [
11
+ # Authentication endpoints
12
+ path('endoreg_db/', public_home, name='public_home'),
13
+ path('login/', keycloak_login, name='keycloak_login'),
14
+ path('login/callback/', keycloak_callback, name='keycloak_callback'),
15
+ path('conf/', csrf_token_view, name='csrf_token'),
16
+ ]
@@ -0,0 +1,39 @@
1
+ '''
2
+ ---------------------------------------------------------------------------------------
3
+ CLASSIFICATION API ENDPOINTS
4
+
5
+ Diese Endpunkte führen automatische Polyp-Klassifikationen durch:
6
+ - NICE: Für digitale Chromoendoskopie/NBI-basierte Klassifikation
7
+ - PARIS: Für Standard-Weißlicht-Klassifikation
8
+
9
+ Diese APIs sind für Backend-Verarbeitung gedacht und werden typischerweise
10
+ nach dem Import eines Videos automatisch aufgerufen.
11
+ ---------------------------------------------------------------------------------------
12
+ '''
13
+
14
+ from django.urls import path
15
+
16
+ url_patterns = [
17
+ # NICE Classification API
18
+ # POST /api/classifications/nice/
19
+ # Body: {"video_ids": [1, 2, 3]} oder leerer Body für alle Videos
20
+ # Führt NICE-Klassifikation für spezifizierte Videos durch
21
+ # path('classifications/nice/', ForNiceClassificationView.as_view(), name='nice_classification'),
22
+
23
+ # PARIS Classification API
24
+ # POST /api/classifications/paris/
25
+ # Body: {"video_ids": [1, 2, 3]} oder leerer Body für alle Videos
26
+ # Führt PARIS-Klassifikation für spezifizierte Videos durch
27
+ # path('classifications/paris/', ForParisClassificationView.as_view(), name='paris_classification'),
28
+
29
+ # Batch Classification API (beide Typen)
30
+ # POST /api/classifications/batch/
31
+ # Body: {"video_ids": [1, 2, 3], "types": ["nice", "paris"]}
32
+ # Führt beide Klassifikationstypen für spezifizierte Videos durch
33
+ # path('classifications/batch/', BatchClassificationView.as_view(), name='batch_classification'),
34
+
35
+ # Classification Status API
36
+ # GET /api/classifications/status/<video_id>/
37
+ # Gibt den Status der Klassifikationen für ein Video zurück
38
+ # path('classifications/status/<int:video_id>/', ClassificationStatusView.as_view(), name='classification_status'),
39
+ ]
@@ -0,0 +1,54 @@
1
+ from django.urls import path
2
+ from endoreg_db.views import (
3
+ get_findings_for_examination,
4
+ get_classifications_for_finding,
5
+ get_classification_choices,
6
+ get_classifications_for_examination,
7
+ ExaminationCreateView,
8
+ PatientExaminationDetailView,
9
+ PatientExaminationListView,
10
+ )
11
+
12
+ urlpatterns = [# URL patterns for ExaminationForm.vue API calls
13
+ path(
14
+ 'examinations/<int:examination_id>/findings/',
15
+ get_findings_for_examination,
16
+ name='get_findings_for_examination'
17
+ ),
18
+ path(
19
+ 'findings/<int:finding_id>/classifications/',
20
+ get_classifications_for_finding,
21
+ name='get_classifications_for_finding'
22
+ ),
23
+ path(
24
+ 'classifications/<int:classification_id>/choices/',
25
+ get_classification_choices,
26
+ name='get_choices_for_classification'
27
+ ),
28
+ # NEW: Examination CRUD endpoints for SimpleExaminationForm
29
+ # POST /api/examinations/create/ - Create new examination
30
+ # GET /api/examinations/{id}/ - Get examination details
31
+ # PATCH /api/examinations/{id}/ - Update examination
32
+ # GET /api/examinations/list/ - List examinations with filtering
33
+ # TODO: Clearly Distinguish between Examination (the template) and PatientExamination (the instance).
34
+ # The views below handle PatientExamination instances, which represent a specific examination performed on a patient.
35
+ # The URL names are updated to reflect this, using the 'patient_examination_*' prefix for clarity.
36
+ # TODO: Clearly Distinguish between Examination and PatientExamination by using 'patient-examination' prefix for clarity
37
+ path('patient-examinations/create/', ExaminationCreateView.as_view(), name='patient_examination_create'),
38
+ path('patient-examinations/<int:pk>/', PatientExaminationDetailView.as_view(), name='patient_examination_detail'),
39
+ path('patient-examinations/list/', PatientExaminationListView.as_view(), name='patient_examination_list'),
40
+
41
+ # NEW ENDPOINTS FOR RESTRUCTURED FRONTEND
42
+ path(
43
+ 'patient-examinations/<int:exam_id>/classifications/',
44
+ get_classifications_for_examination,
45
+ name='get_classifications_for_examination'
46
+ ),
47
+
48
+ path(
49
+ 'patient-examinations/<int:examination_id>/findings/',
50
+ get_findings_for_examination,
51
+ name='get_patient_examination_findings'
52
+ ),
53
+
54
+ ]
@@ -0,0 +1,6 @@
1
+ from django.urls import path
2
+ from endoreg_db.views import AvailableFilesListView
3
+
4
+ urlpatterns = [
5
+ path('available-files/', AvailableFilesListView.as_view(), name='available_files_list'),
6
+ ]
@@ -0,0 +1,33 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views.label_video_segment.validate import (
4
+ LabelVideoSegmentValidateView,
5
+ BulkSegmentValidateView,
6
+ VideoSegmentValidationCompleteView
7
+ )
8
+
9
+ url_patterns = [
10
+ # Einzelne Segment-Validierung
11
+ # POST /api/label-video-segment/<int:segment_id>/validate/
12
+ path(
13
+ 'label-video-segment/<int:segment_id>/validate/',
14
+ LabelVideoSegmentValidateView.as_view(),
15
+ name='label_video_segment_validate'
16
+ ),
17
+
18
+ # Bulk-Validierung mehrerer Segmente
19
+ # POST /api/label-video-segments/validate-bulk/
20
+ path(
21
+ 'label-video-segments/validate-bulk/',
22
+ BulkSegmentValidateView.as_view(),
23
+ name='label_video_segments_validate_bulk'
24
+ ),
25
+
26
+ # Alle Segmente eines Videos als validiert markieren
27
+ # POST /api/videos/<int:video_id>/segments/validate-complete/
28
+ path(
29
+ 'videos/<int:video_id>/segments/validate-complete/',
30
+ VideoSegmentValidationCompleteView.as_view(),
31
+ name='video_segments_validate_complete'
32
+ ),
33
+ ]
@@ -0,0 +1,44 @@
1
+ from django.urls import path
2
+ from endoreg_db.views import (
3
+ create_video_segment_annotation,
4
+ update_label_video_segment,
5
+ SensitiveMetaDetailView,
6
+ video_segments_view,
7
+ video_segment_detail_view,
8
+ get_lvs_by_name_and_video_id
9
+ )
10
+
11
+ url_patterns = [
12
+ path(
13
+ "lvs/by-label-name/<str:label_name>/by-video-id/<int:video_id>/",
14
+ get_lvs_by_name_and_video_id,
15
+ name='get_lvs_by_name_and_video_id'
16
+ ),
17
+ path(
18
+ 'annotations/',
19
+ create_video_segment_annotation,
20
+ name='create_annotation'
21
+ ),
22
+ path(
23
+ 'annotations/<int:annotation_id>/',
24
+ update_label_video_segment,
25
+ name='update_annotation'
26
+ ),
27
+ path(
28
+ 'save-anonymization-annotation-video/<int:annotation_id>/',
29
+ SensitiveMetaDetailView.as_view(),
30
+ name='save_anonymization_annotation_video'
31
+ ),
32
+ # Label Video Segment API endpoints
33
+ path(
34
+ 'video-segments/',
35
+ video_segments_view,
36
+ name='video_segments'
37
+ ),
38
+ path(
39
+ 'video-segments/<int:segment_id>/',
40
+ video_segment_detail_view,
41
+ name='video_segment_detail'
42
+ ),
43
+
44
+ ]
@@ -0,0 +1,229 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views.media import (
4
+ VideoMediaView,
5
+ PdfMediaView, # Alias to avoid conflict with legacy pdf.PDFMediaView
6
+ video_segments_by_pk,
7
+ video_segments_collection,
8
+ video_segments_by_video,
9
+ video_segment_detail,
10
+ video_segments_stats,
11
+ video_segment_validate,
12
+ video_segments_validate_bulk,
13
+ video_segments_validation_status,
14
+ video_sensitive_metadata,
15
+ video_sensitive_metadata_verify,
16
+ pdf_sensitive_metadata,
17
+ pdf_sensitive_metadata_verify,
18
+ sensitive_metadata_list,
19
+ pdf_sensitive_metadata_list,
20
+ )
21
+ from endoreg_db.views import (
22
+ VideoStreamView,
23
+ )
24
+ from endoreg_db.views.pdf.reimport import PdfReimportView
25
+ from endoreg_db.views.video.reimport import VideoReimportView
26
+ from endoreg_db.views.video.correction import (
27
+ VideoReprocessView,
28
+ VideoMetadataView,
29
+ VideoProcessingHistoryView,
30
+ VideoAnalyzeView,
31
+ VideoApplyMaskView,
32
+ VideoRemoveFramesView,
33
+ )
34
+ # ---------------------------------------------------------------------------------------
35
+ # ANNOTATION API ENDPOINTS
36
+ #
37
+ # New endpoints for segment annotation management that create user-source segments
38
+ # POST /api/annotations/ - Create new annotation (creates user segment if type=segment)
39
+ # PATCH /api/annotations/<id>/ - Update annotation (creates user segment if timing/label changed)
40
+ # ---------------------------------------------------------------------------------------
41
+
42
+ # Simplified Meta and Validation Endpoints
43
+
44
+ urlpatterns = [
45
+ # Video media endpoints
46
+ path("media/videos/", VideoMediaView.as_view(), name="video-list"),
47
+ path("media/videos/<int:pk>/", VideoStreamView.as_view(), name="video-detail-stream"), # Support ?type= params
48
+ path("media/videos/<int:pk>/details/", VideoMediaView.as_view(), name="video-detail"), # JSON metadata
49
+ path("media/videos/<int:pk>/stream/", VideoStreamView.as_view(), name="video-stream"), # Legacy support
50
+
51
+ # Video Re-import API endpoint (modern media framework)
52
+ # POST /api/media/videos/<int:pk>/reimport/
53
+ # Re-imports a video file to regenerate metadata when OCR failed or data is incomplete
54
+ path("media/videos/<int:pk>/reimport/", VideoReimportView.as_view(), name="video-reimport"),
55
+
56
+ # ---------------------------------------------------------------------------------------
57
+ # VIDEO CORRECTION API ENDPOINTS (Modern Media Framework - October 14, 2025)
58
+ #
59
+ # All video correction endpoints migrated to unified /api/media/videos/<pk>/ pattern
60
+ # These endpoints enable video correction workflows (Phase 1.1):
61
+ # - Analysis: Detect sensitive frames using MiniCPM-o 2.6 or OCR+LLM
62
+ # - Masking: Apply device-specific masks or custom ROI masks
63
+ # - Frame Removal: Remove sensitive frames from videos
64
+ # - Reprocessing: Re-run entire anonymization pipeline
65
+ # - Metadata: View analysis results
66
+ # - History: Track all correction operations
67
+ # ---------------------------------------------------------------------------------------
68
+
69
+ # Video Metadata API
70
+ # GET /api/media/videos/<int:pk>/metadata/
71
+ # Returns analysis results (sensitive frame count, ratio, frame IDs)
72
+ path("media/videos/<int:pk>/metadata/", VideoMetadataView.as_view(), name="video-metadata"),
73
+
74
+ # Video Processing History API
75
+ # GET /api/media/videos/<int:pk>/processing-history/
76
+ # Returns history of all processing operations (masking, frame removal, analysis)
77
+ path("media/videos/<int:pk>/processing-history/", VideoProcessingHistoryView.as_view(), name="video-processing-history"),
78
+
79
+ # Video Analysis API
80
+ # POST /api/media/videos/<int:pk>/analyze/
81
+ # Analyzes video for sensitive frames using MiniCPM-o 2.6 or OCR+LLM
82
+ # Body: { detection_method: 'minicpm'|'ocr_llm'|'hybrid', sample_interval: 30 }
83
+ path("media/videos/<int:pk>/analyze/", VideoAnalyzeView.as_view(), name="video-analyze"),
84
+
85
+ # Video Masking API
86
+ # POST /api/media/videos/<int:pk>/apply-mask/
87
+ # Applies device mask or custom ROI mask to video
88
+ # Body: { mask_type: 'device'|'custom', device_name: 'olympus', roi: {...} }
89
+ path("media/videos/<int:pk>/apply-mask/", VideoApplyMaskView.as_view(), name="video-apply-mask"),
90
+
91
+ # Video Frame Removal API
92
+ # POST /api/media/videos/<int:pk>/remove-frames/
93
+ # Removes specified frames from video
94
+ # Body: { frame_list: [10,20,30] OR frame_ranges: '10-20,30' OR detection_method: 'automatic' }
95
+ path("media/videos/<int:pk>/remove-frames/", VideoRemoveFramesView.as_view(), name="video-remove-frames"),
96
+
97
+ # Video Reprocess API endpoint (modern media framework)
98
+ # POST /api/media/videos/<int:pk>/reprocess/
99
+ # Re-runs entire anonymization pipeline for a video (correction workflow)
100
+ path("media/videos/<int:pk>/reprocess/", VideoReprocessView.as_view(), name="video-reprocess"),
101
+
102
+ # ---------------------------------------------------------------------------------------
103
+ # VIDEO SEGMENT API ENDPOINTS (Modern Media Framework - October 14, 2025)
104
+ #
105
+ # Unified segment management endpoints replacing legacy /api/video-segments/
106
+ # Collection: GET/POST all segments across videos
107
+ # Video-scoped: GET/POST segments for specific video
108
+ # Detail: GET/PATCH/DELETE individual segment
109
+ # ---------------------------------------------------------------------------------------
110
+
111
+ # Video Segments Collection API
112
+ # GET/POST /api/media/videos/segments/
113
+ # List all video segments across videos or create new segment
114
+ path("media/videos/segments/", video_segments_collection, name="video-segments-collection"),
115
+
116
+ # Video Segments Stats API
117
+ # GET /api/media/videos/segments/stats/
118
+ # Get statistics about video segments
119
+ path("media/videos/segments/stats/", video_segments_stats, name="video-segments-stats"),
120
+
121
+ # Video-Specific Segments API
122
+ # GET/POST /api/media/videos/<int:pk>/segments/
123
+ # List segments for specific video or create segment for video
124
+ path("media/videos/<int:pk>/segments/", video_segments_by_video, name="video-segments-by-video"),
125
+
126
+ # Segment Detail API
127
+ # GET /api/media/videos/<int:pk>/segments/<int:segment_id>/
128
+ # PATCH /api/media/videos/<int:pk>/segments/<int:segment_id>/
129
+ # DELETE /api/media/videos/<int:pk>/segments/<int:segment_id>/
130
+ # Manages individual segment operations
131
+ path("media/videos/<int:pk>/segments/<int:segment_id>/", video_segment_detail, name="video-segment-detail"),
132
+
133
+ # ---------------------------------------------------------------------------------------
134
+ # VIDEO SEGMENT VALIDATION API ENDPOINTS (Modern Media Framework - October 14, 2025)
135
+ #
136
+ # Unified validation endpoints replacing legacy /api/label-video-segment/*/validate/
137
+ # Single: POST validate individual segment
138
+ # Bulk: POST validate multiple segments
139
+ # Status: GET/POST validation status for all segments
140
+ # ---------------------------------------------------------------------------------------
141
+
142
+ # Single Segment Validation API
143
+ # POST /api/media/videos/<int:pk>/segments/<int:segment_id>/validate/
144
+ # Validates a single video segment
145
+ # Body: { "is_validated": true, "notes": "..." }
146
+ path("media/videos/<int:pk>/segments/<int:segment_id>/validate/", video_segment_validate, name="video-segment-validate"),
147
+
148
+ # Bulk Segment Validation API
149
+ # POST /api/media/videos/<int:pk>/segments/validate-bulk/
150
+ # Validates multiple segments at once
151
+ # Body: { "segment_ids": [1,2,3], "is_validated": true, "notes": "..." }
152
+ path("media/videos/<int:pk>/segments/validate-bulk/", video_segments_validate_bulk, name="video-segments-validate-bulk"),
153
+
154
+ # Segment Validation Status API
155
+ # GET /api/media/videos/<int:pk>/segments/validation-status/
156
+ # Returns validation statistics for all segments
157
+ # POST /api/media/videos/<int:pk>/segments/validation-status/
158
+ # Marks all segments (or filtered by label) as validated
159
+ # Body: { "label_name": "polyp", "notes": "..." }
160
+ path("media/videos/<int:pk>/segments/validation-status/", video_segments_validation_status, name="video-segments-validation-status"),
161
+
162
+ # ---------------------------------------------------------------------------------------
163
+ # SENSITIVE METADATA ENDPOINTS (Modern Media Framework)
164
+ # ---------------------------------------------------------------------------------------
165
+
166
+ # Video Sensitive Metadata (Resource-Scoped)
167
+ # GET/PATCH /api/media/videos/<pk>/sensitive-metadata/
168
+ # Get or update sensitive patient data for a video
169
+ path(
170
+ "media/videos/<int:pk>/sensitive-metadata/",
171
+ video_sensitive_metadata,
172
+ name="video-sensitive-metadata"
173
+ ),
174
+
175
+ # POST /api/media/videos/<pk>/sensitive-metadata/verify/
176
+ # Update verification state (dob_verified, names_verified)
177
+ path(
178
+ "media/videos/<int:pk>/sensitive-metadata/verify/",
179
+ video_sensitive_metadata_verify,
180
+ name="video-sensitive-metadata-verify"
181
+ ),
182
+
183
+ # PDF Sensitive Metadata (Resource-Scoped)
184
+ # GET/PATCH /api/media/pdfs/<pk>/sensitive-metadata/
185
+ # Get or update sensitive patient data for a PDF
186
+ path(
187
+ "media/pdfs/<int:pk>/sensitive-metadata/",
188
+ pdf_sensitive_metadata,
189
+ name="pdf-sensitive-metadata"
190
+ ),
191
+
192
+ # POST /api/media/pdfs/<pk>/sensitive-metadata/verify/
193
+ # Update verification state (dob_verified, names_verified)
194
+ path(
195
+ "media/pdfs/<int:pk>/sensitive-metadata/verify/",
196
+ pdf_sensitive_metadata_verify,
197
+ name="pdf-sensitive-metadata-verify"
198
+ ),
199
+
200
+ # List Endpoints (Collection-Level)
201
+ # GET /api/media/sensitive-metadata/
202
+ # List all sensitive metadata (combined PDFs and Videos)
203
+ # Supports filtering: ?content_type=pdf|video&verified=true&search=name
204
+ path(
205
+ "media/sensitive-metadata/",
206
+ sensitive_metadata_list,
207
+ name="sensitive-metadata-list"
208
+ ),
209
+
210
+ # GET /api/media/pdfs/sensitive-metadata/
211
+ # List sensitive metadata for PDFs only
212
+ # Replaces legacy /api/pdf/sensitivemeta/list/
213
+ path(
214
+ "media/pdfs/sensitive-metadata/",
215
+ pdf_sensitive_metadata_list,
216
+ name="pdf-sensitive-metadata-list"
217
+ ),
218
+
219
+ # PDF media endpoints
220
+ path("media/pdfs/", PdfMediaView.as_view(), name="pdf-list"),
221
+ path("media/pdfs/<int:pk>/", PdfMediaView.as_view(), name="pdf-detail"),
222
+ path("media/pdfs/<int:pk>/stream/", PdfMediaView.as_view(), name="pdf-stream"),
223
+
224
+ # PDF Re-import API endpoint (modern media framework)
225
+ # POST /api/media/pdfs/<int:pk>/reimport/
226
+ # Re-imports a PDF file to regenerate metadata when OCR failed or data is incomplete
227
+ path("media/pdfs/<int:pk>/reimport/", PdfReimportView.as_view(), name="pdf-reimport"),
228
+ ]
229
+ # ---------------------------------------------------------------------------------------
@@ -0,0 +1,19 @@
1
+ from endoreg_db.views import (
2
+ GenderViewSet,
3
+ CenterViewSet,
4
+ PatientViewSet,
5
+ PatientFindingViewSet
6
+ )
7
+ from rest_framework.routers import DefaultRouter
8
+ from django.urls import path, include
9
+
10
+ router = DefaultRouter()
11
+ router.register(r'patients', PatientViewSet)
12
+ router.register(r'centers', CenterViewSet)
13
+ router.register(r'genders', GenderViewSet)
14
+ router.register(r'patient-findings', PatientFindingViewSet)
15
+
16
+ urlpatterns = [
17
+ path('', include(router.urls)),
18
+ path('check_pe_exist/<int:pk>/', PatientViewSet.as_view({'get': 'check_pe_exist'}), name='check_pe_exist'),
19
+ ]
@@ -0,0 +1,48 @@
1
+ from django.urls import path
2
+ from endoreg_db.views import (
3
+ ReportListView,
4
+ ReportWithSecureUrlView,
5
+ ReportFileMetadataView,
6
+ )
7
+
8
+ url_patterns = [ # ---------------------------------------------------------------------------------------
9
+ # REPORT SERVICE ENDPOINTS
10
+ #
11
+ # Neue API-Endpunkte für den Report-Service mit sicheren URLs
12
+ #
13
+ # Diese Endpunkte ermöglichen es dem Frontend (UniversalReportViewer),
14
+ # Reports mit zeitlich begrenzten, sicheren URLs zu laden und anzuzeigen.
15
+ #
16
+ # Verwendung im Frontend:
17
+ # - loadReportWithSecureUrl(reportId)
18
+ # - generateSecureUrl(reportId, fileType)
19
+ # - validateCurrentUrl()
20
+ #
21
+ # ---------------------------------------------------------------------------------------
22
+
23
+ # API-Endpunkt für paginierte Report-Listen mit Filterung
24
+ # GET /api/reports/?page=1&page_size=20&status=pending&file_type=pdf&patient_name=John
25
+ # Lädt eine paginierte Liste aller Reports mit optionalen Filtern
26
+ path('reports/',
27
+ ReportListView.as_view(),
28
+ name='report_list'
29
+ ),
30
+
31
+ # API-Endpunkt für Reports mit automatischer sicherer URL-Generierung
32
+ # GET /api/reports/{report_id}/with-secure-url/
33
+ # Lädt Report-Daten inklusive Metadaten und generiert automatisch eine sichere URL
34
+ path(
35
+ 'reports/<int:report_id>/with-secure-url/',
36
+ ReportWithSecureUrlView.as_view(),
37
+ name='report_with_secure_url'
38
+ ),
39
+
40
+ # API-Endpunkt für Report-Datei-Metadaten
41
+ # GET /api/reports/{report_id}/file-metadata/
42
+ # Gibt Datei-Metadaten zurück (Größe, Typ, Datum, etc.)
43
+ path(
44
+ 'reports/<int:report_id>/file-metadata/',
45
+ ReportFileMetadataView.as_view(),
46
+ name='report_file_metadata'
47
+ ),
48
+ ]
@@ -0,0 +1,13 @@
1
+ from django.urls import path, include
2
+ from rest_framework.routers import DefaultRouter
3
+ from endoreg_db.views.requirement.lookup import LookupViewSet
4
+ from endoreg_db.views.requirement.evaluate import evaluate_requirements
5
+
6
+
7
+ router = DefaultRouter()
8
+ router.register(r"lookup", LookupViewSet, basename="lookup/")
9
+
10
+ urlpatterns = [
11
+ path("", include(router.urls)),
12
+ path("evaluate-requirements/", evaluate_requirements, name="evaluate-requirements/"),
13
+ ]
@@ -0,0 +1,46 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views import (
4
+ ExaminationStatsView,
5
+ VideoSegmentStatsView,
6
+ SensitiveMetaStatsView,
7
+ GeneralStatsView,
8
+ )
9
+
10
+ url_patterns = [
11
+ # ---------------------------------------------------------------------------------------
12
+ # STATISTICS API ENDPOINTS
13
+ #
14
+ # Diese Endpunkte stellen Dashboard-Statistiken bereit für das Frontend
15
+ # ---------------------------------------------------------------------------------------
16
+
17
+ # Examination Statistics API
18
+ # GET /api/examinations/stats/
19
+ # Liefert Statistiken über Examinations und PatientExaminations
20
+ path('examinations/stats/', ExaminationStatsView.as_view(), name='examination_stats'),
21
+
22
+ # Video Segment Statistics API
23
+ # GET /api/video-segment/stats/ (Note: singular 'segment' to match frontend)
24
+ # Liefert Statistiken über Video-Segmente und Label-Verteilung
25
+ path('video-segment/stats/', VideoSegmentStatsView.as_view(), name='video_segment_stats'),
26
+
27
+ # Alternative Video Segments Statistics API (plural version for compatibility)
28
+ # GET /api/video-segments/stats/
29
+ path('video-segments/stats/', VideoSegmentStatsView.as_view(), name='video_segments_stats'),
30
+
31
+ # Sensitive Meta Statistics API
32
+ # GET /api/video/sensitivemeta/stats/
33
+ # Liefert Statistiken über SensitiveMeta-Einträge und Verifikationsstatus
34
+ path('video/sensitivemeta/stats/', SensitiveMetaStatsView.as_view(), name='sensitive_meta_stats'),
35
+
36
+ # General Dashboard Statistics API
37
+ # GET /api/stats/
38
+ # Liefert allgemeine Übersichtsstatistiken für das Dashboard
39
+ path('stats/', GeneralStatsView.as_view(), name='general_stats'),
40
+
41
+ path(
42
+ 'video-segments/stats/',
43
+ VideoSegmentStatsView.as_view(),
44
+ name='video_segments_stats'
45
+ ),
46
+ ]