endoreg-db 0.3.4__py3-none-any.whl → 0.3.6__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.
Files changed (350) hide show
  1. endoreg_db/admin.py +3 -3
  2. endoreg_db/apps.py +6 -6
  3. endoreg_db/data/__init__.py +65 -16
  4. endoreg_db/data/active_model/data.yaml +2 -2
  5. endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -0
  6. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +8 -0
  7. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +9 -0
  8. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +23 -0
  9. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +19 -0
  10. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +19 -0
  11. endoreg_db/data/case_template/rule/19_create_patient.yaml +17 -0
  12. endoreg_db/data/case_template/rule_type/base_types.yaml +35 -0
  13. endoreg_db/data/case_template/rule_value_type/base_types.yaml +59 -0
  14. endoreg_db/data/case_template/template/base.yaml +8 -0
  15. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +3 -0
  16. endoreg_db/data/case_template/tmp/_rule_value +13 -0
  17. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -0
  18. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +10 -0
  19. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +7 -0
  20. endoreg_db/data/center/data.yaml +60 -52
  21. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -0
  22. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -0
  23. endoreg_db/data/disease/cardiovascular.yaml +37 -0
  24. endoreg_db/data/disease/hepatology.yaml +5 -0
  25. endoreg_db/data/disease/misc.yaml +6 -0
  26. endoreg_db/data/disease/renal.yaml +5 -0
  27. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +6 -0
  28. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +6 -0
  29. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +41 -0
  30. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +20 -0
  31. endoreg_db/data/distribution/date/patient.yaml +7 -0
  32. endoreg_db/data/distribution/single_categorical/patient.yaml +7 -0
  33. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -0
  34. endoreg_db/data/endoscope_type/data.yaml +10 -10
  35. endoreg_db/data/endoscopy_processor/data.yaml +45 -45
  36. endoreg_db/data/event/cardiology.yaml +28 -0
  37. endoreg_db/data/event/neurology.yaml +14 -0
  38. endoreg_db/data/event/surgery.yaml +13 -0
  39. endoreg_db/data/event/thrombembolism.yaml +20 -0
  40. endoreg_db/data/examination/examinations/data.yaml +65 -16
  41. endoreg_db/data/examination/time/data.yaml +47 -47
  42. endoreg_db/data/examination/time-type/data.yaml +7 -7
  43. endoreg_db/data/examination/type/data.yaml +5 -5
  44. endoreg_db/data/gender/data.yaml +18 -0
  45. endoreg_db/data/information_source/data.yaml +30 -30
  46. endoreg_db/data/information_source/medication.yaml +6 -0
  47. endoreg_db/data/lab_value/cardiac_enzymes.yaml +31 -0
  48. endoreg_db/data/lab_value/coagulation.yaml +49 -0
  49. endoreg_db/data/lab_value/electrolytes.yaml +190 -0
  50. endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -0
  51. endoreg_db/data/lab_value/hematology.yaml +169 -0
  52. endoreg_db/data/lab_value/hormones.yaml +53 -0
  53. endoreg_db/data/lab_value/lipids.yaml +44 -0
  54. endoreg_db/data/lab_value/misc.yaml +30 -0
  55. endoreg_db/data/lab_value/renal_function.yaml +11 -0
  56. endoreg_db/data/label/label/data.yaml +62 -62
  57. endoreg_db/data/label/label-set/data.yaml +17 -17
  58. endoreg_db/data/label/label-type/data.yaml +6 -6
  59. endoreg_db/data/material/material.yaml +91 -0
  60. endoreg_db/data/medication/anticoagulation.yaml +65 -0
  61. endoreg_db/data/medication/tah.yaml +70 -0
  62. endoreg_db/data/medication_indication/anticoagulation.yaml +120 -0
  63. endoreg_db/data/medication_indication_type/data.yaml +11 -0
  64. endoreg_db/data/medication_indication_type/thrombembolism.yaml +41 -0
  65. endoreg_db/data/medication_intake_time/base.yaml +31 -0
  66. endoreg_db/data/medication_schedule/apixaban.yaml +95 -0
  67. endoreg_db/data/medication_schedule/ass.yaml +12 -0
  68. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -0
  69. endoreg_db/data/model_type/data.yaml +6 -6
  70. endoreg_db/data/patient_lab_sample_type/generic.yaml +6 -0
  71. endoreg_db/data/pdf_type/data.yaml +28 -28
  72. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -0
  73. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -0
  74. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -0
  75. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -0
  76. endoreg_db/data/profession/data.yaml +70 -70
  77. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -0
  78. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
  79. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
  80. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -0
  81. endoreg_db/data/tmp/chronic_kidney_disease.yaml +0 -0
  82. endoreg_db/data/tmp/congestive_heart_failure.yaml +0 -0
  83. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -0
  84. endoreg_db/data/unit/concentration.yaml +92 -0
  85. endoreg_db/data/unit/data.yaml +17 -17
  86. endoreg_db/data/unit/length.yaml +30 -30
  87. endoreg_db/data/unit/misc.yaml +20 -0
  88. endoreg_db/data/unit/rate.yaml +6 -0
  89. endoreg_db/data/unit/time.yaml +13 -0
  90. endoreg_db/data/unit/volume.yaml +35 -26
  91. endoreg_db/data/unit/weight.yaml +37 -30
  92. endoreg_db/data/waste/data.yaml +12 -0
  93. endoreg_db/forms/__init__.py +2 -2
  94. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
  95. endoreg_db/forms/settings/__init__.py +8 -8
  96. endoreg_db/forms/unit.py +5 -5
  97. endoreg_db/management/commands/_load_model_template.py +40 -40
  98. endoreg_db/management/commands/delete_all.py +18 -18
  99. endoreg_db/management/commands/delete_legacy_images.py +19 -19
  100. endoreg_db/management/commands/delete_legacy_videos.py +16 -16
  101. endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
  102. endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
  103. endoreg_db/management/commands/fix_auth_permission.py +20 -20
  104. endoreg_db/management/commands/import_legacy_images.py +94 -94
  105. endoreg_db/management/commands/import_legacy_videos.py +76 -76
  106. endoreg_db/management/commands/load_active_model_data.py +44 -44
  107. endoreg_db/management/commands/load_ai_model_data.py +44 -44
  108. endoreg_db/management/commands/load_base_db_data.py +128 -71
  109. endoreg_db/management/commands/load_center_data.py +42 -42
  110. endoreg_db/management/commands/load_disease_classification_choices_data.py +41 -0
  111. endoreg_db/management/commands/load_disease_classification_data.py +41 -0
  112. endoreg_db/management/commands/load_disease_data.py +40 -0
  113. endoreg_db/management/commands/load_distribution_data.py +66 -0
  114. endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
  115. endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
  116. endoreg_db/management/commands/load_event_data.py +41 -0
  117. endoreg_db/management/commands/load_examination_data.py +74 -74
  118. endoreg_db/management/commands/load_g_play_data.py +113 -0
  119. endoreg_db/management/commands/load_gender_data.py +44 -0
  120. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +133 -0
  121. endoreg_db/management/commands/load_information_source.py +44 -44
  122. endoreg_db/management/commands/load_lab_value_data.py +50 -0
  123. endoreg_db/management/commands/load_label_data.py +66 -66
  124. endoreg_db/management/commands/load_medication_data.py +41 -0
  125. endoreg_db/management/commands/load_medication_indication_data.py +63 -0
  126. endoreg_db/management/commands/load_medication_indication_type_data.py +41 -0
  127. endoreg_db/management/commands/load_medication_intake_time_data.py +41 -0
  128. endoreg_db/management/commands/load_medication_schedule_data.py +55 -0
  129. endoreg_db/management/commands/load_pdf_type_data.py +60 -60
  130. endoreg_db/management/commands/load_profession_data.py +43 -43
  131. endoreg_db/management/commands/load_report_reader_flag.py +45 -45
  132. endoreg_db/management/commands/load_unit_data.py +45 -45
  133. endoreg_db/management/commands/load_user_groups.py +28 -28
  134. endoreg_db/management/commands/register_ai_model.py +65 -65
  135. endoreg_db/management/commands/reset_celery_schedule.py +9 -9
  136. endoreg_db/migrations/0001_initial.py +582 -582
  137. endoreg_db/migrations/0002_rawvideofile.py +26 -26
  138. endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
  139. endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
  140. endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
  141. endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
  142. endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
  143. endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
  144. endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
  145. endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
  146. endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
  147. endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
  148. endoreg_db/migrations/0013_rawpdffile.py +31 -31
  149. endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
  150. endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
  151. endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
  152. endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
  153. endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
  154. endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
  155. endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
  156. endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
  157. endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
  158. endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
  159. endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
  160. endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -0
  161. endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -0
  162. endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -0
  163. endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -0
  164. endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -0
  165. endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -0
  166. endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -0
  167. endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -0
  168. endoreg_db/migrations/0033_medicationindication_sources.py +18 -0
  169. endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -0
  170. endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -0
  171. endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -0
  172. endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -0
  173. endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -0
  174. endoreg_db/migrations/0039_referenceproduct_name.py +19 -0
  175. endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -0
  176. endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -0
  177. endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -0
  178. endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -0
  179. endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -0
  180. endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -0
  181. endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -0
  182. endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -0
  183. endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -0
  184. endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -0
  185. endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -0
  186. endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -0
  187. endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -0
  188. endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -0
  189. endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -0
  190. endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -0
  191. endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -0
  192. endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -0
  193. endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -0
  194. endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -0
  195. endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -0
  196. endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -0
  197. endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -0
  198. endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -0
  199. endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -0
  200. endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -0
  201. endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -0
  202. endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -0
  203. endoreg_db/models/__init__.py +74 -57
  204. endoreg_db/models/ai_model/__init__.py +3 -3
  205. endoreg_db/models/ai_model/active_model.py +9 -9
  206. endoreg_db/models/ai_model/model_meta.py +24 -24
  207. endoreg_db/models/ai_model/model_type.py +25 -25
  208. endoreg_db/models/ai_model/utils.py +8 -8
  209. endoreg_db/models/annotation/__init__.py +1 -1
  210. endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
  211. endoreg_db/models/annotation/image_classification.py +26 -26
  212. endoreg_db/models/case_template/__init__.py +6 -0
  213. endoreg_db/models/case_template/case_template.py +81 -0
  214. endoreg_db/models/case_template/case_template_rule.py +276 -0
  215. endoreg_db/models/case_template/case_template_rule_value.py +73 -0
  216. endoreg_db/models/case_template/case_template_type.py +28 -0
  217. endoreg_db/models/center/__init__.py +4 -0
  218. endoreg_db/models/{center.py → center/center.py} +24 -24
  219. endoreg_db/models/center/center_product.py +34 -0
  220. endoreg_db/models/center/center_resource.py +19 -0
  221. endoreg_db/models/center/center_waste.py +11 -0
  222. endoreg_db/models/data_file/__init__.py +5 -5
  223. endoreg_db/models/data_file/base_classes/__init__.py +2 -2
  224. endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
  225. endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
  226. endoreg_db/models/data_file/frame.py +45 -45
  227. endoreg_db/models/data_file/import_classes/__init__.py +31 -31
  228. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
  229. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
  230. endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
  231. endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -185
  232. endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
  233. endoreg_db/models/data_file/metadata/__init__.py +3 -3
  234. endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
  235. endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
  236. endoreg_db/models/data_file/metadata/video_meta.py +132 -131
  237. endoreg_db/models/data_file/report_file.py +89 -89
  238. endoreg_db/models/data_file/video/__init__.py +6 -6
  239. endoreg_db/models/data_file/video/import_meta.py +25 -25
  240. endoreg_db/models/data_file/video/video.py +25 -25
  241. endoreg_db/models/data_file/video_segment.py +107 -107
  242. endoreg_db/models/disease.py +56 -0
  243. endoreg_db/models/emission/__init__.py +1 -0
  244. endoreg_db/models/emission/emission_factor.py +20 -0
  245. endoreg_db/models/event.py +22 -0
  246. endoreg_db/models/examination/__init__.py +3 -3
  247. endoreg_db/models/examination/examination.py +26 -26
  248. endoreg_db/models/examination/examination_time.py +27 -27
  249. endoreg_db/models/examination/examination_time_type.py +24 -24
  250. endoreg_db/models/examination/examination_type.py +18 -18
  251. endoreg_db/models/hardware/__init__.py +1 -1
  252. endoreg_db/models/hardware/endoscope.py +44 -44
  253. endoreg_db/models/hardware/endoscopy_processor.py +143 -143
  254. endoreg_db/models/information_source.py +29 -22
  255. endoreg_db/models/label/label.py +84 -84
  256. endoreg_db/models/laboratory/__init__.py +1 -0
  257. endoreg_db/models/laboratory/lab_value.py +102 -0
  258. endoreg_db/models/legacy_data/__init__.py +3 -3
  259. endoreg_db/models/legacy_data/image.py +34 -34
  260. endoreg_db/models/medication/__init__.py +1 -0
  261. endoreg_db/models/medication/medication.py +148 -0
  262. endoreg_db/models/other/__init__.py +5 -0
  263. endoreg_db/models/other/distribution.py +215 -0
  264. endoreg_db/models/other/material.py +16 -0
  265. endoreg_db/models/other/resource.py +18 -0
  266. endoreg_db/models/other/transport_route.py +21 -0
  267. endoreg_db/models/other/waste.py +20 -0
  268. endoreg_db/models/patient_examination/__init__.py +35 -35
  269. endoreg_db/models/permissions/__init__.py +44 -44
  270. endoreg_db/models/persons/__init__.py +7 -6
  271. endoreg_db/models/persons/examiner/__init__.py +1 -1
  272. endoreg_db/models/persons/examiner/examiner.py +15 -15
  273. endoreg_db/models/persons/examiner/examiner_type.py +1 -1
  274. endoreg_db/models/persons/first_name.py +17 -17
  275. endoreg_db/models/persons/gender.py +22 -0
  276. endoreg_db/models/persons/last_name.py +19 -19
  277. endoreg_db/models/persons/patient/__init__.py +8 -0
  278. endoreg_db/models/persons/patient/case/__init__.py +0 -0
  279. endoreg_db/models/persons/patient/case/case.py +30 -0
  280. endoreg_db/models/persons/patient/patient.py +216 -0
  281. endoreg_db/models/persons/patient/patient_disease.py +16 -0
  282. endoreg_db/models/persons/patient/patient_event.py +22 -0
  283. endoreg_db/models/persons/patient/patient_lab_sample.py +106 -0
  284. endoreg_db/models/persons/patient/patient_lab_value.py +176 -0
  285. endoreg_db/models/persons/patient/patient_medication.py +44 -0
  286. endoreg_db/models/persons/patient/patient_medication_schedule.py +28 -0
  287. endoreg_db/models/persons/person.py +31 -34
  288. endoreg_db/models/persons/portal_user_information.py +27 -29
  289. endoreg_db/models/prediction/__init__.py +1 -1
  290. endoreg_db/models/prediction/image_classification.py +37 -37
  291. endoreg_db/models/prediction/video_prediction_meta.py +244 -244
  292. endoreg_db/models/product/__init__.py +5 -0
  293. endoreg_db/models/product/product.py +97 -0
  294. endoreg_db/models/product/product_group.py +19 -0
  295. endoreg_db/models/product/product_material.py +24 -0
  296. endoreg_db/models/product/product_weight.py +26 -0
  297. endoreg_db/models/product/reference_product.py +99 -0
  298. endoreg_db/models/questionnaires/__init__.py +114 -114
  299. endoreg_db/models/quiz/__init__.py +2 -0
  300. endoreg_db/models/quiz/quiz_answer.py +41 -0
  301. endoreg_db/models/quiz/quiz_question.py +54 -0
  302. endoreg_db/models/report_reader/__init__.py +1 -1
  303. endoreg_db/models/report_reader/report_reader_config.py +53 -53
  304. endoreg_db/models/report_reader/report_reader_flag.py +19 -19
  305. endoreg_db/models/rules/__init__.py +5 -0
  306. endoreg_db/models/rules/rule.py +24 -0
  307. endoreg_db/models/rules/rule_applicator.py +224 -0
  308. endoreg_db/models/rules/rule_attribute_dtype.py +19 -0
  309. endoreg_db/models/rules/rule_type.py +22 -0
  310. endoreg_db/models/rules/ruleset.py +19 -0
  311. endoreg_db/models/unit.py +21 -19
  312. endoreg_db/queries/__init__.py +4 -4
  313. endoreg_db/queries/annotations/__init__.py +2 -2
  314. endoreg_db/queries/annotations/legacy.py +159 -159
  315. endoreg_db/queries/get/__init__.py +5 -5
  316. endoreg_db/queries/get/center.py +42 -42
  317. endoreg_db/queries/get/model.py +13 -13
  318. endoreg_db/queries/get/patient.py +14 -14
  319. endoreg_db/queries/get/patient_examination.py +20 -20
  320. endoreg_db/queries/get/report_file.py +33 -33
  321. endoreg_db/queries/get/video.py +31 -31
  322. endoreg_db/serializers/__init__.py +9 -9
  323. endoreg_db/serializers/ai_model.py +18 -18
  324. endoreg_db/serializers/annotation.py +17 -17
  325. endoreg_db/serializers/center.py +11 -11
  326. endoreg_db/serializers/examination.py +32 -32
  327. endoreg_db/serializers/frame.py +13 -13
  328. endoreg_db/serializers/hardware.py +20 -20
  329. endoreg_db/serializers/label.py +22 -22
  330. endoreg_db/serializers/patient.py +10 -10
  331. endoreg_db/serializers/prediction.py +15 -15
  332. endoreg_db/serializers/report_file.py +7 -7
  333. endoreg_db/serializers/video.py +27 -27
  334. endoreg_db/tests.py +3 -3
  335. endoreg_db/utils/cropping.py +28 -28
  336. endoreg_db/utils/dataloader.py +92 -185
  337. endoreg_db/utils/file_operations.py +30 -30
  338. endoreg_db/utils/hashs.py +33 -33
  339. endoreg_db/utils/legacy_ocr.py +201 -201
  340. endoreg_db/utils/ocr.py +197 -197
  341. endoreg_db/utils/uuid.py +4 -4
  342. endoreg_db/utils/video_metadata.py +87 -87
  343. endoreg_db/views.py +3 -3
  344. {endoreg_db-0.3.4.dist-info → endoreg_db-0.3.6.dist-info}/LICENSE +674 -674
  345. {endoreg_db-0.3.4.dist-info → endoreg_db-0.3.6.dist-info}/METADATA +2 -2
  346. endoreg_db-0.3.6.dist-info/RECORD +357 -0
  347. {endoreg_db-0.3.4.dist-info → endoreg_db-0.3.6.dist-info}/WHEEL +1 -1
  348. endoreg_db/models/persons/patient.py +0 -58
  349. endoreg_db/models.py +0 -3
  350. endoreg_db-0.3.4.dist-info/RECORD +0 -185
@@ -1,44 +1,44 @@
1
- from django.db import models
2
-
3
- class EndoscopeManager(models.Manager):
4
- def get_by_natural_key(self, name, sn):
5
- return self.get(name=name, sn=sn)
6
-
7
- class Endoscope(models.Model):
8
- objects = EndoscopeManager()
9
-
10
- name = models.CharField(max_length=255)
11
- sn = models.CharField(max_length=255)
12
-
13
- def natural_key(self):
14
- return (self.name, self.sn)
15
-
16
- def __str__(self):
17
- return self.name
18
-
19
- class Meta:
20
- ordering = ['name']
21
- verbose_name = 'Endoscope'
22
- verbose_name_plural = 'Endoscopes'
23
-
24
- class EndoscopeTypeManager(models.Manager):
25
- def get_by_natural_key(self, name):
26
- return self.get(name=name)
27
-
28
- class EndoscopeType(models.Model):
29
- objects = EndoscopeTypeManager()
30
-
31
- name = models.CharField(max_length=255)
32
- name_de = models.CharField(max_length=255, blank=True, null=True)
33
- name_en = models.CharField(max_length=255, blank=True, null=True)
34
-
35
- def natural_key(self):
36
- return (self.name,)
37
-
38
- def __str__(self):
39
- return self.name
40
-
41
- class Meta:
42
- ordering = ['name']
43
- verbose_name = 'Endoscope Type'
44
- verbose_name_plural = 'Endoscope Types'
1
+ from django.db import models
2
+
3
+ class EndoscopeManager(models.Manager):
4
+ def get_by_natural_key(self, name, sn):
5
+ return self.get(name=name, sn=sn)
6
+
7
+ class Endoscope(models.Model):
8
+ objects = EndoscopeManager()
9
+
10
+ name = models.CharField(max_length=255)
11
+ sn = models.CharField(max_length=255)
12
+
13
+ def natural_key(self):
14
+ return (self.name, self.sn)
15
+
16
+ def __str__(self):
17
+ return self.name
18
+
19
+ class Meta:
20
+ ordering = ['name']
21
+ verbose_name = 'Endoscope'
22
+ verbose_name_plural = 'Endoscopes'
23
+
24
+ class EndoscopeTypeManager(models.Manager):
25
+ def get_by_natural_key(self, name):
26
+ return self.get(name=name)
27
+
28
+ class EndoscopeType(models.Model):
29
+ objects = EndoscopeTypeManager()
30
+
31
+ name = models.CharField(max_length=255)
32
+ name_de = models.CharField(max_length=255, blank=True, null=True)
33
+ name_en = models.CharField(max_length=255, blank=True, null=True)
34
+
35
+ def natural_key(self):
36
+ return (self.name,)
37
+
38
+ def __str__(self):
39
+ return self.name
40
+
41
+ class Meta:
42
+ ordering = ['name']
43
+ verbose_name = 'Endoscope Type'
44
+ verbose_name_plural = 'Endoscope Types'
@@ -1,143 +1,143 @@
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
+ 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,22 +1,29 @@
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
- def __str__(self):
22
- return self.name
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,84 +1,84 @@
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
+ 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'))
@@ -0,0 +1 @@
1
+ from .lab_value import LabValue