endoreg-db 0.5.3__py3-none-any.whl → 0.6.1__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 (268) hide show
  1. endoreg_db/admin.py +90 -1
  2. endoreg_db/case_generator/case_generator.py +159 -0
  3. endoreg_db/case_generator/lab_sample_factory.py +33 -0
  4. endoreg_db/case_generator/utils.py +30 -0
  5. endoreg_db/data/__init__.py +50 -4
  6. endoreg_db/data/ai_model/data.yaml +7 -0
  7. endoreg_db/data/{label → ai_model_label}/label/data.yaml +27 -1
  8. endoreg_db/data/ai_model_label/label-set/data.yaml +21 -0
  9. endoreg_db/data/ai_model_meta/default_multilabel_classification.yaml +5 -0
  10. endoreg_db/data/ai_model_video_segmentation_label/base_segmentation.yaml +176 -0
  11. endoreg_db/data/ai_model_video_segmentation_labelset/data.yaml +20 -0
  12. endoreg_db/data/center/data.yaml +35 -5
  13. endoreg_db/data/contraindication/bleeding.yaml +11 -0
  14. endoreg_db/data/distribution/numeric/data.yaml +14 -0
  15. endoreg_db/data/endoscope/data.yaml +93 -0
  16. endoreg_db/data/examination_indication/endoscopy.yaml +8 -0
  17. endoreg_db/data/examination_indication_classification/endoscopy.yaml +8 -0
  18. endoreg_db/data/examination_indication_classification_choice/endoscopy.yaml +101 -0
  19. endoreg_db/data/finding/data.yaml +141 -0
  20. endoreg_db/data/finding_intervention/endoscopy.yaml +138 -0
  21. endoreg_db/data/finding_intervention_type/endoscopy.yaml +15 -0
  22. endoreg_db/data/finding_location_classification/colonoscopy.yaml +46 -0
  23. endoreg_db/data/finding_location_classification_choice/colonoscopy.yaml +240 -0
  24. endoreg_db/data/finding_morphology_classification/colonoscopy.yaml +48 -0
  25. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_circularity_default.yaml +34 -0
  26. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_nice.yaml +20 -0
  27. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_paris.yaml +65 -0
  28. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_planarity_default.yaml +56 -0
  29. endoreg_db/data/finding_morphology_classification_choice/colon_lesion_surface_intact_default.yaml +39 -0
  30. endoreg_db/data/finding_morphology_classification_choice/colonoscopy_size.yaml +57 -0
  31. endoreg_db/data/finding_morphology_classification_type/colonoscopy.yaml +79 -0
  32. endoreg_db/data/finding_type/data.yaml +30 -0
  33. endoreg_db/data/gender/data.yaml +17 -0
  34. endoreg_db/data/lab_value/cardiac_enzymes.yaml +7 -1
  35. endoreg_db/data/lab_value/coagulation.yaml +6 -1
  36. endoreg_db/data/lab_value/electrolytes.yaml +39 -1
  37. endoreg_db/data/lab_value/gastrointestinal_function.yaml +12 -0
  38. endoreg_db/data/lab_value/hematology.yaml +17 -2
  39. endoreg_db/data/lab_value/hormones.yaml +6 -0
  40. endoreg_db/data/lab_value/lipids.yaml +12 -3
  41. endoreg_db/data/lab_value/misc.yaml +5 -2
  42. endoreg_db/data/lab_value/renal_function.yaml +2 -1
  43. endoreg_db/data/lx_client_tag/base.yaml +54 -0
  44. endoreg_db/data/lx_client_type/base.yaml +30 -0
  45. endoreg_db/data/lx_permission/base.yaml +24 -0
  46. endoreg_db/data/lx_permission/endoreg.yaml +52 -0
  47. endoreg_db/data/medication_indication/anticoagulation.yaml +44 -49
  48. endoreg_db/data/names_first/first_names.yaml +51 -0
  49. endoreg_db/data/names_last/last_names.yaml +51 -0
  50. endoreg_db/data/network_device/data.yaml +30 -0
  51. endoreg_db/data/organ/data.yaml +29 -0
  52. endoreg_db/data/pdf_type/data.yaml +2 -1
  53. endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +4 -0
  54. endoreg_db/forms/__init__.py +3 -1
  55. endoreg_db/forms/examination_form.py +11 -0
  56. endoreg_db/forms/patient_finding_intervention_form.py +19 -0
  57. endoreg_db/forms/patient_form.py +26 -0
  58. endoreg_db/management/commands/__init__.py +0 -0
  59. endoreg_db/management/commands/load_ai_model_data.py +57 -23
  60. endoreg_db/management/commands/load_ai_model_label_data.py +59 -0
  61. endoreg_db/management/commands/load_base_db_data.py +160 -118
  62. endoreg_db/management/commands/{load_endoscope_type_data.py → load_contraindication_data.py} +3 -7
  63. endoreg_db/management/commands/load_disease_data.py +29 -7
  64. endoreg_db/management/commands/load_endoscope_data.py +68 -0
  65. endoreg_db/management/commands/load_examination_indication_data.py +65 -0
  66. endoreg_db/management/commands/load_finding_data.py +171 -0
  67. endoreg_db/management/commands/load_lab_value_data.py +3 -3
  68. endoreg_db/management/commands/load_lx_data.py +64 -0
  69. endoreg_db/management/commands/load_medication_data.py +83 -21
  70. endoreg_db/management/commands/load_name_data.py +37 -0
  71. endoreg_db/management/commands/{load_endoscopy_processor_data.py → load_organ_data.py} +7 -9
  72. endoreg_db/migrations/0001_initial.py +1206 -728
  73. endoreg_db/migrations/0002_alter_frame_image_alter_rawframe_image.py +23 -0
  74. endoreg_db/migrations/0003_alter_frame_image_alter_rawframe_image.py +23 -0
  75. endoreg_db/migrations/0004_alter_rawvideofile_file_alter_video_file.py +25 -0
  76. endoreg_db/migrations/0005_rawvideofile_frame_count_and_more.py +33 -0
  77. endoreg_db/migrations/0006_frame_extracted_rawframe_extracted.py +23 -0
  78. endoreg_db/migrations/0007_rename_pseudo_patient_video_patient_and_more.py +24 -0
  79. endoreg_db/migrations/0008_remove_reportfile_patient_examination_and_more.py +48 -0
  80. endoreg_db/models/__init__.py +331 -28
  81. endoreg_db/models/ai_model/__init__.py +1 -0
  82. endoreg_db/models/ai_model/ai_model.py +103 -0
  83. endoreg_db/models/ai_model/lightning/__init__.py +3 -0
  84. endoreg_db/models/ai_model/lightning/inference_dataset.py +53 -0
  85. endoreg_db/models/ai_model/lightning/multilabel_classification_net.py +155 -0
  86. endoreg_db/models/ai_model/lightning/postprocess.py +53 -0
  87. endoreg_db/models/ai_model/lightning/predict.py +172 -0
  88. endoreg_db/models/ai_model/lightning/prediction_visualizer.py +55 -0
  89. endoreg_db/models/ai_model/lightning/preprocess.py +68 -0
  90. endoreg_db/models/ai_model/lightning/run_visualizer.py +21 -0
  91. endoreg_db/models/ai_model/model_meta.py +232 -6
  92. endoreg_db/models/ai_model/model_type.py +13 -3
  93. endoreg_db/models/annotation/__init__.py +31 -2
  94. endoreg_db/models/annotation/anonymized_image_annotation.py +73 -18
  95. endoreg_db/models/annotation/binary_classification_annotation_task.py +94 -57
  96. endoreg_db/models/annotation/image_classification.py +73 -14
  97. endoreg_db/models/annotation/video_segmentation_annotation.py +52 -0
  98. endoreg_db/models/annotation/video_segmentation_labelset.py +20 -0
  99. endoreg_db/models/case/__init__.py +1 -0
  100. endoreg_db/models/{persons/patient/case → case}/case.py +4 -0
  101. endoreg_db/models/case_template/__init__.py +10 -1
  102. endoreg_db/models/case_template/case_template.py +57 -13
  103. endoreg_db/models/case_template/case_template_rule.py +5 -5
  104. endoreg_db/models/case_template/case_template_rule_value.py +19 -4
  105. endoreg_db/models/center/__init__.py +7 -0
  106. endoreg_db/models/center/center.py +31 -5
  107. endoreg_db/models/center/center_product.py +0 -1
  108. endoreg_db/models/center/center_resource.py +16 -2
  109. endoreg_db/models/center/center_waste.py +6 -1
  110. endoreg_db/models/contraindication/__init__.py +21 -0
  111. endoreg_db/models/data_file/__init__.py +38 -5
  112. endoreg_db/models/data_file/base_classes/__init__.py +6 -1
  113. endoreg_db/models/data_file/base_classes/abstract_frame.py +64 -15
  114. endoreg_db/models/data_file/base_classes/abstract_pdf.py +136 -0
  115. endoreg_db/models/data_file/base_classes/abstract_video.py +744 -138
  116. endoreg_db/models/data_file/base_classes/frame_helpers.py +17 -0
  117. endoreg_db/models/data_file/base_classes/prepare_bulk_frames.py +19 -0
  118. endoreg_db/models/data_file/base_classes/utils.py +80 -0
  119. endoreg_db/models/data_file/frame.py +22 -38
  120. endoreg_db/models/data_file/import_classes/__init__.py +4 -18
  121. endoreg_db/models/data_file/import_classes/raw_pdf.py +162 -90
  122. endoreg_db/models/data_file/import_classes/raw_video.py +239 -294
  123. endoreg_db/models/data_file/metadata/__init__.py +10 -0
  124. endoreg_db/models/data_file/metadata/pdf_meta.py +4 -0
  125. endoreg_db/models/data_file/metadata/sensitive_meta.py +265 -6
  126. endoreg_db/models/data_file/metadata/video_meta.py +116 -50
  127. endoreg_db/models/data_file/report_file.py +30 -63
  128. endoreg_db/models/data_file/video/__init__.py +6 -2
  129. endoreg_db/models/data_file/video/video.py +187 -16
  130. endoreg_db/models/data_file/video_segment.py +162 -55
  131. endoreg_db/models/disease.py +25 -2
  132. endoreg_db/models/emission/__init__.py +5 -1
  133. endoreg_db/models/emission/emission_factor.py +71 -6
  134. endoreg_db/models/event.py +51 -0
  135. endoreg_db/models/examination/__init__.py +6 -1
  136. endoreg_db/models/examination/examination.py +53 -12
  137. endoreg_db/models/examination/examination_indication.py +170 -0
  138. endoreg_db/models/examination/examination_time.py +31 -5
  139. endoreg_db/models/examination/examination_time_type.py +28 -4
  140. endoreg_db/models/examination/examination_type.py +28 -6
  141. endoreg_db/models/finding/__init__.py +11 -0
  142. endoreg_db/models/finding/finding.py +75 -0
  143. endoreg_db/models/finding/finding_intervention.py +60 -0
  144. endoreg_db/models/finding/finding_location_classification.py +94 -0
  145. endoreg_db/models/finding/finding_morphology_classification.py +89 -0
  146. endoreg_db/models/finding/finding_type.py +22 -0
  147. endoreg_db/models/hardware/endoscope.py +16 -0
  148. endoreg_db/models/hardware/endoscopy_processor.py +31 -19
  149. endoreg_db/models/label/label.py +35 -7
  150. endoreg_db/models/laboratory/lab_value.py +12 -3
  151. endoreg_db/models/logging/__init__.py +8 -1
  152. endoreg_db/models/lx/__init__.py +4 -0
  153. endoreg_db/models/lx/client.py +57 -0
  154. endoreg_db/models/lx/identity.py +34 -0
  155. endoreg_db/models/lx/permission.py +18 -0
  156. endoreg_db/models/lx/user.py +16 -0
  157. endoreg_db/models/medication/__init__.py +19 -1
  158. endoreg_db/models/medication/medication.py +7 -122
  159. endoreg_db/models/medication/medication_indication.py +50 -0
  160. endoreg_db/models/medication/medication_indication_type.py +34 -0
  161. endoreg_db/models/medication/medication_intake_time.py +26 -0
  162. endoreg_db/models/medication/medication_schedule.py +37 -0
  163. endoreg_db/models/network/__init__.py +7 -1
  164. endoreg_db/models/network/network_device.py +13 -8
  165. endoreg_db/models/organ/__init__.py +38 -0
  166. endoreg_db/models/other/__init__.py +19 -1
  167. endoreg_db/models/other/distribution/__init__.py +44 -0
  168. endoreg_db/models/other/distribution/base_value_distribution.py +20 -0
  169. endoreg_db/models/other/distribution/date_value_distribution.py +91 -0
  170. endoreg_db/models/other/distribution/multiple_categorical_value_distribution.py +32 -0
  171. endoreg_db/models/other/distribution/numeric_value_distribution.py +97 -0
  172. endoreg_db/models/other/distribution/single_categorical_value_distribution.py +22 -0
  173. endoreg_db/models/other/distribution.py +1 -211
  174. endoreg_db/models/other/material.py +4 -0
  175. endoreg_db/models/other/transport_route.py +2 -1
  176. endoreg_db/models/patient/__init__.py +24 -0
  177. endoreg_db/models/patient/patient_examination.py +182 -0
  178. endoreg_db/models/patient/patient_finding.py +143 -0
  179. endoreg_db/models/patient/patient_finding_intervention.py +26 -0
  180. endoreg_db/models/patient/patient_finding_location.py +120 -0
  181. endoreg_db/models/patient/patient_finding_morphology.py +166 -0
  182. endoreg_db/models/persons/__init__.py +29 -2
  183. endoreg_db/models/persons/examiner/examiner.py +48 -4
  184. endoreg_db/models/persons/patient/__init__.py +1 -1
  185. endoreg_db/models/persons/patient/patient.py +227 -54
  186. endoreg_db/models/persons/patient/patient_disease.py +6 -0
  187. endoreg_db/models/persons/patient/patient_event.py +31 -1
  188. endoreg_db/models/persons/patient/patient_examination_indication.py +32 -0
  189. endoreg_db/models/persons/patient/patient_lab_sample.py +4 -2
  190. endoreg_db/models/persons/patient/patient_lab_value.py +37 -16
  191. endoreg_db/models/persons/patient/patient_medication.py +27 -12
  192. endoreg_db/models/persons/patient/patient_medication_schedule.py +62 -2
  193. endoreg_db/models/prediction/__init__.py +7 -1
  194. endoreg_db/models/prediction/image_classification.py +20 -6
  195. endoreg_db/models/prediction/video_prediction_meta.py +151 -89
  196. endoreg_db/models/product/__init__.py +10 -1
  197. endoreg_db/models/product/product.py +15 -2
  198. endoreg_db/models/product/product_group.py +8 -0
  199. endoreg_db/models/product/product_material.py +4 -0
  200. endoreg_db/models/product/product_weight.py +12 -0
  201. endoreg_db/models/product/reference_product.py +19 -3
  202. endoreg_db/models/quiz/__init__.py +8 -1
  203. endoreg_db/models/report_reader/__init__.py +6 -1
  204. endoreg_db/serializers/__init__.py +1 -1
  205. endoreg_db/serializers/annotation.py +2 -5
  206. endoreg_db/serializers/frame.py +1 -5
  207. endoreg_db/serializers/patient.py +26 -3
  208. endoreg_db/serializers/prediction.py +2 -7
  209. endoreg_db/serializers/raw_video_meta_validation.py +13 -0
  210. endoreg_db/serializers/video.py +6 -13
  211. endoreg_db/serializers/video_segmentation.py +492 -0
  212. endoreg_db/templates/admin/patient_finding_intervention.html +253 -0
  213. endoreg_db/templates/admin/start_examination.html +12 -0
  214. endoreg_db/templates/timeline.html +176 -0
  215. endoreg_db/urls.py +173 -0
  216. endoreg_db/utils/__init__.py +36 -1
  217. endoreg_db/utils/dataloader.py +45 -19
  218. endoreg_db/utils/dates.py +39 -0
  219. endoreg_db/utils/hashs.py +122 -4
  220. endoreg_db/utils/names.py +74 -0
  221. endoreg_db/utils/parse_and_generate_yaml.py +46 -0
  222. endoreg_db/utils/pydantic_models/__init__.py +6 -0
  223. endoreg_db/utils/pydantic_models/db_config.py +57 -0
  224. endoreg_db/utils/validate_endo_roi.py +19 -0
  225. endoreg_db/utils/validate_subcategory_dict.py +91 -0
  226. endoreg_db/utils/video/__init__.py +13 -0
  227. endoreg_db/utils/video/extract_frames.py +121 -0
  228. endoreg_db/utils/video/transcode_videofile.py +111 -0
  229. endoreg_db/views/__init__.py +2 -0
  230. endoreg_db/views/csrf.py +7 -0
  231. endoreg_db/views/patient_views.py +90 -0
  232. endoreg_db/views/raw_video_meta_validation_views.py +38 -0
  233. endoreg_db/views/report_views.py +96 -0
  234. endoreg_db/views/video_segmentation_views.py +149 -0
  235. endoreg_db/views/views_for_timeline.py +46 -0
  236. endoreg_db/views.py +0 -3
  237. endoreg_db-0.6.1.dist-info/METADATA +151 -0
  238. endoreg_db-0.6.1.dist-info/RECORD +420 -0
  239. {endoreg_db-0.5.3.dist-info → endoreg_db-0.6.1.dist-info}/WHEEL +1 -1
  240. endoreg_db/data/active_model/data.yaml +0 -3
  241. endoreg_db/data/label/label-set/data.yaml +0 -18
  242. endoreg_db/management/commands/delete_legacy_images.py +0 -19
  243. endoreg_db/management/commands/delete_legacy_videos.py +0 -17
  244. endoreg_db/management/commands/extract_legacy_video_frames.py +0 -18
  245. endoreg_db/management/commands/import_legacy_images.py +0 -94
  246. endoreg_db/management/commands/import_legacy_videos.py +0 -76
  247. endoreg_db/management/commands/load_label_data.py +0 -67
  248. endoreg_db/migrations/0002_anonymizedimagelabel_anonymousimageannotation_and_more.py +0 -55
  249. endoreg_db/migrations/0003_anonymousimageannotation_original_image_url_and_more.py +0 -39
  250. endoreg_db/migrations/0004_alter_rawpdffile_file.py +0 -20
  251. endoreg_db/migrations/0005_uploadedfile_alter_rawpdffile_file_anonymizedfile.py +0 -40
  252. endoreg_db/migrations/0006_alter_rawpdffile_file.py +0 -20
  253. endoreg_db/migrations/0007_networkdevicelogentry_datetime_and_more.py +0 -43
  254. endoreg_db/migrations/0008_networkdevicelogentry_aglnet_ip_and_more.py +0 -28
  255. endoreg_db/migrations/0009_alter_networkdevicelogentry_vpn_service_status.py +0 -18
  256. endoreg_db/migrations/0010_remove_networkdevicelogentry_hostname.py +0 -17
  257. endoreg_db/models/legacy_data/__init__.py +0 -3
  258. endoreg_db/models/legacy_data/image.py +0 -34
  259. endoreg_db/models/patient_examination/__init__.py +0 -35
  260. endoreg_db/utils/video_metadata.py +0 -87
  261. endoreg_db-0.5.3.dist-info/METADATA +0 -28
  262. endoreg_db-0.5.3.dist-info/RECORD +0 -319
  263. /endoreg_db/{models/persons/patient/case → case_generator}/__init__.py +0 -0
  264. /endoreg_db/data/{label → ai_model_label}/label-type/data.yaml +0 -0
  265. /endoreg_db/data/{model_type → ai_model_type}/data.yaml +0 -0
  266. /endoreg_db/{data/distribution/numeric/.init → management/__init__.py} +0 -0
  267. /endoreg_db/management/commands/{load_report_reader_flag.py → load_report_reader_flag_data.py} +0 -0
  268. {endoreg_db-0.5.3.dist-info → endoreg_db-0.6.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,24 @@
1
+
2
+ # BASE_PERMISSION_NAMES = [
3
+ # "local_admin",
4
+ # "local_user",
5
+ # "local_base_db_read",
6
+ # "local_base_db_write",
7
+ # ]
8
+
9
+ - model: endoreg_db.lx_permission
10
+ fields:
11
+ name: "local_admin"
12
+
13
+ - model: endoreg_db.lx_permission
14
+ fields:
15
+ name: "local_user"
16
+
17
+ - model: endoreg_db.lx_permission
18
+ fields:
19
+ name: "local_base_db_read"
20
+
21
+ - model: endoreg_db.lx_permission
22
+ fields:
23
+ name: "local_base_db_write"
24
+
@@ -0,0 +1,52 @@
1
+ # EndoReg Base DB
2
+ - model: endoreg_db.lx_permission
3
+ fields:
4
+ name: "endoreg_base_db_read"
5
+
6
+ - model: endoreg_db.lx_permission
7
+ fields:
8
+ name: "endoreg_base_db_write"
9
+
10
+ - model: endoreg_db.lx_permission
11
+ fields:
12
+ name: "endoreg_base_db_admin"
13
+
14
+ - model: endoreg_db.lx_permission
15
+ fields:
16
+ name: "endoreg_base_db_user"
17
+
18
+
19
+ # EndoReg Backup DB
20
+ - model: endoreg_db.lx_permission
21
+ fields:
22
+ name: "endoreg_backup_db_read"
23
+
24
+ - model: endoreg_db.lx_permission
25
+ fields:
26
+ name: "endoreg_backup_db_write"
27
+
28
+ - model: endoreg_db.lx_permission
29
+ fields:
30
+ name: "endoreg_backup_db_admin"
31
+
32
+ - model: endoreg_db.lx_permission
33
+ fields:
34
+ name: "endoreg_backup_db_user"
35
+
36
+
37
+ # EndoReg Test DB
38
+ - model: endoreg_db.lx_permission
39
+ fields:
40
+ name: "endoreg_test_db_read"
41
+
42
+ - model: endoreg_db.lx_permission
43
+ fields:
44
+ name: "endoreg_test_db_write"
45
+
46
+ - model: endoreg_db.lx_permission
47
+ fields:
48
+ name: "endoreg_test_db_admin"
49
+
50
+ - model: endoreg_db.lx_permission
51
+ fields:
52
+ name: "endoreg_test_db_user"
@@ -3,37 +3,37 @@
3
3
  fields:
4
4
  name: "te_prevention-after_hip-apixaban"
5
5
  events: ["hip_replacement"]
6
+ diseases: []
7
+ disease_classification_choices: []
6
8
  medication_schedules: [
7
- "apixaban-2.5mg-twice_daily_32d", # min 32d, max 38d
8
- ]
9
+ "apixaban-2.5mg-twice_daily_32d", # min 32d, max 38d
10
+ ]
9
11
  indication_type: "thromboembolism-prevention-after_hip_replacement"
10
- sources: [
11
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
12
- ]
12
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
13
13
 
14
14
  - model: endoreg_db.medication_indication
15
15
  fields:
16
16
  name: "te_prevention-after_knee-apixaban"
17
17
  events: ["knee_replacement"]
18
+ diseases: []
19
+ disease_classification_choices: []
18
20
  medication_schedules: [
19
- "apixaban-2.5mg-twice_daily_10d", # min 10d, max 14d
20
- ]
21
+ "apixaban-2.5mg-twice_daily_10d", # min 10d, max 14d
22
+ ]
21
23
  indication_type: "thromboembolism-prevention-after_knee_replacement"
22
- sources: [
23
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
24
- ]
24
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
25
25
 
26
26
  - model: endoreg_db.medication_indication
27
27
  fields:
28
28
  name: "te_prevention-non_valvular_af-apixaban"
29
+ events: []
29
30
  diseases: ["non_valvular_af"]
31
+ disease_classification_choices: []
30
32
  medication_schedules: [
31
- "apixaban-5mg-twice_daily", # no limit
32
- ]
33
+ "apixaban-5mg-twice_daily", # no limit
34
+ ]
33
35
  indication_type: "thromboembolism-prevention-non_valvular_af"
34
- sources: [
35
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
36
- ]
36
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
37
37
 
38
38
  # - model: endoreg_db.medication_indication
39
39
  # fields:
@@ -51,70 +51,65 @@
51
51
 
52
52
  # generally same as ckd4 above but technically different definition
53
53
  # Applies for example when risk factors (2 of three: age >= 80; KG <= 60 kg; Kreatinin >= 1.5 mg/dl)
54
- - model: endoreg_db.medication_indication
54
+ - model: endoreg_db.medication_indication
55
55
  fields:
56
56
  name: "te_prevention-non_valvular_af-apixaban-dr" #dr = dose reduction
57
+ events: []
57
58
  diseases: ["non_valvular_af"]
59
+ disease_classification_choices: []
58
60
  medication_schedules: [
59
- "apixaban-2.5mg-twice_daily", # no limit
60
- ]
61
+ "apixaban-2.5mg-twice_daily", # no limit
62
+ ]
61
63
  indication_type: "thromboembolism-prevention-non_valvular_af"
62
- sources: [
63
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
64
- ]
64
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
65
65
 
66
66
  - model: endoreg_db.medication_indication
67
67
  fields:
68
68
  name: "dvt_treatment-apixaban-3mo"
69
69
  events: ["deep_vein_thrombosis"]
70
+ diseases: []
71
+ disease_classification_choices: []
70
72
  medication_schedules: [
71
- "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
72
- "apixaban-5g-twice_daily_3mo", # no limit
73
- ]
73
+ "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
74
+ "apixaban-5g-twice_daily_3mo", # no limit
75
+ ]
74
76
  indication_type: "deep_vein_thrombosis-treatment"
75
- sources: [
76
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
77
- ]
77
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
78
78
 
79
79
  - model: endoreg_db.medication_indication
80
80
  fields:
81
81
  name: "pe_treatment-apixaban-3mo"
82
82
  events: ["pulmonary_embolism"]
83
+ diseases: []
84
+ disease_classification_choices: []
83
85
  medication_schedules: [
84
- "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
85
- "apixaban-5g-twice_daily_3mo", # no limit
86
- ]
86
+ "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
87
+ "apixaban-5g-twice_daily_3mo", # no limit
88
+ ]
87
89
  indication_type: "pulmonary_embolism-treatment"
88
- sources: [
89
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
90
- ]
90
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
91
91
 
92
92
  - model: endoreg_db.medication_indication
93
93
  fields:
94
94
  name: "pe_treatment-apixaban-6mo"
95
95
  events: ["pulmonary_embolism"]
96
+ diseases: []
97
+ disease_classification_choices: []
96
98
  medication_schedules: [
97
- "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
98
- "apixaban-5g-twice_daily_6mo", # no limit
99
- ]
99
+ "apixaban-5g-twice_daily_7d", # first 7d of treatment 10 mg twice daily
100
+ "apixaban-5g-twice_daily_6mo", # no limit
101
+ ]
100
102
  indication_type: "pulmonary_embolism-treatment"
101
- sources: [
102
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
103
- ]
103
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
104
104
 
105
105
  - model: endoreg_db.medication_indication
106
106
  fields:
107
107
  name: "te_prevention-recurrent-te-apixaban"
108
- events: [
109
- "recurrent_thrombembolism"
110
- ]
111
- medication_schedules: [
112
- "apixaban-2.5mg-twice_daily"
113
- ]
108
+ events: ["recurrent_thrombembolism"]
109
+ diseases: []
110
+ disease_classification_choices: []
111
+ medication_schedules: ["apixaban-2.5mg-twice_daily"]
114
112
  indication_type: "thrombembolism-prevention-recurrent_thrombembolism"
115
- sources: [
116
- "fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"
117
- ]
118
-
113
+ sources: ["fachinformation-apixaban-eliquis_2.5mg-bristol_meyer_squibbs"]
119
114
  # templates to create:
120
115
  # medication_schedules:
@@ -0,0 +1,51 @@
1
+ - model: endoreg_db.first_name
2
+ fields:
3
+ name: Alexander
4
+ - model: endoreg_db.first_name
5
+ fields:
6
+ name: Angelika
7
+ - model: endoreg_db.first_name
8
+ fields:
9
+ name: Anja
10
+ - model: endoreg_db.first_name
11
+ fields:
12
+ name: Doro
13
+ - model: endoreg_db.first_name
14
+ fields:
15
+ name: Dorothea
16
+ - model: endoreg_db.first_name
17
+ fields:
18
+ name: Florian
19
+ - model: endoreg_db.first_name
20
+ fields:
21
+ name: Hans
22
+ - model: endoreg_db.first_name
23
+ fields:
24
+ name: Kathrin
25
+ - model: endoreg_db.first_name
26
+ fields:
27
+ name: Laura
28
+ - model: endoreg_db.first_name
29
+ fields:
30
+ name: Linhel
31
+ - model: endoreg_db.first_name
32
+ fields:
33
+ name: Mandy
34
+ - model: endoreg_db.first_name
35
+ fields:
36
+ name: Markus
37
+ - model: endoreg_db.first_name
38
+ fields:
39
+ name: Philip
40
+ - model: endoreg_db.first_name
41
+ fields:
42
+ name: Rainer
43
+ - model: endoreg_db.first_name
44
+ fields:
45
+ name: Sven
46
+ - model: endoreg_db.first_name
47
+ fields:
48
+ name: Tanja
49
+ - model: endoreg_db.first_name
50
+ fields:
51
+ name: Theodor
@@ -0,0 +1,51 @@
1
+ - model: endoreg_db.last_name
2
+ fields:
3
+ name: Brand
4
+ - model: endoreg_db.last_name
5
+ fields:
6
+ name: Dela Cruz
7
+ - model: endoreg_db.last_name
8
+ fields:
9
+ name: Hann
10
+ - model: endoreg_db.last_name
11
+ fields:
12
+ name: Henniger
13
+ - model: endoreg_db.last_name
14
+ fields:
15
+ name: Hose
16
+ - model: endoreg_db.last_name
17
+ fields:
18
+ name: Hossner
19
+ - model: endoreg_db.last_name
20
+ fields:
21
+ name: Kozielski
22
+ - model: endoreg_db.last_name
23
+ fields:
24
+ name: Kudlich
25
+ - model: endoreg_db.last_name
26
+ fields:
27
+ name: Lux
28
+ - model: endoreg_db.last_name
29
+ fields:
30
+ name: Meining
31
+ - model: endoreg_db.last_name
32
+ fields:
33
+ name: Purrer
34
+ - model: endoreg_db.last_name
35
+ fields:
36
+ name: Reiter
37
+ - model: endoreg_db.last_name
38
+ fields:
39
+ name: Retzbach
40
+ - model: endoreg_db.last_name
41
+ fields:
42
+ name: Sodmann
43
+ - model: endoreg_db.last_name
44
+ fields:
45
+ name: Weich
46
+ - model: endoreg_db.last_name
47
+ fields:
48
+ name: Wiese
49
+ - model: endoreg_db.last_name
50
+ fields:
51
+ name: Wiesemann
@@ -22,6 +22,36 @@
22
22
  device_type: "agl-server"
23
23
  ip: "172.16.255.4"
24
24
 
25
+ - model: endoreg_db.network_device
26
+ fields:
27
+ name: "agl-gpu-client-01"
28
+ device_type: "agl-server"
29
+ ip: "172.16.255.141"
30
+
31
+ - model: endoreg_db.network_device
32
+ fields:
33
+ name: "agl-gpu-client-02"
34
+ device_type: "agl-server"
35
+ ip: "172.16.255.142"
36
+
37
+ - model: endoreg_db.network_device
38
+ fields:
39
+ name: "agl-gpu-client-03"
40
+ device_type: "agl-server"
41
+ ip: "172.16.255.143"
42
+
43
+ - model: endoreg_db.network_device
44
+ fields:
45
+ name: "agl-gpu-client-04"
46
+ device_type: "agl-server"
47
+ ip: "172.16.255.144"
48
+
49
+ - model: endoreg_db.network_device
50
+ fields:
51
+ name: "agl-gpu-client-05"
52
+ device_type: "agl-server"
53
+ ip: "172.16.255.145"
54
+
25
55
  - model: endoreg_db.network_device
26
56
  fields:
27
57
  name: "agl-gpu-client-dev"
@@ -0,0 +1,29 @@
1
+ - model: endoreg_db.organ
2
+ fields:
3
+ name: "colon"
4
+ name_de: "Kolon"
5
+ name_en: "Colon"
6
+
7
+ - model: endoreg_db.organ
8
+ fields:
9
+ name: "rectum"
10
+ name_de: "Rektum"
11
+ name_en: "Rectum"
12
+
13
+ - model: endoreg_db.organ
14
+ fields:
15
+ name: "anal_canal"
16
+ name_de: "Analkanal"
17
+ name_en: "Anal Canal"
18
+
19
+ - model: endoreg_db.organ
20
+ fields:
21
+ name: "ileum"
22
+ name_de: "Ileum"
23
+ name_en: "Ileum"
24
+
25
+ - model: endoreg_db.organ
26
+ fields:
27
+ name: "small_bowel"
28
+ name_de: "Dünndarm"
29
+ name_en: "Small Bowel"
@@ -6,8 +6,9 @@
6
6
  endoscope_info_line: "ukw-examination-generic-endoscope-info-line"
7
7
  examiner_info_line: "ukw-examination-generic-examiner-info-line"
8
8
  cut_off_above_lines: [
9
+ "ukw-examination-generic-anamnese-info-line",
9
10
  "ukw-examination-generic-endoscope-info-line",
10
- "ukw-examination-generic-examiner-info-line"
11
+ "ukw-examination-generic-examiner-info-line",
11
12
  ]
12
13
  cut_off_below_lines: [
13
14
  "ukw-examination-generic-cut-off-below-line-01"
@@ -24,3 +24,7 @@
24
24
  name: "ukw-examination-generic-cut-off-below-line-01"
25
25
  value: "________________"
26
26
 
27
+ - model: endoreg_db.report_reader_flag
28
+ fields:
29
+ name: "ukw-examination-generic-anamnese-info-line"
30
+ value: "Anamnese: "
@@ -1,3 +1,5 @@
1
1
  from .unit import Unit
2
2
  from .settings import ActiveModelForm
3
- from .questionnaires import *
3
+ from .questionnaires import *
4
+ from .patient_form import PatientForm
5
+
@@ -0,0 +1,11 @@
1
+ from django import forms
2
+ from endoreg_db.models.examination.examination import Examination
3
+
4
+ class ExaminationForm(forms.ModelForm):
5
+ class Meta:
6
+ model = Examination
7
+ fields = '__all__'
8
+ widgets = {
9
+ 'date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
10
+ 'time': forms.TimeInput(attrs={'type': 'time', 'class': 'form-control'}),
11
+ }
@@ -0,0 +1,19 @@
1
+ from django import forms
2
+ from endoreg_db.models import (
3
+ Patient, PatientExamination, Finding,
4
+ FindingLocationClassification, FindingMorphologyClassification,
5
+ FindingIntervention, PatientFindingIntervention
6
+ )
7
+
8
+ class PatientFindingInterventionForm(forms.ModelForm):
9
+ patient = forms.ModelChoiceField(queryset=Patient.objects.all(), required=True)
10
+ examination = forms.ModelChoiceField(queryset=PatientExamination.objects.none(), required=True)
11
+ finding = forms.ModelChoiceField(queryset=Finding.objects.none(), required=True)
12
+ location = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
13
+ location_choice = forms.ModelChoiceField(queryset=FindingLocationClassification.objects.none(), required=True)
14
+ morphology = forms.ModelChoiceField(queryset=FindingMorphologyClassification.objects.none(), required=True)
15
+ interventions = forms.ModelMultipleChoiceField(queryset=FindingIntervention.objects.none(), widget=forms.CheckboxSelectMultiple, required=True)
16
+
17
+ class Meta:
18
+ model = PatientFindingIntervention
19
+ fields = ["patient", "examination", "finding", "location", "location_choice", "morphology", "interventions"]
@@ -0,0 +1,26 @@
1
+ from django import forms
2
+ from django.forms import ModelForm, Select
3
+ from endoreg_db.models.persons.patient.patient import Patient
4
+ from django import forms
5
+ from django.forms import ModelForm, Select
6
+ from endoreg_db.models.persons.patient.patient import Patient
7
+ from endoreg_db.models.persons.gender import Gender
8
+ from endoreg_db.models.center import Center
9
+ class PatientForm(ModelForm):
10
+ gender = forms.ModelChoiceField(
11
+ queryset=Gender.objects.all(),
12
+ empty_label="Select Gender",
13
+ widget=Select(attrs={'class': 'form-control'})
14
+ )
15
+ center = forms.ModelChoiceField(
16
+ queryset=Center.objects.all(),
17
+ empty_label="Select Center",
18
+ widget=Select(attrs={'class': 'form-control'})
19
+ )
20
+
21
+ class Meta:
22
+ model = Patient
23
+ fields = '__all__'
24
+ widgets = {
25
+ 'dob': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
26
+ }
File without changes
@@ -1,45 +1,79 @@
1
1
  from django.conf import settings
2
2
  import os
3
3
  from django.core.management.base import BaseCommand
4
- from ...models import ModelType
4
+ from ...models import (
5
+ ModelMeta,
6
+ ModelType,
7
+ LabelSet,
8
+ VideoSegmentationLabel,
9
+ VideoSegmentationLabelSet,
10
+ AiModel,
11
+ )
5
12
  from ...utils import load_model_data_from_yaml
6
- from ...data import MODEL_TYPE_DATA_DIR
13
+ from ...data import (
14
+ MODEL_TYPE_DATA_DIR,
15
+ VIDEO_SEGMENTATION_LABEL_DATA_DIR,
16
+ VIDEO_SEGMENTATION_LABELSET_DATA_DIR,
17
+ AI_MODEL_DATA_DIR,
18
+ AI_MODEL_META_DATA_DIR,
19
+ )
7
20
 
8
- SOURCE_DIR = MODEL_TYPE_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
9
21
 
10
- MODEL_0 = ModelType
11
-
12
- IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
13
- MODEL_0.__name__,
22
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
23
+ ModelType.__name__,
24
+ # ModelMeta.__name__,
25
+ VideoSegmentationLabel.__name__,
26
+ VideoSegmentationLabelSet.__name__,
27
+ AiModel.__name__,
14
28
  ]
15
29
 
16
30
  IMPORT_METADATA = {
17
- MODEL_0.__name__: {
18
- "dir": SOURCE_DIR, # e.g. "interventions"
19
- "model": MODEL_0, # e.g. Intervention
20
- "foreign_keys": [], # e.g. ["intervention_types"]
21
- "foreign_key_models": [] # e.g. [InterventionType]
22
- }
31
+ ModelType.__name__: {
32
+ "dir": MODEL_TYPE_DATA_DIR, # e.g. "intervention_types"
33
+ "model": ModelType, # e.g. InterventionType
34
+ "foreign_keys": [], # e.g. ["interventions"]
35
+ "foreign_key_models": [], # e.g. [Intervention]
36
+ },
37
+ # ModelMeta.__name__: {
38
+ # "dir": AI_MODEL_META_DATA_DIR, # e.g. "intervention_types"
39
+ # "model": ModelMeta, # e.g. InterventionType
40
+ # "foreign_keys": ["labelset", "type"], # e.g. ["interventions"]
41
+ # "foreign_key_models": [LabelSet, ModelType], # e.g. [Intervention]
42
+ # },
43
+ VideoSegmentationLabel.__name__: {
44
+ "dir": VIDEO_SEGMENTATION_LABEL_DATA_DIR, # e.g. "interventions"
45
+ "model": VideoSegmentationLabel, # e.g. Intervention
46
+ "foreign_keys": [], # e.g. ["intervention_types"]
47
+ "foreign_key_models": [], # e.g. [InterventionType]
48
+ },
49
+ VideoSegmentationLabelSet.__name__: {
50
+ "dir": VIDEO_SEGMENTATION_LABELSET_DATA_DIR, # e.g. "interventions"
51
+ "model": VideoSegmentationLabelSet, # e.g. Intervention
52
+ "foreign_keys": ["labels"], # e.g. ["intervention_types"]
53
+ "foreign_key_models": [VideoSegmentationLabel], # e.g. [Intervention]
54
+ },
55
+ AiModel.__name__: {
56
+ "dir": AI_MODEL_DATA_DIR, # e.g. "intervention_types"
57
+ "model": AiModel, # e.g. InterventionType
58
+ "foreign_keys": ["video_segmentation_labelset"], # e.g. ["interventions"]
59
+ "foreign_key_models": [VideoSegmentationLabelSet], # e.g. [Intervention]
60
+ },
23
61
  }
24
62
 
63
+
25
64
  class Command(BaseCommand):
26
65
  help = """Load all .yaml files in the data/intervention directory
27
66
  into the Intervention and InterventionType model"""
28
67
 
29
68
  def add_arguments(self, parser):
30
69
  parser.add_argument(
31
- '--verbose',
32
- action='store_true',
33
- help='Display verbose output',
70
+ "--verbose",
71
+ action="store_true",
72
+ help="Display verbose output",
34
73
  )
35
74
 
36
75
  def handle(self, *args, **options):
37
- verbose = options['verbose']
76
+ verbose = options["verbose"]
38
77
  for model_name in IMPORT_MODELS:
39
78
  _metadata = IMPORT_METADATA[model_name]
40
- load_model_data_from_yaml(
41
- self,
42
- model_name,
43
- _metadata,
44
- verbose
45
- )
79
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)
@@ -0,0 +1,59 @@
1
+ from django.conf import settings
2
+ from django.core.management.base import BaseCommand
3
+ from ...models import Label, LabelType, LabelSet
4
+ import os
5
+ from ...utils import load_model_data_from_yaml
6
+ from ...data import LABEL_DATA_DIR
7
+
8
+ SOURCE_DIR = LABEL_DATA_DIR
9
+
10
+ IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
11
+ "LabelType",
12
+ "Label",
13
+ "LabelSet",
14
+ ]
15
+
16
+ IMPORT_METADATA = {
17
+ # "": { # same as model name in "import models", e.g. "Intervention"
18
+ # "subdir": os.path.join(SOURCE_DIR,""), # e.g. "interventions"
19
+ # "model": None, # e.g. Intervention
20
+ # "foreign_keys": [], # e.g. ["intervention_types"]
21
+ # "foreign_key_models": [] # e.g. [InterventionType]
22
+ # },
23
+ "LabelType": {
24
+ "dir": os.path.join(SOURCE_DIR, "label-type"), # e.g. "interventions"
25
+ "model": LabelType, # e.g. Intervention
26
+ "foreign_keys": [], # e.g. ["intervention_types"]
27
+ "foreign_key_models": [], # e.g. [InterventionType]
28
+ },
29
+ "Label": {
30
+ "dir": os.path.join(SOURCE_DIR, "label"), # e.g. "interventions"
31
+ "model": Label, # e.g. Intervention
32
+ "foreign_keys": ["label_type"], # e.g. ["intervention_types"]
33
+ "foreign_key_models": [LabelType], # e.g. [InterventionType]
34
+ },
35
+ "LabelSet": {
36
+ "dir": os.path.join(SOURCE_DIR, "label-set"), # e.g. "interventions"
37
+ "model": LabelSet, # e.g. Intervention
38
+ "foreign_keys": ["labels"], # e.g. ["intervention_types"]
39
+ "foreign_key_models": [Label], # e.g. [InterventionType]
40
+ },
41
+ }
42
+
43
+
44
+ class Command(BaseCommand):
45
+ help = """Load all .yaml files in the data/intervention directory
46
+ into the Intervention and InterventionType model"""
47
+
48
+ def add_arguments(self, parser):
49
+ parser.add_argument(
50
+ "--verbose",
51
+ action="store_true",
52
+ help="Display verbose output",
53
+ )
54
+
55
+ def handle(self, *args, **options):
56
+ verbose = options["verbose"]
57
+ for model_name in IMPORT_MODELS:
58
+ _metadata = IMPORT_METADATA[model_name]
59
+ load_model_data_from_yaml(self, model_name, _metadata, verbose)