endoreg-db 0.6.0__py3-none-any.whl → 0.6.2__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (416) hide show
  1. endoreg_db/case_generator/__init__.py +0 -0
  2. endoreg_db/case_generator/case_generator.py +159 -0
  3. endoreg_db/case_generator/lab_sample_factory.py +33 -0
  4. endoreg_db/case_generator/utils.py +30 -0
  5. endoreg_db/data/__init__.py +118 -0
  6. endoreg_db/data/agl_service/data.yaml +19 -0
  7. endoreg_db/data/ai_model/data.yaml +7 -0
  8. endoreg_db/data/ai_model_label/label/data.yaml +88 -0
  9. endoreg_db/data/ai_model_label/label-set/data.yaml +21 -0
  10. endoreg_db/data/ai_model_label/label-type/data.yaml +7 -0
  11. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +5 -0
  12. endoreg_db/data/ai_model_type/data.yaml +7 -0
  13. endoreg_db/data/ai_model_video_segmentation_label/base_segmentation.yaml +176 -0
  14. endoreg_db/data/ai_model_video_segmentation_labelset/data.yaml +20 -0
  15. endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -0
  16. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +8 -0
  17. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +9 -0
  18. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +23 -0
  19. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +19 -0
  20. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +19 -0
  21. endoreg_db/data/case_template/rule/19_create_patient.yaml +17 -0
  22. endoreg_db/data/case_template/rule_type/base_types.yaml +35 -0
  23. endoreg_db/data/case_template/rule_value/.init +0 -0
  24. endoreg_db/data/case_template/rule_value_type/base_types.yaml +59 -0
  25. endoreg_db/data/case_template/template/base.yaml +8 -0
  26. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +3 -0
  27. endoreg_db/data/case_template/tmp/_rule_value +13 -0
  28. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -0
  29. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +10 -0
  30. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +7 -0
  31. endoreg_db/data/center/data.yaml +90 -0
  32. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -0
  33. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -0
  34. endoreg_db/data/contraindication/bleeding.yaml +11 -0
  35. endoreg_db/data/disease/cardiovascular.yaml +37 -0
  36. endoreg_db/data/disease/hepatology.yaml +5 -0
  37. endoreg_db/data/disease/misc.yaml +6 -0
  38. endoreg_db/data/disease/renal.yaml +5 -0
  39. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +6 -0
  40. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +6 -0
  41. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +41 -0
  42. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +20 -0
  43. endoreg_db/data/distribution/date/patient.yaml +7 -0
  44. endoreg_db/data/distribution/multiple_categorical/.init +0 -0
  45. endoreg_db/data/distribution/numeric/data.yaml +14 -0
  46. endoreg_db/data/distribution/single_categorical/patient.yaml +7 -0
  47. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -0
  48. endoreg_db/data/endoscope/data.yaml +93 -0
  49. endoreg_db/data/endoscope_type/data.yaml +11 -0
  50. endoreg_db/data/endoscopy_processor/data.yaml +47 -0
  51. endoreg_db/data/event/cardiology.yaml +28 -0
  52. endoreg_db/data/event/neurology.yaml +14 -0
  53. endoreg_db/data/event/surgery.yaml +13 -0
  54. endoreg_db/data/event/thrombembolism.yaml +20 -0
  55. endoreg_db/data/examination/examinations/data.yaml +66 -0
  56. endoreg_db/data/examination/time/data.yaml +48 -0
  57. endoreg_db/data/examination/time-type/data.yaml +8 -0
  58. endoreg_db/data/examination/type/data.yaml +5 -0
  59. endoreg_db/data/examination_indication/endoscopy.yaml +8 -0
  60. endoreg_db/data/examination_indication_classification/endoscopy.yaml +8 -0
  61. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +101 -0
  62. endoreg_db/data/finding/data.yaml +141 -0
  63. endoreg_db/data/finding_intervention/endoscopy.yaml +138 -0
  64. endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
  65. endoreg_db/data/finding_location_classification/colonoscopy.yaml +46 -0
  66. endoreg_db/data/finding_location_classification_choice/colonoscopy.yaml +240 -0
  67. endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +48 -0
  68. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_circularity_default.yaml +34 -0
  69. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_nice.yaml +20 -0
  70. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_paris.yaml +65 -0
  71. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_planarity_default.yaml +56 -0
  72. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_surface_intact_default.yaml +39 -0
  73. endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +57 -0
  74. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +79 -0
  75. endoreg_db/data/finding_type/data.yaml +30 -0
  76. endoreg_db/data/gender/data.yaml +35 -0
  77. endoreg_db/data/information_source/data.yaml +30 -0
  78. endoreg_db/data/information_source/medication.yaml +6 -0
  79. endoreg_db/data/lab_value/cardiac_enzymes.yaml +37 -0
  80. endoreg_db/data/lab_value/coagulation.yaml +54 -0
  81. endoreg_db/data/lab_value/electrolytes.yaml +228 -0
  82. endoreg_db/data/lab_value/gastrointestinal_function.yaml +133 -0
  83. endoreg_db/data/lab_value/hematology.yaml +184 -0
  84. endoreg_db/data/lab_value/hormones.yaml +59 -0
  85. endoreg_db/data/lab_value/lipids.yaml +53 -0
  86. endoreg_db/data/lab_value/misc.yaml +33 -0
  87. endoreg_db/data/lab_value/renal_function.yaml +12 -0
  88. endoreg_db/data/log_type/data.yaml +57 -0
  89. endoreg_db/data/lx_client_tag/base.yaml +54 -0
  90. endoreg_db/data/lx_client_type/base.yaml +30 -0
  91. endoreg_db/data/lx_permission/base.yaml +24 -0
  92. endoreg_db/data/lx_permission/endoreg.yaml +52 -0
  93. endoreg_db/data/material/material.yaml +91 -0
  94. endoreg_db/data/medication/anticoagulation.yaml +65 -0
  95. endoreg_db/data/medication/tah.yaml +70 -0
  96. endoreg_db/data/medication_indication/anticoagulation.yaml +115 -0
  97. endoreg_db/data/medication_indication_type/data.yaml +11 -0
  98. endoreg_db/data/medication_indication_type/thrombembolism.yaml +41 -0
  99. endoreg_db/data/medication_intake_time/base.yaml +31 -0
  100. endoreg_db/data/medication_schedule/apixaban.yaml +95 -0
  101. endoreg_db/data/medication_schedule/ass.yaml +12 -0
  102. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -0
  103. endoreg_db/data/names_first/first_names.yaml +51 -0
  104. endoreg_db/data/names_last/last_names.yaml +51 -0
  105. endoreg_db/data/network_device/data.yaml +59 -0
  106. endoreg_db/data/network_device_type/data.yaml +12 -0
  107. endoreg_db/data/organ/data.yaml +29 -0
  108. endoreg_db/data/patient_lab_sample_type/generic.yaml +6 -0
  109. endoreg_db/data/pdf_type/data.yaml +29 -0
  110. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -0
  111. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -0
  112. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -0
  113. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -0
  114. endoreg_db/data/profession/data.yaml +70 -0
  115. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -0
  116. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +30 -0
  117. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -0
  118. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -0
  119. endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
  120. endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
  121. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -0
  122. endoreg_db/data/unit/concentration.yaml +92 -0
  123. endoreg_db/data/unit/data.yaml +17 -0
  124. endoreg_db/data/unit/length.yaml +31 -0
  125. endoreg_db/data/unit/misc.yaml +20 -0
  126. endoreg_db/data/unit/rate.yaml +6 -0
  127. endoreg_db/data/unit/time.yaml +13 -0
  128. endoreg_db/data/unit/volume.yaml +35 -0
  129. endoreg_db/data/unit/weight.yaml +38 -0
  130. endoreg_db/data/waste/data.yaml +12 -0
  131. endoreg_db/forms/__init__.py +5 -0
  132. endoreg_db/forms/examination_form.py +11 -0
  133. endoreg_db/forms/patient_finding_intervention_form.py +19 -0
  134. endoreg_db/forms/patient_form.py +26 -0
  135. endoreg_db/forms/questionnaires/__init__.py +1 -0
  136. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -0
  137. endoreg_db/forms/settings/__init__.py +8 -0
  138. endoreg_db/forms/unit.py +6 -0
  139. endoreg_db/management/__init__.py +0 -0
  140. endoreg_db/management/commands/__init__.py +0 -0
  141. endoreg_db/management/commands/_load_model_template.py +41 -0
  142. endoreg_db/management/commands/delete_all.py +18 -0
  143. endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -0
  144. endoreg_db/management/commands/fix_auth_permission.py +20 -0
  145. endoreg_db/management/commands/load_active_model_data.py +45 -0
  146. endoreg_db/management/commands/load_ai_model_data.py +79 -0
  147. endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
  148. endoreg_db/management/commands/load_base_db_data.py +178 -0
  149. endoreg_db/management/commands/load_center_data.py +43 -0
  150. endoreg_db/management/commands/load_contraindication_data.py +41 -0
  151. endoreg_db/management/commands/load_disease_classification_choices_data.py +41 -0
  152. endoreg_db/management/commands/load_disease_classification_data.py +41 -0
  153. endoreg_db/management/commands/load_disease_data.py +62 -0
  154. endoreg_db/management/commands/load_distribution_data.py +66 -0
  155. endoreg_db/management/commands/load_endoscope_data.py +68 -0
  156. endoreg_db/management/commands/load_event_data.py +41 -0
  157. endoreg_db/management/commands/load_examination_data.py +75 -0
  158. endoreg_db/management/commands/load_examination_indication_data.py +65 -0
  159. endoreg_db/management/commands/load_finding_data.py +171 -0
  160. endoreg_db/management/commands/load_g_play_data.py +113 -0
  161. endoreg_db/management/commands/load_gender_data.py +44 -0
  162. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +133 -0
  163. endoreg_db/management/commands/load_information_source.py +45 -0
  164. endoreg_db/management/commands/load_lab_value_data.py +50 -0
  165. endoreg_db/management/commands/load_logging_data.py +39 -0
  166. endoreg_db/management/commands/load_lx_data.py +64 -0
  167. endoreg_db/management/commands/load_medication_data.py +103 -0
  168. endoreg_db/management/commands/load_medication_indication_data.py +63 -0
  169. endoreg_db/management/commands/load_medication_indication_type_data.py +41 -0
  170. endoreg_db/management/commands/load_medication_intake_time_data.py +41 -0
  171. endoreg_db/management/commands/load_medication_schedule_data.py +55 -0
  172. endoreg_db/management/commands/load_name_data.py +37 -0
  173. endoreg_db/management/commands/load_network_data.py +57 -0
  174. endoreg_db/management/commands/load_organ_data.py +43 -0
  175. endoreg_db/management/commands/load_pdf_type_data.py +61 -0
  176. endoreg_db/management/commands/load_profession_data.py +44 -0
  177. endoreg_db/management/commands/load_report_reader_flag_data.py +46 -0
  178. endoreg_db/management/commands/load_unit_data.py +46 -0
  179. endoreg_db/management/commands/load_user_groups.py +28 -0
  180. endoreg_db/management/commands/register_ai_model.py +64 -0
  181. endoreg_db/management/commands/reset_celery_schedule.py +9 -0
  182. endoreg_db/migrations/0001_initial.py +2045 -0
  183. endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +23 -0
  184. endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +23 -0
  185. endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +25 -0
  186. endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +33 -0
  187. endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +23 -0
  188. endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +24 -0
  189. endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +48 -0
  190. endoreg_db/migrations/__init__.py +0 -0
  191. endoreg_db/models/__init__.py +376 -0
  192. endoreg_db/models/ai_model/__init__.py +4 -0
  193. endoreg_db/models/ai_model/active_model.py +9 -0
  194. endoreg_db/models/ai_model/ai_model.py +103 -0
  195. endoreg_db/models/ai_model/lightning/__init__.py +3 -0
  196. endoreg_db/models/ai_model/lightning/inference_dataset.py +53 -0
  197. endoreg_db/models/ai_model/lightning/multilabel_classification_net.py +155 -0
  198. endoreg_db/models/ai_model/lightning/postprocess.py +53 -0
  199. endoreg_db/models/ai_model/lightning/predict.py +172 -0
  200. endoreg_db/models/ai_model/lightning/prediction_visualizer.py +55 -0
  201. endoreg_db/models/ai_model/lightning/preprocess.py +68 -0
  202. endoreg_db/models/ai_model/lightning/run_visualizer.py +21 -0
  203. endoreg_db/models/ai_model/model_meta.py +250 -0
  204. endoreg_db/models/ai_model/model_type.py +36 -0
  205. endoreg_db/models/ai_model/utils.py +8 -0
  206. endoreg_db/models/annotation/__init__.py +32 -0
  207. endoreg_db/models/annotation/anonymized_image_annotation.py +115 -0
  208. endoreg_db/models/annotation/binary_classification_annotation_task.py +117 -0
  209. endoreg_db/models/annotation/image_classification.py +86 -0
  210. endoreg_db/models/annotation/video_segmentation_annotation.py +52 -0
  211. endoreg_db/models/annotation/video_segmentation_labelset.py +20 -0
  212. endoreg_db/models/case/__init__.py +1 -0
  213. endoreg_db/models/case/case.py +34 -0
  214. endoreg_db/models/case_template/__init__.py +15 -0
  215. endoreg_db/models/case_template/case_template.py +125 -0
  216. endoreg_db/models/case_template/case_template_rule.py +276 -0
  217. endoreg_db/models/case_template/case_template_rule_value.py +88 -0
  218. endoreg_db/models/case_template/case_template_type.py +28 -0
  219. endoreg_db/models/center/__init__.py +11 -0
  220. endoreg_db/models/center/center.py +51 -0
  221. endoreg_db/models/center/center_product.py +33 -0
  222. endoreg_db/models/center/center_resource.py +33 -0
  223. endoreg_db/models/center/center_waste.py +16 -0
  224. endoreg_db/models/contraindication/__init__.py +21 -0
  225. endoreg_db/models/data_file/__init__.py +39 -0
  226. endoreg_db/models/data_file/base_classes/__init__.py +7 -0
  227. endoreg_db/models/data_file/base_classes/abstract_frame.py +100 -0
  228. endoreg_db/models/data_file/base_classes/abstract_pdf.py +136 -0
  229. endoreg_db/models/data_file/base_classes/abstract_video.py +807 -0
  230. endoreg_db/models/data_file/base_classes/frame_helpers.py +17 -0
  231. endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +19 -0
  232. endoreg_db/models/data_file/base_classes/utils.py +80 -0
  233. endoreg_db/models/data_file/frame.py +29 -0
  234. endoreg_db/models/data_file/import_classes/__init__.py +18 -0
  235. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +35 -0
  236. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -0
  237. endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -0
  238. endoreg_db/models/data_file/import_classes/raw_pdf.py +260 -0
  239. endoreg_db/models/data_file/import_classes/raw_video.py +288 -0
  240. endoreg_db/models/data_file/metadata/__init__.py +13 -0
  241. endoreg_db/models/data_file/metadata/pdf_meta.py +74 -0
  242. endoreg_db/models/data_file/metadata/sensitive_meta.py +290 -0
  243. endoreg_db/models/data_file/metadata/video_meta.py +199 -0
  244. endoreg_db/models/data_file/report_file.py +56 -0
  245. endoreg_db/models/data_file/video/__init__.py +11 -0
  246. endoreg_db/models/data_file/video/import_meta.py +25 -0
  247. endoreg_db/models/data_file/video/video.py +196 -0
  248. endoreg_db/models/data_file/video_segment.py +214 -0
  249. endoreg_db/models/disease.py +79 -0
  250. endoreg_db/models/emission/__init__.py +5 -0
  251. endoreg_db/models/emission/emission_factor.py +85 -0
  252. endoreg_db/models/event.py +73 -0
  253. endoreg_db/models/examination/__init__.py +9 -0
  254. endoreg_db/models/examination/examination.py +67 -0
  255. endoreg_db/models/examination/examination_indication.py +170 -0
  256. endoreg_db/models/examination/examination_time.py +53 -0
  257. endoreg_db/models/examination/examination_time_type.py +48 -0
  258. endoreg_db/models/examination/examination_type.py +40 -0
  259. endoreg_db/models/finding/__init__.py +11 -0
  260. endoreg_db/models/finding/finding.py +75 -0
  261. endoreg_db/models/finding/finding_intervention.py +60 -0
  262. endoreg_db/models/finding/finding_location_classification.py +94 -0
  263. endoreg_db/models/finding/finding_morphology_classification.py +89 -0
  264. endoreg_db/models/finding/finding_type.py +22 -0
  265. endoreg_db/models/hardware/__init__.py +2 -0
  266. endoreg_db/models/hardware/endoscope.py +60 -0
  267. endoreg_db/models/hardware/endoscopy_processor.py +155 -0
  268. endoreg_db/models/information_source.py +29 -0
  269. endoreg_db/models/label/__init__.py +1 -0
  270. endoreg_db/models/label/label.py +112 -0
  271. endoreg_db/models/laboratory/__init__.py +1 -0
  272. endoreg_db/models/laboratory/lab_value.py +111 -0
  273. endoreg_db/models/logging/__init__.py +11 -0
  274. endoreg_db/models/logging/agl_service.py +19 -0
  275. endoreg_db/models/logging/base.py +22 -0
  276. endoreg_db/models/logging/log_type.py +23 -0
  277. endoreg_db/models/logging/network_device.py +27 -0
  278. endoreg_db/models/lx/__init__.py +4 -0
  279. endoreg_db/models/lx/client.py +57 -0
  280. endoreg_db/models/lx/identity.py +34 -0
  281. endoreg_db/models/lx/permission.py +18 -0
  282. endoreg_db/models/lx/user.py +16 -0
  283. endoreg_db/models/medication/__init__.py +19 -0
  284. endoreg_db/models/medication/medication.py +33 -0
  285. endoreg_db/models/medication/medication_indication.py +50 -0
  286. endoreg_db/models/medication/medication_indication_type.py +34 -0
  287. endoreg_db/models/medication/medication_intake_time.py +26 -0
  288. endoreg_db/models/medication/medication_schedule.py +37 -0
  289. endoreg_db/models/network/__init__.py +9 -0
  290. endoreg_db/models/network/agl_service.py +38 -0
  291. endoreg_db/models/network/network_device.py +58 -0
  292. endoreg_db/models/network/network_device_type.py +23 -0
  293. endoreg_db/models/organ/__init__.py +38 -0
  294. endoreg_db/models/other/__init__.py +23 -0
  295. endoreg_db/models/other/distribution/__init__.py +44 -0
  296. endoreg_db/models/other/distribution/base_value_distribution.py +20 -0
  297. endoreg_db/models/other/distribution/date_value_distribution.py +91 -0
  298. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +32 -0
  299. endoreg_db/models/other/distribution/numeric_value_distribution.py +97 -0
  300. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +22 -0
  301. endoreg_db/models/other/distribution.py +5 -0
  302. endoreg_db/models/other/material.py +20 -0
  303. endoreg_db/models/other/resource.py +18 -0
  304. endoreg_db/models/other/transport_route.py +22 -0
  305. endoreg_db/models/other/waste.py +20 -0
  306. endoreg_db/models/patient/__init__.py +24 -0
  307. endoreg_db/models/patient/patient_examination.py +182 -0
  308. endoreg_db/models/patient/patient_finding.py +143 -0
  309. endoreg_db/models/patient/patient_finding_intervention.py +26 -0
  310. endoreg_db/models/patient/patient_finding_location.py +120 -0
  311. endoreg_db/models/patient/patient_finding_morphology.py +166 -0
  312. endoreg_db/models/permissions/__init__.py +44 -0
  313. endoreg_db/models/persons/__init__.py +34 -0
  314. endoreg_db/models/persons/examiner/__init__.py +2 -0
  315. endoreg_db/models/persons/examiner/examiner.py +60 -0
  316. endoreg_db/models/persons/examiner/examiner_type.py +2 -0
  317. endoreg_db/models/persons/first_name.py +18 -0
  318. endoreg_db/models/persons/gender.py +22 -0
  319. endoreg_db/models/persons/last_name.py +20 -0
  320. endoreg_db/models/persons/patient/__init__.py +8 -0
  321. endoreg_db/models/persons/patient/patient.py +389 -0
  322. endoreg_db/models/persons/patient/patient_disease.py +22 -0
  323. endoreg_db/models/persons/patient/patient_event.py +52 -0
  324. endoreg_db/models/persons/patient/patient_examination_indication.py +32 -0
  325. endoreg_db/models/persons/patient/patient_lab_sample.py +108 -0
  326. endoreg_db/models/persons/patient/patient_lab_value.py +197 -0
  327. endoreg_db/models/persons/patient/patient_medication.py +59 -0
  328. endoreg_db/models/persons/patient/patient_medication_schedule.py +88 -0
  329. endoreg_db/models/persons/person.py +31 -0
  330. endoreg_db/models/persons/portal_user_information.py +27 -0
  331. endoreg_db/models/prediction/__init__.py +8 -0
  332. endoreg_db/models/prediction/image_classification.py +51 -0
  333. endoreg_db/models/prediction/video_prediction_meta.py +306 -0
  334. endoreg_db/models/product/__init__.py +14 -0
  335. endoreg_db/models/product/product.py +110 -0
  336. endoreg_db/models/product/product_group.py +27 -0
  337. endoreg_db/models/product/product_material.py +28 -0
  338. endoreg_db/models/product/product_weight.py +38 -0
  339. endoreg_db/models/product/reference_product.py +115 -0
  340. endoreg_db/models/questionnaires/__init__.py +114 -0
  341. endoreg_db/models/quiz/__init__.py +9 -0
  342. endoreg_db/models/quiz/quiz_answer.py +41 -0
  343. endoreg_db/models/quiz/quiz_question.py +54 -0
  344. endoreg_db/models/report_reader/__init__.py +7 -0
  345. endoreg_db/models/report_reader/report_reader_config.py +53 -0
  346. endoreg_db/models/report_reader/report_reader_flag.py +20 -0
  347. endoreg_db/models/rules/__init__.py +5 -0
  348. endoreg_db/models/rules/rule.py +24 -0
  349. endoreg_db/models/rules/rule_applicator.py +224 -0
  350. endoreg_db/models/rules/rule_attribute_dtype.py +19 -0
  351. endoreg_db/models/rules/rule_type.py +22 -0
  352. endoreg_db/models/rules/ruleset.py +19 -0
  353. endoreg_db/models/unit.py +22 -0
  354. endoreg_db/queries/__init__.py +5 -0
  355. endoreg_db/queries/annotations/__init__.py +3 -0
  356. endoreg_db/queries/annotations/legacy.py +158 -0
  357. endoreg_db/queries/get/__init__.py +6 -0
  358. endoreg_db/queries/get/annotation.py +0 -0
  359. endoreg_db/queries/get/center.py +42 -0
  360. endoreg_db/queries/get/model.py +13 -0
  361. endoreg_db/queries/get/patient.py +14 -0
  362. endoreg_db/queries/get/patient_examination.py +20 -0
  363. endoreg_db/queries/get/prediction.py +0 -0
  364. endoreg_db/queries/get/report_file.py +33 -0
  365. endoreg_db/queries/get/video.py +31 -0
  366. endoreg_db/queries/get/video_import_meta.py +0 -0
  367. endoreg_db/queries/get/video_prediction_meta.py +0 -0
  368. endoreg_db/queries/sanity/__init_.py +0 -0
  369. endoreg_db/serializers/__init__.py +10 -0
  370. endoreg_db/serializers/ai_model.py +19 -0
  371. endoreg_db/serializers/annotation.py +14 -0
  372. endoreg_db/serializers/center.py +11 -0
  373. endoreg_db/serializers/examination.py +33 -0
  374. endoreg_db/serializers/frame.py +9 -0
  375. endoreg_db/serializers/hardware.py +21 -0
  376. endoreg_db/serializers/label.py +22 -0
  377. endoreg_db/serializers/patient.py +33 -0
  378. endoreg_db/serializers/prediction.py +10 -0
  379. endoreg_db/serializers/raw_video_meta_validation.py +13 -0
  380. endoreg_db/serializers/report_file.py +7 -0
  381. endoreg_db/serializers/video.py +20 -0
  382. endoreg_db/serializers/video_segmentation.py +492 -0
  383. endoreg_db/templates/admin/patient_finding_intervention.html +253 -0
  384. endoreg_db/templates/admin/start_examination.html +12 -0
  385. endoreg_db/templates/timeline.html +176 -0
  386. endoreg_db/utils/__init__.py +36 -0
  387. endoreg_db/utils/cropping.py +29 -0
  388. endoreg_db/utils/dataloader.py +118 -0
  389. endoreg_db/utils/dates.py +39 -0
  390. endoreg_db/utils/file_operations.py +30 -0
  391. endoreg_db/utils/hashs.py +152 -0
  392. endoreg_db/utils/legacy_ocr.py +201 -0
  393. endoreg_db/utils/names.py +74 -0
  394. endoreg_db/utils/ocr.py +190 -0
  395. endoreg_db/utils/parse_and_generate_yaml.py +46 -0
  396. endoreg_db/utils/pydantic_models/__init__.py +6 -0
  397. endoreg_db/utils/pydantic_models/db_config.py +57 -0
  398. endoreg_db/utils/uuid.py +4 -0
  399. endoreg_db/utils/validate_endo_roi.py +19 -0
  400. endoreg_db/utils/validate_subcategory_dict.py +91 -0
  401. endoreg_db/utils/video/__init__.py +13 -0
  402. endoreg_db/utils/video/extract_frames.py +121 -0
  403. endoreg_db/utils/video/transcode_videofile.py +111 -0
  404. endoreg_db/views/__init__.py +2 -0
  405. endoreg_db/views/csrf.py +7 -0
  406. endoreg_db/views/patient_views.py +90 -0
  407. endoreg_db/views/raw_video_meta_validation_views.py +38 -0
  408. endoreg_db/views/report_views.py +96 -0
  409. endoreg_db/views/video_segmentation_views.py +149 -0
  410. endoreg_db/views/views_for_timeline.py +46 -0
  411. {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info}/METADATA +14 -4
  412. endoreg_db-0.6.2.dist-info/RECORD +420 -0
  413. {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info}/WHEEL +1 -2
  414. endoreg_db-0.6.0.dist-info/RECORD +0 -11
  415. endoreg_db-0.6.0.dist-info/top_level.txt +0 -1
  416. {endoreg_db-0.6.0.dist-info → endoreg_db-0.6.2.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,15 @@
1
+ - fields:
2
+ name: gas
3
+ name_de: Erdgas
4
+ name_en: Gas
5
+ model: endoreg_db.Resource
6
+ - fields:
7
+ name: oil
8
+ name_de: "Heizöl"
9
+ name_en: Oil
10
+ model: endoreg_db.Resource
11
+ - fields:
12
+ name: electricity
13
+ name_de: Strom
14
+ name_en: Electricity
15
+ model: endoreg_db.Resource
File without changes
File without changes
@@ -0,0 +1,12 @@
1
+ - fields:
2
+ distance: 1000
3
+ emission_factor: transport_product_emission_generic_europe
4
+ name: generic_europe
5
+ unit: kilometer
6
+ model: endoreg_db.TransportRoute
7
+ - fields:
8
+ distance: 10000
9
+ emission_factor: transport_product_emission_generic_overseas
10
+ name: generic_overseas
11
+ unit: kilometer
12
+ model: endoreg_db.TransportRoute
@@ -0,0 +1,92 @@
1
+ # g / l and equivalents; ascending by gram, then ascending by liter
2
+ - model: endoreg_db.unit
3
+ fields:
4
+ name: "picogram per mililiter"
5
+ name_de: "Pikogramm pro Mililiter"
6
+ name_en: "picogram per mililiter"
7
+ abbreviation: "pg/ml"
8
+
9
+
10
+ - model: endoreg_db.unit
11
+ fields:
12
+ name: "nanogram per mililiter"
13
+ name_de: "Nanogramm pro Mililiter"
14
+ name_en: "nanogram per mililiter"
15
+ abbreviation: "ng/ml"
16
+
17
+ - model: endoreg_db.unit
18
+ fields:
19
+ name: "nanogram per deciliter"
20
+ name_de: "Nanogramm pro Deziliter"
21
+ name_en: "nanogram per deciliter"
22
+
23
+ - model: endoreg_db.unit
24
+ fields:
25
+ name: "microgram per mililiter"
26
+ name_de: "Microgramm pro Mililiter"
27
+ name_en: "microgram per mililiter"
28
+ abbreviation: "µg/ml"
29
+
30
+ - model: endoreg_db.Unit
31
+ fields:
32
+ name: "microgram per deciliter"
33
+ abbreviation: "µg/dL"
34
+ name_de: "Mikrogramm pro Deziliter"
35
+ name_en: "microgram per deciliter"
36
+ description: "Micrograms per deciliter, a unit of measurement for concentration."
37
+
38
+ - model: endoreg_db.unit
39
+ fields:
40
+ name: "gram per deciliter"
41
+ name_de: "Gramm pro Deziliter"
42
+ name_en: "gram per deciliter"
43
+
44
+
45
+ # mol / l
46
+ - model: endoreg_db.Unit
47
+ fields:
48
+ name: "milimole per liter"
49
+ abbreviation: "mmol/L"
50
+ name_de: "milimol pro Liter"
51
+ name_en: "milimole per liter"
52
+ description: "milimoles per liter, a unit of measurement for concentration in blood."
53
+
54
+ - model: endoreg_db.Unit
55
+ fields:
56
+ name: "miliequivalent per liter"
57
+ abbreviation: "mEq/L"
58
+ name_de: "miliäquivalent pro Liter"
59
+ name_en: "miliequivalent per liter"
60
+ description: "miliequivalents per liter, used for electrolytes concentration."
61
+
62
+ - model: endoreg_db.Unit
63
+ fields:
64
+ name: "miligram per deciliter"
65
+ abbreviation: "mg/dL"
66
+ name_de: "miligramm pro Deziliter"
67
+ name_en: "miligram per deciliter"
68
+ description: "miligrams per deciliter, commonly used for various blood measurements."
69
+
70
+ # x 10^9 per liter
71
+ - model: endoreg_db.Unit
72
+ fields:
73
+ name: "x 10^9 per liter"
74
+ abbreviation: "x 10^9/L"
75
+ name_de: "x 10^9 pro Liter"
76
+ name_en: "x 10^9 per liter"
77
+ description: "Number of cells per liter, often used for blood cell counts."
78
+
79
+ # U / l
80
+ - model: endoreg_db.unit
81
+ fields:
82
+ name: "units per liter"
83
+ name_de: "Units pro Liter"
84
+ name_en: "units per liter"
85
+ abbreviation: "U/l"
86
+
87
+ - model: endoreg_db.unit
88
+ fields:
89
+ name: "microinternational units per mililiter"
90
+ name_de: "Mikro-Internationale Einheiten pro Mililiter"
91
+ name_en: "micro-international units per mililiter"
92
+ abbreviation: "µU/ml"
@@ -0,0 +1,17 @@
1
+ - model: endoreg_db.Unit
2
+ fields:
3
+ name: "liters-per-minute"
4
+ abbreviation: "l/min"
5
+ name_de: "Liter pro Minute"
6
+ name_en: "Liters per Minute"
7
+ description: "liters per minute"
8
+
9
+
10
+ # kilowatt-hours
11
+ - model: endoreg_db.Unit
12
+ fields:
13
+ name: "kilowatt-hours"
14
+ abbreviation: "kWh"
15
+ name_de: "Kilowattstunden"
16
+ name_en: "Kilowatt-hours"
17
+ description: "kilowatt-hours"
@@ -0,0 +1,31 @@
1
+ - model: endoreg_db.Unit
2
+ fields:
3
+ name: "milimeter"
4
+ abbreviation: "mm"
5
+ name_de: "milimeter"
6
+ name_en: "milimeter"
7
+ description: "milimeters"
8
+
9
+ - model: endoreg_db.Unit
10
+ fields:
11
+ name: "centimeter"
12
+ abbreviation: "cm"
13
+ name_de: "Zentimeter"
14
+ name_en: "Centimeter"
15
+ description: "centimeters"
16
+
17
+ - model: endoreg_db.Unit
18
+ fields:
19
+ name: "meter"
20
+ abbreviation: "m"
21
+ name_de: "Meter"
22
+ name_en: "Meter"
23
+ description: "meters"
24
+
25
+ - model: endoreg_db.Unit
26
+ fields:
27
+ name: "kilometer"
28
+ abbreviation: "km"
29
+ name_de: "Kilometer"
30
+ name_en: "Kilometer"
31
+ description: "kilometers"
@@ -0,0 +1,20 @@
1
+ - model: endoreg_db.unit
2
+ fields:
3
+ name: "percent"
4
+ abbreviation: "%"
5
+ name_de: "Prozent"
6
+ name_en: "percent"
7
+
8
+ - model: endoreg_db.unit
9
+ fields:
10
+ name: "ratio"
11
+ abbreviation: ""
12
+ name_de: "Ratio"
13
+ name_en: "ratio"
14
+
15
+ - model: endoreg_db.unit
16
+ fields:
17
+ name: "dose"
18
+ name_de: "Dosierung(en)"
19
+ name_en: "dose(s)"
20
+ abbreviation: ""
@@ -0,0 +1,6 @@
1
+ - model: endoreg_db.unit
2
+ fields:
3
+ name: "mililiter per minute per 1.73m^2"
4
+ name_de: "ml/min/1.73m²"
5
+ name_en: "ml/min/1.73m²"
6
+ abbreviation: "ml/min/1.73m²"
@@ -0,0 +1,13 @@
1
+ - model: endoreg_db.unit
2
+ fields:
3
+ name: "seconds"
4
+ abbreviation: "s"
5
+ name_de: "Sekunden"
6
+ name_en: "Sekunden"
7
+
8
+ - model: endoreg_db.unit
9
+ fields:
10
+ name: "minutes"
11
+ abbreviation: "min"
12
+ name_de: "Minuten"
13
+ name_en: "Minutes"
@@ -0,0 +1,35 @@
1
+ # Units/data.yaml
2
+
3
+ # femptolitre
4
+ - model: endoreg_db.Unit
5
+ fields:
6
+ name: "femtoliter"
7
+ abbreviation: "fl"
8
+ name_de: "Femtoliter"
9
+ name_en: "Femtolitre"
10
+ description: "femtoliters"
11
+
12
+ - model: endoreg_db.Unit
13
+ fields:
14
+ name: "mililiter"
15
+ abbreviation: "ml"
16
+ name_de: "mililiter"
17
+ name_en: "mililiter"
18
+ description: "mililiters"
19
+
20
+ - model: endoreg_db.Unit
21
+ fields:
22
+ name: "liter"
23
+ abbreviation: "l"
24
+ name_de: "Liter"
25
+ name_en: "Liter"
26
+ description: "liters"
27
+
28
+ # cubic_meter
29
+ - model: endoreg_db.Unit
30
+ fields:
31
+ name: "cubic_meter"
32
+ abbreviation: "m³"
33
+ name_de: "Kubikmeter"
34
+ name_en: "Cubic Meter"
35
+ description: "cubic meters"
@@ -0,0 +1,38 @@
1
+ - model: endoreg_db.unit
2
+ fields:
3
+ name: "picogram"
4
+ abbreviation: "pg"
5
+ name_de: "Picogramm"
6
+ name_en: "Picogram"
7
+
8
+ - model: endoreg_db.Unit
9
+ fields:
10
+ name: "microgram"
11
+ abbreviation: "µg"
12
+ name_de: "Mikrogramm"
13
+ name_en: "Microgram"
14
+ description: "micrograms"
15
+
16
+ - model: endoreg_db.Unit
17
+ fields:
18
+ name: "miligram"
19
+ abbreviation: "mg"
20
+ name_de: "miligramm"
21
+ name_en: "miligram"
22
+ description: "miligrams"
23
+
24
+ - model: endoreg_db.Unit
25
+ fields:
26
+ name: "gram"
27
+ abbreviation: "g"
28
+ name_de: "Gramm"
29
+ name_en: "Gram"
30
+ description: "grams"
31
+
32
+ - model: endoreg_db.Unit
33
+ fields:
34
+ name: "kilogram"
35
+ abbreviation: "kg"
36
+ name_de: "Kilogramm"
37
+ name_en: "Kilogram"
38
+ description: "kilograms"
@@ -0,0 +1,12 @@
1
+ - model: endoreg_db.Waste
2
+ fields:
3
+ name: general_waste
4
+ name_de: Allgemeiner Abfall
5
+ name_en: General Waste
6
+
7
+ - model: endoreg_db.Waste
8
+ fields:
9
+ name: medical_waste
10
+ name_de: Medizinischer Abfall
11
+ name_en: Medical Waste
12
+
@@ -0,0 +1,5 @@
1
+ from .unit import Unit
2
+ from .settings import ActiveModelForm
3
+ from .questionnaires import *
4
+ from .patient_form import PatientForm
5
+
@@ -0,0 +1,11 @@
1
+ from django import forms
2
+ from endoreg_db.models.examination.examination import Examination
3
+
4
+ class ExaminationForm(forms.ModelForm):
5
+ class Meta:
6
+ model = Examination
7
+ fields = '__all__'
8
+ widgets = {
9
+ 'date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
10
+ 'time': forms.TimeInput(attrs={'type': 'time', 'class': 'form-control'}),
11
+ }
@@ -0,0 +1,19 @@
1
+ from django import forms
2
+ from endoreg_db.models import (
3
+ Patient, PatientExamination, Finding,
4
+ FindingLocationClassification, FindingMorphologyClassification,
5
+ FindingIntervention, PatientFindingIntervention
6
+ )
7
+
8
+ class PatientFindingInterventionForm(forms.ModelForm):
9
+ patient = forms.ModelChoiceField(queryset=Patient.objects.all(), required=True)
10
+ examination = forms.ModelChoiceField(queryset=PatientExamination.objects.none(), required=True)
11
+ finding = forms.ModelChoiceField(queryset=Finding.objects.none(), required=True)
12
+ location = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
13
+ location_choice = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
14
+ morphology = forms.ModelChoiceField(queryset=FindingMorphologyClassification.objects.none(), required=True)
15
+ interventions = forms.ModelMultipleChoiceField(queryset=FindingIntervention.objects.none(), widget=forms.CheckboxSelectMultiple, required=True)
16
+
17
+ class Meta:
18
+ model = PatientFindingIntervention
19
+ fields = ["patient", "examination", "finding", "location", "location_choice", "morphology", "interventions"]
@@ -0,0 +1,26 @@
1
+ from django import forms
2
+ from django.forms import ModelForm, Select
3
+ from endoreg_db.models.persons.patient.patient import Patient
4
+ from django import forms
5
+ from django.forms import ModelForm, Select
6
+ from endoreg_db.models.persons.patient.patient import Patient
7
+ from endoreg_db.models.persons.gender import Gender
8
+ from endoreg_db.models.center import Center
9
+ class PatientForm(ModelForm):
10
+ gender = forms.ModelChoiceField(
11
+ queryset=Gender.objects.all(),
12
+ empty_label="Select Gender",
13
+ widget=Select(attrs={'class': 'form-control'})
14
+ )
15
+ center = forms.ModelChoiceField(
16
+ queryset=Center.objects.all(),
17
+ empty_label="Select Center",
18
+ widget=Select(attrs={'class': 'form-control'})
19
+ )
20
+
21
+ class Meta:
22
+ model = Patient
23
+ fields = '__all__'
24
+ widgets = {
25
+ 'dob': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
26
+ }
@@ -0,0 +1 @@
1
+ from .tto_questionnaire import TtoQuestionnaireForm, TtoQuestionnaireCreate
@@ -0,0 +1,23 @@
1
+ # Path: endoreg_db/forms/questionnaires/tto_questionnaire.py
2
+ from endoreg_db.models import TtoQuestionnaire
3
+ from django import forms
4
+
5
+ class TtoQuestionnaireForm(forms.ModelForm):
6
+ class Meta:
7
+ model = TtoQuestionnaire
8
+ fields = '__all__'
9
+ widgets = {
10
+ # Specify Bootstrap classes for other fields as needed
11
+ 'patient_name': forms.TextInput(attrs={'class': 'form-control'}),
12
+ 'birth_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
13
+ # You can continue to specify widgets for other fields
14
+ }
15
+
16
+
17
+ from django.views.generic.edit import CreateView
18
+ from django.urls import reverse_lazy
19
+
20
+ class TtoQuestionnaireCreate(CreateView):
21
+ model = TtoQuestionnaire
22
+ form_class = TtoQuestionnaireForm
23
+ success_url = reverse_lazy('questionnaire_success') # Redirect to a success page after submission
@@ -0,0 +1,8 @@
1
+ # forms.py
2
+ from django import forms
3
+ from endoreg_db.models import ActiveModel
4
+
5
+ class ActiveModelForm(forms.ModelForm):
6
+ class Meta:
7
+ model = ActiveModel
8
+ fields = ["model_meta"] # Or list the specific fields you want to include in the form.
@@ -0,0 +1,6 @@
1
+ from django import forms
2
+ from ..models import Unit
3
+
4
+ class UnitForm(forms.Form):
5
+ class Meta:
6
+ model = Unit
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ from django.conf import settings
2
+ from django.core.management.base import BaseCommand
3
+ from reports.models import Intervention, InterventionType # Replace 'your_app_name' with the actual app name
4
+ import os
5
+ from reports.dataloader_utils import load_model_data
6
+
7
+ SOURCE_DIR = None # e.g. settings.DATA_DIR_INTERVENTION
8
+
9
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
10
+ ]
11
+
12
+ IMPORT_METADATA = {
13
+ # "": { # same as model name in "import models", e.g. "Intervention"
14
+ # "dir": os.path.join(SOURCE_DIR,""), # e.g. "interventions"
15
+ # "model": None, # e.g. Intervention
16
+ # "foreign_keys": [], # e.g. ["intervention_types"]
17
+ # "foreign_key_models": [] # e.g. [InterventionType]
18
+ # },
19
+ }
20
+
21
+ class Command(BaseCommand):
22
+ help = """Load all .yaml files in the data/intervention directory
23
+ into the Intervention and InterventionType model"""
24
+
25
+ def add_arguments(self, parser):
26
+ parser.add_argument(
27
+ '--verbose',
28
+ action='store_true',
29
+ help='Display verbose output',
30
+ )
31
+
32
+ def handle(self, *args, **options):
33
+ verbose = options['verbose']
34
+ for model_name in IMPORT_MODELS:
35
+ _metadata = IMPORT_METADATA[model_name]
36
+ load_model_data(
37
+ self,
38
+ model_name,
39
+ _metadata,
40
+ verbose
41
+ )
@@ -0,0 +1,18 @@
1
+ from django.core.management.base import BaseCommand
2
+ from django.apps import apps
3
+ from django.db import transaction
4
+
5
+ class Command(BaseCommand):
6
+ help = 'Deletes all objects from all models in the "endoreg_db" app.'
7
+
8
+ def handle(self, *args, **options):
9
+ app_models = apps.get_models()
10
+ app_models = [model for model in app_models if "endoreg_db" in model._meta.app_label] # Filter models by the "endoreg_db" app
11
+ for model in app_models:
12
+ with transaction.atomic(): # Use a separate transaction for each model
13
+ try:
14
+ model.objects.all().delete()
15
+ self.stdout.write(self.style.SUCCESS(f'Successfully deleted all objects in {model._meta.db_table}'))
16
+ except Exception as e:
17
+ # This catches exceptions and continues with the next model
18
+ self.stdout.write(self.style.ERROR(f'Error deleting objects in {model._meta.db_table}: {e}'))
@@ -0,0 +1,32 @@
1
+ # command to fetch the legacy dataset and save it to a json file.
2
+ from django.core.management.base import BaseCommand, CommandError
3
+ from endoreg_db.queries import generate_legacy_dataset_output
4
+ import json
5
+
6
+ LABELSET_NAME = "multilabel_classification"
7
+ LABELSET_VERSION = 0
8
+
9
+ class Command(BaseCommand):
10
+ help = 'Fetches the legacy dataset and saves it to a jsonl file'
11
+
12
+ def handle(self, *args, **options):
13
+ output, labelset = generate_legacy_dataset_output(LABELSET_NAME, LABELSET_VERSION)
14
+ # output is a list of dicts, each dict is an image
15
+ labels_in_order = labelset.get_labels_in_order()
16
+
17
+ # write to file
18
+ with open('legacy_dataset.jsonl', 'w') as f:
19
+ for img_dict in output:
20
+ f.write(json.dumps(img_dict) + '\n')
21
+
22
+
23
+ _dict = {
24
+ "labels": [label.name for label in labels_in_order],
25
+ "name": LABELSET_NAME,
26
+ "version": LABELSET_VERSION
27
+ }
28
+
29
+ with open('legacy_dataset_info.json', 'w') as f:
30
+ f.write(json.dumps(_dict))
31
+
32
+ self.stdout.write(self.style.SUCCESS('Successfully fetched and saved the legacy dataset'))
@@ -0,0 +1,20 @@
1
+ from django.core.management.base import BaseCommand
2
+ from django.contrib.auth.models import Permission
3
+ from django.contrib.contenttypes.models import ContentType
4
+ from django.apps import apps
5
+
6
+ class Command(BaseCommand):
7
+ help = 'Sets up default permissions for each model in the app.'
8
+
9
+ def handle(self, *args, **options):
10
+ for model in apps.get_models():
11
+ content_type = ContentType.objects.get_for_model(model)
12
+ permissions = ['view', 'add', 'change', 'delete']
13
+ for perm in permissions:
14
+ codename = f'{perm}_{model._meta.model_name}'
15
+ name = f'Can {perm} {model._meta.verbose_name}'
16
+ Permission.objects.get_or_create(
17
+ codename=codename,
18
+ defaults={'name': name, 'content_type': content_type},
19
+ )
20
+ self.stdout.write(self.style.SUCCESS(f'Set up permissions for {model._meta.verbose_name}'))
@@ -0,0 +1,45 @@
1
+ from django.conf import settings
2
+ import os
3
+ from django.core.management.base import BaseCommand
4
+ from ...models import ActiveModel
5
+ from ...utils import load_model_data_from_yaml
6
+ from ...data import ACTIVE_MODEL_DATA_DIR
7
+
8
+ SOURCE_DIR = ACTIVE_MODEL_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
9
+
10
+ MODEL_0 = ActiveModel
11
+
12
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
13
+ MODEL_0.__name__,
14
+ ]
15
+
16
+ IMPORT_METADATA = {
17
+ MODEL_0.__name__: {
18
+ "dir": SOURCE_DIR, # e.g. "interventions"
19
+ "model": MODEL_0, # e.g. Intervention
20
+ "foreign_keys": [], # e.g. ["intervention_types"]
21
+ "foreign_key_models": [] # e.g. [InterventionType]
22
+ }
23
+ }
24
+
25
+ class Command(BaseCommand):
26
+ help = """Load all .yaml files in the data/intervention directory
27
+ into the Intervention and InterventionType model"""
28
+
29
+ def add_arguments(self, parser):
30
+ parser.add_argument(
31
+ '--verbose',
32
+ action='store_true',
33
+ help='Display verbose output',
34
+ )
35
+
36
+ def handle(self, *args, **options):
37
+ verbose = options['verbose']
38
+ for model_name in IMPORT_MODELS:
39
+ _metadata = IMPORT_METADATA[model_name]
40
+ load_model_data_from_yaml(
41
+ self,
42
+ model_name,
43
+ _metadata,
44
+ verbose
45
+ )
@@ -0,0 +1,79 @@
1
+ from django.conf import settings
2
+ import os
3
+ from django.core.management.base import BaseCommand
4
+ from ...models import (
5
+ ModelMeta,
6
+ ModelType,
7
+ LabelSet,
8
+ VideoSegmentationLabel,
9
+ VideoSegmentationLabelSet,
10
+ AiModel,
11
+ )
12
+ from ...utils import load_model_data_from_yaml
13
+ from ...data import (
14
+ MODEL_TYPE_DATA_DIR,
15
+ VIDEO_SEGMENTATION_LABEL_DATA_DIR,
16
+ VIDEO_SEGMENTATION_LABELSET_DATA_DIR,
17
+ AI_MODEL_DATA_DIR,
18
+ AI_MODEL_META_DATA_DIR,
19
+ )
20
+
21
+
22
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
23
+ ModelType.__name__,
24
+ # ModelMeta.__name__,
25
+ VideoSegmentationLabel.__name__,
26
+ VideoSegmentationLabelSet.__name__,
27
+ AiModel.__name__,
28
+ ]
29
+
30
+ IMPORT_METADATA = {
31
+ ModelType.__name__: {
32
+ "dir": MODEL_TYPE_DATA_DIR, # e.g. "intervention_types"
33
+ "model": ModelType, # e.g. InterventionType
34
+ "foreign_keys": [], # e.g. ["interventions"]
35
+ "foreign_key_models": [], # e.g. [Intervention]
36
+ },
37
+ # ModelMeta.__name__: {
38
+ # "dir": AI_MODEL_META_DATA_DIR, # e.g. "intervention_types"
39
+ # "model": ModelMeta, # e.g. InterventionType
40
+ # "foreign_keys": ["labelset", "type"], # e.g. ["interventions"]
41
+ # "foreign_key_models": [LabelSet, ModelType], # e.g. [Intervention]
42
+ # },
43
+ VideoSegmentationLabel.__name__: {
44
+ "dir": VIDEO_SEGMENTATION_LABEL_DATA_DIR, # e.g. "interventions"
45
+ "model": VideoSegmentationLabel, # e.g. Intervention
46
+ "foreign_keys": [], # e.g. ["intervention_types"]
47
+ "foreign_key_models": [], # e.g. [InterventionType]
48
+ },
49
+ VideoSegmentationLabelSet.__name__: {
50
+ "dir": VIDEO_SEGMENTATION_LABELSET_DATA_DIR, # e.g. "interventions"
51
+ "model": VideoSegmentationLabelSet, # e.g. Intervention
52
+ "foreign_keys": ["labels"], # e.g. ["intervention_types"]
53
+ "foreign_key_models": [VideoSegmentationLabel], # e.g. [Intervention]
54
+ },
55
+ AiModel.__name__: {
56
+ "dir": AI_MODEL_DATA_DIR, # e.g. "intervention_types"
57
+ "model": AiModel, # e.g. InterventionType
58
+ "foreign_keys": ["video_segmentation_labelset"], # e.g. ["interventions"]
59
+ "foreign_key_models": [VideoSegmentationLabelSet], # e.g. [Intervention]
60
+ },
61
+ }
62
+
63
+
64
+ class Command(BaseCommand):
65
+ help = """Load all .yaml files in the data/intervention directory
66
+ into the Intervention and InterventionType model"""
67
+
68
+ def add_arguments(self, parser):
69
+ parser.add_argument(
70
+ "--verbose",
71
+ action="store_true",
72
+ help="Display verbose output",
73
+ )
74
+
75
+ def handle(self, *args, **options):
76
+ verbose = options["verbose"]
77
+ for model_name in IMPORT_MODELS:
78
+ _metadata = IMPORT_METADATA[model_name]
79
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)