endoreg-db 0.5.2__py3-none-any.whl → 0.6.0__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 (320) hide show
  1. endoreg_db/admin.py +90 -1
  2. endoreg_db/urls.py +173 -0
  3. endoreg_db/views.py +0 -3
  4. endoreg_db-0.6.0.dist-info/METADATA +151 -0
  5. endoreg_db-0.6.0.dist-info/RECORD +11 -0
  6. {endoreg_db-0.5.2.dist-info → endoreg_db-0.6.0.dist-info}/WHEEL +2 -1
  7. endoreg_db-0.6.0.dist-info/top_level.txt +1 -0
  8. endoreg_db/data/__init__.py +0 -72
  9. endoreg_db/data/active_model/data.yaml +0 -3
  10. endoreg_db/data/agl_service/data.yaml +0 -19
  11. endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +0 -167
  12. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +0 -8
  13. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +0 -9
  14. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +0 -23
  15. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +0 -19
  16. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +0 -19
  17. endoreg_db/data/case_template/rule/19_create_patient.yaml +0 -17
  18. endoreg_db/data/case_template/rule_type/base_types.yaml +0 -35
  19. endoreg_db/data/case_template/rule_value/.init +0 -0
  20. endoreg_db/data/case_template/rule_value_type/base_types.yaml +0 -59
  21. endoreg_db/data/case_template/template/base.yaml +0 -8
  22. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +0 -3
  23. endoreg_db/data/case_template/tmp/_rule_value +0 -13
  24. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +0 -21
  25. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +0 -10
  26. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +0 -7
  27. endoreg_db/data/center/data.yaml +0 -60
  28. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +0 -144
  29. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +0 -48
  30. endoreg_db/data/disease/cardiovascular.yaml +0 -37
  31. endoreg_db/data/disease/hepatology.yaml +0 -5
  32. endoreg_db/data/disease/misc.yaml +0 -6
  33. endoreg_db/data/disease/renal.yaml +0 -5
  34. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +0 -6
  35. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +0 -6
  36. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +0 -41
  37. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +0 -20
  38. endoreg_db/data/distribution/date/patient.yaml +0 -7
  39. endoreg_db/data/distribution/multiple_categorical/.init +0 -0
  40. endoreg_db/data/distribution/numeric/.init +0 -0
  41. endoreg_db/data/distribution/single_categorical/patient.yaml +0 -7
  42. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +0 -132
  43. endoreg_db/data/endoscope_type/data.yaml +0 -11
  44. endoreg_db/data/endoscopy_processor/data.yaml +0 -47
  45. endoreg_db/data/event/cardiology.yaml +0 -28
  46. endoreg_db/data/event/neurology.yaml +0 -14
  47. endoreg_db/data/event/surgery.yaml +0 -13
  48. endoreg_db/data/event/thrombembolism.yaml +0 -20
  49. endoreg_db/data/examination/examinations/data.yaml +0 -66
  50. endoreg_db/data/examination/time/data.yaml +0 -48
  51. endoreg_db/data/examination/time-type/data.yaml +0 -8
  52. endoreg_db/data/examination/type/data.yaml +0 -5
  53. endoreg_db/data/gender/data.yaml +0 -18
  54. endoreg_db/data/information_source/data.yaml +0 -30
  55. endoreg_db/data/information_source/medication.yaml +0 -6
  56. endoreg_db/data/lab_value/cardiac_enzymes.yaml +0 -31
  57. endoreg_db/data/lab_value/coagulation.yaml +0 -49
  58. endoreg_db/data/lab_value/electrolytes.yaml +0 -190
  59. endoreg_db/data/lab_value/gastrointestinal_function.yaml +0 -121
  60. endoreg_db/data/lab_value/hematology.yaml +0 -169
  61. endoreg_db/data/lab_value/hormones.yaml +0 -53
  62. endoreg_db/data/lab_value/lipids.yaml +0 -44
  63. endoreg_db/data/lab_value/misc.yaml +0 -30
  64. endoreg_db/data/lab_value/renal_function.yaml +0 -11
  65. endoreg_db/data/label/label/data.yaml +0 -62
  66. endoreg_db/data/label/label-set/data.yaml +0 -18
  67. endoreg_db/data/label/label-type/data.yaml +0 -7
  68. endoreg_db/data/log_type/data.yaml +0 -57
  69. endoreg_db/data/material/material.yaml +0 -91
  70. endoreg_db/data/medication/anticoagulation.yaml +0 -65
  71. endoreg_db/data/medication/tah.yaml +0 -70
  72. endoreg_db/data/medication_indication/anticoagulation.yaml +0 -120
  73. endoreg_db/data/medication_indication_type/data.yaml +0 -11
  74. endoreg_db/data/medication_indication_type/thrombembolism.yaml +0 -41
  75. endoreg_db/data/medication_intake_time/base.yaml +0 -31
  76. endoreg_db/data/medication_schedule/apixaban.yaml +0 -95
  77. endoreg_db/data/medication_schedule/ass.yaml +0 -12
  78. endoreg_db/data/medication_schedule/enoxaparin.yaml +0 -26
  79. endoreg_db/data/model_type/data.yaml +0 -7
  80. endoreg_db/data/network_device/data.yaml +0 -29
  81. endoreg_db/data/network_device_type/data.yaml +0 -12
  82. endoreg_db/data/patient_lab_sample_type/generic.yaml +0 -6
  83. endoreg_db/data/pdf_type/data.yaml +0 -28
  84. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +0 -66
  85. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +0 -33
  86. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +0 -308
  87. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +0 -88
  88. endoreg_db/data/profession/data.yaml +0 -70
  89. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +0 -55
  90. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +0 -26
  91. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +0 -19
  92. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +0 -15
  93. endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
  94. endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
  95. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +0 -12
  96. endoreg_db/data/unit/concentration.yaml +0 -92
  97. endoreg_db/data/unit/data.yaml +0 -17
  98. endoreg_db/data/unit/length.yaml +0 -31
  99. endoreg_db/data/unit/misc.yaml +0 -20
  100. endoreg_db/data/unit/rate.yaml +0 -6
  101. endoreg_db/data/unit/time.yaml +0 -13
  102. endoreg_db/data/unit/volume.yaml +0 -35
  103. endoreg_db/data/unit/weight.yaml +0 -38
  104. endoreg_db/data/waste/data.yaml +0 -12
  105. endoreg_db/forms/__init__.py +0 -3
  106. endoreg_db/forms/questionnaires/__init__.py +0 -1
  107. endoreg_db/forms/questionnaires/tto_questionnaire.py +0 -23
  108. endoreg_db/forms/settings/__init__.py +0 -8
  109. endoreg_db/forms/unit.py +0 -6
  110. endoreg_db/management/commands/_load_model_template.py +0 -41
  111. endoreg_db/management/commands/delete_all.py +0 -18
  112. endoreg_db/management/commands/delete_legacy_images.py +0 -19
  113. endoreg_db/management/commands/delete_legacy_videos.py +0 -17
  114. endoreg_db/management/commands/extract_legacy_video_frames.py +0 -18
  115. endoreg_db/management/commands/fetch_legacy_image_dataset.py +0 -32
  116. endoreg_db/management/commands/fix_auth_permission.py +0 -20
  117. endoreg_db/management/commands/import_legacy_images.py +0 -94
  118. endoreg_db/management/commands/import_legacy_videos.py +0 -76
  119. endoreg_db/management/commands/load_active_model_data.py +0 -45
  120. endoreg_db/management/commands/load_ai_model_data.py +0 -45
  121. endoreg_db/management/commands/load_base_db_data.py +0 -136
  122. endoreg_db/management/commands/load_center_data.py +0 -43
  123. endoreg_db/management/commands/load_disease_classification_choices_data.py +0 -41
  124. endoreg_db/management/commands/load_disease_classification_data.py +0 -41
  125. endoreg_db/management/commands/load_disease_data.py +0 -40
  126. endoreg_db/management/commands/load_distribution_data.py +0 -66
  127. endoreg_db/management/commands/load_endoscope_type_data.py +0 -45
  128. endoreg_db/management/commands/load_endoscopy_processor_data.py +0 -45
  129. endoreg_db/management/commands/load_event_data.py +0 -41
  130. endoreg_db/management/commands/load_examination_data.py +0 -75
  131. endoreg_db/management/commands/load_g_play_data.py +0 -113
  132. endoreg_db/management/commands/load_gender_data.py +0 -44
  133. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +0 -133
  134. endoreg_db/management/commands/load_information_source.py +0 -45
  135. endoreg_db/management/commands/load_lab_value_data.py +0 -50
  136. endoreg_db/management/commands/load_label_data.py +0 -67
  137. endoreg_db/management/commands/load_logging_data.py +0 -39
  138. endoreg_db/management/commands/load_medication_data.py +0 -41
  139. endoreg_db/management/commands/load_medication_indication_data.py +0 -63
  140. endoreg_db/management/commands/load_medication_indication_type_data.py +0 -41
  141. endoreg_db/management/commands/load_medication_intake_time_data.py +0 -41
  142. endoreg_db/management/commands/load_medication_schedule_data.py +0 -55
  143. endoreg_db/management/commands/load_network_data.py +0 -57
  144. endoreg_db/management/commands/load_pdf_type_data.py +0 -61
  145. endoreg_db/management/commands/load_profession_data.py +0 -44
  146. endoreg_db/management/commands/load_report_reader_flag.py +0 -46
  147. endoreg_db/management/commands/load_unit_data.py +0 -46
  148. endoreg_db/management/commands/load_user_groups.py +0 -28
  149. endoreg_db/management/commands/register_ai_model.py +0 -64
  150. endoreg_db/management/commands/reset_celery_schedule.py +0 -9
  151. endoreg_db/migrations/0001_initial.py +0 -1567
  152. endoreg_db/migrations/0002_anonymizedimagelabel_anonymousimageannotation_and_more.py +0 -55
  153. endoreg_db/migrations/0003_anonymousimageannotation_original_image_url_and_more.py +0 -39
  154. endoreg_db/migrations/0004_alter_rawpdffile_file.py +0 -20
  155. endoreg_db/migrations/0005_uploadedfile_alter_rawpdffile_file_anonymizedfile.py +0 -40
  156. endoreg_db/migrations/0006_alter_rawpdffile_file.py +0 -20
  157. endoreg_db/migrations/0007_networkdevicelogentry_datetime_and_more.py +0 -43
  158. endoreg_db/migrations/0008_networkdevicelogentry_aglnet_ip_and_more.py +0 -28
  159. endoreg_db/migrations/0009_alter_networkdevicelogentry_vpn_service_status.py +0 -18
  160. endoreg_db/migrations/0010_remove_networkdevicelogentry_hostname.py +0 -17
  161. endoreg_db/migrations/__init__.py +0 -0
  162. endoreg_db/models/__init__.py +0 -73
  163. endoreg_db/models/ai_model/__init__.py +0 -3
  164. endoreg_db/models/ai_model/active_model.py +0 -9
  165. endoreg_db/models/ai_model/model_meta.py +0 -24
  166. endoreg_db/models/ai_model/model_type.py +0 -26
  167. endoreg_db/models/ai_model/utils.py +0 -8
  168. endoreg_db/models/annotation/__init__.py +0 -3
  169. endoreg_db/models/annotation/anonymized_image_annotation.py +0 -60
  170. endoreg_db/models/annotation/binary_classification_annotation_task.py +0 -80
  171. endoreg_db/models/annotation/image_classification.py +0 -27
  172. endoreg_db/models/case_template/__init__.py +0 -6
  173. endoreg_db/models/case_template/case_template.py +0 -81
  174. endoreg_db/models/case_template/case_template_rule.py +0 -276
  175. endoreg_db/models/case_template/case_template_rule_value.py +0 -73
  176. endoreg_db/models/case_template/case_template_type.py +0 -28
  177. endoreg_db/models/center/__init__.py +0 -4
  178. endoreg_db/models/center/center.py +0 -25
  179. endoreg_db/models/center/center_product.py +0 -34
  180. endoreg_db/models/center/center_resource.py +0 -19
  181. endoreg_db/models/center/center_waste.py +0 -11
  182. endoreg_db/models/data_file/__init__.py +0 -6
  183. endoreg_db/models/data_file/base_classes/__init__.py +0 -2
  184. endoreg_db/models/data_file/base_classes/abstract_frame.py +0 -51
  185. endoreg_db/models/data_file/base_classes/abstract_video.py +0 -201
  186. endoreg_db/models/data_file/frame.py +0 -45
  187. endoreg_db/models/data_file/import_classes/__init__.py +0 -32
  188. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +0 -35
  189. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +0 -28
  190. endoreg_db/models/data_file/import_classes/processing_functions/video.py +0 -260
  191. endoreg_db/models/data_file/import_classes/raw_pdf.py +0 -188
  192. endoreg_db/models/data_file/import_classes/raw_video.py +0 -343
  193. endoreg_db/models/data_file/metadata/__init__.py +0 -3
  194. endoreg_db/models/data_file/metadata/pdf_meta.py +0 -70
  195. endoreg_db/models/data_file/metadata/sensitive_meta.py +0 -31
  196. endoreg_db/models/data_file/metadata/video_meta.py +0 -133
  197. endoreg_db/models/data_file/report_file.py +0 -89
  198. endoreg_db/models/data_file/video/__init__.py +0 -7
  199. endoreg_db/models/data_file/video/import_meta.py +0 -25
  200. endoreg_db/models/data_file/video/video.py +0 -25
  201. endoreg_db/models/data_file/video_segment.py +0 -107
  202. endoreg_db/models/disease.py +0 -56
  203. endoreg_db/models/emission/__init__.py +0 -1
  204. endoreg_db/models/emission/emission_factor.py +0 -20
  205. endoreg_db/models/event.py +0 -22
  206. endoreg_db/models/examination/__init__.py +0 -4
  207. endoreg_db/models/examination/examination.py +0 -26
  208. endoreg_db/models/examination/examination_time.py +0 -27
  209. endoreg_db/models/examination/examination_time_type.py +0 -24
  210. endoreg_db/models/examination/examination_type.py +0 -18
  211. endoreg_db/models/hardware/__init__.py +0 -2
  212. endoreg_db/models/hardware/endoscope.py +0 -44
  213. endoreg_db/models/hardware/endoscopy_processor.py +0 -143
  214. endoreg_db/models/information_source.py +0 -29
  215. endoreg_db/models/label/__init__.py +0 -1
  216. endoreg_db/models/label/label.py +0 -84
  217. endoreg_db/models/laboratory/__init__.py +0 -1
  218. endoreg_db/models/laboratory/lab_value.py +0 -102
  219. endoreg_db/models/legacy_data/__init__.py +0 -3
  220. endoreg_db/models/legacy_data/image.py +0 -34
  221. endoreg_db/models/logging/__init__.py +0 -4
  222. endoreg_db/models/logging/agl_service.py +0 -19
  223. endoreg_db/models/logging/base.py +0 -22
  224. endoreg_db/models/logging/log_type.py +0 -23
  225. endoreg_db/models/logging/network_device.py +0 -27
  226. endoreg_db/models/medication/__init__.py +0 -1
  227. endoreg_db/models/medication/medication.py +0 -148
  228. endoreg_db/models/network/__init__.py +0 -3
  229. endoreg_db/models/network/agl_service.py +0 -38
  230. endoreg_db/models/network/network_device.py +0 -53
  231. endoreg_db/models/network/network_device_type.py +0 -23
  232. endoreg_db/models/other/__init__.py +0 -5
  233. endoreg_db/models/other/distribution.py +0 -215
  234. endoreg_db/models/other/material.py +0 -16
  235. endoreg_db/models/other/resource.py +0 -18
  236. endoreg_db/models/other/transport_route.py +0 -21
  237. endoreg_db/models/other/waste.py +0 -20
  238. endoreg_db/models/patient_examination/__init__.py +0 -35
  239. endoreg_db/models/permissions/__init__.py +0 -44
  240. endoreg_db/models/persons/__init__.py +0 -7
  241. endoreg_db/models/persons/examiner/__init__.py +0 -2
  242. endoreg_db/models/persons/examiner/examiner.py +0 -16
  243. endoreg_db/models/persons/examiner/examiner_type.py +0 -2
  244. endoreg_db/models/persons/first_name.py +0 -18
  245. endoreg_db/models/persons/gender.py +0 -22
  246. endoreg_db/models/persons/last_name.py +0 -20
  247. endoreg_db/models/persons/patient/__init__.py +0 -8
  248. endoreg_db/models/persons/patient/case/__init__.py +0 -0
  249. endoreg_db/models/persons/patient/case/case.py +0 -30
  250. endoreg_db/models/persons/patient/patient.py +0 -216
  251. endoreg_db/models/persons/patient/patient_disease.py +0 -16
  252. endoreg_db/models/persons/patient/patient_event.py +0 -22
  253. endoreg_db/models/persons/patient/patient_lab_sample.py +0 -106
  254. endoreg_db/models/persons/patient/patient_lab_value.py +0 -176
  255. endoreg_db/models/persons/patient/patient_medication.py +0 -44
  256. endoreg_db/models/persons/patient/patient_medication_schedule.py +0 -28
  257. endoreg_db/models/persons/person.py +0 -31
  258. endoreg_db/models/persons/portal_user_information.py +0 -27
  259. endoreg_db/models/prediction/__init__.py +0 -2
  260. endoreg_db/models/prediction/image_classification.py +0 -37
  261. endoreg_db/models/prediction/video_prediction_meta.py +0 -244
  262. endoreg_db/models/product/__init__.py +0 -5
  263. endoreg_db/models/product/product.py +0 -97
  264. endoreg_db/models/product/product_group.py +0 -19
  265. endoreg_db/models/product/product_material.py +0 -24
  266. endoreg_db/models/product/product_weight.py +0 -26
  267. endoreg_db/models/product/reference_product.py +0 -99
  268. endoreg_db/models/questionnaires/__init__.py +0 -114
  269. endoreg_db/models/quiz/__init__.py +0 -2
  270. endoreg_db/models/quiz/quiz_answer.py +0 -41
  271. endoreg_db/models/quiz/quiz_question.py +0 -54
  272. endoreg_db/models/report_reader/__init__.py +0 -2
  273. endoreg_db/models/report_reader/report_reader_config.py +0 -53
  274. endoreg_db/models/report_reader/report_reader_flag.py +0 -20
  275. endoreg_db/models/rules/__init__.py +0 -5
  276. endoreg_db/models/rules/rule.py +0 -24
  277. endoreg_db/models/rules/rule_applicator.py +0 -224
  278. endoreg_db/models/rules/rule_attribute_dtype.py +0 -19
  279. endoreg_db/models/rules/rule_type.py +0 -22
  280. endoreg_db/models/rules/ruleset.py +0 -19
  281. endoreg_db/models/unit.py +0 -22
  282. endoreg_db/queries/__init__.py +0 -5
  283. endoreg_db/queries/annotations/__init__.py +0 -3
  284. endoreg_db/queries/annotations/legacy.py +0 -158
  285. endoreg_db/queries/get/__init__.py +0 -6
  286. endoreg_db/queries/get/annotation.py +0 -0
  287. endoreg_db/queries/get/center.py +0 -42
  288. endoreg_db/queries/get/model.py +0 -13
  289. endoreg_db/queries/get/patient.py +0 -14
  290. endoreg_db/queries/get/patient_examination.py +0 -20
  291. endoreg_db/queries/get/prediction.py +0 -0
  292. endoreg_db/queries/get/report_file.py +0 -33
  293. endoreg_db/queries/get/video.py +0 -31
  294. endoreg_db/queries/get/video_import_meta.py +0 -0
  295. endoreg_db/queries/get/video_prediction_meta.py +0 -0
  296. endoreg_db/queries/sanity/__init_.py +0 -0
  297. endoreg_db/serializers/__init__.py +0 -10
  298. endoreg_db/serializers/ai_model.py +0 -19
  299. endoreg_db/serializers/annotation.py +0 -17
  300. endoreg_db/serializers/center.py +0 -11
  301. endoreg_db/serializers/examination.py +0 -33
  302. endoreg_db/serializers/frame.py +0 -13
  303. endoreg_db/serializers/hardware.py +0 -21
  304. endoreg_db/serializers/label.py +0 -22
  305. endoreg_db/serializers/patient.py +0 -10
  306. endoreg_db/serializers/prediction.py +0 -15
  307. endoreg_db/serializers/report_file.py +0 -7
  308. endoreg_db/serializers/video.py +0 -27
  309. endoreg_db/utils/__init__.py +0 -1
  310. endoreg_db/utils/cropping.py +0 -29
  311. endoreg_db/utils/dataloader.py +0 -92
  312. endoreg_db/utils/file_operations.py +0 -30
  313. endoreg_db/utils/hashs.py +0 -34
  314. endoreg_db/utils/legacy_ocr.py +0 -201
  315. endoreg_db/utils/ocr.py +0 -190
  316. endoreg_db/utils/uuid.py +0 -4
  317. endoreg_db/utils/video_metadata.py +0 -87
  318. endoreg_db-0.5.2.dist-info/METADATA +0 -27
  319. endoreg_db-0.5.2.dist-info/RECORD +0 -319
  320. {endoreg_db-0.5.2.dist-info/licenses → endoreg_db-0.6.0.dist-info}/LICENSE +0 -0
@@ -1,143 +0,0 @@
1
- from django.db import models
2
-
3
- class EndoscopyProcessorManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class EndoscopyProcessor(models.Model):
8
- objects = EndoscopyProcessorManager()
9
-
10
- name = models.CharField(max_length=255)
11
- image_width = models.IntegerField()
12
- image_height = models.IntegerField()
13
- # image_fps = models.IntegerField()
14
-
15
- # Roi for endoscope image
16
- endoscope_image_x = models.IntegerField()
17
- endoscope_image_y = models.IntegerField()
18
- endoscope_image_width = models.IntegerField()
19
- endoscope_image_height = models.IntegerField()
20
-
21
- # Roi for examination date
22
- examination_date_x = models.IntegerField()
23
- examination_date_y = models.IntegerField()
24
- examination_date_width = models.IntegerField()
25
- examination_date_height = models.IntegerField()
26
-
27
- # Roi for examination time
28
- examination_time_x = models.IntegerField(blank=True, null=True)
29
- examination_time_y = models.IntegerField(blank=True, null=True)
30
- examination_time_width = models.IntegerField(blank=True, null=True)
31
- examination_time_height = models.IntegerField(blank=True, null=True)
32
-
33
- # Roi for patient first name
34
- patient_first_name_x = models.IntegerField()
35
- patient_first_name_y = models.IntegerField()
36
- patient_first_name_width = models.IntegerField()
37
- patient_first_name_height = models.IntegerField()
38
-
39
- # Roi for patient name
40
- patient_last_name_x = models.IntegerField()
41
- patient_last_name_y = models.IntegerField()
42
- patient_last_name_width = models.IntegerField()
43
- patient_last_name_height = models.IntegerField()
44
-
45
- # Roi for patient dob
46
- patient_dob_x = models.IntegerField()
47
- patient_dob_y = models.IntegerField()
48
- patient_dob_width = models.IntegerField()
49
- patient_dob_height = models.IntegerField()
50
-
51
- # Roi for endoscope type
52
- endoscope_type_x = models.IntegerField(blank=True, null=True)
53
- endoscope_type_y = models.IntegerField(blank=True, null=True)
54
- endoscope_type_width = models.IntegerField(blank=True, null=True)
55
- endoscope_type_height = models.IntegerField(blank=True, null=True)
56
-
57
- # Roi for endoscopy sn
58
- endoscope_sn_x = models.IntegerField(blank=True, null=True)
59
- endoscope_sn_y = models.IntegerField(blank=True, null=True)
60
- endoscope_sn_width = models.IntegerField(blank=True, null=True)
61
- endoscope_sn_height = models.IntegerField(blank=True, null=True)
62
-
63
- def natural_key(self):
64
- return (self.name,)
65
-
66
- def __str__(self):
67
- return self.name
68
-
69
- def get_roi_endoscope_image(self):
70
- return {
71
- "x": self.endoscope_image_x,
72
- "y": self.endoscope_image_y,
73
- "width": self.endoscope_image_width,
74
- "height": self.endoscope_image_height
75
- }
76
-
77
- def get_roi_examination_date(self):
78
- return {
79
- "x": self.examination_date_x,
80
- "y": self.examination_date_y,
81
- "width": self.examination_date_width,
82
- "height": self.examination_date_height
83
- }
84
-
85
- def get_roi_examination_time(self):
86
- return {
87
- "x": self.examination_time_x,
88
- "y": self.examination_time_y,
89
- "width": self.examination_time_width,
90
- "height": self.examination_time_height
91
- }
92
-
93
- def get_roi_patient_last_name(self):
94
- return {
95
- "x": self.patient_last_name_x,
96
- "y": self.patient_last_name_y,
97
- "width": self.patient_last_name_width,
98
- "height": self.patient_last_name_height
99
- }
100
-
101
- def get_roi_patient_first_name(self):
102
- return {
103
- "x": self.patient_first_name_x,
104
- "y": self.patient_first_name_y,
105
- "width": self.patient_first_name_width,
106
- "height": self.patient_first_name_height
107
- }
108
-
109
- def get_roi_patient_dob(self):
110
- return {
111
- "x": self.patient_dob_x,
112
- "y": self.patient_dob_y,
113
- "width": self.patient_dob_width,
114
- "height": self.patient_dob_height
115
- }
116
-
117
- def get_roi_endoscope_type(self):
118
- return {
119
- "x": self.endoscope_type_x,
120
- "y": self.endoscope_type_y,
121
- "width": self.endoscope_type_width,
122
- "height": self.endoscope_type_height
123
- }
124
-
125
- def get_roi_endoscopy_sn(self):
126
- return {
127
- "x": self.endoscope_sn_x,
128
- "y": self.endoscope_sn_y,
129
- "width": self.endoscope_sn_width,
130
- "height": self.endoscope_sn_height
131
- }
132
-
133
- def get_rois(self):
134
- return {
135
- "endoscope_image": self.get_roi_endoscope_image(),
136
- "examination_date": self.get_roi_examination_date(),
137
- "examination_time": self.get_roi_examination_time(),
138
- "patient_first_name": self.get_roi_patient_first_name(),
139
- "patient_last_name": self.get_roi_patient_last_name(),
140
- "patient_dob": self.get_roi_patient_dob(),
141
- "endoscope_type": self.get_roi_endoscope_type(),
142
- "endoscope_sn": self.get_roi_endoscopy_sn()
143
- }
@@ -1,29 +0,0 @@
1
- from django.db import models
2
-
3
- def get_prediction_information_source():
4
- _source = InformationSource.objects.get(name="prediction")
5
-
6
- # make sure to return only one object
7
- assert _source, "No prediction information source found"
8
- return _source
9
-
10
- class InformationSourceManager(models.Manager):
11
- def get_by_natural_key(self, name):
12
- return self.get(name=name)
13
-
14
- class InformationSource(models.Model):
15
- objects = InformationSourceManager()
16
-
17
- name = models.CharField(max_length=100)
18
- name_de = models.CharField(max_length=100, blank=True, null=True)
19
- name_en = models.CharField(max_length=100, blank=True, null=True)
20
-
21
- url = models.URLField(blank=True, null=True)
22
- description = models.TextField(blank=True, null=True)
23
- date = models.DateField(blank=True, null=True)
24
-
25
- def natural_key(self):
26
- return (self.name,)
27
-
28
- def __str__(self):
29
- return self.name
@@ -1 +0,0 @@
1
- from .label import Label, LabelType, LabelSet
@@ -1,84 +0,0 @@
1
- from django.db import models
2
-
3
- class LabelTypeManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class LabelType(models.Model):
8
- """
9
- A class representing a label type.
10
-
11
- Attributes:
12
- name (str): The name of the label type.
13
- description (str): A description of the label type.
14
-
15
- """
16
- name = models.CharField(max_length=255)
17
- description = models.TextField(blank=True, null=True)
18
-
19
- objects = LabelTypeManager()
20
-
21
- def natural_key(self):
22
- return (self.name,)
23
-
24
- def __str__(self):
25
- return self.name
26
-
27
-
28
- class LabelManager(models.Manager):
29
- def get_by_natural_key(self, name):
30
- return self.get(name=name)
31
-
32
- class Label(models.Model):
33
- """
34
- A class representing a label.
35
-
36
- Attributes:
37
- name (str): The name of the label.
38
- label_type (LabelType): The type of the label.
39
- description (str): A description of the label.
40
-
41
- """
42
- name = models.CharField(max_length=255)
43
- label_type = models.ForeignKey("LabelType", on_delete=models.CASCADE, related_name="labels")
44
- description = models.TextField(blank=True, null=True)
45
-
46
- objects = LabelManager()
47
-
48
- def natural_key(self):
49
- return (self.name,)
50
-
51
- def __str__(self):
52
- return self.name
53
-
54
- class LabelSetManager(models.Manager):
55
- def get_by_natural_key(self, name):
56
- return self.get(name=name)
57
-
58
- class LabelSet(models.Model):
59
- """
60
- A class representing a label set.
61
-
62
- Attributes:
63
- name (str): The name of the label set.
64
- description (str): A description of the label set.
65
-
66
- """
67
- name = models.CharField(max_length=255)
68
- description = models.TextField(blank=True, null=True)
69
- version = models.IntegerField()
70
- labels = models.ManyToManyField("Label", related_name="labels")
71
-
72
- objects = LabelSetManager()
73
-
74
- def natural_key(self):
75
- return (self.name,)
76
-
77
- def __str__(self):
78
- return self.name
79
-
80
- def get_labels_in_order(self):
81
- """
82
- Get all labels in this label set as list in the correct order.
83
- """
84
- return list(self.labels.all().order_by('id'))
@@ -1 +0,0 @@
1
- from .lab_value import LabValue
@@ -1,102 +0,0 @@
1
- from django.db import models
2
- import warnings
3
-
4
- LANG = "de"
5
-
6
- class LabValueManager(models.Manager):
7
- def get_by_natural_key(self, name):
8
- return self.get(name=name)
9
-
10
- class LabValue(models.Model):
11
- name = models.CharField(max_length=255, unique=True)
12
- name_de = models.CharField(max_length=255, blank=True, null=True)
13
- name_en = models.CharField(max_length=255, blank=True, null=True)
14
- abbreviation = models.CharField(max_length=10, blank=True, null=True)
15
- default_unit = models.ForeignKey('Unit', on_delete=models.CASCADE, blank=True, null=True)
16
- numeric_precision = models.IntegerField(default=3)
17
- default_single_categorical_value_distribution = models.ForeignKey(
18
- 'SingleCategoricalValueDistribution',
19
- on_delete=models.CASCADE,
20
- blank=True, null=True,
21
- related_name='default_single_categorical_value_distribution'
22
- )
23
- default_numerical_value_distribution = models.ForeignKey(
24
- 'NumericValueDistribution',
25
- on_delete=models.CASCADE,
26
- blank=True, null=True,
27
- related_name='default_numerical_value_distribution'
28
- )
29
- default_multiple_categorical_value_distribution = models.ForeignKey(
30
- 'MultipleCategoricalValueDistribution',
31
- on_delete=models.CASCADE,
32
- blank=True, null=True,
33
- related_name='default_multiple_categorical_value_distribution'
34
- )
35
- default_date_value_distribution = models.ForeignKey(
36
- 'DateValueDistribution',
37
- on_delete=models.CASCADE,
38
- blank=True, null=True,
39
- related_name='default_date_value_distribution'
40
- )
41
- default_normal_range = models.JSONField(blank=True, null=True)
42
- normal_range_age_dependent = models.BooleanField(default=False)
43
- normal_range_gender_dependent = models.BooleanField(default=False)
44
- normal_range_special_case = models.BooleanField(default=False)
45
- objects = LabValueManager()
46
-
47
- def natural_key(self):
48
- return (self.name,)
49
-
50
- def __str__(self):
51
- return self.name
52
-
53
- def get_default_default_distribution(self):
54
- if self.default_single_categorical_value_distribution:
55
- return self.default_single_categorical_value_distribution
56
- elif self.default_numerical_value_distribution:
57
- return self.default_numerical_value_distribution
58
- elif self.default_multiple_categorical_value_distribution:
59
- return self.default_multiple_categorical_value_distribution
60
- elif self.default_date_value_distribution:
61
- return self.default_date_value_distribution
62
- else:
63
- warnings.warn("No default distribution set for lab value")
64
- return None
65
-
66
- def get_normal_range(self, age=None, gender=None):
67
- age_dependent = self.normal_range_age_dependent
68
- gender_dependent = self.normal_range_gender_dependent
69
- special_case = self.normal_range_special_case
70
-
71
- min_value = None
72
- max_value = None
73
-
74
- if not age_dependent and \
75
- not gender_dependent and \
76
- not special_case:
77
- min_value = self.default_normal_range.get('min', None)
78
- max_value = self.default_normal_range.get('max', None)
79
-
80
- if age_dependent:
81
- # get normal range for age)
82
- warnings.warn("Age dependent normal range not implemented yet")
83
- pass
84
-
85
- if gender_dependent:
86
- if not gender:
87
- warnings.warn("Calling get_normal_range with gender_dependent=True requires gender to be set, choosing by random")
88
- # set gender to either "male" or "female"
89
- from random import choice
90
- choices = ["male", "female"]
91
- gender = choice(choices)
92
-
93
- default_range_dict = self.default_normal_range.get(gender, {})
94
- min_value = default_range_dict.get('min', None)
95
- max_value = default_range_dict.get('max', None)
96
-
97
- if special_case:
98
- # get normal range for special case
99
- warnings.warn("Special case normal range not implemented yet")
100
-
101
- return min_value, max_value
102
-
@@ -1,3 +0,0 @@
1
- from ..data_file.frame import LegacyFrame
2
- from .image import LegacyImage
3
- from ..data_file.video import LegacyVideo
@@ -1,34 +0,0 @@
1
- from django.db import models
2
- from ..label.label import Label
3
- from ..annotation.image_classification import ImageClassificationAnnotation
4
-
5
- class LegacyImage(models.Model):
6
- # Add any other fields you need to store frame-related information
7
- image = models.ImageField(upload_to="legacy_images") # Or some other field type, depending on how you're storing the frame
8
- suffix = models.CharField(max_length=255)
9
- # ImageClassificationAnnotation has a foreign key to this model (related name: image_classification_annotations)
10
-
11
- def get_classification_annotations(self):
12
- """
13
- Get all image classification annotations for this image.
14
- """
15
- return ImageClassificationAnnotation.objects.filter(legacy_image=self)
16
-
17
- def get_classification_annotations_by_label(self, label:Label):
18
- """
19
- Get all image classification annotations for this image with the given label.
20
- """
21
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label)
22
-
23
- def get_classification_annotations_by_value(self, value:bool):
24
- """
25
- Get all image classification annotations for this image with the given value.
26
- """
27
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, value=value)
28
-
29
- def get_classification_annotations_by_label_and_value(self, label:Label, value:bool):
30
- """
31
- Get all image classification annotations for this image with the given label and value.
32
- """
33
- return ImageClassificationAnnotation.objects.filter(legacy_image=self, label=label, value=value)
34
-
@@ -1,4 +0,0 @@
1
- from .base import AbstractLogEntry
2
- from .network_device import NetworkDeviceLogEntry
3
- from .log_type import LogType
4
- from .agl_service import AglServiceLogEntry
@@ -1,19 +0,0 @@
1
- from django.db import models
2
- from .base import AbstractLogEntry
3
-
4
- class AglServiceLogEntry(AbstractLogEntry):
5
- """
6
- Model for log entries related to AGL services.
7
- """
8
- service = models.ForeignKey("AglService", on_delete=models.CASCADE)
9
- device = models.ForeignKey(
10
- "NetworkDevice", on_delete=models.CASCADE, null=True, blank=True
11
- )
12
- log_type = models.ForeignKey("LogType", on_delete=models.CASCADE, null=True, blank=True)
13
-
14
- class Meta:
15
- verbose_name = "AGL Service Log Entry"
16
- verbose_name_plural = "AGL Service Log Entries"
17
-
18
- def __str__(self):
19
- return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.service} - {self.message}"
@@ -1,22 +0,0 @@
1
- # django model for logging, first define an abstract base model
2
- from django.db import models
3
- from django.conf import settings
4
-
5
- class AbstractLogEntry(models.Model):
6
- """
7
- Abstract base model for log entries.
8
- """
9
-
10
- class Meta:
11
- abstract = True
12
-
13
- timestamp = models.DateTimeField(auto_now_add=True)
14
- user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True)
15
- ip_address = models.GenericIPAddressField(null=True, blank=True)
16
- user_agent = models.CharField(max_length=256, null=True, blank=True)
17
- message = models.TextField()
18
- json_content = models.JSONField(null=True, blank=True)
19
-
20
-
21
- def __str__(self):
22
- return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.message}"
@@ -1,23 +0,0 @@
1
- from django.db import models
2
-
3
- class LogTypeManager(models.Manager):
4
- # Custom manager for LogType; defines name as natural key
5
- def get_by_natural_key(self, name):
6
- return self.get(name=name)
7
-
8
-
9
- class LogType(models.Model):
10
- name = models.CharField(max_length=255)
11
- description = models.CharField(max_length=255)
12
- created = models.DateTimeField(auto_now_add=True)
13
- updated = models.DateTimeField(auto_now=True)
14
- objects = LogTypeManager()
15
-
16
- def __str__(self):
17
- return self.name
18
-
19
- class Meta:
20
- ordering = ['name']
21
-
22
- def natural_key(self):
23
- return (self.name,)
@@ -1,27 +0,0 @@
1
- from django.db import models
2
- from .base import AbstractLogEntry
3
-
4
- class NetworkDeviceLogEntry(AbstractLogEntry):
5
- """
6
- Model for log entries related to network devices.
7
- """
8
- device = models.ForeignKey("NetworkDevice", on_delete=models.CASCADE)
9
- log_type = models.ForeignKey("LogType", on_delete=models.CASCADE, null=True, blank=True)
10
-
11
- datetime = models.DateTimeField(default=None, null=True, blank=True)
12
- # hostname = models.CharField(max_length=255, null=True, blank=True)
13
- aglnet_ip = models.GenericIPAddressField(null=True, blank=True)
14
- vpn_service_status = models.CharField(max_length=255, null=True, blank=True)
15
- vpn_service_restart_attempt = models.BooleanField(default=False)
16
- vpn_service_restart_success = models.BooleanField(null=True, blank=True)
17
- ping_vpn = models.BooleanField(default=False)
18
- ping_www = models.BooleanField(default=False)
19
- transferred_to_host = models.BooleanField(default=False)
20
-
21
- class Meta:
22
- verbose_name = "Network Device Log Entry"
23
- verbose_name_plural = "Network Device Log Entries"
24
-
25
- def __str__(self):
26
- return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.device} - {self.message}"
27
-
@@ -1 +0,0 @@
1
- from .medication import *
@@ -1,148 +0,0 @@
1
- from django.db import models
2
-
3
- class MedicationManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class Medication(models.Model):
8
- name = models.CharField(max_length=255, unique=True)
9
- name_de = models.CharField(max_length=255, blank=True, null=True)
10
- name_en = models.CharField(max_length=255, blank=True, null=True)
11
- adapt_to_renal_function = models.BooleanField(default = False)
12
- adapt_to_hepatic_function = models.BooleanField(default=False)
13
- adapt_to_indication = models.BooleanField(default=False)
14
- adapt_to_age = models.BooleanField(default=False)
15
- adapt_to_weight = models.BooleanField(default=False)
16
- adapt_to_risk = models.BooleanField(default=False)
17
- default_unit = models.ForeignKey('Unit', on_delete=models.CASCADE)
18
-
19
-
20
- objects = MedicationManager()
21
-
22
- def natural_key(self):
23
- return (self.name,)
24
-
25
- def __str__(self):
26
- return self.name
27
-
28
- class MedicationScheduleManager(models.Manager):
29
- def get_by_natural_key(self, name):
30
- return self.get(name=name)
31
-
32
- class MedicationSchedule(models.Model):
33
- name = models.CharField(max_length=255)
34
- name_de = models.CharField(max_length=255, blank=True, null=True)
35
- name_en = models.CharField(max_length=255, blank=True, null=True)
36
- description = models.TextField(blank=True, null=True)
37
- medication = models.ForeignKey("Medication", on_delete=models.CASCADE)
38
- unit = models.ForeignKey("Unit", on_delete=models.CASCADE)
39
- therapy_duration_d = models.FloatField(blank=True, null=True)
40
- dose = models.FloatField()
41
- intake_times = models.ManyToManyField(
42
- "MedicationIntakeTime",
43
- )
44
-
45
- objects = MedicationScheduleManager()
46
-
47
- def natural_key(self):
48
- return (self.name,)
49
-
50
- def __str__(self):
51
- return self.name
52
-
53
-
54
- class MedicationIntakeTimeManager(models.Manager):
55
- def get_by_natural_key(self, name):
56
- return self.get(name=name)
57
-
58
- class MedicationIntakeTime(models.Model):
59
- name = models.CharField(max_length=255)
60
- name_de = models.CharField(max_length=255, blank=True, null=True)
61
- name_en = models.CharField(max_length=255, blank=True, null=True)
62
- repeats = models.CharField(max_length=20, default = "daily")
63
- time = models.TimeField()
64
-
65
- objects = MedicationIntakeTimeManager()
66
-
67
- def natural_key(self):
68
- return (self.name,)
69
-
70
- def __str__(self):
71
- return self.name
72
-
73
- # IMPLEMENT MEDICATION INDICATION TYPE
74
- class MedicationIndicationTypeManager(models.Manager):
75
- def get_by_natural_key(self, name):
76
- return self.get(name=name)
77
-
78
- class MedicationIndicationType(models.Model):
79
- name = models.CharField(max_length=255, unique=True)
80
- name_de = models.CharField(max_length=255, blank=True, null=True)
81
- name_en = models.CharField(max_length=255, blank=True, null=True)
82
-
83
- objects = MedicationIndicationTypeManager()
84
-
85
- def natural_key(self):
86
- return (self.name,)
87
-
88
- def __str__(self):
89
- return self.name
90
-
91
- @classmethod
92
- def get_random_indication_by_type(cls, name) -> "MedicationIndication":
93
- return cls.objects.get(name=name).medication_indications.order_by('?').first()
94
-
95
-
96
- def get_random_medication_indication(self):
97
- from endoreg_db.models import MedicationIndication
98
- return MedicationIndication.objects.filter(indication_type=self).order_by('?').first()
99
-
100
-
101
- class MedicationIndicationManager(models.Manager):
102
- def get_by_natural_key(self, name):
103
- return self.get(name=name)
104
-
105
- class MedicationIndication(models.Model):
106
- name = models.CharField(max_length=255, unique=True)
107
- indication_type = models.ForeignKey(
108
- "MedicationIndicationType", on_delete=models.CASCADE, related_name="medication_indications"
109
- )
110
- medication_schedules = models.ManyToManyField(
111
- "MedicationSchedule"
112
- )
113
- diseases = models.ManyToManyField(
114
- "Disease"
115
- )
116
- events = models.ManyToManyField(
117
- "Event"
118
- )
119
- classification_choices = models.ManyToManyField(
120
- "DiseaseClassificationChoice"
121
- )
122
- sources = models.ManyToManyField(
123
- "InformationSource"
124
- )
125
-
126
- def get_indication_links(self):
127
- links = {
128
- "medication_schedules": self.medication_schedules,
129
- "diseases": self.diseases,
130
- "events": self.events,
131
- "classification_choices": self.classification_choices
132
- }
133
-
134
- objects = MedicationIndicationManager()
135
-
136
- def natural_key(self):
137
- return (self.name,)
138
-
139
- def __str__(self):
140
- return self.name
141
-
142
- def create_patient_medication_schedules(self, patient):
143
- from endoreg_db.models import PatientMedicationSchedule
144
- for medication_schedule in self.medication_schedules.all():
145
- PatientMedicationSchedule.objects.create(
146
- patient=patient,
147
- medication_schedule=medication_schedule
148
- )
@@ -1,3 +0,0 @@
1
- from .network_device import NetworkDevice
2
- from .network_device_type import NetworkDeviceType
3
- from .agl_service import AglService