endoreg-db 0.8.5.1__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 (794) hide show
  1. endoreg_db/__init__.py +0 -0
  2. endoreg_db/admin.py +92 -0
  3. endoreg_db/api/serializers/finding_descriptions.py +0 -0
  4. endoreg_db/api/views/finding_descriptions.py +0 -0
  5. endoreg_db/api_urls.py +4 -0
  6. endoreg_db/apps.py +18 -0
  7. endoreg_db/assets/dummy_model.ckpt +1 -0
  8. endoreg_db/codemods/readme.md +88 -0
  9. endoreg_db/codemods/rename_datetime_fields.py +92 -0
  10. endoreg_db/config/__init__.py +0 -0
  11. endoreg_db/config/env.py +101 -0
  12. endoreg_db/data/__init__.py +144 -0
  13. endoreg_db/data/ai_model/data.yaml +7 -0
  14. endoreg_db/data/ai_model_label/label/data.yaml +88 -0
  15. endoreg_db/data/ai_model_label/label/polyp_classification.yaml +52 -0
  16. endoreg_db/data/ai_model_label/label-set/data.yaml +40 -0
  17. endoreg_db/data/ai_model_label/label-set/polyp_classifications.yaml +25 -0
  18. endoreg_db/data/ai_model_label/label-type/data.yaml +7 -0
  19. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +27 -0
  20. endoreg_db/data/ai_model_type/data.yaml +7 -0
  21. endoreg_db/data/ai_model_video_segmentation_label/base_segmentation.yaml +176 -0
  22. endoreg_db/data/ai_model_video_segmentation_labelset/data.yaml +20 -0
  23. endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -0
  24. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +8 -0
  25. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +9 -0
  26. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +23 -0
  27. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +19 -0
  28. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +19 -0
  29. endoreg_db/data/case_template/rule/19_create_patient.yaml +17 -0
  30. endoreg_db/data/case_template/rule_type/base_types.yaml +35 -0
  31. endoreg_db/data/case_template/rule_value/.init +0 -0
  32. endoreg_db/data/case_template/rule_value_type/base_types.yaml +59 -0
  33. endoreg_db/data/case_template/template/base.yaml +8 -0
  34. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +3 -0
  35. endoreg_db/data/case_template/tmp/_rule_value +13 -0
  36. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -0
  37. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +10 -0
  38. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +7 -0
  39. endoreg_db/data/center/data.yaml +91 -0
  40. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -0
  41. endoreg_db/data/center_shift/ukw.yaml +9 -0
  42. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -0
  43. endoreg_db/data/contraindication/bleeding.yaml +11 -0
  44. endoreg_db/data/db_summary.csv +58 -0
  45. endoreg_db/data/db_summary.xlsx +0 -0
  46. endoreg_db/data/disease/cardiovascular.yaml +37 -0
  47. endoreg_db/data/disease/hepatology.yaml +5 -0
  48. endoreg_db/data/disease/misc.yaml +5 -0
  49. endoreg_db/data/disease/renal.yaml +5 -0
  50. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +6 -0
  51. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +6 -0
  52. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +41 -0
  53. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +20 -0
  54. endoreg_db/data/distribution/date/patient.yaml +7 -0
  55. endoreg_db/data/distribution/multiple_categorical/.init +0 -0
  56. endoreg_db/data/distribution/numeric/data.yaml +14 -0
  57. endoreg_db/data/distribution/single_categorical/patient.yaml +7 -0
  58. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -0
  59. endoreg_db/data/endoscope/data.yaml +93 -0
  60. endoreg_db/data/endoscope_type/data.yaml +11 -0
  61. endoreg_db/data/endoscopy_processor/data.yaml +50 -0
  62. endoreg_db/data/event/cardiology.yaml +15 -0
  63. endoreg_db/data/event/neurology.yaml +14 -0
  64. endoreg_db/data/event/surgery.yaml +13 -0
  65. endoreg_db/data/event/thrombembolism.yaml +20 -0
  66. endoreg_db/data/examination/examinations/data.yaml +72 -0
  67. endoreg_db/data/examination/time/data.yaml +48 -0
  68. endoreg_db/data/examination/time-type/data.yaml +8 -0
  69. endoreg_db/data/examination/type/data.yaml +17 -0
  70. endoreg_db/data/examination_indication/endoscopy.yaml +424 -0
  71. endoreg_db/data/examination_indication_classification/endoscopy.yaml +160 -0
  72. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +101 -0
  73. endoreg_db/data/examination_requirement_set/colonoscopy.yaml +15 -0
  74. endoreg_db/data/finding/anatomy_colon.yaml +128 -0
  75. endoreg_db/data/finding/colonoscopy.yaml +40 -0
  76. endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +56 -0
  77. endoreg_db/data/finding/complication.yaml +16 -0
  78. endoreg_db/data/finding/data.yaml +105 -0
  79. endoreg_db/data/finding/examination_setting.yaml +16 -0
  80. endoreg_db/data/finding/medication_related.yaml +18 -0
  81. endoreg_db/data/finding/outcome.yaml +12 -0
  82. endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +95 -0
  83. endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +22 -0
  84. endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +25 -0
  85. endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +20 -0
  86. endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +24 -0
  87. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +68 -0
  88. endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +20 -0
  89. endoreg_db/data/finding_classification/colonoscopy_location.yaml +80 -0
  90. endoreg_db/data/finding_classification/colonoscopy_lst.yaml +21 -0
  91. endoreg_db/data/finding_classification/colonoscopy_nice.yaml +20 -0
  92. endoreg_db/data/finding_classification/colonoscopy_paris.yaml +26 -0
  93. endoreg_db/data/finding_classification/colonoscopy_sano.yaml +22 -0
  94. endoreg_db/data/finding_classification/colonoscopy_summary.yaml +53 -0
  95. endoreg_db/data/finding_classification/complication_generic.yaml +25 -0
  96. endoreg_db/data/finding_classification/examination_setting_generic.yaml +40 -0
  97. endoreg_db/data/finding_classification/histology_colo.yaml +51 -0
  98. endoreg_db/data/finding_classification/intervention_required.yaml +26 -0
  99. endoreg_db/data/finding_classification/medication_related.yaml +23 -0
  100. endoreg_db/data/finding_classification/visualized.yaml +33 -0
  101. endoreg_db/data/finding_classification_choice/bowel_preparation.yaml +78 -0
  102. endoreg_db/data/finding_classification_choice/colon_lesion_circularity_default.yaml +32 -0
  103. endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +15 -0
  104. endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +23 -0
  105. endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +15 -0
  106. endoreg_db/data/finding_classification_choice/colon_lesion_nice.yaml +17 -0
  107. endoreg_db/data/finding_classification_choice/colon_lesion_paris.yaml +57 -0
  108. endoreg_db/data/finding_classification_choice/colon_lesion_planarity_default.yaml +49 -0
  109. endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +14 -0
  110. endoreg_db/data/finding_classification_choice/colon_lesion_surface_intact_default.yaml +36 -0
  111. endoreg_db/data/finding_classification_choice/colonoscopy_location.yaml +229 -0
  112. endoreg_db/data/finding_classification_choice/colonoscopy_not_complete_reason.yaml +19 -0
  113. endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +82 -0
  114. endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +15 -0
  115. endoreg_db/data/finding_classification_choice/complication_generic_types.yaml +15 -0
  116. endoreg_db/data/finding_classification_choice/examination_setting_generic_types.yaml +15 -0
  117. endoreg_db/data/finding_classification_choice/histology.yaml +24 -0
  118. endoreg_db/data/finding_classification_choice/histology_polyp.yaml +20 -0
  119. endoreg_db/data/finding_classification_choice/outcome.yaml +19 -0
  120. endoreg_db/data/finding_classification_choice/yes_no_na.yaml +11 -0
  121. endoreg_db/data/finding_classification_type/colonoscopy_basic.yaml +48 -0
  122. endoreg_db/data/finding_intervention/endoscopy.yaml +43 -0
  123. endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +168 -0
  124. endoreg_db/data/finding_intervention/endoscopy_egd.yaml +128 -0
  125. endoreg_db/data/finding_intervention/endoscopy_ercp.yaml +32 -0
  126. endoreg_db/data/finding_intervention/endoscopy_eus_lower.yaml +9 -0
  127. endoreg_db/data/finding_intervention/endoscopy_eus_upper.yaml +36 -0
  128. endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
  129. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +79 -0
  130. endoreg_db/data/finding_type/data.yaml +43 -0
  131. endoreg_db/data/gender/data.yaml +42 -0
  132. endoreg_db/data/information_source/annotation.yaml +6 -0
  133. endoreg_db/data/information_source/data.yaml +30 -0
  134. endoreg_db/data/information_source/endoscopy_guidelines.yaml +7 -0
  135. endoreg_db/data/information_source/medication.yaml +6 -0
  136. endoreg_db/data/information_source/prediction.yaml +7 -0
  137. endoreg_db/data/information_source_type/data.yaml +8 -0
  138. endoreg_db/data/lab_value/cardiac_enzymes.yaml +37 -0
  139. endoreg_db/data/lab_value/coagulation.yaml +54 -0
  140. endoreg_db/data/lab_value/electrolytes.yaml +228 -0
  141. endoreg_db/data/lab_value/gastrointestinal_function.yaml +133 -0
  142. endoreg_db/data/lab_value/hematology.yaml +184 -0
  143. endoreg_db/data/lab_value/hormones.yaml +59 -0
  144. endoreg_db/data/lab_value/lipids.yaml +53 -0
  145. endoreg_db/data/lab_value/misc.yaml +76 -0
  146. endoreg_db/data/lab_value/renal_function.yaml +12 -0
  147. endoreg_db/data/log_type/data.yaml +57 -0
  148. endoreg_db/data/lx_client_tag/base.yaml +54 -0
  149. endoreg_db/data/lx_client_type/base.yaml +30 -0
  150. endoreg_db/data/lx_permission/base.yaml +24 -0
  151. endoreg_db/data/lx_permission/endoreg.yaml +52 -0
  152. endoreg_db/data/material/material.yaml +91 -0
  153. endoreg_db/data/medication/anticoagulation.yaml +65 -0
  154. endoreg_db/data/medication/tah.yaml +70 -0
  155. endoreg_db/data/medication_indication/anticoagulation.yaml +115 -0
  156. endoreg_db/data/medication_indication_type/data.yaml +11 -0
  157. endoreg_db/data/medication_indication_type/thrombembolism.yaml +41 -0
  158. endoreg_db/data/medication_intake_time/base.yaml +31 -0
  159. endoreg_db/data/medication_schedule/apixaban.yaml +95 -0
  160. endoreg_db/data/medication_schedule/ass.yaml +12 -0
  161. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -0
  162. endoreg_db/data/names_first/first_names.yaml +54 -0
  163. endoreg_db/data/names_last/last_names.yaml +51 -0
  164. endoreg_db/data/network_device/data.yaml +59 -0
  165. endoreg_db/data/network_device_type/data.yaml +12 -0
  166. endoreg_db/data/organ/data.yaml +29 -0
  167. endoreg_db/data/patient_lab_sample_type/generic.yaml +6 -0
  168. endoreg_db/data/pdf_type/data.yaml +46 -0
  169. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -0
  170. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -0
  171. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -0
  172. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -0
  173. endoreg_db/data/profession/data.yaml +70 -0
  174. endoreg_db/data/qualification/endoscopy.yaml +36 -0
  175. endoreg_db/data/qualification/m2.yaml +39 -0
  176. endoreg_db/data/qualification/outpatient_clinic.yaml +35 -0
  177. endoreg_db/data/qualification/sonography.yaml +36 -0
  178. endoreg_db/data/qualification_type/base.yaml +29 -0
  179. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -0
  180. endoreg_db/data/report_reader_flag/rkh-histology-generic.yaml +10 -0
  181. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +30 -0
  182. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +24 -0
  183. endoreg_db/data/requirement/age.yaml +26 -0
  184. endoreg_db/data/requirement/colonoscopy_baseline_austria.yaml +45 -0
  185. endoreg_db/data/requirement/disease_cardiovascular.yaml +79 -0
  186. endoreg_db/data/requirement/disease_classification_choice_cardiovascular.yaml +41 -0
  187. endoreg_db/data/requirement/disease_hepatology.yaml +12 -0
  188. endoreg_db/data/requirement/disease_misc.yaml +12 -0
  189. endoreg_db/data/requirement/disease_renal.yaml +96 -0
  190. endoreg_db/data/requirement/endoscopy_bleeding_risk.yaml +59 -0
  191. endoreg_db/data/requirement/event_cardiology.yaml +251 -0
  192. endoreg_db/data/requirement/event_requirements.yaml +145 -0
  193. endoreg_db/data/requirement/finding_colon_polyp.yaml +50 -0
  194. endoreg_db/data/requirement/gender.yaml +25 -0
  195. endoreg_db/data/requirement/lab_value.yaml +441 -0
  196. endoreg_db/data/requirement/medication.yaml +93 -0
  197. endoreg_db/data/requirement_operator/age.yaml +13 -0
  198. endoreg_db/data/requirement_operator/lab_operators.yaml +129 -0
  199. endoreg_db/data/requirement_operator/model_operators.yaml +96 -0
  200. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +48 -0
  201. endoreg_db/data/requirement_set/colonoscopy_austria_screening.yaml +57 -0
  202. endoreg_db/data/requirement_set/endoscopy_bleeding_risk.yaml +52 -0
  203. endoreg_db/data/requirement_set_type/data.yaml +20 -0
  204. endoreg_db/data/requirement_type/requirement_types.yaml +165 -0
  205. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -0
  206. endoreg_db/data/risk/bleeding.yaml +26 -0
  207. endoreg_db/data/risk/thrombosis.yaml +37 -0
  208. endoreg_db/data/risk_type/data.yaml +27 -0
  209. endoreg_db/data/setup_config.yaml +38 -0
  210. endoreg_db/data/shift/endoscopy.yaml +21 -0
  211. endoreg_db/data/shift/m2.yaml +0 -0
  212. endoreg_db/data/shift_type/base.yaml +35 -0
  213. endoreg_db/data/tag/requirement_set_tags.yaml +11 -0
  214. endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
  215. endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
  216. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -0
  217. endoreg_db/data/unit/concentration.yaml +115 -0
  218. endoreg_db/data/unit/data.yaml +17 -0
  219. endoreg_db/data/unit/length.yaml +31 -0
  220. endoreg_db/data/unit/misc.yaml +20 -0
  221. endoreg_db/data/unit/rate.yaml +6 -0
  222. endoreg_db/data/unit/time.yaml +48 -0
  223. endoreg_db/data/unit/volume.yaml +35 -0
  224. endoreg_db/data/unit/weight.yaml +38 -0
  225. endoreg_db/data/waste/data.yaml +12 -0
  226. endoreg_db/exceptions.py +19 -0
  227. endoreg_db/factories/__init__.py +0 -0
  228. endoreg_db/forms/__init__.py +5 -0
  229. endoreg_db/forms/examination_form.py +11 -0
  230. endoreg_db/forms/patient_finding_intervention_form.py +18 -0
  231. endoreg_db/forms/patient_form.py +27 -0
  232. endoreg_db/forms/questionnaires/__init__.py +1 -0
  233. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -0
  234. endoreg_db/forms/settings/__init__.py +8 -0
  235. endoreg_db/forms/unit.py +6 -0
  236. endoreg_db/helpers/__init__.py +0 -0
  237. endoreg_db/helpers/count_db.py +45 -0
  238. endoreg_db/helpers/data_loader.py +208 -0
  239. endoreg_db/helpers/default_objects.py +378 -0
  240. endoreg_db/helpers/download_segmentation_model.py +31 -0
  241. endoreg_db/helpers/interact.py +6 -0
  242. endoreg_db/helpers/test_video_helper.py +119 -0
  243. endoreg_db/logger_conf.py +140 -0
  244. endoreg_db/management/__init__.py +1 -0
  245. endoreg_db/management/commands/__init__.py +1 -0
  246. endoreg_db/management/commands/anonymize_video.py +0 -0
  247. endoreg_db/management/commands/check_auth.py +125 -0
  248. endoreg_db/management/commands/create_model_meta_from_huggingface.py +115 -0
  249. endoreg_db/management/commands/create_multilabel_model_meta.py +214 -0
  250. endoreg_db/management/commands/fix_missing_patient_data.py +172 -0
  251. endoreg_db/management/commands/fix_video_paths.py +165 -0
  252. endoreg_db/management/commands/import_fallback_video.py +203 -0
  253. endoreg_db/management/commands/import_report.py +298 -0
  254. endoreg_db/management/commands/import_video.py +423 -0
  255. endoreg_db/management/commands/import_video_with_classification.py +367 -0
  256. endoreg_db/management/commands/init_default_ai_model.py +112 -0
  257. endoreg_db/management/commands/load_ai_model_data.py +77 -0
  258. endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
  259. endoreg_db/management/commands/load_base_db_data.py +192 -0
  260. endoreg_db/management/commands/load_center_data.py +68 -0
  261. endoreg_db/management/commands/load_contraindication_data.py +41 -0
  262. endoreg_db/management/commands/load_disease_classification_choices_data.py +41 -0
  263. endoreg_db/management/commands/load_disease_classification_data.py +41 -0
  264. endoreg_db/management/commands/load_disease_data.py +62 -0
  265. endoreg_db/management/commands/load_distribution_data.py +66 -0
  266. endoreg_db/management/commands/load_endoscope_data.py +68 -0
  267. endoreg_db/management/commands/load_event_data.py +41 -0
  268. endoreg_db/management/commands/load_examination_data.py +75 -0
  269. endoreg_db/management/commands/load_examination_indication_data.py +86 -0
  270. endoreg_db/management/commands/load_finding_data.py +128 -0
  271. endoreg_db/management/commands/load_gender_data.py +44 -0
  272. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -0
  273. endoreg_db/management/commands/load_information_source.py +51 -0
  274. endoreg_db/management/commands/load_lab_value_data.py +50 -0
  275. endoreg_db/management/commands/load_medication_data.py +103 -0
  276. endoreg_db/management/commands/load_name_data.py +37 -0
  277. endoreg_db/management/commands/load_organ_data.py +43 -0
  278. endoreg_db/management/commands/load_pdf_type_data.py +61 -0
  279. endoreg_db/management/commands/load_profession_data.py +44 -0
  280. endoreg_db/management/commands/load_qualification_data.py +59 -0
  281. endoreg_db/management/commands/load_report_reader_flag_data.py +46 -0
  282. endoreg_db/management/commands/load_requirement_data.py +180 -0
  283. endoreg_db/management/commands/load_risk_data.py +56 -0
  284. endoreg_db/management/commands/load_shift_data.py +60 -0
  285. endoreg_db/management/commands/load_tag_data.py +57 -0
  286. endoreg_db/management/commands/load_unit_data.py +46 -0
  287. endoreg_db/management/commands/load_user_groups.py +28 -0
  288. endoreg_db/management/commands/register_ai_model.py +64 -0
  289. endoreg_db/management/commands/reset_celery_schedule.py +9 -0
  290. endoreg_db/management/commands/setup_endoreg_db.py +381 -0
  291. endoreg_db/management/commands/start_filewatcher.py +106 -0
  292. endoreg_db/management/commands/storage_management.py +548 -0
  293. endoreg_db/management/commands/summarize_db_content.py +189 -0
  294. endoreg_db/management/commands/validate_video.py +204 -0
  295. endoreg_db/management/commands/validate_video_files.py +161 -0
  296. endoreg_db/management/commands/video_validation.py +22 -0
  297. endoreg_db/mermaid/Overall_flow_patient_finding_intervention.md +10 -0
  298. endoreg_db/mermaid/anonymized_image_annotation.md +20 -0
  299. endoreg_db/mermaid/binary_classification_annotation.md +50 -0
  300. endoreg_db/mermaid/classification.md +8 -0
  301. endoreg_db/mermaid/examination.md +8 -0
  302. endoreg_db/mermaid/findings.md +7 -0
  303. endoreg_db/mermaid/image_classification.md +28 -0
  304. endoreg_db/mermaid/interventions.md +8 -0
  305. endoreg_db/mermaid/morphology.md +8 -0
  306. endoreg_db/mermaid/patient_creation.md +14 -0
  307. endoreg_db/mermaid/video_segmentation_annotation.md +17 -0
  308. endoreg_db/migrations/0001_initial.py +1857 -0
  309. endoreg_db/migrations/0002_add_video_correction_models.py +52 -0
  310. endoreg_db/migrations/0003_add_center_display_name.py +30 -0
  311. endoreg_db/migrations/__init__.py +0 -0
  312. endoreg_db/models/__init__.py +359 -0
  313. endoreg_db/models/administration/__init__.py +116 -0
  314. endoreg_db/models/administration/ai/__init__.py +9 -0
  315. endoreg_db/models/administration/ai/active_model.py +35 -0
  316. endoreg_db/models/administration/ai/ai_model.py +156 -0
  317. endoreg_db/models/administration/ai/model_type.py +41 -0
  318. endoreg_db/models/administration/case/__init__.py +19 -0
  319. endoreg_db/models/administration/case/case.py +114 -0
  320. endoreg_db/models/administration/case/case_template/__init__.py +15 -0
  321. endoreg_db/models/administration/case/case_template/case_template.py +125 -0
  322. endoreg_db/models/administration/case/case_template/case_template_rule.py +269 -0
  323. endoreg_db/models/administration/case/case_template/case_template_rule_value.py +86 -0
  324. endoreg_db/models/administration/case/case_template/case_template_type.py +26 -0
  325. endoreg_db/models/administration/center/__init__.py +13 -0
  326. endoreg_db/models/administration/center/center.py +67 -0
  327. endoreg_db/models/administration/center/center_product.py +64 -0
  328. endoreg_db/models/administration/center/center_resource.py +49 -0
  329. endoreg_db/models/administration/center/center_shift.py +88 -0
  330. endoreg_db/models/administration/center/center_waste.py +30 -0
  331. endoreg_db/models/administration/permissions/__init__.py +44 -0
  332. endoreg_db/models/administration/person/__init__.py +24 -0
  333. endoreg_db/models/administration/person/employee/__init__.py +3 -0
  334. endoreg_db/models/administration/person/employee/employee.py +35 -0
  335. endoreg_db/models/administration/person/employee/employee_qualification.py +39 -0
  336. endoreg_db/models/administration/person/employee/employee_type.py +42 -0
  337. endoreg_db/models/administration/person/examiner/__init__.py +4 -0
  338. endoreg_db/models/administration/person/examiner/examiner.py +54 -0
  339. endoreg_db/models/administration/person/names/__init__.py +0 -0
  340. endoreg_db/models/administration/person/names/first_name.py +18 -0
  341. endoreg_db/models/administration/person/names/last_name.py +19 -0
  342. endoreg_db/models/administration/person/patient/__init__.py +5 -0
  343. endoreg_db/models/administration/person/patient/patient.py +460 -0
  344. endoreg_db/models/administration/person/person.py +31 -0
  345. endoreg_db/models/administration/person/profession/__init__.py +24 -0
  346. endoreg_db/models/administration/person/user/__init__.py +5 -0
  347. endoreg_db/models/administration/person/user/portal_user_information.py +37 -0
  348. endoreg_db/models/administration/product/__init__.py +14 -0
  349. endoreg_db/models/administration/product/product.py +97 -0
  350. endoreg_db/models/administration/product/product_group.py +39 -0
  351. endoreg_db/models/administration/product/product_material.py +54 -0
  352. endoreg_db/models/administration/product/product_weight.py +47 -0
  353. endoreg_db/models/administration/product/reference_product.py +130 -0
  354. endoreg_db/models/administration/qualification/__init__.py +7 -0
  355. endoreg_db/models/administration/qualification/qualification.py +37 -0
  356. endoreg_db/models/administration/qualification/qualification_type.py +35 -0
  357. endoreg_db/models/administration/shift/__init__.py +9 -0
  358. endoreg_db/models/administration/shift/scheduled_days.py +69 -0
  359. endoreg_db/models/administration/shift/shift.py +51 -0
  360. endoreg_db/models/administration/shift/shift_type.py +108 -0
  361. endoreg_db/models/label/__init__.py +24 -0
  362. endoreg_db/models/label/annotation/__init__.py +12 -0
  363. endoreg_db/models/label/annotation/image_classification.py +84 -0
  364. endoreg_db/models/label/annotation/video_segmentation_annotation.py +66 -0
  365. endoreg_db/models/label/label.py +83 -0
  366. endoreg_db/models/label/label_set.py +53 -0
  367. endoreg_db/models/label/label_type.py +29 -0
  368. endoreg_db/models/label/label_video_segment/__init__.py +3 -0
  369. endoreg_db/models/label/label_video_segment/_create_from_video.py +41 -0
  370. endoreg_db/models/label/label_video_segment/label_video_segment.py +511 -0
  371. endoreg_db/models/label/video_segmentation_label.py +31 -0
  372. endoreg_db/models/label/video_segmentation_labelset.py +27 -0
  373. endoreg_db/models/media/__init__.py +16 -0
  374. endoreg_db/models/media/frame/__init__.py +3 -0
  375. endoreg_db/models/media/frame/frame.py +111 -0
  376. endoreg_db/models/media/pdf/__init__.py +11 -0
  377. endoreg_db/models/media/pdf/raw_pdf.py +613 -0
  378. endoreg_db/models/media/pdf/report_file.py +162 -0
  379. endoreg_db/models/media/pdf/report_reader/__init__.py +7 -0
  380. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +77 -0
  381. endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +20 -0
  382. endoreg_db/models/media/video/__init__.py +8 -0
  383. endoreg_db/models/media/video/create_from_file.py +358 -0
  384. endoreg_db/models/media/video/pipe_1.py +213 -0
  385. endoreg_db/models/media/video/pipe_2.py +105 -0
  386. endoreg_db/models/media/video/refactor_plan.md +0 -0
  387. endoreg_db/models/media/video/video_file.py +699 -0
  388. endoreg_db/models/media/video/video_file_ai.py +443 -0
  389. endoreg_db/models/media/video/video_file_anonymize.py +349 -0
  390. endoreg_db/models/media/video/video_file_frames/__init__.py +47 -0
  391. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +22 -0
  392. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +23 -0
  393. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +104 -0
  394. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +174 -0
  395. endoreg_db/models/media/video/video_file_frames/_get_frame.py +28 -0
  396. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +27 -0
  397. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +20 -0
  398. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +27 -0
  399. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +34 -0
  400. endoreg_db/models/media/video/video_file_frames/_get_frames.py +27 -0
  401. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +129 -0
  402. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +141 -0
  403. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +65 -0
  404. endoreg_db/models/media/video/video_file_frames.py +0 -0
  405. endoreg_db/models/media/video/video_file_io.py +168 -0
  406. endoreg_db/models/media/video/video_file_meta/__init__.py +22 -0
  407. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +45 -0
  408. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +39 -0
  409. endoreg_db/models/media/video/video_file_meta/get_fps.py +147 -0
  410. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +143 -0
  411. endoreg_db/models/media/video/video_file_meta/text_meta.py +134 -0
  412. endoreg_db/models/media/video/video_file_meta/video_meta.py +70 -0
  413. endoreg_db/models/media/video/video_file_segments.py +209 -0
  414. endoreg_db/models/media/video/video_metadata.py +65 -0
  415. endoreg_db/models/media/video/video_processing.py +152 -0
  416. endoreg_db/models/medical/__init__.py +146 -0
  417. endoreg_db/models/medical/contraindication/__init__.py +17 -0
  418. endoreg_db/models/medical/disease.py +156 -0
  419. endoreg_db/models/medical/event.py +137 -0
  420. endoreg_db/models/medical/examination/__init__.py +9 -0
  421. endoreg_db/models/medical/examination/examination.py +148 -0
  422. endoreg_db/models/medical/examination/examination_indication.py +278 -0
  423. endoreg_db/models/medical/examination/examination_time.py +49 -0
  424. endoreg_db/models/medical/examination/examination_time_type.py +41 -0
  425. endoreg_db/models/medical/examination/examination_type.py +48 -0
  426. endoreg_db/models/medical/finding/__init__.py +18 -0
  427. endoreg_db/models/medical/finding/finding.py +96 -0
  428. endoreg_db/models/medical/finding/finding_classification.py +142 -0
  429. endoreg_db/models/medical/finding/finding_intervention.py +52 -0
  430. endoreg_db/models/medical/finding/finding_type.py +35 -0
  431. endoreg_db/models/medical/hardware/__init__.py +8 -0
  432. endoreg_db/models/medical/hardware/endoscope.py +65 -0
  433. endoreg_db/models/medical/hardware/endoscopy_processor.py +182 -0
  434. endoreg_db/models/medical/laboratory/__init__.py +5 -0
  435. endoreg_db/models/medical/laboratory/lab_value.py +419 -0
  436. endoreg_db/models/medical/medication/__init__.py +19 -0
  437. endoreg_db/models/medical/medication/medication.py +31 -0
  438. endoreg_db/models/medical/medication/medication_indication.py +50 -0
  439. endoreg_db/models/medical/medication/medication_indication_type.py +39 -0
  440. endoreg_db/models/medical/medication/medication_intake_time.py +44 -0
  441. endoreg_db/models/medical/medication/medication_schedule.py +45 -0
  442. endoreg_db/models/medical/organ/__init__.py +35 -0
  443. endoreg_db/models/medical/patient/__init__.py +56 -0
  444. endoreg_db/models/medical/patient/medication_examples.py +38 -0
  445. endoreg_db/models/medical/patient/patient_disease.py +63 -0
  446. endoreg_db/models/medical/patient/patient_event.py +75 -0
  447. endoreg_db/models/medical/patient/patient_examination.py +249 -0
  448. endoreg_db/models/medical/patient/patient_examination_indication.py +44 -0
  449. endoreg_db/models/medical/patient/patient_finding.py +357 -0
  450. endoreg_db/models/medical/patient/patient_finding_classification.py +207 -0
  451. endoreg_db/models/medical/patient/patient_finding_intervention.py +40 -0
  452. endoreg_db/models/medical/patient/patient_lab_sample.py +148 -0
  453. endoreg_db/models/medical/patient/patient_lab_value.py +222 -0
  454. endoreg_db/models/medical/patient/patient_medication.py +104 -0
  455. endoreg_db/models/medical/patient/patient_medication_schedule.py +136 -0
  456. endoreg_db/models/medical/risk/__init__.py +7 -0
  457. endoreg_db/models/medical/risk/risk.py +72 -0
  458. endoreg_db/models/medical/risk/risk_type.py +51 -0
  459. endoreg_db/models/metadata/__init__.py +19 -0
  460. endoreg_db/models/metadata/frame_ocr_result.py +0 -0
  461. endoreg_db/models/metadata/model_meta.py +206 -0
  462. endoreg_db/models/metadata/model_meta_logic.py +343 -0
  463. endoreg_db/models/metadata/pdf_meta.py +89 -0
  464. endoreg_db/models/metadata/sensitive_meta.py +288 -0
  465. endoreg_db/models/metadata/sensitive_meta_logic.py +730 -0
  466. endoreg_db/models/metadata/video_meta.py +332 -0
  467. endoreg_db/models/metadata/video_prediction_logic.py +190 -0
  468. endoreg_db/models/metadata/video_prediction_meta.py +270 -0
  469. endoreg_db/models/other/__init__.py +40 -0
  470. endoreg_db/models/other/distribution/__init__.py +44 -0
  471. endoreg_db/models/other/distribution/base_value_distribution.py +20 -0
  472. endoreg_db/models/other/distribution/date_value_distribution.py +89 -0
  473. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +32 -0
  474. endoreg_db/models/other/distribution/numeric_value_distribution.py +125 -0
  475. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +22 -0
  476. endoreg_db/models/other/emission/__init__.py +5 -0
  477. endoreg_db/models/other/emission/emission_factor.py +94 -0
  478. endoreg_db/models/other/gender.py +27 -0
  479. endoreg_db/models/other/information_source.py +159 -0
  480. endoreg_db/models/other/material.py +28 -0
  481. endoreg_db/models/other/resource.py +22 -0
  482. endoreg_db/models/other/tag.py +27 -0
  483. endoreg_db/models/other/transport_route.py +33 -0
  484. endoreg_db/models/other/unit.py +32 -0
  485. endoreg_db/models/other/waste.py +27 -0
  486. endoreg_db/models/requirement/__init__.py +11 -0
  487. endoreg_db/models/requirement/requirement.py +767 -0
  488. endoreg_db/models/requirement/requirement_evaluation/__init__.py +6 -0
  489. endoreg_db/models/requirement/requirement_evaluation/get_values.py +40 -0
  490. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +9 -0
  491. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +95 -0
  492. endoreg_db/models/requirement/requirement_operator.py +176 -0
  493. endoreg_db/models/requirement/requirement_set.py +287 -0
  494. endoreg_db/models/rule/__init__.py +13 -0
  495. endoreg_db/models/rule/rule.py +27 -0
  496. endoreg_db/models/rule/rule_applicator.py +224 -0
  497. endoreg_db/models/rule/rule_attribute_dtype.py +17 -0
  498. endoreg_db/models/rule/rule_type.py +20 -0
  499. endoreg_db/models/rule/ruleset.py +17 -0
  500. endoreg_db/models/state/__init__.py +12 -0
  501. endoreg_db/models/state/abstract.py +11 -0
  502. endoreg_db/models/state/audit_ledger.py +150 -0
  503. endoreg_db/models/state/label_video_segment.py +22 -0
  504. endoreg_db/models/state/raw_pdf.py +187 -0
  505. endoreg_db/models/state/sensitive_meta.py +46 -0
  506. endoreg_db/models/state/video.py +232 -0
  507. endoreg_db/models/upload_job.py +99 -0
  508. endoreg_db/models/utils.py +135 -0
  509. endoreg_db/queries/__init__.py +5 -0
  510. endoreg_db/queries/annotations/__init__.py +3 -0
  511. endoreg_db/queries/annotations/legacy.py +158 -0
  512. endoreg_db/queries/sanity/__init_.py +0 -0
  513. endoreg_db/renames.yml +8 -0
  514. endoreg_db/root_urls.py +9 -0
  515. endoreg_db/schemas/__init__.py +0 -0
  516. endoreg_db/schemas/examination_evaluation.py +27 -0
  517. endoreg_db/serializers/Frames_NICE_and_PARIS_classifications.py +775 -0
  518. endoreg_db/serializers/__init__.py +147 -0
  519. endoreg_db/serializers/_old/raw_pdf_meta_validation.py +223 -0
  520. endoreg_db/serializers/_old/raw_video_meta_validation.py +179 -0
  521. endoreg_db/serializers/_old/video.py +71 -0
  522. endoreg_db/serializers/administration/__init__.py +14 -0
  523. endoreg_db/serializers/administration/ai/__init__.py +10 -0
  524. endoreg_db/serializers/administration/ai/active_model.py +10 -0
  525. endoreg_db/serializers/administration/ai/ai_model.py +18 -0
  526. endoreg_db/serializers/administration/ai/model_type.py +10 -0
  527. endoreg_db/serializers/administration/center.py +9 -0
  528. endoreg_db/serializers/administration/gender.py +9 -0
  529. endoreg_db/serializers/anonymization.py +69 -0
  530. endoreg_db/serializers/evaluation/examination_evaluation.py +1 -0
  531. endoreg_db/serializers/examination/__init__.py +10 -0
  532. endoreg_db/serializers/examination/base.py +46 -0
  533. endoreg_db/serializers/examination/dropdown.py +21 -0
  534. endoreg_db/serializers/examination_serializer.py +12 -0
  535. endoreg_db/serializers/finding/__init__.py +5 -0
  536. endoreg_db/serializers/finding/finding.py +54 -0
  537. endoreg_db/serializers/finding_classification/__init__.py +7 -0
  538. endoreg_db/serializers/finding_classification/choice.py +19 -0
  539. endoreg_db/serializers/finding_classification/classification.py +13 -0
  540. endoreg_db/serializers/label/__init__.py +7 -0
  541. endoreg_db/serializers/label/image_classification_annotation.py +62 -0
  542. endoreg_db/serializers/label/label.py +15 -0
  543. endoreg_db/serializers/label_video_segment/__init__.py +7 -0
  544. endoreg_db/serializers/label_video_segment/_lvs_create.py +149 -0
  545. endoreg_db/serializers/label_video_segment/_lvs_update.py +138 -0
  546. endoreg_db/serializers/label_video_segment/_lvs_validate.py +149 -0
  547. endoreg_db/serializers/label_video_segment/label_video_segment.py +344 -0
  548. endoreg_db/serializers/label_video_segment/label_video_segment_annotation.py +99 -0
  549. endoreg_db/serializers/label_video_segment/label_video_segment_update.py +163 -0
  550. endoreg_db/serializers/meta/__init__.py +19 -0
  551. endoreg_db/serializers/meta/pdf_file_meta_extraction.py +115 -0
  552. endoreg_db/serializers/meta/report_meta.py +53 -0
  553. endoreg_db/serializers/meta/sensitive_meta_detail.py +162 -0
  554. endoreg_db/serializers/meta/sensitive_meta_update.py +148 -0
  555. endoreg_db/serializers/meta/sensitive_meta_verification.py +59 -0
  556. endoreg_db/serializers/meta/video_meta.py +39 -0
  557. endoreg_db/serializers/misc/__init__.py +14 -0
  558. endoreg_db/serializers/misc/file_overview.py +152 -0
  559. endoreg_db/serializers/misc/stats.py +33 -0
  560. endoreg_db/serializers/misc/translatable_field_mix_in.py +44 -0
  561. endoreg_db/serializers/misc/upload_job.py +71 -0
  562. endoreg_db/serializers/misc/vop_patient_data.py +120 -0
  563. endoreg_db/serializers/patient/__init__.py +11 -0
  564. endoreg_db/serializers/patient/patient.py +86 -0
  565. endoreg_db/serializers/patient/patient_dropdown.py +27 -0
  566. endoreg_db/serializers/patient_examination/__init__.py +7 -0
  567. endoreg_db/serializers/patient_examination/patient_examination.py +141 -0
  568. endoreg_db/serializers/patient_finding/__init__.py +15 -0
  569. endoreg_db/serializers/patient_finding/patient_finding.py +31 -0
  570. endoreg_db/serializers/patient_finding/patient_finding_classification.py +39 -0
  571. endoreg_db/serializers/patient_finding/patient_finding_detail.py +53 -0
  572. endoreg_db/serializers/patient_finding/patient_finding_intervention.py +26 -0
  573. endoreg_db/serializers/patient_finding/patient_finding_list.py +41 -0
  574. endoreg_db/serializers/patient_finding/patient_finding_write.py +126 -0
  575. endoreg_db/serializers/pdf/__init__.py +5 -0
  576. endoreg_db/serializers/pdf/anony_text_validation.py +85 -0
  577. endoreg_db/serializers/report/__init__.py +9 -0
  578. endoreg_db/serializers/report/mixins.py +45 -0
  579. endoreg_db/serializers/report/report.py +105 -0
  580. endoreg_db/serializers/report/report_list.py +22 -0
  581. endoreg_db/serializers/report/secure_file_url.py +26 -0
  582. endoreg_db/serializers/requirements/requirement_schema.py +25 -0
  583. endoreg_db/serializers/requirements/requirement_sets.py +29 -0
  584. endoreg_db/serializers/sensitive_meta_serializer.py +282 -0
  585. endoreg_db/serializers/video/__init__.py +7 -0
  586. endoreg_db/serializers/video/segmentation.py +263 -0
  587. endoreg_db/serializers/video/video_file_brief.py +10 -0
  588. endoreg_db/serializers/video/video_file_detail.py +83 -0
  589. endoreg_db/serializers/video/video_file_list.py +67 -0
  590. endoreg_db/serializers/video/video_metadata.py +105 -0
  591. endoreg_db/serializers/video/video_processing_history.py +153 -0
  592. endoreg_db/services/__init__.py +5 -0
  593. endoreg_db/services/anonymization.py +223 -0
  594. endoreg_db/services/examination_evaluation.py +149 -0
  595. endoreg_db/services/finding_description_service.py +0 -0
  596. endoreg_db/services/lookup_service.py +241 -0
  597. endoreg_db/services/lookup_store.py +122 -0
  598. endoreg_db/services/pdf_import.py +1159 -0
  599. endoreg_db/services/polling_coordinator.py +288 -0
  600. endoreg_db/services/pseudonym_service.py +89 -0
  601. endoreg_db/services/requirements_object.py +147 -0
  602. endoreg_db/services/segment_sync.py +155 -0
  603. endoreg_db/services/storage_aware_video_processor.py +344 -0
  604. endoreg_db/services/video_import.py +1258 -0
  605. endoreg_db/tasks/upload_tasks.py +207 -0
  606. endoreg_db/tasks/video_ingest.py +157 -0
  607. endoreg_db/tasks/video_processing_tasks.py +327 -0
  608. endoreg_db/templates/admin/patient_finding_intervention.html +253 -0
  609. endoreg_db/templates/admin/start_examination.html +12 -0
  610. endoreg_db/templates/timeline.html +176 -0
  611. endoreg_db/urls/__init__.py +70 -0
  612. endoreg_db/urls/anonymization.py +32 -0
  613. endoreg_db/urls/auth.py +16 -0
  614. endoreg_db/urls/classification.py +39 -0
  615. endoreg_db/urls/examination.py +54 -0
  616. endoreg_db/urls/files.py +6 -0
  617. endoreg_db/urls/label_video_segment_validate.py +33 -0
  618. endoreg_db/urls/label_video_segments.py +44 -0
  619. endoreg_db/urls/media.py +226 -0
  620. endoreg_db/urls/patient.py +19 -0
  621. endoreg_db/urls/report.py +48 -0
  622. endoreg_db/urls/requirements.py +13 -0
  623. endoreg_db/urls/sensitive_meta.py +0 -0
  624. endoreg_db/urls/stats.py +46 -0
  625. endoreg_db/urls/upload.py +20 -0
  626. endoreg_db/urls/video.py +61 -0
  627. endoreg_db/urls.py +9 -0
  628. endoreg_db/utils/__init__.py +88 -0
  629. endoreg_db/utils/ai/__init__.py +9 -0
  630. endoreg_db/utils/ai/get.py +5 -0
  631. endoreg_db/utils/ai/inference_dataset.py +52 -0
  632. endoreg_db/utils/ai/multilabel_classification_net.py +159 -0
  633. endoreg_db/utils/ai/postprocess.py +63 -0
  634. endoreg_db/utils/ai/predict.py +291 -0
  635. endoreg_db/utils/ai/preprocess.py +68 -0
  636. endoreg_db/utils/calc_duration_seconds.py +24 -0
  637. endoreg_db/utils/case_generator/__init__.py +0 -0
  638. endoreg_db/utils/case_generator/case_generator.py +159 -0
  639. endoreg_db/utils/case_generator/lab_sample_factory.py +33 -0
  640. endoreg_db/utils/case_generator/utils.py +30 -0
  641. endoreg_db/utils/check_video_files.py +148 -0
  642. endoreg_db/utils/cropping.py +29 -0
  643. endoreg_db/utils/dataloader.py +175 -0
  644. endoreg_db/utils/dates.py +60 -0
  645. endoreg_db/utils/env.py +33 -0
  646. endoreg_db/utils/extract_specific_frames.py +72 -0
  647. endoreg_db/utils/file_operations.py +58 -0
  648. endoreg_db/utils/fix_video_path_direct.py +141 -0
  649. endoreg_db/utils/frame_anonymization_utils.py +463 -0
  650. endoreg_db/utils/hashs.py +153 -0
  651. endoreg_db/utils/links/__init__.py +0 -0
  652. endoreg_db/utils/links/requirement_link.py +193 -0
  653. endoreg_db/utils/mime_types.py +0 -0
  654. endoreg_db/utils/names.py +76 -0
  655. endoreg_db/utils/ocr.py +190 -0
  656. endoreg_db/utils/parse_and_generate_yaml.py +46 -0
  657. endoreg_db/utils/paths.py +95 -0
  658. endoreg_db/utils/permissions.py +143 -0
  659. endoreg_db/utils/pipelines/Readme.md +235 -0
  660. endoreg_db/utils/pipelines/__init__.py +0 -0
  661. endoreg_db/utils/pipelines/process_video_dir.py +120 -0
  662. endoreg_db/utils/product/__init__.py +0 -0
  663. endoreg_db/utils/product/sum_emissions.py +20 -0
  664. endoreg_db/utils/product/sum_weights.py +18 -0
  665. endoreg_db/utils/pydantic_models/__init__.py +6 -0
  666. endoreg_db/utils/pydantic_models/db_config.py +57 -0
  667. endoreg_db/utils/requirement_helpers.py +0 -0
  668. endoreg_db/utils/requirement_operator_logic/__init__.py +0 -0
  669. endoreg_db/utils/requirement_operator_logic/lab_value_operators.py +578 -0
  670. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +368 -0
  671. endoreg_db/utils/setup_config.py +177 -0
  672. endoreg_db/utils/translation.py +27 -0
  673. endoreg_db/utils/uuid.py +4 -0
  674. endoreg_db/utils/validate_endo_roi.py +19 -0
  675. endoreg_db/utils/validate_subcategory_dict.py +91 -0
  676. endoreg_db/utils/validate_video_detailed.py +357 -0
  677. endoreg_db/utils/video/__init__.py +26 -0
  678. endoreg_db/utils/video/extract_frames.py +88 -0
  679. endoreg_db/utils/video/ffmpeg_wrapper.py +835 -0
  680. endoreg_db/utils/video/names.py +42 -0
  681. endoreg_db/utils/video/streaming_processor.py +312 -0
  682. endoreg_db/utils/video/video_splitter.py +94 -0
  683. endoreg_db/views/Frames_NICE_and_PARIS_classifications_views.py +238 -0
  684. endoreg_db/views/__init__.py +272 -0
  685. endoreg_db/views/anonymization/__init__.py +27 -0
  686. endoreg_db/views/anonymization/media_management.py +454 -0
  687. endoreg_db/views/anonymization/overview.py +216 -0
  688. endoreg_db/views/anonymization/validate.py +107 -0
  689. endoreg_db/views/auth/__init__.py +13 -0
  690. endoreg_db/views/auth/keycloak.py +113 -0
  691. endoreg_db/views/examination/__init__.py +33 -0
  692. endoreg_db/views/examination/examination.py +37 -0
  693. endoreg_db/views/examination/examination_manifest_cache.py +26 -0
  694. endoreg_db/views/examination/get_finding_classification_choices.py +59 -0
  695. endoreg_db/views/examination/get_finding_classifications.py +36 -0
  696. endoreg_db/views/examination/get_findings.py +41 -0
  697. endoreg_db/views/examination/get_instruments.py +18 -0
  698. endoreg_db/views/examination/get_interventions.py +14 -0
  699. endoreg_db/views/finding/__init__.py +9 -0
  700. endoreg_db/views/finding/finding.py +112 -0
  701. endoreg_db/views/finding/get_classifications.py +14 -0
  702. endoreg_db/views/finding/get_interventions.py +17 -0
  703. endoreg_db/views/finding_classification/__init__.py +13 -0
  704. endoreg_db/views/finding_classification/base.py +0 -0
  705. endoreg_db/views/finding_classification/finding_classification.py +42 -0
  706. endoreg_db/views/finding_classification/get_classification_choices.py +55 -0
  707. endoreg_db/views/label/__init__.py +5 -0
  708. endoreg_db/views/label/label.py +15 -0
  709. endoreg_db/views/label_video_segment/__init__.py +16 -0
  710. endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +44 -0
  711. endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +50 -0
  712. endoreg_db/views/label_video_segment/label_video_segment.py +77 -0
  713. endoreg_db/views/label_video_segment/label_video_segment_by_label.py +174 -0
  714. endoreg_db/views/label_video_segment/label_video_segment_detail.py +73 -0
  715. endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +46 -0
  716. endoreg_db/views/label_video_segment/validate.py +226 -0
  717. endoreg_db/views/media/__init__.py +45 -0
  718. endoreg_db/views/media/pdf_media.py +386 -0
  719. endoreg_db/views/media/segments.py +71 -0
  720. endoreg_db/views/media/sensitive_metadata.py +314 -0
  721. endoreg_db/views/media/video_media.py +272 -0
  722. endoreg_db/views/media/video_segments.py +524 -0
  723. endoreg_db/views/meta/__init__.py +15 -0
  724. endoreg_db/views/meta/available_files_list.py +146 -0
  725. endoreg_db/views/meta/report_meta.py +53 -0
  726. endoreg_db/views/meta/sensitive_meta_detail.py +148 -0
  727. endoreg_db/views/meta/sensitive_meta_list.py +104 -0
  728. endoreg_db/views/meta/sensitive_meta_verification.py +71 -0
  729. endoreg_db/views/misc/__init__.py +63 -0
  730. endoreg_db/views/misc/center.py +13 -0
  731. endoreg_db/views/misc/csrf.py +7 -0
  732. endoreg_db/views/misc/gender.py +14 -0
  733. endoreg_db/views/misc/secure_file_serving_view.py +80 -0
  734. endoreg_db/views/misc/secure_file_url_view.py +84 -0
  735. endoreg_db/views/misc/secure_url_validate.py +79 -0
  736. endoreg_db/views/misc/stats.py +220 -0
  737. endoreg_db/views/misc/translation.py +182 -0
  738. endoreg_db/views/misc/upload_views.py +240 -0
  739. endoreg_db/views/patient/__init__.py +5 -0
  740. endoreg_db/views/patient/patient.py +210 -0
  741. endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +164 -0
  742. endoreg_db/views/patient_examination/__init__.py +11 -0
  743. endoreg_db/views/patient_examination/patient_examination.py +140 -0
  744. endoreg_db/views/patient_examination/patient_examination_create.py +63 -0
  745. endoreg_db/views/patient_examination/patient_examination_detail.py +66 -0
  746. endoreg_db/views/patient_examination/patient_examination_list.py +68 -0
  747. endoreg_db/views/patient_examination/video.py +194 -0
  748. endoreg_db/views/patient_finding/__init__.py +7 -0
  749. endoreg_db/views/patient_finding/base.py +0 -0
  750. endoreg_db/views/patient_finding/patient_finding.py +64 -0
  751. endoreg_db/views/patient_finding/patient_finding_optimized.py +259 -0
  752. endoreg_db/views/patient_finding_classification/__init__.py +5 -0
  753. endoreg_db/views/patient_finding_classification/pfc_create.py +67 -0
  754. endoreg_db/views/patient_finding_location/__init__.py +5 -0
  755. endoreg_db/views/patient_finding_location/pfl_create.py +70 -0
  756. endoreg_db/views/patient_finding_morphology/__init__.py +5 -0
  757. endoreg_db/views/patient_finding_morphology/pfm_create.py +70 -0
  758. endoreg_db/views/pdf/__init__.py +11 -0
  759. endoreg_db/views/pdf/pdf_media.py +239 -0
  760. endoreg_db/views/pdf/pdf_stream_views.py +127 -0
  761. endoreg_db/views/pdf/reimport.py +161 -0
  762. endoreg_db/views/report/__init__.py +9 -0
  763. endoreg_db/views/report/report_list.py +112 -0
  764. endoreg_db/views/report/report_with_secure_url.py +28 -0
  765. endoreg_db/views/report/start_examination.py +7 -0
  766. endoreg_db/views/requirement/__init__.py +10 -0
  767. endoreg_db/views/requirement/evaluate.py +279 -0
  768. endoreg_db/views/requirement/lookup.py +483 -0
  769. endoreg_db/views/requirement/lookup_store.py +252 -0
  770. endoreg_db/views/requirement_lookup/lookup.py +0 -0
  771. endoreg_db/views/requirement_lookup/lookup_store.py +0 -0
  772. endoreg_db/views/stats/__init__.py +13 -0
  773. endoreg_db/views/stats/stats_views.py +229 -0
  774. endoreg_db/views/video/__init__.py +61 -0
  775. endoreg_db/views/video/correction.py +530 -0
  776. endoreg_db/views/video/reimport.py +195 -0
  777. endoreg_db/views/video/segmentation.py +274 -0
  778. endoreg_db/views/video/task_status.py +49 -0
  779. endoreg_db/views/video/timeline.py +46 -0
  780. endoreg_db/views/video/video_analyze.py +52 -0
  781. endoreg_db/views/video/video_apply_mask.py +48 -0
  782. endoreg_db/views/video/video_correction.py +21 -0
  783. endoreg_db/views/video/video_download_processed.py +58 -0
  784. endoreg_db/views/video/video_examination_viewset.py +329 -0
  785. endoreg_db/views/video/video_media.py +158 -0
  786. endoreg_db/views/video/video_meta.py +29 -0
  787. endoreg_db/views/video/video_processing_history.py +24 -0
  788. endoreg_db/views/video/video_remove_frames.py +48 -0
  789. endoreg_db/views/video/video_stream.py +306 -0
  790. endoreg_db/views.py +0 -0
  791. endoreg_db-0.8.5.1.dist-info/METADATA +383 -0
  792. endoreg_db-0.8.5.1.dist-info/RECORD +794 -0
  793. endoreg_db-0.8.5.1.dist-info/WHEEL +4 -0
  794. endoreg_db-0.8.5.1.dist-info/licenses/LICENSE +674 -0
@@ -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,226 @@
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
+ VideoMetadataView,
28
+ VideoProcessingHistoryView,
29
+ VideoApplyMaskView,
30
+ VideoRemoveFramesView,
31
+ VideoCorrectionView,
32
+ )
33
+ # ---------------------------------------------------------------------------------------
34
+ # ANNOTATION API ENDPOINTS
35
+ #
36
+ # New endpoints for segment annotation management that create user-source segments
37
+ # POST /api/annotations/ - Create new annotation (creates user segment if type=segment)
38
+ # PATCH /api/annotations/<id>/ - Update annotation (creates user segment if timing/label changed)
39
+ # ---------------------------------------------------------------------------------------
40
+
41
+ # Simplified Meta and Validation Endpoints
42
+
43
+ urlpatterns = [
44
+ # Video media endpoints
45
+ path("media/videos/", VideoMediaView.as_view(), name="video-list"),
46
+ path("media/videos/<int:pk>/", VideoStreamView.as_view(), name="video-detail-stream"), # Support ?type= params
47
+ path("media/videos/<int:pk>/details/", VideoMediaView.as_view(), name="video-detail"), # JSON metadata
48
+ path("media/videos/<int:pk>/stream/", VideoStreamView.as_view(), name="video-stream"), # Legacy support
49
+
50
+ # Video Re-import API endpoint (modern media framework)
51
+ # POST /api/media/videos/<int:pk>/reimport/
52
+ # Re-imports a video file to regenerate metadata when OCR failed or data is incomplete
53
+ path("media/videos/<int:pk>/reimport/", VideoReimportView.as_view(), name="video-reimport"),
54
+
55
+ # ---------------------------------------------------------------------------------------
56
+ # VIDEO CORRECTION API ENDPOINTS (Modern Media Framework - October 14, 2025)
57
+ #
58
+ # All video correction endpoints migrated to unified /api/media/videos/<pk>/ pattern
59
+ # These endpoints enable video correction workflows (Phase 1.1):
60
+ # - Analysis: Detect sensitive frames using MiniCPM-o 2.6 or OCR+LLM
61
+ # - Masking: Apply device-specific masks or custom ROI masks
62
+ # - Frame Removal: Remove sensitive frames from videos
63
+ # - Reprocessing: Re-run entire anonymization pipeline
64
+ # - Metadata: View analysis results
65
+ # - History: Track all correction operations
66
+ # ---------------------------------------------------------------------------------------
67
+
68
+ # Video Correction API
69
+ # GET /api/media/videos/video-correction/{id}/ - Get video details for correction
70
+ path("media/videos/video-correction/<int:pk>", VideoCorrectionView.as_view(), name="video-correction"),
71
+
72
+ # Video Metadata API
73
+ # GET /api/media/videos/<int:pk>/metadata/
74
+ # Returns analysis results (sensitive frame count, ratio, frame IDs)
75
+ path("media/videos/<int:pk>/metadata/", VideoMetadataView.as_view(), name="video-metadata"),
76
+
77
+ # Video Processing History API
78
+ # GET /api/media/videos/<int:pk>/processing-history/
79
+ # Returns history of all processing operations (masking, frame removal, analysis)
80
+ path("media/videos/<int:pk>/processing-history/", VideoProcessingHistoryView.as_view(), name="video-processing-history"),
81
+
82
+ # Video Analysis API
83
+ # POST /api/media/videos/<int:pk>/analyze/
84
+ # Analyzes video for sensitive frames using MiniCPM-o 2.6 or OCR+LLM
85
+ # Body: { detection_method: 'minicpm'|'ocr_llm'|'hybrid', sample_interval: 30 }
86
+
87
+ # Video Masking API
88
+ # POST /api/media/videos/<int:pk>/apply-mask/
89
+ # Applies device mask or custom ROI mask to video
90
+ # Body: { mask_type: 'device'|'custom', device_name: 'olympus', roi: {...} }
91
+ path("media/videos/<int:pk>/apply-mask/", VideoApplyMaskView.as_view(), name="video-apply-mask"),
92
+
93
+ # Video Frame Removal API
94
+ # POST /api/media/videos/<int:pk>/remove-frames/
95
+ # Removes specified frames from video
96
+ # Body: { frame_list: [10,20,30] OR frame_ranges: '10-20,30' OR detection_method: 'automatic' }
97
+ path("media/videos/<int:pk>/remove-frames/", VideoRemoveFramesView.as_view(), name="video-remove-frames"),
98
+
99
+ # ---------------------------------------------------------------------------------------
100
+ # VIDEO SEGMENT API ENDPOINTS (Modern Media Framework - October 14, 2025)
101
+ #
102
+ # Unified segment management endpoints replacing legacy /api/video-segments/
103
+ # Collection: GET/POST all segments across videos
104
+ # Video-scoped: GET/POST segments for specific video
105
+ # Detail: GET/PATCH/DELETE individual segment
106
+ # ---------------------------------------------------------------------------------------
107
+
108
+ # Video Segments Collection API
109
+ # GET/POST /api/media/videos/segments/
110
+ # List all video segments across videos or create new segment
111
+ path("media/videos/segments/", video_segments_collection, name="video-segments-collection"),
112
+
113
+ # Video Segments Stats API
114
+ # GET /api/media/videos/segments/stats/
115
+ # Get statistics about video segments
116
+ path("media/videos/segments/stats/", video_segments_stats, name="video-segments-stats"),
117
+
118
+ # Video-Specific Segments API
119
+ # GET/POST /api/media/videos/<int:pk>/segments/
120
+ # List segments for specific video or create segment for video
121
+ path("media/videos/<int:pk>/segments/", video_segments_by_video, name="video-segments-by-video"),
122
+
123
+ # Segment Detail API
124
+ # GET /api/media/videos/<int:pk>/segments/<int:segment_id>/
125
+ # PATCH /api/media/videos/<int:pk>/segments/<int:segment_id>/
126
+ # DELETE /api/media/videos/<int:pk>/segments/<int:segment_id>/
127
+ # Manages individual segment operations
128
+ path("media/videos/<int:pk>/segments/<int:segment_id>/", video_segment_detail, name="video-segment-detail"),
129
+
130
+ # ---------------------------------------------------------------------------------------
131
+ # VIDEO SEGMENT VALIDATION API ENDPOINTS (Modern Media Framework - October 14, 2025)
132
+ #
133
+ # Unified validation endpoints replacing legacy /api/label-video-segment/*/validate/
134
+ # Single: POST validate individual segment
135
+ # Bulk: POST validate multiple segments
136
+ # Status: GET/POST validation status for all segments
137
+ # ---------------------------------------------------------------------------------------
138
+
139
+ # Single Segment Validation API
140
+ # POST /api/media/videos/<int:pk>/segments/<int:segment_id>/validate/
141
+ # Validates a single video segment
142
+ # Body: { "is_validated": true, "notes": "..." }
143
+ path("media/videos/<int:pk>/segments/<int:segment_id>/validate/", video_segment_validate, name="video-segment-validate"),
144
+
145
+ # Bulk Segment Validation API
146
+ # POST /api/media/videos/<int:pk>/segments/validate-bulk/
147
+ # Validates multiple segments at once
148
+ # Body: { "segment_ids": [1,2,3], "is_validated": true, "notes": "..." }
149
+ path("media/videos/<int:pk>/segments/validate-bulk/", video_segments_validate_bulk, name="video-segments-validate-bulk"),
150
+
151
+ # Segment Validation Status API
152
+ # GET /api/media/videos/<int:pk>/segments/validation-status/
153
+ # Returns validation statistics for all segments
154
+ # POST /api/media/videos/<int:pk>/segments/validation-status/
155
+ # Marks all segments (or filtered by label) as validated
156
+ # Body: { "label_name": "polyp", "notes": "..." }
157
+ path("media/videos/<int:pk>/segments/validation-status/", video_segments_validation_status, name="video-segments-validation-status"),
158
+
159
+ # ---------------------------------------------------------------------------------------
160
+ # SENSITIVE METADATA ENDPOINTS (Modern Media Framework)
161
+ # ---------------------------------------------------------------------------------------
162
+
163
+ # Video Sensitive Metadata (Resource-Scoped)
164
+ # GET/PATCH /api/media/videos/<pk>/sensitive-metadata/
165
+ # Get or update sensitive patient data for a video
166
+ path(
167
+ "media/videos/<int:pk>/sensitive-metadata/",
168
+ video_sensitive_metadata,
169
+ name="video-sensitive-metadata"
170
+ ),
171
+
172
+ # POST /api/media/videos/<pk>/sensitive-metadata/verify/
173
+ # Update verification state (dob_verified, names_verified)
174
+ path(
175
+ "media/videos/<int:pk>/sensitive-metadata/verify/",
176
+ video_sensitive_metadata_verify,
177
+ name="video-sensitive-metadata-verify"
178
+ ),
179
+
180
+ # PDF Sensitive Metadata (Resource-Scoped)
181
+ # GET/PATCH /api/media/pdfs/<pk>/sensitive-metadata/
182
+ # Get or update sensitive patient data for a PDF
183
+ path(
184
+ "media/pdfs/<int:pk>/sensitive-metadata/",
185
+ pdf_sensitive_metadata,
186
+ name="pdf-sensitive-metadata"
187
+ ),
188
+
189
+ # POST /api/media/pdfs/<pk>/sensitive-metadata/verify/
190
+ # Update verification state (dob_verified, names_verified)
191
+ path(
192
+ "media/pdfs/<int:pk>/sensitive-metadata/verify/",
193
+ pdf_sensitive_metadata_verify,
194
+ name="pdf-sensitive-metadata-verify"
195
+ ),
196
+
197
+ # List Endpoints (Collection-Level)
198
+ # GET /api/media/sensitive-metadata/
199
+ # List all sensitive metadata (combined PDFs and Videos)
200
+ # Supports filtering: ?content_type=pdf|video&verified=true&search=name
201
+ path(
202
+ "media/sensitive-metadata/",
203
+ sensitive_metadata_list,
204
+ name="sensitive-metadata-list"
205
+ ),
206
+
207
+ # GET /api/media/pdfs/sensitive-metadata/
208
+ # List sensitive metadata for PDFs only
209
+ # Replaces legacy /api/pdf/sensitivemeta/list/
210
+ path(
211
+ "media/pdfs/sensitive-metadata/",
212
+ pdf_sensitive_metadata_list,
213
+ name="pdf-sensitive-metadata-list"
214
+ ),
215
+
216
+ # PDF media endpoints
217
+ path("media/pdfs/", PdfMediaView.as_view(), name="pdf-list"),
218
+ path("media/pdfs/<int:pk>/", PdfMediaView.as_view(), name="pdf-detail"),
219
+ path("media/pdfs/<int:pk>/stream/", PdfMediaView.as_view(), name="pdf-stream"),
220
+
221
+ # PDF Re-import API endpoint (modern media framework)
222
+ # POST /api/media/pdfs/<int:pk>/reimport/
223
+ # Re-imports a PDF file to regenerate metadata when OCR failed or data is incomplete
224
+ path("media/pdfs/<int:pk>/reimport/", PdfReimportView.as_view(), name="pdf-reimport"),
225
+ ]
226
+ # ---------------------------------------------------------------------------------------
@@ -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
+ ]
File without changes
@@ -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
+ ]
@@ -0,0 +1,20 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views import (
4
+ UploadFileView,
5
+ UploadStatusView,
6
+ )
7
+
8
+ urlpatterns = [
9
+ # Upload endpoints
10
+ path(
11
+ 'upload/',
12
+ UploadFileView.as_view(),
13
+ name='video_upload'
14
+ ),
15
+ path(
16
+ 'upload/<uuid:id>/status',
17
+ UploadStatusView.as_view(),
18
+ name='upload_status'
19
+ ),
20
+ ]
@@ -0,0 +1,61 @@
1
+ from django.urls import path
2
+
3
+ from endoreg_db.views import (
4
+ SensitiveMetaDetailView,
5
+ VideoLabelView,
6
+ # Note: VideoStreamView moved to modern media framework. See: endoreg_db/urls/media.py
7
+ # Note: All Video Correction Views moved to modern media framework. See: endoreg_db/urls/media.py
8
+ )
9
+
10
+ url_patterns = [
11
+ # Video Label segments API endpoint
12
+ # GET /api/videos/<int:video_id>/labels/<str:label_name>/
13
+ # Retrieves time segments and frame predictions for a specific label on a video
14
+ path(
15
+ 'videos/<int:video_id>/labels/<str:label_name>/',
16
+ VideoLabelView.as_view(),
17
+ name='video_label_segments'
18
+ ),
19
+
20
+ # ---------------------------------------------------------------------------------------
21
+ # VIDEO STREAMING - MOVED TO MODERN MEDIA FRAMEWORK
22
+ #
23
+ # Video streaming endpoint has been migrated to the media framework
24
+ # as of October 14, 2025. Please use the new endpoints:
25
+ #
26
+ # OLD → NEW:
27
+ # GET /api/videostream/<pk>/ → GET /api/media/videos/<pk>/
28
+ # GET /api/videostream/<pk>/ → GET /api/media/videos/<pk>/stream/
29
+ #
30
+ # See: endoreg_db/urls/media.py for new URL registrations
31
+ # ---------------------------------------------------------------------------------------
32
+
33
+ # Note: Video Re-import moved to modern media framework
34
+ # See: endoreg_db/urls/media.py - POST /api/media/videos/<int:pk>/reimport/
35
+
36
+ # Video Sensitive Meta endpoints (for video anonymization)
37
+ # GET /api/video/sensitivemeta/<int:sensitive_meta_id>/
38
+ # PATCH /api/video/sensitivemeta/<int:sensitive_meta_id>/
39
+ path(
40
+ 'video/sensitivemeta/<int:sensitive_meta_id>/',
41
+ SensitiveMetaDetailView.as_view(),
42
+ name='video_sensitive_meta_detail'
43
+ ),
44
+
45
+ # ---------------------------------------------------------------------------------------
46
+ # VIDEO CORRECTION API ENDPOINTS - MOVED TO MODERN MEDIA FRAMEWORK
47
+ #
48
+ # All video correction endpoints have been migrated to the modern media framework
49
+ # as of October 14, 2025. Please use the new endpoints:
50
+ #
51
+ # OLD → NEW:
52
+ # GET /api/video-metadata/<id>/ → GET /api/media/videos/<pk>/metadata/
53
+ # GET /api/video-processing-history/<id>/ → GET /api/media/videos/<pk>/processing-history/
54
+ # POST /api/video-analyze/<id>/ → POST /api/media/videos/<pk>/analyze/
55
+ # POST /api/video-apply-mask/<id>/ → POST /api/media/videos/<pk>/apply-mask/
56
+ # POST /api/video-remove-frames/<id>/ → POST /api/media/videos/<pk>/remove-frames/
57
+ # POST /api/video-reprocess/<id>/ → POST /api/media/videos/<pk>/reprocess/
58
+ #
59
+ # See: endoreg_db/urls/media.py for new URL registrations
60
+ # ---------------------------------------------------------------------------------------
61
+ ]
endoreg_db/urls.py ADDED
@@ -0,0 +1,9 @@
1
+ from django.urls import include, path
2
+
3
+ # Import the package-level URL patterns (defined in endoreg_db/urls/__init__.py)
4
+ from endoreg_db.urls import urlpatterns as api_urlpatterns
5
+
6
+ # Expose API under /api/
7
+ urlpatterns = [
8
+ path("api/", include((api_urlpatterns, "endoreg_db"), namespace="api")),
9
+ ]
@@ -0,0 +1,88 @@
1
+ """Module for utility classes and functions."""
2
+
3
+ # --- Imports from submodules ---
4
+
5
+ # dataloader
6
+ from endoreg_db.utils.video.ffmpeg_wrapper import assemble_video_from_frames, get_stream_info, transcode_video, transcode_videofile_if_required
7
+ from .dataloader import load_model_data_from_yaml
8
+
9
+ # dates
10
+ from .dates import ensure_aware_datetime, random_day_by_month_year, random_day_by_year
11
+
12
+ # env
13
+ from .env import DEBUG, DJANGO_SETTINGS_MODULE, get_env_var
14
+
15
+ # file_operations
16
+ from .file_operations import copy_with_progress, get_uuid_filename, rename_file_uuid
17
+
18
+ # hashs
19
+ from .hashs import (
20
+ DJANGO_NAME_SALT,
21
+ get_examiner_hash,
22
+ get_hash_string,
23
+ get_patient_examination_hash,
24
+ get_pdf_hash,
25
+ get_video_hash,
26
+ )
27
+
28
+ # names
29
+ from .names import (
30
+ create_mock_examiner_name,
31
+ create_mock_patient_name,
32
+ guess_name_gender,
33
+ )
34
+
35
+ # parse_and_generate_yaml
36
+ from .parse_and_generate_yaml import collect_center_names
37
+
38
+ # paths
39
+ from .paths import data_paths
40
+
41
+ # pydantic_models
42
+ from .pydantic_models import DbConfig
43
+
44
+ # validate_endo_roi
45
+ from .validate_endo_roi import validate_endo_roi
46
+
47
+ # ffmpeg_wrapper
48
+ from .video.ffmpeg_wrapper import (
49
+ extract_frames,
50
+ )
51
+ from .video import (
52
+ split_video
53
+ )
54
+
55
+
56
+ # --- Exports ---
57
+
58
+ __all__ = [
59
+ "collect_center_names",
60
+ "copy_with_progress",
61
+ "create_mock_examiner_name",
62
+ "create_mock_patient_name",
63
+ "data_paths",
64
+ "DbConfig",
65
+ "DEBUG",
66
+ "DJANGO_NAME_SALT",
67
+ "DJANGO_SETTINGS_MODULE",
68
+ "ensure_aware_datetime",
69
+ "get_env_var",
70
+ "get_examiner_hash",
71
+ "get_hash_string",
72
+ "get_patient_examination_hash",
73
+ "get_pdf_hash",
74
+ "get_uuid_filename",
75
+ "get_video_hash",
76
+ "guess_name_gender",
77
+ "load_model_data_from_yaml",
78
+ "random_day_by_month_year",
79
+ "random_day_by_year",
80
+ "rename_file_uuid",
81
+ "validate_endo_roi",
82
+ "assemble_video_from_frames", # Updated name
83
+ "get_stream_info",
84
+ "transcode_video",
85
+ "transcode_videofile_if_required", # Added
86
+ "extract_frames", # Added
87
+ ]
88
+
@@ -0,0 +1,9 @@
1
+ from .inference_dataset import InferenceDataset
2
+ from .multilabel_classification_net import MultiLabelClassificationNet
3
+ from .predict import Classifier
4
+
5
+ __all__ = [
6
+ "InferenceDataset",
7
+ "MultiLabelClassificationNet",
8
+ "Classifier",
9
+ ]
@@ -0,0 +1,5 @@
1
+ from endoreg_db.models import ModelMeta
2
+
3
+ def get_latest_model_meta_by_model_name(model_name):
4
+ model_meta = ModelMeta.objects.filter(name=model_name).order_by('-version').first()
5
+ return model_meta