endoreg-db 0.3.5__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 (341) hide show
  1. endoreg_db/admin.py +3 -3
  2. endoreg_db/apps.py +6 -6
  3. endoreg_db/data/__init__.py +64 -64
  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 -167
  6. endoreg_db/data/case_template/rule/01_patient-set-age.yaml +7 -7
  7. endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +8 -8
  8. endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +22 -22
  9. endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +18 -18
  10. endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +18 -18
  11. endoreg_db/data/case_template/rule/19_create_patient.yaml +16 -16
  12. endoreg_db/data/case_template/rule_type/base_types.yaml +35 -35
  13. endoreg_db/data/case_template/rule_value_type/base_types.yaml +58 -58
  14. endoreg_db/data/case_template/template/base.yaml +7 -7
  15. endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
  16. endoreg_db/data/case_template/tmp/_rule_value +13 -13
  17. endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
  18. endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
  19. endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
  20. endoreg_db/data/center/data.yaml +59 -59
  21. endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
  22. endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
  23. endoreg_db/data/disease/cardiovascular.yaml +37 -37
  24. endoreg_db/data/disease/hepatology.yaml +4 -4
  25. endoreg_db/data/disease/misc.yaml +5 -5
  26. endoreg_db/data/disease/renal.yaml +4 -4
  27. endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
  28. endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
  29. endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
  30. endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
  31. endoreg_db/data/distribution/date/patient.yaml +6 -6
  32. endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
  33. endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
  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 +27 -27
  37. endoreg_db/data/event/neurology.yaml +13 -13
  38. endoreg_db/data/event/surgery.yaml +12 -12
  39. endoreg_db/data/event/thrombembolism.yaml +19 -19
  40. endoreg_db/data/examination/examinations/data.yaml +65 -65
  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 -18
  45. endoreg_db/data/information_source/data.yaml +30 -30
  46. endoreg_db/data/information_source/medication.yaml +5 -5
  47. endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
  48. endoreg_db/data/lab_value/coagulation.yaml +48 -48
  49. endoreg_db/data/lab_value/electrolytes.yaml +189 -189
  50. endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
  51. endoreg_db/data/lab_value/hematology.yaml +169 -169
  52. endoreg_db/data/lab_value/hormones.yaml +53 -53
  53. endoreg_db/data/lab_value/lipids.yaml +44 -44
  54. endoreg_db/data/lab_value/misc.yaml +30 -30
  55. endoreg_db/data/lab_value/renal_function.yaml +10 -10
  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/medication/anticoagulation.yaml +64 -64
  60. endoreg_db/data/medication/tah.yaml +69 -69
  61. endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
  62. endoreg_db/data/medication_indication_type/data.yaml +10 -10
  63. endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
  64. endoreg_db/data/medication_intake_time/base.yaml +30 -30
  65. endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
  66. endoreg_db/data/medication_schedule/ass.yaml +12 -12
  67. endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
  68. endoreg_db/data/model_type/data.yaml +6 -6
  69. endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
  70. endoreg_db/data/pdf_type/data.yaml +28 -28
  71. endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
  72. endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
  73. endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
  74. endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
  75. endoreg_db/data/profession/data.yaml +70 -70
  76. endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
  77. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
  78. endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
  79. endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
  80. endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
  81. endoreg_db/data/unit/concentration.yaml +92 -92
  82. endoreg_db/data/unit/data.yaml +17 -17
  83. endoreg_db/data/unit/length.yaml +30 -30
  84. endoreg_db/data/unit/misc.yaml +19 -19
  85. endoreg_db/data/unit/rate.yaml +5 -5
  86. endoreg_db/data/unit/time.yaml +12 -12
  87. endoreg_db/data/unit/volume.yaml +35 -35
  88. endoreg_db/data/unit/weight.yaml +37 -37
  89. endoreg_db/data/waste/data.yaml +11 -11
  90. endoreg_db/forms/__init__.py +2 -2
  91. endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
  92. endoreg_db/forms/settings/__init__.py +8 -8
  93. endoreg_db/forms/unit.py +5 -5
  94. endoreg_db/management/commands/_load_model_template.py +40 -40
  95. endoreg_db/management/commands/delete_all.py +18 -18
  96. endoreg_db/management/commands/delete_legacy_images.py +19 -19
  97. endoreg_db/management/commands/delete_legacy_videos.py +16 -16
  98. endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
  99. endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
  100. endoreg_db/management/commands/fix_auth_permission.py +20 -20
  101. endoreg_db/management/commands/import_legacy_images.py +94 -94
  102. endoreg_db/management/commands/import_legacy_videos.py +76 -76
  103. endoreg_db/management/commands/load_active_model_data.py +44 -44
  104. endoreg_db/management/commands/load_ai_model_data.py +44 -44
  105. endoreg_db/management/commands/load_base_db_data.py +128 -128
  106. endoreg_db/management/commands/load_center_data.py +42 -42
  107. endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
  108. endoreg_db/management/commands/load_disease_classification_data.py +40 -40
  109. endoreg_db/management/commands/load_disease_data.py +39 -39
  110. endoreg_db/management/commands/load_distribution_data.py +65 -65
  111. endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
  112. endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
  113. endoreg_db/management/commands/load_event_data.py +40 -40
  114. endoreg_db/management/commands/load_examination_data.py +74 -74
  115. endoreg_db/management/commands/load_g_play_data.py +112 -112
  116. endoreg_db/management/commands/load_gender_data.py +43 -43
  117. endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
  118. endoreg_db/management/commands/load_information_source.py +44 -44
  119. endoreg_db/management/commands/load_lab_value_data.py +49 -49
  120. endoreg_db/management/commands/load_label_data.py +66 -66
  121. endoreg_db/management/commands/load_medication_data.py +40 -40
  122. endoreg_db/management/commands/load_medication_indication_data.py +62 -62
  123. endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
  124. endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
  125. endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
  126. endoreg_db/management/commands/load_pdf_type_data.py +60 -60
  127. endoreg_db/management/commands/load_profession_data.py +43 -43
  128. endoreg_db/management/commands/load_report_reader_flag.py +45 -45
  129. endoreg_db/management/commands/load_unit_data.py +45 -45
  130. endoreg_db/management/commands/load_user_groups.py +28 -28
  131. endoreg_db/management/commands/register_ai_model.py +65 -65
  132. endoreg_db/management/commands/reset_celery_schedule.py +9 -9
  133. endoreg_db/migrations/0001_initial.py +582 -582
  134. endoreg_db/migrations/0002_rawvideofile.py +26 -26
  135. endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
  136. endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
  137. endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
  138. endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
  139. endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
  140. endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
  141. endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
  142. endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
  143. endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
  144. endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
  145. endoreg_db/migrations/0013_rawpdffile.py +31 -31
  146. endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
  147. endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
  148. endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
  149. endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
  150. endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
  151. endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
  152. endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
  153. endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
  154. endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
  155. endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
  156. endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
  157. endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
  158. endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
  159. endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
  160. endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
  161. endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
  162. endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
  163. endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
  164. endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
  165. endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
  166. endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
  167. endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
  168. endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
  169. endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
  170. endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
  171. endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
  172. endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
  173. endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
  174. endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
  175. endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
  176. endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
  177. endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
  178. endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
  179. endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
  180. endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
  181. endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
  182. endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
  183. endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
  184. endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
  185. endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
  186. endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
  187. endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
  188. endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
  189. endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
  190. endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
  191. endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
  192. endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
  193. endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
  194. endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
  195. endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
  196. endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
  197. endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
  198. endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
  199. endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
  200. endoreg_db/models/__init__.py +74 -74
  201. endoreg_db/models/ai_model/__init__.py +3 -3
  202. endoreg_db/models/ai_model/active_model.py +9 -9
  203. endoreg_db/models/ai_model/model_meta.py +24 -24
  204. endoreg_db/models/ai_model/model_type.py +25 -25
  205. endoreg_db/models/ai_model/utils.py +8 -8
  206. endoreg_db/models/annotation/__init__.py +1 -1
  207. endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
  208. endoreg_db/models/annotation/image_classification.py +26 -26
  209. endoreg_db/models/case_template/__init__.py +5 -5
  210. endoreg_db/models/case_template/case_template.py +81 -81
  211. endoreg_db/models/case_template/case_template_rule.py +276 -276
  212. endoreg_db/models/case_template/case_template_rule_value.py +73 -73
  213. endoreg_db/models/case_template/case_template_type.py +27 -27
  214. endoreg_db/models/center/__init__.py +4 -4
  215. endoreg_db/models/center/center.py +24 -24
  216. endoreg_db/models/center/center_product.py +33 -33
  217. endoreg_db/models/center/center_resource.py +18 -18
  218. endoreg_db/models/center/center_waste.py +10 -10
  219. endoreg_db/models/data_file/__init__.py +5 -5
  220. endoreg_db/models/data_file/base_classes/__init__.py +2 -2
  221. endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
  222. endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
  223. endoreg_db/models/data_file/frame.py +45 -45
  224. endoreg_db/models/data_file/import_classes/__init__.py +31 -31
  225. endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
  226. endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
  227. endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
  228. endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
  229. endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
  230. endoreg_db/models/data_file/metadata/__init__.py +3 -3
  231. endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
  232. endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
  233. endoreg_db/models/data_file/metadata/video_meta.py +132 -132
  234. endoreg_db/models/data_file/report_file.py +89 -89
  235. endoreg_db/models/data_file/video/__init__.py +6 -6
  236. endoreg_db/models/data_file/video/import_meta.py +25 -25
  237. endoreg_db/models/data_file/video/video.py +25 -25
  238. endoreg_db/models/data_file/video_segment.py +107 -107
  239. endoreg_db/models/disease.py +55 -55
  240. endoreg_db/models/emission/emission_factor.py +19 -19
  241. endoreg_db/models/event.py +21 -21
  242. endoreg_db/models/examination/__init__.py +3 -3
  243. endoreg_db/models/examination/examination.py +26 -26
  244. endoreg_db/models/examination/examination_time.py +27 -27
  245. endoreg_db/models/examination/examination_time_type.py +24 -24
  246. endoreg_db/models/examination/examination_type.py +18 -18
  247. endoreg_db/models/hardware/__init__.py +1 -1
  248. endoreg_db/models/hardware/endoscope.py +44 -44
  249. endoreg_db/models/hardware/endoscopy_processor.py +143 -143
  250. endoreg_db/models/information_source.py +29 -29
  251. endoreg_db/models/label/label.py +84 -84
  252. endoreg_db/models/laboratory/lab_value.py +102 -102
  253. endoreg_db/models/legacy_data/__init__.py +3 -3
  254. endoreg_db/models/legacy_data/image.py +34 -34
  255. endoreg_db/models/medication/medication.py +148 -148
  256. endoreg_db/models/other/__init__.py +4 -4
  257. endoreg_db/models/other/distribution.py +215 -215
  258. endoreg_db/models/other/material.py +16 -16
  259. endoreg_db/models/other/resource.py +17 -17
  260. endoreg_db/models/other/transport_route.py +20 -20
  261. endoreg_db/models/other/waste.py +20 -20
  262. endoreg_db/models/patient_examination/__init__.py +35 -35
  263. endoreg_db/models/permissions/__init__.py +44 -44
  264. endoreg_db/models/persons/__init__.py +6 -6
  265. endoreg_db/models/persons/examiner/__init__.py +1 -1
  266. endoreg_db/models/persons/examiner/examiner.py +15 -15
  267. endoreg_db/models/persons/examiner/examiner_type.py +1 -1
  268. endoreg_db/models/persons/first_name.py +17 -17
  269. endoreg_db/models/persons/gender.py +22 -22
  270. endoreg_db/models/persons/last_name.py +19 -19
  271. endoreg_db/models/persons/patient/__init__.py +7 -7
  272. endoreg_db/models/persons/patient/case/case.py +30 -30
  273. endoreg_db/models/persons/patient/patient.py +216 -216
  274. endoreg_db/models/persons/patient/patient_disease.py +16 -16
  275. endoreg_db/models/persons/patient/patient_event.py +22 -22
  276. endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
  277. endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
  278. endoreg_db/models/persons/patient/patient_medication.py +43 -43
  279. endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
  280. endoreg_db/models/persons/person.py +31 -31
  281. endoreg_db/models/persons/portal_user_information.py +27 -27
  282. endoreg_db/models/prediction/__init__.py +1 -1
  283. endoreg_db/models/prediction/image_classification.py +37 -37
  284. endoreg_db/models/prediction/video_prediction_meta.py +244 -244
  285. endoreg_db/models/product/__init__.py +4 -4
  286. endoreg_db/models/product/product.py +97 -97
  287. endoreg_db/models/product/product_group.py +19 -19
  288. endoreg_db/models/product/product_material.py +24 -24
  289. endoreg_db/models/product/product_weight.py +26 -26
  290. endoreg_db/models/product/reference_product.py +99 -99
  291. endoreg_db/models/questionnaires/__init__.py +114 -114
  292. endoreg_db/models/quiz/__init__.py +1 -1
  293. endoreg_db/models/quiz/quiz_answer.py +41 -41
  294. endoreg_db/models/quiz/quiz_question.py +54 -54
  295. endoreg_db/models/report_reader/__init__.py +1 -1
  296. endoreg_db/models/report_reader/report_reader_config.py +53 -53
  297. endoreg_db/models/report_reader/report_reader_flag.py +19 -19
  298. endoreg_db/models/rules/__init__.py +4 -4
  299. endoreg_db/models/rules/rule.py +23 -23
  300. endoreg_db/models/rules/rule_applicator.py +224 -224
  301. endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
  302. endoreg_db/models/rules/rule_type.py +21 -21
  303. endoreg_db/models/rules/ruleset.py +19 -19
  304. endoreg_db/models/unit.py +21 -21
  305. endoreg_db/queries/__init__.py +4 -4
  306. endoreg_db/queries/annotations/__init__.py +2 -2
  307. endoreg_db/queries/annotations/legacy.py +159 -159
  308. endoreg_db/queries/get/__init__.py +5 -5
  309. endoreg_db/queries/get/center.py +42 -42
  310. endoreg_db/queries/get/model.py +13 -13
  311. endoreg_db/queries/get/patient.py +14 -14
  312. endoreg_db/queries/get/patient_examination.py +20 -20
  313. endoreg_db/queries/get/report_file.py +33 -33
  314. endoreg_db/queries/get/video.py +31 -31
  315. endoreg_db/serializers/__init__.py +9 -9
  316. endoreg_db/serializers/ai_model.py +18 -18
  317. endoreg_db/serializers/annotation.py +17 -17
  318. endoreg_db/serializers/center.py +11 -11
  319. endoreg_db/serializers/examination.py +32 -32
  320. endoreg_db/serializers/frame.py +13 -13
  321. endoreg_db/serializers/hardware.py +20 -20
  322. endoreg_db/serializers/label.py +22 -22
  323. endoreg_db/serializers/patient.py +10 -10
  324. endoreg_db/serializers/prediction.py +15 -15
  325. endoreg_db/serializers/report_file.py +7 -7
  326. endoreg_db/serializers/video.py +27 -27
  327. endoreg_db/tests.py +3 -3
  328. endoreg_db/utils/cropping.py +28 -28
  329. endoreg_db/utils/dataloader.py +92 -92
  330. endoreg_db/utils/file_operations.py +30 -30
  331. endoreg_db/utils/hashs.py +33 -33
  332. endoreg_db/utils/legacy_ocr.py +201 -201
  333. endoreg_db/utils/ocr.py +197 -197
  334. endoreg_db/utils/uuid.py +4 -4
  335. endoreg_db/utils/video_metadata.py +87 -87
  336. endoreg_db/views.py +3 -3
  337. {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/LICENSE +674 -674
  338. {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/METADATA +2 -2
  339. endoreg_db-0.3.6.dist-info/RECORD +357 -0
  340. {endoreg_db-0.3.5.dist-info → endoreg_db-0.3.6.dist-info}/WHEEL +1 -1
  341. endoreg_db-0.3.5.dist-info/RECORD +0 -357
@@ -1,114 +1,114 @@
1
- from django.db import models
2
-
3
- YES_NO_CHOICES = (
4
- ('yes', 'Ja'),
5
- ('no', 'Nein'),
6
- )
7
-
8
- class TtoQuestionnaire(models.Model):
9
-
10
- # Patient Information
11
- patient_name = models.CharField(max_length=255, verbose_name="Identifikation des Patienten (Name)")
12
- birth_date = models.DateField(verbose_name="Geburtsdatum")
13
-
14
- # Base documentation
15
- emergency_patient = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notfallpatient/kürzlich untersuchter Patient (Verzicht auf Team-Time-Out möglich)")
16
- consent_signed = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Einverständniserklärung unterschrieben (Arzt, Patient)")
17
- documents_present = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Alle Dokumente liegen vor (Labor, Befunde, etc.)")
18
- communication_possible = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Kommunikation mit Patient möglich")
19
- work_incapacity_certificate = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Arbeitsunfähigkeitsbescheinigung")
20
-
21
- # priority items
22
- pregnancy = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Schwangerschaft")
23
- asa_classification_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="ASA-Klassifikation/Komorbidität geprüft")
24
- previous_anesthesia_complications = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Komplikationen bei bisherigen Narkosen?")
25
- last_meal_over_6_hours_ago = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Zeitpunkt letzte Mahlzeit > 6 Stunden")
26
- allergies = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Allergien, welche?")
27
- outpatient_accompaniment_post_sedation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Nur bei ambulanter Vorstellung: Begleitung nach Sedierung?")
28
-
29
- # Possessions
30
- dental_prosthesis = models.BooleanField(default=False, verbose_name="Zahnprothese")
31
- glasses = models.BooleanField(default=False, verbose_name="Brille")
32
- implants = models.BooleanField(default=False, verbose_name="Implantate")
33
- hearing_aids = models.BooleanField(default=False, verbose_name="Hörgeräte")
34
-
35
-
36
- # Medical History
37
- anticoagulants_ass = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Antikoagulation, ASS")
38
- blood_pressure_medication = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Blutdruckmedikamente")
39
- glaucoma = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Glaukom")
40
-
41
- metal_implants = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Metallimplantate")
42
- pacemaker_icd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Herzschrittmacher/ICD")
43
-
44
- copd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="COPD")
45
- liver_cirrhosis = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Leberzirrhose")
46
-
47
- ibd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="CED (Chronisch entzündliche Darmerkrankungen)")
48
- radiation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Bestrahlung")
49
- surgeries = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="OP´s")
50
-
51
- # preflight
52
- team_introduction = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Teamvorstellung mit Name und Aufgabe")
53
- instruments_available = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notwendige Instrumente vorhanden?")
54
- monitoring_medications_equipment_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Monitoring, Medikamente, Equipment zum Atemwegsmanagement zur Verfügung und überprüft?")
55
- complete_documentation_inclusive_care_notes = models.TextField(verbose_name="Vollständige Dokumentation inklusive Hinweise für Nachsorge")
56
-
57
- # notes
58
- notes = models.TextField(verbose_name="Bemerkungen", default = "Keine Bemerkungen")
59
-
60
- # postflight
61
- specimens_secured = models.BooleanField(default=False, verbose_name="Histologische Proben gesichert")
62
- patient_condition_documented = models.TextField(verbose_name="Patientenzustand dokumentiert (je nach Ausgangszustand)")
63
-
64
-
65
-
66
- def __str__(self):
67
- return f"Endoscopy Questionnaire for {self.patient_name} on {self.birth_date}"
68
-
69
- def get_id_attributes(self):
70
- _ = [self.patient_name, self.birth_date]
71
- return _
72
-
73
- def get_base_documentation_attributes(self):
74
- _ = [self.emergency_patient, self.consent_signed, self.documents_present, self.communication_possible, self.work_incapacity_certificate]
75
- return _
76
-
77
- def get_priority_items_attributes(self):
78
- _ = [self.pregnancy, self.asa_classification_checked, self.previous_anesthesia_complications, self.last_meal_over_6_hours_ago, self.allergies, self.outpatient_accompaniment_post_sedation]
79
- return _
80
-
81
- def get_possessions_attributes(self):
82
- _ = [self.dental_prosthesis, self.glasses, self.implants, self.hearing_aids]
83
- return _
84
-
85
- def get_medical_history_attributes(self):
86
- _ = [
87
- self.anticoagulants_ass,
88
- self.blood_pressure_medication,
89
- self.glaucoma,
90
- self.metal_implants,
91
- self.pacemaker_icd,
92
- self.copd,
93
- self.liver_cirrhosis,
94
- self.ibd,
95
- self.radiation,
96
- self.surgeries,
97
- ]
98
-
99
- def get_preflight_attributes(self):
100
- _ = [
101
- self.team_introduction,
102
- self.instruments_available,
103
- self.monitoring_medications_equipment_checked,
104
- ]
105
-
106
- def get_note_attributes(self):
107
- _ = [self.notes]
108
-
109
- def get_postflight_attributes(self):
110
- _ = [
111
- self.specimens_secured,
112
- self.patient_condition_documented
113
- ]
114
-
1
+ from django.db import models
2
+
3
+ YES_NO_CHOICES = (
4
+ ('yes', 'Ja'),
5
+ ('no', 'Nein'),
6
+ )
7
+
8
+ class TtoQuestionnaire(models.Model):
9
+
10
+ # Patient Information
11
+ patient_name = models.CharField(max_length=255, verbose_name="Identifikation des Patienten (Name)")
12
+ birth_date = models.DateField(verbose_name="Geburtsdatum")
13
+
14
+ # Base documentation
15
+ emergency_patient = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notfallpatient/kürzlich untersuchter Patient (Verzicht auf Team-Time-Out möglich)")
16
+ consent_signed = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Einverständniserklärung unterschrieben (Arzt, Patient)")
17
+ documents_present = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Alle Dokumente liegen vor (Labor, Befunde, etc.)")
18
+ communication_possible = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Kommunikation mit Patient möglich")
19
+ work_incapacity_certificate = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Arbeitsunfähigkeitsbescheinigung")
20
+
21
+ # priority items
22
+ pregnancy = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Schwangerschaft")
23
+ asa_classification_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="ASA-Klassifikation/Komorbidität geprüft")
24
+ previous_anesthesia_complications = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Komplikationen bei bisherigen Narkosen?")
25
+ last_meal_over_6_hours_ago = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Zeitpunkt letzte Mahlzeit > 6 Stunden")
26
+ allergies = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Allergien, welche?")
27
+ outpatient_accompaniment_post_sedation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Nur bei ambulanter Vorstellung: Begleitung nach Sedierung?")
28
+
29
+ # Possessions
30
+ dental_prosthesis = models.BooleanField(default=False, verbose_name="Zahnprothese")
31
+ glasses = models.BooleanField(default=False, verbose_name="Brille")
32
+ implants = models.BooleanField(default=False, verbose_name="Implantate")
33
+ hearing_aids = models.BooleanField(default=False, verbose_name="Hörgeräte")
34
+
35
+
36
+ # Medical History
37
+ anticoagulants_ass = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Antikoagulation, ASS")
38
+ blood_pressure_medication = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Blutdruckmedikamente")
39
+ glaucoma = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Glaukom")
40
+
41
+ metal_implants = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Metallimplantate")
42
+ pacemaker_icd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Herzschrittmacher/ICD")
43
+
44
+ copd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="COPD")
45
+ liver_cirrhosis = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Leberzirrhose")
46
+
47
+ ibd = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="CED (Chronisch entzündliche Darmerkrankungen)")
48
+ radiation = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Bestrahlung")
49
+ surgeries = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="OP´s")
50
+
51
+ # preflight
52
+ team_introduction = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Teamvorstellung mit Name und Aufgabe")
53
+ instruments_available = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Notwendige Instrumente vorhanden?")
54
+ monitoring_medications_equipment_checked = models.CharField(max_length=3, choices=YES_NO_CHOICES, verbose_name="Monitoring, Medikamente, Equipment zum Atemwegsmanagement zur Verfügung und überprüft?")
55
+ complete_documentation_inclusive_care_notes = models.TextField(verbose_name="Vollständige Dokumentation inklusive Hinweise für Nachsorge")
56
+
57
+ # notes
58
+ notes = models.TextField(verbose_name="Bemerkungen", default = "Keine Bemerkungen")
59
+
60
+ # postflight
61
+ specimens_secured = models.BooleanField(default=False, verbose_name="Histologische Proben gesichert")
62
+ patient_condition_documented = models.TextField(verbose_name="Patientenzustand dokumentiert (je nach Ausgangszustand)")
63
+
64
+
65
+
66
+ def __str__(self):
67
+ return f"Endoscopy Questionnaire for {self.patient_name} on {self.birth_date}"
68
+
69
+ def get_id_attributes(self):
70
+ _ = [self.patient_name, self.birth_date]
71
+ return _
72
+
73
+ def get_base_documentation_attributes(self):
74
+ _ = [self.emergency_patient, self.consent_signed, self.documents_present, self.communication_possible, self.work_incapacity_certificate]
75
+ return _
76
+
77
+ def get_priority_items_attributes(self):
78
+ _ = [self.pregnancy, self.asa_classification_checked, self.previous_anesthesia_complications, self.last_meal_over_6_hours_ago, self.allergies, self.outpatient_accompaniment_post_sedation]
79
+ return _
80
+
81
+ def get_possessions_attributes(self):
82
+ _ = [self.dental_prosthesis, self.glasses, self.implants, self.hearing_aids]
83
+ return _
84
+
85
+ def get_medical_history_attributes(self):
86
+ _ = [
87
+ self.anticoagulants_ass,
88
+ self.blood_pressure_medication,
89
+ self.glaucoma,
90
+ self.metal_implants,
91
+ self.pacemaker_icd,
92
+ self.copd,
93
+ self.liver_cirrhosis,
94
+ self.ibd,
95
+ self.radiation,
96
+ self.surgeries,
97
+ ]
98
+
99
+ def get_preflight_attributes(self):
100
+ _ = [
101
+ self.team_introduction,
102
+ self.instruments_available,
103
+ self.monitoring_medications_equipment_checked,
104
+ ]
105
+
106
+ def get_note_attributes(self):
107
+ _ = [self.notes]
108
+
109
+ def get_postflight_attributes(self):
110
+ _ = [
111
+ self.specimens_secured,
112
+ self.patient_condition_documented
113
+ ]
114
+
@@ -1,2 +1,2 @@
1
- from .quiz_answer import QuizAnswer, QuizAnswerType
1
+ from .quiz_answer import QuizAnswer, QuizAnswerType
2
2
  from .quiz_question import QuizQuestion, QuizQuestionType
@@ -1,41 +1,41 @@
1
- from django.db import models
2
-
3
- class QuizAnswerTypeManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class QuizAnswerType(models.Model):
8
- objects = QuizAnswerTypeManager()
9
-
10
- name = models.CharField(max_length=255)
11
- description = models.TextField(blank=True, null=True)
12
-
13
- def natural_key(self):
14
- return (self.name,)
15
-
16
- def __str__(self):
17
- return self.name
18
-
19
- class QuizAnswerManager(models.Manager):
20
- def get_by_natural_key(self, text):
21
- return self.get(text=text)
22
-
23
- class QuizAnswer(models.Model):
24
- objects = QuizAnswerManager()
25
-
26
- text_value = models.CharField(max_length=255, null=True, blank=True)
27
- number_value = models.FloatField(null=True, blank=True)
28
- answer_type = models.ForeignKey("QuizAnswerType", on_delete=models.CASCADE)
29
- question = models.ForeignKey("QuizQuestion", on_delete=models.CASCADE)
30
-
31
- last_updated = models.DateTimeField(auto_now=True)
32
-
33
- #TODO add user as foreign key
34
-
35
- def natural_key(self):
36
- return (self.text,)
37
-
38
- def __str__(self):
39
- return self.text
40
-
41
-
1
+ from django.db import models
2
+
3
+ class QuizAnswerTypeManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ class QuizAnswerType(models.Model):
8
+ objects = QuizAnswerTypeManager()
9
+
10
+ name = models.CharField(max_length=255)
11
+ description = models.TextField(blank=True, null=True)
12
+
13
+ def natural_key(self):
14
+ return (self.name,)
15
+
16
+ def __str__(self):
17
+ return self.name
18
+
19
+ class QuizAnswerManager(models.Manager):
20
+ def get_by_natural_key(self, text):
21
+ return self.get(text=text)
22
+
23
+ class QuizAnswer(models.Model):
24
+ objects = QuizAnswerManager()
25
+
26
+ text_value = models.CharField(max_length=255, null=True, blank=True)
27
+ number_value = models.FloatField(null=True, blank=True)
28
+ answer_type = models.ForeignKey("QuizAnswerType", on_delete=models.CASCADE)
29
+ question = models.ForeignKey("QuizQuestion", on_delete=models.CASCADE)
30
+
31
+ last_updated = models.DateTimeField(auto_now=True)
32
+
33
+ #TODO add user as foreign key
34
+
35
+ def natural_key(self):
36
+ return (self.text,)
37
+
38
+ def __str__(self):
39
+ return self.text
40
+
41
+
@@ -1,54 +1,54 @@
1
- from django.db import models
2
-
3
- class QuizQuestionTypeManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class QuizQuestionType(models.Model):
8
- """
9
- A class representing a quiz question type.
10
-
11
- Attributes:
12
- name (str): The name of the quiz question type.
13
- description (str): A description of the quiz question type.
14
-
15
- """
16
- name = models.CharField(max_length=255)
17
- description = models.TextField(blank=True, null=True)
18
-
19
- objects = QuizQuestionTypeManager()
20
-
21
- def natural_key(self):
22
- return (self.name,)
23
-
24
- def __str__(self):
25
- return self.name
26
-
27
- class QuizQuestionManager(models.Manager):
28
- def get_by_natural_key(self, text):
29
- return self.get(text=text)
30
-
31
- class QuizQuestion(models.Model):
32
- """
33
- A class representing a quiz question.
34
-
35
- Attributes:
36
- text (str): The text of the quiz question.
37
- question_type (QuizQuestionType): The type of the quiz question.
38
- description (str): A description of the quiz question.
39
-
40
- """
41
- text = models.TextField()
42
- description = models.TextField(blank=True, null=True)
43
- question_type = models.ForeignKey("QuizQuestionType", on_delete=models.CASCADE)
44
-
45
- objects = QuizQuestionManager()
46
-
47
- def natural_key(self):
48
- return (self.text,)
49
-
50
- def __str__(self):
51
- return self.text
52
-
53
- def get_question_type(self):
54
- return self.question_type.name
1
+ from django.db import models
2
+
3
+ class QuizQuestionTypeManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ class QuizQuestionType(models.Model):
8
+ """
9
+ A class representing a quiz question type.
10
+
11
+ Attributes:
12
+ name (str): The name of the quiz question type.
13
+ description (str): A description of the quiz question type.
14
+
15
+ """
16
+ name = models.CharField(max_length=255)
17
+ description = models.TextField(blank=True, null=True)
18
+
19
+ objects = QuizQuestionTypeManager()
20
+
21
+ def natural_key(self):
22
+ return (self.name,)
23
+
24
+ def __str__(self):
25
+ return self.name
26
+
27
+ class QuizQuestionManager(models.Manager):
28
+ def get_by_natural_key(self, text):
29
+ return self.get(text=text)
30
+
31
+ class QuizQuestion(models.Model):
32
+ """
33
+ A class representing a quiz question.
34
+
35
+ Attributes:
36
+ text (str): The text of the quiz question.
37
+ question_type (QuizQuestionType): The type of the quiz question.
38
+ description (str): A description of the quiz question.
39
+
40
+ """
41
+ text = models.TextField()
42
+ description = models.TextField(blank=True, null=True)
43
+ question_type = models.ForeignKey("QuizQuestionType", on_delete=models.CASCADE)
44
+
45
+ objects = QuizQuestionManager()
46
+
47
+ def natural_key(self):
48
+ return (self.text,)
49
+
50
+ def __str__(self):
51
+ return self.text
52
+
53
+ def get_question_type(self):
54
+ return self.question_type.name
@@ -1,2 +1,2 @@
1
- from .report_reader_config import ReportReaderConfig
1
+ from .report_reader_config import ReportReaderConfig
2
2
  from .report_reader_flag import ReportReaderFlag
@@ -1,53 +1,53 @@
1
- # ReportReaderConfig Class
2
- # Description: This class is used to store the configuration of the ReportReader
3
-
4
- # PATIENT_INFO_LINE_FLAG = "Patient: "
5
- # ENDOSCOPE_INFO_LINE_FLAG = "Gerät: "
6
- # EXAMINER_INFO_LINE_FLAG = "1. Unters.:"
7
- # CUT_OFF_BELOW_LINE_FLAG = "________________"
8
-
9
-
10
- # CUT_OFF_ABOVE_LINE_FLAGS = [
11
- # ENDOSCOPE_INFO_LINE_FLAG,
12
- # EXAMINER_INFO_LINE_FLAG,
13
- # ]
14
-
15
- # CUT_OFF_BELOW_LINE_FLAGS = [
16
- # CUT_OFF_BELOW_LINE_FLAG
17
- # ]
18
-
19
- from django.db import models
20
- from .report_reader_flag import ReportReaderFlag
21
- from ..center import Center
22
- from ..data_file import PdfType
23
-
24
- class ReportReaderConfig(models.Model):
25
-
26
- locale = models.CharField(default="de_DE", max_length=10)
27
- first_names = models.ManyToManyField('FirstName', related_name='report_reader_configs')
28
- last_names = models.ManyToManyField('LastName', related_name='report_reader_configs')
29
- text_date_format = models.CharField(default = "%d.%m.%Y", max_length=10)
30
- patient_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_patient_info_line', on_delete=models.CASCADE)
31
- endoscope_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_endoscope_info_line', on_delete=models.CASCADE)
32
- examiner_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_examiner_info_line', on_delete=models.CASCADE)
33
- cut_off_below = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_below')
34
- cut_off_above = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_above')
35
-
36
- def __str__(self):
37
- return self.locale
38
-
39
- def update_names_by_center(self, center:Center, save = True):
40
- self.first_names.set(center.first_names.all())
41
- self.last_names.set(center.last_names.all())
42
- if save:
43
- self.save()
44
-
45
- def update_flags_by_pdf_type(self, pdf_type:PdfType, save = True):
46
- self.patient_info_line_flag = pdf_type.patient_info_line_flag
47
- self.endoscope_info_line_flag = pdf_type.endoscope_info_line_flag
48
- self.examiner_info_line_flag = pdf_type.examiner_info_line_flag
49
- self.cut_off_below.set(pdf_type.cut_off_below.all())
50
- self.cut_off_above.set(pdf_type.cut_off_above.all())
51
- if save:
52
- self.save()
53
-
1
+ # ReportReaderConfig Class
2
+ # Description: This class is used to store the configuration of the ReportReader
3
+
4
+ # PATIENT_INFO_LINE_FLAG = "Patient: "
5
+ # ENDOSCOPE_INFO_LINE_FLAG = "Gerät: "
6
+ # EXAMINER_INFO_LINE_FLAG = "1. Unters.:"
7
+ # CUT_OFF_BELOW_LINE_FLAG = "________________"
8
+
9
+
10
+ # CUT_OFF_ABOVE_LINE_FLAGS = [
11
+ # ENDOSCOPE_INFO_LINE_FLAG,
12
+ # EXAMINER_INFO_LINE_FLAG,
13
+ # ]
14
+
15
+ # CUT_OFF_BELOW_LINE_FLAGS = [
16
+ # CUT_OFF_BELOW_LINE_FLAG
17
+ # ]
18
+
19
+ from django.db import models
20
+ from .report_reader_flag import ReportReaderFlag
21
+ from ..center import Center
22
+ from ..data_file import PdfType
23
+
24
+ class ReportReaderConfig(models.Model):
25
+
26
+ locale = models.CharField(default="de_DE", max_length=10)
27
+ first_names = models.ManyToManyField('FirstName', related_name='report_reader_configs')
28
+ last_names = models.ManyToManyField('LastName', related_name='report_reader_configs')
29
+ text_date_format = models.CharField(default = "%d.%m.%Y", max_length=10)
30
+ patient_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_patient_info_line', on_delete=models.CASCADE)
31
+ endoscope_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_endoscope_info_line', on_delete=models.CASCADE)
32
+ examiner_info_line_flag = models.ForeignKey(ReportReaderFlag, related_name='report_reader_configs_examiner_info_line', on_delete=models.CASCADE)
33
+ cut_off_below = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_below')
34
+ cut_off_above = models.ManyToManyField(ReportReaderFlag, related_name='report_reader_configs_cut_off_above')
35
+
36
+ def __str__(self):
37
+ return self.locale
38
+
39
+ def update_names_by_center(self, center:Center, save = True):
40
+ self.first_names.set(center.first_names.all())
41
+ self.last_names.set(center.last_names.all())
42
+ if save:
43
+ self.save()
44
+
45
+ def update_flags_by_pdf_type(self, pdf_type:PdfType, save = True):
46
+ self.patient_info_line_flag = pdf_type.patient_info_line_flag
47
+ self.endoscope_info_line_flag = pdf_type.endoscope_info_line_flag
48
+ self.examiner_info_line_flag = pdf_type.examiner_info_line_flag
49
+ self.cut_off_below.set(pdf_type.cut_off_below.all())
50
+ self.cut_off_above.set(pdf_type.cut_off_above.all())
51
+ if save:
52
+ self.save()
53
+
@@ -1,20 +1,20 @@
1
- # Django model for the report reader flag
2
- # have name and value
3
- # name is natural key
4
-
5
- from django.db import models
6
-
7
- class ReportReaderFlagManager(models.Manager):
8
- def get_by_natural_key(self, name):
9
- return self.get(name=name)
10
-
11
- class ReportReaderFlag(models.Model):
12
- objects = ReportReaderFlagManager()
13
- name = models.CharField(max_length=255, unique=True)
14
- value = models.CharField(max_length=255)
15
-
16
- def natural_key(self):
17
- return (self.name,)
18
-
19
- def __str__(self):
1
+ # Django model for the report reader flag
2
+ # have name and value
3
+ # name is natural key
4
+
5
+ from django.db import models
6
+
7
+ class ReportReaderFlagManager(models.Manager):
8
+ def get_by_natural_key(self, name):
9
+ return self.get(name=name)
10
+
11
+ class ReportReaderFlag(models.Model):
12
+ objects = ReportReaderFlagManager()
13
+ name = models.CharField(max_length=255, unique=True)
14
+ value = models.CharField(max_length=255)
15
+
16
+ def natural_key(self):
17
+ return (self.name,)
18
+
19
+ def __str__(self):
20
20
  return self.name
@@ -1,5 +1,5 @@
1
- from .rule_type import RuleType
2
- from .rule import Rule
3
- from .ruleset import Ruleset
4
- from .rule_attribute_dtype import RuleAttributeDType
1
+ from .rule_type import RuleType
2
+ from .rule import Rule
3
+ from .ruleset import Ruleset
4
+ from .rule_attribute_dtype import RuleAttributeDType
5
5
  from .rule_applicator import RuleApplicator
@@ -1,24 +1,24 @@
1
- from django.db import models
2
-
3
- class RuleManager(models.Manager):
4
- def get_by_natural_key(self, name):
5
- return self.get(name=name)
6
-
7
- class Rule(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
- description = models.TextField(blank=True, null=True)
12
- attribute_key = models.CharField(max_length=255)
13
- rule_type = models.ForeignKey("RuleType", on_delete=models.CASCADE)
14
- attribute_dtype = models.ForeignKey("RuleAttributeDType", on_delete=models.CASCADE)
15
-
16
- objects = RuleManager()
17
-
18
- class Meta:
19
- verbose_name = 'Rule'
20
- verbose_name_plural = 'Rules'
21
-
22
- def natural_key(self):
23
- return (self.name,)
1
+ from django.db import models
2
+
3
+ class RuleManager(models.Manager):
4
+ def get_by_natural_key(self, name):
5
+ return self.get(name=name)
6
+
7
+ class Rule(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
+ description = models.TextField(blank=True, null=True)
12
+ attribute_key = models.CharField(max_length=255)
13
+ rule_type = models.ForeignKey("RuleType", on_delete=models.CASCADE)
14
+ attribute_dtype = models.ForeignKey("RuleAttributeDType", on_delete=models.CASCADE)
15
+
16
+ objects = RuleManager()
17
+
18
+ class Meta:
19
+ verbose_name = 'Rule'
20
+ verbose_name_plural = 'Rules'
21
+
22
+ def natural_key(self):
23
+ return (self.name,)
24
24