endoreg-db 0.8.6.1__py3-none-any.whl → 0.8.8.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of endoreg-db might be problematic. Click here for more details.

Files changed (503) hide show
  1. endoreg_db/authz/auth.py +74 -0
  2. endoreg_db/authz/backends.py +168 -0
  3. endoreg_db/authz/management/commands/list_routes.py +18 -0
  4. endoreg_db/authz/middleware.py +83 -0
  5. endoreg_db/authz/permissions.py +127 -0
  6. endoreg_db/authz/policy.py +218 -0
  7. endoreg_db/authz/views_auth.py +66 -0
  8. endoreg_db/config/env.py +13 -8
  9. endoreg_db/data/__init__.py +2 -11
  10. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +3 -3
  11. endoreg_db/data/event_classification/data.yaml +4 -0
  12. endoreg_db/data/event_classification_choice/data.yaml +9 -0
  13. endoreg_db/data/examination/examinations/data.yaml +114 -14
  14. endoreg_db/data/examination/time-type/data.yaml +0 -3
  15. endoreg_db/data/examination_indication/endoscopy.yaml +108 -173
  16. endoreg_db/data/examination_indication_classification/endoscopy.yaml +0 -70
  17. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +33 -37
  18. endoreg_db/data/finding/00_generic.yaml +35 -0
  19. endoreg_db/data/finding/00_generic_complication.yaml +9 -0
  20. endoreg_db/data/finding/01_gastroscopy_baseline.yaml +88 -0
  21. endoreg_db/data/finding/01_gastroscopy_observation.yaml +113 -0
  22. endoreg_db/data/finding/02_colonoscopy_baseline.yaml +53 -0
  23. endoreg_db/data/finding/02_colonoscopy_hidden.yaml +119 -0
  24. endoreg_db/data/finding/02_colonoscopy_observation.yaml +152 -0
  25. endoreg_db/data/finding_classification/00_generic.yaml +44 -0
  26. endoreg_db/data/finding_classification/00_generic_histology.yaml +28 -0
  27. endoreg_db/data/finding_classification/00_generic_lesion.yaml +52 -0
  28. endoreg_db/data/finding_classification/02_colonoscopy_baseline.yaml +83 -0
  29. endoreg_db/data/finding_classification/02_colonoscopy_histology.yaml +13 -0
  30. endoreg_db/data/finding_classification/02_colonoscopy_other.yaml +12 -0
  31. endoreg_db/data/finding_classification/02_colonoscopy_polyp.yaml +101 -0
  32. endoreg_db/data/finding_classification_choice/{yes_no_na.yaml → 00_generic.yaml} +5 -1
  33. endoreg_db/data/finding_classification_choice/{examination_setting_generic_types.yaml → 00_generic_baseline.yaml} +10 -2
  34. endoreg_db/data/finding_classification_choice/{complication_generic_types.yaml → 00_generic_complication.yaml} +1 -1
  35. endoreg_db/data/finding_classification_choice/{histology.yaml → 00_generic_histology.yaml} +1 -4
  36. endoreg_db/data/finding_classification_choice/00_generic_lesion.yaml +158 -0
  37. endoreg_db/data/finding_classification_choice/{bowel_preparation.yaml → 02_colonoscopy_bowel_preparation.yaml} +1 -30
  38. endoreg_db/data/finding_classification_choice/{colonoscopy_not_complete_reason.yaml → 02_colonoscopy_generic.yaml} +1 -1
  39. endoreg_db/data/finding_classification_choice/{histology_polyp.yaml → 02_colonoscopy_histology.yaml} +1 -1
  40. endoreg_db/data/finding_classification_choice/{colonoscopy_location.yaml → 02_colonoscopy_location.yaml} +23 -4
  41. endoreg_db/data/finding_classification_choice/02_colonoscopy_other.yaml +34 -0
  42. endoreg_db/data/finding_classification_choice/02_colonoscopy_polyp_advanced_imaging.yaml +76 -0
  43. endoreg_db/data/finding_classification_choice/{colon_lesion_paris.yaml → 02_colonoscopy_polyp_morphology.yaml} +26 -8
  44. endoreg_db/data/finding_classification_choice/02_colonoscopy_size.yaml +27 -0
  45. endoreg_db/data/finding_classification_type/{colonoscopy_basic.yaml → 00_generic.yaml} +18 -13
  46. endoreg_db/data/finding_classification_type/02_colonoscopy.yaml +9 -0
  47. endoreg_db/data/finding_intervention/00_generic_endoscopy.yaml +59 -0
  48. endoreg_db/data/finding_intervention/00_generic_endoscopy_ablation.yaml +44 -0
  49. endoreg_db/data/finding_intervention/00_generic_endoscopy_bleeding.yaml +55 -0
  50. endoreg_db/data/finding_intervention/00_generic_endoscopy_resection.yaml +85 -0
  51. endoreg_db/data/finding_intervention/00_generic_endoscopy_stenosis.yaml +17 -0
  52. endoreg_db/data/finding_intervention/00_generic_endoscopy_stent.yaml +9 -0
  53. endoreg_db/data/finding_intervention/01_gastroscopy.yaml +19 -0
  54. endoreg_db/data/finding_intervention/04_eus.yaml +39 -0
  55. endoreg_db/data/finding_intervention/05_ercp.yaml +3 -0
  56. endoreg_db/data/finding_type/data.yaml +8 -12
  57. endoreg_db/data/requirement/01_patient_data.yaml +93 -0
  58. endoreg_db/data/requirement/old/colon_polyp_intervention.yaml +49 -0
  59. endoreg_db/data/requirement/old/coloreg_colon_polyp.yaml +49 -0
  60. endoreg_db/data/requirement_operator/new_operators.yaml +36 -0
  61. endoreg_db/data/requirement_set/01_endoscopy_generic.yaml +29 -12
  62. endoreg_db/data/requirement_set/01_laboratory.yaml +13 -0
  63. endoreg_db/data/requirement_set/{endoscopy_bleeding_risk.yaml → 02_endoscopy_bleeding_risk.yaml} +0 -6
  64. endoreg_db/data/requirement_set/90_coloreg.yaml +190 -0
  65. endoreg_db/data/requirement_set/_old_ +109 -0
  66. endoreg_db/data/requirement_set_type/data.yaml +21 -0
  67. endoreg_db/data/setup_config.yaml +4 -4
  68. endoreg_db/data/tag/requirement_set_tags.yaml +21 -0
  69. endoreg_db/exceptions.py +4 -2
  70. endoreg_db/forms/examination_form.py +1 -1
  71. endoreg_db/helpers/data_loader.py +125 -53
  72. endoreg_db/helpers/default_objects.py +116 -81
  73. endoreg_db/import_files/__init__.py +27 -0
  74. endoreg_db/import_files/context/__init__.py +7 -0
  75. endoreg_db/import_files/context/default_sensitive_meta.py +81 -0
  76. endoreg_db/import_files/context/ensure_center.py +17 -0
  77. endoreg_db/import_files/context/file_lock.py +66 -0
  78. endoreg_db/import_files/context/import_context.py +43 -0
  79. endoreg_db/import_files/context/validate_directories.py +56 -0
  80. endoreg_db/import_files/file_storage/__init__.py +15 -0
  81. endoreg_db/import_files/file_storage/create_report_file.py +76 -0
  82. endoreg_db/import_files/file_storage/create_video_file.py +75 -0
  83. endoreg_db/import_files/file_storage/sensitive_meta_storage.py +39 -0
  84. endoreg_db/import_files/file_storage/state_management.py +400 -0
  85. endoreg_db/import_files/file_storage/storage.py +36 -0
  86. endoreg_db/import_files/import_service.md +26 -0
  87. endoreg_db/import_files/processing/__init__.py +11 -0
  88. endoreg_db/import_files/processing/report_processing/report_anonymization.py +94 -0
  89. endoreg_db/import_files/processing/sensitive_meta_adapter.py +51 -0
  90. endoreg_db/import_files/processing/video_processing/video_anonymization.py +107 -0
  91. endoreg_db/import_files/processing/video_processing/video_cleanup_on_error.py +119 -0
  92. endoreg_db/import_files/pseudonymization/fake.py +52 -0
  93. endoreg_db/import_files/pseudonymization/k_anonymity.py +182 -0
  94. endoreg_db/import_files/pseudonymization/k_pseudonymity.py +128 -0
  95. endoreg_db/import_files/report_import_service.py +141 -0
  96. endoreg_db/import_files/video_import_service.py +150 -0
  97. endoreg_db/management/commands/create_model_meta_from_huggingface.py +21 -10
  98. endoreg_db/management/commands/create_multilabel_model_meta.py +299 -129
  99. endoreg_db/management/commands/import_report.py +130 -65
  100. endoreg_db/management/commands/import_video.py +9 -10
  101. endoreg_db/management/commands/import_video_with_classification.py +2 -2
  102. endoreg_db/management/commands/list_routes.py +18 -0
  103. endoreg_db/management/commands/load_ai_model_data.py +5 -5
  104. endoreg_db/management/commands/load_ai_model_label_data.py +9 -7
  105. endoreg_db/management/commands/load_base_db_data.py +5 -134
  106. endoreg_db/management/commands/load_center_data.py +12 -12
  107. endoreg_db/management/commands/load_contraindication_data.py +14 -16
  108. endoreg_db/management/commands/load_disease_classification_choices_data.py +15 -18
  109. endoreg_db/management/commands/load_disease_classification_data.py +15 -18
  110. endoreg_db/management/commands/load_disease_data.py +25 -28
  111. endoreg_db/management/commands/load_endoscope_data.py +20 -27
  112. endoreg_db/management/commands/load_event_data.py +14 -16
  113. endoreg_db/management/commands/load_examination_data.py +31 -44
  114. endoreg_db/management/commands/load_examination_indication_data.py +20 -21
  115. endoreg_db/management/commands/load_finding_data.py +52 -80
  116. endoreg_db/management/commands/load_information_source.py +21 -23
  117. endoreg_db/management/commands/load_lab_value_data.py +17 -26
  118. endoreg_db/management/commands/load_medication_data.py +13 -12
  119. endoreg_db/management/commands/load_organ_data.py +15 -19
  120. endoreg_db/management/commands/load_pdf_type_data.py +19 -18
  121. endoreg_db/management/commands/load_profession_data.py +14 -17
  122. endoreg_db/management/commands/load_qualification_data.py +20 -23
  123. endoreg_db/management/commands/load_report_reader_flag_data.py +17 -19
  124. endoreg_db/management/commands/load_requirement_data.py +62 -39
  125. endoreg_db/management/commands/load_requirement_set_tags.py +95 -0
  126. endoreg_db/management/commands/load_risk_data.py +7 -6
  127. endoreg_db/management/commands/load_shift_data.py +20 -23
  128. endoreg_db/management/commands/load_tag_data.py +8 -11
  129. endoreg_db/management/commands/load_unit_data.py +17 -19
  130. endoreg_db/management/commands/setup_endoreg_db.py +3 -3
  131. endoreg_db/management/commands/start_filewatcher.py +46 -37
  132. endoreg_db/management/commands/storage_management.py +271 -203
  133. endoreg_db/management/commands/validate_video_files.py +1 -5
  134. endoreg_db/migrations/0001_initial.py +297 -250
  135. endoreg_db/models/__init__.py +78 -123
  136. endoreg_db/models/administration/__init__.py +21 -42
  137. endoreg_db/models/administration/ai/active_model.py +2 -2
  138. endoreg_db/models/administration/ai/ai_model.py +7 -6
  139. endoreg_db/models/administration/case/__init__.py +1 -15
  140. endoreg_db/models/administration/case/case.py +3 -3
  141. endoreg_db/models/administration/case/case_template/__init__.py +2 -14
  142. endoreg_db/models/administration/case/case_template/case_template.py +2 -124
  143. endoreg_db/models/administration/case/case_template/case_template_rule.py +2 -268
  144. endoreg_db/models/administration/case/case_template/case_template_rule_value.py +2 -85
  145. endoreg_db/models/administration/case/case_template/case_template_type.py +2 -25
  146. endoreg_db/models/administration/center/center.py +33 -19
  147. endoreg_db/models/administration/center/center_product.py +12 -9
  148. endoreg_db/models/administration/center/center_resource.py +25 -19
  149. endoreg_db/models/administration/center/center_shift.py +21 -17
  150. endoreg_db/models/administration/center/center_waste.py +16 -8
  151. endoreg_db/models/administration/person/__init__.py +2 -0
  152. endoreg_db/models/administration/person/employee/employee.py +10 -5
  153. endoreg_db/models/administration/person/employee/employee_qualification.py +9 -4
  154. endoreg_db/models/administration/person/employee/employee_type.py +12 -6
  155. endoreg_db/models/administration/person/examiner/examiner.py +13 -11
  156. endoreg_db/models/administration/person/patient/__init__.py +2 -0
  157. endoreg_db/models/administration/person/patient/patient.py +129 -100
  158. endoreg_db/models/administration/person/patient/patient_external_id.py +37 -0
  159. endoreg_db/models/administration/person/person.py +4 -0
  160. endoreg_db/models/administration/person/profession/__init__.py +8 -4
  161. endoreg_db/models/administration/person/user/portal_user_information.py +11 -7
  162. endoreg_db/models/administration/product/product.py +20 -15
  163. endoreg_db/models/administration/product/product_material.py +17 -18
  164. endoreg_db/models/administration/product/product_weight.py +12 -8
  165. endoreg_db/models/administration/product/reference_product.py +23 -55
  166. endoreg_db/models/administration/qualification/qualification.py +7 -3
  167. endoreg_db/models/administration/qualification/qualification_type.py +7 -3
  168. endoreg_db/models/administration/shift/scheduled_days.py +8 -5
  169. endoreg_db/models/administration/shift/shift.py +16 -12
  170. endoreg_db/models/administration/shift/shift_type.py +23 -31
  171. endoreg_db/models/label/__init__.py +8 -9
  172. endoreg_db/models/label/annotation/image_classification.py +10 -9
  173. endoreg_db/models/label/annotation/video_segmentation_annotation.py +23 -28
  174. endoreg_db/models/label/label.py +15 -15
  175. endoreg_db/models/label/label_set.py +19 -6
  176. endoreg_db/models/label/label_type.py +1 -1
  177. endoreg_db/models/label/label_video_segment/_create_from_video.py +5 -8
  178. endoreg_db/models/label/label_video_segment/label_video_segment.py +98 -102
  179. endoreg_db/models/label/video_segmentation_label.py +4 -0
  180. endoreg_db/models/label/video_segmentation_labelset.py +4 -3
  181. endoreg_db/models/media/frame/frame.py +22 -22
  182. endoreg_db/models/media/pdf/raw_pdf.py +194 -194
  183. endoreg_db/models/media/pdf/report_file.py +25 -29
  184. endoreg_db/models/media/pdf/report_reader/report_reader_config.py +55 -47
  185. endoreg_db/models/media/pdf/report_reader/report_reader_flag.py +23 -7
  186. endoreg_db/models/media/processing_history/__init__.py +5 -0
  187. endoreg_db/models/media/processing_history/processing_history.py +96 -0
  188. endoreg_db/models/media/video/__init__.py +1 -0
  189. endoreg_db/models/media/video/create_from_file.py +139 -77
  190. endoreg_db/models/media/video/pipe_2.py +8 -9
  191. endoreg_db/models/media/video/video_file.py +174 -112
  192. endoreg_db/models/media/video/video_file_ai.py +288 -74
  193. endoreg_db/models/media/video/video_file_anonymize.py +38 -38
  194. endoreg_db/models/media/video/video_file_frames/__init__.py +3 -1
  195. endoreg_db/models/media/video/video_file_frames/_bulk_create_frames.py +6 -8
  196. endoreg_db/models/media/video/video_file_frames/_create_frame_object.py +7 -9
  197. endoreg_db/models/media/video/video_file_frames/_delete_frames.py +9 -8
  198. endoreg_db/models/media/video/video_file_frames/_extract_frames.py +38 -45
  199. endoreg_db/models/media/video/video_file_frames/_get_frame.py +6 -8
  200. endoreg_db/models/media/video/video_file_frames/_get_frame_number.py +4 -18
  201. endoreg_db/models/media/video/video_file_frames/_get_frame_path.py +4 -3
  202. endoreg_db/models/media/video/video_file_frames/_get_frame_paths.py +7 -6
  203. endoreg_db/models/media/video/video_file_frames/_get_frame_range.py +6 -8
  204. endoreg_db/models/media/video/video_file_frames/_get_frames.py +6 -8
  205. endoreg_db/models/media/video/video_file_frames/_initialize_frames.py +15 -25
  206. endoreg_db/models/media/video/video_file_frames/_manage_frame_range.py +26 -23
  207. endoreg_db/models/media/video/video_file_frames/_mark_frames_extracted_status.py +23 -14
  208. endoreg_db/models/media/video/video_file_io.py +113 -61
  209. endoreg_db/models/media/video/video_file_meta/get_crop_template.py +3 -3
  210. endoreg_db/models/media/video/video_file_meta/get_endo_roi.py +5 -3
  211. endoreg_db/models/media/video/video_file_meta/get_fps.py +37 -34
  212. endoreg_db/models/media/video/video_file_meta/initialize_video_specs.py +19 -25
  213. endoreg_db/models/media/video/video_file_meta/text_meta.py +41 -38
  214. endoreg_db/models/media/video/video_file_meta/video_meta.py +14 -7
  215. endoreg_db/models/media/video/video_file_segments.py +24 -17
  216. endoreg_db/models/media/video/video_metadata.py +19 -35
  217. endoreg_db/models/media/video/video_processing.py +96 -95
  218. endoreg_db/models/medical/contraindication/README.md +1 -0
  219. endoreg_db/models/medical/contraindication/__init__.py +13 -3
  220. endoreg_db/models/medical/disease.py +22 -16
  221. endoreg_db/models/medical/event.py +31 -18
  222. endoreg_db/models/medical/examination/__init__.py +13 -6
  223. endoreg_db/models/medical/examination/examination.py +39 -20
  224. endoreg_db/models/medical/examination/examination_indication.py +30 -95
  225. endoreg_db/models/medical/examination/examination_time.py +23 -8
  226. endoreg_db/models/medical/examination/examination_time_type.py +9 -6
  227. endoreg_db/models/medical/examination/examination_type.py +3 -4
  228. endoreg_db/models/medical/finding/finding.py +32 -40
  229. endoreg_db/models/medical/finding/finding_classification.py +42 -72
  230. endoreg_db/models/medical/finding/finding_intervention.py +25 -22
  231. endoreg_db/models/medical/finding/finding_type.py +13 -12
  232. endoreg_db/models/medical/hardware/endoscope.py +26 -26
  233. endoreg_db/models/medical/hardware/endoscopy_processor.py +2 -2
  234. endoreg_db/models/medical/laboratory/lab_value.py +62 -91
  235. endoreg_db/models/medical/medication/medication.py +22 -10
  236. endoreg_db/models/medical/medication/medication_indication.py +29 -3
  237. endoreg_db/models/medical/medication/medication_indication_type.py +25 -14
  238. endoreg_db/models/medical/medication/medication_intake_time.py +31 -19
  239. endoreg_db/models/medical/medication/medication_schedule.py +27 -16
  240. endoreg_db/models/medical/organ/__init__.py +15 -12
  241. endoreg_db/models/medical/patient/medication_examples.py +6 -6
  242. endoreg_db/models/medical/patient/patient_disease.py +20 -23
  243. endoreg_db/models/medical/patient/patient_event.py +19 -22
  244. endoreg_db/models/medical/patient/patient_examination.py +48 -54
  245. endoreg_db/models/medical/patient/patient_examination_indication.py +16 -14
  246. endoreg_db/models/medical/patient/patient_finding.py +122 -139
  247. endoreg_db/models/medical/patient/patient_finding_classification.py +44 -49
  248. endoreg_db/models/medical/patient/patient_finding_intervention.py +8 -19
  249. endoreg_db/models/medical/patient/patient_lab_sample.py +28 -23
  250. endoreg_db/models/medical/patient/patient_lab_value.py +82 -89
  251. endoreg_db/models/medical/patient/patient_medication.py +27 -38
  252. endoreg_db/models/medical/patient/patient_medication_schedule.py +28 -36
  253. endoreg_db/models/medical/risk/risk.py +7 -6
  254. endoreg_db/models/medical/risk/risk_type.py +8 -5
  255. endoreg_db/models/metadata/model_meta.py +60 -29
  256. endoreg_db/models/metadata/model_meta_logic.py +125 -18
  257. endoreg_db/models/metadata/pdf_meta.py +31 -24
  258. endoreg_db/models/metadata/sensitive_meta.py +105 -85
  259. endoreg_db/models/metadata/sensitive_meta_logic.py +198 -103
  260. endoreg_db/models/metadata/video_meta.py +51 -31
  261. endoreg_db/models/metadata/video_prediction_logic.py +16 -23
  262. endoreg_db/models/metadata/video_prediction_meta.py +29 -33
  263. endoreg_db/models/other/distribution/date_value_distribution.py +89 -29
  264. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +21 -5
  265. endoreg_db/models/other/distribution/numeric_value_distribution.py +114 -53
  266. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +4 -3
  267. endoreg_db/models/other/emission/emission_factor.py +18 -8
  268. endoreg_db/models/other/gender.py +10 -5
  269. endoreg_db/models/other/information_source.py +50 -29
  270. endoreg_db/models/other/material.py +9 -5
  271. endoreg_db/models/other/resource.py +6 -4
  272. endoreg_db/models/other/tag.py +10 -5
  273. endoreg_db/models/other/transport_route.py +13 -8
  274. endoreg_db/models/other/unit.py +10 -6
  275. endoreg_db/models/other/waste.py +6 -5
  276. endoreg_db/models/report/report.py +6 -0
  277. endoreg_db/models/requirement/requirement.py +329 -361
  278. endoreg_db/models/requirement/requirement_error.py +85 -0
  279. endoreg_db/models/requirement/requirement_evaluation/evaluate_with_dependencies.py +268 -0
  280. endoreg_db/models/requirement/requirement_evaluation/operator_evaluation_models.py +3 -6
  281. endoreg_db/models/requirement/requirement_evaluation/requirement_type_parser.py +90 -64
  282. endoreg_db/models/requirement/requirement_operator.py +103 -112
  283. endoreg_db/models/requirement/requirement_set.py +74 -57
  284. endoreg_db/models/state/__init__.py +4 -4
  285. endoreg_db/models/state/abstract.py +2 -2
  286. endoreg_db/models/state/anonymization.py +12 -0
  287. endoreg_db/models/state/audit_ledger.py +49 -51
  288. endoreg_db/models/state/label_video_segment.py +9 -0
  289. endoreg_db/models/state/raw_pdf.py +101 -68
  290. endoreg_db/models/state/sensitive_meta.py +6 -2
  291. endoreg_db/models/state/video.py +110 -90
  292. endoreg_db/models/upload_job.py +35 -34
  293. endoreg_db/models/utils.py +28 -25
  294. endoreg_db/queries/__init__.py +3 -1
  295. endoreg_db/root_urls.py +21 -2
  296. endoreg_db/schemas/examination_evaluation.py +1 -1
  297. endoreg_db/serializers/__init__.py +2 -10
  298. endoreg_db/serializers/anonymization.py +18 -10
  299. endoreg_db/serializers/label_video_segment/label_video_segment.py +2 -29
  300. endoreg_db/serializers/meta/__init__.py +1 -6
  301. endoreg_db/serializers/meta/sensitive_meta_detail.py +63 -118
  302. endoreg_db/serializers/misc/file_overview.py +11 -99
  303. endoreg_db/serializers/misc/sensitive_patient_data.py +50 -26
  304. endoreg_db/serializers/patient_examination/patient_examination.py +3 -3
  305. endoreg_db/serializers/pdf/anony_text_validation.py +39 -23
  306. endoreg_db/serializers/requirements/requirement_sets.py +92 -22
  307. endoreg_db/serializers/video/segmentation.py +2 -1
  308. endoreg_db/serializers/video/video_file_list.py +65 -34
  309. endoreg_db/serializers/video/video_processing_history.py +20 -5
  310. endoreg_db/services/__old/pdf_import.py +1487 -0
  311. endoreg_db/services/__old/video_import.py +1306 -0
  312. endoreg_db/services/anonymization.py +128 -89
  313. endoreg_db/services/lookup_service.py +65 -52
  314. endoreg_db/services/lookup_store.py +2 -2
  315. endoreg_db/services/pdf_import.py +0 -1382
  316. endoreg_db/services/report_import.py +10 -0
  317. endoreg_db/services/video_import.py +6 -1255
  318. endoreg_db/tasks/upload_tasks.py +79 -70
  319. endoreg_db/tasks/video_ingest.py +8 -4
  320. endoreg_db/urls/__init__.py +5 -32
  321. endoreg_db/urls/ai.py +32 -0
  322. endoreg_db/urls/media.py +121 -83
  323. endoreg_db/urls/root_urls.py +29 -0
  324. endoreg_db/utils/__init__.py +15 -5
  325. endoreg_db/utils/ai/multilabel_classification_net.py +116 -20
  326. endoreg_db/utils/case_generator/__init__.py +3 -0
  327. endoreg_db/utils/dataloader.py +142 -40
  328. endoreg_db/utils/defaults/set_default_center.py +32 -0
  329. endoreg_db/utils/names.py +22 -16
  330. endoreg_db/utils/paths.py +110 -46
  331. endoreg_db/utils/permissions.py +2 -1
  332. endoreg_db/utils/pipelines/Readme.md +1 -1
  333. endoreg_db/utils/pipelines/process_video_dir.py +1 -1
  334. endoreg_db/utils/requirement_operator_logic/_old/model_evaluators.py +655 -0
  335. endoreg_db/utils/requirement_operator_logic/new_operator_logic.py +97 -0
  336. endoreg_db/utils/setup_config.py +8 -5
  337. endoreg_db/utils/storage.py +115 -0
  338. endoreg_db/utils/validate_endo_roi.py +8 -2
  339. endoreg_db/utils/video/ffmpeg_wrapper.py +184 -188
  340. endoreg_db/views/__init__.py +85 -183
  341. endoreg_db/views/ai/__init__.py +8 -0
  342. endoreg_db/views/ai/label.py +155 -0
  343. endoreg_db/views/anonymization/media_management.py +202 -166
  344. endoreg_db/views/anonymization/overview.py +99 -67
  345. endoreg_db/views/anonymization/validate.py +182 -44
  346. endoreg_db/views/media/__init__.py +7 -20
  347. endoreg_db/views/media/pdf_media.py +197 -174
  348. endoreg_db/views/media/sensitive_metadata.py +193 -138
  349. endoreg_db/views/media/video_media.py +89 -82
  350. endoreg_db/views/meta/__init__.py +0 -8
  351. endoreg_db/views/misc/__init__.py +1 -7
  352. endoreg_db/views/misc/upload_views.py +94 -93
  353. endoreg_db/views/patient/patient.py +5 -4
  354. endoreg_db/views/report/__init__.py +5 -7
  355. endoreg_db/views/{pdf → report}/reimport.py +22 -22
  356. endoreg_db/views/{pdf/pdf_stream.py → report/report_stream.py} +46 -39
  357. endoreg_db/views/requirement/evaluate.py +188 -187
  358. endoreg_db/views/requirement/lookup.py +17 -3
  359. endoreg_db/views/requirement/lookup_store.py +22 -90
  360. endoreg_db/views/requirement/requirement_utils.py +89 -0
  361. endoreg_db/views/video/__init__.py +23 -24
  362. endoreg_db/views/video/correction.py +201 -172
  363. endoreg_db/views/video/reimport.py +1 -1
  364. endoreg_db/views/{media/video_segments.py → video/segments_crud.py} +77 -40
  365. endoreg_db/views/video/{video_meta.py → video_meta_stats.py} +2 -2
  366. endoreg_db/views/video/video_stream.py +7 -8
  367. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/METADATA +7 -3
  368. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/RECORD +391 -413
  369. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/WHEEL +1 -1
  370. endoreg_db/data/finding/anatomy_colon.yaml +0 -128
  371. endoreg_db/data/finding/colonoscopy.yaml +0 -40
  372. endoreg_db/data/finding/colonoscopy_bowel_prep.yaml +0 -56
  373. endoreg_db/data/finding/complication.yaml +0 -16
  374. endoreg_db/data/finding/data.yaml +0 -105
  375. endoreg_db/data/finding/examination_setting.yaml +0 -16
  376. endoreg_db/data/finding/medication_related.yaml +0 -18
  377. endoreg_db/data/finding/outcome.yaml +0 -12
  378. endoreg_db/data/finding_classification/colonoscopy_bowel_preparation.yaml +0 -95
  379. endoreg_db/data/finding_classification/colonoscopy_jnet.yaml +0 -22
  380. endoreg_db/data/finding_classification/colonoscopy_kudo.yaml +0 -25
  381. endoreg_db/data/finding_classification/colonoscopy_lesion_circularity.yaml +0 -20
  382. endoreg_db/data/finding_classification/colonoscopy_lesion_planarity.yaml +0 -24
  383. endoreg_db/data/finding_classification/colonoscopy_lesion_size.yaml +0 -68
  384. endoreg_db/data/finding_classification/colonoscopy_lesion_surface.yaml +0 -20
  385. endoreg_db/data/finding_classification/colonoscopy_location.yaml +0 -80
  386. endoreg_db/data/finding_classification/colonoscopy_lst.yaml +0 -21
  387. endoreg_db/data/finding_classification/colonoscopy_nice.yaml +0 -20
  388. endoreg_db/data/finding_classification/colonoscopy_paris.yaml +0 -26
  389. endoreg_db/data/finding_classification/colonoscopy_sano.yaml +0 -22
  390. endoreg_db/data/finding_classification/colonoscopy_summary.yaml +0 -53
  391. endoreg_db/data/finding_classification/complication_generic.yaml +0 -25
  392. endoreg_db/data/finding_classification/examination_setting_generic.yaml +0 -40
  393. endoreg_db/data/finding_classification/histology_colo.yaml +0 -51
  394. endoreg_db/data/finding_classification/intervention_required.yaml +0 -26
  395. endoreg_db/data/finding_classification/medication_related.yaml +0 -23
  396. endoreg_db/data/finding_classification/visualized.yaml +0 -33
  397. endoreg_db/data/finding_classification_choice/colon_lesion_circularity_default.yaml +0 -32
  398. endoreg_db/data/finding_classification_choice/colon_lesion_jnet.yaml +0 -15
  399. endoreg_db/data/finding_classification_choice/colon_lesion_kudo.yaml +0 -23
  400. endoreg_db/data/finding_classification_choice/colon_lesion_lst.yaml +0 -15
  401. endoreg_db/data/finding_classification_choice/colon_lesion_nice.yaml +0 -17
  402. endoreg_db/data/finding_classification_choice/colon_lesion_planarity_default.yaml +0 -49
  403. endoreg_db/data/finding_classification_choice/colon_lesion_sano.yaml +0 -14
  404. endoreg_db/data/finding_classification_choice/colon_lesion_surface_intact_default.yaml +0 -36
  405. endoreg_db/data/finding_classification_choice/colonoscopy_size.yaml +0 -82
  406. endoreg_db/data/finding_classification_choice/colonoscopy_summary_worst_finding.yaml +0 -15
  407. endoreg_db/data/finding_classification_choice/outcome.yaml +0 -19
  408. endoreg_db/data/finding_intervention/endoscopy.yaml +0 -43
  409. endoreg_db/data/finding_intervention/endoscopy_colonoscopy.yaml +0 -168
  410. endoreg_db/data/finding_intervention/endoscopy_egd.yaml +0 -128
  411. endoreg_db/data/finding_intervention/endoscopy_ercp.yaml +0 -32
  412. endoreg_db/data/finding_intervention/endoscopy_eus_lower.yaml +0 -9
  413. endoreg_db/data/finding_intervention/endoscopy_eus_upper.yaml +0 -36
  414. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +0 -79
  415. endoreg_db/data/requirement/age.yaml +0 -26
  416. endoreg_db/data/requirement/gender.yaml +0 -25
  417. endoreg_db/management/commands/init_default_ai_model.py +0 -112
  418. endoreg_db/management/commands/reset_celery_schedule.py +0 -9
  419. endoreg_db/management/commands/validate_video.py +0 -204
  420. endoreg_db/migrations/0002_add_video_correction_models.py +0 -52
  421. endoreg_db/migrations/0003_add_center_display_name.py +0 -30
  422. endoreg_db/models/administration/permissions/__init__.py +0 -44
  423. endoreg_db/models/rule/__init__.py +0 -13
  424. endoreg_db/models/rule/rule.py +0 -27
  425. endoreg_db/models/rule/rule_applicator.py +0 -224
  426. endoreg_db/models/rule/rule_attribute_dtype.py +0 -17
  427. endoreg_db/models/rule/rule_type.py +0 -20
  428. endoreg_db/models/rule/ruleset.py +0 -17
  429. endoreg_db/renames.yml +0 -8
  430. endoreg_db/serializers/_old/raw_pdf_meta_validation.py +0 -223
  431. endoreg_db/serializers/_old/raw_video_meta_validation.py +0 -179
  432. endoreg_db/serializers/_old/video.py +0 -71
  433. endoreg_db/serializers/meta/pdf_file_meta_extraction.py +0 -115
  434. endoreg_db/serializers/meta/report_meta.py +0 -53
  435. endoreg_db/serializers/report/__init__.py +0 -9
  436. endoreg_db/serializers/report/mixins.py +0 -45
  437. endoreg_db/serializers/report/report.py +0 -105
  438. endoreg_db/serializers/report/report_list.py +0 -22
  439. endoreg_db/serializers/report/secure_file_url.py +0 -26
  440. endoreg_db/serializers/video/video_metadata.py +0 -105
  441. endoreg_db/services/requirements_object.py +0 -147
  442. endoreg_db/services/storage_aware_video_processor.py +0 -344
  443. endoreg_db/urls/files.py +0 -6
  444. endoreg_db/urls/label_video_segment_validate.py +0 -33
  445. endoreg_db/urls/label_video_segments.py +0 -46
  446. endoreg_db/urls/report.py +0 -48
  447. endoreg_db/urls/video.py +0 -61
  448. endoreg_db/utils/case_generator/case_generator.py +0 -159
  449. endoreg_db/utils/case_generator/utils.py +0 -30
  450. endoreg_db/utils/requirement_operator_logic/model_evaluators.py +0 -368
  451. endoreg_db/views/label/__init__.py +0 -5
  452. endoreg_db/views/label/label.py +0 -15
  453. endoreg_db/views/label_video_segment/__init__.py +0 -16
  454. endoreg_db/views/label_video_segment/create_lvs_from_annotation.py +0 -44
  455. endoreg_db/views/label_video_segment/get_lvs_by_name_and_video.py +0 -50
  456. endoreg_db/views/label_video_segment/label_video_segment.py +0 -77
  457. endoreg_db/views/label_video_segment/label_video_segment_by_label.py +0 -174
  458. endoreg_db/views/label_video_segment/label_video_segment_detail.py +0 -73
  459. endoreg_db/views/label_video_segment/update_lvs_from_annotation.py +0 -46
  460. endoreg_db/views/label_video_segment/validate.py +0 -226
  461. endoreg_db/views/media/segments.py +0 -71
  462. endoreg_db/views/meta/available_files_list.py +0 -146
  463. endoreg_db/views/meta/report_meta.py +0 -53
  464. endoreg_db/views/meta/sensitive_meta_detail.py +0 -148
  465. endoreg_db/views/misc/secure_file_serving_view.py +0 -80
  466. endoreg_db/views/misc/secure_file_url_view.py +0 -84
  467. endoreg_db/views/misc/secure_url_validate.py +0 -79
  468. endoreg_db/views/patient_examination/DEPRECATED_video_backup.py +0 -164
  469. endoreg_db/views/patient_finding_location/__init__.py +0 -5
  470. endoreg_db/views/patient_finding_location/pfl_create.py +0 -70
  471. endoreg_db/views/patient_finding_morphology/__init__.py +0 -5
  472. endoreg_db/views/patient_finding_morphology/pfm_create.py +0 -70
  473. endoreg_db/views/pdf/__init__.py +0 -8
  474. endoreg_db/views/report/report_list.py +0 -112
  475. endoreg_db/views/report/report_with_secure_url.py +0 -28
  476. endoreg_db/views/report/start_examination.py +0 -7
  477. endoreg_db/views/video/segmentation.py +0 -274
  478. endoreg_db/views/video/task_status.py +0 -49
  479. endoreg_db/views/video/timeline.py +0 -46
  480. endoreg_db/views/video/video_analyze.py +0 -52
  481. endoreg_db/views.py +0 -0
  482. /endoreg_db/data/requirement/{colonoscopy_baseline_austria.yaml → old/colonoscopy_baseline_austria.yaml} +0 -0
  483. /endoreg_db/data/requirement/{disease_cardiovascular.yaml → old/disease_cardiovascular.yaml} +0 -0
  484. /endoreg_db/data/requirement/{disease_classification_choice_cardiovascular.yaml → old/disease_classification_choice_cardiovascular.yaml} +0 -0
  485. /endoreg_db/data/requirement/{disease_hepatology.yaml → old/disease_hepatology.yaml} +0 -0
  486. /endoreg_db/data/requirement/{disease_misc.yaml → old/disease_misc.yaml} +0 -0
  487. /endoreg_db/data/requirement/{disease_renal.yaml → old/disease_renal.yaml} +0 -0
  488. /endoreg_db/data/requirement/{endoscopy_bleeding_risk.yaml → old/endoscopy_bleeding_risk.yaml} +0 -0
  489. /endoreg_db/data/requirement/{event_cardiology.yaml → old/event_cardiology.yaml} +0 -0
  490. /endoreg_db/data/requirement/{event_requirements.yaml → old/event_requirements.yaml} +0 -0
  491. /endoreg_db/data/requirement/{finding_colon_polyp.yaml → old/finding_colon_polyp.yaml} +0 -0
  492. /endoreg_db/{migrations/__init__.py → data/requirement/old/gender.yaml} +0 -0
  493. /endoreg_db/data/requirement/{lab_value.yaml → old/lab_value.yaml} +0 -0
  494. /endoreg_db/data/requirement/{medication.yaml → old/medication.yaml} +0 -0
  495. /endoreg_db/data/requirement_operator/{age.yaml → _old/age.yaml} +0 -0
  496. /endoreg_db/data/requirement_operator/{lab_operators.yaml → _old/lab_operators.yaml} +0 -0
  497. /endoreg_db/data/requirement_operator/{model_operators.yaml → _old/model_operators.yaml} +0 -0
  498. /endoreg_db/{models/media/video/refactor_plan.md → import_files/pseudonymization/__init__.py} +0 -0
  499. /endoreg_db/{models/media/video/video_file_frames.py → import_files/pseudonymization/pseudonymize.py} +0 -0
  500. /endoreg_db/models/{metadata/frame_ocr_result.py → report/__init__.py} +0 -0
  501. /endoreg_db/{urls/sensitive_meta.py → models/report/images.py} +0 -0
  502. /endoreg_db/utils/requirement_operator_logic/{lab_value_operators.py → _old/lab_value_operators.py} +0 -0
  503. {endoreg_db-0.8.6.1.dist-info → endoreg_db-0.8.8.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,75 +1,62 @@
1
+ import os
2
+
1
3
  from django.conf import settings
2
4
  from django.core.management.base import BaseCommand
3
- from ...models import (
4
- Examination,
5
- ExaminationType, # Replace 'your_app_name' with the actual app name
6
- ExaminationTime,
7
- ExaminationTimeType,
8
- )
9
- import os
10
- from ...utils import load_model_data_from_yaml
5
+
11
6
  from ...data import EXAMINATION_DATA_DIR
7
+ from ...models import Examination, ExaminationIndication, ExaminationTime, ExaminationTimeType, ExaminationType, Finding
8
+ from ...utils import load_model_data_from_yaml
12
9
 
13
- SOURCE_DIR = EXAMINATION_DATA_DIR
10
+ SOURCE_DIR = EXAMINATION_DATA_DIR
14
11
 
15
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
12
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
16
13
  "ExaminationType",
17
- "Examination",
18
14
  "ExaminationTimeType",
19
- "ExaminationTime"
15
+ "ExaminationTime",
16
+ "Examination",
20
17
  ]
21
18
 
22
19
  IMPORT_METADATA = {
23
- # "": { # same as model name in "import models", e.g. "Intervention"
24
- # "subdir": os.path.join(SOURCE_DIR,""), # e.g. "interventions"
25
- # "model": None, # e.g. Intervention
26
- # "foreign_keys": [], # e.g. ["intervention_types"]
27
- # "foreign_key_models": [] # e.g. [InterventionType]
28
- # },
29
20
  "ExaminationType": {
30
- "dir": os.path.join(SOURCE_DIR,"type"), # e.g. "interventions"
31
- "model": ExaminationType, # e.g. Intervention
32
- "foreign_keys": [], # e.g. ["intervention_types"]
33
- "foreign_key_models": [] # e.g. [InterventionType]
21
+ "dir": os.path.join(SOURCE_DIR, "type"),
22
+ "model": ExaminationType,
23
+ "foreign_keys": [],
24
+ "foreign_key_models": [],
34
25
  },
35
26
  "Examination": {
36
- "dir": os.path.join(SOURCE_DIR,"examinations"), # e.g. "interventions"
37
- "model": Examination, # e.g. Intervention
38
- "foreign_keys": ["examination_types"], # e.g. ["intervention_types"]
39
- "foreign_key_models": [ExaminationType] # e.g. [InterventionType]
27
+ "dir": os.path.join(SOURCE_DIR, "examinations"),
28
+ "model": Examination,
29
+ "foreign_keys": ["findings", "examination_types", "examination_times", "indications"],
30
+ "foreign_key_models": [Finding, ExaminationType, ExaminationTime, ExaminationIndication],
40
31
  },
41
32
  "ExaminationTimeType": {
42
- "dir": os.path.join(SOURCE_DIR,"time-type"), # e.g. "interventions"
43
- "model": ExaminationTimeType, # e.g. Intervention
44
- "foreign_keys": ["examinations"], # e.g. ["intervention_types"]
45
- "foreign_key_models": [Examination] # e.g. [InterventionType]
33
+ "dir": os.path.join(SOURCE_DIR, "time-type"),
34
+ "model": ExaminationTimeType,
35
+ "foreign_keys": ["examinations"],
36
+ "foreign_key_models": [Examination],
46
37
  },
47
38
  "ExaminationTime": {
48
- "dir": os.path.join(SOURCE_DIR,"time"), # e.g. "interventions"
49
- "model": ExaminationTime, # e.g. Intervention
50
- "foreign_keys": ["time_types"], # e.g. ["intervention_types"]
51
- "foreign_key_models": [ExaminationTimeType] # e.g. [InterventionType]
39
+ "dir": os.path.join(SOURCE_DIR, "time"),
40
+ "model": ExaminationTime,
41
+ "foreign_keys": ["time_types"],
42
+ "foreign_key_models": [ExaminationTimeType],
52
43
  },
53
44
  }
54
45
 
46
+
55
47
  class Command(BaseCommand):
56
48
  help = """Load all .yaml files in the data/intervention directory
57
49
  into the Intervention and InterventionType model"""
58
50
 
59
51
  def add_arguments(self, parser):
60
52
  parser.add_argument(
61
- '--verbose',
62
- action='store_true',
63
- help='Display verbose output',
53
+ "--verbose",
54
+ action="store_true",
55
+ help="Display verbose output",
64
56
  )
65
57
 
66
58
  def handle(self, *args, **options):
67
- verbose = options['verbose']
59
+ verbose = options["verbose"]
68
60
  for model_name in IMPORT_MODELS:
69
61
  _metadata = IMPORT_METADATA[model_name]
70
- load_model_data_from_yaml(
71
- self,
72
- model_name,
73
- _metadata,
74
- verbose
75
- )
62
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -1,24 +1,23 @@
1
- from django.conf import settings
2
1
  from django.core.management.base import BaseCommand
2
+
3
+ from ...data import (
4
+ EXAMINATION_INDICATION_CLASSIFICATION_CHOICE_DATA_DIR,
5
+ EXAMINATION_INDICATION_CLASSIFICATION_DATA_DIR,
6
+ EXAMINATION_INDICATION_DATA_DIR,
7
+ )
3
8
  from ...models import (
4
- ExaminationIndicationClassification,
5
9
  ExaminationIndication,
10
+ ExaminationIndicationClassification,
6
11
  ExaminationIndicationClassificationChoice,
7
- Examination,
8
12
  FindingIntervention,
13
+ InformationSource,
9
14
  )
10
15
  from ...utils import load_model_data_from_yaml
11
- from ...data import (
12
- EXAMINATION_INDICATION_CLASSIFICATION_CHOICE_DATA_DIR,
13
- EXAMINATION_INDICATION_CLASSIFICATION_DATA_DIR,
14
- EXAMINATION_INDICATION_DATA_DIR,
15
- )
16
-
17
16
 
18
17
  IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
19
- ExaminationIndication.__name__,
20
- ExaminationIndicationClassification.__name__,
21
18
  ExaminationIndicationClassificationChoice.__name__,
19
+ ExaminationIndicationClassification.__name__,
20
+ ExaminationIndication.__name__,
22
21
  ]
23
22
 
24
23
  IMPORT_METADATA = {
@@ -26,31 +25,31 @@ IMPORT_METADATA = {
26
25
  "dir": EXAMINATION_INDICATION_DATA_DIR,
27
26
  "model": ExaminationIndication,
28
27
  "foreign_keys": [
29
- "examinations",
30
28
  "expected_interventions",
29
+ "classifications",
30
+ "information_sources",
31
31
  ],
32
32
  "foreign_key_models": [
33
- Examination,
34
33
  FindingIntervention,
34
+ ExaminationIndicationClassification,
35
+ InformationSource,
35
36
  ],
36
37
  },
37
38
  ExaminationIndicationClassification.__name__: {
38
39
  "dir": EXAMINATION_INDICATION_CLASSIFICATION_DATA_DIR,
39
40
  "model": ExaminationIndicationClassification,
40
41
  "foreign_keys": [
41
- "examinations",
42
- "indications", # This is a many-to-many field
42
+ "choices", # This is a many-to-many field
43
43
  ],
44
44
  "foreign_key_models": [
45
- Examination,
46
- ExaminationIndication,
45
+ ExaminationIndicationClassificationChoice,
47
46
  ],
48
47
  },
49
48
  ExaminationIndicationClassificationChoice.__name__: {
50
49
  "dir": EXAMINATION_INDICATION_CLASSIFICATION_CHOICE_DATA_DIR,
51
50
  "model": ExaminationIndicationClassificationChoice,
52
- "foreign_keys": ["classification"],
53
- "foreign_key_models": [ExaminationIndicationClassification],
51
+ "foreign_keys": [],
52
+ "foreign_key_models": [],
54
53
  },
55
54
  }
56
55
 
@@ -62,7 +61,7 @@ class Command(BaseCommand):
62
61
  def add_arguments(self, parser):
63
62
  """
64
63
  Add the --verbose flag to the command-line argument parser.
65
-
64
+
66
65
  This method augments the parser with a '--verbose' option to enable detailed output
67
66
  during command execution.
68
67
  """
@@ -75,7 +74,7 @@ class Command(BaseCommand):
75
74
  def handle(self, *args, **options):
76
75
  """
77
76
  Executes YAML data import for configured models.
78
-
77
+
79
78
  Retrieves the verbosity flag from the options and iterates through each model
80
79
  in IMPORT_MODELS. For every model, it obtains the associated metadata from
81
80
  IMPORT_METADATA and invokes load_model_data_from_yaml to load data from its YAML files.
@@ -1,128 +1,100 @@
1
1
  from django.core.management.base import BaseCommand
2
- from endoreg_db.models import (
3
- Finding, FindingType, Examination,
4
- FindingClassification, FindingClassificationType, FindingClassificationChoice,
5
- Organ,
6
- FindingIntervention, FindingInterventionType, LabValue, Contraindication
7
2
 
3
+ from endoreg_db.models import (
4
+ Finding,
5
+ FindingClassification,
6
+ FindingClassificationChoice,
7
+ FindingClassificationType,
8
+ FindingIntervention,
9
+ FindingInterventionType,
10
+ FindingType,
8
11
  )
9
- from ...utils import load_model_data_from_yaml
12
+
10
13
  from ...data import (
11
- FINDING_DATA_DIR, FINDING_TYPE_DATA_DIR,
14
+ FINDING_CLASSIFICATION_CHOICE_DATA_DIR,
15
+ FINDING_CLASSIFICATION_DATA_DIR,
16
+ FINDING_CLASSIFICATION_TYPE_DATA_DIR,
17
+ FINDING_DATA_DIR,
12
18
  FINDING_INTERVETION_DATA_DIR,
19
+ FINDING_TYPE_DATA_DIR,
13
20
  FINIDNG_INTERVENTION_TYPE_DATA_DIR,
14
- FINDING_CLASSIFICATION_TYPE_DATA_DIR,
15
- FINDING_CLASSIFICATION_DATA_DIR,
16
- FINDING_CLASSIFICATION_CHOICE_DATA_DIR
17
21
  )
22
+ from ...utils import load_model_data_from_yaml
18
23
 
19
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
24
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
20
25
  FindingInterventionType.__name__,
21
26
  FindingIntervention.__name__,
22
27
  FindingType.__name__,
23
- Finding.__name__,
24
- FindingClassificationType.__name__,
25
28
  FindingClassificationChoice.__name__,
29
+ FindingClassificationType.__name__,
26
30
  FindingClassification.__name__,
31
+ Finding.__name__,
27
32
  ]
28
33
 
29
34
  IMPORT_METADATA = {
30
35
  FindingType.__name__: {
31
- "dir": FINDING_TYPE_DATA_DIR, # e.g. "interventions"
32
- "model": FindingType, # e.g. Intervention
33
- "foreign_keys": [], # e.g. ["intervention_types"]
34
- "foreign_key_models": [] # e.g. [InterventionType]
36
+ "dir": FINDING_TYPE_DATA_DIR,
37
+ "model": FindingType,
38
+ "foreign_keys": [],
39
+ "foreign_key_models": [],
35
40
  },
36
41
  Finding.__name__: {
37
- "dir": FINDING_DATA_DIR, # e.g. "interventions"
38
- "model": Finding, # e.g. Intervention
39
- "foreign_keys": [
40
- "finding_types",
41
- "examinations",
42
- "finding_interventions",
43
- ], # e.g. ["intervention_types"]
44
- "foreign_key_models": [
45
- FindingType,
46
- Examination,
47
- FindingIntervention,
48
- FindingIntervention,
49
- FindingIntervention,
50
- ] # e.g. [InterventionType]
42
+ "dir": FINDING_DATA_DIR,
43
+ "model": Finding,
44
+ "foreign_keys": ["finding_types", "finding_interventions", "finding_classifications", "caused_by_interventions"],
45
+ "foreign_key_models": [FindingType, FindingIntervention, FindingClassification, FindingIntervention],
51
46
  },
52
47
  FindingInterventionType.__name__: {
53
- "dir": FINIDNG_INTERVENTION_TYPE_DATA_DIR, # e.g. "interventions"
54
- "model": FindingInterventionType, # e.g. Intervention
55
- "foreign_keys": [], # e.g. ["intervention_types"]
56
- "foreign_key_models": [] # e.g. [InterventionType]
48
+ "dir": FINIDNG_INTERVENTION_TYPE_DATA_DIR,
49
+ "model": FindingInterventionType,
50
+ "foreign_keys": [],
51
+ "foreign_key_models": [],
57
52
  },
58
53
  FindingIntervention.__name__: {
59
- "dir": FINDING_INTERVETION_DATA_DIR, # e.g. "interventions"
60
- "model": FindingIntervention, # e.g. Intervention
61
- "foreign_keys": [
62
- "intervention_types",
63
- "required_lab_values",
64
- "contraindications"
65
- ], # e.g. ["intervention_types"]
66
- "foreign_key_models": [
67
- FindingInterventionType,
68
- LabValue,
69
- Contraindication
70
- ] # e.g. [InterventionType]
54
+ "dir": FINDING_INTERVETION_DATA_DIR,
55
+ "model": FindingIntervention,
56
+ "foreign_keys": ["intervention_types"],
57
+ "foreign_key_models": [FindingInterventionType],
71
58
  },
72
59
  FindingClassificationType.__name__: {
73
- "dir": FINDING_CLASSIFICATION_TYPE_DATA_DIR, # e.g. "interventions"
74
- "model": FindingClassificationType, # e.g. Intervention
75
- "foreign_keys": [], # e.g. ["intervention_types"]
76
- "foreign_key_models": [] # e.g. [InterventionType]
60
+ "dir": FINDING_CLASSIFICATION_TYPE_DATA_DIR,
61
+ "model": FindingClassificationType,
62
+ "foreign_keys": [],
63
+ "foreign_key_models": [],
77
64
  },
78
65
  FindingClassification.__name__: {
79
- "dir": FINDING_CLASSIFICATION_DATA_DIR, # e.g. "interventions"
80
- "model": FindingClassification, # e.g. Intervention
81
- "foreign_keys": [
82
- "classification_types",
83
- "findings",
84
- "examinations",
85
- "finding_types",
86
- "choices"
87
- ], # e.g. ["intervention_types"]
66
+ "dir": FINDING_CLASSIFICATION_DATA_DIR,
67
+ "model": FindingClassification,
68
+ "foreign_keys": ["classification_types", "findings", "finding_types", "choices"],
88
69
  "foreign_key_models": [
89
70
  FindingClassificationType,
90
71
  Finding,
91
- Examination,
92
72
  FindingType,
93
73
  FindingClassificationChoice,
94
- ] # e.g. [InterventionType]
74
+ ],
95
75
  },
96
76
  FindingClassificationChoice.__name__: {
97
- "dir": FINDING_CLASSIFICATION_CHOICE_DATA_DIR, # e.g. "interventions"
98
- "model": FindingClassificationChoice, # e.g. Intervention
99
- "foreign_keys": [
100
- # "classifications",
101
- ], # e.g. ["intervention_types"]
102
- "foreign_key_models": [
103
- # FindingClassification
104
- ] # e.g. [InterventionType]
77
+ "dir": FINDING_CLASSIFICATION_CHOICE_DATA_DIR,
78
+ "model": FindingClassificationChoice,
79
+ "foreign_keys": [],
80
+ "foreign_key_models": [],
105
81
  },
106
82
  }
107
83
 
84
+
108
85
  class Command(BaseCommand):
109
86
  help = """Load all .yaml files in the data/intervention directory
110
87
  into the Intervention and InterventionType model"""
111
88
 
112
89
  def add_arguments(self, parser):
113
90
  parser.add_argument(
114
- '--verbose',
115
- action='store_true',
116
- help='Display verbose output',
91
+ "--verbose",
92
+ action="store_true",
93
+ help="Display verbose output",
117
94
  )
118
95
 
119
96
  def handle(self, *args, **options):
120
- verbose = options['verbose']
97
+ verbose = options["verbose"]
121
98
  for model_name in IMPORT_MODELS:
122
99
  _metadata = IMPORT_METADATA[model_name]
123
- load_model_data_from_yaml(
124
- self,
125
- model_name,
126
- _metadata,
127
- verbose
128
- )
100
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -1,51 +1,49 @@
1
- from django.conf import settings
2
1
  import os
2
+
3
+ from django.conf import settings
3
4
  from django.core.management.base import BaseCommand
5
+
6
+ from ...data import INFORMATION_DATA_DIR, INFORMATION_SOURCE_TYPE_DATA_DIR
4
7
  from ...models import InformationSource, InformationSourceType
5
8
  from ...utils import load_model_data_from_yaml
6
- from ...data import INFORMATION_DATA_DIR, INFORMATION_SOURCE_TYPE_DATA_DIR
7
9
 
8
- SOURCE_DIR = INFORMATION_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
10
+ SOURCE_DIR = INFORMATION_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
9
11
 
10
12
 
11
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
13
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
12
14
  InformationSourceType.__name__,
13
15
  InformationSource.__name__,
14
16
  ]
15
17
 
16
18
  IMPORT_METADATA = {
17
19
  InformationSourceType.__name__: {
18
- "dir": INFORMATION_SOURCE_TYPE_DATA_DIR, # e.g. "intervention_type"
19
- "model": InformationSourceType, # e.g. InterventionType
20
- "foreign_keys": [], # e.g. ["intervention_types"]
21
- "foreign_key_models": [] # e.g. [InterventionType]
20
+ "dir": INFORMATION_SOURCE_TYPE_DATA_DIR, # e.g. "intervention_type"
21
+ "model": InformationSourceType,
22
+ "foreign_keys": [], # e.g. ["intervention_types"]
23
+ "foreign_key_models": [], # e.g. [InterventionType]
22
24
  },
23
25
  InformationSource.__name__: {
24
- "dir": SOURCE_DIR, # e.g. "interventions"
25
- "model": InformationSource, # e.g. Intervention
26
- "foreign_keys": ["information_source_types"], # e.g. ["intervention_types"]
27
- "foreign_key_models": [InformationSourceType] # e.g. [InterventionType]
28
- }
26
+ "dir": SOURCE_DIR, # e.g. "interventions"
27
+ "model": InformationSource,
28
+ "foreign_keys": ["information_source_types"], # e.g. ["intervention_types"]
29
+ "foreign_key_models": [InformationSourceType], # e.g. [InterventionType]
30
+ },
29
31
  }
30
32
 
33
+
31
34
  class Command(BaseCommand):
32
35
  help = """Load all .yaml files in the data/intervention directory
33
36
  into the Intervention and InterventionType model"""
34
37
 
35
38
  def add_arguments(self, parser):
36
39
  parser.add_argument(
37
- '--verbose',
38
- action='store_true',
39
- help='Display verbose output',
40
+ "--verbose",
41
+ action="store_true",
42
+ help="Display verbose output",
40
43
  )
41
44
 
42
45
  def handle(self, *args, **options):
43
- verbose = options['verbose']
46
+ verbose = options["verbose"]
44
47
  for model_name in IMPORT_MODELS:
45
48
  _metadata = IMPORT_METADATA[model_name]
46
- load_model_data_from_yaml(
47
- self,
48
- model_name,
49
- _metadata,
50
- verbose
51
- )
49
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -1,50 +1,41 @@
1
1
  from django.core.management.base import BaseCommand
2
+
2
3
  from endoreg_db.models import LabValue as MODEL_0
3
- from endoreg_db.models import PatientLabSampleType, NumericValueDistribution
4
- from ...utils import load_model_data_from_yaml
4
+ from endoreg_db.models import NumericValueDistribution, PatientLabSampleType, Unit
5
+
5
6
  from ...data import LAB_VALUE_DATA_DIR as SOURCE_DIR
6
7
  from ...data import PATIENT_LAB_SAMPLE_TYPE_DATA_DIR
8
+ from ...utils import load_model_data_from_yaml
7
9
 
8
- from endoreg_db.models import Unit
9
-
10
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
10
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
11
11
  MODEL_0.__name__,
12
- PatientLabSampleType.__name__
12
+ PatientLabSampleType.__name__,
13
13
  ]
14
14
 
15
15
  IMPORT_METADATA = {
16
16
  MODEL_0.__name__: {
17
- "dir": SOURCE_DIR, # e.g. "interventions"
18
- "model": MODEL_0, # e.g. Intervention
19
- "foreign_keys": ["default_unit","default_numerical_value_distribution"], # e.g. ["intervention_types"]
20
- "foreign_key_models": [Unit, NumericValueDistribution] # e.g. [InterventionType]
17
+ "dir": SOURCE_DIR, # e.g. "interventions"
18
+ "model": MODEL_0,
19
+ "foreign_keys": ["default_unit", "default_numerical_value_distribution"], # e.g. ["intervention_types"]
20
+ "foreign_key_models": [Unit, NumericValueDistribution], # e.g. [InterventionType]
21
21
  },
22
- PatientLabSampleType.__name__: {
23
- "dir": PATIENT_LAB_SAMPLE_TYPE_DATA_DIR,
24
- "model": PatientLabSampleType,
25
- "foreign_keys": [],
26
- "foreign_key_models": []
27
- }
22
+ PatientLabSampleType.__name__: {"dir": PATIENT_LAB_SAMPLE_TYPE_DATA_DIR, "model": PatientLabSampleType, "foreign_keys": [], "foreign_key_models": []},
28
23
  }
29
24
 
25
+
30
26
  class Command(BaseCommand):
31
27
  help = """Load all .yaml files in the data/intervention directory
32
28
  into the Intervention and InterventionType model"""
33
29
 
34
30
  def add_arguments(self, parser):
35
31
  parser.add_argument(
36
- '--verbose',
37
- action='store_true',
38
- help='Display verbose output',
32
+ "--verbose",
33
+ action="store_true",
34
+ help="Display verbose output",
39
35
  )
40
36
 
41
37
  def handle(self, *args, **options):
42
- verbose = options['verbose']
38
+ verbose = options["verbose"]
43
39
  for model_name in IMPORT_MODELS:
44
40
  _metadata = IMPORT_METADATA[model_name]
45
- load_model_data_from_yaml(
46
- self,
47
- model_name,
48
- _metadata,
49
- verbose
50
- )
41
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -1,25 +1,26 @@
1
1
  from django.core.management.base import BaseCommand
2
+
2
3
  from endoreg_db.models import (
4
+ Disease,
5
+ DiseaseClassificationChoice,
6
+ Event,
7
+ InformationSource,
3
8
  Medication,
4
9
  MedicationIndication,
5
10
  MedicationIndicationType,
6
11
  MedicationIntakeTime,
7
12
  MedicationSchedule,
8
13
  Unit,
9
- Disease,
10
- Event,
11
- InformationSource,
12
- DiseaseClassificationChoice,
13
14
  )
14
- from ...utils import load_model_data_from_yaml
15
+
15
16
  from ...data import (
16
17
  MEDICATION_DATA_DIR,
18
+ MEDICATION_INDICATION_DATA_DIR,
17
19
  MEDICATION_INDICATION_TYPE_DATA_DIR,
18
20
  MEDICATION_INTAKE_TIME_DATA_DIR,
19
21
  MEDICATION_SCHEDULE_DATA_DIR,
20
- MEDICATION_INDICATION_DATA_DIR,
21
22
  )
22
-
23
+ from ...utils import load_model_data_from_yaml
23
24
 
24
25
  IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
25
26
  Medication.__name__,
@@ -32,25 +33,25 @@ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
32
33
  IMPORT_METADATA = {
33
34
  Medication.__name__: {
34
35
  "dir": MEDICATION_DATA_DIR, # e.g. "interventions"
35
- "model": Medication, # e.g. Intervention
36
+ "model": Medication,
36
37
  "foreign_keys": ["default_unit"], # e.g. ["intervention_types"]
37
38
  "foreign_key_models": [Unit], # e.g. [InterventionType]
38
39
  },
39
40
  MedicationIndicationType.__name__: {
40
41
  "dir": MEDICATION_INDICATION_TYPE_DATA_DIR, # e.g. "interventions"
41
- "model": MedicationIndicationType, # e.g. Intervention
42
+ "model": MedicationIndicationType,
42
43
  "foreign_keys": [], # e.g. ["intervention_types"]
43
44
  "foreign_key_models": [], # e.g. [InterventionType]
44
45
  },
45
46
  MedicationIntakeTime.__name__: {
46
47
  "dir": MEDICATION_INTAKE_TIME_DATA_DIR, # e.g. "interventions"
47
- "model": MedicationIntakeTime, # e.g. Intervention
48
+ "model": MedicationIntakeTime,
48
49
  "foreign_keys": [], # e.g. ["intervention_types"]
49
50
  "foreign_key_models": [], # e.g. [InterventionType]
50
51
  },
51
52
  MedicationSchedule.__name__: {
52
53
  "dir": MEDICATION_SCHEDULE_DATA_DIR, # e.g. "interventions"
53
- "model": MedicationSchedule, # e.g. Intervention
54
+ "model": MedicationSchedule,
54
55
  "foreign_keys": [
55
56
  "medication",
56
57
  "intake_times",
@@ -64,7 +65,7 @@ IMPORT_METADATA = {
64
65
  },
65
66
  MedicationIndication.__name__: {
66
67
  "dir": MEDICATION_INDICATION_DATA_DIR, # e.g. "interventions"
67
- "model": MedicationIndication, # e.g. Intervention
68
+ "model": MedicationIndication,
68
69
  "foreign_keys": [
69
70
  "indication_type",
70
71
  "medication_schedules",
@@ -1,43 +1,39 @@
1
1
  from django.core.management.base import BaseCommand
2
+
2
3
  from endoreg_db.models import Organ
4
+
5
+ from ...data import ORGAN_DATA_DIR
3
6
  from ...utils import load_model_data_from_yaml
4
- from ...data import (
5
- ORGAN_DATA_DIR
6
- )
7
7
 
8
8
  MODEL_0 = Organ
9
9
 
10
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
11
- MODEL_0.__name__,#
10
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
11
+ MODEL_0.__name__, #
12
12
  ]
13
13
 
14
14
  IMPORT_METADATA = {
15
15
  MODEL_0.__name__: {
16
- "dir": ORGAN_DATA_DIR, # e.g. "interventions"
17
- "model": MODEL_0, # e.g. Intervention
18
- "foreign_keys": [], # e.g. ["intervention_types"]
19
- "foreign_key_models": [] # e.g. [InterventionType]
16
+ "dir": ORGAN_DATA_DIR, # e.g. "interventions"
17
+ "model": MODEL_0,
18
+ "foreign_keys": [], # e.g. ["intervention_types"]
19
+ "foreign_key_models": [], # e.g. [InterventionType]
20
20
  }
21
21
  }
22
22
 
23
+
23
24
  class Command(BaseCommand):
24
25
  help = """Load all .yaml files in the data/intervention directory
25
26
  into the Intervention and InterventionType model"""
26
27
 
27
28
  def add_arguments(self, parser):
28
29
  parser.add_argument(
29
- '--verbose',
30
- action='store_true',
31
- help='Display verbose output',
30
+ "--verbose",
31
+ action="store_true",
32
+ help="Display verbose output",
32
33
  )
33
34
 
34
35
  def handle(self, *args, **options):
35
- verbose = options['verbose']
36
+ verbose = options["verbose"]
36
37
  for model_name in IMPORT_MODELS:
37
38
  _metadata = IMPORT_METADATA[model_name]
38
- load_model_data_from_yaml(
39
- self,
40
- model_name,
41
- _metadata,
42
- verbose
43
- )
39
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)